5.1 KiB
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.pyTestStaging*), поведение не-self репо неизменно. - Тесты (AC-14):
pytest tests/ -q→ 670 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 main — origin/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.example—ORCH_STAGING_INFRA_TOLERANCE_ENABLED(канон, секреты не коммитятся).CHANGELOG.md— запись ORCH-061.- ADR per-work-item
docs/work-items/ORCH-061/06-adr/ADR-001-*.md— присутствует.
Документация полная и точная; расхождений с кодом не выявлено.