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

3.6 KiB
Raw Permalink Blame History

type, work_item_id, verdict, version
type work_item_id verdict version
review ORCH-086 APPROVED 1

Review ORCH-086

Summary

Терминал-скип и state_uuid-dedup распространены на путь F-1 реконсилятора, закрывая F-1-пробел ORCH-068 (ложное «ET-002 done разблокирована (потерян webhook)»). Изменение полностью локализовано в src/reconciler.py (новый _resolve_issue_status + врезка ранних гардов в _reconcile_gate_task

  • переиспользование резолва в _is_blocked_or_needs_input через опц. аргументы с _UNSET-sentinel для обратной совместимости). Реализация 1:1 соответствует ТЗ (TR-1/TR-2/TR-3) и ADR-001 (D1D4). STAGE_TRANSITIONS, QG_CHECKS, схема БД, сигнатуры advance_stage/advance_if_gate_passed/ _note_unblock, форма status()/GET /queue, config-флаги — без изменений. Контракт never-raise сохранён на всех новых путях. Полный прогон pytest tests/ -q зелёный — 1069 passed.

Findings

P0 — Blocker

  • (нет)

P1 — Must fix

  • (нет)

P2 — Should fix

  • (нет)

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

Обновлена в том же PR, соответствует требованию «golden source наравне с кодом» (CLAUDE.md §2, TRZ §8):

  • docs/architecture/README.md — раздел Reconciler F-1 дополнен блоком ORCH-086 (терминал-скип + dedup на F-1, единый fetch на тик, безусловность относительно reconcile_skip_blocked_enabled).
  • CHANGELOG.md — запись fix: ORCH-086 с описанием корня (причины A/B) и фикса (D1D4).
  • docs/work-items/ORCH-086/06-adr/ADR-001-reconciler-f1-terminal-skip-and-dedup.md — присутствует, Accepted, описывает решение, порядок гардов, семантику ошибок и отклонённые альтернативы.
  • API не менялось → обновление таблицы API не требуется. Per-work-item ADR достаточно (точечный фикс существующего компонента, не сквозное решение — обосновано в §«Область и масштаб»).

Контроль качества

  • Тесты содержательные, не тривиальные: TC-86-01..09/11 (tests/test_reconciler.py) покрывают терминал по группе completed/cancelled, fallback по логическому ключу при пустых groups, DB-side cancelled без обращения к Plane, проброс/dedup state_uuid, анти-регресс легитимного unblock, never-raise без ложного уведомления, независимость терминал-скипа от Guard-2-флага; TC-86-10 (tests/test_reconciler_plane.py) — неизменность формы status(); TC-86-12 — зелёный регресс-прогон. Сопутствующая правка tests/test_orch026_task_deps.py корректно адаптирует мок Guard 2 под новую сигнатуру и держит резолв offline.
  • task.get("plane_id") or task.get("plane_issue_id") в _resolve_issue_status — дословный перенос ранее протестированной логики Guard 2 (ORCH-060), регрессии нет.