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

4.1 KiB
Raw Blame History

type, work_item_id, verdict, version
type work_item_id verdict version
review ORCH-069 APPROVED 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/ -q863 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-реестр не менялись). ОК.