docs(generator): порядок бэклога «пульт вперёд» и граф задач в PRD

- Зачем:
  - узкое место — время человека на ручную приёмку: без DAG-пульта проверять
    миграцию курса пришлось бы через консоль.
- Что:
  - PRD, раздел «Задачи»: номер файла объявлен идентификатором (не порядком),
    порядок задан ветками и mermaid-графом; основная цепочка 07 -> 11 -> 12,
    миграция курса 08 — последней.
  - issue 08: добавлена мягкая зависимость от 12 (приёмка уроков через пульт).
  - handoff триажа: раздел «Следующий шаг» обновлён под новый порядок.
- Проверка:
  - mermaid-диаграмма проверена валидатором Mermaid; статусы задач не менялись.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-04 17:12:13 +03:00
co-authored by Claude Fable 5
parent f59b6d128f
commit ee4c9f5857
3 changed files with 55 additions and 35 deletions
@@ -61,38 +61,51 @@ Status: Draft
## Задачи
1. `issues/01-time-and-startup-history-contract.md` — контракт модельного
времени и стартовой истории.
2. `issues/02-model-time-to-clickhouse.md` — минимальный поток по модельному
времени до ClickHouse.
3. `issues/03-model-speed-and-day-factor.md` — ×K и дневной коэффициент по
модельному времени.
4. `issues/04-state-v2-model-resume.md` — восстановление state v2 от модельной
точки возобновления.
5. `issues/05-startup-history-backfill-to-clickhouse.md` — промотка прошлого,
стартовая история и живое продолжение до ClickHouse.
6. `issues/06-generated-history-as-analytics-source.md` — штатный путь стенда
переводится на стартовую историю как источник аналитики.
Номер в имени файла — просто идентификатор задачи, порядок выполнения он не
задаёт. Порядок и зависимости живут здесь и в секциях «Blocked by» самих задач;
при изменении порядка файлы не переименовываются.
Дополнено по итогам независимого ревью (2026-06-14) и триажа (2026-07-04)
номера отражают рекомендуемый порядок внутри веток зависимостей:
Сделано (ядро фичи, закрыто на триаже 2026-07-04):
7. `issues/07-startup-history-portable-artifact-and-usage-docs.md`
портативный артефакт (импорт через Kafka, не напрямую в ClickHouse),
громкий отказ при несовместимом state, runbook.
8. `issues/08-migrate-course-from-archive-seed.md` — миграция учебных
материалов на генерацию; после задачи 7 (уроки ссылаются на runbook).
9. `issues/09-seam-browser-fixture-not-preserved.md` — дефект: браузерная
фактура не переживает восстановление визита на стыке. Независим, можно
параллельно.
10. `issues/10-dashboard-geo-map-readability.md` — читаемость гео-карты
дашборда. Независим, можно параллельно.
11. `issues/11-generator-launch-verbs-and-profiles.md` — глаголы, длительность
и профили запуска; после задачи 7, до задачи 12.
12. `issues/12-generator-control-dag.md` — Airflow-DAG как пульт генератора;
после задачи 11 (оборачивает глаголы).
13. `issues/13-backfill-top-up-from-snapshot.md` — доливка истории от слепка;
без приоритета, после задачи 9 (доливка тиражирует стыки восстановления).
- `issues/01-time-and-startup-history-contract.md` — контракт модельного
времени и стартовой истории.
- `issues/02-model-time-to-clickhouse.md` — минимальный поток по модельному
времени до ClickHouse.
- `issues/03-model-speed-and-day-factor.md` — ×K и дневной коэффициент по
модельному времени.
- `issues/04-state-v2-model-resume.md` — восстановление state v2 от модельной
точки возобновления.
- `issues/05-startup-history-backfill-to-clickhouse.md` — промотка прошлого,
стартовая история и живое продолжение до ClickHouse.
- `issues/06-generated-history-as-analytics-source.md` — штатный путь стенда
переводится на стартовую историю как источник аналитики.
Остаток — порядок выполнения (решение 2026-07-04: пульт вперёд, потому что
узкое место — время человека на ручную приёмку; тяжелее всего проверять руками
миграцию курса, поэтому она идёт последней, когда пульт уже есть):
- Основная ветка: `issues/07-...` (портативный артефакт + runbook) ->
`issues/11-...` (глаголы, длительность и профили запуска) ->
`issues/12-...` (Airflow-DAG как пульт; после 11 вернуть на дооформление —
сейчас `needs-triage`, критерии писать не к чему, глаголов ещё нет).
- Параллельно, независимы: `issues/09-...` (фикс браузерной фактуры на стыке)
и `issues/10-...` (читаемость гео-карты).
- После фикса 09: `issues/13-...` (доливка истории от слепка; без приоритета,
`needs-triage` — доливка тиражирует стыки восстановления, дооформлять после
фикса).
- Последней: `issues/08-...` (миграция курса на генерацию) — жёстко после 07
(уроки ссылаются на runbook), мягко после 12 (приёмку уроков человек ведёт
уже через пульт).
```mermaid
flowchart LR
i07["07 артефакт + runbook"] --> i11["11 глаголы запуска"]
i11 --> i12["12 DAG-пульт"]
i07 --> i08["08 миграция курса"]
i12 -. "приёмка через пульт" .-> i08
i09["09 фикс стыка"] --> i13["13 доливка"]
i10["10 гео-карта"]
```
## Контрольные точки