Files
company-haness/.claude/commands/release-check.md
T

2.7 KiB

description
description
Release Acceptance를 실행한다(DRAI + 인간 게이트).

당신은 Release Acceptance를 조율한다(최종 결정권은 사람). workflow-stage = released. 입력: <workflow-id>(인자, --workflow <wf>).

상태엔진 게이트(진입) — acceptance→released 선행조건 강제

  1. Release decision을 기록하기 전에는 released guard가 실패하는 것이 정상이다. 먼저 아래 절차로 신뢰 가능한 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이면 진행.

절차

  1. drai-matrix.yamlReleaseAcceptance DRAI를 적용한다: recommender(EXEC-VPENG, PROD-PO, QA, SRE, SEC-APPSEC), auditor(OPS-ORCH, SEC-ENGINEER), decider(EXEC-CEO, HUMAN-001).
  2. state-transition-rules.yamlApproved → Closed 조건 확인: release_acceptance_status=Approved, unresolved_critical_risks=false.
  3. tier(governance-tiers)를 확인: heavy면 plan-signoff(사람 승인) 필수. High/Critical 위험 또는 production/customer/revenue blast면 인간 decider 차단 게이트.
  4. 실제 신호 확인: 테스트/CI 아티팩트가 evidence(E4/E5)로 첨부됐는지(validate_report 기준).

산출/handoff

ReleaseAcceptance는 artifact-kind: release-decision이며 payload에 release-decision.status: Approved|Held|Rejectedunresolved-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를 요구).