From 412876f182019fcce29a8479dffbab442167093b Mon Sep 17 00:00:00 2001 From: vitya Date: Mon, 17 Aug 2026 11:18:01 +0300 Subject: [PATCH] =?UTF-8?q?meta(handoff):=20session=202026-08-17=20?= =?UTF-8?q?=E2=80=94=20sched=20F&F=20r3=20(ssh-pin=20fix=20verified,=20UI?= =?UTF-8?q?=20cache-bug=20found),=20llm-router=20pool=20->=20routerai+deep?= =?UTF-8?q?seek,=20pi=20models=20updated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .tasks/NEXT_SESSION.md | 65 +++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/.tasks/NEXT_SESSION.md b/.tasks/NEXT_SESSION.md index a68297a..482ca77 100644 --- a/.tasks/NEXT_SESSION.md +++ b/.tasks/NEXT_SESSION.md @@ -1,45 +1,46 @@ --- -_last_updated_: 2026-08-16T14:45:00Z -session_id: 2026-08-16-sched-fnf-kickoff +_last_updated_: 2026-08-17T08:15:00Z +session_id: 2026-08-17-pi-models-llm-router-fnf-r3 --- # Next session handoff -## Состояние: F&F-цикл sched ЗАКРЫТ (4/4 приняты) — ждём раунд 2 (docs-review) +## Состояние: три нитки, все в ожидании внешнего шага -**Сводка F&F** (эта сессия, 12:50Z–14:42Z): 4 таски → 4 приёмки, **6 фидбеков → 6 фич**: -1. `createDaemon` import — exports-map `@sched/daemon` (0.1.2) -2. UI-бандл 404 — UI отдельным пакетом `@sched/ui` + бин `sched-ui serve` (0.1.1), daemon headless (`--admin-static` выпилен) -3. UI без токена — токен-бокс в морде (localStorage `sched-token` + `?token=`) -4. Allowlist на dispatch — `Runner.validateConfig`-хук, валидация на load (core 0.12.2) -5. ntfy только Bearer — basic `user`+`password` в createAlerts (core 0.12.2) -6. pollTimeoutMs не в daemon — `DaemonOptions.pollTimeoutMs/pollIntervalMs` + CLI `--poll-timeout` (daemon 0.1.4) +**1. sched F&F раунд 3 — наша часть сделана, ждём от sched cache-фикс.** +Прогнано (стенд `.admin/.tmp/sched-r2/r3/`, изолированный node_modules: core 0.22.0 / daemon 0.1.15 / ui 0.1.8 из verdaccio): +- 4 новых раннера протестированы IRL: process ✅, mcp ✅ (vds-ops HTTP, env-токен), docker-envelope ✅, **ssh — найден критичный баг host-key pin** (`keyHash.replace is not a function`: ssh2 отдаёт в `hostVerifier` сырой Buffer, `hostHash` не задан) → sched починил в core 0.21.0 (`hostHash:'sha256'` + Buffer-safe fingerprintMatches), перетест ✅. +- Найден **UI cache-баг**: serve/daemon не шлют `Cache-Control` → браузер кэширует `/api/runs`, строки залипают на `running` (progress % виден, терминальный статус нет), лечится только Ctrl+F5. Воспроизведено live (DOM до/после `location.reload(true)`). sched подтвердил, фикс «в треке». +- Live-прогресс (0.22/0.1.15) работает (API растёт 7→100, exit-code→100%, fail→N%), но его **маскирует cache-баг** — репорт с просьбой поднять приоритет отправлен. +- Репорты (3): `victor/sched/.agents/inbox/2026-08-17T06-35-00Z-*`, `07-07-00Z-*`, `07-32-00Z-*`, `08-10-00Z-*`. +**Следующий шаг:** когда sched пингнёт cache-фикс — перетест: поднять `cd .admin/.tmp/sched-r2/r3 && node daemon.mjs` (порт 8082) + `node node_modules/@sched/ui/dist/serve.js --proxy http://127.0.0.1:8082 --port 8083`, проверить, что терминальные строки рендерятся **без Ctrl+F5**. -Версии: **core 0.12.2 / daemon 0.1.4 / ui 0.1.1 / mcp 0.1.1**, сьют 363 ✓. +**2. llm-router (failover-прокси pi) — конфиг готов, ждёт рестарт службы от юзера (admin).** +- Пул переконфигурен: **routerai (deepseek-v4-flash-0731 / deepseek-v4-pro-0813) → deepseek (chat/reasoner)**; teamorouter/orcarouter/anymodel убраны. +- **ВАЖНО: служба winsw читает фабричную копию `C:\Users\vitya\AppData\Local\llm-router\config\llm-router.json`**, НЕ проектную `.common/lib/llm-router-proxy/config/`. Обе обновлены (gotcha в `.common/.wiki/concepts/llm-router-failover-proxy.md`). +- Ключи: routerai+deepseek в `~/.pi/agent/auth.json` (orcarouter/teamorouter ключи удалены). +- **Ждёт:** `Restart-Service llm-router` (админская PS) → потом проверить `curl :8787/health` + minimal probe: в логе `upstream=routerai` (не teamorouter). -## 🔴 Следующая сессия: раунд 2 — docs-review после storage-сплита (пинг от sched) +**3. pi models.json — готово.** orcarouter/teamorouter убраны, в `routerai` добавлены deepseek/deepseek-v4-flash-0731 + deepseek-v4-pro-0813. Цены от юзера даны в рублях, **переведены в USD** (pi рендерит `$`; курс 83.44 ₽/$): flash 0.0839/0.1678/0.0175, pro 1.594/3.2/0.132. Релоад — при открытии `/model`. -Порядок (согласован письмом 14:41Z, ack 14:42Z): **storage-сплит (SQLite из коробки, MySQL/PG/Mongo — отдельные пакеты) → полировка доков → пинг в инбокс → наше ревью**. - -- Формат: что делал → что ожидал → что получил → ссылка на раздел доки. -- Фокусы (зафиксированы sched'ом как их чек-лист): **02.quick-start** (все три пути после сплита), **07.storage.md** (выбор адаптера), **10.cli.md / 13.ui.md** (если поверхность менялась). -- Репорты → `victor/sched/.agents/inbox/` (файл, gitignored — их монитор подхватывает). - -## Контекст для ревью (накопленное знание) - -- Стенд F&F: `.admin/.tmp/sched-fnf-01/` — daemon.js (custom runner dirSizeWatch), daemon2.js (docker), daemon3.js+worker.js (async/poll), embedded4.mjs (embedded+alerts+retry). Фоновые процессы убиты. sched.db/sched2.db/sched3.db/sched4.db — история ранов. -- Пакеты установлены в стенде из verdaccio (registry `https://verdaccio.kzntsv.site/`, npmrc с токеном). -- ntfy: `ntfy.vds.kzntsv.site`, basic auth vitya (pass `vds-kzntsv/full-env`), топик `sched-fnf` (admin role → любой топик). -- kreknin SSH: `vitya@195.19.90.188`, ключ `~/.ssh/id_ed25519_kreknin`, бэкапы `/volume1/NetBackup/{vds-kzntsv,books-vds}/latest`. -- **Правило (рявк 12:46Z): НЕ пушить в victor/sched, НЕ трогать их доску/NEXT_SESSION/wiki. Всё — письмом в их инбокс.** - -## Open треки (не sched) +## Open треки | Трек | Готовность | Entry-point | |---|---|---| -| pilonuxt prod (стек 16) — образ `64c2539`, откаты: `1128ddc`→`f876e70`→`24a13da`→`40806b1`→`340c0e7`→`8b7e8c4` | 🟢 live | `host-stacks/vds-kzntsv/pilonuxt.compose.yml` | -| pilorama-yandex-business-renewal — ответ Анастасии **до 17.08** | 🔴 active | `.tasks/STATUS.md` монорепы | -| pilorama-seo-crawl-audit — GSC-замер через 2-4 нед | 🔴 active | `.tasks/STATUS.md` монорепы | -| storage-сплит sched (у них) → docs-review (у нас) | ⚪ ждёт пинг | `victor/sched/.agents/inbox/` | +| sched F&F r3 cache-фикс перетест | ⚪ ждёт пинг sched | `.admin/.tmp/sched-r2/r3/` + их инбокс | +| llm-router рестарт службы + verify routerai | 🔴 ждёт юзера (admin restart) | `.common/lib/llm-router-proxy/` + AppData-копия | +| pi models.json | 🟢 done | `~/.pi/agent/models.json` | ## Спроси user'а -- F&F закрыт, раунд 2 зарегистрирован. Если до пинга sched появится другая работа (pilorama/монорепа) — обрабатывать по обычной схеме. +- **Перезапусти `llm-router` службу** (админская PowerShell) → скажи, я проверю probe→routerai. +- Ритуал закрытия (ниже в ответе): ингестить ли знание в вики (см. Memory updates), закрывать ли что-то. + +## Не делать (preemptive guards) +- **НЕ пушить в victor/sched, НЕ трогать их доску/NEXT_SESSION/wiki** — только письма в их инбокс (правило F&F). +- Не трогать R2-стенд daemon :8080 (общий регресс-стенд, живёт). +- Не писать секреты в этот файл (git-tracked). + +## Memory updates за сессию +- `.common/.wiki/concepts/llm-router-failover-proxy.md` — секция «Две копии конфига» (служба читает AppData-копию) + актуальный пул routerai→deepseek. +- **pi cost = USD** (рендер `$`): рубли от юзера конвертировать по курсу, иначе оценка в ~83 раза выше. (кандидат в вики) +- **HTTP_PROXY на этой машине**: `curl 127.0.0.1` уходит в прокси (503 маскирует «down»). Проверки локальных портов — `curl --noproxy '*'` + `netstat`. (кандидат в вики) +- sched ssh-runner паттерн: ssh2 `hostVerifier` получает Buffer, hex-диджест — только с `hostHash:'sha256'`; UI: отсутствие `Cache-Control` замораживает таблицы на промежуточном состоянии. (кандидат в вики, если закрепить)