Files
orchestrator/docs/work-items/ORCH-069/03-acceptance-criteria.md

4.4 KiB
Raw Blame History

Критерии приёмки — 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 если: затронут любой из перечисленных вне-объёмных элементов.