Files
orchestrator/docs/work-items/ORCH-061/12-review.md
claude-bot de47737f4f
All checks were successful
CI / test (push) Successful in 16s
CI / test (pull_request) Successful in 15s
reviewer(ET): auto-commit from reviewer run_id=299
2026-06-07 13:18:47 +00:00

5.1 KiB
Raw Permalink Blame History

type, work_item_id, verdict, version
type work_item_id verdict version
review ORCH-061 APPROVED 1

Review ORCH-061

Summary

Исправление петли deploy-staging → development при self-hosting self-deploy. Реализовано Direction (б) из ADR-001: классификация staging-проверок на REAL (fail-closed) и SANDBOX_INFRA (узкий allowlist {C9a, C9b}, waivable) + толерантный-но-fail-closed вердикт.

Реализация полностью соответствует ТЗ (02-trz.md), критериям приёмки (03-acceptance-criteria.md) и ADR-001. Все контракты сохранены, документация обновлена в том же PR, тесты зелёные.

Проверено по осям:

  • Соответствие ТЗ: FR-1…FR-7 закрыты. Новый leaf-модуль src/staging_verdict.py (stdlib-only, never-raise), флаг staging_infra_tolerance_enabled (kill-switch, default True), observability через INFRA-WAIVED:/VERDICT: и action_stage_no_changes_note.
  • Соответствие ADR-001: механизм, allowlist {C9a, C9b}, fail-closed для REAL, waiver только когда все REAL (вкл. C7/C8) зелёные, --strict, _resolve_tolerance (fail-safe → strict при нечитаемом конфиге) — реализовано ровно как в «Решении» ADR. Затронутые файлы совпадают с таблицей ADR.
  • Контракты (AC-8): src/qg/checks.py (check_staging_status/ _parse_staging_status), src/stages.py (STAGE_TRANSITIONS, QG_CHECKS) — не изменены (подтверждено git diff). Толерантность живёт в suite ДО записи артефакта; новый QG-чек не вводится; реестр-снапшот цел.
  • Схема БД (AC-9): миграций нет, флаг — только конфиг.
  • never-raise (AC-10): compute_staging_verdict/classify_check/ _coerce_item/action_stage_no_changes_note ловят всё и деградируют в консервативный FAILED/None. Покрыто TC-12.
  • Условность self-hosting / страховка (AC-3/AC-5/AC-6): rollback на реальном FAIL сохранён (tests/test_stage_engine.py TestStaging*), поведение не-self репо неизменно.
  • Тесты (AC-14): pytest tests/ -q670 passed. ORCH-061 покрытие: TC-04 (infra waived → SUCCESS), TC-05 (REAL fail → FAILED), TC-09 (strict), TC-12 (garbage never-raise), TC-06/TC-07 (action-stage no-changes note), non-self репо.
  • Безопасность self-hosting (AC-12): код задачи не трогает прод 8500; сборки/recreate — вне пути этой логики.

Примечание по диффу: при просмотре git diff main...HEAD появлялись файлы ORCH-060 (reconciler, plane_sync, config reconcile-флаги). Это артефакт устаревшего локального ref mainorigin/main уже содержит ORCH-060 (merge d4c6cc0, PR #60). Истинный git diff origin/main...HEAD — чистый ORCH-061. Бандлинга чужого work-item нет.

Findings

P0 — Blocker

  • нет

P1 — Must fix

  • нет

P2 — Should fix

  • Стрэй-файлы агентного скрэтча закоммичены в репо: .task.md, .task-arch.md, .task-dev.md (хэндофф-файлы стадий analysis/architecture/ development) попали в коммит и не покрыты .gitignore. Это засоряет репо и будет повторяться каждый прогон. Рекомендация: удалить из индекса и добавить .task*.md в .gitignore. Не функциональный дефект — на корректность ORCH-061 не влияет.

Документация

Обновлена в том же PR (golden source, AC-13) — соответствует требованию CLAUDE.md:

  • docs/architecture/README.md — раздел staging-гейта помечен ORCH-061 + статус в футере.
  • docs/architecture/adr/adr-0009-staging-infra-tolerance.md — сквозной ADR заведён; adr/README.md обновлён.
  • docs/operations/STAGING_CHECK.md — поведение C9a/C9b, флаг, INFRA-WAIVED, --strict.
  • .openclaw/agents/deployer.md — уточнён контракт exit0/INFRA-WAIVED (контракт staging_status: SUCCESS|FAILED неизменён).
  • .env.exampleORCH_STAGING_INFRA_TOLERANCE_ENABLED (канон, секреты не коммитятся).
  • CHANGELOG.md — запись ORCH-061.
  • ADR per-work-item docs/work-items/ORCH-061/06-adr/ADR-001-*.md — присутствует.

Документация полная и точная; расхождений с кодом не выявлено.