fix(course): правки по итогам слепого ревью лаб 07/08 (#22)
Зачем: два слепых ревью (Codex CODE-1..9, Claude TASK-1..2) и перепроверки нашли дефекты в лабах и метадоках; финал лабы 08 переделан по решению пользователя. Что: - канонический сброс в README курса теперь снимает DAG'и с паузы (все создаются на паузе); - имя дашборда исправлено на «E-commerce Analytics Dashboard»; - финал лабы 08: вместо мифа «users == sessions на статике» — вернувшийся пользователь через границу заморозки и измеренное обещание свежести; §2 велит записать границы и время (§6 их требует); - CONTEXT.md: эталонный мир — замороженный живой, 4 056 пользователей / 26 083 визита, возвраты уже есть; - уроки 5–6 ведут в обязательный маршрут, живое упражнение урока 5 требует канонический сброс; - контрактные тесты: убран якорь на удалённую команду; добавленные на триаже тесты-цитаты срезаны до устойчивых инвариантов (прозаический легаси-жанр — issue #24); - handoff обновлён до текущего состояния. Проверка: make test (219 generator + 31 contract) и make lint зелёные; SQL вернувшегося пользователя проверен на эфемерном ClickHouse 25.1 (на полном наборе — в #23). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,50 +1,68 @@
|
||||
# Handoff: редизайн лаб курса (issue #7)
|
||||
|
||||
Дата: 2026-07-23. Ветка: `feature/course-labs-redesign` (создана, коммитов нет).
|
||||
Одноразовый документ для продолжения работы в новой сессии (ADR-0003).
|
||||
Обновлено: 2026-07-23, после ревью-цикла. Ветка `feature/course-labs-redesign`.
|
||||
Одноразовый документ для продолжения в новой сессии (ADR-0003).
|
||||
|
||||
## Состояние
|
||||
|
||||
Работа идёт по плейбуку `/claude-subagent-playbook` (оркестратор Claude,
|
||||
исполнитель Codex, слепые ревью). Пройдено:
|
||||
Конвейер `/claude-subagent-playbook`; спека принята:
|
||||
`docs/specs/2026-07-23-course-labs-redesign.md`. Разбиение — дочерние
|
||||
тикеты #21 → #22 → #23 (один PR закроет всё, родитель #7).
|
||||
|
||||
1. **Аудит курса против стенда** — субагентом; отчёт (EN):
|
||||
`/tmp/claude-1000/-home-dementev-sources-clickstream-ch-kafka-superset-demo/28f16040-6abd-4d92-a5b1-71ffd4ebcb99/scratchpad/audit-course-vs-stand.md`
|
||||
(при потере scratchpad не критично: главное перенесено в спеку).
|
||||
2. **Штурм педагогики лаб** с пользователем (`/brainstorm-with-docs`);
|
||||
конспект решений (EN): тот же каталог, `brainstorm-labs-design.md`.
|
||||
3. **Спека написана** — `docs/specs/2026-07-23-course-labs-redesign.md`
|
||||
(источник истины: маршрут, ядра лаб 07/08, вердикты по урокам 0–6 и
|
||||
метадокам, границы, проверка). Ещё НЕ закоммичена.
|
||||
- #21 (каркас + уроки 0–6) — сделан, коммит `cc1cffe`, тикет закрыт.
|
||||
- #22 (лабы 07/08 + метадоки) — сделан, коммит `1dd79a3`, тикет закрыт.
|
||||
- Слепые ревью полного диффа: Codex (CODE, 9 находок) + Claude (TASK, 2).
|
||||
Триаж: всё починено; CODE-4 закрыт решением пользователя — финал лабы
|
||||
08 переделан («вернувшийся пользователь через границу заморозки» в
|
||||
правке + измеренная свежесть и обещание потребителю в финале),
|
||||
CONTEXT.md поправлен (эталонный мир уже содержит возвраты:
|
||||
4 056 users / 26 083 visits).
|
||||
- Семь хрупких тестов-цитат, добавленных Codex на триаже, срезаны
|
||||
Опусом до устойчивых инвариантов (1 оставлен / 2 ослаблены /
|
||||
4 удалены). Урок зафиксирован в lessons.md скилла и памяти проекта
|
||||
(claude-reviews-code-meaningfulness); чистка легаси-жанра — issue #24.
|
||||
- Перепроверки: Codex — все 9 закрыты, но 2 новые MINOR:
|
||||
CODE-10 (прибитый якорь `make clean` в старом тесте — решение: увести
|
||||
в #24, в ветке не трогать) и CODE-11 (финал лабы 08 требует замеров,
|
||||
которые §2 не велел записывать — чинить Codex-исполнителю).
|
||||
Claude-перепроверка (TASK + taste-линза) — RECHECK_OK, новых дефектов
|
||||
нет. CODE-10 увезён комментарием в #24; починка CODE-11 отправлена
|
||||
Codex-исполнителю (resume треда триажа) — если отчёта
|
||||
`$D/code11-result.md` нет, проверить логи `$D/code11-*.jsonl`.
|
||||
- Правки после ревью НЕ закоммичены (7 файлов в дереве).
|
||||
|
||||
## Ключевые решения (детали — в спеке)
|
||||
## Обменный каталог прогона ($D)
|
||||
|
||||
- Один PR на всю работу; дочерних issues нет, #7 — единственный.
|
||||
- Урок 6 (Superset) становится обязательным; лабы 07 (next-day) и
|
||||
08 (continue) — обязательные, после урока 6.
|
||||
- Сброс для лаб и всего курса: чистый стенд + повторный `import`.
|
||||
- Цифры уроков сверяются на живом стенде после `import` (финальный шаг).
|
||||
`/tmp/claude-1000/-home-dementev-sources-clickstream-ch-kafka-superset-demo/28f16040-6abd-4d92-a5b1-71ffd4ebcb99/scratchpad/review-branch/`
|
||||
— вердикты, отчёты, промпты. Треды Codex: исполнитель #22 и триаж —
|
||||
`019f8e80-53c9-7b51-bb0b-29c375e1c646`; ревьюер CODE —
|
||||
`019f8e8d-78a8-71e1-8f89-697799bec7e8`.
|
||||
|
||||
## Следующие шаги (конвейер плейбука)
|
||||
## Следующие шаги
|
||||
|
||||
1. ▶ **Адверсарное ревью спеки** — Claude-субагент (deep-reasoner, без
|
||||
контекста оркестратора), проверка спеки против кода/доков; вердикт
|
||||
файлом в scratchpad. Этап «постановка» — самый дорогой для тихой
|
||||
ошибки.
|
||||
2. Триаж находок → правки спеки → коммит спеки в ветку
|
||||
(`/conventional-commits`, docs(course)).
|
||||
3. Обновить issue #7: ссылка на спеку + чек-лист шагов.
|
||||
4. Самодостаточный файл-задача для Codex (EN, в scratchpad) → реализация
|
||||
`codex exec` фоном → саморевью → два слепых ревью кода → триаж →
|
||||
сверка цифр на живом стенде → один PR.
|
||||
1. Дождаться вердикта Claude-перепроверки; CODE-11 → исполнителю
|
||||
(resume треда триажа), CODE-10 → комментарием в #24.
|
||||
2. Коммит правок ревью (docs + CONTEXT.md + тесты) по
|
||||
`/conventional-commits`; обновить handoff.
|
||||
3. #23 — сверка цифр на живом стенде: поднять стенд (докер пользователя!),
|
||||
`import` + двойной `world_next_day` (детерминизм), переходящий визит,
|
||||
вернувшийся пользователь, сценарий лабы 08, замена всех маркеров
|
||||
`<!-- сверить-на-стенде -->`, `/ai-text-lint` по лабам, ссылки,
|
||||
`make test`/`make lint`.
|
||||
4. Финал: чекбоксы в #7 (fast-worker'ом), один PR, уборка обменного
|
||||
каталога.
|
||||
|
||||
## Решения пользователя этого прогона
|
||||
|
||||
- Урок 6 обязателен; обе лабы обязательны (уже в спеке).
|
||||
- Финал лабы 08: синтез «вернувшийся пользователь» (в правке) +
|
||||
«обещание свежести» (в финале); users==sessions на статике — миф для
|
||||
эталонного мира.
|
||||
- Taste-линза: Claude-ревьюер судит осмысленность кода Codex; срезание
|
||||
бессмысленного кода — Опусом (в памяти проекта).
|
||||
|
||||
## Подсказки для агента
|
||||
|
||||
- Скиллы: `/claude-subagent-playbook` (рабочий конвейер),
|
||||
`/conventional-commits` (коммит), `/ai-text-lint` (тексты уроков перед
|
||||
финалом — требование LESSON_STANDARD §2).
|
||||
- Память проекта: субагентам модель/effort задавать явно; фоновым
|
||||
запускам — ScheduleWakeup-подстраховка; о каждом запуске сообщать
|
||||
пользователю (этап + чего ждём).
|
||||
- Пользователь планирует `/compact` после ревью спеки — вся фактура
|
||||
должна жить в файлах, не в контексте.
|
||||
- Скиллы: `/claude-subagent-playbook`, `/conventional-commits`,
|
||||
`/ai-text-lint`. Модель/effort субагентам — явно; фоновым запускам —
|
||||
ScheduleWakeup-подстраховка; о запусках сообщать пользователю.
|
||||
|
||||
Reference in New Issue
Block a user