3.6 KiB
3.6 KiB
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 (D1–D4).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) и фикса (D1–D4).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-sidecancelledбез обращения к Plane, проброс/dedupstate_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), регрессии нет.