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

131 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
work_item: ORCH-105
stage: analysis
author_agent: analyst
status: ready-for-review
created_at: 2026-06-12
model_used: claude-opus-4-8
---
# 03 — Критерии приёмки (Acceptance Criteria): ORCH-105 — Подготовка презентации по орку
Work Item: **ORCH-105** · Repo: **orchestrator** · Стадия: analysis
Формат: каждый критерий имеет **PASS** (что должно быть истинно для приёмки) и **FAIL**
(что считается провалом). Любой машинный/ручной reviewer проверяет их буквально по файлам
репозитория.
---
## AC-1 — Слайд про Lite-установку присутствует и точен
**Условие:** `docs/overview/presentation.md` содержит выделенный слайд про Lite-установку.
- **PASS:** есть слайд (блок `## Слайд N: …`), посвящённый Lite-установке, с тезисами,
отражающими: два контейнера платформы (`orchestrator` + `orchestrator-watchdog`),
развёртывание без правки кода (только конфиг), скрипты-помощники (`gen_secrets.py`,
`onboard_project.py`) и/или `docker compose`, пошаговый runbook `LITE_SETUP.md` с проверкой
шагов. Факты согласованы с `docs/deployment/LITE_SETUP.md`.
- **FAIL:** слайда нет; ИЛИ слайд называет Lite «единым монолитным инсталлятором»/упоминает
несуществующий скрипт; ИЛИ путает Lite с Bundled; ИЛИ факты расходятся с `LITE_SETUP.md`.
---
## AC-2 — Слайды «как пользоваться орком через Plane» присутствуют и точны
**Условие:** `presentation.md` содержит ≥ 2 слайда оператор-инструкции по работе через Plane.
- **PASS:** ≥ 2 слайда покрывают (суммарно): запуск задачи («To Analyse»), статусную модель
«индикация ≠ управление», **оба** человеческих гейта (Approved на `analysis` и Confirm
Deploy на `deploy`), авто-лейблы (`autoApprove`/`autoDeploy`/`Bug`), отмену **STOP**,
наблюдение за ходом (статусы доски + живая Telegram-карточка + комментарии в задаче). Имена
статусов/лейблов точны и согласованы с `tech-pipeline.md`/`tech-integrations.md`/`CLAUDE.md`.
- **FAIL:** слайдов нет или один; ИЛИ пропущен любой из двух человеческих гейтов; ИЛИ
перепутаны имена статусов/лейблов (напр. «Approved выкатывает прод»); ИЛИ утверждается, что
авто-лейблы пропускают технические проверки.
---
## AC-3 — Сквозная нумерация и формат слайдов валидны
**Условие:** канонический парсер `parse_slides` разбирает источник без нарушений.
- **PASS:** `tests/test_system_docs.py::test_presentation_source_parses_with_canonical_parser`
зелёный — слайдов ≥ 12, номера `[1..N]` строго сквозные, у каждого слайда непустой заголовок
и ≥ 1 тезис.
- **FAIL:** тест падает — пропуск/дубль в нумерации, пустой заголовок, слайд без тезисов, или
слайдов < 12.
---
## AC-4 — Обязательный нарратив и процедура сборки сохранены + новые биты зафиксированы
**Условие:** обязательные биты нарратива на месте; процедура сборки цела; новый контент
анти-дрейф-защищён.
- **PASS:** `test_presentation_covers_mandatory_narrative_bits` и
`test_presentation_carries_reproducible_build_procedure` зелёные (биты `проблем`/`решени`/
`конвейер`/`сценари`/`тираж`/`статус` присутствуют; раздел сборки несёт `build_presentation.py`
и «Проверка»). Добавлены проверки присутствия **Lite-установки** и **использования через
Plane**, и они зелёные.
- **FAIL:** любой из этих тестов красный; ИЛИ новые биты Lite/Plane не покрыты тестом (можно
бесследно удалить новый слайд, CI не заметит).
---
## AC-5 — `.pptx` собирается с новыми слайдами (ручная dev-venv проверка)
**Условие:** документированная сборка вне рантайма даёт валидный `.pptx`, включающий новые
слайды.
- **PASS:** в dev-venv `.venv-pptx/bin/python scripts/build_presentation.py` печатает
`Собрано слайдов: N → build/orchestrator-overview.pptx` (N = числу слайдов источника, включая
новые), `exit code 0`; открытый файл показывает тёмную тему, корректную кириллицу, новые
слайды Lite/Plane — присутствуют и редактируемы.
- **FAIL:** скрипт печатает `ОШИБКА: …` / ненулевой код возврата; ИЛИ N не совпадает с числом
слайдов; ИЛИ новых слайдов нет в собранном файле; ИЛИ кириллица/тема сломаны.
---
## AC-6 — Анти-дрейф и гигиена витрины зелёные
**Условие:** структурный контур витрины проходит целиком.
- **PASS:** весь `tests/test_system_docs.py` зелёный, включая:
`test_showcase_carries_no_forbidden_host_literals` (нет боевых хост-литералов),
`test_showcase_carries_no_secret_like_values` (нет секретоподобных значений),
`test_all_relative_links_resolve_to_existing_files` (ссылки резолвятся),
`test_build_script_toplevel_imports_are_stdlib_only` (top-level скрипта без `pptx`).
- **FAIL:** любой из перечисленных тестов красный (запрещённый литерал/секрет/битая ссылка/
`pptx` на top-level скрипта).
---
## AC-7 — Self-hosting безопасность: рантайм и образ нетронуты
**Условие:** изменение остаётся docs-only.
- **PASS:** `git diff` не содержит изменений в `src/**`, `STAGE_TRANSITIONS` (`src/stages.py`),
`QG_CHECKS`/`check_*` (`src/qg/checks.py`), схеме БД (`src/db.py`);
`test_no_pptx_dependency_in_prod_image` зелёный (`python-pptx` нет в `requirements*`/
`Dockerfile`); собранный `.pptx` **не** добавлен в git (`build/` в `.gitignore`).
- **FAIL:** затронут любой рантайм-модуль/стадия/гейт/схема; ИЛИ `python-pptx` появился в
прод-образе; ИЛИ `.pptx`-бинарь закоммичен.
---
## AC-8 — Сопровождение выполнено в том же PR
**Условие:** доки сопровождения обновлены.
- **PASS:** `CHANGELOG.md` несёт запись `docs:` по ORCH-105; при изменении `presentation.md`
норматив витрины соблюдён; полный `pytest tests/ -q` зелёный.
- **FAIL:** нет записи в `CHANGELOG.md`; ИЛИ полный регресс `tests/` красный.
---
## Сводная матрица AC ↔ FR/BR
| AC | Покрывает |
|----|-----------|
| AC-1 | BR-2 / FR-1 |
| AC-2 | BR-3 / FR-2 |
| AC-3 | NFR-2 / FR-3 |
| AC-4 | BR-5 / FR-3 / FR-5 |
| AC-5 | BR-4 / FR-4 |
| AC-6 | NFR-4 / FR-5 |
| AC-7 | NFR-1 / NFR-3 |
| AC-8 | BR-6 / FR-6 |