69 lines
4.1 KiB
Markdown
69 lines
4.1 KiB
Markdown
---
|
||
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) — подтверждена tc01–tc04. ✓
|
||
- Инварианты (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-реестр
|
||
не менялись). ОК.
|