docs(handoff): F&F daemon-image closed — session end

This commit is contained in:
2026-08-22 11:25:39 +03:00
parent da97d25c8b
commit ba1df08318

View File

@@ -1,66 +1,38 @@
--- ---
_last_updated_: 2026-08-21T23:35:00Z _last_updated_: 2026-08-22T08:25:11Z
session_id: fnf-daemon-image-2026-08-21 session_id: fnf-daemon-image-2026-08-21
--- ---
# Next session handoff # Next session handoff
Сессия: **F&F-лестница `daemon-npm-image-storage` — 7/7 PASS** (письмо sched 23:12Z).
Отчёт отправлен: `sched/.agents/inbox/2026-08-21T23-27-41Z-admin.md`. Находки для sched:
**F1** `deploy/tasks.json` на старом ключе `schedule` → документированный `docker compose -f docker-compose.dev.yml up --build` падает на daemon 0.10.0;
**F2** рецепт производного образа в 13.self-hosting не собирается без `ARG VERDACCIO_TOKEN` (YN0041 anonymous), а при --build-arg токен светится в image history (рекомендовано BuildKit secret — моя сборка 0 вхождений).
Ждём их ack/фиксы. Стенд: `.tmp/fnf-daemon-image/` (Dockerfile.mongo, my-storage.mjs, tasks.json), mongo-стенд возвращён в исходное.
**АПДЕЙТ 23:41Z — F&F ЗАКРЫТ**: их письмо 23:40Z (e755b52, daemon 0.10.1) — все три фикса + нота. Мой ретест на 0.10.1 зелёный (F1/F2/N2 живьём + регресс 1/2/3/5), акцепт отправлен. Трек ниже — закрыт.
## Recent commits (эта сессия)
- .admin — STATUS.md: sched-fnf-daemon-image-storage F&F 7/7 PASS + находки F1/F2/N1/N2
## Предыдущая сессия (мок-кампания, контекст)
Сессия: **мок-кампания финализирована**оба пира зелёные (0.1.0 publish), идемпотентность
подтверждена, кейс «спека изменилась → 0.2.0» проверен симуляцией на обоих воркерах и
откачен. Стенд в состоянии «0.1.0 published, повторные раны noop». Осталось: реальный
деплой (за отмашкой юзера).
## Recent commits ## Recent commits
- .admin `da97d25c` docs(tasks): F&F daemon-image closed — fixes accepted (0.10.1)
- .admin `6fdb9b51` docs(tasks): F&F daemon-image 7/7 PASS + findings F1/F2
- .admin `aa88f538` docs(handoff): сессия 0.2.0-симуляция завершена (предыдущая сессия)
- .admin `2f820d25` meta(tasks): **sched-vds-deploy → 🟡 paused** (решение vitya: ждём результатов миграции books→sched, phase-3) ## F&F daemon-npm-image-storage — ЗАКРЫТ (эта сессия)
- .admin `7a3b73c0` chore(stand): кейс спека→0.2.0 проверен симуляцией + откат (handoff-апдейт) Лестница **7/7 PASS** + фиксы sched (commit e755b52, daemon **0.10.1**, digest `269093a08f6e…`) приняты после ретеста затронутых поверхностей (F1/F2/N2 живьём + регресс ступеней 1/2/3/5 — без изменений). Письма: отчёт `2026-08-21T23-27-41Z-admin.md`, акцепт `2026-08-21T23-41-30Z-admin.md` (sched/.agents/inbox, gitignored file-drop). Стенд: `.tmp/fnf-daemon-image/` (gitignored): Dockerfile.mongo (0.10.0), Dockerfile.doc-recipe-v2 (0.10.1, как в доках), my-storage.mjs, my-storage-bad.mjs, tasks.json. Дальше — sched/books сами.
## Состояние мок-стенда (sched-pipelines local)
- Раны этой сессии: ozon `689637b3` ✅ publish **0.1.0** (бутстрап, state был сброшен), yandex `d404ac80` ✅ outcome **published**; повторные `7f982865`/`7cbf1d67`**noop**
- **Кейс 0.2.0 проверен симуляцией**: обоим воркерам подложен апстрим-апдейт с `GET /v1/echo` (ozon — снапшот `snapshots/2026-08-21/`, yandex — локальный mock-репо `data-ym/upstream-mock`, tasks.json `repo=/app/data/upstream-mock`). Оба независимо: publish **0.2.0** → verdaccio `@apilki/*@0.2.0` (0.1.0 в истории), gitea `v0.2.0` на 4 репо, README-штамп `Версия: 0.2.0 · API от 2026-08-21`. **Единообразие алгоритмов подтверждено живьём** (оба: спека→minor, рецепты→patch, ref publish-model.md; ozon хэширует один файл, yandex — дерево).
- **Откат**: снапшот 2026-08-21 удалён, upstream-mock удалён, tasks.json repo → реальный github, clone пересоздан с реального апстрима `6be0108668e6`, state восстановлен из `*.bak-2026-08-21` (оба 0.1.0). Контрольный ран: **noop у обоих**
- Остатки: `data-ozon/state.json.bak-2026-08-21` untracked (мусор, можно gitignore'нуть `*.bak` в data-*).
## Open треки ## Open треки
| Трек | Готовность | Entry-point | | Трек | Готовность | Entry-point |
|---|---|---| |---|---|---|
| ~~sched F1/F2~~ (deploy/tasks.json формат + док-рецепт токена) | ✅ закрыт 2026-08-21 (e755b52/0.10.1, акцепт 23:41Z) | — | | Реальный деплой apilki (npmjs + github.com) | ждёт отмашки | «Спроси user'а» |
| Реальный деплой (npmjs + github.com) | ждёт отмашки | NEXT_SESSION «Спроси user'а» | | sched-vds-deploy | 🟡 paused | ждёт результатов миграции books→sched (phase-3) |
| sched-vds-deploy | 🟡 paused | .tasks/STATUS.md — ждёт результатов bookssched | | books миграция на sched | в процессе | victor/books `sched-migration-phase-3` (blocked), victor/sched `books-sched-integration` (paused) |
| books миграция на sched | в процессе | victor/books `sched-migration-phase-3` (blocked до закрытия phase-3), victor/sched `books-sched-integration` (paused) | | sched-pipelines-local-stack | Status: active в STATUS.md; по handoff предыдущей сессии кампания финализирована (0.1.0 published, повторные раны noop) → кандидат на закрытие (предложено в ритуале) | .tasks/STATUS.md |
## Спроси user'а ## Спроси user'а
- **Реальный деплой apilki-билдеров**: npmjs + github.com (не мок). Требует отмашки + настоящие NPM_TOKEN/GITHUB_TOKEN (в pass). Не гонять без явной команды.
- **Реальный деплой**: npmjs + github.com (не мок). Требует отмашки + настоящие NPM_TOKEN/GITHUB_TOKEN (в pass). Юзер: «по результатам решим» (в контексте sched-vds-deploy); про реальный деплой apilki-билдеров отмашки не было. Не гонять без явной команды. - (F&F daemon-image — закрыт, вопросов нет)
- (нет на этом раунде)
## Не делать (preemptive guards) ## Не делать (preemptive guards)
- Не запускать реальный publish в npmjs/github.com без явной отмашки. - Не запускать реальный publish в npmjs/github.com без явной отмашки.
- **sched-vds-deploy не запускать** — paused по решению vitya (2026-08-21), ждём миграцию books→sched. - **sched-vds-deploy не запускать** — paused по решению vitya (2026-08-21), ждём миграцию books→sched.
- Не писать токены в git/handoff/письма (secrets rule: только pass). ⚠️ В tasks.generated.json живёт токен в PUBLISH_REMOTE_BASE — gitignored, не коммитить. - Не писать токены в git/handoff/письма (secrets rule: только pass). ⚠️ tasks.generated.json с токеном — gitignored, не коммитить.
- Не лезть в код агентов самим (юзер: «ты сам в код не лезь») — фиксы через режект-письма; исключение — стенд-конфиг (.admin). - Не лезть в код агентов самим (юзер: «ты сам в код не лезь») — фиксы через режект-письма; исключение — стенд-конфиг (.admin).
- Не трогать `llm-router-failover-proxy` (юзер закрыл 2026-08-18). - Не трогать `llm-router-failover-proxy` (юзер закрыл 2026-08-18).
## Memory updates за сессию ## Memory updates за сессию
- **Кандидат на shared-wiki ingest**: verdaccio-токен в производных docker-образах — BuildKit secret, не ARG (ARG → JWT в `docker history`, воспроизведено на schedd-mongo 0.10.0); `npmMinimalAgeGate: 0` обязателен для yarn 4.18 против verdaccio (нет publish-time метаданных). Касается books T2-паттерна (FROM + yarn add + env) и любых композиций поверх @sched/*.
- **publish-model подтверждён живьём**: спека→minor (0.1.0→0.2.0), рецепты→patch (0.1.0→0.1.1), старт 0.1.0 без бампа, noop при отсутствии изменений. Оба воркера идентичны. - **Кандидат на shared-wiki ingest**: Windows git-bash + docker run — нужен `MSYS_NO_PATHCONV=1` (иначе POSIX-пути манглятся в `C:/Program Files/Git/…``unable to open database file`). sched задокументировал в 13.self-hosting.
- **Кандидат на wiki-ingest (shared)**: паттерн «симуляция апстрим-апдейта в мок-стенде» — подложить снапшот (ozon) / локальный git-апстрим (yandex, fetch.js принимает локальный путь) + откат (restore state из .bak + контрольный noop-ран). Не заингещено — предложить юзеру. - (прошлая сессия, не заингещено): паттерн «симуляция апстрим-апдейта в мок-стенде»; «мок не зеркалит прод-контракт» (3 случая).
- **Кандидат (из прошлой сессии, не заингещено)**: «мок не зеркалит прод-контракт» — 3 случая (readFile, fetch-Response .body, npm cwd/.npmrc) → concepts/mock-must-mirror-prod-contract.
- Бонус-наблюдение: поллер синхронизирует доску (meta-коммиты sched-vds-deploy 10:3211:30Z) — при пуше .admin бывает не-fast-forward, тянуть `--ff-only` после stash.