Files

39 lines
5.9 KiB
Markdown

---
description: C-Level이 discovery의 근거·선택지를 읽고 하나로 수렴(converge)해 방향을 정한다. cascade 2단계(DECIDE).
---
당신은 Orchestrator다. **DECIDE phase (workflow-stage = `decide`)**`/ground`(discovery)가 접지한 **근거 + option-set**을 의사결정권자층이 읽고 **하나로 수렴(converge)** 한다: 방향·트레이드오프·go/no-go. **근거를 새로 만들지 않는다**(그건 GROUND). divergent fan-out = 각 C-Level이 렌즈별로 옵션을 평가 → CEO가 하나로 수렴.
입력: `/ground` 산출 **grounding-evidence + option-set**(인자, `--workflow <wf>`). **반드시 must-read.** (근거·선택지가 입력이다.)
## 언제
tier=heavy 전략 결정(신규 제품/수익/방향), 또는 발산된 option-set에서 하나로 수렴해야 할 때. C-Level은 '예비'가 아니라 **수렴 결정층**이다.
## 상태엔진 게이트(진입) — discovery→decide 선행조건 강제
1. **guard(진입 게이트):** `python3 .claude/hooks/state_engine.py guard --workflow <wf> --to decide`.
- 이 게이트는 `discovery→decide`의 선행조건 = **grounding-evidence-present + option-set-present(≥2)** 를 강제한다. **exit 2면 진행하지 않는다** — 근거·선택지 없이 결정 금지 → `/ground`로 되돌리는 **BlockedReport**(미충족 사유 포함). exit 0이면 진행.
- (option-set이 아직 없으면 `/ground`를 먼저 완료하라는 신호다 — anchoring 방지의 핵심.)
- exit 0이면 `state_engine.py enter-stage --workflow <wf> --to decide --actor OPS-ORCH`
`decide.running`을 연 뒤 작업한다.
## 절차
2. **pre-work**: `/ground`의 grounding-evidence + option-set + `slack_inbox.py` + `report_tags.py --tag <주제>`를 must-read.
3. **fan-out(divergent) = per-lens 옵션 평가**: family는 `resolve-family`로 concrete role list를 고르는 metadata일 뿐 spawn 대상이 아니다. Orchestrator가 concrete C-Level 역할을 각각 격리 호출한다.
- **context-package(spawn 전 필수 게이트, finding #4)**: 각 워커를 띄우기 전 단일 컴파일러로 패키지를 만들고 검증한다 — `python3 .claude/hooks/context_package.py --compile --workflow <wf> --task <task> --role <role> --mode divergent --tier <tier> [--lens <LENS>] [--target-repo <repo>]`로 발급 → 스켈레톤 placeholder(objective·allowed-tools·task-boundaries·must-read[option-set 포함]·non-goals·target-repo·acceptance-tests·evidence-plan)를 채움 → `python3 .claude/hooks/context_package.py <pkg>`**exit 0**일 때만 spawn(누락/빈 필드/위장 placeholder면 금지 — finding P0-2). **검증 통과 시 stdout으로 출력되는 `context-package:`/`context-package-sha256:` 2줄을 각 워커 spawn 프롬프트 최상단에 그대로 포함하라 — guard_tools 의 Agent/Task spawn gate 가 참조(파일 실존·해시 일치·validate 재통과)를 강제하므로 참조 없이/위장 패키지로 spawn 하면 exit 2 차단된다.** **spawn 시 Agent/Task 도구의 `model`/`effort` 인자는 그 워커 context-package 의 `model`/`effort`(tier 파생, finding #17)를 그대로 넘긴다 — heavy tier 는 opus/high 로 추론 강도를 올린다.** 필드 정의·규칙은 `org-os/06-agent-work/context-package-spec.yaml`. objective/boundaries 즉석 추론 금지.
- `exec-cpo`(제품가치·고객문제) · `exec-cfo`(비용·ROI·자본효율) · `exec-cto`(기술 타당성·안정성·moat) · `exec-coo`(운영 실행성) · 제품-기술 충돌 시 `exec-cpto`.
- 각자 자기 렌즈로만 **옵션을 평가·순위** → 불변 경로(`new_report.py --workflow <wf> --role <role>`)에 `tags:[<주제>,decide]` 달아 보고서 작성 → 경로+BLUF 반환.
4. **종합(converge)**: `EXEC-CEO`가 하위 보고서를 **전부 읽고** 합의·충돌 보존한 **ExecutiveDecisionPacket**을 쓴다. `OPS-ORCH`는 단계 집행·제출만 한다. standard/heavy payload에는 `selected-option-id`, `evaluation-criteria`, 2개 이상의 `option-evaluations`(각 scores+evidence-refs), `tradeoffs`, `dissent`, `kill-criteria`, `revisit-conditions`, `evidence-refs`가 모두 필수다. `decide-direction`의 세 step을 `method-execution`으로 결속하며, `recommendation` 한 줄만으로는 제출되지 않는다.
5. **게이트**: `validate_report.py`(BLUF·evidence·dissent) 통과. `token_ledger.py`로 워커 토큰 적재+예산 check(초과 시 collapse 강등). `render_report.py`로 대표용 MD.
6. **보고(Slack 스레드)**: 부모=ExecutiveDecisionPacket + 각 C-Level 개별 agent-report를 스레드 답글(report-templates slack-reporting).
## 산출/handoff
- `artifact-kind: executive-decision-packet`으로 발급하고 `submit-artifact --workflow <wf> --report <path> --actor OPS-ORCH`로 등록한다. HUMAN-001(또는 계약상 decision-approver)이 `review-artifact --report <path> --decision accepted --reviewer HUMAN-001`로 **그 id+sha revision**을 승인해야 `/design` gate가 통과한다. 다른 report의 Accepted는 인정되지 않는다.
- **stage 완료:** 정확한 ExecutiveDecisionPacket revision이 승인된 뒤 `state_engine.py complete-stage
--workflow <wf> --actor OPS-ORCH --evidence <exec-packet.report.yaml>`로 `decide.completed`를 기록한다.
결정 작성자와 stage 집행자는 분리되며, 집행자는 OPS-ORCH다.
- **다음**: `/design`(승인된 결정을 설계로 전개). `/design` 진입 guard가 `decide→design`(decision-packet-accepted + evidence-grade-min)을 강제한다.
## 규칙
- **근거를 새로 만들지 않는다** — discovery의 근거·option-set을 읽고 **수렴**한다. 역할 선택은 `role-selection-scorecard`·`drai-matrix`(ExecutiveDecisionPacket DRAI) 기반. 임의 선발 금지.
- 이견 삭제 금지(합의/충돌 보존). 고위험 최종 승인은 사람(HUMAN-001). AI는 권고까지.
- **mid-start**: 승인된 decision-packet이 이미 있으면 `/design`부터 시작 가능(engine guard가 확인).