Зачем: тикет #23 — каждое цитируемое число курса сверено с живым
стендом; до этого в уроках стояли заглушки.
Что:
- уроки 00–04: 18 маркеров заполнены числами свежего импорта
(280 437 событий, нули в таблицах ошибок, счётчики ODS/DDS);
- лаба 07: таблица manifest после дня 4 (374 092 / 34 801 / 5 388),
переходящие визиты по стыкам (35/22/26), числа после дня 5;
- лаба 08: каноническая граница трёх дней, пример замера свежести
(лаг 3:45 модельного времени до догона, ETL ~29 с) и вернувшегося
пользователя; две живые поправки разбора времени: убран
принудительный UTC в разборе STG и суффикс +00:00 в сравнении
границы (ловились только на живом стенде).
Проверка: детерминизм подтверждён двумя независимыми циклами
сброс→импорт→инкремент (числа manifest и checksum_sha256 дней 4 и 5
совпали бит в бит); chain-check зелёный; сценарий лабы 08 прогнан
вживую, включая стоп/продолжение и красный full_refresh=false из
урока 4; grep «сверить-на-стенде» пуст; ссылки и якоря целы;
make test (219+31) и make lint зелёные; /ai-text-lint по лабам — без
существенных находок.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Зачем: два слепых ревью (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>
Зачем: два новых режима роста мира не имели уроков, а метадокументы
курса не знали о новом маршруте.
Что: лаба 07 «Следующий день и границы времени» — инкремент дня,
сверка manifest, переходящие визиты запросом в dds.event, включение
расписания на один запуск, цена роста full_refresh; лаба 08 «Живой
поток и свежесть данных» — расслоение свежести слоёв, стоп/продолжение
генератора, users < sessions, врезка про модельное время; LEARNING_PLAN
и README курса согласованы с маршрутом 0–8; в CONTEXT.md починена
ссылка «урок 7» (теперь ведёт на врезку лабы 08). Числа со стенда
помечены маркером «сверить-на-стенде».
Проверка: обе лабы по шаблону LESSON_STANDARD (6 секций, явный «верни
как было»); внутренние ссылки разрешаются; git diff --check чистый.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>