- Зачем:
- зафиксировать состояние конвейера #5 перед долгой живой приёмкой,
чтобы новая сессия продолжила без потери контекста.
- Что:
- в handoff добавлена дельта 23:10: обе находки FIXED (фрагменты ID
с SHA-256-цепочкой), перепроверка линией B — APPROVED;
- обновлено состояние стенда: им владеет сценарий приёмки;
- в .scratch/issue5-run добавлены свежие отчёты, перепроверка и
сценарий приёмки acceptance-issue5.sh.
- Проверка:
- git show --stat; лог приёмки — до строки SCRIPT_EXIT_CODE=.
- Зачем:
- пользователь делает compaction прямо сейчас; свежие детали конвейера
ещё нигде не были записаны.
- Что:
- дельта: вердикт линии A, запуск триаж-раунда, владелец дерева —
задача Codex mrwhhml9, остановленный дубль и как проверить дерево.
- Проверка:
- чтение раздела «Дельта 23:45» свежим взглядом.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- подстраховать продолжение работы в новой сессии: #5 реализован,
но не закоммичен, два ревью в полёте.
- Что:
- новый handoff с состоянием конвейера #5 (CODE-1 High про лимит
Kafka, порядок триажа) и уроками приёмки этой сессии;
- отработанный handoff от 20:29 удалён по ADR-0003;
- обменные файлы прогона #5 скопированы в .scratch/issue5-run/
(без коммита — локальная копия на случай потери /tmp).
- Проверка:
- git show --stat HEAD; чтение handoff свежим взглядом.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- список DAG'ов должен читаться лесенкой ddl_init → world_init →
world_next_day, а путь менти — проходиться пустыми формами
(issue #4, спека редизайна пути менти, решения 2–3).
- Что:
- generator_control переименован в world_init, дефолт операции —
import; next-day ушёл из выпадашки в отдельный DAG;
- новый беспараметрный world_next_day: расписание */30 * * * *,
создаётся на паузе, catchup=False, max_active_runs=1; общие
задачи вынесены в airflow/dags/utils/startup_history_tasks.py;
- доки и контрактные тесты обновлены синхронно; быстрый старт
README — без make ddl, схему создаёт DAG ddl_init.
- Проверка:
- make test (210 + 31) и make lint зелёные;
- живая приёмка на чистом стенде: world_init пустой формой
импортировал эталонный мир за 217 с (3 дня, 280 437 событий),
world_next_day после снятия с паузы добавляет ровно один день
за прогон, дашборд Superset собирается.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- следующая сессия после compaction продолжает конвейерное
исполнение фичи; нужен свежий вход без потери уроков приёмки #3.
- Что:
- новый handoff 20260722-2029: порядок #4 → #5, уроки приёмки,
сводная карта работ (карта #10 и бэклог ждут решения #18).
- удалены два отработанных handoff'а (одноразовые по ADR-0003).
- Проверка:
- cat .scratch/handoffs/20260722-2029-finish-mentee-path.md
- Зачем:
- зафиксировать точку продолжения: фронтир фичи (#4, #5) и фронтир
карты (#18 «Модель данных») для следующей сессии.
- Что:
- handoff 20260722-1913: итоги по issues #6/#3, эталонный мир в git,
карта wayfinder #10 с тремя закрытыми тикетами, состояние стенда,
грабли WSL.
- Проверка:
- не требуется (одноразовый документ по ADR-0003).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- менти должен понимать, какой опыт со стенда переносится на бой
напрямую, а какой требует поправки на учебные упрощения
(тикет «Реализм генератора» карты боевого реализма, issue #11).
- Что:
- docs/generator-realism.md: что честно как в бою (схема, воронка,
сессии, суточная волна, обвязка) и что упрощено (четыре топика,
только pageview, клонированные пользователи, нет «грязи», масштаб);
- ссылка на документ в списке документации README.
- Проверка:
- make test (210 + 31) зелёный.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- менти собирал мир генерацией (минуты и десятки минут CPU); теперь
готовый трёхдневный мир загружается импортом за ~2 минуты, и числа
у всех менти совпадают число-в-число (issue #3).
- Что:
- артефакт data/startup_history/reference-world.json.xz в git:
3 модельных дня daily-wave, ~850 МБ JSON → 32 МБ xz;
- чтение и запись артефакта понимают .xz потоково (lzma); пустое поле
artifact_path в пульте и make startup-history-import читают эталон;
- длительность профиля daily-wave стала 3d — в тон эталонному миру;
- предпроверка чистого стенда ставит зависимости генератора через uv;
экспорт и импорт разведены отдельными переменными Makefile;
- доки и runbook обновлены; новые контрактные тесты: xz round-trip
и дефолтные пути артефакта.
- Проверка:
- make test (210 + 31) и make lint зелёные; импорт на чистом стенде
за 2м03с, manifest совпал (280437 событий), Superset-проверка
зелёная; независимое ревью — APPROVED.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- менти доставался плоский тестовый профиль ci; учебный профиль
должен быть один — daily-wave с суточной волной (issue #6).
- Что:
- дефолт daily-wave во всех точках: форма пульта generator_control,
launch.py (API и CLI), Config, Makefile, четыре shell-скрипта.
- автопроверки передают ci явно; контрактный тест пульта теперь
проверяет сам дефолт Param профиля (через AST), а не подстроку.
- доки в том же изменении: README, OPERATIONS, TEST_PLAN,
generator/README, runbook startup-history.
- Проверка:
- make test (206 + 31 passed) и make lint — зелёные.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- handoff должен отражать, что уже в трекере, а что осталось завести.
- Что:
- список «не забыть» сокращён: #1 и #2 созданы, остались лабы и
инкрементальный ETL.
- Проверка:
- gh issue list — два открытых issue.
- Зачем:
- full_refresh на каждый world_next_day пересчитывает весь мир —
с ростом мира это следующее узкое место после счётчиков manifest.
- Что:
- в список issues «не забыть» добавлен инкрементальный ETL со ссылкой
на legacy-план plans/incremental-etl-v2.md.
- Проверка:
- вычитка handoff.
- Зачем:
- следующая сессия должна стартовать от актуальной точки.
- Что:
- раздел «Что дальше» переписан: спека и контракт трекера сделаны,
остались issues и конвейер задач.
- Проверка:
- вычитка handoff.
- Зачем:
- три обещания спеки расходились с фактами кода и замеров HITL.
- Что:
- в путь менти возвращён шаг make superset-init; критерий «терминал
только make up» поправлен честно.
- критерий стоимости world_next_day сужен до генерации+manifest:
ETL full_refresh растёт с миром — явно вынесен в «чего не делаем».
- проверка профиля ×1 уточнена: runtime-seam уже на daily-wave,
проверять надо дефолты launch.py и автотесты.
- Проверка:
- сверка с scripts/run_generated_history_runtime_check.sh, Makefile
и замерами HITL (ETL 30 с на 110k событий).
- Зачем:
- находки ручного HITL 2026-07-19 требовали проектного решения: путь
менти через backfill медленный, бедный и путаный; нужна база import
эталонного мира и две ветки роста.
- Что:
- спека docs/specs/2026-07-19-mentee-path-redesign.md: целевая модель
(import + next-day + continue), эталонный 3-дневный мир в git (xz),
переименование пульта в world_init с дефолтом import, отдельный
world_next_day, инкрементальные счётчики manifest, один учебный
профиль; форма работ — 4 дочерних issue.
- CONTEXT.md: термины «мир (стенда)», «эталонный мир», «три режима
менти».
- .scratch/hitl-findings.md восстановлен из среза 0e312b3 как рабочий
материал фичи (до разбора в issues).
- Проверка:
- вычитка против hitl-findings и решений обсуждения 2026-07-19.
- Зачем:
- пилот нативного трекера на фиче mentee-path: спека в git как
источник истины, тонкий корневой issue, дочерние issues-постановки.
- Что:
- docs/agents/issue-tracker.md переписан с локального markdown на
GitHub Issues (gh CLI, правило тонкого корневого issue, архив
старых задач — в истории git, срез 0e312b3).
- triage-метки стали настоящими метками GitHub (созданы в репозитории),
AGENTS.md обновлён.
- Проверка:
- gh label list — пять канонических меток на месте.
- Зачем:
- после слияния feature/data-generator одноразовые материалы .scratch
(задачи 01-21, PRD, журналы, старые handoff'ы) больше не нужны:
долговечное живёт в docs/, история — в git (срез 0e312b3).
- Что:
- удалено всё содержимое .scratch (50 файлов).
- добавлен handoff 20260719-2229-mentee-path-start.md: направление
редизайна пути менти (4 задачи) и пилот GitHub Issues.
- Проверка:
- git show --stat; в .scratch остался только новый handoff.
- Зачем:
- перед слиянием в main документация должна совпадать с кодом:
ARCHITECTURE.md и REPO_MAP.md не знали про операцию next-day,
каталог generator/ и семь новых скриптов.
- Что:
- в ARCHITECTURE.md операция next-day добавлена в описание DAG
generator_control (три места).
- в REPO_MAP.md добавлены раздел Generator и семь скриптов
стартовой истории; описание generator_control дополнено.
- Проверка:
- make lint — зелёный; сверка списков с airflow/dags и scripts/.
- Зачем:
- форма Trigger DAG требовала заполнить все поля: канонический запуск
«выбрать профиль, остальное пусто» через UI был невозможен (находка F1
ручного HITL); артефакты backfill (data/*.json, 49 МБ) рисковали
попасть в коммит.
- Что:
- пять необязательных Param переведены на Param(None, type=["null",
"string"]) — идиома необязательного поля, проверено по Context7
(Airflow 2.10.5); все места чтения уже None-безопасны (or "").
- контрактный тест дополнен: у необязательных Param есть "null" в type,
у operation/profile — нет.
- .gitignore: правило data/*.json (сиды data/*.jsonl остаются под git);
задача 21 закрыта в .scratch.
- Проверка:
- make test (205 + 31 passed) и make lint — зелёные.
- Зачем:
- долг ручной HITL-проверки пути менти переносился пятый handoff подряд;
проверка вскрыла набор находок и наметила редизайн пути менти.
- Что:
- добавлены находки HITL (F1-F9) с рамочной моделью трёх режимов менти:
import-база, ветки next-day и continue, под каждую — свой урок/лаба.
- зафиксированы решения: 3-дневный артефакт на daily-wave, сжатие xz,
один учебный профиль, беспараметрный next-day, инкрементальные счётчики.
- добавлен handoff по ADR-0003 с планом раскладки находок в постановки.
- Проверка:
- чтение .scratch/generator-model-time-startup-history/hitl-findings.md
и .scratch/handoffs/20260719-2144-hitl-mentee-path-redesign.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Зачем:
- передать контекст новой сессии: конвейер задачи 13 завершён, следующие
шаги — задача про расписание, HITL-проверка пути менти, уроки плейбука.
- Что:
- добавлен handoff 20260712-2359 (итоги конвейера, состояние стенда,
план и отклонения процесса).
- убран отработанный handoff 20260712-2015 (одноразовый по ADR-0003).
- Проверка:
- вычитка handoff'а; ссылки на задачу 13 и коммиты f5dee26/540989d.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- режим кормления стенда порциями: менти триггерит «следующий день»,
видит полный цикл DWH за один шаг (задача 13, вариант 2 — генерация
от слепка T_end).
- Что:
- новый ограниченный режим next-day: восстановление мира из state,
генерация ровно [T_end, T_end+24h), публикация данные -> state ->
манифест (манифест — точка фиксации, автоотката нет).
- операция next-day в DAG generator_control: своя предпроверка границы
вместо clean-guard, идемпотентность через параметр expected_t_end.
- цепочка границ — накопительное поле boundaries в манифесте, старый
формат читается как [T0, T_end]; импорт не изменён.
- новая проверка цепочки (make generated-history-chain-check): непарные
счётчики и однородность по каждой границе, явный статус нулевого
стыка, хвост за границей по всем четырём топикам, литералы в UTC
с микросекундами.
- документация OPERATIONS.md: глагол, предпроверка, восстановление
после сбоя, ограничение retention; в задаче 13 — решения двух слепых
ревью постановки и кода с аргументами отклонений.
- Проверка:
- make test: 204 теста генератора + 31 контракт корня, зелёные.
- make generated-history-chain-check: зелёный, 2 внутренние границы,
непарные счётчики нулевые; учебный цикл: DM 322 -> 10026 -> 19196
за два next-day подряд.
- make generated-history-runtime-check (регрессия задачи 20): зелёный.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- два слепых ревью постановки (Codex и Claude) вернули CHANGES_REQUIRED:
guard чистого стенда противоречил доливке, не были заданы механизм
идемпотентности, точка фиксации, формат цепочки границ и проверки.
- Что:
- добавлен раздел «Решения по ревью постановки»: next-day как новый
ограниченный режим, день = [T_end, T_end+24h), предпроверка границы,
параметр expected_t_end, манифест как точка фиксации, поле boundaries,
батчевый режим проверки цепочки, расписание вынесено в отдельную задачу.
- критерии приёмки финализированы (были черновыми), добавлен раздел
«Границы (что не трогать)», исправлены ссылки на строки кода.
- Проверка:
- вычитка задачи; факты сверены обоими ревьюерами по коду ветки
(индексы находок — в обменном каталоге сессии).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- зафиксировать состояние для продолжения в новой сессии (ADR-0003).
- Что:
- handoff: итог конвейера по задаче 20, разблокированная задача 13,
план рефлексии по расходу контекста в subagent-playbook.
- Проверка:
- чтение handoff: ссылки на задачу и коммиты корректны, дерево чистое.
- Зачем:
- адверсарное ревью показало: генератор не обрабатывает SIGTERM
(python — PID 1, docker compose stop ведёт к SIGKILL посреди batch),
а вариант «ждать записи generator_batch_history» гонку не закрывает.
- Что:
- направление фикса: минимальный SIGTERM-хендлер с дозаписью batch,
альтернативы отклонены с доводами, bounded live mode вне скоупа.
- критерии дополнены: красный сценарий обязан ловиться, стабильность
обосновывается структурно, запрещены вероятностные смягчения.
- в диагноз внесены механизм обрыва и различие device/geo vs location.
- Проверка:
- чтение постановки: все находки ревью закрыты решением или доводом.
- Зачем:
- диагноз задачи 20 снял страх швов (генератор на стыке не ломает),
и пользователь выбрал вариант реализации next-day;
- сессия завершается - нужен handoff для продолжения.
- Что:
- задача 13: выбран вариант 2 (генерация следующего дня от слепка),
вариант нарезки артефакта отклонён с обоснованием; статус
ready-for-agent, blocked by задача 20;
- handoff сессии в .scratch/handoffs/ - итоги проверки пути менти,
состояние трекера, план (фикс 20 -> задача 13 -> HITL).
- Проверка:
- чтение задачи 13 и handoff; git status чистый после коммита.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- Codex-диагноз нашёл корень нестабильности runtime-гейта: гонка
остановки live-генератора, batch публикуется по топикам без
атомарности, seam-SQL маскирует непарные строки под смену фактуры;
- попутно закрыт второй открытый вопрос задачи 13 - запасная ветка
рождения визита уже хранит донора (фикс задачи 09).
- Что:
- задача 20: диагноз с судьбой трёх гипотез, направление фикса
(управляемая остановка live + precheck непарных строк), статус
ready-for-agent;
- задача 13: вопрос про fallback-ветку закрыт, статус ready-for-human
(осталось решение по развилке реализации).
- Проверка:
- утверждение про донора перепроверено по generation.py:194-209;
эмпирика диагноза - в логах прогонов, пути в задаче 20.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- плейбук оркестрации опирается на репо-локальных субагентов для
глубоких рассуждений и шумной механики; в этом репозитории их
ещё не было.
- Что:
- созданы .claude/agents/deep-reasoner.md (Opus, high) и
.claude/agents/fast-worker.md (Sonnet) по референсу скилла
claude-subagent-playbook;
- .gitignore: локальное содержимое .claude/ скрыто, agents/
коммитятся.
- Проверка:
- git status не показывает .claude/settings.local.json;
субагенты видны в новой сессии Claude Code.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- ревью пути менти 2026-07-07 нашло четыре места, где документация
сбивает новичка: скрытый шаг с паузой etl_pipeline, два рецепта
первого запуска без связки, неверное число дашбордов и пустые
панели Airflow на backfill-only пути.
- Что:
- README: добавлен шаг «снимите паузу с etl_pipeline» перед backfill
и пометка, что generated-history-analytics — тот же путь одной
командой;
- курс: README курса связывает оба рецепта первого запуска, урок 05
называет четыре дашборда (включая Generator Overview) и объясняет,
почему панели Airflow пусты до запуска etl_pipeline.
- Проверка:
- чтение задетых разделов; имена дашбордов сверены с provisioning
Grafana в ходе ревью.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- рамка задачи 13 пересмотрена: ценность доливки — кормление стенда
дневными батчами (урок и имитация жизни), а не удлинение истории;
- прогон пути менти 2026-07-07 показал, что runtime-гейт стыка
backfill->live нестабилен — красный/зелёный через раз.
- Что:
- задача 13 переписана под глагол next-day в generator_control:
сценарии, развилка реализации (срез артефакта против доливки от
слепка), закрыт вопрос про импорт частями (сейчас всё или ничего);
- добавлена задача 20 про нестабильную runtime-проверку стыка с
эмпирикой двух прогонов и гипотезами для диагноза.
- Проверка:
- два прогона make generated-history-runtime-check (красный 8/19,
затем зелёный) — зафиксированы в задаче 20.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- коммит-гейт не запускал корневые контрактные тесты, а часть подтверждённых обходов могла снова смешать разные миры генератора.
- Что:
- добавлены цели make test, make lint и contract-test с тихим pytest-выводом через Docker.
- закрыты обходы через generator-reset, неизвестную версию state и fail-open проверку DM-витрин.
- усилены поведенческие контракты CHECK_LIVE_SEAM, профиля manifest и pause-check etl_pipeline; обновлены документы и issue 19.
- Проверка:
- make test; make lint; git diff --check.
- Зачем:
- coordinator-loop требует handoff для внешнего кросс-линейного ревью.
- Что:
- добавлена записка с индексом изменений, ревью и открытыми рисками.
- журнал фиксирует завершение финального review и handoff.
- Проверка:
- staged-состав содержит только handoff и журнал.
- Зачем:
- backfill-only сценарии не должны советовать проверку, которая требует live seam.
- Что:
- для backfill/import-only путей указан CHECK_LIVE_SEAM=0.
- live-проверка вынесена в generated-history-runtime-check или явно описанный live-путь.
- журнал дополнен финальным review и rerun.
- Проверка:
- финальный chain review rerun APPROVED; git diff --check.
- Зачем:
- коммит-гейт coordinator-loop требует единых быстрых команд проверки.
- Что:
- добавлен issue 19 для make test и make lint.
- PRD обновлён после закрытия задач 15-18.
- журнал фиксирует follow-up перед финальным review.
- Проверка:
- staged-состав содержит только PRD, журнал и issue 19.
- Зачем:
- coordinator-loop отделяет рабочие изменения от статусов и журнала.
- Что:
- задача 18 переведена в done с закрытыми критериями.
- журнал дополнен ревью, проверками чистого маршрута и коммитом.
- Проверка:
- staged-состав содержит только issue 18 и журнал.
- Зачем:
- курс должен проходить на чистом стенде без архивного сида и скрытых шагов.
- Что:
- уроки 00, 01 и 05 согласованы с генераторными топиками, no-live default и consumer lag.
- упражнение с kafka_msg_ts переведено на повторную заливку без сброса схемы.
- учебный путь в операционной документации ведёт через startup-history.
- Проверка:
- make generated-history-analytics; make up; doc rg checks; git diff --check.
- Зачем:
- coordinator-loop отделяет рабочий срез от статусов и журнала.
- Что:
- задача 17 переведена в done с закрытыми критериями.
- журнал дополнен ревью, bounded runtime gate и коммитом.
- Проверка:
- staged-состав содержит только issue 17 и журнал.
- Зачем:
- зелёный результат проверок должен означать фактический стык и точный контракт дашборда.
- Что:
- проверка startup-history читает manifest, требует live seam и непустой ODS.
- добавлен быстрый runtime gate для daily-wave и live-продолжения.
- Superset sync ограничен целевым dashboard и сверяет существенные params.
- Проверка:
- docker target tests; make generator-test; make generated-history-runtime-check.
- Зачем:
- coordinator-loop отделяет рабочие изменения от статусов и журнала.
- Что:
- задача 16 переведена в done с закрытыми критериями.
- журнал дополнен ревью, стендовым gate и коммитами.
- Проверка:
- staged-состав содержит только issue 16 и журнал.
- Зачем:
- свежий стенд должен доходить до generator_control без скрытых ручных шагов и зависаний.
- Что:
- quick start явно готовит DDL и откладывает Superset init до готового DM.
- generator_control проверяет паузу etl_pipeline до мутирующих шагов.
- make up пересобирает Airflow и поднимает базовый набор сервисов.
- Проверка:
- make generator-test; docker compose config --quiet; make clean; make up; make ddl.
- Зачем:
- coordinator-loop требует отделять рабочий срез от статусов и журнала.
- Что:
- задача 15 переведена в done с закрытыми критериями.
- журнал дополнен происхождением ревью и коммит-гейтом.
- Проверка:
- git status --short и staged-состав перед коммитом.
- Зачем:
- старый state и ручной live-генератор могли тихо писать события в новый мир данных.
- Что:
- добавлена общая проверка чистого стенда для Airflow и host-путей.
- защищены backfill, import, continue и clean-start сценарии live-generator.
- описан миграционный отказ старого state.
- Проверка:
- make generator-test; docker compose config --quiet; py_compile; bash -n.
- Зачем:
- формат даты в имени handoff-файла приведён в соответствие с фактическим шаблоном, который использует скилл.
- Что:
- изменён шаблон имени с `.scratch/handoffs/YYYY-MM-DD-<slug>.md` на `.scratch/handoffs/YYYYMMDD-HHMM-<slug>.md` в AGENTS.md.
- Проверка:
- открыть AGENTS.md и убедиться, что указан актуальный формат.
- Зачем:
- зафиксировать результат кросс-прохода другой родословной по
c672ed0..ec815ce для передачи в багфикс-цепочку.
- Что:
- отчёт: 1 critical, 5 high, 10 medium, 4 low; четыре сквозных семейства
(смешение миров, стенд без live, ложнозелёные проверки, чистый клон).
- маршрутизация находок и предложение порядка багфикс-цепочки.
- Проверка:
- находки доказаны исполнением: мутационные тесты, compose-эксперимент,
зонды на сиде, Context7 по Airflow 2.10.5.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- следующий шаг handoff — независимый ревью диапазона c672ed0..HEAD;
результат нужно зафиксировать для продолжения в новой сессии.
- Что:
- добавлен раздел «Независимый ревью-проход» (свежий взгляд, без субагентов):
вердикт, прогнанные тесты 172+5, находки по задачам, косметические мелочи.
- обновлены «Открытые риски» и «Следующий шаг»: остаётся HITL-приёмка и
решение по задаче 13.
- Проверка:
- git show --stat HEAD; ревью-раздел читается в handoff.
- Зачем:
- финальный review должен видеть согласованные PRD, issue, курс, Superset и архитектурные документы.
- Что:
- обновлены PRD, чекбоксы закрытых issue и журнал coordinator-loop.
- синхронизированы архитектура, карта репозитория, CONTEXT и курс со startup-history-путём.
- убраны старые маркеры Superset-геокарты после перехода на Top Countries.
- Проверка:
- rg-проверки финального review по PRD, issue и Superset-маркерам.
- git diff --cached --check.