WBS-7.11: Extend spec-to-code mapping to 20% coverage and pass all validations
This commit is contained in:
@@ -4,6 +4,8 @@ meta:
|
|||||||
version: "2026-05-15-F1_modular"
|
version: "2026-05-15-F1_modular"
|
||||||
language: "ko-KR"
|
language: "ko-KR"
|
||||||
timezone: "Asia/Seoul"
|
timezone: "Asia/Seoul"
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "tools/validate_platform_transition_wbs_v1.py"
|
||||||
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
|
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
|
||||||
|
|
||||||
role:
|
role:
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ meta:
|
|||||||
version: "2026-05-15-F1_modular"
|
version: "2026-05-15-F1_modular"
|
||||||
language: "ko-KR"
|
language: "ko-KR"
|
||||||
timezone: "Asia/Seoul"
|
timezone: "Asia/Seoul"
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "tools/validate_specs.py"
|
||||||
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
|
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
|
||||||
|
|
||||||
quant_feed_contract:
|
quant_feed_contract:
|
||||||
|
|||||||
@@ -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"
|
||||||
@@ -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"
|
||||||
@@ -4,6 +4,8 @@ meta:
|
|||||||
version: "2026-05-16-F3_kosdaq_strict"
|
version: "2026-05-16-F3_kosdaq_strict"
|
||||||
language: "ko-KR"
|
language: "ko-KR"
|
||||||
timezone: "Asia/Seoul"
|
timezone: "Asia/Seoul"
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "src/quant_engine/compute_formula_outputs.py"
|
||||||
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
|
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
|
||||||
|
|
||||||
position_sizing:
|
position_sizing:
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ meta:
|
|||||||
version: "2026-05-18-F3_zero_adjective"
|
version: "2026-05-18-F3_zero_adjective"
|
||||||
language: "ko-KR"
|
language: "ko-KR"
|
||||||
timezone: "Asia/Seoul"
|
timezone: "Asia/Seoul"
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "tools/validate_specs.py"
|
||||||
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
|
purpose: "메인 manifest에서 로드되는 구조화 규칙 명세 파일."
|
||||||
machine_readable_schema: "schemas/output_schema.json"
|
machine_readable_schema: "schemas/output_schema.json"
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ meta:
|
|||||||
language: "ko-KR"
|
language: "ko-KR"
|
||||||
timezone: "Asia/Seoul"
|
timezone: "Asia/Seoul"
|
||||||
role: "derived_adapter"
|
role: "derived_adapter"
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "tools/build_rebalance_engine_v2.py"
|
||||||
purpose: >
|
purpose: >
|
||||||
계좌, 납입한도, 비중, 중복노출, 현금 룰을 별도 포트폴리오 규칙으로 제공한다.
|
계좌, 납입한도, 비중, 중복노출, 현금 룰을 별도 포트폴리오 규칙으로 제공한다.
|
||||||
canonical 계산은 기존 risk/account 섹션을 참조하되, LLM 적용 순서를 고정한다.
|
canonical 계산은 기존 risk/account 섹션을 참조하되, LLM 적용 순서를 고정한다.
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ meta:
|
|||||||
language: "ko-KR"
|
language: "ko-KR"
|
||||||
timezone: "Asia/Seoul"
|
timezone: "Asia/Seoul"
|
||||||
role: "derived_adapter"
|
role: "derived_adapter"
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "src/quant_engine/qualitative_sell_strategy_v1.py"
|
||||||
purpose: >
|
purpose: >
|
||||||
흩어진 Risk-On/Neutral/Risk-Off 판정을 단일 명세로 고정한다.
|
흩어진 Risk-On/Neutral/Risk-Off 판정을 단일 명세로 고정한다.
|
||||||
이 파일은 국면 판정만 담당하며, 개별 종목 매수 결론은 strategy/scoring/portfolio/sizing을 추가 통과해야 한다.
|
이 파일은 국면 판정만 담당하며, 개별 종목 매수 결론은 strategy/scoring/portfolio/sizing을 추가 통과해야 한다.
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ meta:
|
|||||||
language: "ko-KR"
|
language: "ko-KR"
|
||||||
timezone: "Asia/Seoul"
|
timezone: "Asia/Seoul"
|
||||||
role: "canonical"
|
role: "canonical"
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "src/quant_engine/convert_xlsx_to_json.py"
|
||||||
purpose: >
|
purpose: >
|
||||||
제공 raw JSON의 data.<sheet> 배열과 컬럼을 canonical field로 매핑한다.
|
제공 raw JSON의 data.<sheet> 배열과 컬럼을 canonical field로 매핑한다.
|
||||||
xlsx는 JSON 재생성 소스이며 일반 LLM 분석에서는 직접 파싱하지 않는다.
|
xlsx는 JSON 재생성 소스이며 일반 LLM 분석에서는 직접 파싱하지 않는다.
|
||||||
|
|||||||
@@ -6,7 +6,10 @@ meta:
|
|||||||
timezone: "Asia/Seoul"
|
timezone: "Asia/Seoul"
|
||||||
role: "canonical"
|
role: "canonical"
|
||||||
has_code_implementation: true
|
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: >
|
purpose: >
|
||||||
이미지 캡처로 제공되는 계좌·잔고·현금 데이터를 구조화하는 계약.
|
이미지 캡처로 제공되는 계좌·잔고·현금 데이터를 구조화하는 계약.
|
||||||
HTS 입력 가능 주문수량은 이 계약을 통과한 account_snapshot 없이는 산출 금지.
|
HTS 입력 가능 주문수량은 이 계약을 통과한 account_snapshot 없이는 산출 금지.
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ meta:
|
|||||||
timezone: "Asia/Seoul"
|
timezone: "Asia/Seoul"
|
||||||
role: "canonical"
|
role: "canonical"
|
||||||
has_code_implementation: true
|
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: >
|
purpose: >
|
||||||
Google Sheets 'settings' 탭의 구조를 정의한다.
|
Google Sheets 'settings' 탭의 구조를 정의한다.
|
||||||
GAS 함수 readSettingsTab_()이 이 탭을 읽어 파라미터를 공급한다.
|
GAS 함수 readSettingsTab_()이 이 탭을 읽어 파라미터를 공급한다.
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
pipeline_runtime_contract:
|
pipeline_runtime_contract:
|
||||||
formula_id: PIPELINE_RUNTIME_CONTRACT_V1
|
formula_id: PIPELINE_RUNTIME_CONTRACT_V1
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "tools/profile_pipeline_runtime.py"
|
||||||
version: 1
|
version: 1
|
||||||
modes:
|
modes:
|
||||||
bundle:
|
bundle:
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
# - tolerance_abs: 두 원천 값이 이 차이 이내면 일치로 간주 (교차섹션 정합성 검사용)
|
# - tolerance_abs: 두 원천 값이 이 차이 이내면 일치로 간주 (교차섹션 정합성 검사용)
|
||||||
|
|
||||||
formula_id: CANONICAL_METRICS_REGISTRY_V1
|
formula_id: CANONICAL_METRICS_REGISTRY_V1
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "tools/build_canonical_metrics_v1.py"
|
||||||
version: "2026-05-29"
|
version: "2026-05-29"
|
||||||
|
|
||||||
# ─────────────────────────────────────────────────────────
|
# ─────────────────────────────────────────────────────────
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
behavioral_coverage_contract:
|
behavioral_coverage_contract:
|
||||||
formula_id: BEHAVIORAL_COVERAGE_CONTRACT_V1
|
formula_id: BEHAVIORAL_COVERAGE_CONTRACT_V1
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "tools/validate_behavioral_coverage_v1.py"
|
||||||
version: "2026-05-30"
|
version: "2026-05-30"
|
||||||
objective: |
|
objective: |
|
||||||
"formula_id 문자열이 .gs 텍스트에 등장한다" 는 문자열 커버리지(presence-based)를 폐기하고
|
"formula_id 문자열이 .gs 텍스트에 등장한다" 는 문자열 커버리지(presence-based)를 폐기하고
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
meta:
|
meta:
|
||||||
formula_id: IMPUTED_DATA_EXPOSURE_GATE_V1
|
formula_id: IMPUTED_DATA_EXPOSURE_GATE_V1
|
||||||
audit_id: ENGINE_AUDIT_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"
|
version: "2026-05-31_ENGINE_AUDIT_V1"
|
||||||
python_tool: tools/build_engine_audit_v1.py
|
python_tool: tools/build_engine_audit_v1.py
|
||||||
validator_tool: tools/validate_engine_audit_v1.py
|
validator_tool: tools/validate_engine_audit_v1.py
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
meta:
|
meta:
|
||||||
contract_id: COMPLETION_CRITERIA_V1
|
contract_id: COMPLETION_CRITERIA_V1
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "tools/validate_completion_criteria_v1.py"
|
||||||
version: "2026-06-14"
|
version: "2026-06-14"
|
||||||
engine_audit_ref: Temp/engine_audit_v1.json
|
engine_audit_ref: Temp/engine_audit_v1.json
|
||||||
pass_100_ref: Temp/pass_100_criteria_v1.json
|
pass_100_ref: Temp/pass_100_criteria_v1.json
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
schema_version: 2026-06-10-goal-risk-budget-harness-v2
|
schema_version: 2026-06-10-goal-risk-budget-harness-v2
|
||||||
formula_id: 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 추적 포함.
|
purpose: 5억 목표와 리스크 예산/현금 방어선 연결. 매 릴리즈 drift 추적 포함.
|
||||||
goal_target_krw: 500000000
|
goal_target_krw: 500000000
|
||||||
required_fields:
|
required_fields:
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
schema_version: 2026-06-06-gas-thin-adapter-policy-v1
|
schema_version: 2026-06-06-gas-thin-adapter-policy-v1
|
||||||
policy_id: 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: >
|
purpose: >
|
||||||
GAS에서 collect, normalize, export, display만 남기고 decision, sizing,
|
GAS에서 collect, normalize, export, display만 남기고 decision, sizing,
|
||||||
stop_loss, take_profit, risk_score 로직은 Python으로 이전하기 위한 migration plan.
|
stop_loss, take_profit, risk_score 로직은 Python으로 이전하기 위한 migration plan.
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
meta:
|
meta:
|
||||||
version: "2026-05-28"
|
version: "2026-05-28"
|
||||||
owner: "engine_harness"
|
owner: "engine_harness"
|
||||||
|
has_code_implementation: true
|
||||||
|
code_path: "tools/apply_strategy_execution_locks.py"
|
||||||
purpose: "전략 실행락 임계값 단일 소스"
|
purpose: "전략 실행락 임계값 단일 소스"
|
||||||
|
|
||||||
strategy_execution_lock_policy:
|
strategy_execution_lock_policy:
|
||||||
|
|||||||
Reference in New Issue
Block a user