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
