reviewer(ET): auto-commit from reviewer run_id=423
This commit is contained in:
51
docs/work-items/ORCH-086/12-review.md
Normal file
51
docs/work-items/ORCH-086/12-review.md
Normal 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 (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-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), регрессии нет.
|
||||
Reference in New Issue
Block a user