work_item: ORCH-011
stage: analysis
author_agent: analyst
status: ready-for-review
created_at: 2026-06-11
model_used: claude-opus-4-8
title: "Полная документация системы мультиагентов: структурный анти-дрейф витрины"
framework: pytest
scope: >
  Покрывается: каркас витрины (файлы/разделы/маршруты/норматив), сходимость
  машинно-проверяемых фактов с кодом (стадии из STAGE_TRANSITIONS, 6 агентов),
  валидность внутренних ссылок, отсутствие секретов/хост-хардкодов, обновление
  указателей README/CLAUDE.md, неизменность рантайма (полный регресс).
  Вне покрытия: качество прозы/дизайна слайдов (проверяет reviewer/человек),
  фактический рендеринг .pptx (ручная проверка по процедуре AC-7).
notes: >
  Все тесты — структурные, без сети/LLM/subprocess (паттерн tests/test_lite_setup_doc.py,
  test_bundled_setup_doc.py, test_orch_52b_docs_standard.py). Точные пути витрины фиксирует
  ADR-001 архитектора (рекомендация TRZ: docs/overview/); имя тест-модуля ниже —
  tests/test_system_docs.py — может быть уточнено в ADR, состав проверок обязателен.
  Сверки derive-из-кода (стадии) обязаны импортировать src.stages, а не дублировать
  статичный список (анти-дрейф, образец — тест полноты ORCH-091). FORBIDDEN-скан
  импортирует список запрещённых литералов из tests/test_no_host_hardcodes.py.
  Полный регресс tests/ должен оставаться зелёным.

tests:
  # ---- FR-1: каркас витрины и единая точка входа ----
  - id: TC-01
    type: unit
    description: "Каталог витрины и индекс существуют; индекс содержит обязательные разделы: вход «что это», ссылки на бизнес-часть и тех-часть, маршруты аудиторий, норматив сопровождения (AC-1)."
    module: tests/test_system_docs.py
    expected: PASS

  - id: TC-02
    type: unit
    description: "Из индекса по относительным ссылкам достижимы все файлы витрины: бизнес-часть, тех-блоки 1–7, презентационный источник (AC-1/AC-3)."
    module: tests/test_system_docs.py
    expected: PASS

  # ---- FR-2: бизнес-уровень ----
  - id: TC-03
    type: unit
    description: "Бизнес-часть содержит 5 обязательных смысловых разделов (проблема, решение, что умеет, ценность, сценарии) и минимум 5 сценариев использования (AC-2)."
    module: tests/test_system_docs.py
    expected: PASS

  # ---- FR-3: тех-уровень, сходимость с кодом ----
  - id: TC-04
    type: unit
    description: "Тех-часть содержит все 7 блоков контент-карты (архитектура, конвейер, агенты, объекты, интеграции, качество/безопасность, наблюдаемость); блок архитектуры несёт схему потока (AC-3)."
    module: tests/test_system_docs.py
    expected: PASS

  - id: TC-05
    type: unit
    description: "Карта стадий витрины сверена импортом src.stages.STAGE_TRANSITIONS: каждая стадия (включая deploy-staging и cancelled) упомянута; derive из кода, не статичный список (AC-4)."
    module: tests/test_system_docs.py
    expected: PASS

  - id: TC-06
    type: unit
    description: "Имена exit-гейтов рёбер в витрине существуют в реестре qg.checks.QG_CHECKS (нет выдуманных имён гейтов) (AC-4)."
    module: tests/test_system_docs.py
    expected: PASS

  - id: TC-07
    type: unit
    description: "Блок агентов покрывает все 6 ролей (analyst/architect/developer/reviewer/tester/deployer); каждой роли сопоставлены артефакты; таблица модель/эффорт присутствует (AC-5)."
    module: tests/test_system_docs.py
    expected: PASS

  # ---- FR-1/FR-3: link-first ----
  - id: TC-08
    type: unit
    description: "Все относительные ссылки витрины резолвятся в существующие файлы; обязательные ссылки на golden sources (architecture/README, internals, PIPELINE_DOCS, HANDOFF_PROTOCOL, adr/, LITE_SETUP, BUNDLED_SETUP, PRODUCT_VISION, CLAUDE.md) присутствуют (AC-6)."
    module: tests/test_system_docs.py
    expected: PASS

  - id: TC-09
    type: unit
    description: "Витрина не ссылается на вне-репозиторные пути (tasks/, memory/, абсолютные пути хоста) (AC-12)."
    module: tests/test_system_docs.py
    expected: PASS

  # ---- FR-4: презентационная основа ----
  - id: TC-10
    type: unit
    description: "Презентационный источник существует, несёт явную слайдо-структуру (нумерованные слайды с заголовками, не менее 12) и покрывает обязательный нарратив (проблема/решение/как работает/возможности/сценарии/тираж) (AC-7)."
    module: tests/test_system_docs.py
    expected: PASS

  - id: TC-11
    type: unit
    description: "Зависимости генерации презентации не попали в прод-образ: requirements*/Dockerfile не содержат библиотек генерации (например python-pptx) (AC-7/NFR-2)."
    module: tests/test_system_docs.py
    expected: PASS

  # ---- FR-6: норматив и указатели ----
  - id: TC-12
    type: unit
    description: "Индекс витрины несёт норматив сопровождения («в том же PR»); README.md содержит ссылку на витрину; CLAUDE.md содержит указатель (AC-9/AC-11)."
    module: tests/test_system_docs.py
    expected: PASS

  # ---- NFR-3: секреты/хост-хардкоды ----
  - id: TC-13
    type: unit
    description: "FORBIDDEN-скан новых доков и презентационного источника: запрещённые хост-литералы (импорт из tests/test_no_host_hardcodes.py) и секрет-эвристика не находят совпадений (AC-10/AC-11)."
    module: tests/test_system_docs.py
    expected: PASS

  # ---- Регресс ----
  - id: TC-14
    type: integration
    description: "Полный регресс: pytest tests/ -q зелёный; существующие структурные док-тесты (test_lite_setup_doc, test_bundled_setup_doc, test_orch_52b_docs_standard, test_agent_prompts_canon) не сломаны (AC-10/AC-11)."
    module: tests/
    expected: PASS
