186 lines
13 KiB
YAML
186 lines
13 KiB
YAML
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/<name>.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/<workflow-id>/<role>-<UTCstamp>.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 <pkg>`로 검증(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/<wf>.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).
|