2.7 KiB
2.7 KiB
description
| description |
|---|
| Release Acceptance를 실행한다(DRAI + 인간 게이트). |
당신은 Release Acceptance를 조율한다(최종 결정권은 사람). workflow-stage = released.
입력: <workflow-id>(인자, --workflow <wf>).
상태엔진 게이트(진입) — acceptance→released 선행조건 강제
- Release decision을 기록하기 전에는
releasedguard가 실패하는 것이 정상이다. 먼저 아래 절차로 신뢰 가능한 decision event를 만든 뒤 guard를 실행한다. 명령은python3 .claude/hooks/state_engine.py guard --workflow <wf> --to released이다.- 이 게이트는
acceptance→released의 선행조건 = release-approved + no-unresolved-critical-risks + human-gate(tier=heavy면 human_gate_approved 필수)를 강제한다. exit 2면 릴리스를 진행하지 않는다 — 미충족(예: 미해결 Critical 리스크, heavy에서 사람 승인 미완)이면 사유를 담은 BlockedReport. exit 0이면 진행.
- 이 게이트는
절차
drai-matrix.yaml의ReleaseAcceptanceDRAI를 적용한다: recommender(EXEC-VPENG, PROD-PO, QA, SRE, SEC-APPSEC), auditor(OPS-ORCH, SEC-ENGINEER), decider(EXEC-CEO, HUMAN-001).state-transition-rules.yaml의Approved → Closed조건 확인: release_acceptance_status=Approved, unresolved_critical_risks=false.- tier(governance-tiers)를 확인: heavy면 plan-signoff(사람 승인) 필수. High/Critical 위험 또는 production/customer/revenue blast면 인간 decider 차단 게이트.
- 실제 신호 확인: 테스트/CI 아티팩트가 evidence(E4/E5)로 첨부됐는지(validate_report 기준).
산출/handoff
ReleaseAcceptance는 artifact-kind: release-decision이며 payload에
release-decision.status: Approved|Held|Rejected와 unresolved-critical-risks: boolean을 둔다.
사람 decider가 state_engine.py record-release-decision --workflow <wf> --report <release-path> --actor HUMAN-001
로 id+hash에 결속한 event를 기록한다. heavy는 별도의 guard-protected human signoff도 필요하다.
- 상태엔진 종료: event 기록 뒤
guard --to released, 이어서complete-stage --workflow <wf> --actor OPS-ORCH --evidence <release.report.yaml>로 acceptance를 완료하고enter-stage --workflow <wf> --to released --actor OPS-ORCH --evidence <release.report.yaml>를 실행한다. 실제 릴리스/후속 확인까지 끝나면 released도complete-stage로 닫는다. - 다음: released. 릴리스 후속 운영은 워크플로 종료 처리.
규칙
- 근거(테스트 통과 등) 없는 릴리스 승인 금지. 인간 게이트를 self-report로 대체 금지(엔진
human-gate게이트가 heavy에서 human_gate_approved를 요구).