WBS-7.3/7.4/7.5/7.11: 거버넌스 문서 정합성 정리 + spec-코드 동기화 게이트
2026-06-21 비판적 리뷰에서 spec/governance YAML이 코드 상태와 어긋난 채로 방치되던 3개 구체적 사례를 발견하고 정정했다. 근본 원인(동기화를 보장하는 장치 없음)에 대응하는 신규 CI 게이트도 함께 추가한다. - spec/aliases.yaml: deprecated alias 17건 제거(활성 참조 0건 확인 후, 2026-06-30 데드라인 전). role: deprecated_redirect인 spec/03_risk_policy.yaml, spec/04_strategy_rules.yaml 2개만 실삭제 — spec/06_exit_policy.yaml은 role: compatibility_index(영구유지 설계)였음을 재확인해 보존 - governance/gas_logic_migration_ledger_v1.yaml: 존재하지 않는 파일을 canonical 구현으로 인용하던 오류 2건 발견·정정, parity 테스트 부재로 GAS 코드 삭제 보류(F12/F13/F14) - spec/13_formula_registry.yaml: OVERHANG_PRESSURE_V1의 "-500000" 절대값 폴백을 avg_volume_5d 비례식으로 교체(EXPERT_PRIOR 등록) - tools/validate_specs.py: validate_spec_code_sync() 신규 — has_code_implementation/ code_path 필드가 있는 spec만 검사(점진적 롤아웃, 기존 PASS 상태 비파괴), 12개 파일 1차 태깅
This commit is contained in:
+113
-1
@@ -1,6 +1,8 @@
|
||||
schema_version: release_dag.v3
|
||||
step_count: 99
|
||||
goal: Linearize package.json scripts into a validated DAG execution graph.
|
||||
has_code_implementation: true
|
||||
code_path: "tools/run_release_dag_v3.py"
|
||||
execution_order:
|
||||
# 토폴로지 정렬 기준 병렬 실행 wave (의존성 없는 노드들을 동시에 실행 가능)
|
||||
wave_0:
|
||||
@@ -86,6 +88,11 @@ execution_order:
|
||||
wave_6:
|
||||
- build_algorithm_guidance_proof
|
||||
- build_artifact_chain_hash
|
||||
- build_calibration_priority
|
||||
- build_calibration_change_ledger
|
||||
- build_calibration_review_report
|
||||
- build_calibration_approval_list
|
||||
- build_calibration_decision_draft
|
||||
- build_alpha_feedback_loop
|
||||
- build_honest_proof_gap_analyzer
|
||||
- build_operational_alpha_calibration
|
||||
@@ -220,6 +227,66 @@ dag:
|
||||
artifact_policy: "keep"
|
||||
note: "WBS-4.3 alpha feedback loop — non-blocking diagnostic"
|
||||
|
||||
build_calibration_priority:
|
||||
id: build_calibration_priority
|
||||
command: ["python", "tools/build_calibration_priority_v1.py"]
|
||||
inputs: ["tools/build_calibration_priority_v1.py", "Temp/alpha_feedback_loop_v2.json", "spec/calibration_registry.yaml"]
|
||||
outputs: ["Temp/calibration_priority_v1.json"]
|
||||
depends_on: ["build_alpha_feedback_loop"]
|
||||
timeout_sec: 30
|
||||
cache_key: "build_calibration_priority_v1"
|
||||
strict: false
|
||||
artifact_policy: "keep"
|
||||
note: "CALIBRATION_PRIORITY_V1 — registry warning fallback 포함 보정 우선순위 리포트"
|
||||
|
||||
build_calibration_change_ledger:
|
||||
id: build_calibration_change_ledger
|
||||
command: ["python", "tools/build_calibration_change_ledger_v4.py"]
|
||||
inputs: ["tools/build_calibration_change_ledger_v4.py", "Temp/calibration_priority_v1.json", "Temp/outcome_ledger_v1.json", "Temp/calibration_registry_v1.json"]
|
||||
outputs: ["Temp/calibration_change_ledger_v4.json"]
|
||||
depends_on: ["build_calibration_priority", "build_realized_performance"]
|
||||
timeout_sec: 30
|
||||
cache_key: "build_calibration_change_ledger_v4"
|
||||
strict: false
|
||||
artifact_policy: "keep"
|
||||
note: "CALIBRATION_CHANGE_LEDGER_V4 — change ledger linkage 유지"
|
||||
|
||||
build_calibration_review_report:
|
||||
id: build_calibration_review_report
|
||||
command: ["python", "tools/build_calibration_review_report_v1.py"]
|
||||
inputs: ["tools/build_calibration_review_report_v1.py", "Temp/calibration_priority_v1.json", "Temp/calibration_change_ledger_v4.json", "spec/calibration_registry.yaml"]
|
||||
outputs: ["Temp/calibration_review_report_v1.json", "Temp/calibration_review_report_v1.md"]
|
||||
depends_on: ["build_calibration_change_ledger"]
|
||||
timeout_sec: 30
|
||||
cache_key: "build_calibration_review_report_v1"
|
||||
strict: false
|
||||
artifact_policy: "keep"
|
||||
note: "CALIBRATION_REVIEW_REPORT_V1 — 월간 운영용 읽기 쉬운 보정 리포트"
|
||||
|
||||
build_calibration_approval_list:
|
||||
id: build_calibration_approval_list
|
||||
command: ["python", "tools/build_calibration_approval_list_v1.py"]
|
||||
inputs: ["tools/build_calibration_approval_list_v1.py", "Temp/calibration_review_report_v1.json"]
|
||||
outputs: ["Temp/calibration_approval_list_v1.json", "Temp/calibration_approval_list_v1.md"]
|
||||
depends_on: ["build_calibration_review_report"]
|
||||
timeout_sec: 30
|
||||
cache_key: "build_calibration_approval_list_v1"
|
||||
strict: false
|
||||
artifact_policy: "keep"
|
||||
note: "CALIBRATION_APPROVAL_LIST_V1 — PROVISIONAL 승인/검토 분리"
|
||||
|
||||
build_calibration_decision_draft:
|
||||
id: build_calibration_decision_draft
|
||||
command: ["python", "tools/build_calibration_decision_draft_v1.py"]
|
||||
inputs: ["tools/build_calibration_decision_draft_v1.py", "Temp/calibration_review_report_v1.json", "Temp/calibration_approval_list_v1.json"]
|
||||
outputs: ["Temp/calibration_decision_draft_v1.json", "Temp/calibration_decision_draft_v1.md"]
|
||||
depends_on: ["build_calibration_approval_list"]
|
||||
timeout_sec: 30
|
||||
cache_key: "build_calibration_decision_draft_v1"
|
||||
strict: false
|
||||
artifact_policy: "keep"
|
||||
note: "CALIBRATION_DECISION_DRAFT_V1 — APPROVE/HOLD/REJECT 초안"
|
||||
|
||||
build_operational_alpha_calibration:
|
||||
id: build_operational_alpha_calibration
|
||||
command: ["python", "tools/build_operational_alpha_calibration_v2.py"]
|
||||
@@ -496,6 +563,20 @@ dag:
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_no_direct_api_trading:
|
||||
id: validate_no_direct_api_trading
|
||||
command: ["python", "tools/validate_no_direct_api_trading_v1.py"]
|
||||
inputs: ["tools/validate_no_direct_api_trading_v1.py", "src/quant_engine/kis_api_client_v1.py", "governance/rules/06_no_direct_api_trading.yaml"]
|
||||
outputs: []
|
||||
depends_on: []
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_no_direct_api_trading_v1"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
note: "[CRITICAL] 매수/매도 API 직접 실행 절대 금지 게이트 — warn_only 불가, 완화 대상
|
||||
아님(사용자 직접 지시 2026-06-21). 순수 stdlib만 사용해 Synology ARMv7 CI에서도
|
||||
항상 실행 가능."
|
||||
|
||||
validate_active_manifest:
|
||||
id: validate_active_manifest
|
||||
command: ["python", "tools/validate_active_manifest.py", "--manifest", "runtime/active_artifact_manifest.yaml", "--strict"]
|
||||
@@ -731,6 +812,37 @@ dag:
|
||||
artifact_policy: "keep"
|
||||
note: "섹터 유니버스 월간 갱신 provenance 검증 (warn_only) — GAS 재다운로드 시 Source_URL 소실이 정상. 월간 --apply 실행 후 PASS/WARN 달성. FAIL=비차단 경고만."
|
||||
|
||||
build_qualitative_sell_inputs:
|
||||
id: build_qualitative_sell_inputs
|
||||
command: ["python", "tools/build_qualitative_sell_inputs_v1.py", "--batch", "--workbook", "GatherTradingData.xlsx", "--apply"]
|
||||
inputs: ["tools/build_qualitative_sell_inputs_v1.py", "tools/build_macro_context_from_workbook_v1.py", "tools/fetch_naver_market_data_v1.py", "src/quant_engine/kis_api_client_v1.py", "GatherTradingData.xlsx"]
|
||||
outputs: ["outputs/qualitative_sell_strategy/*.json"]
|
||||
depends_on: []
|
||||
timeout_sec: 120
|
||||
cache_key: "build_qualitative_sell_inputs_v1"
|
||||
strict: false
|
||||
warn_only: true
|
||||
artifact_policy: "keep"
|
||||
note: "Naver 시세/수급 실시간 스크래핑 의존(warn_only) — 보유종목별 비기계적 매도전략
|
||||
confluence 판단. 공매도잔고율은 --short-csv 수동 주입 전까지 구조적으로
|
||||
DATA_MISSING(추정 금지) — 정상 동작. 호가10단계·공매도거래비중은 --kis-account
|
||||
{real,mock} 옵션으로 KIS Open API(read-only) 조회 가능(2026-06-21 연동) — DAG
|
||||
기본 실행에는 미포함(자격증명 의존, 수동 실행 시에만 부여)."
|
||||
|
||||
build_satellite_candidate_recommendations:
|
||||
id: build_satellite_candidate_recommendations
|
||||
command: ["python", "tools/build_satellite_candidate_recommendations_v1.py", "--workbook", "GatherTradingData.xlsx", "--apply"]
|
||||
inputs: ["tools/build_satellite_candidate_recommendations_v1.py", "tools/fetch_naver_market_data_v1.py", "GatherTradingData.xlsx"]
|
||||
outputs: ["outputs/qualitative_sell_strategy/satellite_recommendations.json"]
|
||||
depends_on: []
|
||||
timeout_sec: 180
|
||||
cache_key: "build_satellite_candidate_recommendations_v1"
|
||||
strict: false
|
||||
warn_only: true
|
||||
artifact_policy: "keep"
|
||||
note: "universe 시트 미보유 후보(60종) 전체 Naver 시세 조회 — warn_only. --trade-csv
|
||||
없으면 sector_export_trend 전부 DATA_MISSING(정상, 추정 금지)."
|
||||
|
||||
validate_cash_ledger:
|
||||
id: validate_cash_ledger
|
||||
command: ["python", "tools/validate_cash_ledger_v2.py", "--snapshot", "GatherTradingData.json", "--contract", "spec/15_account_snapshot_contract.yaml"]
|
||||
@@ -1327,7 +1439,7 @@ dag:
|
||||
command: ["python", "tools/prepare_upload_zip.py", "--skip-validate", "--skip-convert", "--validation-mode", "package-only"]
|
||||
inputs: ["tools/prepare_upload_zip.py"]
|
||||
outputs: []
|
||||
depends_on: ["audit_entropy", "validate_specs", "validate_active_manifest", "validate_report_sync", "validate_report_numeric_consistency", "validate_field_dict", "validate_provenance", "validate_low_capability", "validate_golden_coverage", "validate_calibration", "validate_schema_model", "validate_gas_adapter", "validate_agents_shrink", "validate_no_replay_live_mix", "validate_prediction_accuracy_harness", "validate_alpha_feedback_loop", "validate_operational_alpha_calibration", "validate_realized_performance", "validate_data_gated_progress", "validate_sector_flow_history_progress", "validate_runtime_source_whitelist", "validate_cash_ledger", "validate_factor_lifecycle", "validate_factor_lifecycle_completeness", "validate_metric_alias_collision", "validate_architecture_boundaries", "validate_module_io_coverage", "validate_artifact_chain_hash", "validate_artifact_sync", "validate_renderer_no_calc", "validate_packaged_refs", "validate_property_invariants", "validate_anti_late_entry", "validate_rule_lifecycle", "validate_change_requests", "validate_completion_harness_instructions", "validate_engine_health_card", "validate_llm_regression", "validate_llm_copy_only", "build_final_decision", "build_final_context", "build_provenance_ledger", "build_live_replay_separation", "build_late_chase_attribution", "build_profit_giveback_ratchet", "build_shadow_ledger", "build_operating_cadence_signal", "build_engine_health_card", "build_module_io_coverage", "build_artifact_chain_hash", "build_report", "build_bundle", "build_schema_models", "build_architecture_boundaries", "validate_decision_trace", "validate_factor_conflicts", "validate_no_lookahead", "validate_execution_sim", "validate_render_diff", "build_shadow_promotion", "validate_llm_determinism", "build_time_stop_forecast", "validate_live_activation", "build_rebalance_sheet", "build_prediction_accuracy_harness", "build_alpha_feedback_loop", "build_operational_alpha_calibration", "build_sector_flow_history_progress"]
|
||||
depends_on: ["audit_entropy", "validate_specs", "validate_no_direct_api_trading", "validate_active_manifest", "validate_report_sync", "validate_report_numeric_consistency", "validate_field_dict", "validate_provenance", "validate_low_capability", "validate_golden_coverage", "validate_calibration", "validate_schema_model", "validate_gas_adapter", "validate_agents_shrink", "validate_no_replay_live_mix", "validate_prediction_accuracy_harness", "validate_alpha_feedback_loop", "validate_operational_alpha_calibration", "validate_realized_performance", "validate_data_gated_progress", "validate_sector_flow_history_progress", "validate_runtime_source_whitelist", "validate_cash_ledger", "validate_factor_lifecycle", "validate_factor_lifecycle_completeness", "validate_metric_alias_collision", "validate_architecture_boundaries", "validate_module_io_coverage", "validate_artifact_chain_hash", "validate_artifact_sync", "validate_renderer_no_calc", "validate_packaged_refs", "validate_property_invariants", "validate_anti_late_entry", "validate_rule_lifecycle", "validate_change_requests", "validate_completion_harness_instructions", "validate_engine_health_card", "validate_llm_regression", "validate_llm_copy_only", "build_final_decision", "build_final_context", "build_provenance_ledger", "build_live_replay_separation", "build_late_chase_attribution", "build_profit_giveback_ratchet", "build_shadow_ledger", "build_operating_cadence_signal", "build_engine_health_card", "build_module_io_coverage", "build_artifact_chain_hash", "build_report", "build_bundle", "build_schema_models", "build_architecture_boundaries", "validate_decision_trace", "validate_factor_conflicts", "validate_no_lookahead", "validate_execution_sim", "validate_render_diff", "build_shadow_promotion", "validate_llm_determinism", "build_time_stop_forecast", "validate_live_activation", "build_rebalance_sheet", "build_prediction_accuracy_harness", "build_alpha_feedback_loop", "build_calibration_priority", "build_calibration_change_ledger", "build_calibration_review_report", "build_calibration_approval_list", "build_calibration_decision_draft", "build_operational_alpha_calibration", "build_sector_flow_history_progress"]
|
||||
timeout_sec: 60
|
||||
cache_key: "prepare_zip_v1"
|
||||
strict: true
|
||||
|
||||
Reference in New Issue
Block a user