reviewer(ET): auto-commit from reviewer run_id=423

This commit is contained in:
2026-06-09 02:21:39 +03:00
committed by stream
parent 595c382ac7
commit fe3f1658ba

View File

@@ -0,0 +1,51 @@
---
type: review
work_item_id: ORCH-086
verdict: APPROVED
version: 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), регрессии нет.