execution-policy: version: 1 purpose: wave를 배리어가 아닌 파이프라인으로 실행하고, 감사를 병렬화하며, 재적재 비용을 통제한다. pipeline-default: true barrier-allowed-only-when: - divergent-synthesis - dedup-across-all-findings - early-exit-on-zero - cross-item-comparison-required wave: max-concurrent-role-agents: 5 semantics: concurrency-cap-not-barrier note: scorecard의 wave-size 5는 동시성 상한이며 wave 완료를 기다리는 배리어가 아니다. parallel-audit-fanout: applies-to-tier: heavy min-independent-verifiers: 3 verifier-prompt-stance: refute verifier-lens-diversity: required kill-on: majority-refute on-kill: set-state-Blocked verifier-independence: rule: 검증자 패밀리는 자기 패밀리가 작성한 산출물을 검증할 수 없다 source: roles.yaml independent-audit-policy 이해상충 규칙과 정합 re-hydration-control: pass-forward: structured-summary-and-evidence-links-only forbid: raw-logs enforce: org-os/06-agent-work/context-package-spec.yaml compression-policy exception: synthesis-rehydration (아래 tier별 projection-first 정책에 따라 필요한 원문만 확장한다) fan-out-collapse-policy: source-of-default: org-os/00-role-registry/capability-families.yaml (collaboration-default) fan-out: when: family.collaboration-default == fan-out (판단·설계·분석·수익 계열) driven-by: Orchestrator (메인 세션 — Agent/Task 도구 보유). subagent는 subagent를 못 부르므로 fan-out은 Orchestrator가 구동한다. agent-artifacts: concrete role마다 개별 subagent 정의 존재(.claude/agents/.md). family router/resolver card는 생성하지 않는다. mechanism: > Orchestrator가 fan-out family의 멤버 role 에이전트를 각각 격리 subagent로(병렬) 호출한다. 각 워커는 자기 관점·근거만 가진 깨끗한 context에서 시작해(context 오염 방지) 자기 .report.yaml을 쓰고, 최종 메시지로 그 경로 + 1줄 bottom-line을 반환한다. member-split-condition: role_selector가 required coverage를 만족하는 최소 멤버만 선택한다. family members는 candidate pool이지 spawn list가 아니다. report-return-contract: 워커 subagent 최종 메시지 = report-path + 1줄 bottom-line (Orchestrator가 경로로 원본을 Read) synthesis: who: Orchestrator 또는 지정된 상위 직무자(C-Level/CEO) — 워커가 아니다 must: 워커 보고서들을 전부 읽고(synthesis-rehydration) 합의·충돌을 보존해 종합/최종결정 문서를 남긴다 must-not: 워커가 스스로 종합하는 것 / 요약으로 축소하거나 dissent를 삭제하는 것 collapse: when: family.collaboration-default == collapse (코드·실행 산출 계열) mechanism: 멤버 role을 1 에이전트(=그 family)로 통합해 단일 보고서. 효율 우선(family-collapse와 동일). overrides: - if: tier == heavy then: collapse family도 적대적 검증(parallel-audit-fanout)을 위해 fan-out 허용 - if: mode == converge and tier == light then: fan-out family도 멤버 분리 생략하고 단일 종합만 허용(경량 경로) - if: context-package.fan-out-roles 존재 then: 명시된 role만 분리 호출 synthesis-rehydration: rule: projection-first. light는 structured projection만, standard는 projection 우선 후 충돌·저신뢰·dissent만 원문 확장, heavy는 전 원문을 읽는다. rationale: decision-summary/evidence-index/dissent/open-risks/artifact-refs로 provenance를 유지하고 불필요한 full read를 제한한다. full-read-triggers: [tier-heavy, critical-claim, dissent-present, confidence-low, reviewer-request, projection-conflict] still-forbidden: [raw-chat-log, tool-trace, secrets, customer-pii] note: .report.yaml은 구조화 산출물이라 forbid raw-logs에 해당하지 않는다. 금지 대상은 원시 로그/툴 트레이스/비밀/PII다. # fan-out의 비용(토큰)과 품질(발산 충돌·관점 유실)을 통제하는 5개 컨트롤. # 출처: docs/superpowers/harness-efficiency-audit-2026-07-07.md (유사 하네스 웹조사 5 권고) fan-out-cost-and-quality-controls: "1-token-budget": rule: fan-out 누적 토큰이 tier per-wave 예산 초과 시 collapse(단일 종합)로 강등하거나 tier 상향(사람 승인). budget: agent-operating-kpi.yaml token-budgets.per-wave enforce: ".claude/hooks/token_ledger.py (log/check/dashboard) + run-wave Orchestrator" grounding: "Anthropic — 멀티에이전트 ~15배 토큰, 토큰량이 성능분산 80% 설명" "2-lens-cap": rule: light/standard tier는 같은 lens에 워커 1명(primary carrier)만. 같은 렌즈 sub-angle 분화는 heavy에서만. source-of-truth: lens-registry.yaml shared-lens-selection enforce: ".claude/hooks/lens_cap.py (check) + role-selection-scorecard" grounding: "Anthropic — 단순 질의에 subagent 50개 spawn 낭비" "3-shared-constraint-pre-brief": rule: 한 phase 병렬 fan-out 시 각 워커 context-package에 승인 Packet + shared-constraints(scope/non-goals/glossary)를 동봉. why: 발산 다양성은 유지하되 '충돌하는 결정'만 사전 정렬(Cognition Flappy Bird) enforce: "Orchestrator 계약 — context-package.shared-constraints 필수(fan-out 시)" "4-dissent-preservation": rule: 종합 보고서(linked-reports/synthesized-by/members)는 conflicts|dissent 필드 + linked-reports 필수(요약으로 관점 유실 차단). enforce: ".claude/hooks/validate_report.py (강제, exit 2)" grounding: "스펙 must-not(dissent 삭제 금지) + Anthropic 종합 실패원" "5-compaction": rule: fan-out 워커 원시 트레이스가 context 초과 시에만 핵심 결정으로 compaction. 결정/종합 지점의 synthesis-rehydration(.report.yaml 전문)은 압축 대상에서 제외. still-forbidden: raw-log는 여전히 배제(re-hydration-control) grounding: "12-factor Factor3 own-your-context·dumb-zone 40~60%; Cognition/Anthropic context 초과 최난제" family-collapse: rule: 실행 직전, DRAI/scorecard가 참조하는 role 집합에서 같은 family의 복수 role은 1 에이전트(=그 family)로 collapse한다. preserve: 서로 다른 family는 유지한다(다른 렌즈 보존). collapse는 같은 렌즈의 중복만 제거한다. routing-unit: capability-family handoff-context-policy: converge: 선행 결정 트레이스(inherited-decisions + 관련 근거)를 전달한다. 요약만으로 축소하지 않는다(Cognition). divergent: 병렬 유지. 각 lens 에이전트는 독립적으로 시작한다. note: 발산은 관점 충돌이 목적이라 병렬 격리가 맞고, 수렴은 결정 충돌을 피하려면 트레이스를 더 공유해야 한다.