work_item: ORCH-105 stage: analysis author_agent: analyst status: ready-for-review created_at: 2026-06-12 model_used: claude-opus-4-8 title: "Презентация: слайды Lite-установки и использования через Plane (анти-дрейф витрины)" framework: pytest scope: > Покрывается: структурная валидность слайдо-источника docs/overview/presentation.md после добавления слайдов Lite-установки и использования через Plane (парс/нумерация/обязательные биты/процедура сборки), фиксация нового контента анти-дрейф-тестом, гигиена витрины, self-hosting-инварианты (python-pptx вне прод-образа, бинарь не в git), сопровождение (CHANGELOG). Вне автоматического покрытия: фактический рендер .pptx через python-pptx — выполняется ВНЕ рантайма в dev-venv (ORCH-011 NFR-2), поэтому TC-07 — ручной интеграционный шаг, а не часть гейта тестов. notes: > Изменение docs-only: src/** не трогается, новый QG не вводится. Тесты живут в существующем модуле tests/test_system_docs.py (ORCH-011) — большинство TC расширяют/подтверждают уже имеющиеся проверки. Полный регресс pytest tests/ -q должен оставаться зелёным. Имена статусов Plane и лейблов в слайдах сверяются с docs/overview/tech-pipeline.md, tech-integrations.md и CLAUDE.md (фактологическая точность, BR-5). TC-07 (сборка .pptx) — обязательная ручная проверка в одноразовом dev-venv: python-pptx в прод/тест-образ НЕ добавляется. tests: - id: TC-01 type: unit description: "parse_slides разбирает presentation.md: слайдов >= 12, номера сквозные [1..N], у каждого непустой заголовок и >= 1 тезис (после добавления новых слайдов нумерация не разъехалась)." module: tests/test_system_docs.py expected: PASS - id: TC-02 type: unit description: "Обязательные биты нарратива присутствуют (проблем/решени/конвейер/сценари/тираж/статус) — существующая проверка остаётся зелёной после правок." module: tests/test_system_docs.py expected: PASS - id: TC-03 type: unit description: "Новый контент зафиксирован анти-дрейфом: добавлены и зелёные assert'ы присутствия слайда Lite-установки (напр. lite/установк) и слайдов использования через Plane (напр. plane + признак оператор-инструкции)." module: tests/test_system_docs.py expected: PASS - id: TC-04 type: unit description: "Процедура сборки .pptx цела: presentation.md несёт ссылку на build_presentation.py и явные маркеры «Проверка:» (test_presentation_carries_reproducible_build_procedure)." module: tests/test_system_docs.py expected: PASS - id: TC-05 type: unit description: "Гигиена витрины: нет боевых хост-литералов (FORBIDDEN-скан) и нет секретоподобных значений в presentation.md после добавления слайдов." module: tests/test_system_docs.py expected: PASS - id: TC-06 type: unit description: "Все относительные ссылки витрины (включая новые, если добавлены) резолвятся в существующие файлы (test_all_relative_links_resolve_to_existing_files)." module: tests/test_system_docs.py expected: PASS - id: TC-07 type: integration description: "Ручной dev-venv шаг (вне рантайма, python-pptx): .venv-pptx/bin/python scripts/build_presentation.py печатает «Собрано слайдов: N» (N = числу слайдов), exit 0; открытый .pptx — тёмная тема, кириллица корректна, новые слайды Lite/Plane присутствуют и редактируемы." module: docs/overview/presentation.md expected: PASS - id: TC-08 type: unit description: "Self-hosting инвариант: python-pptx отсутствует в requirements*/Dockerfile (test_no_pptx_dependency_in_prod_image); top-level scripts/build_presentation.py остаётся stdlib-only (импорт pptx ленивый)." module: tests/test_system_docs.py expected: PASS - id: TC-09 type: unit description: "Указатели репозитория: CHANGELOG.md несёт запись по ORCH-105 (запись docs:), витрина docs/overview/ по-прежнему достижима из README.md/CLAUDE.md." module: tests/test_system_docs.py expected: PASS - id: TC-10 type: integration description: "Полный регресс pytest tests/ -q зелёный — изменение docs-only, рантайм-код не тронут, регрессии нет." module: tests/ expected: PASS