Files
orchestrator/docs/work-items/ORCH-069/12-review.md
claude-bot e1055861b5
All checks were successful
CI / test (push) Successful in 20s
CI / test (pull_request) Successful in 22s
reviewer(ET): auto-commit from reviewer run_id=377
2026-06-08 11:28:16 +00:00

69 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
type: review
work_item_id: ORCH-069
verdict: APPROVED
version: 3
---
# Review ORCH-069
## Summary
Реализация конфигурируемого QG-0 title-лимита `ORCH_QG0_TITLE_MAX` (дефолт 200)
выполнена **дословно по ТЗ/ADR** и качественно. Поле `Settings.qg0_title_max`,
graceful `field_validator(mode="before")` (never-raise → дефолт 200), динамическое
чтение `settings.qg0_title_max` в `_qg0_errors` с f-string-текстом ошибки. Код
изолирован (затронуты только `src/config.py` и `src/webhooks/plane.py`), инварианты
не нарушены, нижние лимиты сохранены. Свежий полный прогон на текущем состоянии
ветки: `pytest tests/ -q`**863 passed** (включая 10 новых тестов ORCH-069,
файл `tests/test_qg0_title_limit.py`, все зелёные). Документация обновлена в том же
PR полностью. Блокирующих и must-fix findings нет → **APPROVED**.
## Соответствие ТЗ / ADR
- `src/config.py` — поле `qg0_title_max: int = 200` + валидатор `_qg0_title_max_default`
(`mode="before"`, try/except → 200 при `None`/пустой/нечисловой): 1:1 с ADR Р-1/Р-2
и ТЗ §2/§5. ✓
- `src/webhooks/plane.py` — хардкод `> 80` заменён на `> settings.qg0_title_max`,
текст ошибки динамический (f-string с актуальным числом); сигнатура `_qg0_errors`,
нижний лимит title `< 5`, проверка description `< 20` не тронуты: ADR Р-3, ТЗ §3/§4. ✓
- Граница строгая (`len == limit` PASS, `limit+1` FAIL) — подтверждена tc01tc04. ✓
- Инварианты (ADR Р-4 / AC-8): `STAGE_TRANSITIONS`, `QG_CHECKS`, схема БД, slug `[:30]`,
soft-QG-0, API — НЕ изменены (diff `src/` = только 2 файла). ✓
## Acceptance criteria
- AC-1 (дефолт 200, граница 201, текст упоминает 200) — tc01/tc02 ✓
- AC-2 (лимит 120, граница 121, текст 120 не 80) — tc03/tc04 ✓
- AC-3 (graceful пустое/`abc` → 200 без краха) — tc05/tc06 + позитив tc07 + валидатор ✓
- AC-4 (нижние лимиты title<5 / desc<20) — tc08/tc09 ✓
- AC-5 (pytest зелёный) — 863 passed ✓
- AC-6 (документация в том же PR) — выполнен полностью ✓
- AC-7 (обратная совместимость, ≤80 проходит при 200) — tc10 ✓
- AC-8 (изоляция изменений) — ✓
## Findings
### P0 — Blocker
- (нет)
### P1 — Must fix
- (нет)
### P2 — Should fix
- (нет)
### P3 — Nice-to-have (не блокирует)
- В конце `06-adr/ADR-001-configurable-qg0-title-limit.md` присутствуют артефактные
хвостовые теги (`</content>`, `</invoke>`). Косметика в артефакте стадии architecture;
на корректность кода/контракта не влияет. Править артефакт чужой стадии в рамках
ревью не уполномочен — отмечено для будущей чистки.
## Документация
- `.env.example` — добавлен `ORCH_QG0_TITLE_MAX=200` с комментарием. ✓
- `.env.staging.example` — добавлен `ORCH_QG0_TITLE_MAX=200`. ✓
- `CHANGELOG.md` — подробная запись об ORCH-069 (раздел Added). ✓
- `README.md` — таблица env-конфигов дополнена строкой `ORCH_QG0_TITLE_MAX`. ✓
- ADR `06-adr/ADR-001-configurable-qg0-title-limit.md` — присутствует, согласован
с кодом. ✓
- `docs/architecture/README.md` / `CLAUDE.md` — обновления не требуют (QG-0 — inline
soft/hard-валидация входа, не зарегистрированный stage-gate; API/стадии/QG-реестр
не менялись). ОК.