schema-version: 1 claims: # ── overview ──────────────────────────────────────────────────────────── - id: C-IDENTITY type: factual statement: 'Org OS 하네스는 회사 운영을 AI 에이전트에게 분담시키는 파일 기반 운영체계입니다. 역할·워크플로·산출물 계약을 파일로 고정하고 `org-os/` 디렉터리를 명세와 상태의 단일 원천으로 삼습니다.' section: overview sources: [{fact-id: F-IDENTITY-CORE}] status: supported - id: C-SCOPE type: factual statement: '적용 범위는 개발에 한정되지 않습니다. 제품·개발 작업과 GTM·수익 같은 비즈니스 작업을 같은 계약 위에서 함께 다룹니다.' section: overview sources: [{fact-id: F-IDENTITY-CORE}] status: supported - id: C-RUNTIME-COUPLING type: factual statement: '실행 런타임은 Claude Code 하나입니다. subagent·project command·hook이 `.claude` 어댑터 한 곳에 배선돼 있고, 다른 에이전트 런타임용 어댑터 디렉터리는 저장소에 없습니다.' section: overview sources: [{fact-id: F-IDENTITY-CORE}, {fact-id: F-IDENTITY-RUNTIME-COUPLING}] status: supported - id: C-SCOPE-WORKINGTREE type: factual statement: '이 문서에 실린 검증 결과는 커밋된 HEAD가 아니라 2026-07-20 13:36 시점의 워킹 트리를 대상으로 합니다.' section: overview sources: [{fact-id: F-IDENTITY-SNAPSHOT}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported # ── operating-model ───────────────────────────────────────────────────── - id: C-RULES-DECLARED type: factual statement: '아래 여섯 가지는 계약 파일이 선언한 규칙이며, 이 분석에서 런타임 강제를 실행해 확인하지는 않았습니다.' section: operating-model sources: [{fact-id: F-ARCH-STATE-ARTIFACT}, {fact-id: F-ARCH-HOOKS}, {fact-id: F-LIMIT-HOOK-ACTIVATION}] status: supported - id: C-CONTRACT-GRAPH type: factual statement: '`org-os/06-agent-work/workflow-contracts.yaml` 한 파일이 단계 그래프, 역할 `capability`, `artifact kind`, `bundle`, `exit gate`를 함께 정의합니다.' section: operating-model sources: [{fact-id: F-ARCH-STATE-ARTIFACT}] status: supported - id: C-TRUST-RULE type: factual statement: '호출자가 넘긴 `gate fact`, `artifact kind`, `option count`, `evidence grade`를 그대로 받지 않고 제출된 불변 바이트에서 다시 파생합니다.' section: operating-model sources: [{fact-id: F-ARCH-STATE-ARTIFACT}] status: supported - id: C-FANOUT-RULE type: factual statement: '코드·실행 산출물을 만드는 `family`는 `collapse`로 묶고, 판단·설계·분석·수익 산출물을 만드는 `family`는 `fan-out`으로 나눕니다.' section: operating-model sources: [{fact-id: F-ARCH-COLLABORATION}] status: supported - id: C-ORCH-ONLY type: factual statement: 'Orchestrator가 `fan-out`을 몰고 가며 `subagent`는 다른 `subagent`를 호출하지 못합니다.' section: operating-model sources: [{fact-id: F-ARCH-COLLABORATION}] status: supported - id: C-EVIDENCE-GATE type: factual statement: '보고서 evidence 등급은 `E0`부터 `E5`까지이고, `E4`와 `E5` 주장은 `evidence ledger`의 실제 `receipt`와 대조해 `receipt`가 없으면 막습니다.' section: operating-model sources: [{fact-id: F-ARCH-EVIDENCE-GRADING}] status: supported - id: C-BOUNDARY-LAYERS type: factual statement: '1차 경계는 Claude Code 네이티브 permission 시스템이고, `guard_tools.py`는 심층 방어(defense-in-depth) 목적의 2차 방어선입니다.' section: operating-model sources: [{fact-id: F-ARCH-HOOKS}, {fact-id: F-LIMIT-GUARD-REGEX}] status: supported - id: C-REHYDRATION type: factual statement: '종합과 결정 지점에서 상위 역할은 하위 `.report.yaml` 전문을 읽습니다. 요약본으로 대체하는 것을 금지합니다.' section: operating-model sources: [{fact-id: F-ARCH-COLLABORATION}] status: supported - id: C-VERIFIER-INDEPENDENCE type: factual statement: '검증자 패밀리는 자기 패밀리가 작성한 산출물을 검증하지 못합니다. heavy tier 병렬 감사는 독립 검증자를 최소 3명 요구하고, 다수가 반박하면 중단합니다.' section: operating-model sources: [{fact-id: F-ARCH-COLLABORATION}] status: supported # ── prerequisites ─────────────────────────────────────────────────────── - id: C-PREREQ-SPLIT type: factual statement: '필수 도구가 없으면 하네스 자체가 돌지 않고, 권장·선택 도구가 없으면 해당 기능 경로만 줄어듭니다.' section: prerequisites sources: [{fact-id: F-PREREQ-TOOLS}] status: supported - id: C-PREREQ-VERSION-CHECK type: factual statement: '버전 대조는 `.claude/hooks/doctor.py`가 맡습니다. `.claude/tool-versions.yaml`을 읽어 런타임에 설치된 버전과 맞춰 봅니다.' section: prerequisites sources: [{fact-id: F-PREREQ-TOOLS}] status: supported - id: C-INSTALL type: factual statement: '저장소가 선언한 설치 명령은 하나이며 로컬과 CI가 같습니다.' section: prerequisites sources: [{fact-id: F-PREREQ-INSTALL}] status: supported - id: C-INSTALL-DEPS type: factual statement: '매니페스트는 `PyYAML==6.0.1`과 `jsonschema==4.10.3` 외에는 Python 표준 라이브러리만 쓴다고 선언합니다.' section: prerequisites sources: [{fact-id: F-PREREQ-INSTALL}] status: supported - id: C-INSTALL-LEVEL type: factual statement: '이 설치 명령은 파일에서 확인만 했고 이번 분석에서 실행하지 않았습니다(검증 수준: 저장소가 선언한 명령).' section: prerequisites sources: [{fact-id: F-PREREQ-INSTALL}] status: supported # ── workspace-setup ───────────────────────────────────────────────────── - id: C-WS-ORDER type: factual statement: '산출물이 쓰일 위치는 `ORGOS_WORKSPACE` 환경변수를 먼저 보고, 없으면 `.orgos-workspace` 포인터 파일의 첫 유효 줄을 씁니다. 주석과 빈 줄은 건너뜁니다.' section: workspace-setup sources: [{fact-id: F-ARTIFACT-LAYOUT}] status: supported - id: C-WS-PATHRULE type: factual statement: '값이 상대 경로면 저장소 루트를 기준으로 해석하고, 절대 경로면 그대로 씁니다.' section: workspace-setup sources: [{fact-id: F-ARTIFACT-LAYOUT}] status: supported - id: C-WS-FAILCLOSED type: factual statement: '둘 다 해석되지 않으면 `WorkspaceNotSetError`가 납니다. `require_workspace(advisory=False)`를 쓰는 운영 훅은 exit 2로 fail-closed 종료합니다.' section: workspace-setup sources: [{fact-id: F-ARTIFACT-LAYOUT}] status: supported - id: C-WS-ADVISORY type: factual statement: '`require_workspace(advisory=True)`를 쓰는 계측 훅인 `evidence_ledger.py`는 경고만 남기고 `None`을 돌려주며 도구 실행을 막지 않습니다.' section: workspace-setup sources: [{fact-id: F-ARTIFACT-LAYOUT}] status: supported - id: C-WS-SANDBOX type: factual statement: '테스트와 CI는 명령마다 `ORGOS_WORKSPACE=_sandbox`를 명시하는 관례를 따릅니다.' section: workspace-setup sources: [{fact-id: F-ARTIFACT-CURRENT-WORKSPACES}] status: supported - id: C-WS-POINTER-FILLED type: factual statement: '현재 워킹 트리의 `.orgos-workspace`는 `hyeonworks`로 채워져 있어, 환경변수를 지정하지 않아도 포인터가 해석되고 fail-closed가 걸리지 않습니다.' section: workspace-setup sources: [{fact-id: F-ARTIFACT-CURRENT-WORKSPACES}, {fact-id: F-ARTIFACT-LAYOUT}] status: supported # ── first-command ─────────────────────────────────────────────────────── - id: C-DOCTOR-SCOPE type: factual statement: '`.claude/hooks/doctor.py`가 14개 영역을 점검하고 한 줄 판정으로 요약합니다.' section: first-command sources: [{fact-id: F-VERIFY-DOCTOR-EXECUTED}] status: supported - id: C-DOCTOR-RUN type: factual statement: '12:03 실행에서는 `35 OK · 0 WARN · 0 FAIL`과 verdict `OK`, exit 0이 나왔습니다. 이후 저장소가 바뀌었으므로 현재 트리의 판정은 확인되지 않았습니다.' section: first-command sources: [{fact-id: F-VERIFY-DOCTOR-EXECUTED}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-ENTRY-COMMON type: factual statement: '배선이 정상이면 Claude Code 세션에서 `/ceo-intake`로 새 작업을 엽니다. 이 명령은 `cascade`, `wave`, `light`, `venture-bootstrap` 네 plan의 공통 진입점입니다.' section: first-command sources: [{fact-id: F-WORKFLOW-ENTRY}] status: supported - id: C-ENTRY-ROLES type: factual statement: '`/ceo-intake`는 `OPS-ORCH` 역할이 실행하고 `EXEC-CEO` 역할이 작성하며, `decision-brief`와 `workload-profile`을 만듭니다.' section: first-command sources: [{fact-id: F-WORKFLOW-ENTRY}] status: supported - id: C-ENTRY-DECLARE type: factual statement: '이 단계에서 mode(`divergent` 또는 `converge`)와 tier(`light`, `standard`, `heavy`)를 선언합니다.' section: first-command sources: [{fact-id: F-WORKFLOW-ENTRY}] status: supported - id: C-ENTRY-GATE type: factual statement: '진입 단계의 exit gate는 세 조건을 요구합니다. `decision-brief-present`, `workload-profile-present`, `company-context-ready`입니다.' section: first-command sources: [{fact-id: F-WORKFLOW-ENTRY}] status: supported # ── workflows ─────────────────────────────────────────────────────────── - id: C-PLAN-LIST type: factual statement: '선언된 workflow plan은 `cascade`, `wave`, `light`, `venture-bootstrap`, `design-direction` 다섯 개입니다.' section: workflows sources: [{fact-id: F-WORKFLOW-PLAN-INVENTORY}] status: supported - id: C-PLAN-MIRROR type: factual statement: '그래프 정본은 `org-os/06-agent-work/workflow-contracts.yaml`입니다. 같은 디렉터리의 `execution-plans.yaml`은 호환·문서용 mirror이며 런타임 정본이 아닙니다.' section: workflows sources: [{fact-id: F-WORKFLOW-PLAN-INVENTORY}] status: supported - id: C-COMMAND-COUNT type: factual statement: 'slash command는 모두 18개입니다. 그중 `/ceo-intake` 하나가 앞의 네 plan이 공유하는 진입점이고, `design-direction`은 `cascade`에 종속된 하위 워크플로라 자기 진입점을 씁니다.' section: workflows sources: [{fact-id: F-WORKFLOW-COMMAND-INVENTORY}, {fact-id: F-WORKFLOW-ENTRY}, {fact-id: F-WORKFLOW-DESIGN-DIRECTION}] status: supported - id: C-HUMAN-POINTS type: factual statement: '사람 승인 지점은 plan마다 다른 토큰으로 표시됩니다. `human-gate`는 `cascade`와 `wave`의 `acceptance` 단계에만 나오고, 두 plan의 exit gate 리스트는 문자열이 같습니다.' section: workflows sources: [{fact-id: F-WORKFLOW-HUMAN-GATE-MAP}, {fact-id: F-WORKFLOW-WAVE-LIGHT}] status: supported - id: C-HUMAN-TOKENS type: factual statement: '`venture-bootstrap`은 `venture-decision` 단계에서 `human-acceptance-receipt-present`라는 별도 토큰을 씁니다. `light`와 `design-direction`의 exit gate에는 `human-` 리터럴이 없습니다.' section: workflows sources: [{fact-id: F-WORKFLOW-HUMAN-GATE-MAP}, {fact-id: F-WORKFLOW-VENTURE}] status: supported - id: C-RUN-CASCADE-STOP type: factual statement: '`/run-cascade` 드라이버는 `cascade`를 순회하다 `human-gate` 지점에서 멈춥니다.' section: workflows sources: [{fact-id: F-WORKFLOW-SPECIALIZED}] status: supported # ── workflow-cascade ──────────────────────────────────────────────────── - id: C-CASCADE-ORDER type: factual statement: '순서에서 주의할 점은 근거 탐색인 `discovery`가 `decide`보다 앞선다는 것입니다.' section: workflow-cascade sources: [{fact-id: F-WORKFLOW-CASCADE}] status: supported - id: C-CASCADE-BUNDLE type: factual statement: '`design`과 `spec`의 산출물은 고정 목록이 아니라 dynamic bundle입니다.' section: workflow-cascade sources: [{fact-id: F-WORKFLOW-CASCADE}] status: supported - id: C-CASCADE-TIER type: factual statement: '기본 tier는 `standard`이고 종단 단계는 `released`입니다.' section: workflow-cascade sources: [{fact-id: F-WORKFLOW-CASCADE}] status: supported - id: C-CASCADE-VERIFY-GATE type: factual statement: '`verification` 단계의 exit gate는 `quality-gate-passed`와 `blocker-open-false`입니다.' section: workflow-cascade sources: [{fact-id: F-WORKFLOW-CASCADE}] status: supported - id: C-CASCADE-EXIT type: factual statement: '`released` 진입 exit gate는 `release-approved`, `no-unresolved-critical-risks`, `human-gate` 세 조건입니다.' section: workflow-cascade sources: [{fact-id: F-WORKFLOW-CASCADE}, {fact-id: F-WORKFLOW-HUMAN-GATE-MAP}] status: supported - id: C-CASCADE-REWORK type: factual statement: '품질 게이트가 실패하면 `verification`에서 `build`로 되돌아가는 재작업 전이가 있습니다. 이 전이의 필요 조건은 `quality-gate-failed`입니다.' section: workflow-cascade sources: [{fact-id: F-WORKFLOW-CASCADE}] status: supported # ── workflow-wave-light ───────────────────────────────────────────────── - id: C-WAVE-STAGES type: factual statement: '`wave`는 `intake` → `plan` → `run` → `verification` → `acceptance` → `released` 여섯 단계를 거치고, `run`이 반복 단계입니다.' section: workflow-wave-light sources: [{fact-id: F-WORKFLOW-WAVE-LIGHT}] status: supported - id: C-WAVE-COMMANDS type: factual statement: '`wave`가 쓰는 명령은 `/ceo-intake`, `/plan-wave`, `/run-wave`, `/review-output`, `/release-check`입니다.' section: workflow-wave-light sources: [{fact-id: F-WORKFLOW-WAVE-LIGHT}] status: supported - id: C-LIGHT-STAGES type: factual statement: '`light`는 `plan` 단계를 생략하고 `intake` → `run` → `verification` → `acceptance` 네 단계로 끝납니다.' section: workflow-wave-light sources: [{fact-id: F-WORKFLOW-WAVE-LIGHT}] status: supported - id: C-LIGHT-COMMANDS type: factual statement: '`light`가 쓰는 명령은 `/ceo-intake`, `/run-wave`, `/review-output` 세 개입니다.' section: workflow-wave-light sources: [{fact-id: F-WORKFLOW-WAVE-LIGHT}] status: supported - id: C-LIGHT-CONDITION type: factual statement: '`light`를 적용해도 되는 조건은 저위험·two-way-door·single-role이면서 고객·매출·보안 영향이 없는 작업입니다.' section: workflow-wave-light sources: [{fact-id: F-WORKFLOW-WAVE-LIGHT}] status: supported - id: C-WAVE-LIGHT-DIFF type: factual statement: '기본 tier는 `wave`가 `standard`, `light`가 `light`입니다. 종단도 달라서 `wave`는 `released`까지 가고 `light`는 `acceptance`에서 멈춥니다.' section: workflow-wave-light sources: [{fact-id: F-WORKFLOW-WAVE-LIGHT}] status: supported - id: C-WAVE-LIGHT-VERIFY-GATE type: factual statement: '두 경로 모두 `verification` 단계에서 `quality-gate-passed`와 `blocker-open-false`를 요구하며, 이는 `cascade`가 같은 단계에서 쓰는 게이트와 같습니다.' section: workflow-wave-light sources: [{fact-id: F-WORKFLOW-WAVE-LIGHT}, {fact-id: F-WORKFLOW-CASCADE}] status: supported - id: C-WAVE-RELEASE-GATE type: factual statement: '`wave`의 `acceptance`는 `released`로 전이하며 exit gate로 `release-approved`, `no-unresolved-critical-risks`, `human-gate`를 요구합니다. 이 리스트는 `cascade`의 `acceptance`와 문자열이 같습니다.' section: workflow-wave-light sources: [{fact-id: F-WORKFLOW-WAVE-LIGHT}, {fact-id: F-WORKFLOW-HUMAN-GATE-MAP}] status: supported - id: C-LIGHT-NO-RELEASE type: factual statement: '`light`에는 `released` 단계 자체가 없습니다. `light`의 `acceptance`가 종단 단계이고 command가 `null`이라, release 사람 게이트가 놓일 자리가 없습니다.' section: workflow-wave-light sources: [{fact-id: F-WORKFLOW-WAVE-LIGHT}, {fact-id: F-WORKFLOW-HUMAN-GATE-MAP}] status: supported - id: C-TERMINAL-SHAPE type: factual statement: '다섯 plan의 종단 단계는 모두 command `null`과 빈 exit gate를 갖고, 이는 다음 전이가 없다는 표시입니다.' section: workflow-wave-light sources: [{fact-id: F-WORKFLOW-HUMAN-GATE-MAP}] status: supported # ── workflow-venture ──────────────────────────────────────────────────── - id: C-VENTURE-INPUT type: factual statement: '이 경로는 사람 입력이 먼저 차야 시작됩니다. `org-os/01-company/founder-context.yaml`의 상태가 `filled`여야 합니다.' section: workflow-venture sources: [{fact-id: F-WORKFLOW-VENTURE}] status: supported - id: C-VENTURE-ENTRY type: factual statement: '진입은 `/ceo-intake --plan venture-bootstrap`이고, 이어서 `/venture-validate`와 `/company-bootstrap`을 실행합니다.' section: workflow-venture sources: [{fact-id: F-WORKFLOW-VENTURE}] status: supported - id: C-VENTURE-STAGES type: factual statement: '단계는 `intake`, `founder-setup`, `opportunity-discovery`로 시작합니다. 이어서 `venture-validation`, `venture-decision`, `company-context-commit`을 거쳐 `bootstrap-complete`에서 끝납니다.' section: workflow-venture sources: [{fact-id: F-WORKFLOW-VENTURE}] status: supported - id: C-VENTURE-OUTPUT type: factual statement: '산출물은 `org-os/01-company/company-context.yaml`이고 발급 시점의 상태는 `provisional`입니다. 상태 어휘는 `template`, `provisional`, `operating` 세 가지입니다.' section: workflow-venture sources: [{fact-id: F-WORKFLOW-VENTURE}] status: supported - id: C-VENTURE-GATE type: factual statement: '`company-context-commit` 단계는 exit gate 세 개를 요구합니다. `company-context-provisional-committed`, `company-context-lint-passed`, `company-context-artifact-recorded`입니다.' section: workflow-venture sources: [{fact-id: F-WORKFLOW-VENTURE}] status: supported - id: C-VENTURE-CURRENT type: factual statement: '현재 저장소의 `company-context.yaml`은 `provisional` 상태입니다. `operating`이 아닌 동안 회사 관련 인용은 증거 등급 상한에 묶입니다.' section: workflow-venture sources: [{fact-id: F-LIMIT-COMPANY-CONTEXT}] status: supported # ── workflow-design-direction ─────────────────────────────────────────── - id: C-DD-CHILD type: factual statement: '`design-direction`은 독립 워크플로가 아니라 제품 `cascade`에 종속된 하위 워크플로입니다. 종단 상태는 `design-direction-approved`입니다.' section: workflow-design-direction sources: [{fact-id: F-WORKFLOW-DESIGN-DIRECTION}] status: supported - id: C-DD-BINDING type: factual statement: '부모와의 결속 키는 `parent-workflow-id`, `product-decision-id`, `direction-input-brief-sha256` 세 개입니다.' section: workflow-design-direction sources: [{fact-id: F-WORKFLOW-DESIGN-DIRECTION}] status: supported - id: C-DD-FLOW type: factual statement: '흐름은 불변 direction-input-brief에서 3안을 독립 발산한 뒤 하나로 수렴하고, 승자 prototype을 만들어 비평 루프를 거쳐 `approved-direction`을 냅니다.' section: workflow-design-direction sources: [{fact-id: F-WORKFLOW-DESIGN-DIRECTION}, {fact-id: F-WORKFLOW-SPECIALIZED}] status: supported - id: C-DD-REWORK type: factual statement: '재작업 전이는 두 종류입니다. `critique-revision-requested`이면 `critique`에서 `prototype`으로, `concept-rejection-recorded`이면 `critique`에서 `divergence`로 되돌아갑니다.' section: workflow-design-direction sources: [{fact-id: F-WORKFLOW-DESIGN-DIRECTION}] status: supported - id: C-DD-PAYLOAD type: factual statement: '승인 payload는 부모·자식 workflow id와 제품 결정 id에 더해 입력 brief, 선택된 방향, 승자 prototype의 SHA-256을 함께 고정합니다.' section: workflow-design-direction sources: [{fact-id: F-WORKFLOW-DESIGN-DIRECTION}] status: supported # ── workflow-specialized ──────────────────────────────────────────────── - id: C-DESIGN-REVIEW type: factual statement: '`/design-review`는 상태 전이를 하지 않고 감사만 합니다. `producer-run-id`와 `reviewer-run-id`가 같으면 거부해 생산자와 검토자를 분리합니다.' section: workflow-specialized sources: [{fact-id: F-WORKFLOW-SPECIALIZED}] status: supported - id: C-RUN-CASCADE type: factual statement: '`/run-cascade`는 평행 엔진 사용을 금지하는 얇은 드라이버입니다. 자동 승인과 자동 완주를 하지 않습니다.' section: workflow-specialized sources: [{fact-id: F-WORKFLOW-SPECIALIZED}] status: supported # ── repo-map ──────────────────────────────────────────────────────────── - id: C-REPO-SPLIT type: factual statement: '규칙의 원본은 `org-os/`에 있고, 그 규칙을 실행하는 코드는 `.claude/`에 있습니다. 고칠 위치를 찾을 때 이 경계를 먼저 봅니다.' section: repo-map sources: [{fact-id: F-ARCH-DIRECTORIES}, {fact-id: F-IDENTITY-CORE}] status: supported - id: C-REPO-REPOMIX type: factual statement: '`repomix/`는 소스에서 다시 만드는 산출물이라 gitignore 대상입니다.' section: repo-map sources: [{fact-id: F-ARCH-DIRECTORIES}] status: supported # ── repo-map-orgos ────────────────────────────────────────────────────── - id: C-ROLE-MODEL type: factual statement: 'registry는 AI 역할 75개를 정의하고 최종 사람 소유자로 `HUMAN-001`을 둡니다. 라우팅 family는 28개, 평가 lens는 12개입니다.' section: repo-map-orgos sources: [{fact-id: F-ARCH-ROLE-MODEL}] status: supported - id: C-ROLE-COUNT-RULE type: factual statement: '역할 수는 `role-registry.roles` 항목만 셉니다. team topology, EA layer, workflow gate는 역할 수를 늘리지 않습니다.' section: repo-map-orgos sources: [{fact-id: F-ARCH-ROLE-MODEL}] status: supported - id: C-METHOD-SOURCE type: factual statement: '역할별 method 절차의 원본은 `org-os/00-role-registry/role-working-methods/`이고, 라우팅은 `method-skill-registry.yaml`이 맡습니다.' section: repo-map-orgos sources: [{fact-id: F-ARCH-METHOD-CONTRACT}] status: supported - id: C-METHOD-CONTRACT type: factual statement: '계약 활성화 기록은 `org-os/00-role-registry/method-contract-activations.yaml`에 남습니다. skill 디렉터리 78개는 13:36 시점에 그대로 있었습니다.' section: repo-map-orgos sources: [{fact-id: F-ARCH-METHOD-CONTRACT}] status: supported - id: C-METHOD-CONTRACT-STALE type: factual statement: '계약 machinery 집계값은 12:03 `doctor.py` 출력에서 얻었고 그 뒤 재검증하지 않았습니다. 활성화 기록 파일이 그 사이 수정됐으므로 이 문서는 해당 수치를 싣지 않습니다.' section: repo-map-orgos sources: [{fact-id: F-ARCH-METHOD-CONTRACT}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-ARTIFACT-REGISTRY type: factual statement: '컴파일된 artifact registry는 artifact kind 186개를 담고 `.claude/hooks/compile_artifact_registry.py`가 만듭니다. 산출 위치는 `org-os/06-agent-work/generated/artifact-registry.yaml`입니다.' section: repo-map-orgos sources: [{fact-id: F-ARCH-ARTIFACT-REGISTRY}] status: supported - id: C-STUB-FOLDERS type: factual statement: '회사 문맥 폴더 5개는 아직 `README.md`만 담고 있습니다. `02-capabilities`, `03-products`, `04-architecture`, `05-operations`, `07-knowledge-base`가 여기 해당합니다.' section: repo-map-orgos sources: [{fact-id: F-LIMIT-STUB-CONTEXT-FOLDERS}] status: supported # ── repo-map-claude ───────────────────────────────────────────────────── - id: C-CLAUDE-SCALE-ASOF type: factual statement: '아래 규모는 모두 2026-07-20 13:36 시점의 관측값입니다. 저장소가 동시에 수정되던 중이라 안정된 속성이 아닙니다.' section: repo-map-claude sources: [{fact-id: F-ARCH-DIRECTORIES}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-AGENTS-GENERATED type: factual statement: '`.claude/agents/*.md`는 생성물이라 수기 편집을 금지합니다. 고칠 때는 role-profiles나 capability-families를 수정하고 `gen_agents.py`를 다시 실행합니다.' section: repo-map-claude sources: [{fact-id: F-ARCH-AGENT-CARD-COMPOSITION}] status: supported - id: C-CARD-COMPOSITION type: factual statement: '카드 75개의 구성은 `fan-out` worker 43개, `collapse concrete` worker 19개, `direct single-member` worker 10개, `synthesis lead` 3개입니다.' section: repo-map-claude sources: [{fact-id: F-ARCH-AGENT-CARD-COMPOSITION}, {fact-id: F-VERIFY-GENAGENTS-EXECUTED}] status: supported - id: C-CARD-EXECUTABLE type: factual statement: '`family resolver`, `router`, family 메타데이터 카드는 이제 생성하지 않아 각각 0개입니다. 참조 역할 75개와 실행 가능한 concrete 카드 75개가 1대1로 대응합니다.' section: repo-map-claude sources: [{fact-id: F-ARCH-AGENT-CARD-COMPOSITION}] status: supported - id: C-HOOK-EVENTS type: factual statement: '훅은 이벤트 다섯 곳에 배선돼 있습니다.' section: repo-map-claude sources: [{fact-id: F-ARCH-HOOKS}] status: supported - id: C-HOOK-WIRING type: factual statement: 'subagent 종료 검증은 fail-closed이고 메인 세션 종료 검증은 advisory입니다.' section: repo-map-claude sources: [{fact-id: F-ARCH-HOOKS}] status: supported - id: C-HOOK-NEW type: factual statement: '`usage_observer.py`는 13:36 재추출 시점에 새로 배선됐고, `PreToolUse` matcher에 `WebFetch`와 `WebSearch`가 추가됐습니다.' section: repo-map-claude sources: [{fact-id: F-ARCH-HOOKS}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-ADAPTER-SINGLE type: factual statement: '다른 에이전트 런타임용 어댑터가 없으므로, 진입점과 강제를 옮기려면 이 계층 전체를 새로 배선해야 합니다.' section: repo-map-claude sources: [{fact-id: F-IDENTITY-RUNTIME-COUPLING}] status: supported # ── artifacts ─────────────────────────────────────────────────────────── - id: C-ARTIFACT-LOCATION type: factual statement: '실행 결과·증거·상태는 저장소가 아니라 workspace 아래에 남습니다. 같은 명령이라도 workspace가 달라지면 기록 위치가 달라집니다.' section: artifacts sources: [{fact-id: F-ARTIFACT-LAYOUT}] status: supported - id: C-WS-POINTER-VALUE type: factual statement: '`.orgos-workspace` 포인터의 현재 값은 `hyeonworks`입니다. 과거에는 이 파일이 의도적으로 비어 있었습니다.' section: workspace-resolution sources: [{fact-id: F-ARTIFACT-CURRENT-WORKSPACES}] status: supported - id: C-WS-TWO type: factual statement: '현재 워킹 트리에는 워크스페이스가 두 개 있습니다. `_sandbox`는 테스트·CI용이고 `hyeonworks`는 제품 프로젝트용입니다.' section: workspace-resolution sources: [{fact-id: F-ARTIFACT-CURRENT-WORKSPACES}] status: supported - id: C-WS-SUBDIRS type: factual statement: '`hyeonworks` 아래에는 `app`, `completion-records`, `design`, `design-direction`, `evidence`, `state`가 있습니다. `_sandbox` 아래에는 `completion-records`, `evidence`, `reports`, `state`가 있습니다.' section: workspace-resolution sources: [{fact-id: F-ARTIFACT-CURRENT-WORKSPACES}] status: supported # ── output-locations ──────────────────────────────────────────────────── - id: C-REPORT-PATH type: factual statement: '보고서 경로 규칙은 `/completion-records//-.report.yaml`입니다.' section: output-locations sources: [{fact-id: F-ARTIFACT-PROVENANCE}] status: supported - id: C-REPORT-IMMUTABLE type: factual statement: '`.report.yaml`은 덮어쓰기와 수정을 금지하며 `guard_tools`가 이를 강제합니다. 재작업도 `new_report.py`로 새 파일을 발급합니다.' section: output-locations sources: [{fact-id: F-ARTIFACT-PROVENANCE}] status: supported - id: C-RECEIPT-FIELDS type: factual statement: '실행 receipt는 `/evidence/ledger.jsonl`에 쌓입니다. 실행한 명령과 종료 코드, stdout 해시, 기록된 산출물 경로와 SHA-256이 함께 남습니다.' section: output-locations sources: [{fact-id: F-ARTIFACT-PROVENANCE}, {fact-id: F-ARCH-EVIDENCE-GRADING}] status: supported - id: C-RECEIPT-LIMIT type: factual statement: '계측 훅이 workspace를 해석하지 못하면 기록만 건너뛰고 도구 실행 자체는 막지 않습니다.' section: output-locations sources: [{fact-id: F-ARTIFACT-PROVENANCE}] status: supported - id: C-EVENT-LEDGERS type: factual statement: 'append-only 이벤트 원장은 `workflow-events.jsonl`, `artifact-events.jsonl`, `acceptance-events.jsonl`, `human-signoff.jsonl` 네 개입니다.' section: output-locations sources: [{fact-id: F-ARCH-STATE-ARTIFACT}] status: supported - id: C-MATERIALIZED-VIEW type: factual statement: '`workflow.yaml`은 이 이벤트들에서 만든 materialized view이며 버리고 다시 만들어도 되는 파생물입니다.' section: output-locations sources: [{fact-id: F-ARCH-STATE-ARTIFACT}] status: supported - id: C-RENDER type: factual statement: '사람이 읽는 산출물은 `render_report.py`가 `.report.yaml`에서 MD로 만들고, `reports/INDEX.md`가 목차 역할을 합니다.' section: output-locations sources: [{fact-id: F-ARTIFACT-PROVENANCE}] status: supported - id: C-DASHBOARDS type: factual statement: '대시보드는 `reports/TOKENS.md`와 `reports/KPI.md` 두 개입니다. `kpi_ledger`는 각 KPI를 measured/derived, manual, unmeasured로 구분해 표기합니다.' section: output-locations sources: [{fact-id: F-ARTIFACT-PROVENANCE}] status: supported # ── verification ──────────────────────────────────────────────────────── - id: C-VERIFY-CONCURRENT type: factual statement: '이 저장소는 사실 추출 도중에도 다른 세션이 수정하고 있었습니다. 그래서 검증 결과는 명령별로 기준 시점을 나눠 적습니다.' section: verification sources: [{fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-VERIFY-SUPERSEDED type: factual statement: '12:03에 실행한 `run_all.py`와 `doctor.py`는 각각 `34/34 green`과 `35 OK · 0 WARN · 0 FAIL`을 냈습니다. 그 결과는 현재 저장소에 대한 주장이 아닙니다.' section: verification sources: [{fact-id: F-VERIFY-SUITE-EXECUTED}, {fact-id: F-VERIFY-DOCTOR-EXECUTED}] status: supported - id: C-VERIFY-TREE-GONE type: factual statement: '그 사이 동시 리팩터가 agent 카드를 101개에서 75개로, 최상위 hook을 35개에서 40개로, test suite를 31개에서 32개로 바꿨습니다. 실행 대상이던 트리는 더 이상 존재하지 않습니다.' section: verification sources: [{fact-id: F-LIMIT-CONCURRENT-REFACTOR}, {fact-id: F-VERIFY-SUITE-EXECUTED}] status: supported - id: C-VERIFY-NO-RERUN type: factual statement: '동시 세션이 같은 `_sandbox` 워크스페이스에 같은 스위트를 실행 중이어서, 재실행하면 두 결과 모두 신뢰할 수 없게 됩니다.' section: verification sources: [{fact-id: F-VERIFY-SUITE-EXECUTED}, {fact-id: F-VERIFY-DOCTOR-EXECUTED}] status: supported - id: C-VERIFY-TREE-STATE type: factual statement: '분석 시점의 HEAD는 `00db337`이었고 워킹 트리에는 변경·미추적 항목이 269개, 삭제 항목이 26개 있었습니다.' section: verification sources: [{fact-id: F-IDENTITY-SNAPSHOT}] status: supported # ── verify-commands ───────────────────────────────────────────────────── - id: C-SUITE-ENTRY type: factual statement: '전체 스위트 진입점은 `.claude/tests/run_all.py`입니다.' section: verify-commands sources: [{fact-id: F-VERIFY-SUITE}] status: supported - id: C-SUITE-PREFLIGHT type: factual statement: 'preflight는 `compile_artifact_registry.py --check`, `doctor.py`, `lint_refs.py` 세 개이고 `--no-preflight`로 건너뜁니다.' section: verify-commands sources: [{fact-id: F-VERIFY-SUITE}] status: supported - id: C-SUITE-EXEC type: factual statement: '테스트는 `.claude/tests/test_*.py`를 suite별로 순차 실행하며, suite마다 새 프로세스 그룹에서 시작하고 300초 제한을 둡니다. 13:36 시점의 파일 수는 32개입니다.' section: verify-commands sources: [{fact-id: F-VERIFY-SUITE}, {fact-id: F-ARCH-DIRECTORIES}] status: supported - id: C-SUITE-TIMEOUT type: factual statement: '제한값은 `ORGOS_TEST_TIMEOUT`으로 바꾸고, 초과하면 SIGTERM 뒤 필요 시 SIGKILL로 프로세스 그룹을 정리합니다.' section: verify-commands sources: [{fact-id: F-VERIFY-SUITE}] status: supported - id: C-SUITE-FAILURE type: factual statement: '실패하거나 timeout된 suite가 하나라도 있으면 전체가 exit 1로 끝납니다.' section: verify-commands sources: [{fact-id: F-VERIFY-SUITE}] status: supported - id: C-SUITE-RUN type: factual statement: '12:03 실행 결과는 preflight 3개와 테스트 31개를 합쳐 `34/34 green`, exit 0이었습니다. 그 뒤 저장소가 바뀌었으므로 현재 트리의 통과 여부는 확인되지 않았습니다.' section: verify-commands sources: [{fact-id: F-VERIFY-SUITE-EXECUTED}] status: supported - id: C-DOCTOR-AREAS type: factual statement: '`doctor.py`가 보는 영역에는 settings.json 배선, workspace 해석, 커맨드에서 agent로 이어지는 참조 무결성이 들어갑니다. SSOT 소비 현황, append-only JSONL 원장 무결성, compiled artifact registry도 같은 점검에 들어갑니다.' section: verify-commands sources: [{fact-id: F-VERIFY-DOCTOR-EXECUTED}] status: supported - id: C-DOCTOR-UNKNOWN type: factual statement: '`doctor.py` 자체가 이번 리팩터에서 수정됐고 배선과 카드도 함께 바뀌었습니다. 현재 트리의 판정은 확인되지 않았습니다.' section: verify-commands sources: [{fact-id: F-VERIFY-DOCTOR-EXECUTED}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-GENCHECK-SCOPE type: factual statement: '생성 계약 점검은 `gen_agents.py --check`가 맡습니다. registry에서 만든 카드 집합이 개수·구조 계약을 만족하는지 확인합니다.' section: verify-commands sources: [{fact-id: F-VERIFY-GENAGENTS-EXECUTED}] status: supported - id: C-GENCHECK-RUN type: factual statement: '13:36 재실행은 exit 0으로 끝났고 `75 concrete agents`와 `profiles=75`를 보고했습니다. 12:03 실행은 같은 명령으로 101개를 보고했습니다.' section: verify-commands sources: [{fact-id: F-VERIFY-GENAGENTS-EXECUTED}] status: supported - id: C-GENCHECK-LIMIT type: factual statement: '디스크에 있는 `.claude/agents/*.md` 바이트와의 비교는 이 명령의 출력에 나타나지 않습니다.' section: verify-commands sources: [{fact-id: F-VERIFY-GENAGENTS-EXECUTED}] status: supported - id: C-LINTREFS type: factual statement: '참조 무결성 점검은 `lint_refs.py`가 맡습니다. 13:36 재실행에서 command 참조 18개와 agent skill 참조 75개가 모두 해결됐고 exit 0으로 끝났습니다.' section: verify-commands sources: [{fact-id: F-VERIFY-LINTREFS-EXECUTED}] status: supported - id: C-REGISTRY-RECHECK type: factual statement: '`compile_artifact_registry.py --check`도 13:36에 다시 돌려 artifact kind 186개에 드리프트가 없음을 exit 0으로 확인했습니다.' section: verify-commands sources: [{fact-id: F-ARCH-ARTIFACT-REGISTRY}] status: supported # ── verify-ci ─────────────────────────────────────────────────────────── - id: C-CI-JOB type: factual statement: '자동 검증은 `.github/workflows/ci.yml`의 `harness-enforcers` job이고 실행 환경은 `ubuntu-latest`입니다.' section: verify-ci sources: [{fact-id: F-CI-WORKFLOW}] status: supported - id: C-CI-TRIGGER type: factual statement: '트리거는 `main`, `fix/**`, `feat/**` 브랜치 푸시와 `main`을 대상으로 하는 풀 리퀘스트입니다.' section: verify-ci sources: [{fact-id: F-CI-WORKFLOW}] status: supported - id: C-CI-ENV type: factual statement: '환경 설정은 `CLAUDE_PROJECT_DIR`을 `github.workspace`로, `ORGOS_WORKSPACE`를 `_sandbox`로 두고 Python 3.12와 Node 20을 씁니다.' section: verify-ci sources: [{fact-id: F-CI-WORKFLOW}] status: supported - id: C-CI-STEPS type: factual statement: '실행 단계는 로컬 명령과 그대로 대응합니다.' section: verify-ci sources: [{fact-id: F-CI-WORKFLOW}] status: supported - id: C-CI-OPTIONAL type: factual statement: 'D2 설치 단계는 실패해도 건너뛰도록 허용합니다.' section: verify-ci sources: [{fact-id: F-CI-WORKFLOW}] status: supported - id: C-CI-UNCHECKED type: factual statement: '이번 분석에서는 GitHub Actions 실행 이력을 조회하지 않았습니다. CI가 최근에 통과했는지는 이 문서로 확인되지 않습니다.' section: verify-ci sources: [{fact-id: F-CI-WORKFLOW}] status: supported # ── verify-levels ─────────────────────────────────────────────────────── - id: C-LEVELS-SECOND type: factual statement: '이 문서에 실린 실행 결과는 모두 두 번째 등급입니다. Repository Evidence Analyst가 임시로 실행한 것이며 하네스의 Execution Verifier 게이트를 통과한 결과가 아닙니다.' section: verify-levels sources: [{fact-id: F-VERIFY-GENAGENTS-EXECUTED}, {fact-id: F-VERIFY-LINTREFS-EXECUTED}, {fact-id: F-VERIFY-SUITE-EXECUTED}] status: supported - id: C-LEVELS-THIRD-NONE type: factual statement: '세 번째 등급에 해당하는 사례는 현재 이 문서에 없습니다.' section: verify-levels sources: [{fact-id: F-VERIFY-GENAGENTS-EXECUTED}, {fact-id: F-VERIFY-SUITE-EXECUTED}] status: supported - id: C-LEVELS-CURRENCY type: factual statement: '두 번째 등급이어도 실행 시점 이후 저장소가 바뀌었다면 그 결과는 현재 트리에 대한 주장이 아닙니다.' section: verify-levels sources: [{fact-id: F-LIMIT-CONCURRENT-REFACTOR}, {fact-id: F-VERIFY-SUITE-EXECUTED}] status: supported - id: C-LEVELS-DEMOTED type: factual statement: '`run_all.py`와 `doctor.py`의 12:03 결과가 그런 경우입니다. 이 문서는 두 결과를 이력으로만 싣고 현재 상태의 근거로 쓰지 않습니다.' section: verify-levels sources: [{fact-id: F-VERIFY-SUITE-EXECUTED}, {fact-id: F-VERIFY-DOCTOR-EXECUTED}] status: supported # ── evidence-status ───────────────────────────────────────────────────── - id: C-EVIDENCE-BLUF type: factual statement: '이 하네스가 더 나은 산출물을 낸다는 주장은 아직 성립하지 않습니다. 측정 도구는 만들어져 있고, 측정은 거의 이뤄지지 않았습니다.' section: evidence-status sources: [{fact-id: F-LIMIT-BENCHMARK-GOLDEN}, {fact-id: F-LIMIT-P4-PILOT-UNRUN}] status: supported - id: C-GOLDEN-DEFINED type: factual statement: 'golden task는 13개가 정의돼 있습니다. 카테고리는 code-bugfix, code-feature, refactor, docs, design, decision입니다.' section: bench-golden sources: [{fact-id: F-VERIFY-BENCHMARK-EXECUTED}, {fact-id: F-LIMIT-BENCHMARK-GOLDEN}] status: supported - id: C-GOLDEN-LIST-RERUN type: factual statement: '이 개수는 13:36에 `benchmark.py list`를 다시 돌려 exit 0으로 확인했습니다.' section: bench-golden sources: [{fact-id: F-VERIFY-BENCHMARK-EXECUTED}] status: supported - id: C-GOLDEN-SAMPLES type: factual statement: '실행된 표본은 plain 2개와 harness 2개뿐입니다. 대상 과제는 `GT-01`과 `GT-R2` 둘이고, 둘 다 code-bugfix 저난도이며 실행일은 2026-07-11입니다.' section: bench-golden sources: [{fact-id: F-LIMIT-BENCHMARK-GOLDEN}] status: supported - id: C-GOLDEN-DIMENSIONS type: factual statement: '측정된 지표는 3개이고 미측정 지표는 8개입니다.' section: bench-golden sources: [{fact-id: F-LIMIT-BENCHMARK-GOLDEN}] status: supported - id: C-GOLDEN-TIE type: factual statement: '측정된 세 지표가 모두 동률이고 가중 합성 차이도 0입니다.' section: bench-golden sources: [{fact-id: F-LIMIT-BENCHMARK-GOLDEN}] status: supported - id: C-GOLDEN-CONCLUSION type: factual statement: '이 표본은 하네스의 품질 우위를 입증하지 않습니다. 설계·문서·의사결정 카테고리는 아직 실행되지 않았습니다.' section: bench-golden sources: [{fact-id: F-LIMIT-BENCHMARK-GOLDEN}] status: supported - id: C-GOLDEN-REPORT-FILE type: factual statement: '`benchmark/BENCHMARK.md`는 gitignore 대상이며 `runs.jsonl`에서 다시 만드는 재생성물입니다. `compare` 명령은 새 표본을 만들지 않습니다.' section: bench-golden sources: [{fact-id: F-LIMIT-BENCHMARK-GOLDEN}, {fact-id: F-VERIFY-BENCHMARK-EXECUTED}] status: supported - id: C-GOLDEN-COMPARE-STALE type: factual statement: '표본 수치는 12:03에 실행한 `compare` 출력에서 얻었습니다. 쓰기 부수효과가 있어 동시 수정 중인 트리에서 다시 돌리지 않았습니다.' section: bench-golden sources: [{fact-id: F-VERIFY-BENCHMARK-EXECUTED}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported # ── bench-cascade ─────────────────────────────────────────────────────── - id: C-CASCADE-ARMS type: factual statement: 'P4 cascade 벤치마크는 arm 세 개를 커밋 해시로 고정해 비교합니다. `A`는 P1+P2, `B`는 P1+P2+P3-A, `C`는 P1+P2+P3-B-active입니다.' section: bench-cascade sources: [{fact-id: F-LIMIT-P4-PILOT-UNRUN}] status: supported - id: C-CASCADE-CLI type: factual statement: '컨트롤러 CLI는 `.claude/hooks/benchmark_cascade.py`이고 모듈 13개에 총 889줄입니다. 테스트는 `test_p4_cascade.py`와 `test_p4_cascade_exec.py` 두 개입니다.' section: bench-cascade sources: [{fact-id: F-LIMIT-P4-PILOT-UNRUN}] status: supported - id: C-CASCADE-STUBS type: factual statement: '서브커맨드 8개 가운데 배선된 것은 `plan`과 `approve-budget` 둘뿐입니다. 나머지 6개인 `calibrate`, `arm-run`, `sanitize`, `judge`, `compare`, `probe`는 exit 3을 내는 stub입니다.' section: bench-cascade sources: [{fact-id: F-LIMIT-P4-PILOT-UNRUN}, {fact-id: F-VERIFY-CASCADE-CLI-EXECUTED}] status: supported - id: C-CASCADE-STUBS-STATIC type: factual statement: '이 stub 목록과 종료 코드는 `benchmark_cascade.py` 소스에서 정적으로 확인한 것입니다. 이 파일은 이번 리팩터에서 바뀌지 않았습니다.' section: bench-cascade sources: [{fact-id: F-VERIFY-CASCADE-CLI-EXECUTED}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-CASCADE-STUB-MSG type: factual statement: 'stub이 내는 메시지는 `not-implemented — orchestrator 미배선(pilot 실행 단계에서 배선)`입니다.' section: bench-cascade sources: [{fact-id: F-LIMIT-P4-PILOT-UNRUN}, {fact-id: F-VERIFY-CASCADE-CLI-EXECUTED}] status: supported - id: C-CASCADE-NO-RUNS type: factual statement: '파일럿 실행 산출물은 저장소에 없습니다. `runs` 디렉터리, `judgments.jsonl`, cascade 벤치마크 보고서가 모두 부재합니다.' section: bench-cascade sources: [{fact-id: F-LIMIT-P4-PILOT-UNRUN}] status: supported - id: C-CASCADE-PLAN-RUN type: factual statement: '12:03 실행에서 `plan`은 exit 0으로 끝났고 arm 실행 3회, pairwise 호출 18회, 예상 judge 호출 132회를 계획으로 냈습니다. preflight 위반은 없었습니다.' section: bench-cascade sources: [{fact-id: F-VERIFY-CASCADE-CLI-EXECUTED}] status: supported - id: C-CASCADE-PLAN-STALE type: factual statement: '`plan`은 역할·agent registry를 읽으므로 이번 리팩터의 영향을 배제할 수 없습니다. 이 결과는 재실행하지 않았습니다.' section: bench-cascade sources: [{fact-id: F-VERIFY-CASCADE-CLI-EXECUTED}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-CASCADE-FAIRNESS type: factual statement: '공정성 통제로 외부 웹 접근을 막습니다. arm-runner의 `evidence_env`가 `WebFetch`와 `WebSearch`를 실행 환경에서 차단하고, 모든 arm이 같은 evidence pack을 씁니다.' section: bench-cascade sources: [{fact-id: F-LIMIT-BENCHMARK-CONTROLS}] status: supported - id: C-CASCADE-BUDGET type: factual statement: '`calibrate`, `judge`, `arm-run`에 `--execute`를 주면 예산 receipt가 없을 때 exit 2로 거부합니다.' section: bench-cascade sources: [{fact-id: F-VERIFY-CASCADE-CLI-EXECUTED}, {fact-id: F-LIMIT-BENCHMARK-CONTROLS}] status: supported - id: C-CASCADE-BUDGET-STUB type: factual statement: 'receipt가 있어도 실행되지는 않습니다. 세 서브커맨드 모두 현재 구현에서는 exit 3, 즉 미구현을 반환합니다.' section: bench-cascade sources: [{fact-id: F-LIMIT-P4-PILOT-UNRUN}, {fact-id: F-VERIFY-CASCADE-CLI-EXECUTED}] status: supported - id: C-CASCADE-JUDGING type: factual statement: '승자 판정은 blinded paired pairwise 패널만 씁니다. rubric 8개 기준의 절대 점수는 calibration 진단 전용입니다.' section: bench-cascade sources: [{fact-id: F-LIMIT-BENCHMARK-CONTROLS}] status: supported - id: C-CASCADE-DISCLAIMER type: factual statement: '파일럿은 arm별 단일 실행이므로 통계적 우월성이나 일반적 생산성 향상을 확정하지 않습니다.' section: bench-cascade sources: [{fact-id: F-LIMIT-P4-PILOT-UNRUN}] status: supported - id: C-CASCADE-DEFERRED type: factual statement: '설계에서 의도적으로 미룬 항목은 여섯 가지입니다.' section: bench-cascade sources: [{fact-id: F-LIMIT-P4-PILOT-UNRUN}] status: supported # ── limitations ───────────────────────────────────────────────────────── - id: C-LIM-CONCURRENT type: factual statement: '저장소가 이 문서를 쓰는 동안 다른 세션이 계속 수정했습니다.' section: limitations sources: [{fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-LIM-UNCOMMITTED type: factual statement: '저장소를 clone한 상태와 이 문서가 검증한 상태가 다릅니다. `.claude/agents`의 추적 카드는 72개인데 워킹 트리에는 75개가 있습니다.' section: limitations sources: [{fact-id: F-LIMIT-UNCOMMITTED-REGENERATION}] status: supported - id: C-LIM-UNCOMMITTED-DELETE type: factual statement: '워킹 트리에서 지워진 `fam-*.md` 26개는 아직 커밋되지 않았습니다. HEAD는 그 파일들을 여전히 추적하므로, clone한 독자는 이 문서가 설명하는 것과 다른 저장소를 받습니다.' section: limitations sources: [{fact-id: F-LIMIT-UNCOMMITTED-REGENERATION}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-LIM-UNWIRED-HOOKS type: factual statement: '`compile_orgos_registry.py`, `spawn_bindings.py`, `intake_classifier.py`, `role_selector.py`는 `settings.json`에 배선돼 있지 않습니다.' section: limitations sources: [{fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-LIM-DOCTOR-SECTION14 type: factual statement: '`doctor.py`의 14번째 점검 영역은 `compile_orgos_registry.py`를 실행합니다. 이 모듈 역시 배선돼 있지 않으므로, 점검 영역이 14개라는 사실이 14개 영역의 런타임 강제를 뜻하지는 않습니다.' section: limitations sources: [{fact-id: F-VERIFY-DOCTOR-EXECUTED}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-LIM-SUITE-UNKNOWN type: factual statement: '전체 test suite가 현재 트리에서 통과하는지는 확인되지 않았습니다. 마지막으로 통과를 확인한 시점은 리팩터 이전인 12:03입니다.' section: limitations sources: [{fact-id: F-VERIFY-SUITE-EXECUTED}, {fact-id: F-LIMIT-CONCURRENT-REFACTOR}] status: supported - id: C-LIM-ACTIVATION type: factual statement: '강제는 Claude Code가 이 저장소의 `.claude/settings.json`을 로드한 세션에서만 동작합니다. 다른 실행 환경에서는 같은 강제를 보장하지 않습니다.' section: limitations sources: [{fact-id: F-LIMIT-HOOK-ACTIVATION}] status: supported - id: C-LIM-GUARD type: factual statement: '`guard_tools.py`는 allow-by-default regex 기반 2차 방어선입니다. 저장소가 스스로 셸 조합·인용·변형으로 우회 가능하다고 선언하므로 보안 경계로 삼으면 안 됩니다.' section: limitations sources: [{fact-id: F-LIMIT-GUARD-REGEX}] status: supported - id: C-LIM-COMPANY type: factual statement: '`company-context.yaml`이 `provisional`이고 창업자 확인값 5개가 비어 있습니다. 주당 가용시간, 자본·런웨이, 목표 사업 규모, 보유 유통채널, 운영·리스크 내성이 미해결입니다.' section: limitations sources: [{fact-id: F-LIMIT-COMPANY-CONTEXT}] status: supported - id: C-LIM-PROVENANCE type: factual statement: '상태가 `operating`이 아니면 company 인용 항목은 `E2`와 Med 상한에 묶이고, hypothesis 항목은 상태와 무관하게 Med 상한입니다. `validate_report`가 이를 강제합니다.' section: limitations sources: [{fact-id: F-LIMIT-COMPANY-CONTEXT}] status: supported - id: C-LIM-CONTEXT-EMPTY type: factual statement: '회사·제품 문맥 레이어가 비어 있어, 자원 배분과 GTM 결정 전에 창업자 확인값을 먼저 채워야 합니다.' section: limitations sources: [{fact-id: F-LIMIT-STUB-CONTEXT-FOLDERS}, {fact-id: F-LIMIT-COMPANY-CONTEXT}] status: supported - id: C-LIM-POINTER type: factual statement: '워크스페이스 미설정이 더 이상 즉시 실패로 드러나지 않습니다. 포인터 파일이 채워져 있어 환경변수를 지정하지 않은 명령도 `hyeonworks`로 해석됩니다.' section: limitations sources: [{fact-id: F-ARTIFACT-CURRENT-WORKSPACES}, {fact-id: F-ARTIFACT-LAYOUT}] status: supported - id: C-LIM-UI type: factual statement: 'UI 검증은 render health만 판정합니다. 시각적 차별성, 타이포그래피, 비례, spacing의 미학 품질은 판정 범위 밖입니다.' section: limitations sources: [{fact-id: F-LIMIT-UI-AESTHETICS}] status: supported - id: C-LIM-EXTERNAL type: factual statement: '일부 경로는 외부 도구에 기댑니다. 전체 렌더 점검에는 Chrome 또는 Chromium 호환 실행 파일이 필요하고, `marp`가 없으면 consult 덱은 HTML 대체 경로로 갑니다.' section: limitations sources: [{fact-id: F-LIMIT-UI-AESTHETICS}, {fact-id: F-PREREQ-UI}, {fact-id: F-PREREQ-TOOLS}] status: supported # ── contributing ──────────────────────────────────────────────────────── - id: C-CONTRIB-SOURCE type: factual statement: '역할·family·method 정의는 `org-os/00-role-registry/`에, workflow와 artifact 계약은 `org-os/06-agent-work/`에 있습니다.' section: contributing sources: [{fact-id: F-ARCH-DIRECTORIES}] status: supported - id: C-CONTRIB-REGEN type: factual statement: '재생성 명령은 `.claude/agents/*.md`를 덮어쓰므로 이번 분석에서 실행하지 않았습니다(검증 수준: 저장소가 선언한 명령).' section: contributing sources: [{fact-id: F-ARCH-AGENT-CARD-COMPOSITION}] status: supported - id: C-CONTRIB-CI type: factual statement: '변경은 CI의 `harness-enforcers` job이 돌리는 검사들을 그대로 통과해야 합니다.' section: contributing sources: [{fact-id: F-CI-WORKFLOW}] status: supported - id: C-CONTRIB-ACTIVATION type: factual statement: 'method 계약을 바꾸면 `method-contract-activations.yaml`에 활성화 기록이 남습니다. 기록에는 상태, 계약 해시, 검증 보고서와 그 해시, 수용 workflow, 활성화 주체와 시각이 들어갑니다.' section: contributing sources: [{fact-id: F-ARCH-METHOD-CONTRACT}] status: supported # ── reference / license ───────────────────────────────────────────────── - id: C-DESIGN-HISTORY type: factual statement: '설계 spec은 [`docs/superpowers/specs/`](docs/superpowers/specs/)에, 구현 plan은 [`docs/superpowers/plans/`](docs/superpowers/plans/)에 있습니다.' section: design-history sources: [{fact-id: F-ARCH-DIRECTORIES}, {fact-id: F-LIMIT-P4-PILOT-UNRUN}] status: supported - id: C-LICENSE type: factual statement: '저장소 루트에 `LICENSE` 파일이 없습니다. 사용과 재배포 조건은 이 저장소에 명시돼 있지 않습니다.' section: license sources: [{fact-id: F-IDENTITY-NO-LICENSE}] status: supported