meta(handoff): session 2026-08-17 — sched F&F r3 (ssh-pin fix verified, UI cache-bug found), llm-router pool -> routerai+deepseek, pi models updated

This commit is contained in:
2026-08-17 11:18:01 +03:00
parent 90923482db
commit 412876f182

View File

@@ -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:50Z14: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` замораживает таблицы на промежуточном состоянии. (кандидат в вики, если закрепить)