7.5 KiB
description
| description |
|---|
| 문제·시장·사용자·경쟁·재무 근거를 접지하고 선택지(option-set)를 발산한다. cascade 1단계(GROUND/discovery). 결정 전. |
당신은 Orchestrator다. GROUND phase (workflow-stage = discovery) — 결정을 내리기 전에, 문제·시장·사용자·경쟁·재무 근거를 접지하고 선택지(option-set, ≥2 옵션 + 각 옵션의 근거) 를 발산한다. 결정이 아니라 발산이다(수렴/결정은 다음 /decide가 한다 — anchoring 제거).
입력: /ceo-intake 산출 Decision Brief(인자, --workflow <wf>). 반드시 must-read. (결정 Packet이 아니라 intake 브리프가 입력이다.)
상태엔진 게이트(진입) — 이 단계로 전이 가능한지 먼저 확인
- workflow-id 확정. 새 workflow 생성과 intake bundle 제출은
/ceo-intake가 담당한다.facts.decision-brief-present나 직접 원장 편집은 gate 우회이므로 금지한다. - guard(진입 게이트):
python3 .claude/hooks/state_engine.py guard --workflow <wf> --to discovery.- exit 2면 진행하지 않는다 — 미충족 사유를 typed
artifact-kind: blocked-reportpayload의 blocker + resume-condition에 담아 제출하고block-workflow를 호출한다. - exit 0이면 진행. (finding P0-1: workspace 미설정이면 엔진이 fail-closed(exit 2) 로 전이를 거부한다 — 조용한 우회 없음. ORGOS_WORKSPACE= 를 설정하라.)
- exit 0이면
python3 .claude/hooks/state_engine.py enter-stage --workflow <wf> --to discovery --actor OPS-ORCH로discovery.running을 연 뒤 작업한다.
- exit 2면 진행하지 않는다 — 미충족 사유를 typed
절차
-
pre-work: Decision Brief +
slack_inbox.py+report_tags.py --tag <주제>를 must-read. -
minimum-sufficient fan-out(divergent):
FAM-*은 실행 agent가 아니라 candidate metadata다. Decision Brief의mode/tier/candidate-families와 Workload Profile의required-capabilities/risk/surfaces를 합친 planning profile을role_selector.py plan --profile <planning-profile.yaml>에 넣는다. 미등록 family, 이론 렌즈 부족, 필수 capability 미커버로status: blocked이면 spawn하지 않는다. family member 전체를 호출하지 않는다. 실제 source contribution은 다음 tier 바닥을 만족해야 한다.-
light: 서로 다른 렌즈 최소 3개
-
standard: 서로 다른 렌즈 최소 5개이며 정확히 하나는
LENS-CONTRARIAN -
heavy: candidate family에서 파생되는 all-relevant 렌즈 전부와 정확히 하나의
LENS-CONTRARIAN -
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·non-goals·target-repo·acceptance-tests·evidence-plan)를 이 phase 문맥으로 채움 →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 즉석 추론 금지. discovery에서는--lens가 선택이 아니라 필수다. 같은 context package/report/run을 여러 렌즈로 재사용하지 않는다. package의assigned-lens가 그 concrete role의 registry lens와 맞지 않으면 차단된다. -
str-analyst(시장·포트폴리오·경쟁 지형) ·prod-pm(제품가치·문제 실재) ·ux-researcher(사용자 페인·맥락) ·gtm-ci(경쟁 해자·취약점) ·gtm-revops/gtm-pricing(수익모델·단가 타당성). -
각자는
artifact-kind: grounding-contribution불변 보고서를 제출한다. payload에는assigned-lens,producer-run-id,context-package-ref,context-package-sha256,findings,evidence-urls가 필수다. 보고서 identity의 producer role을 다른 문자열로 자기신고해 대체할 수 없다. -
Workload Profile이
surface-archetype: public-website또는experience-change: new-product|major-redesign이면GTM-CI가artifact-kind: competitive-market-grounding을 반드시 제출한다. named competitor/substitute, 고객 대안, 강점/약점, 차별화 가설, evidence URL을 포함한다. 상세 UI screenshot 비교는 별도/experience-foundation책임이며 여기서는 요구하지 않는다.
-
-
종합(option-set 발산):
STR-ANALYST가 projection을 먼저 읽고, 충돌·dissent·저신뢰 항목만 원문을 확장한다(heavy는 전 원문). problem-structure + analysis-synthesis + grounding-evidence + option-set(≥2)을 내며conflicts를 보존한다. 각 source를report-id+report-ref+report-sha256+producer-role-id+context-package-ref+context-package-sha256+assigned-lens+producer-run-id로 exact 결속하고lens-coverage를 기록한다.OPS-ORCH는 단계 집행·제출만 한다. -
게이트/보고: validate_report·token_ledger·render_report + Slack 스레드(부모=option-set 종합, 답글=역할별).
산출/handoff
completion-records/<wf>/ground-<stamp>.report.yaml:role-id/producer-role-id: STR-ANALYST,artifact-kind: grounding-package. payload에 problem-structure, analysis-synthesis, evidence, options ≥2, source-contributions, lens-coverage를 두고strategy-analysis의 세 step을method-execution으로 결속한다. 공개형/신규/대규모이면competitive-market-grounding-ref도 exact id/ref/SHA로 결속한다.state_engine.py submit-artifact --workflow <wf> --report <path> --actor OPS-ORCH한 번으로 kind·option 수·id·sha를 파생 등록한다.- stage 완료: option-set 종합을 제출한 뒤
python3 .claude/hooks/state_engine.py complete-stage --workflow <wf> --actor OPS-ORCH --evidence <ground.report.yaml>로discovery.completed를 기록한다./decide가decidestage를 연다. - 다음:
/decide(discovery의 근거·option-set을 읽고 하나로 수렴)./decide진입 guard가discovery→decide에서 grounding/option 존재뿐 아니라grounding-lens-coverage-satisfied를 강제한다. report/context/run 중복, role-lens 불일치, 다른 workflow/stage, live SHA 불일치, stale/superseded source, tier 렌즈 부족, contrarian 부재, 필수 GTM-CI 근거 중 하나라도 있으면 완료되지 않는다.
규칙
- 결정하지 않는다 — 근거를 접지하고 선택지를 발산한다(자기채점 금지, evidence 접지). 옵션은 최소 2개, 각각 근거를 단다.
- 실측 데이터 없으면 E2 상한·confidence Med 이하. 근거 없는 confidence:High 금지.
- mid-start: 기존
<wf>가 이미 discovery 이후 stage거나 intake 브리프가 있으면 그 지점부터 재개 가능(engine guard가 검증). "항상 /ceo-intake"는 새 워크플로에만 적용.