57 lines
4.4 KiB
Markdown
57 lines
4.4 KiB
Markdown
# Критерии приёмки — ORCH-069
|
||
|
||
Work Item ID: ORCH-069
|
||
|
||
Формат: каждый критерий имеет чёткое условие PASS/FAIL.
|
||
|
||
## AC-1 — Дефолтный лимит 200, граница на 201
|
||
**Дано:** env `ORCH_QG0_TITLE_MAX` не задан (используется дефолт 200), description валиден (≥ 20 символов).
|
||
**Тогда:**
|
||
- заголовок длиной 200 символов → `_qg0_errors` НЕ содержит ошибки про длину title (PASS);
|
||
- заголовок длиной 201 символ → `_qg0_errors` содержит ошибку про длину title, и текст ошибки упоминает «200».
|
||
**FAIL если:** на 200 появляется ошибка длины, либо на 201 ошибки нет, либо текст не упоминает 200.
|
||
|
||
## AC-2 — Настраиваемый лимит 120, граница на 121
|
||
**Дано:** `ORCH_QG0_TITLE_MAX=120` (через мок/патч settings в тесте), description валиден.
|
||
**Тогда:**
|
||
- заголовок 120 символов → нет ошибки длины title (PASS);
|
||
- заголовок 121 символ → есть ошибка длины title, текст упоминает «120».
|
||
**FAIL если:** граница срабатывает не на 121, либо текст ошибки упоминает не 120.
|
||
|
||
## AC-3 — Graceful при невалидном/пустом значении
|
||
**Дано:** `ORCH_QG0_TITLE_MAX` пустой (`""`) или нечисловой (`"abc"`).
|
||
**Тогда:**
|
||
- инстанцирование `Settings()` / импорт приложения НЕ выбрасывает исключение (процесс не падает);
|
||
- эффективное значение лимита = дефолт 200 (поведение AC-1 сохраняется).
|
||
**FAIL если:** старт процесса падает с `ValidationError`, либо лимит != 200.
|
||
|
||
## AC-4 — Нижние лимиты не сломаны
|
||
**Дано:** любое валидное значение `ORCH_QG0_TITLE_MAX`.
|
||
**Тогда:**
|
||
- заголовок длиной < 5 символов → `_qg0_errors` содержит ошибку «Title слишком короткий»;
|
||
- description длиной < 20 символов → `_qg0_errors` содержит ошибку «Description слишком короткий».
|
||
**FAIL если:** нижний лимит title или лимит description перестал срабатывать.
|
||
|
||
## AC-5 — Юнит-тесты зелёные
|
||
**Дано:** реализованные юнит-тесты на `_qg0_errors` с разными значениями лимита (мок settings).
|
||
**Тогда:** `pytest tests/ -q` проходит полностью (зелёный), включая новые тесты ORCH-069 и существующий набор.
|
||
**FAIL если:** хотя бы один тест падает.
|
||
|
||
## AC-6 — Документация обновлена в том же PR
|
||
**Дано:** PR с изменениями кода.
|
||
**Тогда в том же PR:**
|
||
- `.env.example` содержит `ORCH_QG0_TITLE_MAX` с дефолтом и комментарием;
|
||
- `.env.staging.example` содержит `ORCH_QG0_TITLE_MAX`;
|
||
- `CHANGELOG.md` содержит запись об ORCH-069;
|
||
- при наличии релевантной таблицы конфигов в README / `CLAUDE.md` — она обновлена.
|
||
**FAIL если:** какой-либо из обязательных файлов документации не обновлён (reviewer → REQUEST_CHANGES).
|
||
|
||
## AC-7 — Обратная совместимость
|
||
**Дано:** env не задан.
|
||
**Тогда:** любой заголовок, который проходил QG-0 при прежнем лимите 80 (len ≤ 80), проходит и теперь (len ≤ 200).
|
||
**FAIL если:** ранее валидный заголовок отклоняется.
|
||
|
||
## AC-8 — Изоляция изменений
|
||
**Тогда:** не изменены slug-логика (`[:30]`), схема БД, реестры `STAGE_TRANSITIONS` / `QG_CHECKS`, контракты `handle_*`, soft-QG-0 поведение (warning на `work_item.created`).
|
||
**FAIL если:** затронут любой из перечисленных вне-объёмных элементов.
|