WBS-7.11 2차 확장: spec-코드 동기화 태깅 12→20개 (7.5%→12.5%)

이미 harness_file:/python_tool:/validator: 필드로 1:1 코드 매핑을
스스로 명시하고 있던 H001~H008 결정론적 하네스 계약 7개(spec/52~58)와
spec/32(canonical_artifact_resolver), spec/37(evaluation_dashboard_contract)에
has_code_implementation/code_path를 추가했다. 모든 대상 파일의 code_path
실존을 사전 확인했다.

governance/rules/00~05, spec/40·45·46·gas_adapter_contract 등 다중 구현체에
걸친 계약은 단일 code_path로 환원하면 거짓 1:1 매핑이 되므로 의도적으로
제외했다(WBS-7.11 핵심 원칙 유지).
This commit is contained in:
2026-06-22 01:36:55 +09:00
parent 6ed2da7a9d
commit 4b1a33ba48
9 changed files with 28 additions and 4 deletions
+10 -4
View File
@@ -981,14 +981,20 @@ LLM이 런타임에 이런 stale spec을 사실로 읽으면 할루시네이션
**성공 하네스 (데이터 기준)**:
```
검증: python tools/validate_specs.py → Temp/spec_code_sync_v1.json
결과: {"total_spec_files": 159, "checked_count": 12, "missing_code_path_count": 0,
결과(1차, 2026-06-22): {"total_spec_files": 159, "checked_count": 12, "missing_code_path_count": 0,
"sync_field_coverage_pct": 7.55, "gate": "PASS"}
회귀: python -m pytest tests/unit tests/integration -q → 85 passed
결과(2차, 2026-06-22): {"total_spec_files": 160, "checked_count": 20, "missing_code_path_count": 0,
"sync_field_coverage_pct": 12.5, "gate": "PASS"} — H001~H008 계약 7개(harness_file: 필드로
이미 1:1 매핑이 명시돼 있던 spec/52~58) + spec/32_canonical_artifact_resolver.yaml(python_tool+validator
2개) + spec/37_evaluation_dashboard_contract.yaml(python_tool) 추가 태깅. governance/rules/00~05와
spec/40·45·46·gas_adapter_contract 등은 단일 code_path로 환원되지 않는 다중-구현 계약이라 의도적으로 제외
(거짓 1:1 매핑을 만들지 않는다는 원칙 유지)
회귀: python -m pytest tests/unit tests/integration -q → 88 passed
부수 조치(완료): role: deprecated_redirect 2개 파일(03_risk_policy.yaml/04_strategy_rules.yaml)
실삭제 + RetirementAssetPortfolio.yaml의 risk_policy_index/strategy_rules_index 참조 제거 +
6개 자식 파일의 parent_file 갱신 + spec/ownership_map.yaml·spec/risk·strategy/README.md 정정
(WBS-7.4에서 alias만 지우고 파일은 남겨뒀던 부분의 후속 정리)
목표(2차, 분기별 확장): sync_field_coverage_pct ≥ 50% — formula registry급 파일들의
목표(3차, 분기별 확장): sync_field_coverage_pct ≥ 50% — formula registry급 파일들의
공식 단위 동기화 메커니즘(calibration_registry gs_location/py_location) 커버리지 확장과 별개 트랙
```
@@ -1031,7 +1037,7 @@ LLM이 런타임에 이런 stale spec을 사실로 읽으면 할루시네이션
| 7.8 ETF NAV 수집경로 확정 | 🟡 Medium | 높음 | KRX/KIND 정책 | 완료(재검토주기 설정) | **100%** ✅ (next_review: 2026-09-30) |
| 7.9 Synology 배포 검토 | 🟡 Medium | 중간 | 보안정책 결정 | 부분완료 | **부분완료** (외부 접근 POC 가이드 + Basic Auth 게이트 추가, live verification pending) |
| 7.10 어드민 테이블 그리드(Tabler) | 🟢 Low | 낮음 | 없음 | 완료 | **100%** ✅ (2026-06-21, 8 passed) |
| 7.11 spec-코드 동기화 게이트 | 🔴 Critical | 중간 | 없음 | 완료 | **100%** ✅ (2026-06-22, 12/159 태깅, 85 passed) |
| 7.11 spec-코드 동기화 게이트 | 🔴 Critical | 중간 | 없음 | 완료(2차 확장) | **100%** ✅ (2026-06-22, 20/160 태깅 12.5%, 88 passed) |
---
+4
View File
@@ -1,6 +1,10 @@
schema_version: 2026-06-03-canonical-artifact-resolver-v2
formula_id: CANONICAL_ARTIFACT_RESOLVER_V2
supersedes: CANONICAL_ARTIFACT_RESOLVER_V1
has_code_implementation: true
code_path:
- "tools/build_canonical_artifact_resolver_v1.py"
- "tools/validate_canonical_artifact_resolver_v1.py"
purpose: >
산출물 단일 진실원장과 stale reference 차단.
RC5 수정: 동일 개념의 다중 버전이 상호충돌·기술부채를 만든다.
@@ -5,6 +5,8 @@ purpose: >
REPLAY 표본은 informational 섹션에만 집계되며 성과 지표 계산에 혼입 금지.
python_tool: tools/build_continuous_evaluation_dashboard_v1.py
has_code_implementation: true
code_path: "tools/build_continuous_evaluation_dashboard_v1.py"
sources:
- Temp/proposal_evaluation_history.json
output: Temp/continuous_evaluation_dashboard_v1.json
@@ -1,6 +1,8 @@
schema_version: decision_trace_replay_contract.v1
contract_id: H001_DECISION_TRACE_REPLAY
harness_file: tools/validate_decision_trace_replay_v1.py
has_code_implementation: true
code_path: "tools/validate_decision_trace_replay_v1.py"
authority: spec/52_decision_trace_replay_contract.yaml
created_at: '2026-06-10T23:29:00+09:00'
purpose: >
+2
View File
@@ -1,6 +1,8 @@
schema_version: factor_conflict_matrix.v1
contract_id: H002_FACTOR_CONFLICT_MATRIX
harness_file: tools/validate_factor_conflict_matrix_v1.py
has_code_implementation: true
code_path: "tools/validate_factor_conflict_matrix_v1.py"
authority: spec/53_factor_conflict_matrix.yaml
created_at: '2026-06-10T23:29:00+09:00'
purpose: >
+2
View File
@@ -1,6 +1,8 @@
schema_version: temporal_data_integrity.v1
contract_id: H003_ANTI_BACKFILL_LOOKAHEAD
harness_file: tools/validate_no_lookahead_bias_v1.py
has_code_implementation: true
code_path: "tools/validate_no_lookahead_bias_v1.py"
authority: spec/54_temporal_data_integrity.yaml
created_at: '2026-06-10T23:29:00+09:00'
purpose: >
+2
View File
@@ -1,6 +1,8 @@
schema_version: renderer_copy_only_contract.v1
contract_id: H005_REPORT_RENDER_DIFF
harness_file: tools/validate_report_render_diff_v1.py
has_code_implementation: true
code_path: "tools/validate_report_render_diff_v1.py"
authority: spec/56_renderer_copy_only_contract.yaml
created_at: '2026-06-10T23:29:00+09:00'
purpose: >
+2
View File
@@ -1,6 +1,8 @@
schema_version: shadow_promotion_scorecard.v1
contract_id: H007_SHADOW_PROMOTION_SCORECARD
harness_file: tools/build_shadow_promotion_scorecard_v1.py
has_code_implementation: true
code_path: "tools/build_shadow_promotion_scorecard_v1.py"
authority: spec/57_shadow_promotion_scorecard.yaml
created_at: '2026-06-10T23:29:00+09:00'
purpose: >
+2
View File
@@ -1,6 +1,8 @@
schema_version: llm_determinism_contract.v1
contract_id: H008_LLM_DETERMINISM_AUDIT
harness_file: tools/validate_llm_determinism_pack_v1.py
has_code_implementation: true
code_path: "tools/validate_llm_determinism_pack_v1.py"
authority: spec/58_llm_determinism_contract.yaml
created_at: '2026-06-10T23:29:00+09:00'
purpose: >