context-package-spec: version: 1 required-fields: - workflow-id - task-id - mode - tier - target-role-agent - objective - output-format - allowed-tools - task-boundaries - must-read - inherited-decisions - expected-output - token-budget # --- P0 신규 필수(WP-5, finding #4): 모든 spawn이 context_package.py로 강제 검증 --- - workspace # 어느 워크스페이스에서 실행되는가(경로 접지) - target-repo # 워커가 실제로 손대는 대상 저장소/폴더 - acceptance-tests # 이 task 고유의 수용 기준(범용 아님) - non-goals # 명시적 비목표(shared-constraints.non-goals의 1급 승격) - evidence-plan # E4/E5 주장을 무엇으로 뒷받침할지(receipt 계획) schema: workflow-id: task-id: mode: divergent / converge tier: light / standard / heavy # finding #17: tier로 해석된 추론 강도(governance-tiers.model-effort-by-tier SoT). context_package.py가 채운다. # Orchestrator는 Agent 도구 spawn 시 이 값을 model/effort 인자로 그대로 넘긴다(에이전트 frontmatter model: inherit). model: haiku / sonnet / opus / fable # tier 파생(light·standard=sonnet, heavy=opus). 사람이 상향 가능. effort: low / medium / high / xhigh / max # tier 파생(light=low, standard=medium, heavy=high; synthesis-lead=+1) assigned-lens: # cascade/discovery에서는 필수. role registry가 carry 가능한 LENS-*만 허용. divergent-framing: target-role-agent: # = spawn 할 concrete 에이전트 카드 파일명(.claude/agents/.md, 예 arch-solution). # fam-* family는 metadata이므로 target으로 금지한다. Agent/Task subagent_type과 같아야 한다. # ⚠ 이것은 리포트의 role-id 와 '다른 축'이다: target-role-agent=에이전트 카드명(소문자), # report role-id=capability-families 등록 role-id(예 ARCH-SOLUTION). 같은 역할의 두 표기다. # context_package 는 카드 실존(카드명)을, validate_report 는 등록 role-id(대소문자 무관 매칭, # P2 fix)를 각각 검사한다. worker 카드는 role_id.lower()==card_name 이라 케이스만 다르며, collaboration: collaboration-default: fan-out / collapse (capability-families.yaml에서 파생) fan-out-roles: [role-id, …] # fan-out 시 격리 subagent로 분리 호출할 멤버 role. 비면 family 전체 통합(collapse). is-synthesis: true / false # true면 이 에이전트는 하위 보고서를 전부 읽고 종합하는 상위/lead subreport-paths: [uri, …] # is-synthesis=true일 때 읽어야 할 하위 .report.yaml 경로(원본 재적재) shared-constraints: # 권고#3 pre-brief: fan-out 워커에 필수. 발산 유지·충돌 결정만 사전 정렬(Cognition) approved-packet-ref: # 승인된 ExecutiveDecisionPacket 경로(있으면) scope: # 이번 phase가 다루는 범위 non-goals: # 다루지 않는 것(가정 충돌 방지) glossary: [ ] # 공통 용어 정의(같은 말을 다르게 쓰지 않게) report-return-contract: final-message: report-path + 1줄 bottom-line # fan-out 하위는 최종 메시지로 보고서 경로를 반환 write-report-to: new_report.py로 발급받은 불변 경로 completion-records//-.report.yaml immutability: 보고서는 불변 — 덮어쓰기/수정 금지. 재작업도 새 버전 파일로(guard_tools 강제). design-brief: # 디자인·비주얼 엔게이지먼트(FAM-DESIGN, DOC-VISUAL) 필수 입력. 전체 스키마·근거: design-brief-spec.yaml ref: org-os/06-agent-work/design-brief-spec.yaml brief: # 필수·최상단: 무엇을 만드나 / 누가 쓰나 / 이 산출물이 반드시 달성할 것 (2–3문장) references: [ ] # 구체 3–6개 + 각자 나르는 '구체 신호'("modern/clean/minimal" 형용사 금지) tokens: [ ] # 각 토큰 {value, intent, boundary} — 값만이 아니라 의도+경계(Don't) decisions: [ ] # 언제 A vs B (컴포넌트·다이어그램 분할 판단로직) donts: [ ] # 명시적 anti-pattern 8± (가드레일) objective: output-format: allowed-tools: allowed-paths: # task별 write/edit 경로. agent 정적 profile보다 더 좁은 실제 경계 task-boundaries: # 이 워커가 다루는/다루지 않는 작업 범위(경계) # --- P0 신규 필수 5개 (WP-5, finding #4) — context_package.py가 강제 검증 --- workspace: # 실행 워크스페이스명(_workspace가 해석: ORGOS_WORKSPACE / .orgos-workspace). 산출물/evidence 경로 접지. target-repo: # 워커가 실제로 손대는 대상 저장소/폴더(org-os/01-company/company-context.yaml projects[].id 또는 절대경로). "무엇을 대상으로 일하는가". acceptance-tests: # 이 task 고유의 수용 기준/검증 명령(범용 아님). 검증 가능해야 함 — WP-6 evidence-ledger의 E4/E5 대조 대상. [ {criterion, verify} , … ] non-goals: # 명시적 비목표(가정 충돌 방지). shared-constraints.non-goals의 1급(top-level) 승격 필드 — 값은 여기(top-level)가 canonical이며 collaboration.shared-constraints.non-goals에 중복 기재하지 않는다(둘 다 있으면 top-level 우선). task-boundaries가 '범위'라면 non-goals는 '의도적으로 제외한 것'. evidence-plan: # E4/E5 주장을 무엇으로 뒷받침할지 선언(receipt 계획, WP-6 C5/C6과 연동). [ {claim, grade, receipt} , … ] — receipt=실행 command(exit 0) 또는 산출 artifact 경로. 계획 없는 고등급 주장은 validator가 차단. primary-team-topology: value: stream-aligned / enabling / complicated-subsystem / platform / gtm-revenue reason: required-business-lenses: - customer-value - business-capability - value-stream - product-metric - cost-or-roi - operational-feasibility - revenue-impact - GTM-motion - lead-to-cash required-architecture-layers: - business-architecture - data-architecture - application-architecture - technology-architecture - security-architecture c-level-balance: product-speed: technical-stability: cost-efficiency: operational-readiness: product-technology-integration: revenue-growth: legal-compliance: gtm-revenue-context: GTM-motion: PLG / PLS / SLG / hybrid ACV-band: ICP: funnel-stage: revenue-metric: handoff-trigger: lead-to-cash-impact: must-read: - uri: reason: optional-read: - uri: reason: forbidden-context: - raw-chat-log - unrelated-agent-reports - outdated-superseded-docs - secrets - customer-pii inherited-decisions: - decision-id: summary: open-assumptions: - assumption: owner: expected-output: report-header: bottom-line: decision-needed: needed: true / false approver: confidence: value: High / Med / Low derived-from: evidence risks: [] evidence: [] # --- P1-D 신규(#9): 보고서와 분리된 1급 실물 산출물. 보고서는 이들의 envelope(경로+검증+리스크). --- # design/spec/build/completion 유형은 필수 — 실물(RFC/ADR·data-model·threat-model·api-contract·code)을 # 보고서 몇 줄 요약으로 대체하지 말고 실제 파일로 써서 아래에 등재한다. validate_report가 path 실존을 강제. primary-artifacts: - path: # 실물 산출물 파일 경로(실존해야 함) kind: # rfc | adr | data-model | threat-model | api-contract | code | prd | design-doc | verification-record | ... sha: # (선택) 산출물 해시 — evidence-ledger receipt(C5) artifact_sha256과 교차검증 verification: # 무엇으로 검증했는가(command/test/review). E4/E5 주장은 receipt 필요. required-reflections: learning: simpler-alternative: ownership-question: topology-impact: token-budget: max-input-tokens: max-output-tokens: max-tool-calls: max-attempts: max-cumulative-tokens: rehydration: max-summary-input: full-read-triggers: [tier-heavy, critical-claim, dissent-present, confidence-low, reviewer-request, projection-conflict] rehydration-policy: structured-projection-only / projection-first-expand-on-trigger / full-originals compression-policy: summarize-prior-reports: true include-raw-logs: false include-only-evidence-links: true rules: - Subagent must not read optional documents before must-read documents. - Subagent must not include forbidden-context in output. - Parent AI must pass evidence links instead of raw large logs whenever possible. - Context Package is required before worker execution. - 모든 spawn은 단일 컴파일러 `.claude/hooks/context_package.py`를 거친다(finding #4). 커맨드는 `--compile`로 패키지를 발급하고, 채운 뒤 `context_package.py `로 검증(exit 0)해야 워커를 spawn한다 — cascade(/decide·/ground·/design·/spec·/build)와 /run-wave 공통. objective/boundaries 즉석 추론 금지. - P0 신규 필수 5개(workspace·target-repo·acceptance-tests·non-goals·evidence-plan)가 비면 컴파일러가 spawn을 막는다(placeholder 미충전 = 미검증). - Context Package must declare primary-team-topology before execution. - Context Package must not include all architecture layers by default; include only layers relevant to the task and explain why. - If product-speed and technical-stability conflict, CTO/CPO or CPTO review is required before implementation. - If the task touches golden path, SLO, or shift-left security, platform and auditor roles must be considered in role selection. - If the task touches GTM, revenue, pricing, sales, customer success, partnership, demand generation, or lead-to-cash, gtm-revenue roles must be considered in role selection. - If outbound sales, enterprise contract, pricing, compliance claim, or customer-facing revenue commitment is involved, Legal/Compliance must be considered before execution. - family는 candidate pool이다. role_selector가 minimum sufficient concrete role만 선택하고 각 하위는 최종 메시지로 report-path를 반환한다. - 종합/결정 에이전트는 tier별 rehydration-policy를 따른다(light=projection, standard=projection-first 조건부 원문, heavy=전 원문). - build family는 collaboration-map.yaml design-to-build-contract의 must-read-designs가 Accepted 되기 전 구현을 시작하지 않는다(설계 없이 코딩 금지). - 종합 시에도 raw-chat-log/tool-trace/secrets/customer-pii는 여전히 forbidden-context다(.report.yaml만 재적재 허용). - "모든 보고서는 최상단에 `tags: [주제, 직무계열, …]`를 단다. 비슷한 직무 subagent가 `report_tags.py --tag`로 서로의 결정을 찾을 수 있게 한다." - fan-out 전, Orchestrator는 (1) 관련 태그의 동료 보고서(`report_tags.py`)와 (2) 작업 전 Slack 인박스(`slack_inbox.py`가 만든 `slack-inbox/.md`)를 워커 must-read에 넣는다. - 워커는 작업 결과를 전역 Slack 결과보고 템플릿(~/.claude)으로 `notify_slack.py report`를 통해 보고할 수 있다(승인 채널·outbox 경유). - 디자인·비주얼 엔게이지먼트(FAM-DESIGN·DOC-VISUAL)는 design-brief 없이 워커 실행 금지. brief(무엇/누구/달성)·references(구체 신호)·donts를 비워 두지 않는다 — 비면 에이전트가 generic한 추론층을 지어낸다(제약>묘사, design-brief-spec.yaml). - "design/spec/build/completion 유형 산출은 실물 deliverable(RFC/ADR·data-model·threat-model·api-contract·code)을 expected-output.primary-artifacts[]에 실제 파일 경로로 등재한다(#9). 보고서(.report.yaml)는 그 실물의 envelope(경로+검증+리스크)이며 보고서 몇 줄 요약으로 실물을 대체하지 않는다 — validate_report가 primary-artifacts 실존(과 sha receipt)을 강제한다." - 다이어그램 산출은 D2(아키텍처·의존성·중첩) 또는 Excalidraw(설명·손그림)를 우선하고 Mermaid는 최후 폴백이다(diagram-craft skill).