Перенесено из MEMORY.md 8 Jun. Хронология проектов (вкл. поздние майские записи с прошлого индекса).
polymarket-copytrading.md, хронология→этот файл). Детали→brain/log.md.english-practice./home/app/of-trader (pm2 stop). Детали→skills/of-trader/SKILL.md + brain/log.md.grid-v3-archive), на VPS скринера, читает signal_log локально, PM2 of-trader, venv. Реюз TG-бота grid-bot (токен 8716285891, chat 191142060). 6 багов на live (2d5387f): async-блок→to_thread, TP/SL от филла, daily reset, realized-pnl фильтр, naked-guard, tick get_pos 1×. 🔴 Binance TP/SL=algo (algoId не orderId, не видны в open_orders, но защищают)→closePosition. ⚠️ mainnet-ключи в трейсбэке→ротировать. Детали→skills/of-trader/SKILL.md + brain/log.md.b37f83f,024d09d,72fcec5). #1 gap-детект был по spot-правилу U>last+1 на FUTURES-стриме (fstream @depth, updateId не подряд)→ложный gap на каждой дельте→99.7% логов resync (pu==prev.u + флаг state.synced. #2 троттл gap-лога 1/10с/символ (state._lastGapLog). #3 getImbalance отдавал 100% при пустой стороне книги (askVol:0, артефакт несинхр/замороженной книги)→флуд conf-95% мусора; фикс=требовать ликвидность с ОБЕИХ сторон. Проверено: gap-лог 2900→0/мин, новые сигналы двусторонние 0.80-0.99, 0 на 100%, процесс стабилен. Чистка БД (Rick OK): удалено 113 односторонних из 180 OF-сигналов, 67 чистых, бэкап users.db.bak-of-cleanup-20260604-080131. ⚠️ активная БД=server/data/users.db (signal_log), НЕ data/signals.db. SSH-ключ VPS=`depth-store.getImbalance окно 0.5%+антиспуф (4 снапшота ~30-40с, стена жива ≥50% в каждом, бакеты 0.1%); signals.js порог 0.35→0.60, TP 1.5→2.0, тикет exchange:'binance'. ⚠️ порог 0.60 МЯГКИЙ (перекос насыщается до ±1) — NEXT накопить 1-2 дня→пересчёт→порог ≈0.85. Торгуем на БИНАНСЕ (не Bybit): тот же стакан что считаем, $50. Dev-скринер ОСТАНОВЛЕН (pm2 stop+save; depth заморожен с 23 мая, стейджинг мёртв; прод VPS = единственная живая среда; каталог НЕ удалять = deploy-источник). 🔴 depth-store.init() чистит >4ч снапшоты на старте. Детали→SKILL.md+brain/log.md.cd8a86b..d91bbbd). Скальп на дисбалансе стакана: scanOrderflow() каждые 10с по ликвид. альтам (искл BTC/ETH), эмит orderflow_imbalance при |Σbid−Σask|/(Σbid+Σask)≥0.35; depth-store.getImbalance(). Phase 0 = детекция+лог в signal_log (НЕТ реальных ордеров), ~2500/день, checkOutcomes сам трекает MFE/MAE. Confidence=ТОЛЬКО сила дисбаланса (50+((|imb|−0.35)/0.65)×45, 1 фактор). emitSignal +опц cooldownMs (OF=5мин, не трогать глоб 60мин). Фронт: тип+карточка с paper-тикетом (TP1.5%/SL0.5% @5x $50 Bybit) + секция 📖 Order-Flow в настройках + слайдер signalOfMinConf. Спека лайва: Bybit банк $50 плечо 5x, брекет 1.5%/0.5% (R:R 3:1), maker-вход обязателен (taker убивает эдж), эдж тонкий ~+0.1-0.15%/сделку. Фазы: 0 лог→1 форвард-тест(2-3нед)→2 бумага→3 микро-лайв. 🔴 ГРАБЛЯ: nginx проксирует ВСЮ статику в node → фронт-изменения на FS-проде = pm2 restart (reload-static требует admin-JWT, 403). Детали→SKILL.md+brain/log.md.pm2 restart (код не трогал, корневой баг state.js отложен). Потеряно scripts/watchdog.sh (cd8a86b, pushed) prod cron 5мин: weightAge>15мин ИЛИ HTTP down→restart (кулдаун 15мин); health-check.sh это не ловил. SSH к Malaysia VPS: текущий id_ed25519 НЕ авторизован (ротация 23 May), рабочий=`. sqlite3 CLI нет→python3. **СТАНДАРТ ОТЧЁТОВ Rick'у = PNG в Telegram** (KB рендерит .html как код): HTML→headless chromium→фотка. Хелпер /home/app/scripts/send-report.sh [caption] [w] [h]`, токен read-only из claude-code-telegram/.env, chat_id Rick=191142060. ImageMagick на сервере нет. Детали→futures-screener SKILL.md+brain/log.md.73bae2a..860061a, pushed). Реальный ордер исполнен на Polymarket через скринер (Zverev 1.30sh@77¢≈$1). Цепочка барьеров: подпись (видимая ошибка + deep-link в браузер кошелька) → общий auth-контекст → base64URL HMAC → already-pending guard → геоблок DE → SOCKS5-прокси TRADE_PROXY (socks5h! remote DNS; тот же что weather-bot) → salt safe-range число → proxy/Safe флоу (maker=Safe 0x3643…, signer=EOA 0x1aec730…, sigType2; VITE_POLY_FUNDER в client/.env.production; забрали Safe у weather-bot) → amounts 2 знака + min$1 (round-nearest USDC) → market FOK слиппедж 5¢ → портфель запрашивает Safe не EOA → P&L percentPnl уже в % (не ×100). ⚠️ pm2 restart --update-env без TRADE_PROXY в шелле сбрасывает прокси. ⚠️ single-wallet (мульти-юзер=derive proxy sigType1 позже). ⚠️ cred_store in-memory. ⚠️ ToS §2.1.4 (прокси из заблок. региона). Полные детали→SKILL.md + polymarket-screener/brain/decisions/log.md.73bae2a + B 3cd3e7f, pushed). Корень = архитектура WC v2: релей-WebSocket рвётся при свёрнутом браузере + iOS17 запретил авто-redirect (НЕ наш баг). A=убрать молчаливый сброс (видимый баннер/подсказка вместо setError(null); попутно пофикшен pre-existing красный билд — TradePage t=setTimeout затенял i18n t()). B=корневой, как у Polymarket: WalletBrowserBanner+walletBrowser.ts гонят мобилу в in-app браузер кошелька (deep-link MM/Coinbase/Trust) → injected EIP-1193, релей не участвует. Деплой/тест на телефоне за Rick (PWA SW кэш). Детали→SKILL.md+brain/log.md.0202263893c6b98f9f3bf301c501ced2 → client/.env.production (c65be9e, было 'demo'). Авто-switch на Polygon перед подписью (57bdf1b, ошибка «chainId 0x1 vs 0x89»; wagmi v2 useSwitchChain). 🔴 ОТКРЫТО: ордер «Submitting…» зависает на мобиле (WC не вытаскивает кошелёк для подписи) — воркэраунд открыть кошелёк вручную; TODO подсказка+таймаут+блок 2-й кнопки, возможно allowlist домена в Reown. weather-bot был ОНЛАЙН (DRY_RUN=false!), реально торговал — НИКТО не выключал → остановлен pm2 stop+save. EOA бота 0x1aec730EDA0EC7BCcF2bbA5D14aa809c8AA722d1=$4 USDC+114 POL (для теста скринера); Safe прокси=$3 коллатерал+~$23 в дневных погодных позах (ждать резолв+redeem, НЕ продавать-спред). Детали→brain/log.md+SKILL.md.1dcc3ba, pushed). Rick прислал скрин ErrorBoundary «Something went wrong / Cannot read properties of undefined (reading toFixed)» на главной PWA. Диагностика: текущий бэк НЕ может отдать битую строку (фид без пропущенных полей, null-числа rusqlite роняет на уровне строки до JSON) → это устаревший бандл в PWA (SW закэшировал старую версию). Altitude-фикс: formatVolume/formatPrice коэрсят non-finite → фолбэк ($0/<1¢), SPIKE score ?? 0 — одна битая строка больше не обеляет весь апп. Юзеру: полностью закрыть/открыть PWA (или Clear site data) чтобы подхватить новый бандл.ad387bd..37b4d31). Код-ревью Фазы 4 нашло: 4.1 чип «WR китов» был мёртв — whale_wallets.win_rate нигде не вычислялся (вечно NULL). Починено по плану из 5 шагов: #3 (ad387bd) MOMENTUM confidence пробрасывается в фид + MomentumSignal. #2 (427be4b) WR усредняется по DISTINCT-китам рынка (address IN (SELECT…)), а не по сделкам. Резолвы (289e130): screener_markets += resolved/winning_outcome (schema + идемпотентный ALTER в db.rs); resolve_whale_markets() дёргает CLOB /markets/{conditionId} (поле tokens[].winner=true = победитель, метка совпадает с whale_trades.outcome), throttle 60/скан, в whale-крон. win_rate (37b4d31): update_win_rates() = доля BUY-сделок кита где outcome==winning_outcome COLLATE NOCASE среди резолвнутых BUY; вызывается в scan_whales ПОСЛЕ резолвера; киты без резолв-BUY = NULL. Verified end-to-end: 95 китов с win_rate, 84 рынка резолвнуто, фид-подзапрос отдаёт WR 0.5–1.0. ⚠️ Gamma /markets?condition_ids= НЕ батчится (1 рынок/запрос) и теряет резолвнутые → используем CLOB. ⚠️ единственный directional WHALE в БД сейчас на рынке без резолв-данных китов → его whaleWr=null (данные, не код). 4.3 (/home HomePage) УДАЛЁН (2092387, Rick дал явное «да»): снесены HomePage.tsx + route + осиротевшие EndingSoonCard/useEndingSoon/hp-* CSS; оставлены AnomalyCard/useAnomalies (юзает SignalsPage); ⚠️ фича «⏰ Ending soon» удалена, бэкенд-эндпоинт не трогали. Фаза 4 ПОЛНОСТЬЮ ЗАКРЫТА (4.1+4.2+4.3). sqlite3 CLI на сервере НЕТ — юзать python3. Источник истины: docs/REDESIGN_PLAN.md.5fdea18,6436c9b). 4.2 MOMENTUM (5fdea18): в edge.rs NEUTRAL-рынок со всплеском объёма ≥3× от 7-дн среднего + цена 10–90¢ → недирекционный сигнал MOMENTUM (⚡), confidence MED при ≥6×; никогда не перебивает whale BUY_YES/NO; в фиде сортируется ниже китов (sort key = momentum_factor, без +2.0 оффсета). Фронт: бейдж/фильтр ⚡ Моментум, discriminated union MomentumSignal, рендер карточки. Колонка momentum_factor уже была в схеме edge_scores. 4.1 WR китов (6436c9b): в signals_feed WHALE-строки несут whaleWr = AVG(win_rate) китов рынка (коррелированный подзапрос whale_trades⨝whale_wallets, NULL если неизвестно — сейчас в БД NULL). Карточка: чип «WR китов NN%» + тир-бейдж «🧠 Умные деньги» при WR≥60%, ничего при null. 4.3 (судьба /home HomePage) ОТЛОЖЕНА — ждёт явного «да» Rick (удаление = только с явным разрешением). /home сирота: route есть, в навигацию НЕ подключён (после редизайна /=SignalsFeed), доступен только прямым URL; контент частично дублируется (Spikes≈СПАЙК, Hot≈сортировка Скринера), уникален только ⏰ Ending soon. Билды зелёные (cargo release + vite), PM2 рестарт + curl /api/signals/feed?type=WHALE OK. ⚠️ directional WHALE в БД=1 (данные, не код). Источник истины: docs/REDESIGN_PLAN.md.ca33576): лёгкий кастомный i18n (без либы) — i18n/translations.ts словарь {en,ru} + LanguageContext/useT(), дефолт localStorage sz_lang иначе navigator.language, переключатель в SettingsPage, t(key,{n}) с параметрами. Портфель (5fe1359+1d7511a+bb89c66): 3 компонента двуязычны, карточка позиции += полоска вероятности+⏳countdown, сводка 2×2 += «К погашению». ⚠️ Возможности/Киты/Скринер = ХАРДКОД-русские (переключатель их НЕ меняет, мигрировать на useT() позже). ⚠️ map(t=>) затеняет i18n t→{t:tr}. Добавить язык=блок в translations.ts. Детали→brain/log.md+SKILL.md.594209b) KPI ВЖИВУЮ из active=1 (был разрыв 24.9k stale/34.7k список); «Avg Spread»→«Заканчиваются 24ч», «Top Mover»→«🔥 Топ по объёму»; formatPrice 0¢→<1¢. Ш2 (20451a0) видимый сорт-бар на мобиле (+бэк updated_at). Ш3 (5c64b68) карточки: полоска implied-вероятности+ликв/спред+⏳countdown. Ш4 (0089374+c1413b2) группировка событий: GET /api/screener/events по event_id (35.5k→3949), тогл «🗂 События»(дефолт)/«📋 Все рынки», топ-3 фаворита; «World Cup» 60→1 карточка $105M. Ш5 (4d7d87f) фильтры min_liquidity+ending(today/week). Пагинация профиля кита (b307e6e). Пост-фиксы: 8b8c6d0 краш таба (сменил форму stats, PWA отдал старый кэш→top_volume.question undefined→ErrorBoundary; KPIBar крашеустойчив); 390093b KPI overflow мобайл (repeat(2,1fr)→minmax(0,1fr)). ⚠️ markets resp=data.markets. ⚠️ пустой end_date всплывает в сорте. Детали→brain/log.md+SKILL.md./trades (500 посл.×все юзеры)→4-6 на кита; ?user=<addr> даёт сотни. A Бэкфилл (6d7c70c+1a3d004): POST /whale/{addr}/backfill тянет историю кита, профиль зовёт на mount (#58: 6→363 сделки, WR из шума в реальный). B Алерты (авто-копи отброшен=non-custodial): таблица whale_alerts+CRUD (cfa927f), check_whale_alerts в кроне детектит новые сделки подписанных (778b97e), кнопка «🔔 Алерт» на профиле+под-вкладка «🔔 Алерты» с «+N новых» (bacb904). Подписка только на БУДУЩИЕ (last_trade_ts). PnL (a43f3ee): трейды профиля JOIN резолвов, realized для резолв-BUY (win=size·(1−price), loss=−amount), 🟢+$X/🔴−$X/⏳в игре. ⚠️ unrealized не считаем (исходы=команды). ⚠️Option<bool> не парсит "1"→"true". Активная БД=data/screener.db. Детали→brain/log.md+SKILL.md.bee08c1): /api/signals/feed?horizon=fast|mid|long (≤2д/2д-2нед/>2нед), SQL на sm.end_date, циклич.тогл. Киты: Ш1 досье (4c1c759) фид отдаёт whaleWinRate+topCategory, чип 🐋 $vol·N сделок·WR%+🧠 Smart≥60%. Ш2 near-resolved (52e67bc) include_resolved дефолт-false прячет ≤5¢/≥95¢, тогл; ⚠️Option<bool> не парсит "1"→слать "true". Ш3 направление (6248b4f) BUY Yes/SELL No→🟢«Ставка→Yes», BUY No/SELL Yes→🔴, акцент-бар, «купил/продал». Ш4 консенсус (068ac91+7c86886) /api/signals/whales/consensus группа по рынку (netSide/netFlowUsd/whales/agreement/avgPrice, HAVING≥2), саб-таб «🤝 Консенсус» useWhaleConsensus, карточки «🐋 N китов→Yes·$X·согласие%». Самая ценная фича. Детали→brain/log.md+SKILL.md.c6e9518, live). Лента «Возможности» (таб переим. с «Сигналы»). Двухосевая модель в edge.rs: Scale1=Сила сигнала, Scale2=Качество входа (entry_quality=спред0.6+ликв0.4, спред инвертирован — тесный=хорошо). Источники whale>longshot>momentum (колонка source). 🎯 LONGSHOT fade: дешёвая сторона 2–20¢ переоценена→ставка на фаворита, strength=(0.20-cheap)/0.18, conf≤MED. Фид джойнит screener_markets→endDate для всех карточек, чип ⏳ timeUntil(). ⚠️ SPIKE-запрос: алиас volume_anomalies va обязателен. Детали→brain/log.md+SKILL.md.2dc1b47..03da988). (1) баг «-419m ago»: SQLite datetime без tz → бэк sqlite_utc_to_iso() отдаёт RFC3339+Z, фронт единый timeAgo() (рус, нормализует UTC), 4 дубля убраны. (2) «100% объёма китов»→«$33K·4 сделки»: новые колонки edge_scores.whale_count/whale_volume_usd (идемпотентный ALTER в edge.rs). (3) фильтр силы→1 кнопка-циклер, 2 ряда вместо 3. (4) ConnectButton label="Кошелёк"+nowrap. (5) .category-pills mask-fade. Детали → brain/log.md + SKILL.md.4775c42, pushed). WhalesPage заменила заглушку: SubTabs 🐋 Сделки (переиспользован WhaleFeed) + 🏆 Топ-кошельки (лидерборд через useTopTraders → клик /whale/:address). 3.1 (бэкенд /api/signals/whales+/top-traders+/whale/{address}) и 3.3 (связка профиля) уже существовали — переиспользованы. NB: LeaderboardPage=билдеры SZHub, не киты. Осталось Фаза 4 (полировка): 4.1 WR+категория китов в карточках, 4.2 NEW MONEY/MOMENTUM в edge.rs, 4.3 судьба /home HomePage (слить/удалить — нужно добро Rick).24f94e3..3e2acba). Фаза 1 каркас навигации (5 вкладок 🔥 Сигналы/🐋 Киты/🔍 Скринер/📊 Портфель/⚙️ Ещё; HomePage→/home). Фаза 2 лента Сигналов: backend GET /api/signals/feed (edge_scores type=WHALE + volume_anomalies type=SPIKE, WHALE-first sort key +2.0, normalized strength WHALE=edge_score/SPIKE=min(score/10,1), фильтры category/type/min_strength post-fetch по пулу 300), useSignalsFeed hook (SignalCard discriminated union WhaleSignal|SpikeSignal), SignalCard.tsx (бейдж КИТ голубой/СПАЙК оранж + картинка + метрика), SignalsFeed страница (grid+skeleton+empty), Buy CTA → /market/:id?side= (OrderForm initialSide). ⚠️ directional WHALE в БД=1, спайков ~50 (данные, не код). ⚠️ PWA SW кэширует старый бандл — fix: закрыть PWA полностью/Clear site data. Источник истины: docs/REDESIGN_PLAN.md. Следующий = Фаза 3 (Киты): 3.1 /api/whales/feed+leaderboard, 3.2 WhalesPage (заменить заглушку), 3.3 связка профиля /whale/:address. По 1 микрошагу, commit+спрашивать.c8f0b9d). Rick нажал Resume → ComfyUI not reachable; vastai show instances=пусто → инстанс уничтожен (vast забрал). Resume работает ТОЛЬКО на живом GPU. 🔴 Баг потери данных: cleanOldBatches (в saveBatch при «Start New Batch») стирала ВСЕ папки output/ включая активный батч → фикс: пропускает batch.json.batchName. Батч ..._COMFY20_merged_20260601_195331 цел локально (113 PNG+81 mp4+batch_state 32 failed). 🚨 НЕ жать «Start New Batch» для восстановления. Восстановить 32 = живой GPU + SSH в runner.sh + тот же BATCH_NAME + resume. Пробел: дашборд не умеет «арендовать GPU и продолжить ЭТОТ батч» (предложен фичекит Resume→auto-rent, Rick не ответил, НЕ строю). Детали→brain/log.md+SKILL.md.a200c94). torch-cu128-фикс СРАБОТАЛ (113 img+81 vid, GPU жив), но 32/113 видео упали upload_file failed: [Errno 104] Connection reset by peer (SSH-туннель рвёт коннект, 3-й тип сбоя — НЕ OOM/torch). Фикс: upload_file ретраит 3x backoff 2s/4s, покрывает обе фазы. При частичных провалах + живой GPU → кнопка ▶ Retry N failed. Детали→brain/log.md+SKILL.md.236158b,8d2d803). Phase 1 «со старта» падала CLIPTextEncode → CUDA error: no kernel image is available (НЕ OOM). Причина: setup ставил torch cu124, а vast выдал RTX 5090 (Blackwell sm_120) — cu124 без кернелов под sm_120. Фикс: маппинг в setup-server.sh <12.4→cu121/12.4-12.7→cu124/≥12.8→cu128/≥13→default; + после install torch проверка torch.randn().cuda()@self, при провале setup exit 1 → runner.sh destroy инстанса+notify (не жжёт аренду на 99-м клипе). Лечится только re-provision; хотфикс живого: pip install torch... --index-url .../cu128. GPU-аренду сам НЕ инициирую (за Rick). Детали→brain/log.md+SKILL.md.a64d5b9,69d842e). generate.py: step_video при OOM (хелпер is_oom_in_history) делает 1 ретрай с free_vram() перед ним, не-OOM = fail-fast. Дашборд (server.js+index.html): был баг — батч с провалами метился phase=done → кнопка Resume скрыта + /api/resume отказывал «already completed»; фикс: canResume+=hasFailures, /api/resume запускает фазу с --resume (перегенерит только missing mp4), кнопка ▶ Retry N failed. ⚠️ video-gen дашборд=PM2 video-gen-dash порт 3230 (НЕ dashboard 3000). Детали→brain/log.md+SKILL.md./workspace/comfyui.log, НЕ runner.log — тот обрезает на 239 симв и врёт «SageAttention=❌»): torch.OutOfMemoryError при fp8-квантизации весов LTX 2.3 22B. 22B в 24GB = впритык, раньше влезало с тонким запасом (3090); сломанный sage-стаб (20KB wheel «not importable») + фрагментация съели запас. 5090 (32GB) = штатный GPU. Resume на новый инстанс: картинки локально (output/.../*.png), основной runner.sh уже с --resume → правишь только INSTANCE_ID/SSH_HOST/SSH_PORT (стр.9-11), BATCH_NAME тот же → Phase 1 скипается, идёт видео. ⚠️ runner-resume.sh сломан (нет --resume). Бендер остановил OOM'ящий процесс, кода НЕ трогал; Rick перезапустил на 5090 сам. Апдейт: resume на 5090 НЕ сработал — при перезапуске (через дашборд /api/start) стёрты 93 PNG + batch_state → регенерация с нуля, бэкапа нет. Правильный resume = вручную поменять INSTANCE_ID/SSH_HOST/SSH_PORT в runner.sh, BATCH_NAME тот же, output НЕ трогать. Ускоритель (PENDING): sage 1.0.6 = битая 20KB заглушка (fallback и так крутится, давал ~30-40%). Альтернативы: --fast (fp8 fast accum, топ для 5090), xformers, flash-attention. Рекомендация: --fast+xformers к след. батчу.polymarket-screener/docs/CLOB_V2_MIGRATION.md. Ключевое: (1) V2 struct убирает feeRateBps/nonce/taker, добавляет timestamp/metadata/builder(bytes32, ВНУТРИ подписи); domain version "1"→"2"; exchange 0xE111180000d2663C0091e4f400237545B87B996B, negrisk 0xe2222d279d744050d28e00520010520000310F59. (2) Правильный builder code = 0x3c829d5150b70f3ba347670d4b1eda96be3c255b3f64895a7eeef5caea7952d5 (в скринере стоит НЕВЕРНЫЙ 0x535a4875…). (3) fee rate = серверно в builder-профиле, не в ордере. (4) Step A PASSED: viem (browser) == официальная py-clob-client-v2 v1.0.1 (live в weather-bot), хеш 0x9831ef55…5c96 идентичен, подпись recover-ится. Миграция доказанно корректна, 0 риска. ✅ РЕАЛИЗОВАНА 30 May (A 7905e4f/B f78b05a/C bc063c4/fixture fed8cbe); в routes.rs owner=api_key (был баг — слался адрес), BUILDER_CODE_HEX→0x3c82…. Builder fee API: maker=50bps✅ taker=0bps❌. Wallet: weather-bot custodial sigType2 (деньги в proxy 0x3643914646900cA7A5df15B8f5d1Cc5E32728c1a); скринер non-custodial sigType0 (browser EOA) — live-тест скринера ботовым кошельком невозможен, нужен funded EOA в MetaMask.github.com/Zserg5585/polymarket-weather-bot (private) через curl POST api.github.com/user/repos (PAT переиспользован из futures-screener remote — gh CLI НЕ авторизован на сервере). Security audit перед пушем: секретов в трекинге НЕТ (PRIVATE_KEY=os.getenv, BUILDER_CODE=публичный, hex=публичные контракты Polygon). .gitignore усилён: .env.bak*, .env.* (кроме .env.example). .env подтверждённо НЕ в репо. Аккаунт GitHub: Zserg5585. Bot stop→fix→restart: остановлен для фиксов аудита, 8 открытых позиций (~$45-50, 49.95 NO-шейров) оставлены дозревать on-chain (sell-функции у бота нет, продажа теряла бы ~$10-15 на спреде vs додержка до резолва). Перезапущен на пофикшенном коде. 1/8 зарезолвилась (Moscow LOSS -$4.26). Балансы: $3.34 pUSD + $4.00 USDC EOA.16f2ea8→058de34). 30 из 34 находок исправлено, 4 отложено с обоснованием (#27 уже прикрыт has_cancelled guard, #28 cooldown оставлен market-level=безопаснее, #31 dynamic sizing=June TODO, #34 нет реального вызова). Ключевое: #1 °C-маркеты резолвились с °F-округлением (бил по всем не-US городам) — FIXED+unit-test; #5 control-run исключён из ансамбля; #2/#11 double-spend retry; #3 partial UNIQUE index на open live (market_id,side); #8 auth fail-closed. ⚠️ PM2 weather-bot НЕ рестартнут — крутится старый код в памяти, новый код подхватится только после pm2 restart weather-bot. Харнесс глючил на -> в Edit/Bash → executor.py правил через python-патч-скрипты.03c47b7..ff839c9has_cancelled_for_market() guard in executor.py. Confirmed via logs: cancel→new order→reconcile finds on-chain shares. 6c670c26e44ee3setTimeout(fn,0) для React Compiler set-state-in-effect. connectRef для WS circular dep. StatsUpdate struct в Rust. 9 коммитов d828902..011dd82_update_working_directory_from_claude_response сохраняет навигацию между сообщениями. Фикс: 3 строки в orchestrator.py (ожидает добро)poly-dev.szhub.space. 24K маркетов, $122M vol/24h, 38 категорий. React+Vite+TS + Node.js+Express + SQLite. Bottom tab nav (5 табов), dark theme. Gamma API sync каждые 2 мин. Screener таблица (фильтры: категория, volume, price range, поиск, URL sync), KPI bar, Markets Home (hot markets, categories grid, ending soon), Search page. PM2 порт 3240, SSL certbot. 7 коммитов ad260fa..a8d024e. Builder code "SZHub" готов для Phase 3 (торговля)_fetch_clob_market(). Результат: 8 resolved (5W/3L, -$7.37), redeem 5 позиций, wrap $25. Builder Profile SZHub создан, BUILDER_CODE добавлен в executor. MetaMask desktop подключён к Polymarket. c27cca0sys.stdout.reconfigure) — прогресс в dashboard в реалтайме через pipe/tee. 4) BasicGuider для refine вместо STGGuider (1 pass vs 3, refine 45s→15s). 5) SageAttention полностью удалён — v1.0.6 другой API, старый fp8→fp16 патч не работает (0 matches), int8 QK на Qwen fp8 = overflow → чёрные картинки. PyTorch SDPA+FlashAttention2 почти та же скорость. RTX 5090 vs 4090: 2-2.5x разница (210 vs 83 TFLOPS, GDDR7 vs GDDR6X). 918d48c_is_past_peak_time UTC vs LOCAL — азиатские маркеты не скипались после peak, 2) kill switch считал dry-run P&L в live mode, 3) forecast_cache таблица росла бесконечно (cleanup никогда не вызывался). 🟡 Средние: inconsistent date parsing (strptime→fromisoformat), fill errors logged as debug, stale thread-local conn. 🟢 Minor: 4 silent exception→logging. 877a344_check_pending_fills(): 1) partial fills ignored (size_matched check), 2) get_order()=None→cancelled (now: cancel only if stale), 3) API error→cancelled (now: unknown, recheck). Новая _reconcile_cancelled_positions() — сверка cancelled vs on-chain CTF balance. DB fix: #9697 Buenos Aires→loss -$3.34, #9810 NYC→filled $0.30. Реальная потеря ~$3.64, не $10.9d608dc37d3009wrap_usdc_to_pusd() + recover_proxy_usdc(). Баланс $1.90→$46.90. 80b168bdocs/COMPETITIVE_ANALYSIS.md. 15 конкурентов, gap'ы: 2 модели vs 4-10, нет city bias. Strengths: dashboard, 82-member ensemble, 78% WR--lowvram), silent failure logging. Revert to Flux Schnell (a04576d)2d831f3). Phased mode 3x faster (3677cd9). Flux Dev+LoRA (0a16cbc)docs/SCREENER_SPEC.md0920305065a47185e4ebdisMetaRefusal()deploy-prod.sh, modal freeze fix