reviewer(ET): auto-commit from reviewer run_id=373
This commit is contained in:
@@ -1,34 +1,35 @@
|
|||||||
---
|
---
|
||||||
type: review
|
type: review
|
||||||
work_item_id: ORCH-069
|
work_item_id: ORCH-069
|
||||||
verdict: REQUEST_CHANGES
|
verdict: APPROVED
|
||||||
version: 1
|
version: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
# Review ORCH-069
|
# Review ORCH-069
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
Реализация QG-0 title-лимита как конфигурируемого параметра `ORCH_QG0_TITLE_MAX`
|
Реализация конфигурируемого QG-0 title-лимита `ORCH_QG0_TITLE_MAX` (дефолт 200)
|
||||||
(дефолт 200) выполнена качественно и **по ТЗ/ADR дословно**: поле
|
выполнена **дословно по ТЗ/ADR** и качественно: поле `Settings.qg0_title_max`,
|
||||||
`Settings.qg0_title_max`, graceful `field_validator(mode="before")` (never-raise →
|
graceful `field_validator(mode="before")` (never-raise → дефолт 200), динамическое
|
||||||
дефолт 200), динамическое чтение `settings.qg0_title_max` в `_qg0_errors` с
|
чтение `settings.qg0_title_max` в `_qg0_errors` с f-string-текстом ошибки. Код
|
||||||
f-string-текстом ошибки. Код изолирован (затронуты только `src/config.py` и
|
изолирован (затронуты только `src/config.py` и `src/webhooks/plane.py`), инварианты
|
||||||
`src/webhooks/plane.py`), инварианты не нарушены, нижние лимиты сохранены. Полный
|
не нарушены, нижние лимиты сохранены. Полный тест-сет зелёный: `pytest tests/ -q`
|
||||||
тест-сет зелёный: `pytest tests/ -q` → **757 passed** (включая 10 новых).
|
→ **757 passed** (включая 10 новых тестов ORCH-069).
|
||||||
|
|
||||||
Единственная причина REQUEST_CHANGES — **неполная документация**: при наличии в
|
Единственное замечание прошлой ревизии (v1) — отсутствие строки `ORCH_QG0_TITLE_MAX`
|
||||||
`README.md` таблицы конфигов «Все переменные с префиксом `ORCH_`» новый параметр
|
в README-таблице конфигов — **устранено** коммитом `bce287e` (строка добавлена
|
||||||
`ORCH_QG0_TITLE_MAX` в неё не внесён. Это прямо требуется AC-6 и ТЗ §9.
|
в таблицу «Все переменные с префиксом `ORCH_`»). Блокирующих и must-fix findings
|
||||||
|
не осталось → **APPROVED**.
|
||||||
|
|
||||||
## Соответствие ТЗ / ADR
|
## Соответствие ТЗ / ADR
|
||||||
- `src/config.py` — поле `qg0_title_max: int = 200` + валидатор `_qg0_title_max_default`
|
- `src/config.py` — поле `qg0_title_max: int = 200` + валидатор `_qg0_title_max_default`
|
||||||
(mode="before", try/except → 200): 1:1 с ADR Р-1/Р-2 и ТЗ §2/§5. ✓
|
(`mode="before"`, try/except → 200): 1:1 с ADR Р-1/Р-2 и ТЗ §2/§5. ✓
|
||||||
- `src/webhooks/plane.py:362` — хардкод `> 80` заменён на `> settings.qg0_title_max`,
|
- `src/webhooks/plane.py:362` — хардкод `> 80` заменён на `> settings.qg0_title_max`,
|
||||||
текст ошибки динамический; сигнатура `_qg0_errors`, нижний лимит `< 5`, проверка
|
текст ошибки динамический (f-string с актуальным числом); сигнатура `_qg0_errors`,
|
||||||
description `< 20` не тронуты: ADR Р-3, ТЗ §3/§4. ✓
|
нижний лимит `< 5`, проверка description `< 20` не тронуты: ADR Р-3, ТЗ §3/§4. ✓
|
||||||
- Граница строгая (`len == limit` PASS, `limit+1` FAIL) — подтверждена tc01–tc04. ✓
|
- Граница строгая (`len == limit` PASS, `limit+1` FAIL) — подтверждена tc01–tc04. ✓
|
||||||
- Инварианты (AC-8): `STAGE_TRANSITIONS`, `QG_CHECKS`, схема БД, slug `[:30]`,
|
- Инварианты (AC-8): `STAGE_TRANSITIONS`, `QG_CHECKS`, схема БД, slug `[:30]`,
|
||||||
soft-QG-0, API — НЕ изменены (diff = только 2 файла src). ✓
|
soft-QG-0, API — НЕ изменены (diff src = только 2 файла). ✓
|
||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
- AC-1 (дефолт 200, граница 201, текст упоминает 200) — tc01/tc02 ✓
|
- AC-1 (дефолт 200, граница 201, текст упоминает 200) — tc01/tc02 ✓
|
||||||
@@ -36,7 +37,7 @@ f-string-текстом ошибки. Код изолирован (затрон
|
|||||||
- 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-4 (нижние лимиты title<5 / desc<20) — tc08/tc09 ✓
|
||||||
- AC-5 (pytest зелёный) — 757 passed ✓
|
- AC-5 (pytest зелёный) — 757 passed ✓
|
||||||
- AC-6 (документация в том же PR) — **частично: README-таблица не обновлена** ✗ (см. P1)
|
- AC-6 (документация в том же PR) — **выполнен полностью** ✓ (README-таблица дополнена)
|
||||||
- AC-7 (обратная совместимость, ≤80 проходит) — tc10 ✓
|
- AC-7 (обратная совместимость, ≤80 проходит) — tc10 ✓
|
||||||
- AC-8 (изоляция изменений) — ✓
|
- AC-8 (изоляция изменений) — ✓
|
||||||
|
|
||||||
@@ -46,15 +47,7 @@ f-string-текстом ошибки. Код изолирован (затрон
|
|||||||
- (нет)
|
- (нет)
|
||||||
|
|
||||||
### P1 — Must fix
|
### P1 — Must fix
|
||||||
- [ ] **AC-6 / ТЗ §9 не выполнен полностью: README-таблица конфигов не обновлена.**
|
- (нет)
|
||||||
В `README.md` (строки 105–138) есть таблица «Все переменные с префиксом `ORCH_`»,
|
|
||||||
куда внесены даже свежие переменные (ORCH-053/ORCH-060 reconcile). Новый
|
|
||||||
пользовательский параметр `ORCH_QG0_TITLE_MAX` в ней отсутствует — таблица стала
|
|
||||||
неконсистентна собственному заголовку («все переменные»). AC-6 явно требует:
|
|
||||||
«при наличии релевантной таблицы конфигов в README / CLAUDE.md — она обновлена…
|
|
||||||
FAIL если какой-либо из обязательных файлов документации не обновлён (reviewer →
|
|
||||||
REQUEST_CHANGES)». **Действие:** добавить строку в таблицу `README.md`, напр.:
|
|
||||||
`| `ORCH_QG0_TITLE_MAX` | Верхний лимит длины заголовка QG-0 (вход `_qg0_errors`); невалидное/пустое → дефолт (ORCH-069) | `200` |`.
|
|
||||||
|
|
||||||
### P2 — Should fix
|
### P2 — Should fix
|
||||||
- (нет)
|
- (нет)
|
||||||
@@ -63,9 +56,10 @@ f-string-текстом ошибки. Код изолирован (затрон
|
|||||||
- `.env.example` — добавлен `ORCH_QG0_TITLE_MAX=200` с комментарием. ✓
|
- `.env.example` — добавлен `ORCH_QG0_TITLE_MAX=200` с комментарием. ✓
|
||||||
- `.env.staging.example` — добавлен `ORCH_QG0_TITLE_MAX=200`. ✓
|
- `.env.staging.example` — добавлен `ORCH_QG0_TITLE_MAX=200`. ✓
|
||||||
- `CHANGELOG.md` — подробная запись об ORCH-069 (Added). ✓
|
- `CHANGELOG.md` — подробная запись об ORCH-069 (Added). ✓
|
||||||
- ADR `06-adr/ADR-001-configurable-qg0-title-limit.md` — присутствует, согласован с кодом. ✓
|
- `README.md` — таблица env-конфигов дополнена строкой `ORCH_QG0_TITLE_MAX`
|
||||||
- **`README.md` таблица env-конфигов — НЕ обновлена** (новый `ORCH_QG0_TITLE_MAX`
|
(коммит `bce287e`). ✓
|
||||||
отсутствует) → блокирующее замечание P1, нужно дополнить в этом же PR.
|
- ADR `06-adr/ADR-001-configurable-qg0-title-limit.md` — присутствует, согласован
|
||||||
|
с кодом. ✓
|
||||||
- `docs/architecture/README.md` / `CLAUDE.md` — обновления не требуют (QG-0 — inline
|
- `docs/architecture/README.md` / `CLAUDE.md` — обновления не требуют (QG-0 — inline
|
||||||
soft/hard-валидация входа, не зарегистрированный stage-gate; API/стадии/QG-реестр
|
soft/hard-валидация входа, не зарегистрированный stage-gate; API/стадии/QG-реестр
|
||||||
не менялись). ОК.
|
не менялись). ОК.
|
||||||
|
|||||||
Reference in New Issue
Block a user