tasks: sched-fnf-r6 — репорт отправлен (99/99 PASS + F1..F10), ждём приёмки

This commit is contained in:
2026-08-17 23:35:15 +03:00
parent 5afb415e0d
commit 6cd974c4a0
2 changed files with 21 additions and 13 deletions

View File

@@ -1,31 +1,38 @@
---
_last_updated_: 2026-08-17T17:28:00Z
session_id: 2026-08-17-pi-sched-fnf-r4-r5
_last_updated_: 2026-08-17T20:36:00Z
session_id: 2026-08-17-pi-sched-fnf-r6
---
# Next session handoff
## Recent commits
- (нет коммитов в `.admin` за сессию — вся работа = репорты в inbox `victor/sched`)
- `tasks: sched-fnf-r6 — репорт отправлен (99/99 PASS + F1..F10), ждём приёмки`
## Open треки
| Трек | Готовность | Entry-point |
|---|---|---|
| sched F&F раунд 5allowedTools sandbox | 🟢 закрыт (18/18, 7/7 + A/B/C) | `.admin/.tmp/sched-r2/r5/` (r5-retest-ab.mjs) |
| sched F&F раунд 4 — run-метаданные/retention/manual-retry | 🟢 закрыт (5/5 + A/B/C починены) | — |
| sched F&F раунд 6real runners (ssh/http/storage) | 🟢 репорт отправлен, ждёт приёмки sched | `victor/sched/.agents/inbox/2026-08-17T20-35-00Z-admin-fnf-r6-report.md` |
| llm-router рестарт службы + verify routerai | 🔴 ждёт юзера (admin restart) | `.common/lib/llm-router-proxy/` + AppData-копия |
| pi models.json | 🟢 done | `~/.pi/agent/models.json` |
## Спроси user'а
- **Перезапусти `llm-router` службу** (админская PowerShell) → скажи, проверю probe→routerai (трек из прошлой сессии, всё ещё висит).
- Ритуал закрытия — ниже в ответе.
## Спроси user'а (при следующем контакте)
- Перезапусти `llm-router` службу (админская PowerShell) → скажи, проверю probe→routerai (висит с прошлых сессий).
- Если sched пришлёт retest-пинг по находкам r6 (F1/D1/F7/F8/F10) — прогони стенд снова.
## Не делать (preemptive guards)
- **НЕ пушить в victor/sched, НЕ трогать их доску/NEXT_SESSION/wiki** — только письма в их inbox (правило F&F).
- **НЕ пушить в victor/sched, НЕ трогать их доску/NEXT_SESSION/wiki** — только письма в их inbox (правило F&F). Inbox gitignored — письмо не коммитится.
- Не трогать R2-стенд daemon :8080 (общий регресс-стенд, живёт).
- Не писать секреты в этот файл (git-tracked).
- БД `sched_r6` на VDS дропнуты после тестов; для повторного прогона — `mk-dbs.mjs` в стенде.
## Memory updates за сессию
- **sched r5 ЗАКРЫТ** (core 0.26.2 / mcp 0.3.1 / daemon 0.1.20): перетест B после второго захода — **18/18 PASS**. B.1 дистрибутив: daemon был на `workspace:*` → точный пин mcp 0.3.0 (вложенная копия без assertValidMcpToolSpecs); фикс `@sched/mcp:"^0.3.1"` в daemon 0.1.20, вложенная ушла. B.2 хитристика: ловит `host:port` (tool-часть = цифры → throw), кейс #2 `https://127.0.0.1:1` дословно. A (ssh ceiling on load) 4/4 + нюанс порядка (shape раньше ceiling-команды, принят «по желанию»). C — дока. Приёмка: `victor/sched/.agents/inbox/2026-08-17T17-27-12Z-admin-fnf-r5-accepted.md`.
- **sched r5 перетест A/B** (core 0.26.1/mcp 0.3.1): A) ssh ceiling fail-fast на load — ✅ подтверждено; B) mcp bare http spec — ❌ в продуктовом пути: `@sched/daemon@0.1.19` пиннул `@sched/mcp:"0.3.0"` (жёстко, вложенная копия без assertValidMcpToolSpecs) → daemon грузит старый раннер, фикс не активен; хитристика ловит только `https://host` без порта, `https://host:port` не бросает (порт в tool-измерение). Ответ: `victor/sched/.agents/inbox/2026-08-17T17-18-54Z-admin-fnf-r5-ab-retest.md`. Ждём перепин + хитристику.
- **F&F-репорты живут в `victor/sched/.agents/inbox/`** (НЕ в .admin/.tasks/) — rounds 4-5 шли через inbox-пинги, без board-задач. Следующий раунд (6?) придёт тем же пингом в `.admin/.agents/inbox/`.
- **sched r6 репорт отправлен: 99/99 PASS + находки F1..F10.** Стенд `.admin/.tmp/sched-r2/r6/`.
- ssh 25/25 на живом VDS (реальный ключ env + пин + команда). http 29/29 (локальный приёмник, simple/envelope/poll/auth). storage 67/67 на живых БД VDS (MariaDB 11.4 / PG 16.14 / Mongo 7.0).
- **F1:** пинг r6 врет про `{"status":"ok"}` — код+дока `succeeded|failed|accepted`.
- **D1:** дока 07.storage (стр. ~20,~141) + пинг обещают `createDaemon({storage})`, а daemon 0.1.20 хардкодит sqlite. Адаптеры тестил через `createEngine`.
- **F3:** ssh fingerprint-mismatch — «Host denied (verification failed)», отпечатки не называет. **F4:** дока ssh timeoutMs смешивает connect(→failed)/command(→cancelled). **F5:** manual trigger не пишет task.lastRunId (движковое). **F6:** Mongo без schema_version (by design).
- **F7 (эксперимент):** адаптер по одной доке — 31/31 PASS, но дока несамодостаточна: refreshLock (дока 16 методов vs published 0.26.2 = 15, фича в неопубликованном 0.27.0 воркспейса), сигнатуры (pruneRuns {olderThan,temporary}, completeTask optional) только в .d.ts, async-фабрика в сьюте — ловушка.
- **F8 (эксперимент):** раннер по одной доке — 15/16: CR-1 баг доки `"schedule":"* * * * *"` строкой невалиден (07.custom.md:105, надо {cron}); CR-2 run() без hooks/onProgress (live-прогресс sync-раннеров недокументирован).
- **F9:** mcp-раннер — ниша узкая (MCP-only тулы + вызов без агента в петле), единственный раннер без живого прогона; рекомендация: позиционирование в доке + одна живая таска.
- **F10 (от юзера):** admin API+UI — Schedules (и Tasks) не показывают статус последнего рана. `/schedules` не отдаёт lastRunId (admin-api.ts ~367-384), UI колонка «last run» = только timestamp. Поллинг в Tasks/Schedules есть (5с, фикс r3, ui 0.1.10) — не хватает только поля в API + колонки в рендере. Рекомендация: lastRunId+lastRunStatus серверно, колонка «last status» в UI.
- `GET /runs/:id` возвращает RunRecord напрямую (не {run}).
- Контракт-сьют требует синхронную фабрику (или пре-авайт в своём beforeEach, как у SQL-адаптеров).

View File

@@ -1,4 +1,5 @@
# Admin Task Board
_Updated: 2026-08-17 (4) — 🟢 **[sched-fnf-r6] РЕПОРТ ОТПРАВЛЕН (жду приёмки).** Real runners on real infra: ssh 25/25 (VDS, реальный ключ/пин/команда), http 29/29 (локальный приёмник, simple+envelope+poll+auth), storage 45/45 (MariaDB 11.4/Postgres 16/Mongo 7 на VDS, БД sched_r6 дропнуты после). Версии core 0.26.2/daemon 0.1.20/mcp 0.3.1/storage-* 0.2.1. Находки: F1 пинг r6 врет про `{"status":"ok"}` (код+дока: succeeded|failed|accepted); D1 дока 07.storage+пинг обещают `createDaemon({storage})` — daemon 0.1.20 хардкодит sqlite, опции нет (тестил через createEngine); F3 ssh fingerprint-mismatch не называет отпечатки («Host denied (verification failed)»); F4 дока ssh timeoutMs смешивает connect(failed)/command(cancelled); F5 manual trigger не пишет task.lastRunId; F6 у Mongo нет schema_version (by design); F7 эксперимент «адаптер по одной доке» — 31/31 PASS, но дока несамодостаточна (refreshLock: дока 16 методов vs published 0.26.2 = 15, фича в неопубликованном 0.27.0; сигнатуры только в .d.ts; async-фабрика в сьюте — ловушка); F8 эксперимент «runner по одной доке» — 15/16 (CR-1 баг доки: `"schedule": "* * * * *"` строкой невалиден, надо объект {cron}; CR-2 дыра: run() показан без hooks/onProgress — live-прогресс sync-раннеров в доке нет); F9 mcp-раннер — «на усмотрение»: единственный раннер без живого прогона за все раунды, ниша узкая (MCP-only тулы + вызов без агента в петле), рекомендация — честное позиционирование в доке + одна живая таска как валидация; **F10 от юзера: admin API+UI Schedules (и Tasks) не показывают статус последнего рана** — /schedules не отдаёт lastRunId/статус (admin-api.ts ~367), UI колонка «last run» = только timestamp (sched-schedules.ts), рекомендация: lastRunId+lastRunStatus в API, колонка «last status» в UI. Отправлено: `victor/sched/.agents/inbox/2026-08-17T20-35-00Z-admin-fnf-r6-report.md`. Стенд: `.tmp/sched-r2/r6/`._
_Updated: 2026-08-17 — 🟢 **[sched-fnf-r4] ЗАКРЫТ (5/5 + находки A/B/C починены, core 0.25.0/daemon 0.1.18).** Run-метаданные (trigger/triggeredBy/temporary/retryOf), trigger-only, manual retry (`POST /runs/:id/retry`), auto-retry линковка, retention — всё зелёное (43 чек-пойнта). Находки: A) syncTasks disable-on-remove (removed → disabled, док стал правдой); B) `POST /tasks/:name/run` с `{temporary?, data?}`; C) `--help` дефолты. Перетест 12/12. Репорты: `victor/sched/.agents/inbox/2026-08-17T16-02-00Z-*-report.md` + `…T16-09-00Z-*-retest-report.md`. Стенд `.admin/.tmp/sched-r2/r4/`._
_Updated: 2026-08-17 (3) — 🟢 **[sched-fnf-r5] ЗАКРЫТ (7/7 + A/B/C приняты).** allowedTools sandbox (core 0.26.2/mcp 0.3.1/daemon 0.1.20). Перетест B после второго захода: **18/18 PASS**. A) ssh ceiling fail-fast на load — подтверждено 4/4 (нюанс порядка shape-vs-ceiling принят «по желанию», перестановка при след. касании ssh); B) mcp bare http spec — оба дефекта починены: daemon 0.1.20 перепинен на `@sched/mcp:^0.3.1` (вложенная 0.3.0 ушла, daemon грузит 0.3.1), хитристика ловит `host:port` (их кейс #2 дословно: `https://127.0.0.1:1` → throw; ceiling и per-task → load-отказ «must include a tool dimension»; `host:port:tool`/`npx*:read_*` валидны); C) дока. Регресс process/opt-in жив. Ретест: `r5-retest-ab.mjs`. Репорт: `victor/sched/.agents/inbox/2026-08-17T17-27-12Z-admin-fnf-r5-accepted.md`.
_Updated: 2026-08-17 — 🟢 **[sched-fnf-r3-refresh0] ACCEPTED — раунд 3 закрыт.** sched починил `?refresh=0` (ui 0.1.10→0.1.11, comm 926465b): чистую функцию refreshFromSearch (browser-safe модуль, morda.ts с node-импортами ломал esbuild) + NaN-guard. Перетест на стенде r3 (ui 0.1.11, Chrome/CDP, 3 вкладки): (1) `?refresh=0` — fail-fast замер на next 13:42:30/fails 12 за 35с, пока API-истина росла до 14 — polling реально выключен; (2) `?refresh=2500` — 4 запроса /api/tasks за 10с (2.5с каденс) vs 2 (5с) без параметра; (3) дефолт 5с жив. Раунд 3 закрыт полностью (все 4 пункта: tasks/schedules/runs polling + refresh-оверрайд). Репорт: `victor/sched/.agents/inbox/2026-08-17T10-44-00Z-admin-fnf-r3-refresh0-retest.md`._