Files
clickstream-ch-kafka-supers…/.scratch/handoffs/20260722-2222-mentee-path-issue5-midflight.md
T
ddadminandClaude Fable 5 1252f4a2c0 docs(scratch): handoff — #5 в середине конвейера, известные находки ревью
- Зачем:
  - подстраховать продолжение работы в новой сессии: #5 реализован,
    но не закоммичен, два ревью в полёте.
- Что:
  - новый handoff с состоянием конвейера #5 (CODE-1 High про лимит
    Kafka, порядок триажа) и уроками приёмки этой сессии;
  - отработанный handoff от 20:29 удалён по ADR-0003;
  - обменные файлы прогона #5 скопированы в .scratch/issue5-run/
    (без коммита — локальная копия на случай потери /tmp).
- Проверка:
  - git show --stat HEAD; чтение handoff свежим взглядом.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 22:23:07 +03:00

82 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Handoff: mentee-path, issue #5 в середине конвейера
Дата: 2026-07-22 22:22. Ветка: `feature/mentee-path` (запушена, ac7a973).
Фокус: дожать #5 «Инкрементальные счётчики manifest», затем корень #9.
## Уже сделано (не переделывать)
- **#4 закрыт** коммитом `ac7a973`: пульт → `world_init` (дефолт `import`),
беспараметрный `world_next_day` (`*/30 * * * *`, paused, catchup=False),
доки и контрактные тесты. Живая приёмка пройдена, детали — в
комментарии к issue #4.
- **#5 реализован исполнителем** (Codex, gpt-5.6-sol high), НЕ закоммичен —
лежит в рабочем дереве. Дизайн: счётчики засеваются при `import` из уже
прочитанного артефакта и при `backfill` из потока; `next-day` без
перечитки Kafka; катящаяся сумма = SHA-256 по модулю 2^256
(коммутативна, инкремент == полный пересчёт); артефакт в git не тронут.
`make test` (214+31) и `make lint` зелёные.
## Где мы сейчас: два адверсариальных ревью #5
Обменные файлы прогона скопированы в `.scratch/issue5-run/`
(оригиналы — в scratchpad сессии 0836e970 в /tmp/claude-1000):
мандат, отчёт исполнителя, отчёт линии B, фокус линии A.
- **Линия B (Opus, качество кода) — готова: CHANGES_REQUESTED.**
- CODE-1 (High): manifest хранит точные множества click_id/uid —
уже ~0,81 МБ на эталонном мире; лимит сообщения Kafka 1 МБ нигде
не переопределён → запись manifest упадёт примерно через один
next-day. Болезнь перенесена из чтения в потолок записи.
- CODE-2 (Low): в next-day state пишется раньше manifest (import —
наоборот); окно полупродвинутого стенда шире нужного.
- Математика суммы и legacy-валидация старого артефакта подтверждены.
- **Линия A (Codex, соответствие задаче) — ещё работала** на момент
handoff. Статус задач Codex смотреть в JSON:
`~/.claude/plugins/data/codex-openai-codex/state/clickstream-ch-kafka-superset-demo-*/jobs/*.json`
(поле status/phase). Отчёт линия A пишет в scratchpad сессии:
`review-issue5-task.md` (если появился — скопировать в
`.scratch/issue5-run/`).
## Дальше по конвейеру (договор ревью из скилла codex-subagent-playbook)
1. Дождаться линию A. Оба полных отчёта БЕЗ изменений → исполнителю
(Codex, тот же тред/задача) на пофиндинговый триаж + короткая шапка
координатора (совпадения/противоречия). CODE-1 почти наверняка — смена
представления множеств; НЕ проектировать решение за исполнителя.
2. Фикс-раунд → узкая перепроверка тем же ревьюером (линия B по CODE-1/2).
3. Живая приёмка на чистом стенде: `import`, 23 прогона `world_next_day`
с замером «день N ≈ день 1», `make generated-history-chain-check`.
4. Коммит (conventional, русский, Зачем/Что/Проверка), закрыть #5,
затем корень #9; слияние ветки обсудить с пользователем.
## Уроки приёмки этой сессии (сэкономят круги)
- REST API Airflow на стенде — только session-auth: живую приёмку водить
через `docker compose exec -T airflow-scheduler airflow dags ...`
(unpause/trigger/list-runs — эквивалент кликов UI и пустой формы).
- Webserver поднимается позже парсинга DAG'ов — проверять `/login/`
циклом с ретраями, не одним запросом.
- В `dm.v_events_enriched` колонка даты — `event_date` (не event_time).
- `make superset-init` сам поднимает Superset и создаёт дашборд
(ecommerce-analytics) — отдельный make-шаг не нужен.
- Субагент `codex:codex-rescue` — только пускатель: задачу Codex он не
ждёт; мониторить JSON статуса задачи самому (фоновый bash-цикл).
- Приёмку #4 трижды ронял сам сценарий приёмки, не реализация —
проверять команды сценария на живом стенде до полного прогона.
## Состояние стенда
После приёмки #4: мир 5 дней (эталонные 3 + два плановых прогона),
`world_next_day` возвращён на паузу. Для приёмки #5 стенд всё равно
чистить (`make clean`).
## Остальной трекер (не трогать)
- Карта #10: фронтир #18 «Модель данных» — `/wayfinder 10` свежей сессией.
- #7, #8 ждут решения #18. #1, #2 — фоновые багфиксы UI.
## Suggested skills
- `codex-subagent-playbook` — конвейер #5 (ревью/триаж — по его договору).
- `conventional-commits` — коммиты.