Правила, сервера, PM2, проекты → см.
/home/app/CLAUDE.mdАктивность по дням → см.activity/2026-03.md,2026-04.md,2026-05.md,2026-06.mdPolymarket copy-trading (полная сага) → см.polymarket-copytrading.mdДетали проектов → см.CLAUDE.mdв каждом проекте
▶️ СТАРТ НОВОЙ СЕССИИ [16 Jun]: Rick сбросил сессию, продолжаем с PolyCopy Фаза D — гейт китов по recency/consistency → потом Флаги ⭐ → F (TG-бот, ОТДЕЛЬНЫЙ токен, не Бендера). План:
polymarket-screener/docs/WHALE_DISCOVERY_PLAN.md. Фазы B+E уже ✅ (16 Junниже). Полные verbose-записи 10–13 Jun (PolyCopy/Screener) →polymarket-copytrading.mdсекция «Архив индекса MEMORY».
redesign-nav, push до 8cd26eb): (1) Ребренд Поликопи→Coattail (2a54e57): wordmark TopBar, index.html title/og/twitter, manifest.webmanifest name/short/desc, theme #0a1420. (2) Адаптив карточки лидера (2a54e57): имя налезало на win-rate — root-cause text-overflow:ellipsis на inline <span> (не работает); фикс = обернул в .pk-cname-txt, .pk-cname→flex+min-width:0. (3) Логотип-мишень (8cd26eb, prev C+волна 623da9b заменён): выбрали target («попадание в исход» prediction) после ~9 Grok-батчей; собрал ЗАНОВО в коде (PIL supersample, teal→green #2dd4bf→#34d399, 2 кольца+точка) — не вырезал из мелкого тайла. Ассеты client/public/: coattail-mark.png(шапка)+icon-192/512+apple-touch-icon(180)+favicon-16/32. (4) Инструкция тестерам готова (полная+короткая, coattail.app). 🪤 бот-харнесс блокирует .jpg-документы (слать фото/renamed .png); image-gen не умеет прозрачность (нарезаю сам); PWA SW+favicon кэш → хард-рефреш. NEXT: SVG-мишень по запросу. Детали→brain 2026-07-03 (ч.2).redesign-nav, push до c6983b3): По конкурент-ресёрчу (doc COMPETITOR_ANALYSIS.md разд.5; 14/20 топ-кошельков=боты) → план docs/WHALE_ANALYTICS_PLAN.md (11 чанков P0-P2). Сделано: Ч1 🤖 bot/copyability (145f2ab; profile+copyability{hard,tradesPerDay,reasons}; hard если tradesPerDay>200 ИЛИ avgHoldDays<0.5; чип в хедере) · Ч2 📊 калибровка (0aba186; price-buckets+avgPrice, колонка «vs рынок»=WR−цена) · Ч3 🏷️ категории (f4271f6; новый /categories, хук useWhaleCategories) · Ч5 📈 стабильность (b9d40d1; PF+%прибыльных+maxDD из equity) · Ч6 🔥 форма/стрик (08ece77; чип ⚡/❄️ + «Форма(10)») · Ч7 ⏱️ распределение холда (2b6fbd0; новый /hold-buckets <1д/1-3д/3-7д/>7д) · Ч8 ⏳ трек-рекорд (c6983b3; чип «короткая история»<45д из equity[0].t). Отложено: Ч4 соц-пруф (когда наберём юзеров), Ч9 AI-сводка (доп. обсудить). Все frontend-метрики из уже загружаемого equity; новые эндпоинты /price-buckets(+avgPrice)//categories//hold-buckets. ⚠️ first_seen=артефакт индексатора (не возраст кошелька) → «новый=инсайдер» НЕ делаем. Также фикс ff3e094: копи-сейв вёл на мёртвый роут /copy→чёрный экран, исправлено на /portfolio. Детали→brain 2026-07-03.redesign-nav, push origin до b243cf0): Решение: карточка WhaleProfile.tsx = СТАТА САМОГО КИТА (реализованные ROI/WR/PnL по резолвнутым), НЕ «бэктест под наш конфиг» (устаревший глобал-дефолт $2/5-95¢, у юзеров свои настройки — бэктест остаётся ТОЛЬКО на LeadersPage). Данные: Polymarket Data API+CLOB+Gamma (индекс ончейн-филлов), не прямой чейн. Мокап mockups/whale-card-mockup-v3.html (kb.szhub.space/whale-card-v3.html). Backend (swap-commit, чтобы не влить чужой phantom_loss WIP): 49ba9bd /api/signals/whale/{addr}/price-buckets (4 бэнда ≤0.40/0.40-0.60/0.60-0.80/≥0.80 → trades/WR/ROI/PnL/invested; кросс-чек Σpnl=/equity=totalPnl); 2245e5e profile +activeDays/tradesPerEvent/avgHoldDays. Frontend: 638b64e каркас+B(ROI=Σpnl÷Σinvested, хук useWhalePriceBuckets)/C; 0acd91a D-таблица(data-driven чип «эдж»)+E; d36f577 порядок F/G/H+trust в футер; 2ca5cdb тумблер графика 7д/30д/90д/Всё (дефолт Всё, клиент-фильтр equity+пересчёт cum); 7b66579 I(настройки из useCopySubscriptions.get, только подписан)+J(buildRec авто-рек); 4db9343 полировка. + весь висевший WIP закоммичен (Rick: «всё делаю я, не в контексте»): b243cf0 backtest 30d→90d default; 4d4beae phantom_loss reclassify. i18n: инлайн-лейблы уже трилингвальны, перенос в translations.ts отложен. deep-link НЕ добавлял (адрес кита намеренно не в URL). 🪤 живой Rust=Malaysia server-rust (не локальный _impl/); routes.rs-коммиты через git-swap. Детали→brain 2026-07-02 ч.2.0296ff0/7f2bd81, live): server.js — поле title→имя-слаг+# heading, /notes/edit правит в тот же файл, safeNoteFile() от traversal. 🚨 Побочно: в git-remote KB был вшит МЁРТВЫЙ GitHub PAT → вычистил; правило: токен НЕ в remote-URL. Детали→brain ч.9.serg5585@gmail.com (=cmq45iuz, dw 0x50a8061e, exec ok, budget $38); стоят 2 др. аккаунта — sergiizapolskyi@gmail.com (=cmqel7uq, dw 0x8b95fb94 = «cmqe», executor policy-DISABLED by design=withdraw-vector, off) и borodichs111@gmail.com (GE, exec ok но мало средств). 🗺️ Карта юзеров по email → users-таблица screener.db (address,email,country) + user_wallets(deposit_wallet). Rick НЕ читает did:privy — всегда давать по email. (2) Копии тормозил кап «max 8 open» = формула min(maxExposure$40/maxPerTrade$5, MAX_OPEN=20)=8 — резал конфиг подписки, НЕ глобал (Rick был прав что 20 стоит). ФИКС (8d455cc): убрал общий total-open кап совсем; единственный счётчик = maxOpenPerLeader (per-whale, из UI, editable), потолок снят; реальная защита = баланс депозита. deriveCfg: убрал maxOpen; per-leader Math.max(1, Number(c.maxOpenPerLeader)||2) (без clamp env). UI: убрал поле «Max exposure $40», добавил «Позиций на кита». (3) Второй искусственный кап MAX_PER_EVENT=1 (ставили т.к. 1 кит брал по 10 на событие). ФИКС (005df49): per-whale maxPerEvent дефолт 3 editable (жадному киту ставить 1 в его модалке). deriveCfg: Math.max(1, Number(c.maxPerEvent)||3). UI: поле «Позиций на событие». Оба: pm2 restart copy-trader-mu PLAIN (без --update-env=сохраняет SERVICE_TOKEN/env; env НЕ менял → код перечитан). Остаточные тормоза копий = НЕ капы: priceMax-банд 0.60 режет дорогих фаворитов (by design эдж) + тонкие филлы лайв-рынков (лимит-ордер по цене лидера не успевает, цена уехала→висит→reconcile отменяет). 🪤 ошибка reading 'price' = SDK на неликвидных микро-рынках (была ДО рестарта, buy-путь не трогал). Push redesign-nav. Детали→brain 2026-07-02 ч.2.es в client/src/i18n/translations.ts — 382 ключа, паритет en=ru=es, +селектор «Español» в Settings (LANGUAGES), +автоопределение по браузеру (LanguageContext.detectLang). Фикс типов: whaleCodename/whaleCodenamesUnique (utils/whales.ts) приняли es→фолбэк на en (клички китов только ru/en). Затем де-хардкод: 13 JSX-тернарников lang==='ru'?…:… (в 6 файлах: TradePage, CopyTradingPage, LeadersPage, TradeHistory, CopyConfigModal, WhaleProfile) → вынесены в словарь как +15 ключей×3 языка (LeadersPage бэктест-тултип — через t('leaders.btTip',{pf,copies,win,pnl,roi,low})). Итог 397 ключей/язык, 0 англ-протечек. Коммиты (redesign-nav, GitHub Zserg5585/polymarket-screener): 280e63e(es-локаль)→a4ae8e5(+15 ключей)→18f16fc(де-хардкод). Сборка node20 nvm npm run build→✓ built, pm2 restart polymarket-screener, HTTP 200. 🪤 client/dist в .gitignore — коммитить только client/src. Осталось из плана: TG-алерты (отд. токен), мониторинг эффекта чистки китов. Детали→brain 2026-07-02.2026-07-01 ч.1–8). 🎯 ГОТОВНОСТЬ К ТЕСТЕРАМ: Этапы 0/1/2 ✅ — можно звать пару друзей. Сессионные коммиты (redesign-nav, push с Malaysia): 063bca7(ч.1 redeem $18)→b9c19bf(ч.2)→74cae0a/28f0d31(ч.5-6)→3daf41f(ч.7 redeem)→3fb4e63(ч.7 спам)→1e94600(ч.8 воронка)→c23de29(ч.8 стабильность)→6f9af63(ч.8 чистка).
• ч.8 ЭТАП2 онбординг (фронт-only): #1 ВОРОНКА 1e94600 — новый OnboardingChecklist.tsx в PrivyAccount при walletReady: 3 шага ✅активирован→⬜пополни$20+→⬜выбери китов[navigate('/')]→«всё готово» (гэп был=тупик после активации; подписка на LeadersPage /, /whales выпилен, хук useCopySubscriptions). #2 СТАБИЛЬНОСТЬ c23de29 — registerWallet теперь res.ok+ретрай3×+варнинг acct.regWarn (был fire-and-forget→демон не знал DW→копий нет); cooldown 25с после ошибки активации + acct.errRateLimit (защита от Privy rate-limit/потери делегата при повторном addSigners). #3 6f9af63 удалён мёртвый portfolio/CustodyCard.tsx (0 импортов, tree-shaken).
• ч.7 money-грабли: 3daf41f redeem neg-risk — amounts[] длину строить по on-chain getOutcomeSlotCount(cid) (не maxIdx+1), иначе NegRiskAdapter batch would revert когда выигрышный исход=index0 → выигрыши не выводились ($4 Mexico забран, глобально по всем DW). 3fb4e63 exec-спам — флаг u.execDisabled на policy-violation, лог [exec] DISABLED 1 раз (cmqe без политики заливал лог каждый трейд).
• ч.4-6 ключевое (операционка → см. также skill callout'ы): 🪤 симлинк node-executor/.env.privy → poly-exec/.env.privy держать живым (пропал=ENOENT=торговля встаёт); закрытие штатное через LEADER-EXIT (не worthless-aged); «висящие $0» = on-chain пыль (не леджер), фикс UI-фильтр 74cae0a (currentValue>=0.01); 757701a был ОТКАЧЕН (мисдиагноз). cmqe (0x8b95fb94) держать ВЫКЛ (включение=re-open withdraw vector), только по команде «включай cmqe».
• Остаётся до широкого запуска: TG-алерты здоровья (health */15 console-only) — ждут ОТДЕЛЬНЫЙ токен от Rick (НЕ Бендера).fe771ed): «Сигналы»→«Поток», саб-табы Консенсус/Инсайдер/Жар. Ручные = тот же DW/pUSD (EnterTradeModal→money.manual_orders→демон executeManualOrders→copy_positions direction='manual'). 🪤 клиент билдить node20 nvm (node18=money-демон); neg-risk settle через 0xe2222/0xd91E/0xC5d5 (approve всем). Детали→brain/skill 2026-06-30.a0fd248): Жар=<EdgeScanner/>; Инсайдер=/api/signals/whales/insider (качеств. киты, свежие BUY, useWhaleInsider). ALL_SPENDERS=4 в онбординге. Миноры B1/B2/B3 (баланс-пречек, posted, discard). Детали→brain 2026-06-30.deposit-watch=pm2 id47 Malaysia, cron_restart */10, между прогонами stopped=НОРМА. Цепочка native USDC→USDC.e(Uniswap)→pUSD(Onramp) gasless. 🪤 не паниковать глядя на главный сервер — convert+redeem всё на Malaysia. Детали→brain 2026-06-29.data/money.db через ATTACH (2d58e28): positions_upsert: database is locked закрыт. ATTACH money.db (cross-DB JOIN живёт, лок изолирован по файлам), атомарный cutover seed main→money. NEXT: DROP main.copy_positions позже. Детали→brain 2026-06-29.docs/MIGRATION_TO_MALAYSIA_PLAN.md).
• [19 Jun] РЕАЛЬНЫЕ builder-фи/юзер из CLOB /builder/trades по maker=DW + Today-виджет (ba91bde). 🎫 Кап 100 tx/день = РЕАЛЬНЫЙ (Relayer gasless, тир Unverified). Verified=10к/день (письмо builder@polymarket.com, порогов нет). Заявку пока НЕ шлём.
• [18-19 Jun] MANUAL CLOSE готова (intent-flag 'closing', демон исполняет SELL, ~2мин латентность). Слот-диагноз: воронка входа by design, рычаг MAX_OPEN_PER_LEADER.
• [17 Jun] КЛЮЧ — эдж в ДЕШЁВЫХ входах: <0.60 ROI +9.5%/wr46%; ≥0.60 ROI −2.4%/wr75%; 0.9+ −13% (favorite-longshot). Дефолт priceMax→0.60 (fbe9a5f). Отбор китов: per-whale ROI на ≤0.6 входах, WR≥50%/≥40сд/активен.
• [17 Jun] LeadersPage 8 фильтров качества (bdeb778) + User Analytics колонка «Фи» + equity-график кита + PF-гейт MIN_GREEN_COPIES=20.
• [16 Jun] User Analytics FIX (поля из он-чейн+полного SQL, не снапшота) + i18n + колонки депозит/позиции; MIRROR-EXIT ON (MIRROR_EXIT_LIVE=1); leader-holdings роут; auto-redeem на ВСЕХ юзеров; resolve-крон backoff (014a9cb); атрибуция кита-входа; дедуп кличек китов (whaleCodenamesUnique).copy-trader-mu — ЕДИНСТВЕННЫЙ демон (старый copy-loop.mjs/copy-trader НЕ используется). Запуск ТОЛЬКО direct pm2 start copy-loop-mu.mjs --name copy-trader-mu + ПОЛНЫЙ инлайн-env + pm2 save (не .cjs ecosystem — запустится как скрипт; --update-env теряет SERVICE_TOKEN). FOLLOWER пустой=ALL → юзер self-serve (активация→депозит→подписка→резолв все авто). Делегат-без-политики ставить 1 раз при активации (auto-detach каждую загрузку = Privy rate-limit + потеря делегата). Креды кэш ДО политики (иначе ClobAuth DENY). Деплой клиент+Rust ВМЕСТЕ (cargo+npm+pm2 restart polymarket-screener). БД=data/screener.db. sqlite3 CLI нет→python3.money.db copy_positions.realized_pnl) дала иную картину, чем 17 Jun — старые цели 0xcf6c54/0x492442 УЖЕ archived. Запаузил 10 → по решению Rick вернул 5 в active, на паузе остались 5: 0x2c3350(−$16.95/−5%),0x29b52d(−$6.23),0x4f1af0(−3.1%),0x6db568(−3.6%),0x8c77f0(−50%/2сд). Вернул в active (околонулевой ROI/WR): 0x84cfff,0xdbdd45,0xf28e42,0xbe7ef1,0x38181f. Итог: active 52→47, paused 15→20. Держим эдж: 0x0346af+$33.77, 0x9b4914+$13.79(16/3), 0xf68a28+$4.02, 0x224a89+$3.85. Механизм: UPDATE copy_subscriptions SET status='paused' в screener.db (python3 timeout=30, БД занята Rust); демон читает поллингом live → без рестарта. Откат: /tmp/whale_cleanup_backup.json на Malaysia (вернуть status='active').2026-06-17.eth_sendTransaction to=CTF (газ на DW), Privy-политика разрешит через ethereum_transaction.to (этот field_source РАБОТАЕТ, в отличие от Batch-calls[]), вывод (transfer на token) → DENY.v4-pro; Reddit JSON 403→RSS /.rss; 9 источников; +3 формата. Грабля 409 после restart→stop(0 bot.py)→start. Git→github.com/Zserg5585/alphapulsexp. Детали→skill+brain.channel.type, источники из БД getApprovedSources. TODO PINUP_LINK пуст. Детали→skill+brain.polymarket-copytrading.md / activity/2026-06.md.polymarket-screener/.env.privy (gitignored, chmod600): PRIVY_APP_SECRET, POLYMARKET_BUILDER_{API_KEY,SECRET,PASSPHRASE}, PRIVY_AUTHORIZATION_KEY (wallet-auth P-256, для server-auth подписи). Публичные: Privy App ID cmq444h0i00580cih1ur8q1pr, Signer ID kc34moyfw73mo5whwfjqpewy (в client/.env.production как VITE_PRIVY_*). ⚠️ всё пришло через TG-чат → ротировать перед продом./api/analytics/*, htpasswd /etc/nginx/.htpasswd-poly): логин szhub_adm / пароль RPbGe0REeeVFcALt. URL: https://poly-dev.szhub.space/analytics/szhub2026 (создан 30 May)Coattail (копи-трейдинг Polymarket). Пробит: чист в крипто/prediction-нише (нет токена/биржи/копи-аппа); вне ниши есть мелкие тёзки в недвижимости/медиа (др. ТМ-класс). Домен-план: coattail.trade (фаворит) / getcoattail.com. Смысл = «coattail investing» = копирование успешных. NEXT: зарегать домен → Cloudflare-прокси (вариант 2) на малайзийский сервер 72.62.247.119 → обход укр-блока (укр-провайдер режет прямой IP/домен, наш сервер чист — ufw off, без geo-nginx). Формальный USPTO-TM-поиск при регистрации бренда. .com голый вероятно занят. ✅ [3 Jul] ДОМЕН ПОДНЯТ: зареган coattail.app (Hostinger), заведён за Cloudflare (zone id 81072d047ec3fbea7edb372cfc9042c9, NS aryanna+sullivan). API-токен CF на малайзийском сервере /root/.cf_token (chmod600, scoped на зону; Rick может отозвать). DNS: A @+CNAME www→72.62.247.119 proxied(оранж), SSL Full-strict, Always-HTTPS. Origin nginx sites-available/coattail.app→порт3240 + Let's Encrypt (certbot). https://coattail.app = 200, резолвится на CF-edge (малайз. IP скрыт) → обход укр-IP-блока. NEXT: укр-тестер проверяет БЕЗ VPN. Cert-renewal за CF проверить ~60д. ✅ УКР-ТЕСТЕР ЗАШЁЛ БЕЗ VPN — Cloudflare сработал (блок обойдён).docs/WHALE_ANALYTICS_PLAN.md. Карточка кита уже с 7 фичами (чанки 1-8 LIVE).screen.clkway.online + dev как git-ветка (каталог /home/app/futures-screener НЕ удалять — deploy-источник). (2) Order-Flow порог эмита 0.60→0.80 (0081c0b), БД очищена; оценить частоту/эдж при случае. Детали → brain/activity June.docs/REDESIGN_PLAN.md (24f94e3). Главный экран = карточная лента 🔥 Сигналы, отдельная вкладка 🐋 Киты, скринер-таблица третьим планом, навигация 5 вкладок. Deps #1 (edge.rs) и #3 (CLOB V2 trade) уже готовы. Делаем по 1 микрошагу, коммит после каждого, спрашивать дальше. Старт = Фаза 1 (каркас навигации)Read перед Edit, либо не смешивать инструменты на одном файле. NB: -> в контенте — НЕ причина (ложный вывод 30 May, опровергнут тестом).dotenv.config({ override: true })--update-env обязателен при изменении ecosystem.config.js env varspm2 start ecosystemfetch(url, { cache: 'no-store' })ALTER TABLE RENAME propagates FK → crash. Fix: PRAGMA foreign_keys=OFF"\n" is truthy. Fix: .trim() check{ timezone: 'Asia/Almaty' }isMetaRefusal() + "Предпочитай" вместо "Фокус"pm2 install pm2-logrotate (50MB max, 3 retain, compress)sudo rm -rf ~/backup_molt/polymarket-copytrading.md секция «Грабли Polymarket / Weather Bot».