From e1055861b5263b6e48526b6b2d21d2662d76c38d Mon Sep 17 00:00:00 2001 From: claude-bot Date: Mon, 8 Jun 2026 11:28:16 +0000 Subject: [PATCH] reviewer(ET): auto-commit from reviewer run_id=377 --- docs/work-items/ORCH-069/12-review.md | 45 ++++++++++++++------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/docs/work-items/ORCH-069/12-review.md b/docs/work-items/ORCH-069/12-review.md index 6e00470..ecd719b 100644 --- a/docs/work-items/ORCH-069/12-review.md +++ b/docs/work-items/ORCH-069/12-review.md @@ -2,43 +2,41 @@ type: review work_item_id: ORCH-069 verdict: APPROVED -version: 2 +version: 3 --- # Review ORCH-069 ## Summary Реализация конфигурируемого QG-0 title-лимита `ORCH_QG0_TITLE_MAX` (дефолт 200) -выполнена **дословно по ТЗ/ADR** и качественно: поле `Settings.qg0_title_max`, +выполнена **дословно по ТЗ/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` -→ **757 passed** (включая 10 новых тестов ORCH-069). - -Единственное замечание прошлой ревизии (v1) — отсутствие строки `ORCH_QG0_TITLE_MAX` -в README-таблице конфигов — **устранено** коммитом `bce287e` (строка добавлена -в таблицу «Все переменные с префиксом `ORCH_`»). Блокирующих и must-fix findings -не осталось → **APPROVED**. +не нарушены, нижние лимиты сохранены. Свежий полный прогон на текущем состоянии +ветки: `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): 1:1 с ADR Р-1/Р-2 и ТЗ §2/§5. ✓ -- `src/webhooks/plane.py:362` — хардкод `> 80` заменён на `> settings.qg0_title_max`, + (`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`, - нижний лимит `< 5`, проверка description `< 20` не тронуты: ADR Р-3, ТЗ §3/§4. ✓ + нижний лимит title `< 5`, проверка description `< 20` не тронуты: ADR Р-3, ТЗ §3/§4. ✓ - Граница строгая (`len == limit` PASS, `limit+1` FAIL) — подтверждена tc01–tc04. ✓ -- Инварианты (AC-8): `STAGE_TRANSITIONS`, `QG_CHECKS`, схема БД, slug `[:30]`, - soft-QG-0, API — НЕ изменены (diff src = только 2 файла). ✓ +- Инварианты (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-3 (graceful пустое/`abc` → 200 без краха) — tc05/tc06 + позитив tc07 + валидатор ✓ - AC-4 (нижние лимиты title<5 / desc<20) — tc08/tc09 ✓ -- AC-5 (pytest зелёный) — 757 passed ✓ -- AC-6 (документация в том же PR) — **выполнен полностью** ✓ (README-таблица дополнена) -- AC-7 (обратная совместимость, ≤80 проходит) — tc10 ✓ +- AC-5 (pytest зелёный) — 863 passed ✓ +- AC-6 (документация в том же PR) — выполнен полностью ✓ +- AC-7 (обратная совместимость, ≤80 проходит при 200) — tc10 ✓ - AC-8 (изоляция изменений) — ✓ ## Findings @@ -52,12 +50,17 @@ graceful `field_validator(mode="before")` (never-raise → дефолт 200), д ### P2 — Should fix - (нет) +### P3 — Nice-to-have (не блокирует) +- В конце `06-adr/ADR-001-configurable-qg0-title-limit.md` присутствуют артефактные + хвостовые теги (``, ``). Косметика в артефакте стадии 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` - (коммит `bce287e`). ✓ +- `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