reviewer(ET): auto-commit from reviewer run_id=142
This commit is contained in:
83
docs/work-items/ORCH-046/12-review.md
Normal file
83
docs/work-items/ORCH-046/12-review.md
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
type: review
|
||||
work_item_id: ORCH-046
|
||||
verdict: APPROVED
|
||||
version: 1
|
||||
---
|
||||
|
||||
# Review ORCH-046
|
||||
|
||||
## Summary
|
||||
|
||||
Правка ядра «вариант A»: при заворотах на `development` `task_desc` теперь несёт
|
||||
**дословный must-fix текст** (P0/P1 ревьюера, причина FAIL тестера) вместо одной
|
||||
ссылки на файл. Извлечение вынесено в новый defensive-модуль `src/review_parse.py`
|
||||
с контрактом «never raise»; две rollback-ветки `_handle_qg_failure_rollbacks`
|
||||
встраивают текст и сохраняют ссылку как «Полный контекст», при пустом/битом
|
||||
артефакте — graceful-фоллбэк на прежнюю строку.
|
||||
|
||||
Реализация полностью соответствует ТЗ (`02-trz.md`), ADR-001 и всем критериям
|
||||
приёмки. Документация обновлена в этом же PR. Тесты зелёные (`461 passed`).
|
||||
|
||||
Проверено по осям:
|
||||
|
||||
**1. Соответствие ТЗ.** Сигнатуры `extract_review_findings`/`extract_test_failures`
|
||||
точно как в ТЗ §2; never-raise, логирование на `logger.debug`, модульные лимиты
|
||||
`MAX_FINDINGS_CHARS`/`MAX_FAILURES_CHARS`, отбрасывание frontmatter, устойчивость
|
||||
P0/P1-заголовков к регистру/тире, пропуск плейсхолдеров `(если есть)`/`<…>`,
|
||||
приоритет источников тестера (`## Вывод pytest` → FAIL-строки `## Результаты` →
|
||||
`## Итог`). Префикс `task_desc`, `reason` в tester-ветке, ссылка-фоллбэк — как
|
||||
предписано §3. API/БД/QG не тронуты (§4–6).
|
||||
|
||||
**2. Соответствие ADR-001.** Отдельный модуль (blast radius), путь через
|
||||
`get_worktree_path`, изоляция ядра (меняется только строка `task_desc`),
|
||||
последовательность отката и поля `AdvanceResult` сохранены. Per-work-item ADR
|
||||
обоснован. Реализация ⇄ решение совпадают.
|
||||
|
||||
**3. Качество кода.** Docstrings на всех публичных функциях; defensive `_read`
|
||||
ловит `OSError`, внешний `try/except Exception` в обоих экстракторах гарантирует
|
||||
never-raise (подтверждено кейсом на directory-path). Регэксп `_P01_HEADER_RE`
|
||||
корректно отсекает ложные совпадения (`P05` и т.п.). Код читабелен, без дублей.
|
||||
|
||||
**4. Качество тестов.** `tests/test_review_parse.py` покрывает TC-01..08 (findings
|
||||
есть / только P2-P3 / нет файла / битый YAML / усечение / регистр-тире / directory).
|
||||
`tests/test_stage_engine.py::TestRollbackTaskDescEmbedding` проверяет встраивание
|
||||
в обе ветки, graceful-фоллбэк, неизменность retry/rollback на 4-м заходе (alert
|
||||
вместо enqueue). Содержательные, не тривиальные.
|
||||
|
||||
## Findings
|
||||
|
||||
### P0 — Blocker
|
||||
- [ ] (нет)
|
||||
|
||||
### P1 — Must fix
|
||||
- [ ] (нет)
|
||||
|
||||
### P2 — Should fix
|
||||
- [ ] (нет)
|
||||
|
||||
## Соответствие критериям приёмки
|
||||
|
||||
- AC-1 (дословные P0/P1 в `task_desc`) — PASS: `Findings (P0/P1):\n{findings}`.
|
||||
- AC-2 (причина тестера: `reason` + фрагмент тела) — PASS: `Причина: {reason}` + `Детали:`.
|
||||
- AC-3 (ссылка на полный файл сохранена) — PASS: «Полный контекст»/fallback-ссылка в обеих ветках.
|
||||
- AC-4 (graceful never-raise) — PASS: `""`→ссылка-фоллбэк, исключений нет (тесты TC-03/04/07/08, directory-path).
|
||||
- AC-5 (тесты зелёные + новые юнит-тесты) — PASS: `461 passed`; все перечисленные кейсы присутствуют.
|
||||
- AC-6 (retry/rollback не изменены) — PASS: TC-12 + существующие rollback-тесты зелёные.
|
||||
- AC-7 (out-of-scope не затронут) — PASS: diff не касается `src/qg/checks.py`, `src/webhooks/*`, `usage.py`, `stages.py`, `main.py`; сигнатуры публичных функций не менялись.
|
||||
- AC-8 (документация + ADR) — PASS: ADR-001 заведён, `CHANGELOG.md` и `docs/architecture/README.md` обновлены.
|
||||
|
||||
## Документация
|
||||
|
||||
Обновлена корректно и в том же PR (golden source соблюдён):
|
||||
- `docs/work-items/ORCH-046/06-adr/ADR-001-embed-findings-in-task-desc.md` — заведён (правка ядра).
|
||||
- `CHANGELOG.md` — запись ORCH-046 в `[Unreleased] / Added`.
|
||||
- `docs/architecture/README.md` — добавлен компонент **Review/Test Parsers** и раздел **Обогащение `task_desc` при заворотах (ORCH-046)**.
|
||||
|
||||
Изменение `src/` сопровождено обновлением документации — требование п.4/п.6 правил
|
||||
агентов выполнено.
|
||||
|
||||
## Примечание (self-hosting)
|
||||
Правка ядра в общем прод-инстансе. Перед прод-деплоем обязательна стадия
|
||||
`deploy-staging` (8501) согласно ADR-001 / CLAUDE.md — это страховка следующих
|
||||
стадий, не блокер ревью.
|
||||
Reference in New Issue
Block a user