- Зачем:
- следующая сессия после compaction продолжает конвейерное
исполнение фичи; нужен свежий вход без потери уроков приёмки #3.
- Что:
- новый handoff 20260722-2029: порядок #4 → #5, уроки приёмки,
сводная карта работ (карта #10 и бэклог ждут решения #18).
- удалены два отработанных handoff'а (одноразовые по ADR-0003).
- Проверка:
- cat .scratch/handoffs/20260722-2029-finish-mentee-path.md
This commit is contained in:
@@ -1,104 +0,0 @@
|
||||
# Handoff: старт редизайна пути менти — спека и пилот GitHub Issues
|
||||
|
||||
Дата: 2026-07-19 22:29.
|
||||
Жанр: handoff по ADR-0003 — точка входа в новую фичу на чистой ветке.
|
||||
|
||||
## Контекст
|
||||
|
||||
- `feature/data-generator` (146 коммитов) влита в main (`0e312b3`) и
|
||||
запушена. Перед слиянием закрыта задача 21: баг F1 (необязательные поля
|
||||
формы `generator_control` требовались как обязательные) починен через
|
||||
`Param(None, type=["null", "string"])`, `.gitignore` покрыл артефакты
|
||||
`data/*.json`, доки (`ARCHITECTURE.md`, `REPO_MAP.md`) догнали код.
|
||||
`make test` (205 + 31) и `make lint` зелёные.
|
||||
- `.scratch` очищен целиком (решение пользователя 2026-07-19): задачи
|
||||
01–21, PRD, журналы и старые handoff'ы — одноразовые материалы, всё
|
||||
долговечное перенесено в `docs/` (ADR 0004–0006, спеки, runbook
|
||||
`startup-history`). История доступна в git: см. состояние на `0e312b3`,
|
||||
ключевой файл находок —
|
||||
`.scratch/generator-model-time-startup-history/hitl-findings.md@0e312b3`.
|
||||
|
||||
## Направление работ: редизайн пути менти
|
||||
|
||||
Рамочная модель (из ручного HITL 2026-07-19, подтверждена по
|
||||
`launch.py`): основной режим менти — **`import` готового артефакта**
|
||||
(база), от одного восстановленного состояния две ветки-лабы:
|
||||
**`next-day`** (пакетно добавить сутки) и **`continue`** (живой поток,
|
||||
оправдывает скорость ×60). `backfill` в целевой модели — инструмент
|
||||
мейнтейнера для сборки артефакта, не первый шаг менти.
|
||||
|
||||
Ориентировочно 4 задачи:
|
||||
|
||||
1. **Ядро: эталонный 3-дневный артефакт** на профиле `daily-wave` как
|
||||
база менти через `import`. Факты: артефакт 6h = 49 МБ raw; `xz -9e`
|
||||
жмёт 48× (1,1 МБ за 13,5 с); 3 дня ≈ 13 МБ сжатого — кладётся в
|
||||
обычный git. Паттерн-образец: `airflow-greenplum-solution`
|
||||
(`bookings/seed/demo.sql.xz`). Открыто: нужен ли артефакту
|
||||
`raw_topics` или хватит компактного `state`.
|
||||
2. **Один учебный профиль**: `daily-wave` (волна, ×60) — учебный,
|
||||
`ci` (×1, плоский) — служебный для тестов; форма не должна
|
||||
подсовывать `ci` первым. Перед слиянием проверить, не зависит ли
|
||||
runtime-seam-тест от скорости ×1.
|
||||
3. **Расписание + инкремент**: беспараметрный DAG `next-day` (удобство
|
||||
менти и пригодность к `schedule`) + инкрементальные счётчики manifest:
|
||||
сейчас `next-day` перечитывает всю Kafka-историю с нуля — O(N²) по
|
||||
дням и рост RAM (риск OOM); замер: день 2 = 638 с, узкое место —
|
||||
генерация+пересчёт, не ETL (30 с). Параллелить нельзя (детерминизм),
|
||||
правильный рычаг — накопленное состояние счётчиков в manifest/state.
|
||||
4. **Баг-фиксы**: F5 — быстрый разлогин Airflow и Superset (ротация
|
||||
секрета исключена; копать время жизни сессии/cookie); F4 — JS-ошибка
|
||||
авто-refresh в Airflow Grid (косметика, низкий приоритет).
|
||||
|
||||
Отдельная линия (после инфраструктуры): три режима → свои лабы в
|
||||
`docs/course/` (`import` — общая база; `next-day` — пакетная
|
||||
инкрементальная обработка; `continue` — потоковый приём).
|
||||
|
||||
## Пилот GitHub Issues (решение пользователя 2026-07-19)
|
||||
|
||||
Новый процесс для этой фичи:
|
||||
|
||||
- Спека редизайна — файлом в репозитории (материал — hitl-findings из
|
||||
истории git, см. выше).
|
||||
- Тонкий корневой issue на GitHub со ссылкой на спеку и чекбоксами на
|
||||
дочерние issues; дочерние — полноценные самодостаточные постановки.
|
||||
- Triage-метки — пять канонических ролей из `docs/agents/triage-labels.md`
|
||||
как настоящие метки GitHub.
|
||||
- В том же заходе поправить контракт: AGENTS.md и
|
||||
`docs/agents/issue-tracker.md` сейчас говорят «GitHub Issues не
|
||||
используются» — заменить на правила пилота. Старые задачи не
|
||||
мигрировать (архив в истории git).
|
||||
|
||||
## Что дальше (порядок; обновлено 2026-07-19 23:0x)
|
||||
|
||||
Сделано в тот же вечер: контракт трекера переведён на GitHub Issues
|
||||
(метки созданы), спека написана и проверена свежим взглядом —
|
||||
`docs/specs/2026-07-19-mentee-path-redesign.md` (источник истины: путь
|
||||
менти, `world_init`, `world_next_day`, эталонный мир, 4 дочерних issue).
|
||||
`hitl-findings.md` восстановлен в `.scratch/` как рабочий материал.
|
||||
Термины «мир», «эталонный мир», «три режима менти» — в CONTEXT.md.
|
||||
|
||||
Осталось:
|
||||
|
||||
1. Корневой issue + 4 дочерних на GitHub по спеке (раздел «Форма работ»).
|
||||
Багфиксы уже в трекере: #1 (F5, разлогин), #2 (F4, JS Grid).
|
||||
Осталось завести два issue «не забыть»: редизайн лаб курса (отстали
|
||||
от реальности, не заработают) и инкрементальный ETL (техдолг:
|
||||
`full_refresh` пересчитывает весь мир на каждый `world_next_day`;
|
||||
растёт с миром; исторический контекст — `plans/incremental-etl-v2.md`;
|
||||
кандидат в материал лабы про инкрементальную обработку).
|
||||
2. Работа по задачам конвейером `claude-subagent-playbook`.
|
||||
3. Решить судьбу локальной ветки `feature/data-generator-kimi`
|
||||
(пользователь ещё не ответил).
|
||||
|
||||
## Состояние стенда
|
||||
|
||||
Стенд поднят: мир 1,25 суток на профиле `ci`, `model_t_end` =
|
||||
`2026-01-02 06:00`, live-генератор не запущен, дашборд — Superset id 1.
|
||||
Для новой работы, скорее всего, понадобится чистый прогон (`make clean`).
|
||||
|
||||
## Suggested skills
|
||||
|
||||
- `claude-subagent-playbook` — конвейер задач.
|
||||
- `conventional-commits` — коммиты.
|
||||
- `research` / Context7 — фактура для спеки (формат артефакта, Airflow
|
||||
`schedule`).
|
||||
@@ -1,62 +0,0 @@
|
||||
# Handoff: mentee-path (#4/#5 на фронтире) и карта «Боевой реализм»
|
||||
|
||||
Дата: 2026-07-22 19:13. Ветка: `feature/mentee-path` (запушена, см. ниже).
|
||||
|
||||
## Что сделано в этой сессии
|
||||
|
||||
- **Issue #6 закрыт** (коммит `b87dde7`): учебный профиль по умолчанию —
|
||||
`daily-wave`, `ci` — служебный, передаётся явно.
|
||||
- **Issue #3 закрыт** (коммит `10ee1a1`): эталонный мир в git —
|
||||
`data/startup_history/reference-world.json.xz` (3 модельных дня
|
||||
`daily-wave`, ~850 МБ JSON → 32 МБ xz), чтение/запись `.xz` потоково,
|
||||
пустая форма пульта и `make startup-history-import` читают эталон.
|
||||
Приёмка: импорт на чистом стенде 2м03с, manifest совпал (280437
|
||||
событий / 26083 визита / 4056 пользователей), Superset видит те же
|
||||
числа. Два круга правок по ревью и живой приёмке — детали в
|
||||
комментарии к issue #3.
|
||||
Важное побочное решение: **длительность профиля `daily-wave` = 3d**
|
||||
(иначе валидация import не сходится с трёхдневным эталоном).
|
||||
- **Документ о реализме** (коммит `068d96f`):
|
||||
`docs/generator-realism.md` — границы применимости генератора.
|
||||
- **Карта wayfinder #10 «Боевой реализм стенда»** создана и уже
|
||||
отработала три тикета (#11 документ, #12 ресурсы, #13 цена кластера —
|
||||
ответы в комментариях тикетов, гисты в карте).
|
||||
|
||||
## Состояние трекера
|
||||
|
||||
- **Фича mentee-path** (корень #9, спека
|
||||
`docs/specs/2026-07-19-mentee-path-redesign.md`): фронтир — **#4**
|
||||
(`generator_control` → `world_init`, дефолт операции `import`,
|
||||
беспараметрный `world_next_day`) и **#5** (инкрементальные счётчики
|
||||
manifest). Оба `ready-for-agent`, конвейер — `codex-subagent-playbook`.
|
||||
- **Карта #10**: фронтир — **#18 «Модель данных: широкое событие и
|
||||
второй источник»** (HITL, брать через `/wayfinder 18`). За ним
|
||||
каскад: #14 кластер, #15 purchase, #16 identity, #17 спека.
|
||||
История перекройки (формат доставки возвращён из Out of scope) — в
|
||||
теле карты.
|
||||
- Прочее открытое: #1, #2 (багфиксы), #7 (лабы курса), #8 (инкрементальный ETL).
|
||||
|
||||
## Состояние стенда
|
||||
|
||||
Полный стенд поднят (11 контейнеров), эталонный мир импортирован,
|
||||
Superset инициализирован (дашборд id 1). Для новой работы над #4
|
||||
чистить не обязательно; для приёмки #4 понадобится живой Airflow.
|
||||
|
||||
## Грабли сессии (для приёмки в WSL)
|
||||
|
||||
- Docker Desktop WSL: `docker info` может отвечать через Windows-CLI
|
||||
раньше, чем появится unix-сокет — перед `make test` проверять
|
||||
`[ -S /var/run/docker.sock ]`. (Кандидат в lessons скилла
|
||||
codex-subagent-playbook — с пользователем ещё не согласован.)
|
||||
- Хостовые `uv run` с модулями генератора требуют
|
||||
`--with-requirements generator/requirements.txt` (починено в
|
||||
`assert_stand_clean.sh`, коммит `10ee1a1`).
|
||||
|
||||
## Suggested skills
|
||||
|
||||
- `codex-subagent-playbook` — для #4/#5 (исполнитель Codex gpt-5.6-sol,
|
||||
medium; ревью по риску).
|
||||
- `wayfinder` — для тикетов карты #10 (следующий — #18, это grilling
|
||||
с пользователем).
|
||||
- `conventional-commits` — коммиты.
|
||||
- `grilling` + `domain-modeling` — внутри #18.
|
||||
@@ -0,0 +1,65 @@
|
||||
# Handoff: добить mentee-path (#4, затем #5)
|
||||
|
||||
Дата: 2026-07-22 20:29. Ветка: `feature/mentee-path` (запушена).
|
||||
Фокус следующей сессии: конвейерное исполнение оставшихся issues фичи.
|
||||
|
||||
## Ближайшая работа
|
||||
|
||||
Корень фичи — issue #9, спека —
|
||||
`docs/specs/2026-07-19-mentee-path-redesign.md` (источник истины).
|
||||
Осталось два дочерних issue, оба `ready-for-agent`:
|
||||
|
||||
1. **#4 «Поверхность DAG'ов»** — брать первым (виден менти сразу):
|
||||
`generator_control` → `world_init`, дефолт операции `import`,
|
||||
беспараметрный `world_next_day` с paused-расписанием, синхронная
|
||||
правка доков и контрактных тестов.
|
||||
2. **#5 «Инкрементальные счётчики manifest»** — `next-day` без
|
||||
перечитки всей Kafka; предусловие включения расписания.
|
||||
|
||||
Конвейер — скилл `codex-subagent-playbook`: координатор здесь, Codex
|
||||
(gpt-5.6-sol, medium) исполняет, независимое ревью по риску, живая
|
||||
приёмка на стенде. После закрытия обоих — закрыть корень #9 и обсудить
|
||||
с пользователем слияние ветки.
|
||||
|
||||
## Уроки прошлой приёмки (issue #3) — применить в #4/#5
|
||||
|
||||
- Перед живой приёмкой — предполётный чек: `[ -S /var/run/docker.sock ]`
|
||||
(Docker Desktop WSL отвечает через Windows-CLI раньше сокета) и что
|
||||
подняты все сервисы шага, включая Superset. В #3 один круг приёмки
|
||||
ушёл впустую именно из-за неподнятого Superset.
|
||||
- При постановке исполнителю сверять границы («что не трогать»)
|
||||
с критериями приёмки issue — в #3 они противоречили друг другу.
|
||||
- Хостовые `uv run` с модулями генератора требуют
|
||||
`--with-requirements generator/requirements.txt`.
|
||||
- Автотесты не ловят дефекты интеграции (bind-mount путей, стыковку
|
||||
профиля с эталоном) — живую приёмку на чистом стенде не пропускать.
|
||||
|
||||
## Внимание в #4
|
||||
|
||||
Переименование dag_id теряет историю прогонов старого — принято спекой
|
||||
(решение 2). Эталонный мир уже в git
|
||||
(`data/startup_history/reference-world.json.xz`, 3 дня `daily-wave`);
|
||||
пустая форма пульта уже читает его по умолчанию (сделано в #3) —
|
||||
в #4 меняется имя DAG и дефолт операции, не пути.
|
||||
|
||||
## Остальной трекер (не трогать в этой сессии)
|
||||
|
||||
- **Карта #10 «Боевой реализм стенда»**: фронтир — #18 «Модель данных»
|
||||
(HITL-гриллинг, вход `/wayfinder 10`, лучше отдельной свежей сессией).
|
||||
За ним каскад #14 кластер → #15 purchase → #16 identity → #17 спека.
|
||||
- **#7 (лабы курса) и #8 (инкрементальный ETL) сознательно ждут решения
|
||||
#18**: смена модели данных обесценила бы работу по ним.
|
||||
- #1, #2 — независимые багфиксы UI, фоном.
|
||||
|
||||
## Состояние стенда
|
||||
|
||||
Полный стенд поднят (11 контейнеров), эталонный мир импортирован,
|
||||
Superset инициализирован (дашборд id 1). Для приёмки #4 нужен живой
|
||||
Airflow; чистка стенда перед работой не обязательна, но приёмку #4
|
||||
делать на чистом стенде (путь менти с пустыми формами).
|
||||
|
||||
## Suggested skills
|
||||
|
||||
- `codex-subagent-playbook` — конвейер для #4/#5.
|
||||
- `conventional-commits` — коммиты (русский, Зачем/Что/Проверка).
|
||||
- `wayfinder` — только если пользователь сам переключится на карту #10.
|
||||
Reference in New Issue
Block a user