Карта исполнения учебной программы. Сама программа принята спекой «Программа учебных лаб»:
состав ступеней, формы заданий и границы вычитания живут там. Карта открыта
резолюцией тикета #203 при закрытии карты проектирования #182.
Пункт назначения
Менти может разобраться в стенде по его документации и пройти основную
программу целиком: у ступеней 2–7 есть ТЗ в docs/labs/, порядок программы
отражен в docs/labs/README.md, стенд дает каждой ступени обратную связь в
форме, названной спекой.
Заметки
Нарезки впрок нет: тикеты появляются здесь по одному, в момент старта
работы. Очередь основной программы живет в спеке и в тикетах не дублируется.
Сессии по карте ведет скилл /wayfinder — звать явно, от автовызова
он закрыт. Тикеты здесь — работа, а не решения: оверрайд его
правила «plan, don’t do», который эти заметки и разрешают.
Первая очередь — учебная документация вокруг стенда: без нее в стенде не
разобраться, а смотреть и учиться можно и до уроков. Направление: базовый
README для менти; архитектура решений глазами учащегося — на что смотреть в
первую очередь и почему так сделано; упор на хранилище и потоки Airflow,
пояснение мониторинга и немного BI. Генератор — только в общих словах: для
менти он источник данных, не предмет обучения.
Форма документации (markdown или HTML, образцы оформления — скилл /teach) и
ее структура — развилка первого тикета, решается веером при старте работы,
не впрок.
Пять готовых ТЗ витрин (ступень 1) выполняются как есть по содержанию:
колонки, ключи, проверки не пересматриваются. Прозу владелец при чтении
забраковал (2026-09-06, тексты Opus): она переписывается по форме ТЗ
ступени 2 (#228), урок в обмен — читаемость.
Учебный материал не вводит законов (владелец, 2026-09-06): цель —
навыки, договоренности стенда («форма по зерну», чтение через _v) —
выбор с доводом, а не правило. ТЗ ступени 1 и раздел правил README лаб
переписываются в этом тоне в #228. Долг вне тикета: справочник docs/architecture/dm.md, «Форма: по зерну, не по цене запроса», подает
договоренность как закон; исправить при следующей правке справочника или
отдельным тонким тикетом, когда до него дойдет очередь.
Кто держит перо: русскую прозу для людей пишет Sol, вкусовые решения —
Fable, техническую беготню — Codex. Документация и ТЗ — главный продукт
карты, правило обязательно для каждой сессии.
Постановка учебной документации стенда: путеводитель — markdown в docs/handbook/ (вход и порядок чтения, главы «глазами учащегося», колонки-ключи уместны); интерактивная карта архитектуры — один самодостаточный HTML, рендер из исходников в той же папке; корневой README получает шапку для менти. Проза — Sol, вкус — Fable, беготня — Codex.
Скелет путеводителя и README-шапка: docs/handbook/ открыт README-входом — тропа чтения и пять аннотированных будущих глав без заглушек; шапка README переписана для менти; правило имен handbook — в AGENTS.md. Влито PR #210.
Пересмотр тела корневого README: README — лицо: промо-блок по образцу airflow-greenplum со ссылкой на de.dementev.space, «куда я попал», типовые действия (в том числе DBeaver), ссылки; обращение «вы», слово «менти» из README и путеводителя уходит. Операторские разделы переезжают в testing.md и новые stand.md и world.md; «Статус», «Что здесь будет», «Предшественник» умирают. Очередь: переезд (#212), затем пересборка README.
Переезд операторских разделов README в справочники: новые docs/architecture/stand.md («Стенд: службы, доступ, настройка», ADR 0001/0007) и docs/architecture/world.md («Мир и его пульт», ADR 0009/0013); доводы смоука и описания целей слиты в testing.md, три дубля умерли; в README под сохраненными заголовками абзацы-ссылки, адреса и пароли на месте; путеводитель и README генератора ведут на world.md. Влито PR #213. Следующий тикет — пересборка README; хвосты для него в резолюции.
Словарь справочников world.md и stand.md: термины и кальки: «пульт мира» → даги модельного времени, «опись мира» → паспорт мира, «работник» → шаговый даг, «сырьё» → сырые данные / сырой слой / STG; имена в коде не тронуты, кроме тега дага. Решение в CONTEXT.md, пометки в ADR 0005/0008/0009, история не переписана. world.md и stand.md вычитаны Sol целиком: 35 находок из 49 внесены. Влито PR #215.
Пересборка корневого README: четыре блока и адресация читателя: README — промо, «куда я попал», типовые действия плоскими разделами (включая DBeaver), «Документация» с семью справочниками; «Быстрый старт» для человека — две команды, проверки роботам. Слово «менти» ушло из README и путеводителя, хвосты #212/#214 закрыты, stand.md и ADR 0007 ведут на «Адреса и пароли». PR #217. Дальше — главы путеводителя (#208).
Глава путеводителя «Хранилище и его слои»: первая глава в docs/handbook/ — путь слоев, правило чтения через _v, таблица ключей, два SELECT; форма — образец следующих глав. README путеводителя открыл раздел «Главы». PR #219. Дальше — глава про потоки Airflow.
Главы путеводителя: потоки Airflow, мониторинг, Superset, генератор: четыре главы docs/handbook/ по скелетам постановки, форма главы о хранилище; сквозная линия — ход мира на день D везет слепок дня D−1. README путеводителя ведет в главы, заглушек нет. PR #221. Дальше — интерактивная карта архитектуры (#208).
Интерактивная карта архитектуры: слои хранилища и путь данных: один самодостаточный docs/handbook/architecture-map.html, исходники в architecture-map/, рендер проверяет make lint; 17 узлов, 17 стрелок, три механизма переноса как легенда, карточки узлов и стрелок со ссылками на Gitea; у dm.dq_summary_v и dic.products стрелок на входе нет — решение записано в тикете. Влито PR #223. Дальше — поле «Как соединяет» у стрелок (#224, исполнитель попроще), затем ТЗ ступеней 2–7.
ТЗ ступени 2 «Свой график в Superset» и порядок программы в индексе лаб: новое docs/labs/superset-chart.md — столбики доли отказов по устройствам поверх dm.session_overview_v, метрика SUM/SUM в датасете, «X-axis», период «No filter», сверка запросом в SQL Lab; docs/labs/README.md — семь ступеней и пять разделов факультативов, ступени 3–7 без ссылок и заглушек, правила витрин помечены как ступень 1; шапка ТЗ дашборда — факультатив «Superset и BI». PR #227 ждет слияния. Обращение во всей docs/labs/ переведено на «вы» тем же PR. Дальше — переписать прозу ТЗ ступени 1 (#228), затем ТЗ ступени 3 «Нарежь сессии сам».
Переписать прозу пяти ТЗ ступени 1 по форме ТЗ ступени 2: пять ТЗ написаны заново по форме superset-chart.md, содержание прежнее; README лаб получил раздел «Как принято на ступени 1» вместо «Общих правил» — договоренности как выбор с доводом. Проза — Codex gpt-6-astra, ревью Opus/Sonnet, вычитка Sol. PR #229.
Имена файлов docs/labs/: схема S-N-slug: имена ТЗ — S-N-slug (ступень, номер в ступени, слаг), факультативы без номера; шесть файлов переименованы через git mv, ссылки и правило в AGENTS.md обновлены. PR #231 влит 2026-09-06.
ТЗ ступени 3 «Нарежь сессии сам»: своя нарезка против эталона VisitID: новое docs/labs/3-1-sessions-by-hand.md — нарезка по куке и паузе 30 минут над ods.event_v, сверка с uniqExact(VisitID) на зерне кука × день через FULL OUTER JOIN, расследование одной куки по событиям. Стендовая нарезка совпадает с эталоном полностью; единственное расхождение «куки + 30 минут» — граница суток, поэтому ТЗ открыто предупреждает о расхождении, а при нуле просит продвинуть мир. README лаб: строка 3 со ссылкой, «4–7». PR #233 ждет слияния. Дальше — ТЗ ступени 4 «Перепиши нарезку стенда».
Глава «Хранилище и его слои»: раздел DDS о сессии и третий пример: раздел DDS дает договоренность о визите, довод «стенд играет роль Метрики, VisitID — эталон», session_id и dds.session_v; в «Посмотрите сами» запрос сессий дня между ODS и DM, устройство нарезки не раскрыто. PR #235 ждет слияния. Дальше — ТЗ ступени 4.
ТЗ ступени 4 «Перепиши нарезку стенда»: расчет сессии внутри конвейера: новое docs/labs/4-1-session-pipeline.md — договор трех SQL, адресное восстановление дня, сверка с VisitID и проверка шарда; индекс лаб обновлен. PR «ТЗ ступени 4» влит. Прогон по codex-subagent-playbook: Sol — автор, Astra и затем Opus — ревью; отзыв Fable разобран, итоговые правки одобрены Opus, коммит 05f4e77 опубликовала Luna. Подробности эксперимента и его ограничения — в комментариях задачи. Дальше — ТЗ ступени 5.
Вне охвата
Пересмотр решений спеки — состав ступеней, формы, границы вычитания. Урок,
который на практике не складывается, возвращается сюда развилкой, а не
молчаливой правкой спеки.
Генератор как предмет обучения.
Карта исполнения учебной программы. Сама программа принята спекой
[«Программа учебных лаб»](https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/docs/specs/2026-09-01-labs-program.md):
состав ступеней, формы заданий и границы вычитания живут там. Карта открыта
резолюцией тикета #203 при закрытии карты проектирования #182.
## Пункт назначения
Менти может разобраться в стенде по его документации и пройти основную
программу целиком: у ступеней 2–7 есть ТЗ в `docs/labs/`, порядок программы
отражен в `docs/labs/README.md`, стенд дает каждой ступени обратную связь в
форме, названной спекой.
## Заметки
- Нарезки впрок нет: тикеты появляются здесь по одному, в момент старта
работы. Очередь основной программы живет в спеке и в тикетах не дублируется.
- Сессии по карте ведет скилл /wayfinder — звать явно, от автовызова
он закрыт. Тикеты здесь — работа, а не решения: оверрайд его
правила «plan, don’t do», который эти заметки и разрешают.
- Первая очередь — учебная документация вокруг стенда: без нее в стенде не
разобраться, а смотреть и учиться можно и до уроков. Направление: базовый
README для менти; архитектура решений глазами учащегося — на что смотреть в
первую очередь и почему так сделано; упор на хранилище и потоки Airflow,
пояснение мониторинга и немного BI. Генератор — только в общих словах: для
менти он источник данных, не предмет обучения.
- Форма документации (markdown или HTML, образцы оформления — скилл /teach) и
ее структура — развилка первого тикета, решается веером при старте работы,
не впрок.
- Факультативы — только по запросу менти. При работе над их размещением учитывать
решение [«Факультативы: отдельная папка»](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/206#issuecomment-2898).
- Пять готовых ТЗ витрин (ступень 1) выполняются как есть по содержанию:
колонки, ключи, проверки не пересматриваются. Прозу владелец при чтении
забраковал (2026-09-06, тексты Opus): она переписывается по форме ТЗ
ступени 2 (#228), урок в обмен — читаемость.
- Учебный материал не вводит законов (владелец, 2026-09-06): цель —
навыки, договоренности стенда («форма по зерну», чтение через `_v`) —
выбор с доводом, а не правило. ТЗ ступени 1 и раздел правил README лаб
переписываются в этом тоне в #228. Долг вне тикета: справочник
`docs/architecture/dm.md`, «Форма: по зерну, не по цене запроса», подает
договоренность как закон; исправить при следующей правке справочника или
отдельным тонким тикетом, когда до него дойдет очередь.
- Кто держит перо: русскую прозу для людей пишет Sol, вкусовые решения —
Fable, техническую беготню — Codex. Документация и ТЗ — главный продукт
карты, правило обязательно для каждой сессии.
## Дочерние тикеты
- [x] #208 Постановка учебной документации стенда
- [x] #209 Скелет путеводителя и README-шапка
- [x] #211 Пересмотр тела корневого README
- [x] #212 Переезд операторских разделов README в справочники
- [x] #214 Словарь справочников world.md и stand.md: термины и кальки
- [x] #216 Пересборка корневого README: четыре блока и адресация читателя
- [x] #218 Глава путеводителя «Хранилище и его слои»
- [x] #220 Главы путеводителя: потоки Airflow, мониторинг, Superset, генератор
- [x] #222 Интерактивная карта архитектуры: слои хранилища и путь данных
- [x] #224 Карта хранилища: поле «Как соединяет» у стрелок
- [x] #226 ТЗ ступени 2 «Свой график в Superset» и порядок программы в индексе лаб
- [x] #228 Переписать прозу пяти ТЗ ступени 1 по форме ТЗ ступени 2
- [x] #230 Имена файлов docs/labs/: схема S-N-slug
- [x] #232 ТЗ ступени 3 «Нарежь сессии сам»: своя нарезка против эталона VisitID
- [x] #234 Глава «Хранилище и его слои»: раздел DDS о сессии и третий пример
- [x] #236 ТЗ ступени 4 «Перепиши нарезку стенда»: расчет сессии внутри конвейера
- [x] #238 ТЗ ступени 5 «Сначала сторож, потом ломай: заказы»
- [x] #240 ТЗ ступени 6 «Разбери сырые события и сверь результат со стендом»
- [x] #242 ТЗ ступени 7 «Мониторинг: куда смотреть»
- [x] #244 Разместить факультативы в отдельной папке и завершить оформление программы
## Решения
- [ТЗ ступени 7 «Мониторинг: куда смотреть»](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/242): [PR «Задание по мониторингу»](https://git.dementev.space/ddmitry/clickstream-data-platform/pulls/243) влит (`1671e67`); Opus одобрил `3ec4d79`, последующую редактуру по замечаниям Fable (`ea56314c`) проверил Codex.
- [ТЗ ступени 6 «Разбери сырые события и сверь результат со стендом»](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/240): PR #241 влит (`9734449e`), его head — `6e4680d`; независимая узкая проверка Opus приняла четыре исходных находки и отдельную находку B/OPUS206-3. Issue #240 закрыт при слиянии PR, пункт выше отмечен.
- [ТЗ ступени 5 «Сначала сторож, потом ломай: заказы»](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/238): PR #239 влит (`596bcba`); ТЗ разделено на три последовательных задания, финальную версию принял Opus.
- [Постановка учебной документации стенда](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/208): путеводитель — markdown в `docs/handbook/` (вход и порядок чтения, главы «глазами учащегося», колонки-ключи уместны); интерактивная карта архитектуры — один самодостаточный HTML, рендер из исходников в той же папке; корневой README получает шапку для менти. Проза — Sol, вкус — Fable, беготня — Codex.
- [Скелет путеводителя и README-шапка](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/209): docs/handbook/ открыт README-входом — тропа чтения и пять аннотированных будущих глав без заглушек; шапка README переписана для менти; правило имен handbook — в AGENTS.md. Влито PR #210.
- [Пересмотр тела корневого README](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/211): README — лицо: промо-блок по образцу airflow-greenplum со ссылкой на de.dementev.space, «куда я попал», типовые действия (в том числе DBeaver), ссылки; обращение «вы», слово «менти» из README и путеводителя уходит. Операторские разделы переезжают в testing.md и новые stand.md и world.md; «Статус», «Что здесь будет», «Предшественник» умирают. Очередь: переезд (#212), затем пересборка README.
- [Переезд операторских разделов README в справочники](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/212): новые `docs/architecture/stand.md` («Стенд: службы, доступ, настройка», ADR 0001/0007) и `docs/architecture/world.md` («Мир и его пульт», ADR 0009/0013); доводы смоука и описания целей слиты в `testing.md`, три дубля умерли; в README под сохраненными заголовками абзацы-ссылки, адреса и пароли на месте; путеводитель и README генератора ведут на `world.md`. Влито PR #213. Следующий тикет — пересборка README; хвосты для него в резолюции.
- [Словарь справочников world.md и stand.md: термины и кальки](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/214): «пульт мира» → даги модельного времени, «опись мира» → паспорт мира, «работник» → шаговый даг, «сырьё» → сырые данные / сырой слой / STG; имена в коде не тронуты, кроме тега дага. Решение в CONTEXT.md, пометки в ADR 0005/0008/0009, история не переписана. world.md и stand.md вычитаны Sol целиком: 35 находок из 49 внесены. Влито PR #215.
- [Пересборка корневого README: четыре блока и адресация читателя](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/216): README — промо, «куда я попал», типовые действия плоскими разделами (включая DBeaver), «Документация» с семью справочниками; «Быстрый старт» для человека — две команды, проверки роботам. Слово «менти» ушло из README и путеводителя, хвосты #212/#214 закрыты, stand.md и ADR 0007 ведут на «Адреса и пароли». PR #217. Дальше — главы путеводителя (#208).
- [Глава путеводителя «Хранилище и его слои»](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/218): первая глава в docs/handbook/ — путь слоев, правило чтения через `_v`, таблица ключей, два SELECT; форма — образец следующих глав. README путеводителя открыл раздел «Главы». PR #219. Дальше — глава про потоки Airflow.
- [Главы путеводителя: потоки Airflow, мониторинг, Superset, генератор](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/220): четыре главы docs/handbook/ по скелетам постановки, форма главы о хранилище; сквозная линия — ход мира на день D везет слепок дня D−1. README путеводителя ведет в главы, заглушек нет. PR #221. Дальше — интерактивная карта архитектуры (#208).
- [Интерактивная карта архитектуры: слои хранилища и путь данных](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/222): один самодостаточный `docs/handbook/architecture-map.html`, исходники в `architecture-map/`, рендер проверяет `make lint`; 17 узлов, 17 стрелок, три механизма переноса как легенда, карточки узлов и стрелок со ссылками на Gitea; у `dm.dq_summary_v` и `dic.products` стрелок на входе нет — решение записано в тикете. Влито PR #223. Дальше — поле «Как соединяет» у стрелок (#224, исполнитель попроще), затем ТЗ ступеней 2–7.
- [ТЗ ступени 2 «Свой график в Superset» и порядок программы в индексе лаб](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/226): новое `docs/labs/superset-chart.md` — столбики доли отказов по устройствам поверх `dm.session_overview_v`, метрика `SUM/SUM` в датасете, «X-axis», период «No filter», сверка запросом в SQL Lab; `docs/labs/README.md` — семь ступеней и пять разделов факультативов, ступени 3–7 без ссылок и заглушек, правила витрин помечены как ступень 1; шапка ТЗ дашборда — факультатив «Superset и BI». PR #227 ждет слияния. Обращение во всей `docs/labs/` переведено на «вы» тем же PR. Дальше — переписать прозу ТЗ ступени 1 (#228), затем ТЗ ступени 3 «Нарежь сессии сам».
- [Переписать прозу пяти ТЗ ступени 1 по форме ТЗ ступени 2](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/228): пять ТЗ написаны заново по форме `superset-chart.md`, содержание прежнее; README лаб получил раздел «Как принято на ступени 1» вместо «Общих правил» — договоренности как выбор с доводом. Проза — Codex gpt-6-astra, ревью Opus/Sonnet, вычитка Sol. PR #229.
- [Имена файлов docs/labs/: схема S-N-slug](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/230): имена ТЗ — `S-N-slug` (ступень, номер в ступени, слаг), факультативы без номера; шесть файлов переименованы через `git mv`, ссылки и правило в AGENTS.md обновлены. PR #231 влит 2026-09-06.
- [ТЗ ступени 3 «Нарежь сессии сам»: своя нарезка против эталона VisitID](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/232): новое docs/labs/3-1-sessions-by-hand.md — нарезка по куке и паузе 30 минут над ods.event_v, сверка с uniqExact(VisitID) на зерне кука × день через FULL OUTER JOIN, расследование одной куки по событиям. Стендовая нарезка совпадает с эталоном полностью; единственное расхождение «куки + 30 минут» — граница суток, поэтому ТЗ открыто предупреждает о расхождении, а при нуле просит продвинуть мир. README лаб: строка 3 со ссылкой, «4–7». PR #233 ждет слияния. Дальше — ТЗ ступени 4 «Перепиши нарезку стенда».
- [Глава «Хранилище и его слои»: раздел DDS о сессии и третий пример](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/234): раздел DDS дает договоренность о визите, довод «стенд играет роль Метрики, VisitID — эталон», session_id и dds.session_v; в «Посмотрите сами» запрос сессий дня между ODS и DM, устройство нарезки не раскрыто. PR #235 ждет слияния. Дальше — ТЗ ступени 4.
- [ТЗ ступени 4 «Перепиши нарезку стенда»: расчет сессии внутри конвейера](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/236): новое `docs/labs/4-1-session-pipeline.md` — договор трех SQL, адресное восстановление дня, сверка с VisitID и проверка шарда; индекс лаб обновлен. [PR «ТЗ ступени 4»](https://git.dementev.space/ddmitry/clickstream-data-platform/pulls/237) влит. Прогон по codex-subagent-playbook: Sol — автор, Astra и затем Opus — ревью; отзыв Fable разобран, итоговые правки одобрены Opus, коммит `05f4e77` опубликовала Luna. Подробности эксперимента и его ограничения — в комментариях задачи. Дальше — ТЗ ступени 5.
## Вне охвата
- Пересмотр решений спеки — состав ступеней, формы, границы вычитания. Урок,
который на практике не складывается, возвращается сюда развилкой, а не
молчаливой правкой спеки.
- Генератор как предмет обучения.
Напоминаю, мы здесь делаем учебный материал. Главная цель которого - научить студента хорошим навыкам работы. Все остальное - только инструменты.
Напоминание ввожу в контексте того, что агенты регулярно пытаются так или иначе ввести какие-то законы, правила и ограничения. Но зачем они... Наше главное ограничение написанных материалов - учебная ценнось. Если он учит правильным, пригодящимся в работе вещам - материал годен. Если же написанный материал несет что-то другое - это повод остановиться и обсудить с human partner, что что-то пошло не так
Напоминаю, мы здесь делаем учебный материал. Главная цель которого - научить студента хорошим навыкам работы. Все остальное - только инструменты.
Напоминание ввожу в контексте того, что агенты регулярно пытаются так или иначе ввести какие-то законы, правила и ограничения. Но зачем они... Наше главное ограничение написанных материалов - учебная ценнось. Если он учит правильным, пригодящимся в работе вещам - материал годен. Если же написанный материал несет что-то другое - это повод остановиться и обсудить с human partner, что что-то пошло не так
Согласовано с владельцем: факультативные задания размещаем в docs/labs/optional/, с именами по предмету задания, без номеров ступеней. Основная программа остается в docs/labs/ с именами S-N-slug.md.
Так расположение файла показывает, относится ли задание к обязательному маршруту. Общий вход остается в docs/labs/README.md: там уже есть тематические разделы факультативов и указано, после какой ступени они доступны. Отдельный индекс подпапки пока не нужен.
Плоский список с исключением для имен факультативов формально корректен, но читатель этого исключения не видит. Номер вроде 2-2-superset-dashboard.md создавал бы впечатление второго обязательного задания ступени. Поэтому выбрана отдельная папка.
Первым под эту договоренность попадает существующее superset-dashboard.md: при реализации он переедет в docs/labs/optional/superset-dashboard.md. В том же изменении нужно поправить входящие и относительные ссылки и описание размещения лаб в AGENTS.md. Содержание задания и его место в программе от переноса не меняются.
Это решение для дальнейшей работы, перенос пока не выполнен. Состав факультативов остается принятым в программе; новые задания по-прежнему появляются по запросу, без нарезки тикетов впрок.
## Факультативы: отдельная папка
Согласовано с владельцем: факультативные задания размещаем в `docs/labs/optional/`, с именами по предмету задания, без номеров ступеней. Основная программа остается в `docs/labs/` с именами `S-N-slug.md`.
Так расположение файла показывает, относится ли задание к обязательному маршруту. Общий вход остается в `docs/labs/README.md`: там уже есть тематические разделы факультативов и указано, после какой ступени они доступны. Отдельный индекс подпапки пока не нужен.
Плоский список с исключением для имен факультативов формально корректен, но читатель этого исключения не видит. Номер вроде `2-2-superset-dashboard.md` создавал бы впечатление второго обязательного задания ступени. Поэтому выбрана отдельная папка.
Первым под эту договоренность попадает существующее `superset-dashboard.md`: при реализации он переедет в `docs/labs/optional/superset-dashboard.md`. В том же изменении нужно поправить входящие и относительные ссылки и описание размещения лаб в `AGENTS.md`. Содержание задания и его место в программе от переноса не меняются.
Это решение для дальнейшей работы, перенос пока не выполнен. Состав факультативов остается принятым в программе; новые задания по-прежнему появляются по запросу, без нарезки тикетов впрок.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Карта исполнения учебной программы. Сама программа принята спекой
«Программа учебных лаб»:
состав ступеней, формы заданий и границы вычитания живут там. Карта открыта
резолюцией тикета #203 при закрытии карты проектирования #182.
Пункт назначения
Менти может разобраться в стенде по его документации и пройти основную
программу целиком: у ступеней 2–7 есть ТЗ в
docs/labs/, порядок программыотражен в
docs/labs/README.md, стенд дает каждой ступени обратную связь вформе, названной спекой.
Заметки
работы. Очередь основной программы живет в спеке и в тикетах не дублируется.
он закрыт. Тикеты здесь — работа, а не решения: оверрайд его
правила «plan, don’t do», который эти заметки и разрешают.
разобраться, а смотреть и учиться можно и до уроков. Направление: базовый
README для менти; архитектура решений глазами учащегося — на что смотреть в
первую очередь и почему так сделано; упор на хранилище и потоки Airflow,
пояснение мониторинга и немного BI. Генератор — только в общих словах: для
менти он источник данных, не предмет обучения.
ее структура — развилка первого тикета, решается веером при старте работы,
не впрок.
решение «Факультативы: отдельная папка».
колонки, ключи, проверки не пересматриваются. Прозу владелец при чтении
забраковал (2026-09-06, тексты Opus): она переписывается по форме ТЗ
ступени 2 (#228), урок в обмен — читаемость.
навыки, договоренности стенда («форма по зерну», чтение через
_v) —выбор с доводом, а не правило. ТЗ ступени 1 и раздел правил README лаб
переписываются в этом тоне в #228. Долг вне тикета: справочник
docs/architecture/dm.md, «Форма: по зерну, не по цене запроса», подаетдоговоренность как закон; исправить при следующей правке справочника или
отдельным тонким тикетом, когда до него дойдет очередь.
Fable, техническую беготню — Codex. Документация и ТЗ — главный продукт
карты, правило обязательно для каждой сессии.
Дочерние тикеты
#208 Постановка учебной документации стенда
#209 Скелет путеводителя и README-шапка
#211 Пересмотр тела корневого README
#212 Переезд операторских разделов README в справочники
#214 Словарь справочников world.md и stand.md: термины и кальки
#216 Пересборка корневого README: четыре блока и адресация читателя
#218 Глава путеводителя «Хранилище и его слои»
#220 Главы путеводителя: потоки Airflow, мониторинг, Superset, генератор
#222 Интерактивная карта архитектуры: слои хранилища и путь данных
#224 Карта хранилища: поле «Как соединяет» у стрелок
#226 ТЗ ступени 2 «Свой график в Superset» и порядок программы в индексе лаб
#228 Переписать прозу пяти ТЗ ступени 1 по форме ТЗ ступени 2
#230 Имена файлов docs/labs/: схема S-N-slug
#232 ТЗ ступени 3 «Нарежь сессии сам»: своя нарезка против эталона VisitID
#234 Глава «Хранилище и его слои»: раздел DDS о сессии и третий пример
#236 ТЗ ступени 4 «Перепиши нарезку стенда»: расчет сессии внутри конвейера
#238 ТЗ ступени 5 «Сначала сторож, потом ломай: заказы»
#240 ТЗ ступени 6 «Разбери сырые события и сверь результат со стендом»
#242 ТЗ ступени 7 «Мониторинг: куда смотреть»
#244 Разместить факультативы в отдельной папке и завершить оформление программы
Решения
ТЗ ступени 7 «Мониторинг: куда смотреть»: PR «Задание по мониторингу» влит (
1671e67); Opus одобрил3ec4d79, последующую редактуру по замечаниям Fable (ea56314c) проверил Codex.ТЗ ступени 6 «Разбери сырые события и сверь результат со стендом»: PR #241 влит (
9734449e), его head —6e4680d; независимая узкая проверка Opus приняла четыре исходных находки и отдельную находку B/OPUS206-3. Issue #240 закрыт при слиянии PR, пункт выше отмечен.ТЗ ступени 5 «Сначала сторож, потом ломай: заказы»: PR #239 влит (
596bcba); ТЗ разделено на три последовательных задания, финальную версию принял Opus.Постановка учебной документации стенда: путеводитель — markdown в
docs/handbook/(вход и порядок чтения, главы «глазами учащегося», колонки-ключи уместны); интерактивная карта архитектуры — один самодостаточный HTML, рендер из исходников в той же папке; корневой README получает шапку для менти. Проза — Sol, вкус — Fable, беготня — Codex.Скелет путеводителя и README-шапка: docs/handbook/ открыт README-входом — тропа чтения и пять аннотированных будущих глав без заглушек; шапка README переписана для менти; правило имен handbook — в AGENTS.md. Влито PR #210.
Пересмотр тела корневого README: README — лицо: промо-блок по образцу airflow-greenplum со ссылкой на de.dementev.space, «куда я попал», типовые действия (в том числе DBeaver), ссылки; обращение «вы», слово «менти» из README и путеводителя уходит. Операторские разделы переезжают в testing.md и новые stand.md и world.md; «Статус», «Что здесь будет», «Предшественник» умирают. Очередь: переезд (#212), затем пересборка README.
Переезд операторских разделов README в справочники: новые
docs/architecture/stand.md(«Стенд: службы, доступ, настройка», ADR 0001/0007) иdocs/architecture/world.md(«Мир и его пульт», ADR 0009/0013); доводы смоука и описания целей слиты вtesting.md, три дубля умерли; в README под сохраненными заголовками абзацы-ссылки, адреса и пароли на месте; путеводитель и README генератора ведут наworld.md. Влито PR #213. Следующий тикет — пересборка README; хвосты для него в резолюции.Словарь справочников world.md и stand.md: термины и кальки: «пульт мира» → даги модельного времени, «опись мира» → паспорт мира, «работник» → шаговый даг, «сырьё» → сырые данные / сырой слой / STG; имена в коде не тронуты, кроме тега дага. Решение в CONTEXT.md, пометки в ADR 0005/0008/0009, история не переписана. world.md и stand.md вычитаны Sol целиком: 35 находок из 49 внесены. Влито PR #215.
Пересборка корневого README: четыре блока и адресация читателя: README — промо, «куда я попал», типовые действия плоскими разделами (включая DBeaver), «Документация» с семью справочниками; «Быстрый старт» для человека — две команды, проверки роботам. Слово «менти» ушло из README и путеводителя, хвосты #212/#214 закрыты, stand.md и ADR 0007 ведут на «Адреса и пароли». PR #217. Дальше — главы путеводителя (#208).
Глава путеводителя «Хранилище и его слои»: первая глава в docs/handbook/ — путь слоев, правило чтения через
_v, таблица ключей, два SELECT; форма — образец следующих глав. README путеводителя открыл раздел «Главы». PR #219. Дальше — глава про потоки Airflow.Главы путеводителя: потоки Airflow, мониторинг, Superset, генератор: четыре главы docs/handbook/ по скелетам постановки, форма главы о хранилище; сквозная линия — ход мира на день D везет слепок дня D−1. README путеводителя ведет в главы, заглушек нет. PR #221. Дальше — интерактивная карта архитектуры (#208).
Интерактивная карта архитектуры: слои хранилища и путь данных: один самодостаточный
docs/handbook/architecture-map.html, исходники вarchitecture-map/, рендер проверяетmake lint; 17 узлов, 17 стрелок, три механизма переноса как легенда, карточки узлов и стрелок со ссылками на Gitea; уdm.dq_summary_vиdic.productsстрелок на входе нет — решение записано в тикете. Влито PR #223. Дальше — поле «Как соединяет» у стрелок (#224, исполнитель попроще), затем ТЗ ступеней 2–7.ТЗ ступени 2 «Свой график в Superset» и порядок программы в индексе лаб: новое
docs/labs/superset-chart.md— столбики доли отказов по устройствам поверхdm.session_overview_v, метрикаSUM/SUMв датасете, «X-axis», период «No filter», сверка запросом в SQL Lab;docs/labs/README.md— семь ступеней и пять разделов факультативов, ступени 3–7 без ссылок и заглушек, правила витрин помечены как ступень 1; шапка ТЗ дашборда — факультатив «Superset и BI». PR #227 ждет слияния. Обращение во всейdocs/labs/переведено на «вы» тем же PR. Дальше — переписать прозу ТЗ ступени 1 (#228), затем ТЗ ступени 3 «Нарежь сессии сам».Переписать прозу пяти ТЗ ступени 1 по форме ТЗ ступени 2: пять ТЗ написаны заново по форме
superset-chart.md, содержание прежнее; README лаб получил раздел «Как принято на ступени 1» вместо «Общих правил» — договоренности как выбор с доводом. Проза — Codex gpt-6-astra, ревью Opus/Sonnet, вычитка Sol. PR #229.Имена файлов docs/labs/: схема S-N-slug: имена ТЗ —
S-N-slug(ступень, номер в ступени, слаг), факультативы без номера; шесть файлов переименованы черезgit mv, ссылки и правило в AGENTS.md обновлены. PR #231 влит 2026-09-06.ТЗ ступени 3 «Нарежь сессии сам»: своя нарезка против эталона VisitID: новое docs/labs/3-1-sessions-by-hand.md — нарезка по куке и паузе 30 минут над ods.event_v, сверка с uniqExact(VisitID) на зерне кука × день через FULL OUTER JOIN, расследование одной куки по событиям. Стендовая нарезка совпадает с эталоном полностью; единственное расхождение «куки + 30 минут» — граница суток, поэтому ТЗ открыто предупреждает о расхождении, а при нуле просит продвинуть мир. README лаб: строка 3 со ссылкой, «4–7». PR #233 ждет слияния. Дальше — ТЗ ступени 4 «Перепиши нарезку стенда».
Глава «Хранилище и его слои»: раздел DDS о сессии и третий пример: раздел DDS дает договоренность о визите, довод «стенд играет роль Метрики, VisitID — эталон», session_id и dds.session_v; в «Посмотрите сами» запрос сессий дня между ODS и DM, устройство нарезки не раскрыто. PR #235 ждет слияния. Дальше — ТЗ ступени 4.
ТЗ ступени 4 «Перепиши нарезку стенда»: расчет сессии внутри конвейера: новое
docs/labs/4-1-session-pipeline.md— договор трех SQL, адресное восстановление дня, сверка с VisitID и проверка шарда; индекс лаб обновлен. PR «ТЗ ступени 4» влит. Прогон по codex-subagent-playbook: Sol — автор, Astra и затем Opus — ревью; отзыв Fable разобран, итоговые правки одобрены Opus, коммит05f4e77опубликовала Luna. Подробности эксперимента и его ограничения — в комментариях задачи. Дальше — ТЗ ступени 5.Вне охвата
который на практике не складывается, возвращается сюда развилкой, а не
молчаливой правкой спеки.
Напоминаю, мы здесь делаем учебный материал. Главная цель которого - научить студента хорошим навыкам работы. Все остальное - только инструменты.
Напоминание ввожу в контексте того, что агенты регулярно пытаются так или иначе ввести какие-то законы, правила и ограничения. Но зачем они... Наше главное ограничение написанных материалов - учебная ценнось. Если он учит правильным, пригодящимся в работе вещам - материал годен. Если же написанный материал несет что-то другое - это повод остановиться и обсудить с human partner, что что-то пошло не так
Факультативы: отдельная папка
Согласовано с владельцем: факультативные задания размещаем в
docs/labs/optional/, с именами по предмету задания, без номеров ступеней. Основная программа остается вdocs/labs/с именамиS-N-slug.md.Так расположение файла показывает, относится ли задание к обязательному маршруту. Общий вход остается в
docs/labs/README.md: там уже есть тематические разделы факультативов и указано, после какой ступени они доступны. Отдельный индекс подпапки пока не нужен.Плоский список с исключением для имен факультативов формально корректен, но читатель этого исключения не видит. Номер вроде
2-2-superset-dashboard.mdсоздавал бы впечатление второго обязательного задания ступени. Поэтому выбрана отдельная папка.Первым под эту договоренность попадает существующее
superset-dashboard.md: при реализации он переедет вdocs/labs/optional/superset-dashboard.md. В том же изменении нужно поправить входящие и относительные ссылки и описание размещения лаб вAGENTS.md. Содержание задания и его место в программе от переноса не меняются.Это решение для дальнейшей работы, перенос пока не выполнен. Состав факультативов остается принятым в программе; новые задания по-прежнему появляются по запросу, без нарезки тикетов впрок.