# 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`, 2–3 прогона `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` — коммиты.