docs(scratch): handoff — триаж #5 закрыт, ревью APPROVED, идёт приёмка

- Зачем:
  - зафиксировать состояние конвейера #5 перед долгой живой приёмкой,
    чтобы новая сессия продолжила без потери контекста.
- Что:
  - в handoff добавлена дельта 23:10: обе находки FIXED (фрагменты ID
    с SHA-256-цепочкой), перепроверка линией B — APPROVED;
  - обновлено состояние стенда: им владеет сценарий приёмки;
  - в .scratch/issue5-run добавлены свежие отчёты, перепроверка и
    сценарий приёмки acceptance-issue5.sh.
- Проверка:
  - git show --stat; лог приёмки — до строки SCRIPT_EXIT_CODE=.
This commit is contained in:
2026-07-22 23:11:44 +03:00
parent ceb30a95c0
commit f4971e94ca
10 changed files with 803 additions and 3 deletions
@@ -67,6 +67,35 @@
- Урок курьера: promt в задачу Codex иногда не доезжает — проверять
`request` в JSON задачи сразу после старта.
## Дельта 23:10: триаж закрыт, ревью пройдено, идёт живая приёмка
- **Триаж-раунд #5 завершён, обе находки FIXED** (детали — «Triage round 1»
в `.scratch/issue5-run/report-issue5.md`):
- CODE-1/TASK-1: точные множества ID вынесены из manifest в цепочку
контент-адресуемых фрагментов (≤10 000 ID, SHA-256-цепочка, отдельный
компактный топик `generator_startup_history_counter_chunks`); manifest
ужался до 3 КБ, максимальный фрагмент 282 КБ при явном пределе 900 КБ
с русской ошибкой; next-day пишет только новые фрагменты — O(нового дня).
- CODE-2: порядок записи всюду фрагменты → manifest → state, закреплён
тестом.
- Дерево после убитого дубля проверено координатором: `make test` — 0,
216+31 зелёные.
- **Узкая перепроверка линией B (свежий Opus): APPROVED**, отчёт —
`.scratch/issue5-run/recheck-issue5-code.md`. Некритичное (Low): топик
фрагментов пока write-only, читателя нет — проверка хеш-цепочки при
чтении не задействована. Не блокер; упомянуть в коммите/доке или
завести фоновый issue.
- **Живая приёмка #5 запущена** ~23:02: сценарий
`.scratch/issue5-run/acceptance-issue5.sh` (лог — в скретчпаде сессии,
`acceptance-issue5.log`, конец отмечен строкой `SCRIPT_EXIT_CODE=`).
Чистый стенд → лестница → импорт (прошёл за ~4 мин) → три замеренных
прогона `world_next_day` (критерий: плоское время) →
`make generated-history-chain-check`. Работает отвязанным процессом
(setsid/nohup), переживёт сессию.
- После зелёной приёмки: коммит #5 (conventional, русский,
Зачем/Что/Проверка), закрыть #5 с доказательствами, затем корень #9,
слияние ветки обсудить с пользователем.
## Уроки приёмки этой сессии (сэкономят круги)
- REST API Airflow на стенде — только session-auth: живую приёмку водить
@@ -84,9 +113,10 @@
## Состояние стенда
После приёмки #4: мир 5 дней (эталонные 3 + два плановых прогона),
`world_next_day` возвращён на паузу. Для приёмки #5 стенд всё равно
чистить (`make clean`).
С 23:02 стендом владеет сценарий приёмки #5 (см. дельту 23:10): он сам
сделал `make clean`, поднял стенд и гоняет прогоны; в конце вернёт
`world_next_day` на паузу. До строки `SCRIPT_EXIT_CODE=` в логе стенд
руками не трогать.
## Остальной трекер (не трогать)