Files
orchestrator/docs/work-items/ORCH-091/12-review.md

5.9 KiB
Raw Permalink Blame History

verdict, work_item, stage, author_agent, status, created_at, model_used, type, work_item_id, version
verdict work_item stage author_agent status created_at model_used type work_item_id version
APPROVED ORCH-091 review reviewer approved 2026-06-09 claude-opus-4-8 review ORCH-091 1

Review ORCH-091

Summary

PR закрывает три верифицированных дефекта рендера live-карточки трекера (src/notifications.py, ORCH-067/087): (Д1) застрявший заголовок «To Analyse» из-за неполноты _STAGE_STATUS_LABEL; (Д2) ложные -строки стадий после отката конвейера; (Д3) занижение метрик строки стадии (последний прогон вместо суммы попыток). Изменение аддитивное, indication-only, never-raise: затронут ровно один src-модуль (src/notifications.py), STAGE_TRANSITIONS / QG_CHECKS / check_* / транспорт нотификаций / схема БД — не тронуты.

Проверка по четырём осям пройдена:

  • Соответствие ТЗ — все FR-1…FR-5 реализованы; AC-1…AC-7 выполнены буквально.
  • Соответствие ADR — реализация 1:1 с 06-adr/ADR-001 (D1/D2/D3); read-only-связь notifications.py → stages.STAGE_TRANSITIONS оформлена как указано; is_active_stage не тронут.
  • Качество кода_pipeline_pos / _neutral_stage_label never-raise; докстринги и трассировочные ORCH-091-комментарии присутствуют; полный регресс зелёный (1370).
  • Документация — обновлена в том же PR (см. ниже).

Проверенные инварианты

  • Трассировка ORCH-067/087 (правка маркированного кода): инварианты single-card, never-raise, разделение offline-ядра/live-overlay сохранены — подтверждено ADR (прочитаны перед правкой) и зелёным регрессом test_tracker_status_line.py.
  • Терминал cancelled (ORCH-090, adr-0026): добавлен offline-лейбл cancelled → "Cancelled", совпадает с overlay _LIVE_BRANCH_LABELS['cancelled'] → нет конфликта precedence.
  • Полнота карты от источника истины — тест test_orch091_tc01_* параметризован по STAGE_TRANSITIONS.keys() (не статичный список) → NFR-3 выполнен.
  • Сходимость метрик_stage_line использует те же per-run-формулы, что блок тоталов; тест test_tc07_* проверяет сходимость с SUM(agent_runs) и Σ(строк стадий) ≡ тоталы на done.
  • Нормализация deploy-staging → deploy ограничена гейтом подавления (не затрагивает активный рендер строки «Внедрение») — подтверждено test_tc05_deploy_staging_keeps_deployer_row.
  • Отсутствие циркулярного импортаimport src.notifications; import src.stages → OK.
  • ORCH-079 (обзорные доки)README.md «Известные ограничения» НЕ содержит пункта о дефектах карточки трекера → закрывать/обновлять нечего; gate не нарушен.

Findings

P0 — Blocker

  • Нет.

P1 — Must fix

  • Нет.

P2 — Should fix

  • Нет.

P3 — Nice-to-have (не блокирует)

  • from .stages import STAGE_TRANSITIONS размещён в середине модуля (src/notifications.py после _STAGE_ACTIVE_AGENT, с # noqa: E402). Размещение намеренно и документировано комментарием, циркулярного импорта нет; вынос в шапку модуля — косметическая необязательная уборка на будущее.

Документация

Обновлена в том же PR (golden source синхронен с кодом):

  • CHANGELOG.md — запись ORCH-091 (fix) с описанием трёх дефектов, тестов и отката.
  • docs/architecture/internals.md §7 — описаны откат-подавление , суммирование метрик и полнота _STAGE_STATUS_LABEL.
  • docs/architecture/README.md (Notifications / Live-tracker) — добавлен блок «ORCH-091 (индикация-only)» с тремя правками и ссылкой на ADR. (внесено архитектором, присутствует в PR)
  • ADRdocs/work-items/ORCH-091/06-adr/ADR-001-tracker-status-rollback-metrics.md (status: accepted), решения D1/D2/D3, альтернативы, последствия.
  • README.md (root) — обновление не требуется: ни один пункт «Известные ограничения» не закрывается данным PR (ORCH-079 gate соблюдён).

Изменения src/ сопровождены соответствующим обновлением документации → ось «документация» пройдена; основание для REQUEST_CHANGES по этой оси отсутствует.

Вердикт

APPROVED — нет findings уровня P0/P1; код, тесты и документация согласованы; инварианты ORCH-067/087/090 и NFR-2/NFR-3 сохранены; полный регресс pytest tests/ -q зелёный (1370 passed).