Files
readme-haness/runs/company-haness/20260720-rewrite/repository-facts.yaml
T

1680 lines
83 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 -> <resume>]
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 -> <resume> 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: <role>-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: <workspace>/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: <workspace>/completion-records/<workflow>/
evidence: <workspace>/evidence/
reports: <workspace>/reports/
state: <workspace>/state/
slack-inbox: <workspace>/slack-inbox/
slack-outbox: <workspace>/slack-outbox/
design-system: <workspace>/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: <workspace>/completion-records/<workflow>/<role>-<UTC timestamp>.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: <workspace>/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, BradleyTerry/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 <id> --max-tokens <n> --max-cost <n>
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 역할이 아직 검증하지 않음.