schema-version: 1 repository-snapshot-hash: sha256:f67f7223c7fd7123f3cdef81d251ad96cb75fd6e8c7a6208777721c2576b6cda project-name: Org OS 하네스 languages: [Python, YAML, Markdown, JSON] frameworks: [Claude Code] facts: # ── identity ──────────────────────────────────────────────────────────── - id: F-IDENTITY-CORE category: identity key: project-identity-and-purpose value: name: Org OS 하네스 purpose: 회사 전체를 AI 에이전트로 운영하는 파일 기반 운영체계로, 개발과 비즈니스(GTM/수익)를 함께 다룬다. runtime: Claude Code 위의 subagent·project command·hook source-of-truth: org-os/ 디렉터리(명세·상태의 단일 원천) assertion-type: declared confidence: high evidence: - path: CLAUDE.md line-start: 1 line-end: 7 source-kind: project-documentation - path: CLAUDE.md line-start: 126 line-end: 129 source-kind: project-documentation - id: F-IDENTITY-RUNTIME-COUPLING category: identity key: single-runtime-adapter value: adapter-directory: .claude adapter-contents: [agents, commands, hooks, schemas, skills, tests, settings.json, tool-versions.yaml] hook-package-subdirs: [hooks/bench_cascade, hooks/orgos/planning, hooks/orgos/state] other-agent-runtime-adapter-directories-present: false implication: 진입점(slash command)·강제(hook)는 Claude Code 어댑터를 통해서만 배선돼 있다. assertion-type: observed confidence: high evidence: - path: .claude/settings.json line-start: 1 line-end: 49 source-kind: claude-code-configuration - path: .claude/commands source-kind: directory-listing symbol: 18 *.md command definitions - id: F-IDENTITY-SNAPSHOT category: identity key: analyzed-tree-state value: analysis-date: '2026-07-20' re-extraction-time: '13:36 (local)' git-head: 00db337 head-subject: 'P4 final-fix follow: C1 fail-closed 테스트를 charge() overage로 실검증' working-tree: dirty changed-or-untracked-entries: 269 untracked-entries: 84 deleted-entries: 26 note: 분석 대상은 커밋된 HEAD가 아니라 현재 워킹 트리다. 이 값들은 13:36 재추출 시점의 것이며, 같은 트리를 다른 세션이 동시에 수정 중이었다(F-LIMIT-CONCURRENT-REFACTOR). superseded-earlier-reading: '12:03 시점에는 changed-or-untracked 197 · untracked 75 · deleted 0이었다.' assertion-type: executed confidence: high evidence: - path: .git source-kind: executed-command-output symbol: 'git log --oneline -1 && git status --porcelain | wc -l' - id: F-IDENTITY-NO-LICENSE category: identity key: license-file-absent value: license-file: null note: 저장소 루트에 LICENSE/COPYING 파일이 없다. assertion-type: observed confidence: high evidence: - path: . source-kind: directory-listing symbol: repository root has no LICENSE file # ── workflow ──────────────────────────────────────────────────────────── - id: F-WORKFLOW-ENTRY category: workflow key: new-workflow-entrypoint value: command: /ceo-intake executor-role: OPS-ORCH author-role: EXEC-CEO applies-to: [cascade, wave, light, venture-bootstrap] intake-outputs: [decision-brief, workload-profile] intake-exit-gate: [decision-brief-present, workload-profile-present, company-context-ready] declares: [mode(divergent|converge), tier(light|standard|heavy)] assertion-type: observed confidence: high evidence: - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 49 line-end: 54 source-kind: workflow-contract - path: .claude/commands/ceo-intake.md line-start: 1 line-end: 12 source-kind: command-definition - id: F-WORKFLOW-PLAN-INVENTORY category: workflow key: declared-workflow-plans value: count: 5 plans: [cascade, wave, light, venture-bootstrap, design-direction] graph-source-of-truth: org-os/06-agent-work/workflow-contracts.yaml mirror-file: org-os/06-agent-work/execution-plans.yaml mirror-status: 호환/문서용 mirror이며 런타임 정본이 아니다. assertion-type: observed confidence: high evidence: - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 43 line-end: 47 source-kind: workflow-contract - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 108 line-end: 147 source-kind: workflow-contract - path: org-os/06-agent-work/execution-plans.yaml line-start: 1 line-end: 11 source-kind: execution-plan-mirror - id: F-WORKFLOW-CASCADE category: workflow key: cascade-stage-map value: terminal-stage: released default-tier: standard stages: - {stage: intake, command: ceo-intake, next: discovery, output: [decision-brief, workload-profile]} - {stage: discovery, command: ground, next: decide, output: [grounding-package]} - {stage: decide, command: decide, next: design, output: [executive-decision-packet]} - {stage: design, command: design, next: spec, output: dynamic-bundle design-bundle} - {stage: spec, command: spec, next: build, output: dynamic-bundle spec-bundle} - {stage: build, command: build, next: verification, output: [completion-record]} - {stage: verification, command: review-output, next: acceptance, output: [quality-gate-review]} - {stage: acceptance, command: release-check, next: released, output: [release-decision]} - {stage: released, command: null} stage-exit-gates: intake: [decision-brief-present, workload-profile-present, company-context-ready] discovery: [grounding-evidence-present, option-set-present] decide: [decision-packet-accepted, evidence-grade-min] design: [design-accepted, design-direction-gate-satisfied] spec: [spec-accepted, must-read-designs-accepted] build: [completion-record-present] verification: [quality-gate-passed, blocker-open-false] acceptance: [release-approved, no-unresolved-critical-risks, human-gate] released: [] release-exit-gates: [release-approved, no-unresolved-critical-risks, human-gate] rework-transition: 'verification -> build (required-conditions: quality-gate-failed)' ordering-note: discovery(ground)가 decide보다 앞선다. assertion-type: observed confidence: high evidence: - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 46 line-end: 106 source-kind: workflow-contract - path: org-os/06-agent-work/execution-plans.yaml line-start: 13 line-end: 22 source-kind: execution-plan-mirror - id: F-WORKFLOW-WAVE-LIGHT category: workflow key: wave-and-light-selection value: wave: stages: [intake, plan, run, verification, acceptance, released] commands: [ceo-intake, plan-wave, run-wave, review-output, release-check] loop-stage: run terminal-stage: released default-tier: standard stage-exit-gates: intake: [decision-brief-present, workload-profile-present, company-context-ready] plan: [wave-plan-present] run: [completion-record-present] verification: [quality-gate-passed, blocker-open-false] acceptance: [release-approved, no-unresolved-critical-risks, human-gate] released: [] light: stages: [intake, run, verification, acceptance] commands: [ceo-intake, run-wave, review-output] omitted-stage: plan terminal-stage: acceptance default-tier: light intended-for: 저위험·two-way-door·single-role이며 고객/매출/보안 영향이 없는 작업 stage-exit-gates: intake: [decision-brief-present, workload-profile-present, company-context-ready] run: [completion-record-present] verification: [quality-gate-passed, blocker-open-false] acceptance: [] wave-vs-light-release-gate: wave-acceptance-transition: acceptance -> released wave-acceptance-exit-gate: [release-approved, no-unresolved-critical-risks, human-gate] light-acceptance-transition: null light-acceptance-exit-gate: [] light-acceptance-command: null asymmetry: wave의 acceptance는 released로 전이하며 human-gate를 포함한 3개 exit-gate를 갖는다. light의 acceptance는 terminal stage(command null · exit-gate [])이며 released로 가는 전이 자체가 없다. wave-vs-cascade-acceptance: cascade.acceptance(line 97)와 wave.acceptance(line 115)의 exit-gate 리스트는 문자열이 동일하다. assertion-type: observed confidence: high evidence: - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 108 line-end: 124 source-kind: workflow-contract - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 111 line-end: 116 source-kind: workflow-contract symbol: wave.stages — per-stage exit-gate - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 115 line-end: 115 source-kind: workflow-contract symbol: 'wave.acceptance exit-gate: [release-approved, no-unresolved-critical-risks, human-gate]' - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 119 line-end: 124 source-kind: workflow-contract symbol: light.terminal-stage=acceptance and light.stages per-stage exit-gate - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 124 line-end: 124 source-kind: workflow-contract symbol: 'light.acceptance { command: null, exit-gate: [] }' - path: org-os/06-agent-work/execution-plans.yaml line-start: 23 line-end: 37 source-kind: execution-plan-mirror - id: F-WORKFLOW-VENTURE category: workflow key: venture-bootstrap value: entry: /ceo-intake --plan venture-bootstrap subsequent-commands: [/venture-validate, /company-bootstrap] stages: [intake, founder-setup, opportunity-discovery, venture-validation, venture-decision, company-context-commit, bootstrap-complete] terminal-stage: bootstrap-complete founder-input: org-os/01-company/founder-context.yaml required-founder-status: filled output: org-os/01-company/company-context.yaml output-status: provisional stage-exit-gates: intake: [decision-brief-present] founder-setup: [founder-context-present] opportunity-discovery: [opportunity-clusters-present] venture-validation: [venture-options-validated] venture-decision: [venture-decision-accepted, human-acceptance-receipt-present] company-context-commit: [company-context-provisional-committed, company-context-lint-passed, company-context-artifact-recorded] bootstrap-complete: [] commit-exit-gate: [company-context-provisional-committed, company-context-lint-passed, company-context-artifact-recorded] company-context-status-vocabulary: [template, provisional, operating] assertion-type: observed confidence: high evidence: - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 126 line-end: 135 source-kind: workflow-contract - path: org-os/06-agent-work/execution-plans.yaml line-start: 38 line-end: 47 source-kind: execution-plan-mirror - path: CLAUDE.md line-start: 88 line-end: 92 source-kind: project-documentation symbol: 'Venture Bootstrap 섹션' - id: F-WORKFLOW-DESIGN-DIRECTION category: workflow key: design-direction-child-workflow value: relationship: 제품 cascade에 종속된 child workflow stages: [design-direction-intake, design-direction-discovery, design-direction-divergence, design-direction-decision, design-direction-prototype, design-direction-critique, design-direction-finalize, design-direction-approved] terminal-stage: design-direction-approved parent-binding: [parent-workflow-id, product-decision-id, direction-input-brief-sha256] rework-transitions: - critique -> prototype (critique-revision-requested) - critique -> divergence (concept-rejection-recorded) stage-exit-gates: design-direction-intake: [parent-binding-present, direction-input-brief-valid] design-direction-discovery: [direction-discovery-present, divergence-charter-present] design-direction-divergence: [directions-diverged, divergence-audit-passed] design-direction-decision: [selected-direction-accepted] design-direction-prototype: [winner-prototype-present] design-direction-critique: [direction-critique-passed] design-direction-finalize: [approved-direction-valid, approval-receipt-bound, parent-approval-link-recorded] design-direction-approved: [] final-artifact: approved-direction approval-payload-fields: [parent-workflow-id, child-workflow-id, product-decision-id, direction-input-brief-sha256, selected-direction-ref, selected-direction-sha256, winner-prototype-ref, winner-prototype-sha256] assertion-type: observed confidence: high evidence: - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 137 line-end: 150 source-kind: workflow-contract - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 25 line-end: 25 source-kind: workflow-contract - path: org-os/06-agent-work/execution-plans.yaml line-start: 48 line-end: 59 source-kind: execution-plan-mirror - id: F-WORKFLOW-COMMAND-INVENTORY category: workflow key: slash-command-inventory value: count: 18 commands: [build, ceo-intake, company-bootstrap, consult, decide, design, design-direction, design-review, design-system, doctor, ground, plan-wave, release-check, review-output, run-cascade, run-wave, spec, venture-validate] assertion-type: observed confidence: high evidence: - path: .claude/commands source-kind: directory-listing symbol: 18 *.md files - path: .claude/hooks/lint_refs.py source-kind: executed-command-output symbol: 'OK lint_refs: 18 command 참조 + 75 agent skills 참조 모두 해결됨 (13:36)' - id: F-WORKFLOW-SPECIALIZED category: workflow key: specialized-entrypoints value: /run-cascade: 전체 cascade를 state_engine으로 순회하는 얇은 상위 드라이버. 평행 엔진 금지, human-gate에서 정지(자동 승인·자동 완주 금지). /design-direction: 불변 direction-input-brief에서 3안 독립발산 → 단일수렴 → 승자 prototype → 비평 루프 → approved-direction 산출. /design-review: winner-prototype을 7-lens 패널로 감사. producer-run-id != reviewer-run-id 강제. 상태 전이는 하지 않는다. /design-system: 기존 스택 discovery 후 reuse/adapt/create를 판정하고 코드 디자인 시스템·화면과 headless chrome 렌더 검증을 산출. /consult: engagement 유형(비즈니스/문서)으로 FAM-CONSULTING 또는 FAM-DOC-CONSULT를 분기해 문서와 덱을 산출. /doctor: python3 .claude/hooks/doctor.py 실행 preflight를 감싸는 커맨드. assertion-type: declared confidence: high evidence: - path: .claude/commands/run-cascade.md line-start: 1 line-end: 13 source-kind: command-definition - path: .claude/commands/design-direction.md line-start: 1 line-end: 6 source-kind: command-definition - path: .claude/commands/design-review.md line-start: 1 line-end: 6 source-kind: command-definition - path: .claude/commands/design-system.md line-start: 1 line-end: 10 source-kind: command-definition - path: .claude/commands/consult.md line-start: 1 line-end: 10 source-kind: command-definition - path: .claude/commands/doctor.md line-start: 1 line-end: 10 source-kind: command-definition - id: F-WORKFLOW-HUMAN-GATE-MAP category: workflow key: human-approval-tokens-across-plans value: scope: org-os/06-agent-work/workflow-contracts.yaml의 exit-gate와 side-transition에 문자 그대로 등장하는 사람 승인 토큰만 계수한다. human-gate: appears-in: [cascade.acceptance, wave.acceptance] occurrences: 2 full-exit-gate: [release-approved, no-unresolved-critical-risks, human-gate] guards-transition: acceptance -> released note: 두 plan의 exit-gate 리스트는 문자열이 동일하다. human-acceptance-receipt-present: appears-in: [venture-bootstrap.venture-decision] occurrences: 1 full-exit-gate: [venture-decision-accepted, human-acceptance-receipt-present] guards-transition: venture-decision -> company-context-commit human-instruction-applied-if-needed: appears-in: [side-transitions blocked -> ] occurrences: 1 required-conditions: [resume-condition-satisfied, human-instruction-applied-if-needed] plans-with-no-human-literal-in-exit-gates: [light, design-direction] light-explanation: light의 terminal-stage는 acceptance이고 그 stage는 command null · exit-gate []다. released로 가는 전이가 정의돼 있지 않으므로 release 사람 게이트가 놓일 자리가 없다. design-direction-explanation: design-direction-finalize의 exit-gate에는 approval-receipt-bound와 parent-approval-link-recorded가 있으나 human-* 리터럴 토큰은 없다. terminal-stage-regularity: rule: 5개 plan의 terminal stage는 모두 command null · exit-gate []다. instances: cascade.released: 101 wave.released: 116 light.acceptance: 124 venture-bootstrap.bootstrap-complete: 135 design-direction.design-direction-approved: 147 reading: 빈 exit-gate는 '게이트가 없다'가 아니라 '종단 stage라 다음 전이가 없다'를 뜻한다. assertion-type: observed confidence: high evidence: - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 97 line-end: 97 source-kind: workflow-contract symbol: cascade.acceptance exit-gate contains human-gate - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 115 line-end: 115 source-kind: workflow-contract symbol: wave.acceptance exit-gate contains human-gate - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 124 line-end: 124 source-kind: workflow-contract symbol: 'light.acceptance { command: null, exit-gate: [] } — terminal' - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 133 line-end: 133 source-kind: workflow-contract symbol: venture-decision exit-gate contains human-acceptance-receipt-present - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 146 line-end: 147 source-kind: workflow-contract symbol: design-direction-finalize approval-receipt-bound; terminal stage exit-gate [] - path: org-os/06-agent-work/workflow-contracts.yaml line-start: 154 line-end: 154 source-kind: workflow-contract symbol: 'blocked -> required-conditions human-instruction-applied-if-needed' # ── architecture ──────────────────────────────────────────────────────── - id: F-ARCH-DIRECTORIES category: architecture key: repository-directory-responsibilities value: org-os/00-role-registry: 역할·family·lens·상태 전이·권한·method 계약 활성화의 원천 org-os/01-company: company-context·founder-context (회사 고유 사실) org-os/02-capabilities: README stub org-os/03-products: README stub org-os/04-architecture: README stub org-os/05-operations: README stub org-os/06-agent-work: workflow·artifact·협업·실행 계약과 generated/artifact-registry.yaml org-os/07-knowledge-base: README stub .claude/commands: 사용자 workflow 진입점(18개) .claude/agents: registry에서 생성되는 concrete 실행 역할 카드(75개 — family/resolver/router 카드는 생성하지 않는다) .claude/skills: 역할별 method skill과 capability skill(78개 디렉터리) .claude/hooks: 상태 엔진·검증·증거 원장·렌더러·생성기·벤치마크(40개 최상위 .py + bench_cascade/ 및 orgos/ 패키지) .claude/hooks/orgos: planning(role_selector·coverage_model·intake_classifier·budget_planner·task_graph)과 state(event_store·materializer·transition_engine) 하위 패키지 .claude/schemas: report와 typed artifact JSON Schema(44개) .claude/tests: 하네스 강제기·workflow 계약 테스트(32개 test_*.py + run_all.py) benchmark: golden task 벤치마크와 P4 cascade 벤치마크 정본 입력 docs/superpowers: 설계 spec과 구현 plan _sandbox: 테스트용 워크스페이스 hyeonworks: 실제 제품 프로젝트 워크스페이스 repomix: 소스에서 재생성되는 패킹 산출물(gitignored) assertion-type: derived confidence: high evidence: - path: CLAUDE.md line-start: 5 line-end: 46 source-kind: architecture-documentation - path: .claude/hooks/_workspace.py line-start: 1 line-end: 15 source-kind: runtime-path-implementation - path: .gitignore line-start: 49 line-end: 50 source-kind: ignore-policy - path: .claude/hooks/orgos source-kind: directory-listing symbol: 'orgos/planning (5 modules) + orgos/state (3 modules) — new since 12:03' - id: F-ARCH-ROLE-MODEL category: architecture key: role-family-lens-model value: reference-ai-roles: 75 roles-yaml-version: 4 final-human-owner: HUMAN-001 routing-families: 28 capability-families-version: 6 evaluation-lenses: 12 lens-registry-version: 2 generated-agent-cards-contract: 75 count-rule: role-registry.roles 항목만 AI role agent로 계수한다. team topology·EA layer·workflow gate는 role 수를 늘리지 않는다. assertion-type: observed confidence: high evidence: - path: org-os/00-role-registry/roles.yaml line-start: 1 line-end: 22 source-kind: role-registry - path: org-os/00-role-registry/capability-families.yaml line-start: 9 line-end: 13 source-kind: family-registry - path: org-os/00-role-registry/lens-registry.yaml line-start: 13 line-end: 25 source-kind: lens-registry - path: .claude/hooks/gen_agents.py line-start: 516 line-end: 523 source-kind: generator-contract - id: F-ARCH-AGENT-CARD-COMPOSITION category: architecture key: generated-agent-card-composition value: total: 75 fan-out-workers: 43 collapse-concrete-workers: 19 direct-single-member-workers: 10 synthesis-leads: 3 family-resolvers: 0 routers: 0 family-metadata-cards: 0 executable-family-agents: 0 profiles-consumed: 75 identity: 75 reference roles == 75 executable concrete cards (1:1) generation-rule: .claude/agents/*.md는 생성물이며 수기 편집 금지. role-profiles/capability-families를 고치고 gen_agents.py를 재실행한다. superseded-earlier-reading: '12:03 시점에는 101장(43 fan-out + 19 collapse + 10 direct + 3 lead + 16 resolver + 10 router)이었다. 이후 동시 리팩터가 resolver/router/family 카드를 제거해 75장이 됐다(fam-*.md 26개 삭제).' assertion-type: executed confidence: high evidence: - path: .claude/hooks/gen_agents.py line-start: 516 line-end: 523 source-kind: generator-contract symbol: '개수 계약: 75 reference roles == 75 executable concrete cards' - path: .claude/hooks/gen_agents.py line-start: 531 line-end: 533 source-kind: generator-implementation - path: .claude/hooks/gen_agents.py source-kind: executed-command-output symbol: 'OK gen_agents: 75 concrete agents (43 fan-out workers + 19 collapse workers + 10 direct workers + 3 lead; family metadata cards=0) validated (profiles=75) — re-run 13:36, exit 0' - id: F-ARCH-COLLABORATION category: architecture key: fan-out-collapse-policy value: family-defaults: {fan-out: 21, collapse: 6, n/a: 1} rule: 코드·실행 산출물을 만드는 family만 collapse. 판단·설계·분석·수익 산출물을 만드는 family는 fan-out. fan-out-driver: Orchestrator(메인 세션). subagent는 subagent를 호출할 수 없다. synthesis-rehydration: 종합·결정 지점에서 상위는 하위 .report.yaml 전문을 읽는다. 요약본 대체 금지. wave-max-concurrent-role-agents: 5 wave-semantics: concurrency-cap-not-barrier heavy-tier-parallel-audit: {min-independent-verifiers: 3, verifier-prompt-stance: refute, kill-on: majority-refute} verifier-independence: 검증자 패밀리는 자기 패밀리가 작성한 산출물을 검증할 수 없다. assertion-type: observed confidence: high evidence: - path: org-os/00-role-registry/capability-families.yaml line-start: 30 line-end: 34 source-kind: family-registry - path: org-os/06-agent-work/execution-policy.yaml line-start: 10 line-end: 23 source-kind: execution-policy - path: org-os/06-agent-work/execution-policy.yaml line-start: 29 line-end: 58 source-kind: execution-policy - id: F-ARCH-STATE-ARTIFACT category: architecture key: trusted-state-and-artifact-runtime value: workflow-contract-source: org-os/06-agent-work/workflow-contracts.yaml workflow-contract-responsibility: stage graph·role capability·artifact kind·bundle·exit gate canonical-runtime-events: [workflow-events.jsonl, artifact-events.jsonl, acceptance-events.jsonl, human-signoff.jsonl] materialized-view: workflow.yaml (disposable) lifecycle: init-workflow -> complete-stage -> enter-stage trust-rule: caller가 제공한 gate fact·artifact kind·option count·evidence grade는 신뢰하지 않는다. 제출된 불변 바이트에서 파생한다. artifact-identity: 불변 artifact id + SHA-256 스냅샷 generated-registry: org-os/06-agent-work/generated/artifact-registry.yaml assertion-type: observed confidence: high evidence: - path: .claude/hooks/state_engine.py line-start: 2 line-end: 11 source-kind: runtime-implementation - path: .claude/hooks/artifact_contract.py line-start: 2 line-end: 7 source-kind: artifact-validation-implementation - path: org-os/06-agent-work/generated/artifact-registry.yaml line-start: 1 line-end: 4 source-kind: artifact-registry - id: F-ARCH-ARTIFACT-REGISTRY category: architecture key: compiled-artifact-registry-size value: artifact-kind-count: 186 currency: 13:36 재검증됨 — --check exit 0, 드리프트 없음. artifact-type-vocabulary.yaml이 +95행 확장(161 types)됐으나 생성 registry의 kind 수는 변하지 않았다. generated-by: .claude/hooks/compile_artifact_registry.py drift-detection: source-sha256 맵으로 원본 YAML 변경을 감지하며 --check가 run_all.py preflight에 포함된다. typed-schema-count: 44 assertion-type: executed confidence: high evidence: - path: org-os/06-agent-work/generated/artifact-registry.yaml line-start: 49 line-end: 49 source-kind: artifact-registry symbol: 'artifact-kind-count: 186' - path: .claude/hooks/compile_artifact_registry.py source-kind: executed-command-output symbol: '[artifact-registry] OK: 186 kinds (exit 0, re-run 13:36 — --check is read-only, returns before write at lines 278-289)' - path: .claude/schemas source-kind: directory-listing symbol: 44 *.json schema files - id: F-ARCH-METHOD-CONTRACT category: architecture key: role-method-skill-and-contract-layer value: method-procedure-source: org-os/00-role-registry/role-working-methods/ routing-source: org-os/00-role-registry/method-skill-registry.yaml generated-skill-dir: .claude/skills method-skill-naming: -method skill-directories: 78 roles-with-method-skill: 75 contract-v2-count: 75 active-contracts: 79 capability-sections-resolved: 5 migration-debt: 0 contract-machinery-numbers-currency: 'SUPERSEDED — contract-v2-count·active-contracts·capability-sections-resolved·migration-debt·roles-with-method-skill은 모두 12:03 doctor 출력에서 얻었고 재검증하지 않았다. method-contract-activations.yaml은 그 이후 수정됐다([M]).' independently-corroborated-at-13:36: {roles: 75 (roles.yaml total-role-count + gen_agents profiles=75), skill-directories: 78 (디렉터리 수)} activation-record: org-os/00-role-registry/method-contract-activations.yaml activation-fields: [status, contract-sha256, validation-report, validation-report-sha256, acceptance-workflow, activated-by, activated-at] assertion-type: executed confidence: high evidence: - path: org-os/00-role-registry/method-skill-registry.yaml line-start: 1 line-end: 8 source-kind: method-skill-registry - path: org-os/00-role-registry/method-contract-activations.yaml line-start: 1 line-end: 16 source-kind: method-contract-activation-record - path: .claude/hooks/doctor.py source-kind: superseded-command-output symbol: 'method-skill 배선 OK (75 roles · 75 skills) / 계약 machinery OK (v2 75·active 79·capability-section 5·migration-debt 0) — observed 12:03, not re-run' - path: .claude/skills source-kind: directory-listing symbol: '78 skill directories present at 13:36 (unchanged)' - id: F-ARCH-HOOKS category: architecture key: claude-code-hook-wiring value: PreToolUse: {script: guard_tools.py, matcher: 'Bash|Write|Edit|NotebookEdit|Read|Grep|Glob|WebFetch|WebSearch|Agent|Task'} PostToolUse: - {script: evidence_ledger.py, matcher: 'Bash|Write|Edit'} - {script: 'usage_observer.py --event tool', matcher: 'Bash|Write|Edit|NotebookEdit|Read|Grep|Glob|WebFetch|WebSearch'} SubagentStart: [subagent_register.py, 'usage_observer.py --event start'] SubagentStop: {scripts: ['usage_observer.py --event stop', stop_validate.py], mode: fail-closed} Stop: {script: 'stop_validate.py --main', mode: advisory} wiring-currency: '13:36 재추출 — usage_observer.py가 PostToolUse 2번째 matcher와 SubagentStart/SubagentStop에 새로 배선됐고 PreToolUse matcher에 WebFetch|WebSearch가 추가됐다. 12:03 추출에는 usage_observer가 없었다.' permissions-deny: [Read(./.env), Read(./.env.*), Read(**/.env), Read(**/.env.*), Read(**/id_rsa), Read(**/id_rsa.*), Read(**/.aws/credentials), Read(**/.ssh/**), 'Bash(rm -rf:*)', 'Bash(rm -fr:*)'] permissions-ask: ['Bash(git push:*)', 'Bash(gh pr create:*)', 'Bash(gh pr merge:*)', 'Bash(kubectl:*)', 'Bash(terraform apply:*)', 'Bash(docker push:*)', 'Bash(helm upgrade:*)', 'Bash(serverless deploy:*)'] primary-boundary: Claude Code 네이티브 permission 시스템 secondary-boundary: guard_tools.py(defense-in-depth) activation-condition: Claude Code가 이 저장소의 .claude/settings.json을 로드한 세션에서만 강제가 동작한다. assertion-type: observed confidence: high evidence: - path: .claude/settings.json line-start: 3 line-end: 49 source-kind: claude-code-configuration symbol: hooks block - path: .claude/settings.json line-start: 19 line-end: 25 source-kind: claude-code-configuration symbol: 'PostToolUse 2nd matcher -> usage_observer.py --event tool' - path: .claude/settings.json line-start: 50 line-end: 75 source-kind: claude-code-configuration symbol: permissions block (deny 10 · ask 8) - path: .claude/hooks/guard_tools.py line-start: 2 line-end: 12 source-kind: guard-implementation - path: CLAUDE.md line-start: 70 line-end: 70 source-kind: runtime-limit-documentation symbol: 'hook 강제는 설정(.claude/settings.json) 활성 시에만 동작한다' - id: F-ARCH-EVIDENCE-GRADING category: architecture key: receipt-grounded-evidence-validation value: report-contract: report-header(BLUF) — bottom-line, decision-needed(+approver), confidence, risks, evidence[] evidence-grades: E0~E5 receipt-ledger: /evidence/ledger.jsonl receipt-fields: [tool_use_id, tool_name, ts, cwd, command, exit_code, stdout_sha256, artifact_path, artifact_sha256] enforcement: E4/E5 주장은 evidence-ledger의 실제 receipt(command+exit_code:0 또는 artifact_sha256)와 대조되며 receipt가 없으면 차단된다. dissent-rule: synthesis 보고서는 linked-reports(실존)와 conflicts/dissent 리스트가 필수다. typed-verifier-runner: .claude/hooks/verify_run.py — 검증자를 직접 실행해 exit status·argv·출력 해시·workflow/session/agent 문맥을 함께 receipt로 남긴다(셸 미사용). assertion-type: observed confidence: high evidence: - path: .claude/hooks/validate_report.py line-start: 2 line-end: 16 source-kind: report-validator-implementation - path: .claude/hooks/evidence_ledger.py line-start: 2 line-end: 14 source-kind: evidence-ledger-implementation - path: .claude/hooks/verify_run.py line-start: 2 line-end: 8 source-kind: verifier-runner-implementation - path: CLAUDE.md line-start: 61 line-end: 62 source-kind: project-documentation symbol: 'report-header(BLUF) 강제 + evidence 없는 confidence:High 금지 / E4·E5 receipt 대조' # ── artifacts / workspace ─────────────────────────────────────────────── - id: F-ARTIFACT-LAYOUT category: artifacts key: workspace-resolution-and-layout value: resolution-order: [ORGOS_WORKSPACE environment variable, .orgos-workspace pointer file] pointer-parse-rule: 첫 non-comment·non-blank 줄 relative-vs-absolute: 상대값이면 repo root 기준, 절대경로면 그대로 사용 unresolved-behavior: WorkspaceNotSetError. require_workspace(advisory=False)를 쓰는 운영 훅은 exit 2로 fail-closed. advisory-degrade: require_workspace(advisory=True)를 쓰는 계측 훅(evidence_ledger)은 경고 후 None을 반환하고 도구 실행을 막지 않는다. directories: completion-records: /completion-records// evidence: /evidence/ reports: /reports/ state: /state/ slack-inbox: /slack-inbox/ slack-outbox: /slack-outbox/ design-system: /design-system/ assertion-type: observed confidence: high evidence: - path: .claude/hooks/_workspace.py line-start: 6 line-end: 15 source-kind: runtime-path-implementation - path: .claude/hooks/_workspace.py line-start: 28 line-end: 64 source-kind: runtime-path-implementation - path: .claude/hooks/_workspace.py line-start: 67 line-end: 118 source-kind: runtime-path-implementation - id: F-ARTIFACT-CURRENT-WORKSPACES category: artifacts key: workspaces-present-in-tree value: pointer-file-value: hyeonworks pointer-file-line: 20 test-workspace: _sandbox test-workspace-convention: 테스트·CI는 명령마다 ORGOS_WORKSPACE=_sandbox를 명시한다. product-workspace: hyeonworks hyeonworks-subdirectories: [app, completion-records, design, design-direction, evidence, state] sandbox-subdirectories: [completion-records, evidence, reports, state] note: 과거에는 포인터가 의도적으로 비어 있었으나 현재 워킹 트리에서는 hyeonworks로 채워져 있다. assertion-type: observed confidence: high evidence: - path: .orgos-workspace line-start: 17 line-end: 20 source-kind: workspace-pointer - path: hyeonworks source-kind: directory-listing - path: _sandbox source-kind: directory-listing - path: CLAUDE.md line-start: 64 line-end: 64 source-kind: project-documentation symbol: '운영 실행은 workspace 필수(#5)' - id: F-ARTIFACT-PROVENANCE category: artifacts key: immutable-reports-and-receipts value: report-path: /completion-records//-.report.yaml report-policy: .report.yaml은 덮어쓰기·수정 금지(guard_tools 강제). 재작업도 new_report.py로 새 파일을 발급한다. human-readable-render: render_report.py가 .report.yaml에서 MD를 생성하고 reports/INDEX.md가 목차 역할을 한다. acceptance-history: append-only acceptance event로 관리 receipt-ledger: /evidence/ledger.jsonl receipt-records: [executed command and exit code, stdout sha256, written artifact path and SHA-256] receipt-hook-limitation: workspace를 해석하지 못하면 계측을 생략하고 도구 실행 자체는 막지 않는다. derived-dashboards: [reports/TOKENS.md (token_ledger), reports/KPI.md (kpi_ledger)] dashboard-honesty-rule: kpi_ledger는 각 KPI를 measured/derived · manual · unmeasured로 구분 표기한다. assertion-type: observed confidence: high evidence: - path: .claude/hooks/new_report.py line-start: 2 line-end: 20 source-kind: report-path-implementation - path: .claude/hooks/evidence_ledger.py line-start: 2 line-end: 14 source-kind: evidence-ledger-implementation - path: .claude/hooks/kpi_ledger.py line-start: 2 line-end: 10 source-kind: kpi-collector-implementation - path: CLAUDE.md line-start: 54 line-end: 54 source-kind: project-documentation symbol: '2단 보고 — .report.yaml=SoT, render_report.py가 MD 생성, reports/INDEX.md 목차' # ── prerequisites ─────────────────────────────────────────────────────── - id: F-PREREQ-TOOLS category: prerequisites key: runtime-tool-versions value: required: python: {minimum: '3.10', tested: '3.12.3', why: hook·validator·test 런타임} pyyaml: {minimum: '6.0', tested: '6.0.1', pinned: '6.0.1', why: 모든 SSOT YAML 파싱} recommended: jsonschema: {minimum: '4.0', tested: '4.10.3', pinned: '4.10.3', degrade: 없으면 최소검증 폴백} node: {minimum: '18.0', tested: '24.14.0', why: design-system(vite build)·preview_ui} d2: {minimum: '0.6', tested: '0.7.1', why: diagram-as-code 실물 렌더} optional: marp: {minimum: '3.0', tested: null, fallback: HTML deck} checked-by: .claude/hooks/doctor.py가 tool-versions.yaml을 읽어 런타임 버전을 대조한다. assertion-type: observed confidence: high evidence: - path: .claude/tool-versions.yaml line-start: 1 line-end: 16 source-kind: tool-version-configuration - path: requirements.txt line-start: 1 line-end: 7 source-kind: dependency-manifest - id: F-PREREQ-INSTALL category: prerequisites key: dependency-install-procedure value: command: pip install -r requirements.txt third-party-packages: [PyYAML==6.0.1, jsonschema==4.10.3] note: 이 둘 외에는 Python 표준 라이브러리만 사용한다고 매니페스트가 선언한다. same-for: [로컬, CI] assertion-type: observed confidence: high evidence: - path: requirements.txt line-start: 1 line-end: 7 source-kind: dependency-manifest - path: .github/workflows/ci.yml line-start: 30 line-end: 31 source-kind: CI-workflow - id: F-PREREQ-UI category: prerequisites key: design-system-preview-tools value: required-for-full-render-check: [탐지된 패키지 매니저와 프로젝트 빌드 명령, Google Chrome 또는 Chromium 호환 실행 파일] checked-properties: [비어있지 않은 mounted DOM, 생성된 JavaScript 번들, CSS 대비, 키보드 focus 가시성, 반응형 viewport 스크린샷] limitation: render health를 검사하지만 시각적 차별성·타이포그래피·비례·spacing의 미학 품질은 판정하지 않는다. assertion-type: observed confidence: high evidence: - path: .claude/hooks/preview_ui.py line-start: 2 line-end: 41 source-kind: UI-verification-implementation - path: .claude/hooks/preview_ui.py line-start: 54 line-end: 62 source-kind: UI-verification-implementation # ── verification ──────────────────────────────────────────────────────── - id: F-VERIFY-SUITE category: verification key: full-test-runner value: entrypoint: .claude/tests/run_all.py documented-invocation: CLAUDE_PROJECT_DIR="$PWD" ORGOS_WORKSPACE=_sandbox python3 .claude/tests/run_all.py preflight: [compile_artifact_registry.py --check, doctor.py, lint_refs.py] test-discovery: .claude/tests/test_*.py (재추출 시점 32개) execution: suite별로 순차 실행하며 새 프로세스 그룹에서 시작한다. per-suite-timeout-seconds: 300 timeout-override-env: ORGOS_TEST_TIMEOUT timeout-handling: SIGTERM 후 필요 시 SIGKILL로 프로세스 그룹 종료 failure-contract: 실패하거나 timeout된 suite가 하나라도 있으면 exit 1 no-preflight-option: --no-preflight env-defaults: CLAUDE_PROJECT_DIR=repo root, ORGOS_WORKSPACE=_sandbox assertion-type: observed confidence: high evidence: - path: .claude/tests/run_all.py line-start: 2 line-end: 12 source-kind: test-runner - path: .claude/tests/run_all.py line-start: 23 line-end: 50 source-kind: test-runner - path: .claude/tests/run_all.py line-start: 53 line-end: 81 source-kind: test-runner - id: F-VERIFY-SUITE-EXECUTED category: verification key: full-suite-run-result-superseded value: currency: SUPERSEDED — 현재 저장소에 대한 주장이 아니다. superseded-reason: 이 실행은 2026-07-20 12:03에 이뤄졌고, 그 이후 다른 세션이 저장소를 리팩터해 agent 카드 101→75, hooks 35→40, test suite 31→32로 바뀌었다. 실행 대상 트리는 더 이상 존재하지 않는다. not-re-run-reason: 동시 세션이 같은 _sandbox 워크스페이스에 같은 스위트를 실행 중이어서 재실행 시 충돌한다(재추출 시점 13:36에 .claude/tests/fixtures/ 와 benchmark/cascade/candidates/ 에 쓰기 관측). 두 결과 모두 신뢰할 수 없게 되므로 재실행하지 않았다. historical-observation-2026-07-20T12:03: command: CLAUDE_PROJECT_DIR="$PWD" ORGOS_WORKSPACE=_sandbox python3 .claude/tests/run_all.py exit-code: 0 result: 34/34 green · failed 없음 entries: 3 preflight + 31 test_*.py suites current-suite-count: 32 test_*.py (재추출 시점 파일 수 — 실행 결과 아님) current-pass-state: UNKNOWN — 이 저장소의 전체 스위트가 현재 통과하는지 확인되지 않았다. executed-by: Repository Evidence Analyst(이 파일 작성자). 하네스의 Execution Verifier 게이트가 아니다. assertion-type: observed confidence: medium evidence: - path: .claude/tests/run_all.py source-kind: superseded-command-output symbol: 'SUMMARY: 34/34 green · failed: 없음 (exit 0) — observed 12:03 against a tree that no longer exists' - path: .claude/tests source-kind: directory-listing symbol: '32 test_*.py present at 13:36 (was 31 at 12:03)' - id: F-VERIFY-DOCTOR-EXECUTED category: verification key: doctor-run-result-superseded value: currency: SUPERSEDED — 현재 저장소에 대한 주장이 아니다. doctor.py 자체가 수정됐고(파일 [M]) settings.json·hook 배선·agent 카드가 모두 바뀌었다. not-re-run-reason: doctor는 run_all.py preflight의 일부이며 동시 실행 중인 스위트와 같은 워크스페이스를 읽는다. 재실행 결과의 독립성을 보장할 수 없어 재실행하지 않았다. current-verdict: UNKNOWN historical-run-date: '2026-07-20T12:03' historical-command: CLAUDE_PROJECT_DIR="$PWD" ORGOS_WORKSPACE=_sandbox python3 .claude/hooks/doctor.py historical-exit-code: 0 historical-summary: 35 OK · 0 WARN · 0 FAIL → verdict OK section-count-current: 14 section-count-historical-2026-07-20T12:03: 13 section-count-currency: CURRENT — 재추출 시점 소스에서 직접 확인했다(실행이 아니라 정적 확인). section-enumeration-mechanism: source-of-truth: doctor.py main()의 리터럴 sections 리스트(749-764행). 이 리스트가 그대로 report.render(sections)로 전달된다. not-a-reliable-proxy: 'def check_* 함수 수(14)를 세는 방법은 우연히 같은 값을 주지만 정본이 아니다 — load_settings()는 check_* 이름이 아니면서 섹션 1에 기록하고, check_wiring()도 섹션 1에 기록한다(2 함수 → 1 섹션). 대응은 load_settings+check_wiring→§1, check_referenced_scripts→§2, main() 루프의 12개 함수→§3-14.' empty-section-rule: 'render()는 항목이 0개인 섹션을 출력에서 통째로 건너뛴다(83-84행 if not rows: continue). 따라서 리스트 길이가 곧 사용자가 보는 수는 아니다.' reader-visible-count: 14 — 14개 섹션 각각을 담당하는 함수가 모든 코드 경로에서 최소 1개 항목(ok 또는 fail)을 기록하므로 빈 섹션으로 생략되지 않는다. section-titles-current: - '1. settings.json + hook 배선(C7)' - '2. 참조 hook 스크립트 실존' - '3. python / 의존성' - '4. workspace 해석' - '5. 커맨드→agent 참조 무결성(lint_refs.py)' - '6. SSOT 소비 현황(#13: 정책 YAML이 코드에 실제로 읽히나)' - '7. company-context 정합(lint_company_context)' - '8. venture-bootstrap 배선(P1)' - '9. design-direction 배선(P2)' - '10. method-skill 배선(P3)' - '11. method-contract machinery(P3-B)' - '12. append-only JSONL 원장 무결성' - '13. compiled artifact registry' - '14. compiled Org OS registries + architecture views' section-14-detail: added-by: 동시 리팩터(12:03 추출에는 없었다) backing-command: python3 .claude/hooks/compile_orgos_registry.py --check independently-executed: '13:41 재실행 — exit 0, "OK orgos registry: 4 registries + generated README + 4 architecture views (checked)"' read-only-basis: '--check는 compile_orgos_registry.py 286행 if not check: 로 쓰기가 차단된다.' caveat: 이 섹션은 settings.json에 배선되지 않은 신규 모듈(compile_orgos_registry.py)을 호출한다. 섹션 자체는 통과하지만 그 대상 machinery는 아직 hook으로 배선돼 있지 않다. known-quirk: 'main()의 예외 핸들러(779행)는 어떤 check 함수의 예외든 섹션 3(python / 의존성)에 기록한다. 따라서 §14에서 터진 오류가 §3 밑에 표시될 수 있다.' historical-notable-observations: python: 3.12.3 pyyaml: 6.0.1 jsonschema: 4.10.3 node: v24.14.0 d2: v0.7.1 marp: 없음 — consult 덱(.pptx/.pdf) 제한, 대체 경로 있음 ssot-consumption: 소비 8 · prose-only 5 / 총 13 jsonl-ledgers: 7개 파일 · non-empty row 38개 artifact-registry: 186 kinds executed-by: Repository Evidence Analyst(이 파일 작성자). 하네스의 Execution Verifier 게이트가 아니다. assertion-type: observed confidence: medium evidence: - path: .claude/hooks/doctor.py source-kind: superseded-command-output symbol: 'summary: 35 OK · 0 WARN · 0 FAIL → verdict: OK (exit 0) — observed 12:03 against a tree that no longer exists' - path: .claude/hooks/doctor.py line-start: 95 line-end: 98 source-kind: doctor-implementation symbol: 'render() summary line — n_ok/n_warn/n_fail -> verdict' - path: .claude/hooks/doctor.py line-start: 749 line-end: 764 source-kind: doctor-implementation symbol: 'main() sections list — 14 labels, the enumeration source of truth' - path: .claude/hooks/doctor.py line-start: 81 line-end: 86 source-kind: doctor-implementation symbol: 'render() skips sections with zero entries (if not rows: continue)' - path: .claude/hooks/doctor.py line-start: 729 line-end: 744 source-kind: doctor-implementation symbol: 'check_orgos_registry — section 14, reports ok/fail on every path' - path: .claude/hooks/compile_orgos_registry.py line-start: 286 line-end: 289 source-kind: registry-compiler-implementation symbol: 'if not check: — write guarded, --check is read-only' - path: .claude/hooks/compile_orgos_registry.py source-kind: executed-command-output symbol: 'OK orgos registry: 4 registries + generated README + 4 architecture views (checked) — exit 0, re-run 13:41' - id: F-VERIFY-GENAGENTS-EXECUTED category: verification key: agent-generation-check-actual-run-result value: run-date: '2026-07-20' run-time: '13:36 (local) — re-executed against the current tree' command: CLAUDE_PROJECT_DIR="$PWD" python3 .claude/hooks/gen_agents.py --check exit-code: 0 stdout: 'OK gen_agents: 75 concrete agents (43 fan-out workers + 19 collapse workers + 10 direct workers + 3 lead; family metadata cards=0) validated (profiles=75)' scope-limitation: --check는 registry에서 생성한 카드 집합이 개수·구조 계약을 만족하는지 검증한다. 디스크의 .claude/agents/*.md 바이트와의 비교는 이 출력에 나타나지 않는다. currency: 현재 트리 기준. 단 저장소가 동시 수정 중이었으므로 이 결과도 13:36 시점의 스냅샷이다. superseded-earlier-run: '12:03 실행은 101 agents를 보고했다. 그 트리는 더 이상 존재하지 않는다.' executed-by: Repository Evidence Analyst(이 파일 작성자). 하네스의 Execution Verifier 게이트가 아니다. assertion-type: executed confidence: high evidence: - path: .claude/hooks/gen_agents.py source-kind: executed-command-output symbol: 'OK gen_agents: 75 concrete agents ... validated (profiles=75) (exit 0, 13:36)' - path: .claude/hooks/gen_agents.py line-start: 525 line-end: 533 source-kind: generator-implementation - id: F-VERIFY-LINTREFS-EXECUTED category: verification key: reference-integrity-actual-run-result value: run-date: '2026-07-20' run-time: '13:36 (local) — re-executed against the current tree' command: CLAUDE_PROJECT_DIR="$PWD" ORGOS_WORKSPACE=_sandbox python3 .claude/hooks/lint_refs.py exit-code: 0 stdout: 'OK lint_refs: 18 command 참조 + 75 agent skills 참조 모두 해결됨' currency: 현재 트리 기준. superseded-earlier-run: '12:03 실행은 101 agent skills를 보고했다.' executed-by: Repository Evidence Analyst(이 파일 작성자). 하네스의 Execution Verifier 게이트가 아니다. assertion-type: executed confidence: high evidence: - path: .claude/hooks/lint_refs.py source-kind: executed-command-output symbol: 'OK lint_refs: 18 command 참조 + 75 agent skills 참조 모두 해결됨 (exit 0, 13:36)' - id: F-VERIFY-BENCHMARK-EXECUTED category: verification key: golden-task-benchmark-actual-run-result value: run-date: '2026-07-20' commands-run: - {command: 'python3 .claude/hooks/benchmark.py list', exit-code: 0, result: '골든태스크 13개 (카테고리: code-bugfix, code-feature, refactor, docs, design, decision)', run-time: '13:36 — re-executed against the current tree', currency: current} - {command: 'python3 .claude/hooks/benchmark.py compare', exit-code: 0, result: '[benchmark] compare -> benchmark/BENCHMARK.md (plain 2 · harness 2 표본)', run-time: '12:03', currency: SUPERSEDED, not-re-run-reason: 'BENCHMARK.md를 재생성하는 쓰기 부수효과가 있어 동시 수정 중인 트리에서 재실행하지 않았다.'} task-ids: [GT-01, GT-02, GT-03, GT-04, GT-05, GT-06, GT-07, GT-08, GT-09, GT-10, GT-11, GT-12, GT-R2] side-effect: compare는 gitignored 파일 benchmark/BENCHMARK.md를 runs.jsonl에서 재생성한다(새 표본을 만들지 않는다). executed-by: Repository Evidence Analyst(이 파일 작성자). 하네스의 Execution Verifier 게이트가 아니다. assertion-type: executed confidence: high evidence: - path: .claude/hooks/benchmark.py source-kind: executed-command-output symbol: 'list -> 13 golden tasks (exit 0, re-run 13:36); compare -> plain 2 · harness 2 (exit 0, 12:03, not re-run)' - path: benchmark/golden-tasks.yaml source-kind: benchmark-task-definition - id: F-VERIFY-CASCADE-CLI-EXECUTED category: verification key: p4-cascade-controller-actual-run-result value: run-date: '2026-07-20T12:03' currency: SUPERSEDED — 12:03 실행 결과이며 재실행하지 않았다. benchmark_cascade.py와 bench_cascade/ 자체는 재추출 시점에 변경되지 않았으나(git 상태 unchanged), plan은 role/agent registry를 읽으므로 리팩터 영향 가능성을 배제할 수 없다. commands-run: - {command: 'python3 .claude/hooks/benchmark_cascade.py plan', exit-code: 0, result: 'arms A/B/C · total-arm-runs 3 · pilot-pairwise-calls 18 · estimated-judge-calls 132 · preflight-violations []', currency: SUPERSEDED} - {command: 'python3 .claude/hooks/benchmark_cascade.py probe', exit-code: 3, result: '[probe] not-implemented — orchestrator 미배선(pilot 실행 단계에서 배선)', currency: SUPERSEDED} still-statically-true: stub subcommand 목록과 exit 3 동작은 benchmark_cascade.py 소스(37-61행)에서 정적으로 확인되며 이 파일은 재추출 시점에 변경되지 않았다. wired-subcommands: [plan, approve-budget] stub-subcommands-exit-3: [calibrate, arm-run, sanitize, judge, compare, probe] budget-gate: calibrate/judge/arm-run에 --execute를 주면 예산 receipt가 없을 때 exit 2로 거부된다. executed-by: Repository Evidence Analyst(이 파일 작성자). 하네스의 Execution Verifier 게이트가 아니다. assertion-type: executed confidence: high evidence: - path: .claude/hooks/benchmark_cascade.py line-start: 37 line-end: 61 source-kind: controller-cli-implementation - path: .claude/hooks/benchmark_cascade.py source-kind: superseded-command-output symbol: 'plan -> exit 0; probe -> exit 3 not-implemented (observed 12:03, not re-run)' - id: F-CI-WORKFLOW category: verification key: github-actions-ci value: file: .github/workflows/ci.yml job: harness-enforcers runner: ubuntu-latest triggers: {push: [main, 'fix/**', 'feat/**'], pull-request: [main]} environment: {CLAUDE_PROJECT_DIR: github.workspace, ORGOS_WORKSPACE: _sandbox, python: '3.12', node: '20'} steps: - pip install -r requirements.txt - d2 v0.7.1 설치 시도(실패해도 skip 허용) - python3 .claude/hooks/doctor.py - python3 .claude/hooks/lint_refs.py - python3 .claude/hooks/gen_agents.py --check - python3 .claude/tests/run_all.py --no-preflight ci-run-status-in-this-analysis: 확인하지 않음(GitHub Actions 실행 이력을 조회하지 않았다). assertion-type: observed confidence: high evidence: - path: .github/workflows/ci.yml line-start: 1 line-end: 46 source-kind: CI-workflow - id: F-LIMIT-CONCURRENT-REFACTOR category: limitation key: repository-modified-concurrently-during-extraction value: status: 이 사실 추출은 정지된 스냅샷이 아니라 활발히 수정 중인 워킹 트리를 대상으로 수행됐다. first-extraction: '2026-07-20T12:03' re-extraction: '2026-07-20T13:36' concurrent-agent: 별도 세션이 같은 저장소를 리팩터링 중이었고 재추출 시점에도 쓰기가 계속됐다. write-activity-observed-at-re-extraction: - '.claude/tests/fixtures/quality-data-hardening-ws/evidence/ledger.jsonl (13:36)' - 'benchmark/cascade/candidates/run-x/** (13:36)' - '.claude/hooks/orgos/planning/role_selector.py (13:30)' changes-between-the-two-extractions: agent-cards: 101 -> 75 deleted-files: 26 (all .claude/agents/fam-*.md) top-level-hooks-py: 35 -> 40 test-suites: 31 -> 32 new-hook-modules: [usage_observer.py, compile_orgos_registry.py, intake_classifier.py, role_selector.py, spawn_bindings.py] new-packages: ['.claude/hooks/orgos/planning', '.claude/hooks/orgos/state'] gen_agents-py-size: '831행 -> 537행 (13:39). 이 재추출 작업 도중에도 축소됐고 resolver/router/fam 카운터 코드가 제거됐다.' rewritten-contracts: [agent-operating-kpi.yaml, artifact-type-vocabulary.yaml, collaboration-map.yaml, context-package-spec.yaml, design-direction-spec.yaml, execution-plans.yaml, execution-policy.yaml, report-templates.yaml] settings-json: usage_observer 3곳 배선 추가 · PreToolUse matcher에 WebFetch|WebSearch 추가 · 67 -> 76행 claude-md: 128 -> 130행, roles.yaml 주석 73 -> 75로 수정 unchanged-between-the-two-extractions: [org-os/06-agent-work/workflow-contracts.yaml, roles.yaml, lens-registry.yaml, tool-versions.yaml, requirements.txt, .github/workflows/ci.yml, benchmark/ 정본 입력, benchmark_cascade.py] consequence: 이 파일의 수치는 13:36 시점 관측이며, 그 이후 값이 다시 달라졌을 수 있다. 특히 전체 test suite의 현재 통과 여부는 확인되지 않았다. mid-refactor-and-not-settled: - '.claude/hooks/orgos/planning/role_selector.py — 13:30에도 쓰이는 중이었고 doctor/lint_refs가 이 모듈을 검사하는지 확인하지 않았다.' - 'compile_orgos_registry.py · spawn_bindings.py · intake_classifier.py · role_selector.py — 최상위 hooks에 새로 나타났으나 settings.json에 배선돼 있지 않다(usage_observer만 배선됨).' - 'org-os/06-agent-work/artifact-type-vocabulary.yaml +95행(161 types)으로 확장됐으나 생성 registry의 artifact-kind-count는 186으로 동일하다.' - 'HEAD(00db337)는 fam-*.md 26개를 여전히 추적한다 — 삭제는 커밋되지 않았다.' - 'gen_agents.py가 13:36과 13:39 사이에 831행에서 537행으로 다시 줄었다. 이 파일의 행 번호 증거는 특히 빨리 낡는다.' assertion-type: executed confidence: high evidence: - path: .claude/agents source-kind: executed-command-output symbol: 'git status --porcelain | grep -c "^ D .claude/agents/fam-" -> 26; ls .claude/agents/*.md | wc -l -> 75' - path: .claude/hooks/orgos/planning/role_selector.py source-kind: executed-command-output symbol: 'mtime 2026-07-20 13:30 — written during this extraction' - path: .claude/hooks/usage_observer.py source-kind: executed-command-output symbol: 'mtime 2026-07-20 13:05 — absent at 12:03 extraction' - path: .claude/settings.json line-start: 19 line-end: 25 source-kind: claude-code-configuration symbol: 'usage_observer.py PostToolUse block — new' - path: org-os/06-agent-work source-kind: executed-command-output symbol: 'git diff --stat org-os/06-agent-work/ -> 8 files changed, 218 insertions(+), 54 deletions(-)' # ── limitations ───────────────────────────────────────────────────────── - id: F-LIMIT-HOOK-ACTIVATION category: limitation key: enforcement-requires-loaded-settings value: condition: 강제(형식·근거·권한·불변성)는 Claude Code가 이 저장소의 .claude/settings.json을 로드한 세션에서만 동작한다. out-of-session: 다른 실행 환경이나 설정 미로드 상태에서는 같은 강제가 보장되지 않는다. verification-hint: python3 .claude/hooks/doctor.py로 배선을 확인한다. assertion-type: observed confidence: high evidence: - path: CLAUDE.md line-start: 70 line-end: 70 source-kind: runtime-limit-documentation symbol: 'hook 강제는 설정(.claude/settings.json) 활성 시에만 동작한다' - path: .claude/settings.json line-start: 2 line-end: 2 source-kind: claude-code-configuration - id: F-LIMIT-GUARD-REGEX category: limitation key: guard-tools-is-secondary-defense value: role: allow-by-default regex 기반 2차 방어선(defense-in-depth) primary-boundary: Claude Code 네이티브 permission 시스템(.claude/settings.json permissions)과 managed policy self-declared-weakness: regex denylist는 원리상 셸 조합·인용·변형으로 우회 가능하므로 보안·품질 경계로 신뢰해서는 안 된다. denied-category-source: org-os/00-role-registry/tool-permission-matrix.yaml (default-policy.external-side-effects) assertion-type: observed confidence: high evidence: - path: .claude/hooks/guard_tools.py line-start: 2 line-end: 12 source-kind: guard-implementation - path: .claude/settings.json line-start: 51 line-end: 51 source-kind: claude-code-configuration symbol: 'permissions._comment — PRIMARY boundary' - id: F-LIMIT-COMPANY-CONTEXT category: limitation key: current-company-context-state value: company-context-status: provisional company-context-schema-version: 2 founder-context-status: filled product-stage: pre-product company-stage: reset-planning unresolved-founder-inputs: [주당 가용시간, 자본·런웨이, 목표 사업 규모, 보유 유통채널, 운영·리스크 내성] provenance-rule: status가 operating이 아니면 company 인용 항목은 E2/Med 상한이고 hypothesis 항목은 status와 무관하게 Med 상한이다(validate_report 강제). implication: 자원·GTM 결정 전에 창업자 확인값을 채워야 한다. assertion-type: observed confidence: high evidence: - path: org-os/01-company/company-context.yaml line-start: 1 line-end: 2 source-kind: company-context - path: org-os/01-company/company-context.yaml line-start: 25 line-end: 33 source-kind: company-context - path: org-os/01-company/founder-context.yaml line-start: 5 line-end: 25 source-kind: company-context-input - path: CLAUDE.md line-start: 63 line-end: 63 source-kind: project-documentation symbol: '회사 문맥 상한(#5)' - id: F-LIMIT-BENCHMARK-GOLDEN category: limitation key: golden-task-benchmark-evidence-status value: golden-tasks-defined: 13 executed-samples: {plain: 2, harness: 2} sampled-tasks: [GT-01, GT-R2] sampled-task-category: code-bugfix/low sample-dates: '2026-07-11' measured-dimensions: 3 unmeasured-dimensions: 8 observed-result: first-pass-acceptance: {plain: 1.0, harness: 1.0, delta: 0.0} tests-pass-rate: {plain: 1.0, harness: 1.0, delta: 0.0} unnecessary-change-lines: {plain: 0.0, harness: 0.0, delta: 0.0} weighted-composite-delta: 0 conclusion: 현재 표본은 하네스의 품질 우위를 입증하지 않는다. 설계·문서·의사결정 카테고리는 미실행이다. report-file-status: benchmark/BENCHMARK.md는 gitignored이며 runs.jsonl에서 재생성된다. assertion-type: observed confidence: high evidence: - path: benchmark/BENCHMARK.md line-start: 1 line-end: 20 source-kind: generated-benchmark-report - path: benchmark/runs.jsonl line-start: 1 line-end: 4 source-kind: benchmark-run-ledger - path: .gitignore line-start: 29 line-end: 30 source-kind: ignore-policy - id: F-LIMIT-P4-PILOT-UNRUN category: limitation key: cascade-benchmark-ruler-built-pilot-not-run value: purpose: P1(venture-bootstrap)·P2(design-direction)·P3(prompt-skill 분리 + method-contract) 개선이 실제 산출물 품질을 올렸는지를 동일 제품 brief로 실증한다. arms: A: {label: P1+P2, commit: 72997e5a65724f9d74efabcd41217acc3d0ce62e} B: {label: P1+P2+P3-A, commit: dfb047587aac506aa5a59fce86d5d5eb39a5570f} C: {label: P1+P2+P3-B-active, commit: 353f1c6afe963b58939a198505d96c144ca6a583} controller-cli: .claude/hooks/benchmark_cascade.py modules: [aggregate, budget, calibrate, compare, inputs, judge, manifest, meter, paths, planner, probe, runner, sanitize] module-total-lines: 889 tests: [.claude/tests/test_p4_cascade.py, .claude/tests/test_p4_cascade_exec.py] wired-subcommands: [plan, approve-budget] not-implemented-subcommands: [calibrate, arm-run, sanitize, judge, compare, probe] not-implemented-exit-code: 3 not-implemented-message: 'not-implemented — orchestrator 미배선(pilot 실행 단계에서 배선)' run-artifacts-present: {runs-dir: false, judgments-jsonl: false, cascade-benchmark-md: false} status: ruler(측정 인프라)와 파일럿 계획은 존재하고 테스트가 통과하지만, 파일럿 실행 결과는 저장소에 없다. deferred-by-design: [arm별 다중 repeat, Bradley–Terry/Elo, 통계적 우월성 결론, cascade 확장, HUMAN judge 패널, live-research 트랙] mandated-disclaimer: 파일럿은 ruler의 판별력·arm 격리·실행 드라이버·P1~P3의 잠정적 품질 신호를 검증하며, arm별 단일 실행이므로 통계적 우월성이나 일반적 생산성 향상을 확정하지 않는다. assertion-type: executed confidence: high evidence: - path: .claude/hooks/benchmark_cascade.py line-start: 37 line-end: 61 source-kind: controller-cli-implementation - path: benchmark/cascade/arm-manifest.yaml line-start: 1 line-end: 11 source-kind: benchmark-arm-manifest - path: docs/superpowers/specs/2026-07-14-p4-cascade-benchmark-design.md line-start: 22 line-end: 40 source-kind: design-specification - path: docs/superpowers/plans/2026-07-15-p4-cascade-benchmark.md line-start: 26 line-end: 26 source-kind: implementation-plan - path: benchmark/cascade source-kind: executed-command-output symbol: 'ls benchmark/cascade/runs -> No such file or directory; judgments.jsonl absent' - id: F-LIMIT-BENCHMARK-CONTROLS category: limitation key: cascade-benchmark-fairness-controls value: external-web-access: denied evidence-pack-required: true evidence-pack-files: [market-context.md, competitor-snapshot.md, user-observations.md, sources.yaml] web-block-enforcement: arm-runner의 evidence_env가 WebFetch/WebSearch를 실행 환경에서 차단·미배선한다. human-gate-policy: pre-authorized-for-benchmark. 벤치마크 실행 전 발급된 사전승인 receipt를 전 arm 동일 적용하며 프로덕션 인간 승인을 대체하지 않는다. forbidden-actions: [external-side-effect, deployment, real-purchase, account-change, prod-resource-create] receipt-required-for: [plan-signoff, human-acceptance-gate, wave-signoff] judging: blinded paired pairwise 패널만 승자 판정에 사용하며 rubric 8-criteria 절대 점수는 calibration 진단 전용이다. rubric-criteria: [role-expertise, procedural-completeness, evidence-grounding, alternatives-and-counterarguments, practical-artifacts, handoff-completeness, + 2 more] fixed-judge-calls-per-pilot: 18 assertion-type: observed confidence: high evidence: - path: benchmark/cascade/benchmark-policy.yaml line-start: 1 line-end: 26 source-kind: benchmark-policy - path: benchmark/cascade/rubric.yaml line-start: 1 line-end: 2 source-kind: judge-rubric - path: docs/superpowers/plans/2026-07-15-p4-cascade-benchmark.md line-start: 17 line-end: 17 source-kind: implementation-plan - id: F-LIMIT-UI-AESTHETICS category: limitation key: ui-preview-checks-render-health-not-aesthetics value: checks: render health(DOM mount, bundle, contrast, focus, responsive screenshot) does-not-judge: [시각적 차별성, 타이포그래피, 비례, spacing의 미학 품질] external-requirement: Chrome 또는 Chromium 호환 실행 파일 assertion-type: observed confidence: high evidence: - path: .claude/hooks/preview_ui.py line-start: 2 line-end: 41 source-kind: UI-verification-implementation - id: F-LIMIT-UNCOMMITTED-REGENERATION category: limitation key: agent-cards-regenerated-but-uncommitted value: observed-at: '2026-07-20T13:36' head-tracked-agent-cards: 72 working-tree-agent-cards: 75 deleted-fam-cards: 26 deleted-fam-card-examples: [fam-ceo.md, fam-cto.md, fam-orch.md, fam-design.md, fam-qa.md] nature-of-change: 26개 fam-*.md family 카드가 워킹 트리에서 삭제되고 concrete role 카드만 남았다. gen_agents는 이제 75개 concrete 카드만 생성하며 router/resolver/family 카드를 생성하지 않는다. implication: 위 검증 결과는 워킹 트리 상태에 대한 것이며 커밋된 HEAD와 다르다. HEAD에는 fam-*.md가 여전히 존재한다. superseded-earlier-reading: '12:03 시점에는 워킹 트리 101장 · untracked 29장 · fam-*.md 16개 수정(삭제 아님)이었다. 이후 동시 리팩터가 fam-*.md 26개를 삭제했다.' assertion-type: executed confidence: high evidence: - path: .claude/agents source-kind: executed-command-output symbol: 'git ls-tree -r HEAD .claude/agents | wc -l -> 72; ls .claude/agents/*.md | wc -l -> 75; git status --porcelain | grep -c "^ D .claude/agents/fam-" -> 26' - path: org-os/00-role-registry/capability-families.yaml line-start: 9 line-end: 9 source-kind: family-registry symbol: '75개 concrete role card만 생성하며 router/resolver family card는 생성하지 않는다' - path: .claude/hooks/gen_agents.py line-start: 516 line-end: 523 source-kind: generator-contract symbol: '개수 계약: 75 reference roles == 75 executable concrete cards; assert len(agents) == 75. resolver/router/family 카운터는 코드에서 완전히 제거됐다.' - id: F-LIMIT-DOC-DRIFT category: limitation key: claude-md-role-count-drift-resolved value: status: RESOLVED — 재추출 시점에 드리프트가 존재하지 않는다. claude-md-line-9-now: 'roles.yaml # 75 concrete 역할 taxonomy' registry-states: 75 agreement: true history: '12:03 시점에는 CLAUDE.md 9행이 73 참조 역할로 registry(75)와 불일치했다. 동시 리팩터가 이를 75로 수정했다.' note: 이 fact는 더 이상 한계가 아니며 이력 기록으로만 남긴다. assertion-type: observed confidence: high evidence: - path: CLAUDE.md line-start: 9 line-end: 9 source-kind: project-documentation symbol: 'roles.yaml # 75 concrete 역할 taxonomy' - path: org-os/00-role-registry/roles.yaml line-start: 3 line-end: 3 source-kind: role-registry symbol: 'total-role-count: 75' - path: org-os/00-role-registry/capability-families.yaml line-start: 13 line-end: 13 source-kind: family-registry symbol: 'role-count-covered: 75' - id: F-LIMIT-STUB-CONTEXT-FOLDERS category: limitation key: company-context-folders-are-stubs value: stub-folders: [org-os/02-capabilities, org-os/03-products, org-os/04-architecture, org-os/05-operations, org-os/07-knowledge-base] contents: 각 폴더는 README.md만 포함한다. implication: 회사·제품 문맥 레이어는 아직 채워지지 않았다. assertion-type: observed confidence: high evidence: - path: org-os/02-capabilities source-kind: directory-listing symbol: README.md only - path: CLAUDE.md line-start: 21 line-end: 21 source-kind: project-documentation commands: - id: CMD-1 command: pip install -r requirements.txt cwd: . source: {path: .github/workflows/ci.yml, line-start: 30, line-end: 31, source-kind: CI-workflow} verification: status: discovered method: static extraction level: repository-declared limitations: [Repository Evidence Analyst가 실행하지 않음.] - id: CMD-2 command: CLAUDE_PROJECT_DIR="$PWD" ORGOS_WORKSPACE=_sandbox python3 .claude/tests/run_all.py cwd: . source: {path: .claude/tests/run_all.py, line-start: 7, line-end: 9, source-kind: test-runner-usage} verification: status: discovered method: static extraction level: repository-declared limitations: - Execution Verifier 역할이 아직 검증하지 않음(하네스 게이트 미통과). - 참고— Evidence Analyst가 2026-07-20에 ad-hoc 실행한 결과는 F-VERIFY-SUITE-EXECUTED에 기록됨(exit 0, 34/34 green). - id: CMD-3 command: python3 .claude/hooks/doctor.py cwd: . source: {path: .github/workflows/ci.yml, line-start: 36, line-end: 37, source-kind: CI-workflow} verification: status: discovered method: static extraction level: repository-declared limitations: - 유효한 ORGOS_WORKSPACE 또는 .orgos-workspace 포인터가 필요함. - Execution Verifier 역할이 아직 검증하지 않음. - 참고 — Evidence Analyst가 2026-07-20T12:03에 ad-hoc 실행한 결과(exit 0, 35 OK/0 WARN/0 FAIL)는 SUPERSEDED다. 그 이후 doctor.py에 섹션 14가 추가됐고 저장소가 리팩터됐다. 현재 verdict는 확인되지 않았다 — F-VERIFY-DOCTOR-EXECUTED 참조. - id: CMD-4 command: python3 .claude/hooks/lint_refs.py cwd: . source: {path: .github/workflows/ci.yml, line-start: 39, line-end: 40, source-kind: CI-workflow} verification: status: discovered method: static extraction level: repository-declared limitations: - Execution Verifier 역할이 아직 검증하지 않음. - 참고 — Evidence Analyst가 2026-07-20에 ad-hoc 실행한 결과는 F-VERIFY-LINTREFS-EXECUTED에 기록됨(exit 0). - id: CMD-5 command: python3 .claude/hooks/compile_artifact_registry.py --check cwd: . source: {path: .claude/tests/run_all.py, line-start: 58, line-end: 60, source-kind: test-runner-preflight} verification: status: discovered method: static extraction level: repository-observed-invocation limitations: - Execution Verifier 역할이 아직 검증하지 않음. - 참고 — run_all.py preflight로 2026-07-20에 함께 실행됨([artifact-registry] OK 186 kinds). - id: CMD-6 command: CLAUDE_PROJECT_DIR="$PWD" python3 .claude/hooks/gen_agents.py --check cwd: . source: {path: .github/workflows/ci.yml, line-start: 42, line-end: 43, source-kind: CI-workflow} verification: status: discovered method: static extraction level: repository-declared limitations: - Execution Verifier 역할이 아직 검증하지 않음. - 참고 — Evidence Analyst가 2026-07-20에 ad-hoc 실행한 결과는 F-VERIFY-GENAGENTS-EXECUTED에 기록됨(exit 0, 101 agents). - id: CMD-7 command: CLAUDE_PROJECT_DIR="$PWD" python3 .claude/hooks/gen_agents.py cwd: . source: {path: CLAUDE.md, line-start: 118, line-end: 119, source-kind: project-documentation} verification: status: discovered method: static extraction level: repository-declared limitations: [.claude/agents/*.md를 덮어쓰는 생성 명령이므로 Repository Evidence Analyst가 실행하지 않음.] - id: CMD-8 command: CLAUDE_PROJECT_DIR="$PWD" ORGOS_WORKSPACE=_sandbox python3 .claude/tests/test_enforcement.py cwd: . source: {path: CLAUDE.md, line-start: 114, line-end: 115, source-kind: project-documentation} verification: status: discovered method: static extraction level: repository-declared limitations: [개별 suite로는 실행하지 않음. run_all.py 전체 실행에는 포함됐고 green이었음(F-VERIFY-SUITE-EXECUTED).] - id: CMD-9 command: ORGOS_WORKSPACE=_sandbox python3 .claude/hooks/kpi_ledger.py derive && python3 .claude/hooks/kpi_ledger.py dashboard cwd: . source: {path: CLAUDE.md, line-start: 120, line-end: 121, source-kind: project-documentation} verification: status: discovered method: static extraction level: repository-declared limitations: [reports/KPI.md를 생성하는 부수효과가 있어 Repository Evidence Analyst가 실행하지 않음.] - id: CMD-10 command: python3 .claude/hooks/benchmark.py list cwd: . source: {path: .claude/hooks/benchmark.py, line-start: 12, line-end: 12, source-kind: benchmark-implementation} verification: status: discovered method: static extraction level: repository-observed-invocation limitations: - Execution Verifier 역할이 아직 검증하지 않음. - 참고 — Evidence Analyst가 2026-07-20에 ad-hoc 실행한 결과는 F-VERIFY-BENCHMARK-EXECUTED에 기록됨(exit 0, 13개 task). - id: CMD-11 command: python3 .claude/hooks/benchmark.py compare cwd: . source: {path: .claude/hooks/benchmark.py, line-start: 19, line-end: 19, source-kind: benchmark-implementation} verification: status: discovered method: static extraction level: repository-observed-invocation limitations: - 기존 benchmark run ledger를 비교하며 새 표본을 생성하지 않음. - 참고 — Evidence Analyst가 2026-07-20에 ad-hoc 실행함(exit 0, gitignored BENCHMARK.md 재생성). - id: CMD-12 command: python3 .claude/hooks/benchmark.py run --task GT-01 --arm plain --execute cwd: . source: {path: .claude/hooks/benchmark.py, line-start: 13, line-end: 15, source-kind: benchmark-implementation} verification: status: discovered method: static extraction level: repository-observed-invocation limitations: [claude CLI와 외부 실행 예산이 필요함. 기본값은 --dry-run이며 --execute가 있어야 실제 호출., Repository Evidence Analyst가 실행하지 않음.] - id: CMD-13 command: python3 .claude/hooks/benchmark_cascade.py plan cwd: . source: {path: .claude/hooks/benchmark_cascade.py, line-start: 37, line-end: 41, source-kind: controller-cli-implementation} verification: status: discovered method: static extraction level: repository-observed-invocation limitations: - Execution Verifier 역할이 아직 검증하지 않음. - 참고 — Evidence Analyst가 2026-07-20에 ad-hoc 실행한 결과는 F-VERIFY-CASCADE-CLI-EXECUTED에 기록됨(exit 0). - id: CMD-14 command: python3 .claude/hooks/benchmark_cascade.py approve-budget --plan-id --max-tokens --max-cost cwd: . source: {path: .claude/hooks/benchmark_cascade.py, line-start: 42, line-end: 45, source-kind: controller-cli-implementation} verification: status: discovered method: static extraction level: repository-observed-invocation limitations: [예산 receipt 파일을 생성하는 부수효과가 있어 Repository Evidence Analyst가 실행하지 않음.] - id: CMD-15 command: python3 .claude/hooks/benchmark_cascade.py judge --execute cwd: . source: {path: .claude/hooks/benchmark_cascade.py, line-start: 46, line-end: 56, source-kind: controller-cli-implementation} verification: status: discovered method: static extraction level: repository-observed-invocation limitations: - 예산 receipt가 없으면 exit 2로 거부되고, receipt가 있어도 현재 구현은 exit 3(not-implemented)을 반환한다. - Repository Evidence Analyst가 실행하지 않음. - id: CMD-16 command: python3 .claude/hooks/gen_agents.py --check cwd: . source: {path: .github/workflows/ci.yml, line-start: 42, line-end: 43, source-kind: CI-workflow} verification: status: discovered method: static extraction level: repository-declared limitations: - CI job이 CLAUDE_PROJECT_DIR을 job 수준 env로 설정하므로 워크플로 파일에는 접두사 없이 이 형태로 기록돼 있다. - Execution Verifier 역할이 아직 검증하지 않음. - id: CMD-17 command: python3 .claude/tests/run_all.py --no-preflight cwd: . source: {path: .github/workflows/ci.yml, line-start: 45, line-end: 46, source-kind: CI-workflow} verification: status: discovered method: static extraction level: repository-declared limitations: - --no-preflight는 CI 전용 호출 형태다. 선행 스텝이 이미 preflight를 게이트하기 때문이다. - Execution Verifier 역할이 아직 검증하지 않음.