# Критерии приёмки — ORCH-047 Каждый критерий имеет однозначное условие PASS/FAIL. ## AC-01 — `result: PASS` проходит гейт (главный кейс ORCH-17) - **Дано:** `13-test-report.md` с frontmatter, содержащим только `result: PASS` (без `verdict:`/`status:`). - **Ожидается:** `check_tests_passed(...)` → `(True, ...)`, в reason присутствует «PASS». - **PASS:** возвращается True. **FAIL:** возвращается False. ## AC-02 — `result: FAIL` откатывает задачу - **Дано:** frontmatter с `result: FAIL` (без `verdict:`/`status:`). - **Ожидается:** `(False, ...)`, reason содержит токен отрицания (`FAIL`). - **PASS:** False. **FAIL:** True. ## AC-03 — Negative авторитетен поверх positive (в т.ч. между полями) - **Дано:** `result: PASS`, но `verdict: BLOCKED` (или `status: failed`). - **Ожидается:** `(False, ...)`, reason упоминает negative-токен (`BLOCKED`/`FAILED`). - **PASS:** False. **FAIL:** True. ## AC-04 — Positive в любом из трёх полей даёт PASS - **Дано (каждый подкейс отдельно):** - только `verdict: PASS`; - только `status: PASSED`; - только `result: ready-to-deploy`. - **Ожидается:** все три → `(True, ...)`. - **PASS:** все True. **FAIL:** хоть один False. ## AC-05 — Обратная совместимость (enduro-trails / ORCH-016) - **Дано:** существующие реальные формы из `TestCheckTestsPassed`: - `verdict: PASS` + `status: pass`; - `verdict: PASS — ready-to-deploy`; - `verdict: ready-to-deploy` + `status: PASSED`; - `verdict: stage:ready-to-deploy` + `status: pass`; - `verdict: BLOCKED` + проза «23 passed». - **Ожидается:** результаты идентичны прежним (PASS-кейсы → True, BLOCKED → False). Старые тесты `TestCheckTestsPassed` зелёные. - **PASS:** поведение не изменилось. **FAIL:** любой регресс. ## AC-06 — Ни одно из трёх полей не задано → FAIL - **Дано:** frontmatter без `result`/`verdict`/`status` (например, только `type:`/`version:`); тело может содержать «Result: PASS» прозой. - **Ожидается:** `(False, ...)`, причина про отсутствие машиночитаемого вердикта. - **PASS:** False. **FAIL:** True. ## AC-07 — Только проза, без frontmatter → FAIL - **Дано:** отчёт без YAML-frontmatter, в теле «Result: PASS / All tests passed». - **Ожидается:** `(False, ...)`, причина про отсутствие frontmatter. Прозу не читаем. - **PASS:** False. **FAIL:** True. ## AC-08 — Битый YAML → FAIL без исключения - **Дано:** некорректный YAML во frontmatter. - **Ожидается:** `(False, ...)` c упоминанием YAML/frontmatter, функция НЕ бросает исключение. - **PASS:** False и нет raise. **FAIL:** raise или True. ## AC-09 — Отчёт отсутствует → FAIL - **Дано:** файла `13-test-report.md` нет. - **Ожидается:** `(False, "...not found...")`. - **PASS:** False. **FAIL:** True. ## AC-10 — Реестр гейтов неизменен - **Ожидается:** `QG_CHECKS` содержит ровно те же ключи, что и до изменения; `tests/test_qg_registry_snapshot.py` зелёный. - **PASS:** снапшот совпал. **FAIL:** снапшот изменился. ## AC-11 — Документация и ADR обновлены (правило 2/6 CLAUDE.md) - **Ожидается:** заведён `docs/work-items/ORCH-047/06-adr/ADR-001-*.md`; обновлены `docs/architecture/README.md` (вердикт-парсер testing-гейта) и `CHANGELOG.md`. - **PASS:** все три присутствуют и описывают изменение. **FAIL:** что-либо отсутствует → REQUEST_CHANGES на review. ## AC-12 — Полный регресс зелёный - **Ожидается:** `pytest tests/ -q` — все тесты PASS. - **PASS:** exit code 0. **FAIL:** любой упавший тест.