tasks: sched-fnf r4 closed + r5 reviewed; close stale sched dups; handoff
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
# Admin Task Board
|
||||
_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 — 🟡 **[sched-fnf-r5] РЕПОРТ ОТПРАВЛЕН — allowedTools sandbox (core 0.26.0/mcp 0.3.0/daemon 0.1.19), ждём фикс.** 30/30 зелёный, 7/7 пунктов (per-task allowedTools, ceiling через runners-блок, mcp per-tool, ssh per-command, docker image@cmd, порядок policy→runner, регресс opt-in). 3 «на ваше усмотрение»: A) ssh — единственный раннер, где ceiling на run (не load); B) mcp http server-only spec тихо no-match (нужен `url:*`); C) docker `alpine@echo` блокирует таску без явного command. Стенд `.admin/.tmp/sched-r2/r5/`. Репорт: `victor/sched/.agents/inbox/2026-08-17T16-58-00Z-admin-fnf-r5-sandbox-report.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`._
|
||||
_Updated: 2026-08-17 — 🟢 **[sched-fnf-r3-ui-autorefresh] ACCEPTED.** sched починил мёртвый polling в Tasks/Schedules (ui 0.1.9→0.1.10, comm 83ac7be): morda слала `el.refreshMs` всем компонентам, но SchedTasks/SchedSchedules его не декларировали — поллил только Runs. Проверил на стенде r3 (8082 daemon + 8083 serve, ui 0.1.10 из verdaccio, реальный Chrome через CDP, без единого клика refresh): Tasks — next run `13:35:37→13:36:52` и fails `0→2` за 35с (fail-fast), stale nextRunAt 5-мин задач пересчитались сами; Schedules — next `13:36:52→13:37:23` + last `13:36:22→13:36:53`; Runs регресс — 4→10 строк без refresh. ⚠️ Находка «на ваше усмотрение»: `?refresh=0` polling НЕ выключает (morda.ts:99 `Number(...) || cfg.refreshMs` — 0 falsy → дефолт 5000; предсуществующий, из 6e64582c, не регрессия фикса; фикс однострочный null-check). Репорт: `victor/sched/.agents/inbox/2026-08-17T10-39-00Z-admin-fnf-r3-ui-autorefresh-retest.md`._
|
||||
_Updated: 2026-08-17 — 🟢 **[sched-fnf-r3-cache-headers] ACCEPTED.** sched починил отсутствие Cache-Control (core 0.22→0.23.0: admin-api JSON/204 no-store + artifact-proxy no-cache; ui 0.1.8→0.1.9: serve bundle no-store + /api/* прокси no-cache; daemon 0.1.15→0.1.16, comm 3352edb). Перепроверил вживую против собранных dist (поднял admin-api+serve, curl -D): bundle→no-store ✅, serve-proxy /api→no-cache ✅, admin /health+/runs+4xx+trigger→no-store ✅, DELETE 204→no-store ✅ (на существующем ране), artifact-proxy→no-cache ✅. Сьют 464 ✓ (29 файлов; 2 unhandled-warning — известный Lit class-field, не регресс). Версии совпали с опубликованными (core 0.23.0/ui 0.1.9/daemon 0.1.16). Закрывает вчерашние «залипшие running» без Ctrl+F5. Репорт: `victor/sched/.agents/inbox/2026-08-17T08-31-30Z-admin-fnf-r3-cache-headers-retest.md`. Остаток (visibilitychange/refetch-on-focus) — опционально, не блокер._
|
||||
@@ -1766,10 +1768,10 @@ Cutover DNS уже сделан (07-02) — тут только смена об
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [sched-fnf-02-docker-runner] — F&F-тест sched №2 (после приёмки №1): docker runner — периодический one-shot контейнер. Раз в 6ч запускать контейнер с read-only проверкой (например alpine du -sh по каталогу через bind-mount, или rclone stat бакета variant-cache на MinIO), результат/алерт — в ntfy-топик sched-fnf. Учит: docker runner (доки 06.runners/02.docker.md), image allowlist, exit codes, retries. Косяки доки/кода — репортить в inbox victor/sched сразу, не чинить.
|
||||
## 🟢 [sched-fnf-02-docker-runner] — F&F-тест sched №2 (после приёмки №1): docker runner — периодический one-shot контейнер. Раз в 6ч запускать контейнер с read-only проверкой (например alpine du -sh по каталогу через bind-mount, или rclone stat бакета variant-cache на MinIO), результат/алерт — в ntfy-топик sched-fnf. Учит: docker runner (доки 06.runners/02.docker.md), image allowlist, exit codes, retries. Косяки доки/кода — репортить в inbox victor/sched сразу, не чинить.
|
||||
|
||||
**Status:** ready
|
||||
**Where I stopped:** (не начато) — письмо-приёмка №1 в .agents/inbox/ (sched-fnf-01-accepted)
|
||||
**Status:** 🟢 done
|
||||
**Where I stopped:** (закрыто как дубль — работа принята в основном 🟢-блоке, F&F цикл закрыт 2026-08-16)
|
||||
**Next action:** прочитать docs/content/docs/06.runners/02.docker.md; собрать задачу runner=docker (one-shot контейнер, read-only проверка → ntfy); прогнать; проверить run history + exit codes/retries; репорт в inbox victor/sched (коммит в .agents/inbox/)
|
||||
**Branch:** n/a
|
||||
**Notify:** victor/sched
|
||||
@@ -1777,10 +1779,10 @@ Cutover DNS уже сделан (07-02) — тут только смена об
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [sched-fnf-03-async-poll] — F&F-тест sched №3 (после приёмки №2): async/poll протокол. Свой мини-воркер-эндпоинт (HTTP): принимает задачу (202 accepted + statusUrl), завершает через N секунд; sched-задача в envelope-режиме http-runner поллит statusUrl до терминального статуса. Проверить: историю ранов (queued → running → succeeded), контракт PollResult; опционально — poll-timeout кейс (воркер, который не завершается, на embedded-движке с коротким pollTimeoutMs). Учит: 06.runners/01.http.md (envelope mode), 05.protocol.md, poll-цикл движка. Косяки доки/кода — репортить в inbox victor/sched сразу, не чинить.
|
||||
## 🟢 [sched-fnf-03-async-poll] — F&F-тест sched №3 (после приёмки №2): async/poll протокол. Свой мини-воркер-эндпоинт (HTTP): принимает задачу (202 accepted + statusUrl), завершает через N секунд; sched-задача в envelope-режиме http-runner поллит statusUrl до терминального статуса. Проверить: историю ранов (queued → running → succeeded), контракт PollResult; опционально — poll-timeout кейс (воркер, который не завершается, на embedded-движке с коротким pollTimeoutMs). Учит: 06.runners/01.http.md (envelope mode), 05.protocol.md, poll-цикл движка. Косяки доки/кода — репортить в inbox victor/sched сразу, не чинить.
|
||||
|
||||
**Status:** ready
|
||||
**Where I stopped:** (не начато) — письмо-приёмка №2 в .agents/inbox/ (sched-fnf-02-accepted)
|
||||
**Status:** 🟢 done
|
||||
**Where I stopped:** (закрыто как дубль — работа принята в основном 🟢-блоке, F&F цикл закрыт 2026-08-16)
|
||||
**Next action:** прочитать docs 06.runners/01.http.md (envelope mode) + 05.protocol.md; написать мини-воркер (accepted + statusUrl + отложенное завершение); собрать задачу с envelope:true; прогнать; проверить queued→running→succeeded и poll-историю; опционально timeout-кейс; репорт в inbox victor/sched (коммит в .agents/inbox/)
|
||||
**Branch:** n/a
|
||||
**Notify:** victor/sched
|
||||
@@ -1788,10 +1790,10 @@ Cutover DNS уже сделан (07-02) — тут только смена об
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [sched-fnf-04-embedded-alerts] — F&F-тест sched №4 (финальный, после приёмки №3): embedded-режим без daemon. Один Node-скрипт: createEngine + createInternalRunner + createSqliteStorage + syncTasks (внутренний хендлер в процессе). Реальная проверка из твоей инфры: свежесть бэкапов (возраст последнего снапшота/бэкап-файла — kreknin или бэкап-каталог, SSH/локально на выбор), если stale → алерт через createAlerts (ntfy basic user+password теперь поддержан, или email). Retries (maxAttempts/backoff) на транзиентные ошибки. Учит: 02.quick-start §1 (embedded), 06.runners/04.internal.md, 03.tasks.md (retry), 11.self-hosting.md (alerts/onRunFinal). Косяки доки/кода — репортить в inbox victor/sched сразу, не чинить.
|
||||
## 🟢 [sched-fnf-04-embedded-alerts] — F&F-тест sched №4 (финальный, после приёмки №3): embedded-режим без daemon. Один Node-скрипт: createEngine + createInternalRunner + createSqliteStorage + syncTasks (внутренний хендлер в процессе). Реальная проверка из твоей инфры: свежесть бэкапов (возраст последнего снапшота/бэкап-файла — kreknin или бэкап-каталог, SSH/локально на выбор), если stale → алерт через createAlerts (ntfy basic user+password теперь поддержан, или email). Retries (maxAttempts/backoff) на транзиентные ошибки. Учит: 02.quick-start §1 (embedded), 06.runners/04.internal.md, 03.tasks.md (retry), 11.self-hosting.md (alerts/onRunFinal). Косяки доки/кода — репортить в inbox victor/sched сразу, не чинить.
|
||||
|
||||
**Status:** ready
|
||||
**Where I stopped:** (не начато) — письмо-приёмка №3 в .agents/inbox/ (sched-fnf-03-accepted)
|
||||
**Status:** 🟢 done
|
||||
**Where I stopped:** (закрыто как дубль — работа принята в основном 🟢-блоке, F&F цикл закрыт 2026-08-16)
|
||||
**Next action:** прочитать docs 02.quick-start §1 (embedded) + 06.runners/04.internal.md + 03.tasks.md (retry) + 11.self-hosting.md (alerts); написать embedded-скрипт (внутренний хендлер: проверка свежести бэкапа; retries; createAlerts на onRunFinal); прогнать happy path + stale-кейс; репорт в inbox victor/sched (коммит в .agents/inbox/)
|
||||
**Branch:** n/a
|
||||
**Notify:** victor/sched
|
||||
@@ -1799,9 +1801,9 @@ Cutover DNS уже сделан (07-02) — тут только смена об
|
||||
|
||||
---
|
||||
|
||||
## 🟡 [sched-fnf-round2-docs-review] — F&F sched раунд 2: ревью доков после storage-сплита (core 0.13.0, адаптеры 0.1.0). Проверено живьём (стенд .admin/.tmp/sched-r2/): 3 косяка в репорт — (1) @sched/core/storage-contract subpath нерабочий (vitest не в deps core, ERR_MODULE_NOT_FOUND), (2) quick-start §1 embedded-пример на CJS против ESM-only пакета (мёртв с первой команды), (3) §2.4 обещает result {greeting}, legacy http-runner отдаёт result:null. Мелочи: CLI игнорит неизвестные флаги; sched shim в git-bash сломан. Гладкое: storage-сплит чистый, MySQL-адаптер живьём против MySQL 8.4, 13.ui delete/токен-бокс, --poll-timeout. Репорт: victor/sched/.agents/inbox/2026-08-16T17-40-09Z-admin-fnf-round2-review.md.
|
||||
## 🟢 [sched-fnf-round2-docs-review] — F&F sched раунд 2: ревью доков после storage-сплита (core 0.13.0, адаптеры 0.1.0). Проверено живьём (стенд .admin/.tmp/sched-r2/): 3 косяка в репорт — (1) @sched/core/storage-contract subpath нерабочий (vitest не в deps core, ERR_MODULE_NOT_FOUND), (2) quick-start §1 embedded-пример на CJS против ESM-only пакета (мёртв с первой команды), (3) §2.4 обещает result {greeting}, legacy http-runner отдаёт result:null. Мелочи: CLI игнорит неизвестные флаги; sched shim в git-bash сломан. Гладкое: storage-сплит чистый, MySQL-адаптер живьём против MySQL 8.4, 13.ui delete/токен-бокс, --poll-timeout. Репорт: victor/sched/.agents/inbox/2026-08-16T17-40-09Z-admin-fnf-round2-review.md.
|
||||
|
||||
**Status:** paused
|
||||
**Status:** 🟢 done
|
||||
**Where I stopped:** DONE (2026-08-16) — ревью отправлено (17:40Z). 3 косяка + 2 мелочи. **Дополнение 17:48Z — критичный баг UI sched-runs**: статусы врут (сдвиг на 1 при обновлении списка, не-keyed Lit + sched-status не перерисовывается по атрибуту); воспроизведено 11/17 строк; репорт `victor/sched/.agents/inbox/2026-08-16T17-48-12Z-admin-fnf-round2-ui-status-bug.md`. **Перепроверка 18:08Z**: 5/5 фиксов core 0.14.0/daemon 0.1.5 приняты (contract subpath без vitest, embed.mjs ESM, legacy result {greeting}, CLI strict, git-bash shim); UI status-desync ЖИВ (33/50 строк) — письмо `2026-08-16T18-08-55Z-admin-fnf-round2-recheck.md`, ждём фикс. **ФИНАЛ 18:39Z**: UI-фикс подтверждён на @sched/ui 0.1.3 (keyed list, 0/50 после 4 сдвигов); 0.1.2 ушёл со stale-dist (md5==0.1.1, их гоча снова выстрелила; prepack 75dd146 закрывает). Раунд 2 полностью закрыт.
|
||||
**Next action:** ждать приёмки/фиксов sched → перепроверить по пингу.
|
||||
**Branch:** n/a
|
||||
|
||||
Reference in New Issue
Block a user