6.7 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-019 | architecture | architect | proposed | 2026-06-10 | claude-opus-4-8 |
adr-0032: Багфикс-трек — укороченный маршрут конвейера для багов (ORCH-019)
Статус
Proposed
Контекст
Любая задача идёт по полному конвейеру analysis → architecture → development → review → testing → deploy-staging → deploy → done. Для мелкого бага стадия architecture (отдельный прогон
opus-агента architect + ADR + exit-гейт check_architecture_done) избыточна и тратит
токены/время (прецедент ET-9/ET-014 ~35 мин).
Корневой инвариант (нерушимый): упрощаем только аналитику/архитектуру; ни один Quality Gate / под-гейт (security/merge/coverage/image-freshness) / exit-код deploy-хука — НЕ ослаблен (урок ET-8: срезанная проверка = недоделка на проде).
Кросс-каттинговость: затрагивает семантику маршрутизации (advance_stage), вводит новый
leaf-компонент src/bug_fast_track.py и аддитивную колонку tasks.track → регистрируется
сквозным ADR.
Решение
Багфикс-трек — свойство планировщика/точки входа, НЕ Quality Gate.
-
Классификация (
src/bug_fast_track.py, leaf never-raise по образцуserial_gate/labels): задача с меткой PlaneBug(bug_fast_track_label, читается аппаратом ORCH-089labels.has_label) помечаетсяtrack='bug'.applies(repo)(локально, без сети) — первым;has_label(сеть) — только приapplies==True; чтение метки только вstart_pipeline, никогда в горячемclaim_next_job(anti-stall). -
Хранение — аддитивная идемпотентная колонка
tasks.track TEXT DEFAULT 'full'(_ensure_column, паттернtasks.cancelled_atORCH-090); читается вadvance_stageиз БД (не из сети). -
Routing-override —
STAGE_TRANSITIONSиget_next_stage/get_agent_for_stageостаются чистыми (1:1). Вadvance_stage, на ребре выхода изanalysis, приtrack='bug':next_stage→development(вместоarchitecture),next_agent→developer(вместоarchitect). Багфикс физически минует стадиюarchitecture→ её exit-гейтcheck_architecture_doneи06-adr/для багфикса не исполняются. -
Гейт
analysisне трогаем —check_analysis_complete/check_analysis_approvedбайт-в-байт прежние; lite-аналитик эмитит все 4 файла (01-bug-report / 02-03 краткие заглушки / 04 план обязательного регресс-теста). Экономия — пропуск всей стадииarchitecture, не число файлов. -
Эскалация (обратимость) —
POST /bug-fast-track/escalate?work_item=<id>сбрасываетtrack→'full'(+ self-escalate мини-аналитика); задача далее идёт черезarchitecture. -
Условность/откат —
bug_fast_track_enabled(kill-switch),bug_fast_track_label,bug_fast_track_repos(CSV; пусто → self-hosting only).False/неприменимый репо → путь старта и маршрут байт-в-байт прежние. -
Наблюдаемость — read-only блок
bug_fast_trackвGET /queue(флаг/область/метка + счётчикtrack='bug'+ метрика экономии изagent_runs); лог на решение о маршруте; опц.🐞в Telegram-карточке.
Кросс-каттинговые инварианты (НЕ нарушаются)
STAGE_TRANSITIONSструктурно не меняется (нет новых/удалённых стадий);cancelled/doneстоки и предикаты терминальности (ORCH-090) не затронуты.- Реестр
QG_CHECKS, сигнатурыcheck_*, вердикт-ключи (verdict:/result:/deploy_status:/staging_status:/security_status:/coverage_status:), порядок под-гейтов — байт-в-байт. - Врезка ORCH-019 в
advance_stage— ТОЛЬКО на ребре выхода изanalysis, ДО всех deploy-edge под-гейтов (ORCH-022/043/027/058) и Phase A/B (ORCH-036/059) → их инварианты сохранены. - Композиция с serial-gate (ORCH-088), auto-label (ORCH-089), coverage-gate (ORCH-027), merge-gate (ORCH-043) — багфикс-задача остаётся обычной задачей репо.
Последствия
- + Багфикс минует стадию
architecture(основная экономия), гейты качества сохранены. - + Аддитивно, под kill-switch, per-repo, never-raise, fail-safe → полный цикл; нулевая регрессия для enduro и orchestrator при выключении.
- − lite-аналитик эмитит 02/03 заглушки (компромисс ради неизменности гейта); эскалация v1 требует операторского действия (авто-триаж сложности — будущее, ORCH-13/Вариант 3).
- Откат:
bug_fast_track_enabled=False(мгновенно); колонкаtasks.trackаддитивна и безвредна (дефолт'full').
Связанные решения
- ORCH-089 (auto-label) — переиспользуемый аппарат label-чтения: adr-0018
- ORCH-088 (serial gate) — композиция очереди репо
- ORCH-027 (coverage-gate) — структурный союзник BR-4: adr-0029
- ORCH-090 (cancelled) — паттерн аддитивной колонки
tasks.*: adr-0026
Ссылки
- Детальный ADR задачи:
docs/work-items/ORCH-019/06-adr/ADR-001-bug-fast-track.md - BRD/TRZ/AC:
docs/work-items/ORCH-019/01-brd.md,02-trz.md,03-acceptance-criteria.md