From f583bcf2eb654a70fe44b77a04a93f0fbd001ae2 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Fri, 12 Jun 2026 08:12:38 +0300 Subject: [PATCH] reviewer(ET): auto-commit from reviewer run_id=649 --- docs/work-items/ORCH-105/12-review.md | 116 ++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 docs/work-items/ORCH-105/12-review.md diff --git a/docs/work-items/ORCH-105/12-review.md b/docs/work-items/ORCH-105/12-review.md new file mode 100644 index 0000000..5466cff --- /dev/null +++ b/docs/work-items/ORCH-105/12-review.md @@ -0,0 +1,116 @@ +--- +verdict: APPROVED # APPROVED | REQUEST_CHANGES — строго одно из двух, UPPERCASE +work_item: ORCH-105 +stage: review +author_agent: reviewer +status: approved +created_at: 2026-06-12 +model_used: claude-opus-4-8 +type: review +work_item_id: ORCH-105 +version: 1 +--- + +# Review ORCH-105 — Подготовка презентации по орку (слайды Lite-установки и использования через Plane) + +> Машинный вердикт читается ТОЛЬКО из `verdict:` во frontmatter. `APPROVED` → дальше по конвейеру. + +## Summary + +**Docs-only** доработка витрины: слайдо-источник `docs/overview/presentation.md` расширен **тремя** +слайдами в каноне ORCH-011 (дека 16 → 19, сквозная нумерация цела), добавлена **одна** анти-дрейф +тест-функция в `tests/test_system_docs.py`, обновлён `CHANGELOG.md`. Реализация **полностью** +соответствует ТЗ (`02-trz.md`), критериям приёмки (`03-acceptance-criteria.md`) и +`06-adr/ADR-001`. Рантайм (`src/**`, `STAGE_TRANSITIONS`, `QG_CHECKS`, `check_*`, схема БД) — +байт-в-байт не тронут. Факты новых слайдов сверены с golden sources. Весь +`tests/test_system_docs.py` — **зелёный (29 passed)**. P0/P1 findings нет → **APPROVED**. + +> **Замечание по среде ревью (не finding):** локальный `main` устарел (`9b7bdc0`), поэтому +> `git diff main...HEAD` ложно тянул уже смерженный контент ORCH-011. Достоверный диф снят против +> `origin/main` (`4d5e461`) — он чистый: `CHANGELOG.md`, `presentation.md`, `tests/test_system_docs.py` +> + артефакты `docs/work-items/ORCH-105/`. Никаких чужих правок в PR нет. + +## Оси проверки + +### 1. Соответствие ТЗ / Acceptance Criteria — PASS +- **FR-1 / AC-1 (Lite-слайд):** добавлен «Слайд 17: Lite-установка скриптами». Тезисы точны и + согласованы с `docs/deployment/LITE_SETUP.md`: два контейнера платформы (`orchestrator` + + `orchestrator-watchdog`), развёртывание без правки кода (только конфиг), помощники + `gen_secrets.py`/`onboard_project.py` (`plan`/`apply`/`verify`) + `docker compose up -d`, runbook + с проверкой каждого шага. **BR-5 соблюдён:** одношаговый bootstrap явно отнесён к **смежному + Bundled, не Lite** (нет «монолитного инсталлятора», нет выдуманных скриптов). +- **FR-2 / AC-2 (Plane-usage):** добавлены **два** оператор-слайда («Слайд 8: Запуск и ведение + задачи через Plane», «Слайд 9: Что решает человек: гейты, авто-режим, отмена»). Покрыты все 8 + обязательных тем: запуск «To Analyse», «индикация ≠ управление», **оба** человеческих гейта + (`Approved` на анализе и `Confirm Deploy` на деплое), авто-лейблы `autoApprove`/`autoDeploy`/`Bug`, + отмена `STOP`, наблюдение (статусы доски + Telegram-карточка + комментарии со ссылками на + ветку/PR). Имена статусов/лейблов **дословно** сверены с `tech-pipeline.md` (стр. 65/68/97) и + `tech-integrations.md` (стр. 8/13). Инвариант «авто-режим не пропускает техпроверки» зафиксирован + верно. +- **FR-3 / AC-3 (нумерация/формат):** заголовки слайдов строго сквозные `1..19`, `## Как собрать + .pptx` остаётся служебным разделом (не слайд). `test_presentation_source_parses_with_canonical_parser` + — зелёный (≥12, `[1..N]`, непустые заголовки, ≥1 тезис). +- **FR-5 / AC-4 (анти-дрейф):** добавлена `test_presentation_covers_lite_and_plane_usage_bits`, + фиксирующая `lite`+маркер установки и `plane`+`to analyse`/`approved`/`confirm deploy`/`stop`. + Существующие проверки нарратива и процедуры сборки — без послаблений, зелёные. +- **FR-6 / AC-8 (сопровождение):** запись `docs:` по ORCH-105 в `CHANGELOG.md` присутствует и + содержательна; норматив витрины ORCH-011/079 соблюдён (PR сам и есть обновление витрины). + +### 2. Соответствие ADR / инвариантам — PASS +- Реализация 1:1 c `06-adr/ADR-001`: ровно 3 слайда (2 Plane + 1 Lite), дека 16→19, **одна** новая + тест-функция, новый QG **не** регистрируется, скрипт `build_presentation.py` **не** правится + (подтверждено: вне дифа), `07/08`-доки не создаются (нет смены топологии/схемы БД). +- Канон витрины `adr-0039` не форкается; локальность решения обоснована (глобальный `adr-NNNN` не + нужен) — корректно. +- **Трассировка (TRACEABILITY):** исполняемый код с маркерами `ORCH-NNN` не затронут (docs/tests + only) → инварианты конвейера не задеты, анти-археология не срабатывает. + +### 3. Качество кода — PASS +- Новая тест-функция **содержательна** (не тривиальна): проверяет присутствие конкретных имён + статусов/лейблов, несёт docstring с привязкой к FR-5/AC-4 и предупреждением об анти-переобучении. +- Багфикс-трек (ORCH-019/BR-4) **не применим** — задача не `Bug`, регресс-тест-фиксатор не требуется. +- Маркеры теста проходят `FORBIDDEN`-скан и секрет-эвристику (весь модуль зелёный). + +### 4. Документация — PASS (см. раздел «Документация») + +### 5. Совместимость / регресс / self-hosting — PASS +- `git diff origin/main...HEAD -- 'src/**'` пуст → рантайм, стадии, гейты, схема БД не тронуты. +- `python-pptx` в прод-образ не добавлен; `build/` в `.gitignore` (стр. 19); новый `.pptx`-бинарь + не закоммичен (`docs/PRODUCT_VISION.pptx` — преэкзистент, вне дифа PR). +- Изменение полностью обратимо. + +## Findings + +### P0 — Blocker +- (нет) + +### P1 — Must fix +- (нет) + +### P2 — Should fix +- (нет) + +### P3 — Nice-to-have (не блокирует) +- Анти-дрейф `assert "stop" in low` ловит подстроку `stop`, которая встречается и в визуале + слайда 9; для большей устойчивости к точечному удалению блока STOP можно было бы матчить + `«STOP»`/`stop` в связке с маркером отмены. Решение D4 осознанно выбрало семантические корни + (анти-переобучение) — приемлемо, правка не требуется. + +## Документация + +**Обновлена корректно и в том же PR.** Этот PR сам является обновлением витрины `docs/overview/` +(презентация — артефакт витрины ORCH-011). Проверено: +- `CHANGELOG.md` — запись `docs:` по ORCH-105 присутствует. ✅ +- Витрина `docs/overview/presentation.md` — расширена; факты сверены с golden sources + (`docs/deployment/LITE_SETUP.md`, `docs/overview/tech-pipeline.md`, + `docs/overview/tech-integrations.md`, `CLAUDE.md`) — расхождений нет. ✅ +- `README.md` «Известные ограничения» (ORCH-079) — данный PR ни одного пункта не закрывает + (контентная правда о уже существующей функциональности), обновление не требуется. ✅ +- Прочие тех-блоки `docs/overview/tech-*.md`, `docs/architecture/README.md`/`internals.md` — новой + функциональности нет, обновлять нечего (правка только наполняет витрину контентом). ✅ +- `src/` не изменён → P0-условие «`src/` изменён, документация не обновлена» **не наступает**. + +**Замечание для tester:** AC-5 (ручная dev-venv сборка `.pptx`, ожидается +`Собрано слайдов: 19 → build/orchestrator-overview.pptx`, exit 0, тёмная тема/кириллица/новые +слайды) — ручной шаг стадии `testing` (TC-07), вне автоматического гейта по канону (`python-pptx` +не в тест-образе). Это сознательная честная граница (ADR D5), не пробел покрытия.