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:
+10
-4
@@ -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) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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: >
|
||||
|
||||
@@ -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: >
|
||||
|
||||
@@ -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: >
|
||||
|
||||
@@ -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: >
|
||||
|
||||
@@ -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: >
|
||||
|
||||
@@ -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: >
|
||||
|
||||
Reference in New Issue
Block a user