364 lines
13 KiB
YAML
364 lines
13 KiB
YAML
schema-version: 1
|
|
repository-snapshot-hash: sha256:8ea3e3693ce644a2576f9a8670088a36e5964ac8edaca5b279f7281e44aa428b
|
|
project-name: readme-harness
|
|
languages: [Python]
|
|
frameworks: [jsonschema, PyYAML, pytest]
|
|
facts:
|
|
- id: F-PROJECT-001
|
|
category: purpose
|
|
key: harness-description
|
|
value: 저장소 사실과 사용자 요구를 바탕으로 GitHub README를 분석·설계·작성·검증하는 하네스
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: harness.yaml
|
|
line-start: 2
|
|
line-end: 13
|
|
source-kind: harness-configuration
|
|
- id: F-RUNTIME-001
|
|
category: prerequisite
|
|
key: python-version
|
|
value: Python >=3.12
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: pyproject.toml
|
|
line-start: 1
|
|
line-end: 5
|
|
source-kind: build-configuration
|
|
- id: F-DEPENDENCY-001
|
|
category: dependency
|
|
key: runtime-and-dev-dependencies
|
|
value: [jsonschema>=4.20, PyYAML>=6.0, pytest>=8.0]
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: pyproject.toml
|
|
line-start: 5
|
|
line-end: 8
|
|
source-kind: build-configuration
|
|
- id: F-MODE-001
|
|
category: capability
|
|
key: implemented-modes
|
|
value: [bootstrap, audit, refresh, section-update]
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: harness.yaml
|
|
line-start: 10
|
|
line-end: 13
|
|
source-kind: harness-configuration
|
|
- id: F-TOOL-001
|
|
category: compatibility
|
|
key: tool-boundary
|
|
value:
|
|
supported-tools: [codex, antigravity, claude]
|
|
deterministic-codex-drivers: implemented
|
|
cross-tool-equivalence: phase-4
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: harness.yaml
|
|
line-start: 8
|
|
line-end: 13
|
|
source-kind: harness-configuration
|
|
- path: harness.yaml
|
|
line-start: 99
|
|
line-end: 107
|
|
source-kind: capability-boundary
|
|
- id: F-STATE-001
|
|
category: workflow
|
|
key: bootstrap-gates
|
|
value:
|
|
states: [INPUT_CAPTURED, REPOSITORY_SNAPSHOTTED, FACTS_EXTRACTED, PROJECT_PROFILED, README_PLANNED, README_DRAFTED, VISUALS_PLANNED, STRUCTURALLY_VALIDATED, TECHNICALLY_VERIFIED, QUALITY_REVIEWED]
|
|
final-preparation: READY_FOR_APPLY
|
|
final-apply: APPLIED
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: src/readme_harness/state.py
|
|
line-start: 71
|
|
line-end: 83
|
|
source-kind: state-machine-code
|
|
- id: F-VISUAL-001
|
|
category: visual-contract
|
|
key: included-visual-completeness
|
|
value: 개요 include 섹션, visual plan 섹션, README visual id, 요청 모드에 맞는 생성 소스 또는 자산을 함께 검사
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: src/readme_harness/visuals.py
|
|
line-start: 77
|
|
line-end: 183
|
|
source-kind: validator-code
|
|
- id: F-DRIVER-001
|
|
category: workflow
|
|
key: bootstrap-driver-boundary
|
|
value:
|
|
init-run: runs/<repo-id>/<run-id>에 state.json과 run-manifest.json을 생성
|
|
bootstrap-driver: 준비된 authoring artifacts를 QUALITY_REVIEWED까지 검증하며 후보나 대상 README를 작성하지 않음
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: .agents/skills/requirement-driven-readme/scripts/init_run.py
|
|
line-start: 10
|
|
line-end: 37
|
|
source-kind: driver-code
|
|
- path: .agents/skills/requirement-driven-readme/scripts/run_bootstrap.py
|
|
line-start: 1
|
|
line-end: 7
|
|
source-kind: driver-code
|
|
- id: F-AUTHORING-001
|
|
category: usage
|
|
key: model-authoring-boundary
|
|
value: 독립형 종단 간 생성 CLI가 아니라 도구가 requirement-driven-readme 스킬을 로드하고 모델 역할이 작성 산출물을 준비한 뒤 결정론 드라이버가 검증하는 구조
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: AGENTS.md
|
|
line-start: 1
|
|
line-end: 14
|
|
source-kind: codex-entrypoint
|
|
- path: harness.yaml
|
|
line-start: 100
|
|
line-end: 109
|
|
source-kind: capability-boundary
|
|
- id: F-TERM-001
|
|
category: prose-contract
|
|
key: public-terminology
|
|
value: 인라인 코드 식별자를 repository-facts.yaml과 대조하고 내부 전용 용어 노출과 첫 사용 설명을 검사
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: src/readme_harness/prose.py
|
|
line-start: 120
|
|
line-end: 207
|
|
source-kind: validator-code
|
|
- path: src/readme_harness/prose.py
|
|
line-start: 286
|
|
line-end: 379
|
|
source-kind: validator-code
|
|
- id: F-CLASSIFY-001
|
|
category: classification
|
|
key: root-first-python-classification
|
|
value: 루트 선언을 우선하고 테스트·픽스처·예제·샘플·vendor를 주 분류 신호에서 제외하며 pyproject.toml을 CLI·서비스·라이브러리로 구분
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: src/readme_harness/scan.py
|
|
line-start: 14
|
|
line-end: 103
|
|
source-kind: scanner-code
|
|
- path: src/readme_harness/classify.py
|
|
line-start: 6
|
|
line-end: 29
|
|
source-kind: classifier-code
|
|
- id: F-REVIEW-001
|
|
category: quality-contract
|
|
key: hash-bound-review-evidence
|
|
value: 품질 근거의 artifact, section-id, line-start, line-end, content-hash를 실제 README와 대조하고 review.md를 YAML에서 렌더링
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: src/readme_harness/review.py
|
|
line-start: 18
|
|
line-end: 103
|
|
source-kind: review-validator-code
|
|
- id: F-AUDIT-001
|
|
category: audit-contract
|
|
key: validated-atomic-audit-completion
|
|
value: audit findings를 스키마 검증하고 산출물을 원자적으로 기록한 뒤 AUDIT_COMPLETED로 전이
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: .agents/skills/requirement-driven-readme/scripts/run_audit.py
|
|
line-start: 107
|
|
line-end: 134
|
|
source-kind: audit-driver-code
|
|
- id: F-APPLY-001
|
|
category: safety
|
|
key: explicit-apply-boundary
|
|
value:
|
|
prepared-artifacts: [README.generated.md, README.patch, apply-manifest.yaml]
|
|
checks: [reviewed-artifact-hashes, repository-freshness, generated-hash, target-before-hash, path-containment]
|
|
target-write: explicit apply_patch.py only
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: harness.yaml
|
|
line-start: 134
|
|
line-end: 141
|
|
source-kind: apply-policy
|
|
- path: .agents/skills/requirement-driven-readme/scripts/apply_patch.py
|
|
line-start: 22
|
|
line-end: 67
|
|
source-kind: apply-driver-code
|
|
- id: F-MERGE-001
|
|
category: safety
|
|
key: refresh-preservation
|
|
value: refresh는 protected와 unmarked 영역을 보존하고 서로 다른 managed 편집을 manual-required 충돌로 기록
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: src/readme_harness/merge.py
|
|
line-start: 7
|
|
line-end: 79
|
|
source-kind: merge-code
|
|
- id: F-LAYOUT-001
|
|
category: structure
|
|
key: primary-paths
|
|
value: [.agents, src/readme_harness, tests, docs/architecture.md, docs/visuals.md, docs/state-machine.md, runs]
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: harness.yaml
|
|
line-start: 125
|
|
line-end: 132
|
|
source-kind: harness-configuration
|
|
- path: docs/architecture.md
|
|
line-start: 1
|
|
line-end: 1
|
|
source-kind: documentation
|
|
- path: docs/visuals.md
|
|
line-start: 1
|
|
line-end: 1
|
|
source-kind: documentation
|
|
- path: docs/state-machine.md
|
|
line-start: 1
|
|
line-end: 1
|
|
source-kind: documentation
|
|
- id: F-ARTIFACT-001
|
|
category: artifact-contract
|
|
key: primary-authoring-artifacts
|
|
value: [README.md, readme-request.yaml, repository-facts.yaml, readme-brief.yaml, readme-outline.yaml, README.candidate.md, claim-map.yaml, visual-plan.yaml, prose-report.json, verification.json, review-findings.yaml, review.md, quality-manifest.yaml, audit-findings.yaml, audit-report.md, README.generated.md, README.patch, apply-manifest.yaml, runs/demo/first, runs/<repo-id>/<run-id>, requirement-driven-readme, bootstrap]
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: .agents/skills/requirement-driven-readme/scripts/run_bootstrap.py
|
|
line-start: 46
|
|
line-end: 56
|
|
source-kind: bootstrap-driver-code
|
|
- path: harness.yaml
|
|
line-start: 134
|
|
line-end: 141
|
|
source-kind: apply-policy
|
|
- id: F-SELF-README-001
|
|
category: readme-contract
|
|
key: own-readme-quality-tests
|
|
value: [library profile quality audit, 30-second reader order, python3 -m pytest -q, Mermaid, harness-flow]
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: tests/unit/test_own_readme_quality.py
|
|
line-start: 14
|
|
line-end: 38
|
|
source-kind: repository-owned-readme-test
|
|
- id: F-CI-001
|
|
category: testing
|
|
key: continuous-integration
|
|
value: GitHub Actions는 Python 3.12에서 개발 의존성을 설치하고 python -m pytest -q를 실행
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: .github/workflows/ci.yml
|
|
line-start: 1
|
|
line-end: 17
|
|
source-kind: ci-workflow
|
|
- id: F-USAGE-001
|
|
category: observability
|
|
key: adapter-supplied-model-usage
|
|
value: 어댑터가 제공한 단계별 입력·캐시 입력·출력 토큰과 컨텍스트 파일 기여를 run-manifest.json에 누적하며 미제공 값은 추정하지 않음
|
|
assertion-type: observed
|
|
confidence: high
|
|
evidence:
|
|
- path: src/readme_harness/usage.py
|
|
line-start: 11
|
|
line-end: 66
|
|
source-kind: usage-recorder-code
|
|
- path: docs/usage-metrics.md
|
|
line-start: 1
|
|
line-end: 29
|
|
source-kind: usage-documentation
|
|
- id: F-BENCH-001
|
|
category: limitation
|
|
key: quality-superiority-gate
|
|
value:
|
|
repository-types: 8
|
|
arms: [human-maintained, single-prompt, harness]
|
|
current-status: not-run
|
|
required-status: PASS
|
|
superiority-claims: prohibited-until-benchmark-pass
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: benchmarks/quality-benchmark.yaml
|
|
line-start: 1
|
|
line-end: 37
|
|
source-kind: benchmark-contract
|
|
- path: harness.yaml
|
|
line-start: 108
|
|
line-end: 114
|
|
source-kind: capability-boundary
|
|
- id: F-LIMIT-001
|
|
category: limitation
|
|
key: candidate-generation-boundary
|
|
value: 후보 작성은 LLM pipeline이며 결정론 코어가 아니고 도구 간 런타임 동등성은 phase-4 목표
|
|
assertion-type: declared
|
|
confidence: high
|
|
evidence:
|
|
- path: harness.yaml
|
|
line-start: 99
|
|
line-end: 107
|
|
source-kind: capability-boundary
|
|
commands:
|
|
- id: CMD-001
|
|
command: python3 -m pip install -e ".[dev]"
|
|
cwd: .
|
|
source:
|
|
path: pyproject.toml
|
|
verification:
|
|
status: discovered
|
|
method: pyproject dependencies and editable install syntax
|
|
- id: CMD-002
|
|
command: python3 -m pytest -q
|
|
cwd: .
|
|
source:
|
|
path: pyproject.toml
|
|
verification:
|
|
status: executed
|
|
method: pytest execution in current workspace
|
|
level: execution
|
|
limitations: [운영체제와 새 가상환경에서의 설치까지 증명하지는 않음]
|
|
- id: CMD-003
|
|
command: python3 .agents/skills/requirement-driven-readme/scripts/init_run.py --repo-id demo --run-id first --mode bootstrap --target-repository /path/to/repository --tool-adapter codex
|
|
cwd: .
|
|
source:
|
|
path: .agents/skills/requirement-driven-readme/scripts/init_run.py
|
|
verification:
|
|
status: static-verified
|
|
method: python script path exists
|
|
- id: CMD-004
|
|
command: python3 .agents/skills/requirement-driven-readme/scripts/run_bootstrap.py --run-dir runs/demo/first --repo /path/to/repository
|
|
cwd: .
|
|
source:
|
|
path: .agents/skills/requirement-driven-readme/scripts/run_bootstrap.py
|
|
verification:
|
|
status: static-verified
|
|
method: python script path exists
|
|
- id: CMD-005
|
|
command: python3 .agents/skills/requirement-driven-readme/scripts/generate_patch.py --run-dir runs/demo/first --repo /path/to/repository
|
|
cwd: .
|
|
source:
|
|
path: .agents/skills/requirement-driven-readme/scripts/generate_patch.py
|
|
verification:
|
|
status: static-verified
|
|
method: python script path exists
|
|
- id: CMD-006
|
|
command: python3 .agents/skills/requirement-driven-readme/scripts/apply_patch.py --run-dir runs/demo/first --repo /path/to/repository
|
|
cwd: .
|
|
source:
|
|
path: .agents/skills/requirement-driven-readme/scripts/apply_patch.py
|
|
verification:
|
|
status: static-verified
|
|
method: python script path exists
|