reviewer(ET): auto-commit from reviewer run_id=142
All checks were successful
CI / test (push) Successful in 12s
CI / test (pull_request) Successful in 11s

This commit is contained in:
2026-06-06 04:44:57 +00:00
parent 03c3d77cac
commit 4cd55063b4

View 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 не тронуты (§46).
**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 — это страховка следующих
стадий, не блокер ревью.