6e6566e86e
[P0-A] validate_specs.py FAIL 2건 수정: - spec/41_release_dag.yaml meta.code_path: 'tools/ or spec/ or .gitea/workflows' (상징적 문자열) → 'tools/run_release_dag_v3.py' (실제 파일 경로) 수정 (WBS-7.11 spec-코드 동기화 게이트 규칙 위반 해소) - RetirementAssetPortfolio.yaml spec_files에 spec/llm_radar_trust_tiers_v1.yaml 등록 (WBS-9.6 LLM 레이더 신뢰도 분류 spec manifest 등록) [P0-B] validate_platform_transition_wbs_v1.py P3 FAIL 수정: - .gitea/workflows/kis_data_collection.yml collect-kis-data-live job에서 중복된 mock 자격증명 검증 스텝 제거 (validate-kis-config-smoke job에만 유지) (P3 mock_env_vars_not_isolated 규칙: KIS_APP_Key_TEST 정확히 1회 등장 요구) 검증: - python tools/validate_specs.py → VALIDATION OK - python tools/validate_platform_transition_wbs_v1.py → gate: PASS
2427 lines
75 KiB
YAML
2427 lines
75 KiB
YAML
code_path: tools/run_release_dag_v3.py
|
|
dag:
|
|
nodes:
|
|
apply_strategy_execution_locks:
|
|
artifact_policy: keep
|
|
cache_key: apply_strategy_execution_locks_v1
|
|
command:
|
|
- python
|
|
- tools/apply_strategy_execution_locks.py
|
|
depends_on:
|
|
- inject_harness
|
|
- build_late_chase_attribution
|
|
id: apply_strategy_execution_locks
|
|
inputs:
|
|
- tools/apply_strategy_execution_locks.py
|
|
- GatherTradingData.json
|
|
- Temp/late_chase_attribution_v1.json
|
|
- Temp/data_integrity_score_v1.json
|
|
- Temp/derivation_validity_score_v1.json
|
|
- Temp/decision_evidence_score_v1.json
|
|
- Temp/outcome_quality_score_v1.json
|
|
note: STRATEGY_EXECUTION_LOCKS_V1 필드를 GatherTradingData.json 하네스에 주입
|
|
outputs: []
|
|
strict: false
|
|
timeout_sec: 30
|
|
audit_entropy:
|
|
artifact_policy: keep
|
|
cache_key: audit_entropy_v1
|
|
command:
|
|
- python
|
|
- tools/audit_repository_entropy_v2.py
|
|
- --out
|
|
- runtime/refactor_baseline_v1.yaml
|
|
depends_on: []
|
|
id: audit_entropy
|
|
inputs:
|
|
- tools/audit_repository_entropy_v2.py
|
|
outputs:
|
|
- runtime/refactor_baseline_v1.yaml
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_algorithm_guidance_proof:
|
|
artifact_policy: keep
|
|
cache_key: build_algorithm_guidance_proof_v1
|
|
command:
|
|
- python
|
|
- tools/build_algorithm_guidance_proof_v1.py
|
|
depends_on:
|
|
- build_report
|
|
- build_ejce_view_renderer
|
|
- build_ratchet_trailing_general
|
|
- build_value_preservation_scorer
|
|
- build_smart_cash_recovery_v3
|
|
- build_routing_execution_log
|
|
- build_operational_outcome_lock
|
|
id: build_algorithm_guidance_proof
|
|
inputs:
|
|
- tools/build_algorithm_guidance_proof_v1.py
|
|
- GatherTradingData.json
|
|
- Temp/operational_report.json
|
|
- Temp/ejce_view_renderer_v1.json
|
|
- Temp/ratchet_trailing_general_v1.json
|
|
- Temp/value_preservation_scorer_v1.json
|
|
- Temp/smart_cash_recovery_v3.json
|
|
- Temp/routing_execution_log_v1.json
|
|
- Temp/canonical_metrics_v1.json
|
|
note: honest_proof_score + phase1_gate 7개 검증 — RELEASE_GATE_TRUTH 원천
|
|
outputs:
|
|
- Temp/algorithm_guidance_proof_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_alpha_feedback_loop:
|
|
artifact_policy: keep
|
|
cache_key: build_alpha_feedback_loop_v2
|
|
command:
|
|
- python
|
|
- tools/build_alpha_feedback_loop_v2.py
|
|
depends_on:
|
|
- update_proposal_evaluation_history
|
|
id: build_alpha_feedback_loop
|
|
inputs:
|
|
- tools/build_alpha_feedback_loop_v2.py
|
|
- Temp/proposal_evaluation_history.json
|
|
note: WBS-4.3 alpha feedback loop — non-blocking diagnostic
|
|
outputs:
|
|
- Temp/alpha_feedback_loop_v2.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_anti_whipsaw_gate:
|
|
artifact_policy: keep
|
|
cache_key: build_anti_whipsaw_gate_v1
|
|
command:
|
|
- python
|
|
- tools/build_anti_whipsaw_gate_v1.py
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_anti_whipsaw_gate
|
|
inputs:
|
|
- tools/build_anti_whipsaw_gate_v1.py
|
|
- GatherTradingData.json
|
|
note: ANTI_WHIPSAW_GATE_V1 — anti_whipsaw_status 스칼라 추출 (anti_whipsaw_gate_json)
|
|
outputs:
|
|
- Temp/anti_whipsaw_gate_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_architecture_boundaries:
|
|
artifact_policy: keep
|
|
cache_key: build_architecture_boundaries_v2
|
|
command:
|
|
- python
|
|
- tools/build_architecture_boundaries_v2.py
|
|
depends_on:
|
|
- build_module_io_coverage
|
|
- build_artifact_chain_hash
|
|
id: build_architecture_boundaries
|
|
inputs:
|
|
- tools/build_architecture_boundaries_v2.py
|
|
- Temp/module_io_coverage_v1.json
|
|
- Temp/artifact_chain_hash_v4.json
|
|
outputs:
|
|
- Temp/architecture_boundaries_v2.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_artifact_chain_hash:
|
|
artifact_policy: keep
|
|
cache_key: build_artifact_chain_hash_v4
|
|
command:
|
|
- python
|
|
- tools/build_artifact_chain_hash_v4.py
|
|
depends_on:
|
|
- build_provenance_ledger
|
|
- build_report
|
|
id: build_artifact_chain_hash
|
|
inputs:
|
|
- tools/build_artifact_chain_hash_v4.py
|
|
outputs:
|
|
- Temp/artifact_chain_hash_v4.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_bundle:
|
|
artifact_policy: keep
|
|
cache_key: build_bundle_v1
|
|
command:
|
|
- python
|
|
- tools/build_bundle.py
|
|
depends_on: []
|
|
id: build_bundle
|
|
inputs:
|
|
- tools/build_bundle.py
|
|
outputs:
|
|
- dist/retirement_portfolio_compact.yaml
|
|
- dist/retirement_portfolio_ultra_compact.yaml
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_calibration_approval_list:
|
|
artifact_policy: keep
|
|
cache_key: build_calibration_approval_list_v1
|
|
command:
|
|
- python
|
|
- tools/build_calibration_approval_list_v1.py
|
|
depends_on:
|
|
- build_calibration_review_report
|
|
id: build_calibration_approval_list
|
|
inputs:
|
|
- tools/build_calibration_approval_list_v1.py
|
|
- Temp/calibration_review_report_v1.json
|
|
note: CALIBRATION_APPROVAL_LIST_V1 — PROVISIONAL 승인/검토 분리
|
|
outputs:
|
|
- Temp/calibration_approval_list_v1.json
|
|
- Temp/calibration_approval_list_v1.md
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_calibration_change_ledger:
|
|
artifact_policy: keep
|
|
cache_key: build_calibration_change_ledger_v4
|
|
command:
|
|
- python
|
|
- tools/build_calibration_change_ledger_v4.py
|
|
depends_on:
|
|
- build_calibration_priority
|
|
- build_realized_performance
|
|
id: build_calibration_change_ledger
|
|
inputs:
|
|
- tools/build_calibration_change_ledger_v4.py
|
|
- Temp/calibration_priority_v1.json
|
|
- Temp/outcome_ledger_v1.json
|
|
- Temp/calibration_registry_v1.json
|
|
note: CALIBRATION_CHANGE_LEDGER_V4 — change ledger linkage 유지
|
|
outputs:
|
|
- Temp/calibration_change_ledger_v4.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_calibration_decision_draft:
|
|
artifact_policy: keep
|
|
cache_key: build_calibration_decision_draft_v1
|
|
command:
|
|
- python
|
|
- tools/build_calibration_decision_draft_v1.py
|
|
depends_on:
|
|
- build_calibration_approval_list
|
|
id: build_calibration_decision_draft
|
|
inputs:
|
|
- tools/build_calibration_decision_draft_v1.py
|
|
- Temp/calibration_review_report_v1.json
|
|
- Temp/calibration_approval_list_v1.json
|
|
note: CALIBRATION_DECISION_DRAFT_V1 — APPROVE/HOLD/REJECT 초안
|
|
outputs:
|
|
- Temp/calibration_decision_draft_v1.json
|
|
- Temp/calibration_decision_draft_v1.md
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_calibration_priority:
|
|
artifact_policy: keep
|
|
cache_key: build_calibration_priority_v1
|
|
command:
|
|
- python
|
|
- tools/build_calibration_priority_v1.py
|
|
depends_on:
|
|
- build_alpha_feedback_loop
|
|
id: build_calibration_priority
|
|
inputs:
|
|
- tools/build_calibration_priority_v1.py
|
|
- Temp/alpha_feedback_loop_v2.json
|
|
- spec/calibration_registry.yaml
|
|
note: CALIBRATION_PRIORITY_V1 — registry warning fallback 포함 보정 우선순위 리포트
|
|
outputs:
|
|
- Temp/calibration_priority_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_calibration_review_report:
|
|
artifact_policy: keep
|
|
cache_key: build_calibration_review_report_v1
|
|
command:
|
|
- python
|
|
- tools/build_calibration_review_report_v1.py
|
|
depends_on:
|
|
- build_calibration_change_ledger
|
|
id: build_calibration_review_report
|
|
inputs:
|
|
- tools/build_calibration_review_report_v1.py
|
|
- Temp/calibration_priority_v1.json
|
|
- Temp/calibration_change_ledger_v4.json
|
|
- spec/calibration_registry.yaml
|
|
note: CALIBRATION_REVIEW_REPORT_V1 — 월간 운영용 읽기 쉬운 보정 리포트
|
|
outputs:
|
|
- Temp/calibration_review_report_v1.json
|
|
- Temp/calibration_review_report_v1.md
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_data_gated_progress:
|
|
artifact_policy: keep
|
|
cache_key: build_data_gated_progress_v1
|
|
command:
|
|
- python
|
|
- tools/build_data_gated_progress_v1.py
|
|
depends_on:
|
|
- build_live_replay_separation
|
|
id: build_data_gated_progress
|
|
inputs:
|
|
- tools/build_data_gated_progress_v1.py
|
|
- GatherTradingData.json
|
|
note: DATA_GATED 항목별 실측 진척도 — non-blocking diagnostic
|
|
outputs:
|
|
- Temp/data_gated_progress_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_ejce_view_renderer:
|
|
artifact_policy: keep
|
|
cache_key: build_ejce_view_renderer_v1
|
|
command:
|
|
- python
|
|
- tools/build_ejce_view_renderer_v1.py
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_ejce_view_renderer
|
|
inputs:
|
|
- tools/build_ejce_view_renderer_v1.py
|
|
- GatherTradingData.json
|
|
note: 'phase1_gate: blank_view_count=0 검증'
|
|
outputs:
|
|
- Temp/ejce_view_renderer_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_engine_health_card:
|
|
artifact_policy: keep
|
|
cache_key: build_engine_health_card_v1
|
|
command:
|
|
- python
|
|
- tools/build_engine_health_card_v1.py
|
|
- --out
|
|
- Temp/engine_health_card_v1.json
|
|
depends_on: []
|
|
id: build_engine_health_card
|
|
inputs:
|
|
- tools/build_engine_health_card_v1.py
|
|
outputs:
|
|
- Temp/engine_health_card_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_etf_representative_monitor:
|
|
artifact_policy: keep
|
|
cache_key: build_etf_representative_monitor_v1
|
|
command:
|
|
- python
|
|
- tools/build_etf_representative_monitor_v1.py
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_etf_representative_monitor
|
|
inputs:
|
|
- tools/build_etf_representative_monitor_v1.py
|
|
- GatherTradingData.json
|
|
note: ETF_REPRESENTATIVE_MONITOR_V1 — ETF 대표 종목 추적 + 벤치마크 연동
|
|
outputs:
|
|
- Temp/etf_representative_monitor_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_factor_shadow_eligibility:
|
|
artifact_policy: keep
|
|
cache_key: build_factor_shadow_eligibility_v1
|
|
command:
|
|
- python
|
|
- tools/build_factor_shadow_eligibility_v1.py
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_factor_shadow_eligibility
|
|
inputs:
|
|
- tools/build_factor_shadow_eligibility_v1.py
|
|
- GatherTradingData.json
|
|
- spec/factor_lifecycle_registry.yaml
|
|
note: 149개 팩터 shadow 승격 자격 평가 — non-blocking diagnostic
|
|
outputs:
|
|
- Temp/factor_shadow_eligibility_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_final_context:
|
|
artifact_policy: keep
|
|
cache_key: build_final_context_v1
|
|
command:
|
|
- python
|
|
- tools/build_low_capability_context_pack_v5.py
|
|
- --manifest
|
|
- runtime/active_artifact_manifest.yaml
|
|
- --packet
|
|
- Temp/final_decision_packet_v4.json
|
|
- --out
|
|
- Temp/final_context_for_llm_v5.yaml
|
|
depends_on:
|
|
- build_final_decision
|
|
id: build_final_context
|
|
inputs:
|
|
- tools/build_low_capability_context_pack_v5.py
|
|
- runtime/active_artifact_manifest.yaml
|
|
- Temp/final_decision_packet_v4.json
|
|
outputs:
|
|
- Temp/final_context_for_llm_v5.yaml
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_final_decision:
|
|
artifact_policy: keep
|
|
cache_key: build_final_decision_v1
|
|
command:
|
|
- python
|
|
- tools/build_final_decision_packet_v4.py
|
|
- --src
|
|
- Temp/final_decision_packet_active.json
|
|
- --out
|
|
- Temp/final_decision_packet_v4.json
|
|
depends_on:
|
|
- finalize_packet
|
|
id: build_final_decision
|
|
inputs:
|
|
- tools/build_final_decision_packet_v4.py
|
|
- Temp/final_decision_packet_active.json
|
|
outputs:
|
|
- Temp/final_decision_packet_v4.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_formula_outputs:
|
|
artifact_policy: keep
|
|
cache_key: build_formula_outputs_v1
|
|
command:
|
|
- python
|
|
- src/quant_engine/compute_formula_outputs.py
|
|
- --output
|
|
- Temp/computed_harness_v1.json
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_formula_outputs
|
|
inputs:
|
|
- src/quant_engine/compute_formula_outputs.py
|
|
- GatherTradingData.json
|
|
outputs:
|
|
- Temp/computed_harness_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_gas_bundle:
|
|
artifact_policy: keep
|
|
cache_key: build_gas_bundle_v1
|
|
command:
|
|
- python
|
|
- tools/build_gas_bundle_v1.py
|
|
depends_on: []
|
|
id: build_gas_bundle
|
|
inputs:
|
|
- tools/build_gas_bundle_v1.py
|
|
- src/gas/core/gas_lib.gs
|
|
- src/gas_adapter_parts/gdc_01_fetch_fundamentals.gs
|
|
- src/gas_adapter_parts/gdc_02_account_satellite.gs
|
|
- src/gas_adapter_parts/gdf_01_price_metrics.gs
|
|
- src/gas_adapter_parts/gdf_02_harness_assembly.gs
|
|
- src/gas_adapter_parts/gdf_03_portfolio_gates.gs
|
|
- src/gas_adapter_parts/gdf_04_execution_quality.gs
|
|
- src/gas_adapter_parts/gdf_05_alpha_engines.gs
|
|
- src/gas_adapter_parts/gdf_06_rebalance.gs
|
|
outputs:
|
|
- gas_lib.gs
|
|
- gas_data_collect.gs
|
|
- gas_data_feed.gs
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_honest_performance_guard:
|
|
artifact_policy: keep
|
|
cache_key: build_honest_performance_guard_v1
|
|
command:
|
|
- python
|
|
- tools/build_honest_performance_guard_v1.py
|
|
depends_on:
|
|
- build_report
|
|
id: build_honest_performance_guard
|
|
inputs:
|
|
- tools/build_honest_performance_guard_v1.py
|
|
- Temp/rebound_sell_efficiency_v1.json
|
|
- Temp/late_chase_attribution_v1.json
|
|
- Temp/operational_report.json
|
|
outputs:
|
|
- Temp/honest_performance_guard_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_honest_proof_gap_analyzer:
|
|
artifact_policy: keep
|
|
cache_key: build_honest_proof_gap_analyzer_v1
|
|
command:
|
|
- python
|
|
- tools/build_honest_proof_gap_analyzer_v1.py
|
|
depends_on:
|
|
- build_algorithm_guidance_proof
|
|
id: build_honest_proof_gap_analyzer
|
|
inputs:
|
|
- tools/build_honest_proof_gap_analyzer_v1.py
|
|
- Temp/algorithm_guidance_proof_v1.json
|
|
- Temp/prediction_accuracy_harness_v2.json
|
|
- Temp/imputed_data_exposure_gate_v2.json
|
|
note: RELEASE_GATE_TRUTH 45.1→70 경로 분석 — non-blocking diagnostic
|
|
outputs:
|
|
- Temp/honest_proof_gap_analyzer_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_horizon_rebalance_plan:
|
|
artifact_policy: keep
|
|
cache_key: build_horizon_rebalance_plan_v1
|
|
command:
|
|
- python
|
|
- tools/build_horizon_rebalance_plan_v1.py
|
|
depends_on:
|
|
- build_strategy_routing_audit
|
|
- finalize_packet
|
|
id: build_horizon_rebalance_plan
|
|
inputs:
|
|
- tools/build_horizon_rebalance_plan_v1.py
|
|
- GatherTradingData.json
|
|
- Temp/strategy_routing_audit_v1.json
|
|
- Temp/horizon_classification_v1.json
|
|
note: routing_gate FAIL 시 리밸런싱 우선순위 플랜 산출 — non-blocking
|
|
outputs:
|
|
- Temp/horizon_rebalance_plan_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_late_chase_attribution:
|
|
artifact_policy: keep
|
|
cache_key: build_late_chase_attribution_v2
|
|
command:
|
|
- python
|
|
- tools/build_late_chase_attribution_v2.py
|
|
- --json
|
|
- GatherTradingData.json
|
|
- --out
|
|
- Temp/late_chase_attribution_v2.json
|
|
depends_on: []
|
|
id: build_late_chase_attribution
|
|
inputs:
|
|
- tools/build_late_chase_attribution_v2.py
|
|
- GatherTradingData.json
|
|
outputs:
|
|
- Temp/late_chase_attribution_v2.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_live_replay_separation:
|
|
artifact_policy: keep
|
|
cache_key: build_live_replay_separation_v3
|
|
command:
|
|
- python
|
|
- tools/build_live_replay_separation_v3.py
|
|
- --out
|
|
- Temp/live_replay_separation_v3.json
|
|
depends_on: []
|
|
id: build_live_replay_separation
|
|
inputs:
|
|
- tools/build_live_replay_separation_v3.py
|
|
outputs:
|
|
- Temp/live_replay_separation_v3.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_macro_event_ticker_impact:
|
|
artifact_policy: keep
|
|
cache_key: build_macro_event_ticker_impact_v1
|
|
command:
|
|
- python
|
|
- tools/build_macro_event_ticker_impact_v1.py
|
|
depends_on: []
|
|
id: build_macro_event_ticker_impact
|
|
inputs:
|
|
- tools/build_macro_event_ticker_impact_v1.py
|
|
- GatherTradingData.json
|
|
note: core_satellite 종목별 매크로 이벤트 임팩트 레지스터 — MACRO_EVENT_TICKER_IMPACT_V1
|
|
outputs:
|
|
- Temp/macro_event_ticker_impact_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_missing_formula_bridge:
|
|
artifact_policy: keep
|
|
cache_key: build_missing_formula_bridge_v1
|
|
command:
|
|
- python
|
|
- tools/build_missing_formula_bridge_v1.py
|
|
depends_on: []
|
|
id: build_missing_formula_bridge
|
|
inputs:
|
|
- tools/build_missing_formula_bridge_v1.py
|
|
note: MISSING_FORMULA_BRIDGE_V1 — 10개 공식 커버리지 앵커 등록 (harness auditor PY_FILES)
|
|
outputs:
|
|
- Temp/missing_formula_bridge_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_module_io_coverage:
|
|
artifact_policy: keep
|
|
cache_key: build_module_io_coverage_v1
|
|
command:
|
|
- python
|
|
- tools/build_module_io_coverage_v1.py
|
|
depends_on: []
|
|
id: build_module_io_coverage
|
|
inputs:
|
|
- tools/build_module_io_coverage_v1.py
|
|
- spec/48_module_io_contract_registry.yaml
|
|
outputs:
|
|
- Temp/module_io_coverage_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_operating_cadence_signal:
|
|
artifact_policy: keep
|
|
cache_key: build_operating_cadence_signal_v1
|
|
command:
|
|
- python
|
|
- tools/build_operating_cadence_signal_v1.py
|
|
- --timezone
|
|
- Asia/Seoul
|
|
- --out
|
|
- Temp/operating_cadence_signal_v1.json
|
|
depends_on: []
|
|
id: build_operating_cadence_signal
|
|
inputs:
|
|
- tools/build_operating_cadence_signal_v1.py
|
|
outputs:
|
|
- Temp/operating_cadence_signal_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_operational_alpha_calibration:
|
|
artifact_policy: keep
|
|
cache_key: build_operational_alpha_calibration_v2
|
|
command:
|
|
- python
|
|
- tools/build_operational_alpha_calibration_v2.py
|
|
depends_on:
|
|
- build_prediction_accuracy_harness
|
|
- build_alpha_feedback_loop
|
|
- build_realized_performance
|
|
id: build_operational_alpha_calibration
|
|
inputs:
|
|
- tools/build_operational_alpha_calibration_v2.py
|
|
- Temp/outcome_quality_score_v1.json
|
|
- Temp/prediction_accuracy_harness_v2.json
|
|
- Temp/trade_quality_from_t5_v1.json
|
|
- Temp/smart_cash_recovery_v5.json
|
|
note: WBS-4.3 operational alpha calibration — non-blocking diagnostic
|
|
outputs:
|
|
- Temp/operational_alpha_calibration_v2.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_operational_eval_queue:
|
|
artifact_policy: keep
|
|
cache_key: build_operational_eval_queue_v1
|
|
command:
|
|
- python
|
|
- tools/build_operational_eval_queue_v1.py
|
|
- --history
|
|
- Temp/proposal_evaluation_history.json
|
|
- --out
|
|
- Temp/operational_eval_queue_v1.json
|
|
depends_on:
|
|
- update_proposal_evaluation_history
|
|
id: build_operational_eval_queue
|
|
inputs:
|
|
- tools/build_operational_eval_queue_v1.py
|
|
- Temp/proposal_evaluation_history.json
|
|
note: OPERATIONAL_EVAL_QUEUE_V1 — T+20 평가 대기 큐 (due_date 초과 종목 목록)
|
|
outputs:
|
|
- Temp/operational_eval_queue_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_operational_outcome_lock:
|
|
artifact_policy: keep
|
|
cache_key: build_operational_outcome_lock_v1
|
|
command:
|
|
- python
|
|
- tools/build_operational_outcome_lock_v1.py
|
|
- --history
|
|
- Temp/proposal_evaluation_history.json
|
|
- --out
|
|
- Temp/operational_outcome_lock_v1.json
|
|
depends_on:
|
|
- update_proposal_evaluation_history
|
|
id: build_operational_outcome_lock
|
|
inputs:
|
|
- tools/build_operational_outcome_lock_v1.py
|
|
- Temp/proposal_evaluation_history.json
|
|
note: OPERATIONAL_OUTCOME_LOCK_V1 — 실운영 T+20 성과 잠금 (30건 이상 누적 후 활성화)
|
|
outputs:
|
|
- Temp/operational_outcome_lock_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_prediction_accuracy_harness:
|
|
artifact_policy: keep
|
|
cache_key: build_prediction_accuracy_harness_v2
|
|
command:
|
|
- python
|
|
- tools/build_prediction_accuracy_harness_v2.py
|
|
depends_on:
|
|
- update_proposal_evaluation_history
|
|
id: build_prediction_accuracy_harness
|
|
inputs:
|
|
- tools/build_prediction_accuracy_harness_v2.py
|
|
- Temp/proposal_evaluation_history.json
|
|
note: WBS-4.2 prediction accuracy harness — non-blocking diagnostic
|
|
outputs:
|
|
- Temp/prediction_accuracy_harness_v2.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_profit_giveback_ratchet:
|
|
artifact_policy: keep
|
|
cache_key: build_profit_giveback_ratchet_v2
|
|
command:
|
|
- python
|
|
- tools/build_profit_giveback_ratchet_v2.py
|
|
- --json
|
|
- GatherTradingData.json
|
|
- --out
|
|
- Temp/profit_giveback_ratchet_v2.json
|
|
depends_on: []
|
|
id: build_profit_giveback_ratchet
|
|
inputs:
|
|
- tools/build_profit_giveback_ratchet_v2.py
|
|
- GatherTradingData.json
|
|
outputs:
|
|
- Temp/profit_giveback_ratchet_v2.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_provenance_ledger:
|
|
artifact_policy: keep
|
|
cache_key: build_provenance_ledger_v1
|
|
command:
|
|
- python
|
|
- tools/build_number_provenance_ledger_v4.py
|
|
- --packet
|
|
- Temp/final_decision_packet_v4.json
|
|
- --out
|
|
- Temp/number_provenance_ledger_v4.json
|
|
depends_on:
|
|
- build_final_decision
|
|
id: build_provenance_ledger
|
|
inputs:
|
|
- tools/build_number_provenance_ledger_v4.py
|
|
- Temp/final_decision_packet_v4.json
|
|
outputs:
|
|
- Temp/number_provenance_ledger_v4.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_qualitative_sell_inputs:
|
|
artifact_policy: keep
|
|
cache_key: build_qualitative_sell_inputs_v1
|
|
command:
|
|
- python
|
|
- tools/build_qualitative_sell_inputs_v1.py
|
|
- --batch
|
|
- --workbook
|
|
- GatherTradingData.xlsx
|
|
- --apply
|
|
depends_on: []
|
|
id: build_qualitative_sell_inputs
|
|
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
|
|
note: Naver 시세/수급 실시간 스크래핑 의존(warn_only) — 보유종목별 비기계적 매도전략 confluence 판단. 공매도잔고율은
|
|
--short-csv 수동 주입 전까지 구조적으로 DATA_MISSING(추정 금지) — 정상 동작. 호가10단계·공매도거래비중은 --kis-account
|
|
{real,mock} 옵션으로 KIS Open API(read-only) 조회 가능(2026-06-21 연동) — DAG 기본 실행에는
|
|
미포함(자격증명 의존, 수동 실행 시에만 부여).
|
|
outputs:
|
|
- outputs/qualitative_sell_strategy/*.json
|
|
strict: false
|
|
timeout_sec: 120
|
|
warn_only: true
|
|
build_ratchet_trailing_general:
|
|
artifact_policy: keep
|
|
cache_key: build_ratchet_trailing_general_v1
|
|
command:
|
|
- python
|
|
- tools/build_ratchet_trailing_general_v1.py
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_ratchet_trailing_general
|
|
inputs:
|
|
- tools/build_ratchet_trailing_general_v1.py
|
|
- GatherTradingData.json
|
|
note: 'phase1_gate: profit ratchet coverage_pct >= 99 검증'
|
|
outputs:
|
|
- Temp/ratchet_trailing_general_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_realized_performance:
|
|
artifact_policy: keep
|
|
cache_key: build_realized_performance_v1
|
|
command:
|
|
- python
|
|
- tools/build_realized_performance_v1.py
|
|
depends_on:
|
|
- build_data_gated_progress
|
|
id: build_realized_performance
|
|
inputs:
|
|
- tools/build_realized_performance_v1.py
|
|
- GatherTradingData.json
|
|
- Temp/proposal_evaluation_history.json
|
|
note: WBS-4.1 realized performance replay summary — non-blocking diagnostic
|
|
outputs:
|
|
- Temp/realized_performance_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_rebalance_sheet:
|
|
artifact_policy: keep
|
|
cache_key: build_rebalance_engine_v1
|
|
command:
|
|
- python
|
|
- tools/build_rebalance_engine_v1.py
|
|
- --json
|
|
- GatherTradingData.json
|
|
- --harness
|
|
- Temp/computed_harness_v1.json
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_rebalance_sheet
|
|
inputs:
|
|
- tools/build_rebalance_engine_v1.py
|
|
- GatherTradingData.json
|
|
note: computed_harness_v1.json 없으면 regime=NEUTRAL fallback — WARN 허용
|
|
outputs:
|
|
- Temp/rebalance_engine_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_regime_trim_guidance:
|
|
artifact_policy: keep
|
|
cache_key: build_regime_trim_guidance_v1
|
|
command:
|
|
- python
|
|
- tools/build_regime_trim_guidance_v1.py
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_regime_trim_guidance
|
|
inputs:
|
|
- tools/build_regime_trim_guidance_v1.py
|
|
- GatherTradingData.json
|
|
note: REGIME_TRIM_GUIDANCE_V1 — regime_trim_guidance 딕셔너리 추출 (regime_trim_guidance_json)
|
|
outputs:
|
|
- Temp/regime_trim_guidance_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_report:
|
|
artifact_policy: keep
|
|
cache_key: build_report_v1
|
|
command:
|
|
- python
|
|
- tools/render_operational_report.py
|
|
- --json
|
|
- GatherTradingData.json
|
|
- --output
|
|
- Temp/operational_report.md
|
|
- --report-json-output
|
|
- Temp/operational_report.json
|
|
depends_on:
|
|
- convert_xlsx
|
|
- build_final_decision
|
|
id: build_report
|
|
inputs:
|
|
- tools/render_operational_report.py
|
|
- GatherTradingData.json
|
|
- Temp/final_decision_packet_active.json
|
|
outputs:
|
|
- Temp/operational_report.md
|
|
- Temp/operational_report.json
|
|
strict: true
|
|
timeout_sec: 60
|
|
build_routing_execution_log:
|
|
artifact_policy: keep
|
|
cache_key: build_routing_execution_log_v1
|
|
command:
|
|
- python
|
|
- tools/build_routing_execution_log_v1.py
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_routing_execution_log
|
|
inputs:
|
|
- tools/build_routing_execution_log_v1.py
|
|
- GatherTradingData.json
|
|
note: 'phase1_gate: routing decision path completeness + stage_coverage_pct/request_route'
|
|
outputs:
|
|
- Temp/routing_execution_log_v1.json
|
|
- Temp/routing_execution_log_table_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_satellite_candidate_recommendations:
|
|
artifact_policy: keep
|
|
cache_key: build_satellite_candidate_recommendations_v1
|
|
command:
|
|
- python
|
|
- tools/build_satellite_candidate_recommendations_v1.py
|
|
- --workbook
|
|
- GatherTradingData.xlsx
|
|
- --apply
|
|
depends_on: []
|
|
id: build_satellite_candidate_recommendations
|
|
inputs:
|
|
- tools/build_satellite_candidate_recommendations_v1.py
|
|
- tools/fetch_naver_market_data_v1.py
|
|
- GatherTradingData.xlsx
|
|
note: universe 시트 미보유 후보(60종) 전체 Naver 시세 조회 — warn_only. --trade-csv 없으면 sector_export_trend
|
|
전부 DATA_MISSING(정상, 추정 금지).
|
|
outputs:
|
|
- outputs/qualitative_sell_strategy/satellite_recommendations.json
|
|
strict: false
|
|
timeout_sec: 180
|
|
warn_only: true
|
|
build_schema_models:
|
|
artifact_policy: keep
|
|
cache_key: build_schema_models_v1
|
|
command:
|
|
- python
|
|
- tools/generate_models_from_schema.py
|
|
depends_on: []
|
|
id: build_schema_models
|
|
inputs:
|
|
- tools/generate_models_from_schema.py
|
|
- schemas/generated
|
|
outputs:
|
|
- Temp/schema_model_generation_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_sector_flow_history_progress:
|
|
artifact_policy: keep
|
|
cache_key: build_sector_flow_history_progress_v1
|
|
command:
|
|
- python
|
|
- tools/build_sector_flow_history_progress_v1.py
|
|
depends_on:
|
|
- build_data_gated_progress
|
|
id: build_sector_flow_history_progress
|
|
inputs:
|
|
- tools/build_sector_flow_history_progress_v1.py
|
|
- GatherTradingData.json
|
|
note: WBS-2.5 sector_flow_history 30일 누적 진척도 — non-blocking diagnostic
|
|
outputs:
|
|
- Temp/sector_flow_history_progress_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_sector_trend_analysis:
|
|
artifact_policy: keep
|
|
cache_key: build_sector_trend_analysis_v1
|
|
command:
|
|
- python
|
|
- tools/build_sector_trend_analysis_v1.py
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_sector_trend_analysis
|
|
inputs:
|
|
- tools/build_sector_trend_analysis_v1.py
|
|
- GatherTradingData.json
|
|
note: SECTOR_TREND_ANALYSIS_V1 — ETF proxy 기반 섹터 동향 + smart money 렌즈 집계
|
|
outputs:
|
|
- Temp/sector_trend_analysis_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_shadow_ledger:
|
|
artifact_policy: keep
|
|
cache_key: build_shadow_ledger_v2
|
|
command:
|
|
- python
|
|
- tools/build_shadow_ledger_v2.py
|
|
- --out
|
|
- Temp/shadow_ledger_v2.json
|
|
depends_on: []
|
|
id: build_shadow_ledger
|
|
inputs:
|
|
- tools/build_shadow_ledger_v2.py
|
|
outputs:
|
|
- Temp/shadow_ledger_v2.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_shadow_promotion:
|
|
artifact_policy: keep
|
|
cache_key: build_shadow_promotion_v1
|
|
command:
|
|
- python
|
|
- tools/build_shadow_promotion_scorecard_v1.py
|
|
- --shadow
|
|
- Temp/shadow_ledger_v2.json
|
|
- --live-replay
|
|
- Temp/live_replay_separation_v3.json
|
|
contract: spec/57_shadow_promotion_scorecard.yaml
|
|
depends_on:
|
|
- build_shadow_ledger
|
|
- build_live_replay_separation
|
|
id: build_shadow_promotion
|
|
inputs:
|
|
- tools/build_shadow_promotion_scorecard_v1.py
|
|
- Temp/shadow_ledger_v2.json
|
|
- Temp/live_replay_separation_v3.json
|
|
outputs:
|
|
- Temp/shadow_promotion_scorecard_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
build_smart_cash_recovery_v3:
|
|
artifact_policy: keep
|
|
cache_key: build_smart_cash_recovery_v3
|
|
command:
|
|
- python
|
|
- tools/build_smart_cash_recovery_v3.py
|
|
depends_on:
|
|
- build_value_preservation_scorer
|
|
id: build_smart_cash_recovery_v3
|
|
inputs:
|
|
- tools/build_smart_cash_recovery_v3.py
|
|
- GatherTradingData.json
|
|
- Temp/value_preservation_scorer_v1.json
|
|
note: 'phase1_gate: smart cash recovery V3 gate=PASS/CAUTION'
|
|
outputs:
|
|
- Temp/smart_cash_recovery_v3.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_strategy_routing_audit:
|
|
artifact_policy: keep
|
|
cache_key: build_strategy_routing_audit_v1
|
|
command:
|
|
- python
|
|
- tools/build_strategy_routing_audit_v1.py
|
|
depends_on:
|
|
- inject_harness
|
|
id: build_strategy_routing_audit
|
|
inputs:
|
|
- tools/build_strategy_routing_audit_v1.py
|
|
- GatherTradingData.json
|
|
- Temp/horizon_classification_v1.json
|
|
- Temp/capital_style_allocation_v1.json
|
|
note: routing_gate 공식 산출 — MID/SHORT/LONG 호라이즌 상한 검증
|
|
outputs:
|
|
- Temp/strategy_routing_audit_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_time_stop_forecast:
|
|
artifact_policy: keep
|
|
cache_key: build_time_stop_forecast_v1
|
|
command:
|
|
- python
|
|
- tools/build_time_stop_forecast_v1.py
|
|
- --harness
|
|
- Temp/computed_harness_v1.json
|
|
depends_on:
|
|
- build_formula_outputs
|
|
id: build_time_stop_forecast
|
|
inputs:
|
|
- tools/build_time_stop_forecast_v1.py
|
|
- Temp/computed_harness_v1.json
|
|
note: WARN 허용 (발동 임박 = 경고, 미발동 = PASS)
|
|
outputs:
|
|
- Temp/time_stop_forecast_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_value_preservation_scorer:
|
|
artifact_policy: keep
|
|
cache_key: build_value_preservation_scorer_v1
|
|
command:
|
|
- python
|
|
- tools/build_value_preservation_scorer_v1.py
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_value_preservation_scorer
|
|
inputs:
|
|
- tools/build_value_preservation_scorer_v1.py
|
|
- GatherTradingData.json
|
|
note: 'phase1_gate: value preservation gate=PASS/CAUTION/WATCH_PENDING_SAMPLE'
|
|
outputs:
|
|
- Temp/value_preservation_scorer_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
build_velocity:
|
|
artifact_policy: keep
|
|
cache_key: build_velocity_v1
|
|
command:
|
|
- python
|
|
- tools/build_velocity_v1.py
|
|
depends_on:
|
|
- convert_xlsx
|
|
id: build_velocity
|
|
inputs:
|
|
- tools/build_velocity_v1.py
|
|
- GatherTradingData.json
|
|
note: VELOCITY_V1 — velocity_1d/velocity_5d 포트폴리오 중앙값 집계 (anti_late_entry_json)
|
|
outputs:
|
|
- Temp/velocity_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
convert_xlsx:
|
|
artifact_policy: keep
|
|
cache_key: convert_xlsx_v1
|
|
command:
|
|
- python
|
|
- tools/convert_xlsx_to_json.py
|
|
depends_on: []
|
|
id: convert_xlsx
|
|
inputs:
|
|
- GatherTradingData.xlsx
|
|
outputs:
|
|
- GatherTradingData.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
finalize_packet:
|
|
artifact_policy: keep
|
|
cache_key: finalize_packet_v1
|
|
command:
|
|
- python
|
|
- tools/build_packet_from_context_v1.py
|
|
depends_on:
|
|
- inject_harness
|
|
id: finalize_packet
|
|
inputs:
|
|
- tools/build_packet_from_context_v1.py
|
|
- Temp/final_decision_packet_active.json
|
|
outputs:
|
|
- Temp/final_decision_packet_active.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
inject_harness:
|
|
artifact_policy: keep
|
|
cache_key: inject_harness_v1
|
|
command:
|
|
- python
|
|
- src/quant_engine/inject_computed_harness.py
|
|
- GatherTradingData.json
|
|
- --output
|
|
- Temp/final_decision_packet_active.json
|
|
depends_on:
|
|
- build_formula_outputs
|
|
id: inject_harness
|
|
inputs:
|
|
- src/quant_engine/inject_computed_harness.py
|
|
- GatherTradingData.json
|
|
- Temp/computed_harness_v1.json
|
|
outputs:
|
|
- Temp/final_decision_packet_active.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
prepare_zip:
|
|
artifact_policy: keep
|
|
cache_key: prepare_zip_v1
|
|
command:
|
|
- python
|
|
- tools/prepare_upload_zip.py
|
|
- --skip-validate
|
|
- --skip-convert
|
|
- --validation-mode
|
|
- package-only
|
|
depends_on:
|
|
- audit_entropy
|
|
- validate_execution_precedence_lock_v2
|
|
- validate_order_grammar_v1
|
|
- 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_low_capability_pipeline_todo_v2
|
|
- validate_golden_coverage
|
|
- validate_calibration
|
|
- validate_schema_model
|
|
- validate_gas_adapter
|
|
- build_gas_bundle
|
|
- validate_gas_adapter_contract
|
|
- validate_gas_bundle_sync
|
|
- 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_registry_v1
|
|
- 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
|
|
id: prepare_zip
|
|
inputs:
|
|
- tools/prepare_upload_zip.py
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 60
|
|
update_proposal_evaluation_history:
|
|
artifact_policy: keep
|
|
cache_key: update_proposal_evaluation_history_v2
|
|
command:
|
|
- python
|
|
- tools/update_proposal_evaluation_history.py
|
|
- --json
|
|
- GatherTradingData.json
|
|
- --history
|
|
- Temp/proposal_evaluation_history.json
|
|
depends_on:
|
|
- finalize_packet
|
|
id: update_proposal_evaluation_history
|
|
inputs:
|
|
- tools/update_proposal_evaluation_history.py
|
|
- GatherTradingData.json
|
|
note: PROPOSAL_EVALUATION_HISTORY — T+1/T+5/T+20 운영 성과 누적 (core_satellite +
|
|
order_blueprint 기반, 일간 idempotent)
|
|
outputs:
|
|
- Temp/proposal_evaluation_history.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
validate_active_manifest:
|
|
artifact_policy: keep
|
|
cache_key: validate_active_manifest_v1
|
|
command:
|
|
- python
|
|
- tools/validate_active_manifest.py
|
|
- --manifest
|
|
- runtime/active_artifact_manifest.yaml
|
|
- --strict
|
|
depends_on: []
|
|
id: validate_active_manifest
|
|
inputs:
|
|
- tools/validate_active_manifest.py
|
|
- runtime/active_artifact_manifest.yaml
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_agents_shrink:
|
|
artifact_policy: keep
|
|
cache_key: validate_agents_shrink_v1
|
|
command:
|
|
- python
|
|
- tools/validate_agents_shrink_v1.py
|
|
depends_on: []
|
|
id: validate_agents_shrink
|
|
inputs:
|
|
- tools/validate_agents_shrink_v1.py
|
|
- AGENTS.md
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_alpha_feedback_loop:
|
|
artifact_policy: keep
|
|
cache_key: validate_alpha_feedback_loop_v2
|
|
command:
|
|
- python
|
|
- tools/validate_alpha_feedback_loop_v2.py
|
|
depends_on:
|
|
- build_alpha_feedback_loop
|
|
id: validate_alpha_feedback_loop
|
|
inputs:
|
|
- tools/validate_alpha_feedback_loop_v2.py
|
|
- Temp/alpha_feedback_loop_v2.json
|
|
outputs:
|
|
- Temp/validate_alpha_feedback_loop_v2.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_anti_late_entry:
|
|
artifact_policy: keep
|
|
cache_key: validate_anti_late_entry_v1
|
|
command:
|
|
- python
|
|
- tools/validate_anti_late_entry_harness_v1.py
|
|
- --json
|
|
- Temp/late_chase_attribution_v2.json
|
|
depends_on:
|
|
- build_late_chase_attribution
|
|
id: validate_anti_late_entry
|
|
inputs:
|
|
- tools/validate_anti_late_entry_harness_v1.py
|
|
- Temp/late_chase_attribution_v2.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_anti_late_entry_gate_v5:
|
|
artifact_policy: keep
|
|
cache_key: validate_anti_late_entry_gate_v5
|
|
command:
|
|
- python
|
|
- tools/validate_anti_late_entry_gate_v5.py
|
|
depends_on: []
|
|
id: validate_anti_late_entry_gate_v5
|
|
inputs:
|
|
- tools/validate_anti_late_entry_gate_v5.py
|
|
- GatherTradingData.json
|
|
outputs:
|
|
- Temp/anti_late_entry_gate_validation_v5.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_architecture_boundaries:
|
|
artifact_policy: keep
|
|
cache_key: validate_architecture_boundaries_v2
|
|
command:
|
|
- python
|
|
- tools/validate_architecture_boundaries_v2.py
|
|
depends_on:
|
|
- build_architecture_boundaries
|
|
id: validate_architecture_boundaries
|
|
inputs:
|
|
- tools/validate_architecture_boundaries_v2.py
|
|
- Temp/architecture_boundaries_v2.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_artifact_chain_hash:
|
|
artifact_policy: keep
|
|
cache_key: validate_artifact_chain_hash_v4
|
|
command:
|
|
- python
|
|
- tools/validate_artifact_chain_hash_v4.py
|
|
depends_on:
|
|
- build_artifact_chain_hash
|
|
id: validate_artifact_chain_hash
|
|
inputs:
|
|
- tools/validate_artifact_chain_hash_v4.py
|
|
- Temp/artifact_chain_hash_v4.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_artifact_sync:
|
|
artifact_policy: keep
|
|
cache_key: validate_artifact_sync_v1
|
|
command:
|
|
- python
|
|
- tools/validate_artifact_sync_v1.py
|
|
- --engine-result
|
|
- Temp/engine_harness_gate_result.json
|
|
- --manifest
|
|
- runtime/active_artifact_manifest.yaml
|
|
- --registry
|
|
- Temp/formula_runtime_registry_v1.json
|
|
depends_on:
|
|
- validate_engine_health_card
|
|
id: validate_artifact_sync
|
|
inputs:
|
|
- tools/validate_artifact_sync_v1.py
|
|
- Temp/engine_harness_gate_result.json
|
|
- Temp/formula_runtime_registry_v1.json
|
|
- runtime/active_artifact_manifest.yaml
|
|
outputs: []
|
|
strict: false
|
|
timeout_sec: 30
|
|
warn_only: true
|
|
validate_calibration:
|
|
artifact_policy: keep
|
|
cache_key: validate_calibration_v1
|
|
command:
|
|
- python
|
|
- tools/validate_calibration_registry_v1.py
|
|
depends_on: []
|
|
id: validate_calibration
|
|
inputs:
|
|
- tools/validate_calibration_registry_v1.py
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_cash_floor_policy_v1:
|
|
artifact_policy: keep
|
|
cache_key: validate_cash_floor_policy_v1
|
|
command:
|
|
- python
|
|
- tools/validate_cash_floor_policy_v1.py
|
|
depends_on:
|
|
- build_report
|
|
id: validate_cash_floor_policy_v1
|
|
inputs:
|
|
- tools/validate_cash_floor_policy_v1.py
|
|
- GatherTradingData.json
|
|
- Temp/operational_report.json
|
|
outputs:
|
|
- Temp/cash_floor_policy_validation_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_cash_ledger:
|
|
artifact_policy: keep
|
|
cache_key: validate_cash_ledger_v2
|
|
command:
|
|
- python
|
|
- tools/validate_cash_ledger_v2.py
|
|
- --snapshot
|
|
- GatherTradingData.json
|
|
- --contract
|
|
- spec/15_account_snapshot_contract.yaml
|
|
depends_on: []
|
|
id: validate_cash_ledger
|
|
inputs:
|
|
- tools/validate_cash_ledger_v2.py
|
|
- GatherTradingData.json
|
|
- spec/15_account_snapshot_contract.yaml
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_change_requests:
|
|
artifact_policy: keep
|
|
cache_key: validate_change_requests_v1
|
|
command:
|
|
- python
|
|
- tools/validate_change_requests_v1.py
|
|
- --dir
|
|
- governance/change_requests
|
|
- --strict
|
|
depends_on: []
|
|
id: validate_change_requests
|
|
inputs:
|
|
- tools/validate_change_requests_v1.py
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_completion_harness_instructions:
|
|
artifact_policy: keep
|
|
cache_key: validate_completion_harness_instructions_v1
|
|
command:
|
|
- python
|
|
- tools/validate_completion_harness_instructions_v1.py
|
|
depends_on: []
|
|
id: validate_completion_harness_instructions
|
|
inputs:
|
|
- tools/validate_completion_harness_instructions_v1.py
|
|
- AGENTS.md
|
|
- REPORT_GUIDE.md
|
|
- docs/runbook.md
|
|
- docs/ROADMAP_WBS.md
|
|
- docs/doctrine.md
|
|
- prompts/analysis_prompt.md
|
|
- prompts/review_prompt.md
|
|
- prompts/capture_parse_prompt.md
|
|
- prompts/engine_audit_master_prompt_v2.md
|
|
- prompts/engine_audit_master_prompt_v3.md
|
|
- prompts/engine_audit_prompt.md
|
|
- prompts/low_capability_report_renderer.md
|
|
- prompts/report_renderer_prompt.md
|
|
- prompts/weekly_operational_report_master_prompt_v1.md
|
|
outputs:
|
|
- Temp/completion_harness_instructions_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_data_gated_progress:
|
|
artifact_policy: keep
|
|
cache_key: validate_data_gated_progress_v1
|
|
command:
|
|
- python
|
|
- tools/validate_data_gated_progress_v1.py
|
|
depends_on:
|
|
- build_data_gated_progress
|
|
id: validate_data_gated_progress
|
|
inputs:
|
|
- tools/validate_data_gated_progress_v1.py
|
|
- Temp/data_gated_progress_v1.json
|
|
note: WBS-4.x DATA_GATED 진척도 계약 검증
|
|
outputs:
|
|
- Temp/validate_data_gated_progress_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_decision_graph_precedence_v1:
|
|
artifact_policy: keep
|
|
cache_key: validate_decision_graph_precedence_v1
|
|
command:
|
|
- python
|
|
- tools/validate_decision_graph_precedence_v1.py
|
|
depends_on: []
|
|
id: validate_decision_graph_precedence_v1
|
|
inputs:
|
|
- tools/validate_decision_graph_precedence_v1.py
|
|
- spec/routing/decision_graph.yaml
|
|
outputs:
|
|
- Temp/decision_graph_precedence_validation_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_decision_trace:
|
|
artifact_policy: keep
|
|
cache_key: validate_decision_trace_v1
|
|
command:
|
|
- python
|
|
- tools/validate_decision_trace_replay_v1.py
|
|
- --packet
|
|
- Temp/final_decision_packet_active.json
|
|
- --harness
|
|
- Temp/computed_harness_v1.json
|
|
contract: spec/52_decision_trace_replay_contract.yaml
|
|
depends_on:
|
|
- finalize_packet
|
|
- build_formula_outputs
|
|
id: validate_decision_trace
|
|
inputs:
|
|
- tools/validate_decision_trace_replay_v1.py
|
|
- Temp/final_decision_packet_active.json
|
|
- Temp/computed_harness_v1.json
|
|
outputs:
|
|
- Temp/decision_trace_replay_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_docs_no_formula_duplication:
|
|
artifact_policy: keep
|
|
cache_key: validate_docs_no_formula_duplication_v1
|
|
command:
|
|
- python
|
|
- tools/validate_docs_no_formula_duplication_v1.py
|
|
depends_on: []
|
|
id: validate_docs_no_formula_duplication
|
|
inputs:
|
|
- tools/validate_docs_no_formula_duplication_v1.py
|
|
- AGENTS.md
|
|
- docs/doctrine.md
|
|
- docs/runbook.md
|
|
outputs:
|
|
- Temp/docs_no_formula_duplication_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_engine_health_card:
|
|
artifact_policy: keep
|
|
cache_key: validate_engine_health_card_v1
|
|
command:
|
|
- python
|
|
- tools/validate_engine_health_card_v1.py
|
|
- --json
|
|
- Temp/engine_health_card_v1.json
|
|
depends_on:
|
|
- build_engine_health_card
|
|
id: validate_engine_health_card
|
|
inputs:
|
|
- tools/validate_engine_health_card_v1.py
|
|
- Temp/engine_health_card_v1.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_execution_precedence_lock_v2:
|
|
artifact_policy: keep
|
|
cache_key: validate_execution_precedence_lock_v2
|
|
command:
|
|
- python
|
|
- tools/validate_execution_precedence_lock_v2.py
|
|
depends_on:
|
|
- build_honest_performance_guard
|
|
id: validate_execution_precedence_lock_v2
|
|
inputs:
|
|
- tools/validate_execution_precedence_lock_v2.py
|
|
- Temp/final_execution_decision_v4.json
|
|
outputs:
|
|
- Temp/execution_precedence_lock_v2.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_execution_sim:
|
|
artifact_policy: keep
|
|
cache_key: validate_execution_sim_v1
|
|
command:
|
|
- python
|
|
- tools/validate_execution_simulator_v1.py
|
|
- --packet
|
|
- Temp/final_decision_packet_active.json
|
|
contract: spec/55_execution_simulator_contract.yaml
|
|
depends_on:
|
|
- finalize_packet
|
|
id: validate_execution_sim
|
|
inputs:
|
|
- tools/validate_execution_simulator_v1.py
|
|
- Temp/final_decision_packet_active.json
|
|
outputs:
|
|
- Temp/execution_simulator_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_factor_conflict_precedence_v1:
|
|
artifact_policy: keep
|
|
cache_key: validate_factor_conflict_precedence_v1
|
|
command:
|
|
- python
|
|
- tools/validate_factor_conflict_precedence_v1.py
|
|
depends_on: []
|
|
id: validate_factor_conflict_precedence_v1
|
|
inputs:
|
|
- tools/validate_factor_conflict_precedence_v1.py
|
|
- spec/strategy/pre_distribution_early_warning_v4.yaml
|
|
- spec/strategy/smart_money_liquidity_gate_v1.yaml
|
|
- spec/09_decision_flow.yaml
|
|
- GatherTradingData.json
|
|
outputs:
|
|
- Temp/factor_conflict_precedence_validation_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_factor_conflicts:
|
|
artifact_policy: keep
|
|
cache_key: validate_factor_conflicts_v1
|
|
command:
|
|
- python
|
|
- tools/validate_factor_conflict_matrix_v1.py
|
|
- --taxonomy
|
|
- spec/43_quant_factor_taxonomy.yaml
|
|
- --packet
|
|
- Temp/final_decision_packet_active.json
|
|
contract: spec/53_factor_conflict_matrix.yaml
|
|
depends_on:
|
|
- finalize_packet
|
|
id: validate_factor_conflicts
|
|
inputs:
|
|
- tools/validate_factor_conflict_matrix_v1.py
|
|
- spec/43_quant_factor_taxonomy.yaml
|
|
- Temp/final_decision_packet_active.json
|
|
outputs:
|
|
- Temp/factor_conflict_matrix_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_factor_lifecycle:
|
|
artifact_policy: keep
|
|
cache_key: validate_factor_lifecycle_v1
|
|
command:
|
|
- python
|
|
- tools/validate_factor_lifecycle_v1.py
|
|
- --taxonomy
|
|
- spec/43_quant_factor_taxonomy.yaml
|
|
depends_on: []
|
|
id: validate_factor_lifecycle
|
|
inputs:
|
|
- tools/validate_factor_lifecycle_v1.py
|
|
- spec/43_quant_factor_taxonomy.yaml
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_factor_lifecycle_completeness:
|
|
artifact_policy: keep
|
|
cache_key: validate_factor_lifecycle_completeness_v1
|
|
command:
|
|
- python
|
|
- tools/validate_factor_lifecycle_completeness_v1.py
|
|
depends_on:
|
|
- build_factor_shadow_eligibility
|
|
id: validate_factor_lifecycle_completeness
|
|
inputs:
|
|
- tools/validate_factor_lifecycle_completeness_v1.py
|
|
- spec/factor_lifecycle_registry.yaml
|
|
- Temp/factor_shadow_eligibility_v1.json
|
|
outputs:
|
|
- Temp/factor_lifecycle_completeness_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_factor_lifecycle_registry_v1:
|
|
artifact_policy: keep
|
|
cache_key: validate_factor_lifecycle_registry_v1
|
|
command:
|
|
- python
|
|
- tools/validate_factor_lifecycle_registry_v1.py
|
|
depends_on: []
|
|
id: validate_factor_lifecycle_registry_v1
|
|
inputs:
|
|
- tools/validate_factor_lifecycle_registry_v1.py
|
|
- spec/43_quant_factor_taxonomy.yaml
|
|
- spec/factor_lifecycle_registry.yaml
|
|
outputs:
|
|
- Temp/factor_lifecycle_registry_validation_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_field_dict:
|
|
artifact_policy: keep
|
|
cache_key: validate_field_dict_v1
|
|
command:
|
|
- python
|
|
- tools/validate_field_dictionary.py
|
|
depends_on: []
|
|
id: validate_field_dict
|
|
inputs:
|
|
- tools/validate_field_dictionary.py
|
|
- spec/12_field_dictionary.yaml
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_gas_adapter:
|
|
artifact_policy: keep
|
|
cache_key: validate_gas_adapter_v1
|
|
command:
|
|
- python
|
|
- tools/validate_gas_thin_adapter_v1.py
|
|
depends_on: []
|
|
id: validate_gas_adapter
|
|
inputs:
|
|
- tools/validate_gas_thin_adapter_v1.py
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_gas_adapter_contract:
|
|
artifact_policy: keep
|
|
cache_key: validate_gas_adapter_contract_v1
|
|
command:
|
|
- python
|
|
- tools/validate_gas_adapter_contract_v1.py
|
|
depends_on: []
|
|
id: validate_gas_adapter_contract
|
|
inputs:
|
|
- tools/validate_gas_adapter_contract_v1.py
|
|
- spec/gas_adapter_contract.yaml
|
|
- schemas/generated/gas_adapter_contract.schema.json
|
|
- spec/14_raw_workbook_mapping.yaml
|
|
- spec/15_account_snapshot_contract.yaml
|
|
outputs:
|
|
- Temp/gas_adapter_contract_validation_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_gas_bundle_sync:
|
|
artifact_policy: keep
|
|
cache_key: validate_gas_bundle_sync_v1
|
|
command:
|
|
- python
|
|
- tools/validate_gas_bundle_sync_v1.py
|
|
depends_on:
|
|
- build_gas_bundle
|
|
id: validate_gas_bundle_sync
|
|
inputs:
|
|
- tools/validate_gas_bundle_sync_v1.py
|
|
- gas_lib.gs
|
|
- gas_data_collect.gs
|
|
- gas_data_feed.gs
|
|
- src/gas/core/gas_lib.gs
|
|
- src/gas_adapter_parts/gdc_01_fetch_fundamentals.gs
|
|
- src/gas_adapter_parts/gdc_02_account_satellite.gs
|
|
- src/gas_adapter_parts/gdf_01_price_metrics.gs
|
|
- src/gas_adapter_parts/gdf_02_harness_assembly.gs
|
|
- src/gas_adapter_parts/gdf_03_portfolio_gates.gs
|
|
- src/gas_adapter_parts/gdf_04_execution_quality.gs
|
|
- src/gas_adapter_parts/gdf_05_alpha_engines.gs
|
|
- src/gas_adapter_parts/gdf_06_rebalance.gs
|
|
outputs:
|
|
- Temp/gas_bundle_validation_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_golden_coverage:
|
|
artifact_policy: keep
|
|
cache_key: validate_golden_coverage_v1
|
|
command:
|
|
- python
|
|
- tools/validate_golden_coverage_100.py
|
|
depends_on: []
|
|
id: validate_golden_coverage
|
|
inputs:
|
|
- tools/validate_golden_coverage_100.py
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_honest_performance_guard_v1:
|
|
artifact_policy: keep
|
|
cache_key: validate_honest_performance_guard_v1
|
|
command:
|
|
- python
|
|
- tools/validate_honest_performance_guard_v1.py
|
|
depends_on:
|
|
- build_honest_performance_guard
|
|
id: validate_honest_performance_guard_v1
|
|
inputs:
|
|
- tools/validate_honest_performance_guard_v1.py
|
|
- Temp/prediction_accuracy_harness_v2.json
|
|
- Temp/honest_performance_guard_v1.json
|
|
outputs:
|
|
- Temp/honest_performance_guard_validation_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_json_generator_outputs:
|
|
artifact_policy: keep
|
|
cache_key: validate_json_generator_outputs_v1
|
|
command:
|
|
- python
|
|
- tools/validate_json_generator_outputs_v1.py
|
|
depends_on:
|
|
- inject_harness
|
|
- finalize_packet
|
|
- build_report
|
|
id: validate_json_generator_outputs
|
|
inputs:
|
|
- tools/validate_json_generator_outputs_v1.py
|
|
- Temp/computed_harness_v1.json
|
|
- Temp/final_decision_packet_active.json
|
|
- Temp/operational_report.json
|
|
outputs:
|
|
- Temp/json_generator_outputs_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_live_activation:
|
|
artifact_policy: keep
|
|
cache_key: validate_live_activation_v1
|
|
command:
|
|
- python
|
|
- tools/validate_live_data_activation_gate_v1.py
|
|
depends_on: []
|
|
id: validate_live_activation
|
|
inputs:
|
|
- tools/validate_live_data_activation_gate_v1.py
|
|
- Temp/continuous_evaluation_dashboard_v1.json
|
|
- Temp/prediction_accuracy_harness_v2.json
|
|
- Temp/algorithm_guidance_proof_v1.json
|
|
- Temp/pass_100_criteria_v3.json
|
|
note: PENDING(live_t20<30) = 정상. FAIL = 전환 조건 미충족. 2026-07-15 자동 활성화 예정.
|
|
outputs:
|
|
- Temp/live_data_activation_gate_v1.json
|
|
strict: false
|
|
timeout_sec: 30
|
|
validate_llm_copy_only:
|
|
artifact_policy: keep
|
|
cache_key: validate_llm_copy_only_v1
|
|
command:
|
|
- python
|
|
- tools/validate_llm_copy_only_output_v1.py
|
|
- --packet
|
|
- Temp/final_decision_packet_active.json
|
|
- --report
|
|
- Temp/operational_report.json
|
|
depends_on:
|
|
- build_report
|
|
- build_final_decision
|
|
id: validate_llm_copy_only
|
|
inputs:
|
|
- tools/validate_llm_copy_only_output_v1.py
|
|
- Temp/final_decision_packet_active.json
|
|
- Temp/operational_report.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_llm_determinism:
|
|
artifact_policy: keep
|
|
cache_key: validate_llm_determinism_v1
|
|
command:
|
|
- python
|
|
- tools/validate_llm_determinism_pack_v1.py
|
|
- --context
|
|
- Temp/final_context_for_llm_v5.yaml
|
|
contract: spec/58_llm_determinism_contract.yaml
|
|
depends_on:
|
|
- build_final_context
|
|
id: validate_llm_determinism
|
|
inputs:
|
|
- tools/validate_llm_determinism_pack_v1.py
|
|
- Temp/final_context_for_llm_v5.yaml
|
|
outputs:
|
|
- Temp/llm_determinism_pack_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_llm_regression:
|
|
artifact_policy: keep
|
|
cache_key: validate_llm_regression_v1
|
|
command:
|
|
- python
|
|
- tools/run_low_capability_llm_regression_v1.py
|
|
- --fixture
|
|
- tests/llm_regression
|
|
- --context
|
|
- Temp/final_context_for_llm_v5.yaml
|
|
depends_on:
|
|
- build_final_context
|
|
id: validate_llm_regression
|
|
inputs:
|
|
- tools/run_low_capability_llm_regression_v1.py
|
|
- Temp/final_context_for_llm_v5.yaml
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_low_capability:
|
|
artifact_policy: keep
|
|
cache_key: validate_low_capability_v1
|
|
command:
|
|
- python
|
|
- tools/validate_low_capability_pack_v1.py
|
|
- --context
|
|
- Temp/final_context_for_llm_v5.yaml
|
|
- --contract
|
|
- spec/46_low_capability_execution_pack.yaml
|
|
depends_on:
|
|
- build_final_context
|
|
id: validate_low_capability
|
|
inputs:
|
|
- tools/validate_low_capability_pack_v1.py
|
|
- Temp/final_context_for_llm_v5.yaml
|
|
- spec/46_low_capability_execution_pack.yaml
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_low_capability_pipeline_todo_v2:
|
|
artifact_policy: keep
|
|
cache_key: validate_low_capability_pipeline_todo_v2
|
|
command:
|
|
- python
|
|
- tools/validate_low_capability_pipeline_todo_v2.py
|
|
depends_on: []
|
|
id: validate_low_capability_pipeline_todo_v2
|
|
inputs:
|
|
- tools/validate_low_capability_pipeline_todo_v2.py
|
|
- spec/23_low_capability_llm_pipeline_todo.yaml
|
|
outputs:
|
|
- Temp/low_capability_pipeline_todo_validation_v2.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_metric_alias_collision:
|
|
artifact_policy: keep
|
|
cache_key: validate_metric_alias_collision_v1
|
|
command:
|
|
- python
|
|
- tools/validate_metric_alias_collision_v1.py
|
|
- --registry
|
|
- spec/25_canonical_metrics_registry.yaml
|
|
- --report
|
|
- Temp/operational_report.json
|
|
depends_on: []
|
|
id: validate_metric_alias_collision
|
|
inputs:
|
|
- tools/validate_metric_alias_collision_v1.py
|
|
- spec/25_canonical_metrics_registry.yaml
|
|
- Temp/operational_report.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_module_io_coverage:
|
|
artifact_policy: keep
|
|
cache_key: validate_module_io_coverage_v1
|
|
command:
|
|
- python
|
|
- tools/validate_module_io_coverage_v1.py
|
|
depends_on:
|
|
- build_module_io_coverage
|
|
id: validate_module_io_coverage
|
|
inputs:
|
|
- tools/validate_module_io_coverage_v1.py
|
|
- Temp/module_io_coverage_v1.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_no_direct_api_trading:
|
|
artifact_policy: keep
|
|
cache_key: validate_no_direct_api_trading_v1
|
|
command:
|
|
- python
|
|
- tools/validate_no_direct_api_trading_v1.py
|
|
depends_on: []
|
|
id: validate_no_direct_api_trading
|
|
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
|
|
note: '[CRITICAL] 매수/매도 API 직접 실행 절대 금지 게이트 — warn_only 불가, 완화 대상 아님(사용자 직접
|
|
지시 2026-06-21). 순수 stdlib만 사용해 Synology ARMv7 CI에서도 항상 실행 가능.'
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_no_lookahead:
|
|
artifact_policy: keep
|
|
cache_key: validate_no_lookahead_v1
|
|
command:
|
|
- python
|
|
- tools/validate_no_lookahead_bias_v1.py
|
|
- --harness
|
|
- Temp/computed_harness_v1.json
|
|
contract: spec/54_temporal_data_integrity.yaml
|
|
depends_on:
|
|
- build_formula_outputs
|
|
id: validate_no_lookahead
|
|
inputs:
|
|
- tools/validate_no_lookahead_bias_v1.py
|
|
- Temp/computed_harness_v1.json
|
|
outputs:
|
|
- Temp/no_lookahead_bias_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_no_replay_live_mix:
|
|
artifact_policy: keep
|
|
cache_key: validate_no_replay_live_mix_v2
|
|
command:
|
|
- python
|
|
- tools/validate_no_replay_live_mix_v2.py
|
|
- --json
|
|
- Temp/live_replay_separation_v3.json
|
|
- --strict
|
|
depends_on:
|
|
- build_live_replay_separation
|
|
id: validate_no_replay_live_mix
|
|
inputs:
|
|
- tools/validate_no_replay_live_mix_v2.py
|
|
- Temp/live_replay_separation_v3.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_operational_alpha_calibration:
|
|
artifact_policy: keep
|
|
cache_key: validate_operational_alpha_calibration_v2
|
|
command:
|
|
- python
|
|
- tools/validate_operational_alpha_calibration_v2.py
|
|
depends_on:
|
|
- build_operational_alpha_calibration
|
|
id: validate_operational_alpha_calibration
|
|
inputs:
|
|
- tools/validate_operational_alpha_calibration_v2.py
|
|
- Temp/operational_alpha_calibration_v2.json
|
|
outputs:
|
|
- Temp/validate_operational_alpha_calibration_v2.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_order_grammar_v1:
|
|
artifact_policy: keep
|
|
cache_key: validate_order_grammar_v1
|
|
command:
|
|
- python
|
|
- tools/validate_order_grammar_v1.py
|
|
depends_on:
|
|
- build_honest_performance_guard
|
|
id: validate_order_grammar_v1
|
|
inputs:
|
|
- tools/validate_order_grammar_v1.py
|
|
- GatherTradingData.json
|
|
outputs:
|
|
- Temp/order_grammar_validation_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_packaged_refs:
|
|
artifact_policy: keep
|
|
cache_key: validate_packaged_refs_v1
|
|
command:
|
|
- python
|
|
- tools/validate_packaged_artifact_references_v1.py
|
|
- --strict
|
|
depends_on: []
|
|
id: validate_packaged_refs
|
|
inputs:
|
|
- tools/validate_packaged_artifact_references_v1.py
|
|
- runtime/active_artifact_manifest.yaml
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_position_sizing:
|
|
artifact_policy: keep
|
|
cache_key: validate_position_sizing
|
|
command:
|
|
- python
|
|
- tools/validate_position_sizing.py
|
|
depends_on:
|
|
- build_report
|
|
id: validate_position_sizing
|
|
inputs:
|
|
- tools/validate_position_sizing.py
|
|
- spec/01_objective_profile.yaml
|
|
- Temp/goal_risk_budget_harness_v3.json
|
|
outputs:
|
|
- Temp/position_sizing_validation_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_prediction_accuracy_harness:
|
|
artifact_policy: keep
|
|
cache_key: validate_prediction_accuracy_harness_v2
|
|
command:
|
|
- python
|
|
- tools/validate_prediction_accuracy_harness_v2.py
|
|
depends_on:
|
|
- build_prediction_accuracy_harness
|
|
id: validate_prediction_accuracy_harness
|
|
inputs:
|
|
- tools/validate_prediction_accuracy_harness_v2.py
|
|
- Temp/prediction_accuracy_harness_v2.json
|
|
outputs:
|
|
- Temp/validate_prediction_accuracy_harness_v2.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_property_invariants:
|
|
artifact_policy: keep
|
|
cache_key: validate_property_invariants_v1
|
|
command:
|
|
- python
|
|
- tools/run_property_tests_v1.py
|
|
depends_on: []
|
|
id: validate_property_invariants
|
|
inputs:
|
|
- tools/run_property_tests_v1.py
|
|
- spec/property_invariants.yaml
|
|
outputs:
|
|
- Temp/property_test_result_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_provenance:
|
|
artifact_policy: keep
|
|
cache_key: validate_provenance_v1
|
|
command:
|
|
- python
|
|
- tools/validate_number_provenance_strict_v3.py
|
|
- --ledger
|
|
- Temp/number_provenance_ledger_v4.json
|
|
- --report
|
|
- Temp/operational_report.md
|
|
depends_on:
|
|
- build_provenance_ledger
|
|
- build_report
|
|
id: validate_provenance
|
|
inputs:
|
|
- tools/validate_number_provenance_strict_v3.py
|
|
- Temp/number_provenance_ledger_v4.json
|
|
- Temp/operational_report.md
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_realized_performance:
|
|
artifact_policy: keep
|
|
cache_key: validate_realized_performance_v1
|
|
command:
|
|
- python
|
|
- tools/validate_realized_performance_v1.py
|
|
depends_on:
|
|
- build_realized_performance
|
|
id: validate_realized_performance
|
|
inputs:
|
|
- tools/validate_realized_performance_v1.py
|
|
- Temp/realized_performance_v1.json
|
|
note: REALIZED_PERFORMANCE_V1 output schema and evidence validation
|
|
outputs:
|
|
- Temp/validate_realized_performance_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_render_diff:
|
|
artifact_policy: keep
|
|
cache_key: validate_render_diff_v1
|
|
command:
|
|
- python
|
|
- tools/validate_report_render_diff_v1.py
|
|
- --packet
|
|
- Temp/final_decision_packet_active.json
|
|
- --report
|
|
- Temp/operational_report.json
|
|
contract: spec/56_renderer_copy_only_contract.yaml
|
|
depends_on:
|
|
- build_report
|
|
- finalize_packet
|
|
id: validate_render_diff
|
|
inputs:
|
|
- tools/validate_report_render_diff_v1.py
|
|
- Temp/final_decision_packet_active.json
|
|
- Temp/operational_report.json
|
|
outputs:
|
|
- Temp/report_render_diff_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_renderer_no_calc:
|
|
artifact_policy: keep
|
|
cache_key: validate_renderer_no_calc_v1
|
|
command:
|
|
- python
|
|
- tools/validate_renderer_no_calculation_v1.py
|
|
depends_on: []
|
|
id: validate_renderer_no_calc
|
|
inputs:
|
|
- tools/validate_renderer_no_calculation_v1.py
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_report_numeric_consistency:
|
|
artifact_policy: keep
|
|
cache_key: validate_report_numeric_consistency_v1
|
|
command:
|
|
- python
|
|
- tools/validate_report_numeric_consistency_guard_v2.py
|
|
- --packet
|
|
- Temp/final_decision_packet_active.json
|
|
- --report
|
|
- Temp/operational_report.json
|
|
depends_on:
|
|
- build_report
|
|
id: validate_report_numeric_consistency
|
|
inputs:
|
|
- tools/validate_report_numeric_consistency_guard_v2.py
|
|
- Temp/final_decision_packet_active.json
|
|
- Temp/operational_report.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_report_section_completeness:
|
|
artifact_policy: keep
|
|
cache_key: validate_report_section_completeness_v1
|
|
command:
|
|
- python
|
|
- tools/validate_report_section_completeness_v1.py
|
|
- --report-json
|
|
- Temp/operational_report.json
|
|
depends_on:
|
|
- build_report
|
|
id: validate_report_section_completeness
|
|
inputs:
|
|
- tools/validate_report_section_completeness_v1.py
|
|
- Temp/operational_report.json
|
|
outputs:
|
|
- Temp/report_section_completeness.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_report_sync:
|
|
artifact_policy: keep
|
|
cache_key: validate_report_sync_v1
|
|
command:
|
|
- python
|
|
- tools/validate_report_packet_sync_v1.py
|
|
- --packet
|
|
- Temp/final_decision_packet_active.json
|
|
- --report
|
|
- Temp/operational_report.json
|
|
depends_on:
|
|
- build_report
|
|
id: validate_report_sync
|
|
inputs:
|
|
- tools/validate_report_packet_sync_v1.py
|
|
- Temp/final_decision_packet_active.json
|
|
- Temp/operational_report.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_rule_lifecycle:
|
|
artifact_policy: keep
|
|
cache_key: validate_rule_lifecycle_v2
|
|
command:
|
|
- python
|
|
- tools/validate_rule_lifecycle_v2.py
|
|
- --strict
|
|
depends_on:
|
|
- build_shadow_ledger
|
|
id: validate_rule_lifecycle
|
|
inputs:
|
|
- tools/validate_rule_lifecycle_v2.py
|
|
- Temp/shadow_ledger_v2.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_runtime_source_whitelist:
|
|
artifact_policy: keep
|
|
cache_key: validate_runtime_source_whitelist_v1
|
|
command:
|
|
- python
|
|
- tools/validate_runtime_source_whitelist_v1.py
|
|
- --manifest
|
|
- runtime/active_artifact_manifest.yaml
|
|
- --scan
|
|
- src
|
|
- gas_*.gs
|
|
depends_on: []
|
|
id: validate_runtime_source_whitelist
|
|
inputs:
|
|
- tools/validate_runtime_source_whitelist_v1.py
|
|
- runtime/active_artifact_manifest.yaml
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_schema_model:
|
|
artifact_policy: keep
|
|
cache_key: validate_schema_model_v1
|
|
command:
|
|
- python
|
|
- tools/validate_schema_model_generation_v1.py
|
|
depends_on:
|
|
- build_schema_models
|
|
id: validate_schema_model
|
|
inputs:
|
|
- tools/validate_schema_model_generation_v1.py
|
|
- Temp/schema_model_generation_v1.json
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_sector_flow_history_progress:
|
|
artifact_policy: keep
|
|
cache_key: validate_sector_flow_history_progress_v1
|
|
command:
|
|
- python
|
|
- tools/validate_sector_flow_history_progress_v1.py
|
|
depends_on:
|
|
- build_sector_flow_history_progress
|
|
id: validate_sector_flow_history_progress
|
|
inputs:
|
|
- tools/validate_sector_flow_history_progress_v1.py
|
|
- Temp/sector_flow_history_progress_v1.json
|
|
outputs:
|
|
- Temp/validate_sector_flow_history_progress_v1.json
|
|
strict: true
|
|
timeout_sec: 30
|
|
validate_sector_universe_monthly_refresh:
|
|
artifact_policy: keep
|
|
cache_key: validate_sector_universe_monthly_refresh_v1
|
|
command:
|
|
- python
|
|
- tools/validate_sector_universe_monthly_refresh_v1.py
|
|
depends_on: []
|
|
id: validate_sector_universe_monthly_refresh
|
|
inputs:
|
|
- tools/validate_sector_universe_monthly_refresh_v1.py
|
|
- GatherTradingData.xlsx
|
|
note: 섹터 유니버스 월간 갱신 provenance 검증 (warn_only) — GAS 재다운로드 시 Source_URL 소실이 정상.
|
|
월간 --apply 실행 후 PASS/WARN 달성. FAIL=비차단 경고만.
|
|
outputs:
|
|
- Temp/sector_universe_refresh_validation.json
|
|
strict: false
|
|
timeout_sec: 60
|
|
warn_only: true
|
|
validate_specs:
|
|
artifact_policy: keep
|
|
cache_key: validate_specs_v1
|
|
command:
|
|
- python
|
|
- tools/validate_specs.py
|
|
depends_on: []
|
|
id: validate_specs
|
|
inputs:
|
|
- tools/validate_specs.py
|
|
- spec/13_formula_registry.yaml
|
|
outputs: []
|
|
strict: true
|
|
timeout_sec: 60
|
|
execution_order:
|
|
wave_0:
|
|
- audit_entropy
|
|
- build_bundle
|
|
- build_gas_bundle
|
|
- build_macro_event_ticker_impact
|
|
- build_engine_health_card
|
|
- build_late_chase_attribution
|
|
- build_live_replay_separation
|
|
- build_module_io_coverage
|
|
- build_operating_cadence_signal
|
|
- build_profit_giveback_ratchet
|
|
- build_schema_models
|
|
- build_shadow_ledger
|
|
- convert_xlsx
|
|
- validate_active_manifest
|
|
- validate_agents_shrink
|
|
- validate_docs_no_formula_duplication
|
|
- validate_calibration
|
|
- validate_cash_ledger
|
|
- validate_change_requests
|
|
- validate_completion_harness_instructions
|
|
- validate_factor_lifecycle
|
|
- validate_factor_lifecycle_registry_v1
|
|
- validate_factor_lifecycle_completeness
|
|
- validate_field_dict
|
|
- validate_gas_adapter
|
|
- validate_gas_adapter_contract
|
|
- validate_golden_coverage
|
|
- validate_live_activation
|
|
- validate_metric_alias_collision
|
|
- validate_packaged_refs
|
|
- validate_property_invariants
|
|
- validate_renderer_no_calc
|
|
- validate_runtime_source_whitelist
|
|
- validate_sector_universe_monthly_refresh
|
|
- validate_specs
|
|
wave_1:
|
|
- validate_gas_bundle_sync
|
|
- build_anti_whipsaw_gate
|
|
- build_data_gated_progress
|
|
- build_ejce_view_renderer
|
|
- build_etf_representative_monitor
|
|
- build_factor_shadow_eligibility
|
|
- build_formula_outputs
|
|
- build_sector_flow_history_progress
|
|
- build_realized_performance
|
|
- build_missing_formula_bridge
|
|
- build_ratchet_trailing_general
|
|
- build_rebalance_sheet
|
|
- build_regime_trim_guidance
|
|
- build_routing_execution_log
|
|
- build_sector_trend_analysis
|
|
- build_shadow_promotion
|
|
- build_value_preservation_scorer
|
|
- build_velocity
|
|
- validate_anti_late_entry
|
|
- validate_engine_health_card
|
|
- validate_module_io_coverage
|
|
- validate_no_replay_live_mix
|
|
- validate_realized_performance
|
|
- validate_rule_lifecycle
|
|
- validate_schema_model
|
|
wave_2:
|
|
- build_smart_cash_recovery_v3
|
|
- build_time_stop_forecast
|
|
- inject_harness
|
|
- validate_artifact_sync
|
|
- validate_no_lookahead
|
|
wave_3:
|
|
- apply_strategy_execution_locks
|
|
- build_strategy_routing_audit
|
|
- finalize_packet
|
|
wave_4:
|
|
- build_final_decision
|
|
- build_horizon_rebalance_plan
|
|
- validate_decision_trace
|
|
- validate_execution_sim
|
|
- validate_factor_conflicts
|
|
wave_5:
|
|
- build_final_context
|
|
- build_provenance_ledger
|
|
- build_report
|
|
- update_proposal_evaluation_history
|
|
- build_operational_eval_queue
|
|
- build_operational_outcome_lock
|
|
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
|
|
- build_prediction_accuracy_harness
|
|
- validate_data_gated_progress
|
|
- validate_sector_flow_history_progress
|
|
- validate_json_generator_outputs
|
|
- validate_alpha_feedback_loop
|
|
- validate_llm_copy_only
|
|
- validate_llm_determinism
|
|
- validate_llm_regression
|
|
- validate_low_capability
|
|
- validate_low_capability_pipeline_todo_v2
|
|
- validate_execution_precedence_lock_v2
|
|
- validate_order_grammar_v1
|
|
- validate_provenance
|
|
- validate_prediction_accuracy_harness
|
|
- validate_operational_alpha_calibration
|
|
- validate_render_diff
|
|
- validate_report_numeric_consistency
|
|
- validate_report_section_completeness
|
|
- validate_report_sync
|
|
wave_7:
|
|
- build_architecture_boundaries
|
|
- validate_artifact_chain_hash
|
|
wave_8:
|
|
- validate_architecture_boundaries
|
|
wave_9:
|
|
- prepare_zip
|
|
goal: Linearize package.json scripts into a validated DAG execution graph.
|
|
has_code_implementation: true
|
|
meta:
|
|
code_path: tools/run_release_dag_v3.py
|
|
has_code_implementation: true
|
|
schema_version: release_dag.v3
|
|
step_count: 104
|