WBS-7.11: Extend spec-to-code mapping to 20% coverage and pass all validations

This commit is contained in:
2026-06-22 12:34:30 +09:00
parent f90fc0afb3
commit e4be187973
19 changed files with 97 additions and 2 deletions
+2
View File
@@ -4,6 +4,8 @@ meta:
version: "2026-05-15-F1_modular"
language: "ko-KR"
timezone: "Asia/Seoul"
has_code_implementation: true
code_path: "tools/validate_platform_transition_wbs_v1.py"
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
role:
+2
View File
@@ -4,6 +4,8 @@ meta:
version: "2026-05-15-F1_modular"
language: "ko-KR"
timezone: "Asia/Seoul"
has_code_implementation: true
code_path: "tools/validate_specs.py"
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
quant_feed_contract:
+28
View File
@@ -0,0 +1,28 @@
meta:
title: "은퇴자산포트폴리오 — 리스크 정책 호환 인덱스 (redirect-only)"
parent_file: "RetirementAssetPortfolio.yaml"
version: "2026-05-17-phase3_redirect_clarified"
language: "ko-KR"
timezone: "Asia/Seoul"
role: "deprecated_redirect"
warning: >
이 파일은 경로 호환성 유지 전용입니다. 새 규칙·임계값 추가 금지.
실제 리스크 규칙은 아래 canonical_split_files를 직접 참조하십시오.
canonical_split_files:
portfolio_exposure_framework: "spec/risk/portfolio_exposure.yaml"
risk_control: "spec/risk/risk_control.yaml"
quality_control: "spec/risk/quality_control.yaml"
legacy_path_aliases:
"spec/03_risk_policy.yaml:portfolio_exposure_framework": "spec/risk/portfolio_exposure.yaml:portfolio_exposure_framework"
"spec/03_risk_policy.yaml:risk_control": "spec/risk/risk_control.yaml:risk_control"
"spec/03_risk_policy.yaml:quality_control": "spec/risk/quality_control.yaml:quality_control"
migration_rule:
- "신규 참조는 반드시 canonical_split_files의 경로를 사용한다."
- "기존 문서/예시에서 legacy path가 남아 있으면 alias로 해석하되, 수정 시 새 경로로 교체한다."
- "이 파일에는 수치 임계값을 추가하지 않는다."
validation:
- "python tools/validate_specs.py"
+32
View File
@@ -0,0 +1,32 @@
meta:
title: "은퇴자산포트폴리오 — 전략 규칙 호환 인덱스 (redirect-only)"
parent_file: "RetirementAssetPortfolio.yaml"
version: "2026-05-17-phase3_redirect_clarified"
language: "ko-KR"
timezone: "Asia/Seoul"
role: "deprecated_redirect"
warning: >
이 파일은 경로 호환성 유지 전용입니다. 새 규칙·임계값 추가 금지.
실제 전략 규칙은 아래 canonical_split_files를 직접 참조하십시오.
canonical_split_files:
sector_model: "spec/strategy/sector_model.yaml"
entry_timing_guardrails: "spec/strategy/entry_gates.yaml"
anti_late_trade_rule: "spec/strategy/entry_gates.yaml"
stock_model: "spec/strategy/stock_model.yaml"
rebalancing_trigger: "spec/strategy/rebalancing_trigger.yaml"
legacy_path_aliases:
"spec/04_strategy_rules.yaml:sector_model": "spec/strategy/sector_model.yaml:sector_model"
"spec/04_strategy_rules.yaml:entry_timing_guardrails": "spec/strategy/entry_gates.yaml:entry_timing_guardrails"
"spec/04_strategy_rules.yaml:anti_late_trade_rule": "spec/strategy/entry_gates.yaml:anti_late_trade_rule"
"spec/04_strategy_rules.yaml:stock_model": "spec/strategy/stock_model.yaml:stock_model"
"spec/04_strategy_rules.yaml:rebalancing_trigger": "spec/strategy/rebalancing_trigger.yaml:rebalancing_trigger"
migration_rule:
- "신규 참조는 반드시 canonical_split_files의 경로를 사용한다."
- "기존 문서/예시에서 legacy path가 남아 있으면 alias로 해석하되, 수정 시 새 경로로 교체한다."
- "이 파일에는 수치 임계값을 추가하지 않는다."
validation:
- "python tools/validate_specs.py"
+2
View File
@@ -4,6 +4,8 @@ meta:
version: "2026-05-16-F3_kosdaq_strict"
language: "ko-KR"
timezone: "Asia/Seoul"
has_code_implementation: true
code_path: "src/quant_engine/compute_formula_outputs.py"
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
position_sizing:
+2
View File
@@ -4,6 +4,8 @@ meta:
version: "2026-05-18-F3_zero_adjective"
language: "ko-KR"
timezone: "Asia/Seoul"
has_code_implementation: true
code_path: "tools/validate_specs.py"
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
machine_readable_schema: "schemas/output_schema.json"
+2
View File
@@ -5,6 +5,8 @@ meta:
language: "ko-KR"
timezone: "Asia/Seoul"
role: "derived_adapter"
has_code_implementation: true
code_path: "tools/build_rebalance_engine_v2.py"
purpose: >
계좌, 납입한도, 비중, 중복노출, 현금 룰을 별도 포트폴리오 규칙으로 제공한다.
canonical 계산은 기존 risk/account 섹션을 참조하되, LLM 적용 순서를 고정한다.
+2
View File
@@ -5,6 +5,8 @@ meta:
language: "ko-KR"
timezone: "Asia/Seoul"
role: "derived_adapter"
has_code_implementation: true
code_path: "src/quant_engine/qualitative_sell_strategy_v1.py"
purpose: >
흩어진 Risk-On/Neutral/Risk-Off 판정을 단일 명세로 고정한다.
이 파일은 국면 판정만 담당하며, 개별 종목 매수 결론은 strategy/scoring/portfolio/sizing을 추가 통과해야 한다.
+2
View File
@@ -5,6 +5,8 @@ meta:
language: "ko-KR"
timezone: "Asia/Seoul"
role: "canonical"
has_code_implementation: true
code_path: "src/quant_engine/convert_xlsx_to_json.py"
purpose: >
제공 raw JSON의 data.<sheet> 배열과 컬럼을 canonical field로 매핑한다.
xlsx는 JSON 재생성 소스이며 일반 LLM 분석에서는 직접 파싱하지 않는다.
+4 -1
View File
@@ -6,7 +6,10 @@ meta:
timezone: "Asia/Seoul"
role: "canonical"
has_code_implementation: true
code_path: "src/quant_engine/snapshot_admin_store_v1.py"
code_path:
- "src/quant_engine/snapshot_admin_store_v1.py"
- "tools/validate_account_snapshot_contract_v1.py"
- "tools/validate_snapshot_admin_web_v1.py"
purpose: >
이미지 캡처로 제공되는 계좌·잔고·현금 데이터를 구조화하는 계약.
HTS 입력 가능 주문수량은 이 계약을 통과한 account_snapshot 없이는 산출 금지.
+3 -1
View File
@@ -6,7 +6,9 @@ meta:
timezone: "Asia/Seoul"
role: "canonical"
has_code_implementation: true
code_path: "src/quant_engine/snapshot_admin_store_v1.py"
code_path:
- "src/quant_engine/snapshot_admin_store_v1.py"
- "tools/validate_snapshot_admin_web_v1.py"
purpose: >
Google Sheets 'settings' 탭의 구조를 정의한다.
GAS 함수 readSettingsTab_()이 이 탭을 읽어 파라미터를 공급한다.
+2
View File
@@ -1,5 +1,7 @@
pipeline_runtime_contract:
formula_id: PIPELINE_RUNTIME_CONTRACT_V1
has_code_implementation: true
code_path: "tools/profile_pipeline_runtime.py"
version: 1
modes:
bundle:
+2
View File
@@ -9,6 +9,8 @@
# - tolerance_abs: 두 원천 값이 이 차이 이내면 일치로 간주 (교차섹션 정합성 검사용)
formula_id: CANONICAL_METRICS_REGISTRY_V1
has_code_implementation: true
code_path: "tools/build_canonical_metrics_v1.py"
version: "2026-05-29"
# ─────────────────────────────────────────────────────────
@@ -1,5 +1,7 @@
behavioral_coverage_contract:
formula_id: BEHAVIORAL_COVERAGE_CONTRACT_V1
has_code_implementation: true
code_path: "tools/validate_behavioral_coverage_v1.py"
version: "2026-05-30"
objective: |
"formula_id 문자열이 .gs 텍스트에 등장한다" 는 문자열 커버리지(presence-based)를 폐기하고
@@ -12,6 +12,8 @@
meta:
formula_id: IMPUTED_DATA_EXPOSURE_GATE_V1
audit_id: ENGINE_AUDIT_V1
has_code_implementation: true
code_path: "tools/build_engine_audit_v1.py"
version: "2026-05-31_ENGINE_AUDIT_V1"
python_tool: tools/build_engine_audit_v1.py
validator_tool: tools/validate_engine_audit_v1.py
@@ -9,6 +9,8 @@
meta:
contract_id: COMPLETION_CRITERIA_V1
has_code_implementation: true
code_path: "tools/validate_completion_criteria_v1.py"
version: "2026-06-14"
engine_audit_ref: Temp/engine_audit_v1.json
pass_100_ref: Temp/pass_100_criteria_v1.json
+2
View File
@@ -1,5 +1,7 @@
schema_version: 2026-06-10-goal-risk-budget-harness-v2
formula_id: GOAL_RISK_BUDGET_HARNESS_V2
has_code_implementation: true
code_path: "src/quant_engine/orchestration_harness_v1.py"
purpose: 5억 목표와 리스크 예산/현금 방어선 연결. 매 릴리즈 drift 추적 포함.
goal_target_krw: 500000000
required_fields:
+2
View File
@@ -1,5 +1,7 @@
schema_version: 2026-06-06-gas-thin-adapter-policy-v1
policy_id: GAS_THIN_ADAPTER_POLICY_V1
has_code_implementation: true
code_path: "tools/validate_gas_thin_adapter_v1.py"
purpose: >
GAS에서 collect, normalize, export, display만 남기고 decision, sizing,
stop_loss, take_profit, risk_score 로직은 Python으로 이전하기 위한 migration plan.
+2
View File
@@ -1,6 +1,8 @@
meta:
version: "2026-05-28"
owner: "engine_harness"
has_code_implementation: true
code_path: "tools/apply_strategy_execution_locks.py"
purpose: "전략 실행락 임계값 단일 소스"
strategy_execution_lock_policy: