548 lines
20 KiB
YAML
548 lines
20 KiB
YAML
schema-version: 1
|
|
repository-snapshot-hash: sha256:1eaa580e67e33d16a6115eb8f66fd034446436fb8f3bf70842ee9fd91b60ca64
|
|
project-name: Org OS 하네스
|
|
languages: [Python, YAML, Markdown]
|
|
frameworks: [Claude Code]
|
|
facts:
|
|
- id: F-IDENTITY-CORE
|
|
category: identity
|
|
key: project-identity-and-purpose
|
|
value:
|
|
name: Org OS 하네스
|
|
purpose: 회사 전체를 AI 에이전트로 운영하는 파일 기반 운영체계로, 개발과 비즈니스 업무를 함께 다룬다.
|
|
runtime: Claude Code의 subagent, project command, hook
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: CLAUDE.md
|
|
line-start: 1
|
|
line-end: 3
|
|
source-kind: project-documentation
|
|
|
|
- id: F-WORKFLOW-ENTRY
|
|
category: workflow
|
|
key: new-workflow-entrypoint
|
|
value:
|
|
command: /ceo-intake
|
|
applies-to: [cascade, wave, light, venture-bootstrap]
|
|
normal-outputs: [decision-brief, workload-profile]
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: org-os/06-agent-work/workflow-contracts.yaml
|
|
line-start: 46
|
|
line-end: 54
|
|
source-kind: workflow-contract
|
|
- path: org-os/06-agent-work/workflow-contracts.yaml
|
|
line-start: 103
|
|
line-end: 124
|
|
source-kind: workflow-contract
|
|
|
|
- id: F-WORKFLOW-CASCADE
|
|
category: workflow
|
|
key: cascade-stage-map
|
|
value:
|
|
terminal-stage: released
|
|
stages:
|
|
- {stage: intake, command: /ceo-intake, output: [decision-brief, workload-profile]}
|
|
- {stage: discovery, command: /ground, output: [grounding-package]}
|
|
- {stage: decide, command: /decide, output: [executive-decision-packet]}
|
|
- {stage: design, command: /design, output: conditional-design-bundle}
|
|
- {stage: spec, command: /spec, output: conditional-spec-bundle}
|
|
- {stage: build, command: /build, output: [completion-record]}
|
|
- {stage: verification, command: /review-output, output: [quality-gate-review]}
|
|
- {stage: acceptance, command: /release-check, output: [release-decision]}
|
|
release-exit-gates: [release-approved, no-unresolved-critical-risks, human-gate]
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: org-os/06-agent-work/workflow-contracts.yaml
|
|
line-start: 46
|
|
line-end: 101
|
|
source-kind: workflow-contract
|
|
|
|
- id: F-WORKFLOW-WAVE-LIGHT
|
|
category: workflow
|
|
key: wave-and-light-selection
|
|
value:
|
|
wave:
|
|
commands: [/ceo-intake, /plan-wave, /run-wave, /review-output, /release-check]
|
|
terminal-stage: released
|
|
light:
|
|
commands: [/ceo-intake, /run-wave, /review-output]
|
|
terminal-stage: acceptance
|
|
omitted-stage: plan
|
|
intended-for: 저위험·two-way-door·single-role이며 고객·매출·보안 영향이 없는 작업
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: org-os/06-agent-work/workflow-contracts.yaml
|
|
line-start: 103
|
|
line-end: 119
|
|
source-kind: workflow-contract
|
|
- path: org-os/06-agent-work/execution-plans.yaml
|
|
line-start: 23
|
|
line-end: 37
|
|
source-kind: execution-plan
|
|
|
|
- id: F-WORKFLOW-VENTURE
|
|
category: workflow
|
|
key: venture-bootstrap
|
|
value:
|
|
entry: /ceo-intake --plan venture-bootstrap
|
|
subsequent-commands: [/venture-validate, /company-bootstrap]
|
|
founder-input: org-os/01-company/founder-context.yaml
|
|
required-founder-status: filled
|
|
output: org-os/01-company/company-context.yaml
|
|
output-status: provisional
|
|
terminal-stage: bootstrap-complete
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: org-os/06-agent-work/workflow-contracts.yaml
|
|
line-start: 121
|
|
line-end: 130
|
|
source-kind: workflow-contract
|
|
- path: org-os/06-agent-work/execution-plans.yaml
|
|
line-start: 38
|
|
line-end: 47
|
|
source-kind: execution-plan
|
|
- path: org-os/01-company/founder-context.yaml
|
|
line-start: 1
|
|
line-end: 5
|
|
source-kind: company-context-input
|
|
|
|
- id: F-WORKFLOW-SPECIALIZED
|
|
category: workflow
|
|
key: specialized-entrypoints
|
|
value:
|
|
/run-cascade: 전체 cascade를 state_engine으로 순회하고 사람 결정 게이트에서 중단·재개하는 상위 드라이버
|
|
/design-direction: 제품 cascade의 child workflow로 발산·선택·prototype·비평을 거쳐 approved-direction을 산출
|
|
/design-system: 기존 스택을 조사해 reuse/adapt/create를 선택하고 코드 UI와 렌더 미리보기를 검증
|
|
/consult: 비즈니스 자문 또는 문서 자문 family를 선택해 문서와 덱을 산출
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: .claude/commands/run-cascade.md
|
|
line-start: 1
|
|
line-end: 24
|
|
source-kind: command-definition
|
|
- path: .claude/commands/design-direction.md
|
|
line-start: 1
|
|
line-end: 25
|
|
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: 12
|
|
source-kind: command-definition
|
|
|
|
- id: F-ARCH-DIRECTORIES
|
|
category: architecture
|
|
key: repository-directory-responsibilities
|
|
value:
|
|
org-os/00-role-registry: 역할·family·lens·상태 전이·권한 정책의 원천
|
|
org-os/06-agent-work: workflow·artifact·협업·실행 계약
|
|
.claude/commands: 사용자 workflow 진입점
|
|
.claude/agents: registry에서 생성되는 실행 역할·resolver·router 카드
|
|
.claude/skills: 역할별 작업 방법
|
|
.claude/hooks: 상태 엔진·검증·증거 원장·렌더러·생성기
|
|
.claude/schemas: report와 typed artifact 스키마
|
|
.claude/tests: 하네스 강제기와 workflow 계약 테스트
|
|
benchmark: golden task와 plain-vs-harness 비교 자료
|
|
project-workspace: completion record·evidence·report·state·UI 산출물
|
|
assertion-type: derived
|
|
confidence: high
|
|
evidence:
|
|
- path: CLAUDE.md
|
|
line-start: 5
|
|
line-end: 43
|
|
source-kind: architecture-documentation
|
|
- path: .claude/hooks/_workspace.py
|
|
line-start: 1
|
|
line-end: 15
|
|
source-kind: runtime-path-implementation
|
|
|
|
- id: F-ARCH-ROLE-MODEL
|
|
category: architecture
|
|
key: role-family-lens-model
|
|
value:
|
|
reference-ai-roles: 75
|
|
final-human-owner: HUMAN-001
|
|
routing-families: 28
|
|
evaluation-lenses: 12
|
|
generated-agent-cards-contract: 101
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: org-os/00-role-registry/roles.yaml
|
|
line-start: 1
|
|
line-end: 20
|
|
source-kind: role-registry
|
|
- path: org-os/00-role-registry/capability-families.yaml
|
|
line-start: 1
|
|
line-end: 13
|
|
source-kind: family-registry
|
|
- path: org-os/00-role-registry/lens-registry.yaml
|
|
line-start: 1
|
|
line-end: 25
|
|
source-kind: lens-registry
|
|
- path: .claude/hooks/gen_agents.py
|
|
line-start: 814
|
|
line-end: 836
|
|
source-kind: generator-contract
|
|
|
|
- id: F-ARCH-COLLABORATION
|
|
category: architecture
|
|
key: fan-out-collapse-policy
|
|
value:
|
|
family-defaults: {fan-out: 21, collapse: 6, coordination-only: 1}
|
|
fan-out: 판단·설계·분석 family의 멤버를 격리 실행하고 상위가 원본 보고서를 읽어 종합
|
|
collapse: 코드·실행 family를 하나의 concrete worker 실행으로 축소
|
|
wave-max-concurrency: 5
|
|
heavy-tier-min-independent-verifiers: 3
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: org-os/00-role-registry/capability-families.yaml
|
|
line-start: 14
|
|
line-end: 34
|
|
source-kind: family-registry
|
|
- path: org-os/06-agent-work/execution-policy.yaml
|
|
line-start: 10
|
|
line-end: 57
|
|
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
|
|
artifact-identity: immutable artifact id plus SHA-256 snapshot
|
|
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/state_engine.py
|
|
line-start: 32
|
|
line-end: 38
|
|
source-kind: runtime-implementation
|
|
- path: .claude/hooks/artifact_contract.py
|
|
line-start: 2
|
|
line-end: 39
|
|
source-kind: artifact-validation-implementation
|
|
- path: .claude/hooks/compile_artifact_registry.py
|
|
line-start: 2
|
|
line-end: 7
|
|
source-kind: artifact-registry-compiler
|
|
|
|
- id: F-ARCH-HOOKS
|
|
category: architecture
|
|
key: claude-code-hook-wiring
|
|
value:
|
|
PreToolUse: guard_tools.py
|
|
PostToolUse: evidence_ledger.py
|
|
SubagentStart: subagent_register.py
|
|
SubagentStop: stop_validate.py
|
|
Stop: stop_validate.py --main
|
|
limitation: 강제 동작은 Claude Code가 프로젝트의 .claude/settings.json을 로드할 때 적용된다.
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: .claude/settings.json
|
|
line-start: 3
|
|
line-end: 66
|
|
source-kind: claude-code-configuration
|
|
- path: CLAUDE.md
|
|
line-start: 58
|
|
line-end: 68
|
|
source-kind: runtime-limit-documentation
|
|
|
|
- id: F-ARTIFACT-LAYOUT
|
|
category: artifacts
|
|
key: workspace-resolution-and-layout
|
|
value:
|
|
resolution-order: [ORGOS_WORKSPACE environment variable, .orgos-workspace pointer]
|
|
unresolved-behavior: strict operational hooks fail closed with exit 2
|
|
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: 1
|
|
line-end: 15
|
|
source-kind: runtime-path-implementation
|
|
- path: .claude/hooks/_workspace.py
|
|
line-start: 44
|
|
line-end: 94
|
|
source-kind: runtime-path-implementation
|
|
- path: .claude/hooks/_workspace.py
|
|
line-start: 97
|
|
line-end: 118
|
|
source-kind: runtime-path-implementation
|
|
|
|
- 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를 덮어쓰지 않는다.
|
|
acceptance-history: 별도 append-only acceptance event로 관리
|
|
receipt-ledger: <workspace>/evidence/ledger.jsonl
|
|
receipt-records: [executed command and exit code, written artifact path and SHA-256]
|
|
receipt-hook-limitation: workspace를 해석하지 못하면 계측을 생략하고 도구 실행 자체는 막지 않는다.
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: .claude/hooks/new_report.py
|
|
line-start: 2
|
|
line-end: 48
|
|
source-kind: report-path-implementation
|
|
- path: .claude/hooks/evidence_ledger.py
|
|
line-start: 2
|
|
line-end: 22
|
|
source-kind: evidence-ledger-implementation
|
|
|
|
- id: F-PREREQ-TOOLS
|
|
category: prerequisites
|
|
key: runtime-tool-versions
|
|
value:
|
|
required:
|
|
python: {minimum: '3.10', tested: '3.12.3'}
|
|
PyYAML: {minimum: '6.0', tested: '6.0.1', pinned: '6.0.1'}
|
|
recommended:
|
|
jsonschema: {minimum: '4.0', tested: '4.10.3', pinned: '4.10.3'}
|
|
node: {minimum: '18.0', tested: '24.14.0'}
|
|
d2: {minimum: '0.6', tested: '0.7.1'}
|
|
optional:
|
|
marp: {minimum: '3.0', fallback: HTML deck}
|
|
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-UI
|
|
category: prerequisites
|
|
key: design-system-preview-tools
|
|
value:
|
|
required-for-full-render-check: [detected package manager and project build command, Google Chrome or Chromium-compatible executable]
|
|
checked-properties: [non-empty mounted DOM, generated JavaScript bundle, CSS contrast, keyboard focus visibility, responsive viewport screenshots]
|
|
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: 79
|
|
source-kind: UI-verification-implementation
|
|
- path: .claude/hooks/preview_ui.py
|
|
line-start: 541
|
|
line-end: 541
|
|
source-kind: UI-verification-limitation
|
|
|
|
- id: F-VERIFY-SUITE
|
|
category: verification
|
|
key: full-test-runner
|
|
value:
|
|
entrypoint: .claude/tests/run_all.py
|
|
preflight: [compile_artifact_registry.py --check, doctor.py, lint_refs.py]
|
|
test-discovery: .claude/tests/test_*.py
|
|
execution: suites run sequentially with a per-suite timeout
|
|
failure-contract: any failed or timed-out suite produces exit 1
|
|
no-preflight-option: --no-preflight
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: .claude/tests/run_all.py
|
|
line-start: 2
|
|
line-end: 11
|
|
source-kind: test-runner
|
|
- path: .claude/tests/run_all.py
|
|
line-start: 23
|
|
line-end: 30
|
|
source-kind: test-runner
|
|
- path: .claude/tests/run_all.py
|
|
line-start: 53
|
|
line-end: 80
|
|
source-kind: test-runner
|
|
|
|
- id: F-CI-WORKFLOW
|
|
category: verification
|
|
key: github-actions-ci
|
|
value:
|
|
triggers: {push: [main, fix/**, feat/**], pull-request: [main]}
|
|
environment: {python: '3.12', node: '20', workspace: _sandbox}
|
|
steps: [install pinned Python dependencies, attempt D2 0.7.1 installation, run doctor, run lint_refs, run gen_agents --check, run all tests with --no-preflight]
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: .github/workflows/ci.yml
|
|
line-start: 1
|
|
line-end: 46
|
|
source-kind: CI-workflow
|
|
|
|
- id: F-MATURITY-CONTEXT
|
|
category: limitation
|
|
key: current-company-context-state
|
|
value:
|
|
company-context-status: template
|
|
founder-context-status: template
|
|
validation-stage: pre-traction
|
|
implication: 회사 수립 경로는 사람이 founder context를 채우고 venture-bootstrap을 거쳐야 한다.
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: org-os/01-company/company-context.yaml
|
|
line-start: 13
|
|
line-end: 51
|
|
source-kind: company-context
|
|
- path: org-os/01-company/founder-context.yaml
|
|
line-start: 1
|
|
line-end: 17
|
|
source-kind: company-context-input
|
|
|
|
- id: F-MATURITY-BENCHMARK
|
|
category: limitation
|
|
key: benchmark-evidence-status
|
|
value:
|
|
golden-tasks: 13
|
|
executed-samples: {plain: 2, harness: 2}
|
|
measured-dimensions: 3
|
|
unexecuted-dimensions: 8
|
|
observed-result:
|
|
first-pass-acceptance: tie
|
|
tests-pass-rate: tie
|
|
unnecessary-change-lines: tie
|
|
weighted-composite-delta: 0
|
|
conclusion: 현재 표본은 하네스의 품질 우위를 입증하지 않는다.
|
|
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
|
|
|
|
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: 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: [Repository Evidence Analyst가 실행하지 않음.]
|
|
|
|
- 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 포인터가 필요함., Repository Evidence Analyst가 실행하지 않음.]
|
|
|
|
- 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: [Repository Evidence Analyst가 실행하지 않음.]
|
|
|
|
- id: CMD-5
|
|
command: python3 .claude/hooks/compile_artifact_registry.py --check
|
|
cwd: .
|
|
source: {path: .claude/tests/run_all.py, line-start: 57, line-end: 60, source-kind: test-runner-preflight}
|
|
verification:
|
|
status: discovered
|
|
method: static extraction
|
|
level: repository-observed-invocation
|
|
limitations: [Repository Evidence Analyst가 실행하지 않음.]
|
|
|
|
- id: CMD-6
|
|
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: [Repository Evidence Analyst가 실행하지 않음.]
|
|
|
|
- id: CMD-7
|
|
command: python3 .claude/hooks/benchmark.py list
|
|
cwd: .
|
|
source: {path: .claude/hooks/benchmark.py, line-start: 11, line-end: 15, source-kind: benchmark-implementation}
|
|
verification:
|
|
status: discovered
|
|
method: static extraction
|
|
level: repository-observed-invocation
|
|
limitations: [Repository Evidence Analyst가 실행하지 않음.]
|
|
|
|
- id: CMD-8
|
|
command: python3 .claude/hooks/benchmark.py compare
|
|
cwd: .
|
|
source: {path: .claude/hooks/benchmark.py, line-start: 16, line-end: 19, source-kind: benchmark-implementation}
|
|
verification:
|
|
status: discovered
|
|
method: static extraction
|
|
level: repository-observed-invocation
|
|
limitations: [기존 benchmark run ledger를 비교하며 새 표본을 생성하지 않음., Repository Evidence Analyst가 실행하지 않음.]
|
|
|
|
- id: CMD-9
|
|
command: python3 .claude/hooks/benchmark.py run --task GT-01 --arm plain --execute
|
|
cwd: .
|
|
source: {path: .claude/hooks/benchmark.py, line-start: 11, line-end: 15, source-kind: benchmark-implementation}
|
|
verification:
|
|
status: discovered
|
|
method: static extraction
|
|
level: repository-observed-invocation
|
|
limitations: [Claude CLI와 외부 실행 예산이 필요할 수 있음., Repository Evidence Analyst가 실행하지 않음.]
|