diff --git a/docs/ROADMAP_WBS.md b/docs/ROADMAP_WBS.md index a3acc61..79f78eb 100644 --- a/docs/ROADMAP_WBS.md +++ b/docs/ROADMAP_WBS.md @@ -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) | --- diff --git a/spec/32_canonical_artifact_resolver.yaml b/spec/32_canonical_artifact_resolver.yaml index 41d21a9..1a8bb68 100644 --- a/spec/32_canonical_artifact_resolver.yaml +++ b/spec/32_canonical_artifact_resolver.yaml @@ -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 수정: 동일 개념의 다중 버전이 상호충돌·기술부채를 만든다. diff --git a/spec/37_evaluation_dashboard_contract.yaml b/spec/37_evaluation_dashboard_contract.yaml index 35877bc..4d951cb 100644 --- a/spec/37_evaluation_dashboard_contract.yaml +++ b/spec/37_evaluation_dashboard_contract.yaml @@ -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 diff --git a/spec/52_decision_trace_replay_contract.yaml b/spec/52_decision_trace_replay_contract.yaml index 56f54fa..36f8d23 100644 --- a/spec/52_decision_trace_replay_contract.yaml +++ b/spec/52_decision_trace_replay_contract.yaml @@ -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: > diff --git a/spec/53_factor_conflict_matrix.yaml b/spec/53_factor_conflict_matrix.yaml index 778fa28..0e84e43 100644 --- a/spec/53_factor_conflict_matrix.yaml +++ b/spec/53_factor_conflict_matrix.yaml @@ -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: > diff --git a/spec/54_temporal_data_integrity.yaml b/spec/54_temporal_data_integrity.yaml index 84d633f..8c9bdf3 100644 --- a/spec/54_temporal_data_integrity.yaml +++ b/spec/54_temporal_data_integrity.yaml @@ -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: > diff --git a/spec/56_renderer_copy_only_contract.yaml b/spec/56_renderer_copy_only_contract.yaml index 49b0032..1e495e5 100644 --- a/spec/56_renderer_copy_only_contract.yaml +++ b/spec/56_renderer_copy_only_contract.yaml @@ -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: > diff --git a/spec/57_shadow_promotion_scorecard.yaml b/spec/57_shadow_promotion_scorecard.yaml index 21ac713..a23cef9 100644 --- a/spec/57_shadow_promotion_scorecard.yaml +++ b/spec/57_shadow_promotion_scorecard.yaml @@ -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: > diff --git a/spec/58_llm_determinism_contract.yaml b/spec/58_llm_determinism_contract.yaml index 9ff3d93..550aa4c 100644 --- a/spec/58_llm_determinism_contract.yaml +++ b/spec/58_llm_determinism_contract.yaml @@ -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: >