Files
clickstream-ch-kafka-supers…/.scratch/handoffs/20260722-2222-mentee-path-issue5-midflight.md
T
ddadminandClaude Fable 5 ceb30a95c0 docs(scratch): handoff дополнен дельтой — триаж #5 в полёте, владелец задачи
- Зачем:
  - пользователь делает compaction прямо сейчас; свежие детали конвейера
    ещё нигде не были записаны.
- Что:
  - дельта: вердикт линии A, запуск триаж-раунда, владелец дерева —
    задача Codex mrwhhml9, остановленный дубль и как проверить дерево.
- Проверка:
  - чтение раздела «Дельта 23:45» свежим взглядом.

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

7.4 KiB
Raw Blame History

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; слияние ветки обсудить с пользователем.

Дельта 23:45 (после написания handoff)

  • Линия A закончила: CHANGES_REQUESTED, TASK-1 (MAJOR) == CODE-1. Вердикт сохранён в .scratch/issue5-run/review-issue5-task.md (файл отчёта ревьюеру не дала записать read-only-песочница).
  • Запущен триаж+фикс-раунд у исполнителя. Постановка: .scratch/issue5-run/… нет — триаж-файл только в scratchpad сессии: triage-issue5.md (скопировать в issue5-run при следующей правке).
  • Владелец рабочего дерева — задача Codex task-mrwhhml9-6dhovo (jobs-каталог плагина, см. выше). Случайный дубль task-mrwhilcm-qed4rr остановлен kill'ом через ~2 мин работы — после завершения владельца проверить дерево: make test и связность «Triage round 1» в report-issue5.md; при мусоре — свежий исполнитель от сохранённых отчётов, дерево не откатывать вслепую.
  • Пустая задача task-mrwhgn0z — хвост старого курьера, игнорировать.
  • Урок курьера: promt в задачу Codex иногда не доезжает — проверять request в JSON задачи сразу после старта.

Уроки приёмки этой сессии (сэкономят круги)

  • 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 — коммиты.