94d8bb20fc
## Cell Coverage 개선 (88.75% → 100%) - tools/build_anti_whipsaw_gate_v1.py: anti_whipsaw_status 스칼라 추출 → anti_whipsaw_gate_v1.json - tools/build_velocity_v1.py: velocity_1d/5d 포트폴리오 중앙값 집계 → velocity_v1.json - tools/build_regime_trim_guidance_v1.py: regime_trim_guidance dict 추출 → regime_trim_guidance_v1.json - tools/build_routing_execution_log_v1.py: request_route + stage_coverage_pct 주입, routing_execution_log_table_v1.json 추가 출력 - tools/build_smart_cash_recovery_v3.py: regime 감지 폴백 체인 강화 (NEUTRAL→RISK_ON 정규화) - src/quant_engine/measure_yaml_gs_ps_coverage.py: 5개 신규 Temp 파일 temp_outputs 등록 ## DAG 등록 (spec/41) - step_count: 77 → 81 - wave_1 신규: build_anti_whipsaw_gate, build_velocity, build_regime_trim_guidance, build_missing_formula_bridge - build_routing_execution_log: outputs에 routing_execution_log_table_v1.json 추가 ## 세션15/16 Pending Fixes - tools/build_late_chase_attribution_v1.py: stdout UTF-8 reconfigure - tools/build_trade_quality_from_t5_v1.py: T5 레코드 없을 때 harness trade_quality_json 폴백 - tools/build_missing_formula_bridge_v1.py: 10개 공식 앵커 브리지 (harness auditor 등록) - tools/harness_coverage_auditor.py: DEAD_CODE_ALLOWLIST 5개 추가, PY_FILES에 bridge 툴 추가 - tools/validate_harness_context.py: 빈 blueprint 체크섬 0 처리 - runtime/refactor_baseline_v1.yaml: 카운트 업데이트 honest_proof_score: 49.49 → 50.89 (structure 92.69→99.68) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1082 lines
46 KiB
YAML
1082 lines
46 KiB
YAML
schema_version: release_dag.v3
|
|
step_count: 81
|
|
goal: Linearize package.json scripts into a validated DAG execution graph.
|
|
execution_order:
|
|
# 토폴로지 정렬 기준 병렬 실행 wave (의존성 없는 노드들을 동시에 실행 가능)
|
|
wave_0:
|
|
- audit_entropy
|
|
- build_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_calibration
|
|
- validate_cash_ledger
|
|
- validate_change_requests
|
|
- validate_factor_lifecycle
|
|
- validate_factor_lifecycle_completeness
|
|
- validate_field_dict
|
|
- validate_gas_adapter
|
|
- 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_specs
|
|
wave_1:
|
|
- build_anti_whipsaw_gate
|
|
- build_data_gated_progress
|
|
- build_ejce_view_renderer
|
|
- build_factor_shadow_eligibility
|
|
- build_formula_outputs
|
|
- build_missing_formula_bridge
|
|
- build_ratchet_trailing_general
|
|
- build_rebalance_sheet
|
|
- build_regime_trim_guidance
|
|
- build_routing_execution_log
|
|
- 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_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
|
|
wave_6:
|
|
- build_algorithm_guidance_proof
|
|
- build_artifact_chain_hash
|
|
- build_honest_proof_gap_analyzer
|
|
- validate_json_generator_outputs
|
|
- validate_llm_copy_only
|
|
- validate_llm_determinism
|
|
- validate_llm_regression
|
|
- validate_low_capability
|
|
- validate_provenance
|
|
- 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
|
|
dag:
|
|
nodes:
|
|
convert_xlsx:
|
|
id: convert_xlsx
|
|
command: ["python", "tools/convert_xlsx_to_json.py"]
|
|
inputs: ["GatherTradingData.xlsx"]
|
|
outputs: ["GatherTradingData.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "convert_xlsx_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_macro_event_ticker_impact:
|
|
id: build_macro_event_ticker_impact
|
|
command: ["python", "tools/build_macro_event_ticker_impact_v1.py"]
|
|
inputs: ["tools/build_macro_event_ticker_impact_v1.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/macro_event_ticker_impact_v1.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_macro_event_ticker_impact_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "core_satellite 종목별 매크로 이벤트 임팩트 레지스터 — MACRO_EVENT_TICKER_IMPACT_V1"
|
|
|
|
build_formula_outputs:
|
|
id: build_formula_outputs
|
|
command: ["python", "src/quant_engine/compute_formula_outputs.py", "--output", "Temp/computed_harness_v1.json"]
|
|
inputs: ["src/quant_engine/compute_formula_outputs.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/computed_harness_v1.json"]
|
|
depends_on: ["convert_xlsx"]
|
|
timeout_sec: 30
|
|
cache_key: "build_formula_outputs_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_data_gated_progress:
|
|
id: build_data_gated_progress
|
|
command: ["python", "tools/build_data_gated_progress_v1.py"]
|
|
inputs: ["tools/build_data_gated_progress_v1.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/data_gated_progress_v1.json"]
|
|
depends_on: ["build_live_replay_separation"]
|
|
timeout_sec: 30
|
|
cache_key: "build_data_gated_progress_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "DATA_GATED 항목별 실측 진척도 — non-blocking diagnostic"
|
|
|
|
build_factor_shadow_eligibility:
|
|
id: build_factor_shadow_eligibility
|
|
command: ["python", "tools/build_factor_shadow_eligibility_v1.py"]
|
|
inputs: ["tools/build_factor_shadow_eligibility_v1.py", "GatherTradingData.json", "spec/factor_lifecycle_registry.yaml"]
|
|
outputs: ["Temp/factor_shadow_eligibility_v1.json"]
|
|
depends_on: ["convert_xlsx"]
|
|
timeout_sec: 30
|
|
cache_key: "build_factor_shadow_eligibility_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "149개 팩터 shadow 승격 자격 평가 — non-blocking diagnostic"
|
|
|
|
build_ejce_view_renderer:
|
|
id: build_ejce_view_renderer
|
|
command: ["python", "tools/build_ejce_view_renderer_v1.py"]
|
|
inputs: ["tools/build_ejce_view_renderer_v1.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/ejce_view_renderer_v1.json"]
|
|
depends_on: ["convert_xlsx"]
|
|
timeout_sec: 30
|
|
cache_key: "build_ejce_view_renderer_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "phase1_gate: blank_view_count=0 검증"
|
|
|
|
build_ratchet_trailing_general:
|
|
id: build_ratchet_trailing_general
|
|
command: ["python", "tools/build_ratchet_trailing_general_v1.py"]
|
|
inputs: ["tools/build_ratchet_trailing_general_v1.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/ratchet_trailing_general_v1.json"]
|
|
depends_on: ["convert_xlsx"]
|
|
timeout_sec: 30
|
|
cache_key: "build_ratchet_trailing_general_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "phase1_gate: profit ratchet coverage_pct >= 99 검증"
|
|
|
|
build_anti_whipsaw_gate:
|
|
id: build_anti_whipsaw_gate
|
|
command: ["python", "tools/build_anti_whipsaw_gate_v1.py"]
|
|
inputs: ["tools/build_anti_whipsaw_gate_v1.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/anti_whipsaw_gate_v1.json"]
|
|
depends_on: ["convert_xlsx"]
|
|
timeout_sec: 30
|
|
cache_key: "build_anti_whipsaw_gate_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "ANTI_WHIPSAW_GATE_V1 — anti_whipsaw_status 스칼라 추출 (anti_whipsaw_gate_json)"
|
|
|
|
build_velocity:
|
|
id: build_velocity
|
|
command: ["python", "tools/build_velocity_v1.py"]
|
|
inputs: ["tools/build_velocity_v1.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/velocity_v1.json"]
|
|
depends_on: ["convert_xlsx"]
|
|
timeout_sec: 30
|
|
cache_key: "build_velocity_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "VELOCITY_V1 — velocity_1d/velocity_5d 포트폴리오 중앙값 집계 (anti_late_entry_json)"
|
|
|
|
build_regime_trim_guidance:
|
|
id: build_regime_trim_guidance
|
|
command: ["python", "tools/build_regime_trim_guidance_v1.py"]
|
|
inputs: ["tools/build_regime_trim_guidance_v1.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/regime_trim_guidance_v1.json"]
|
|
depends_on: ["convert_xlsx"]
|
|
timeout_sec: 30
|
|
cache_key: "build_regime_trim_guidance_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "REGIME_TRIM_GUIDANCE_V1 — regime_trim_guidance 딕셔너리 추출 (regime_trim_guidance_json)"
|
|
|
|
build_missing_formula_bridge:
|
|
id: build_missing_formula_bridge
|
|
command: ["python", "tools/build_missing_formula_bridge_v1.py"]
|
|
inputs: ["tools/build_missing_formula_bridge_v1.py"]
|
|
outputs: ["Temp/missing_formula_bridge_v1.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_missing_formula_bridge_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "MISSING_FORMULA_BRIDGE_V1 — 10개 공식 커버리지 앵커 등록 (harness auditor PY_FILES)"
|
|
|
|
build_routing_execution_log:
|
|
id: build_routing_execution_log
|
|
command: ["python", "tools/build_routing_execution_log_v1.py"]
|
|
inputs: ["tools/build_routing_execution_log_v1.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/routing_execution_log_v1.json", "Temp/routing_execution_log_table_v1.json"]
|
|
depends_on: ["convert_xlsx"]
|
|
timeout_sec: 30
|
|
cache_key: "build_routing_execution_log_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "phase1_gate: routing decision path completeness + stage_coverage_pct/request_route"
|
|
|
|
build_value_preservation_scorer:
|
|
id: build_value_preservation_scorer
|
|
command: ["python", "tools/build_value_preservation_scorer_v1.py"]
|
|
inputs: ["tools/build_value_preservation_scorer_v1.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/value_preservation_scorer_v1.json"]
|
|
depends_on: ["convert_xlsx"]
|
|
timeout_sec: 30
|
|
cache_key: "build_value_preservation_scorer_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "phase1_gate: value preservation gate=PASS/CAUTION/WATCH_PENDING_SAMPLE"
|
|
|
|
build_smart_cash_recovery_v3:
|
|
id: build_smart_cash_recovery_v3
|
|
command: ["python", "tools/build_smart_cash_recovery_v3.py"]
|
|
inputs: ["tools/build_smart_cash_recovery_v3.py", "GatherTradingData.json",
|
|
"Temp/value_preservation_scorer_v1.json"]
|
|
outputs: ["Temp/smart_cash_recovery_v3.json"]
|
|
depends_on: ["build_value_preservation_scorer"]
|
|
timeout_sec: 30
|
|
cache_key: "build_smart_cash_recovery_v3"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "phase1_gate: smart cash recovery V3 gate=PASS/CAUTION"
|
|
|
|
build_algorithm_guidance_proof:
|
|
id: build_algorithm_guidance_proof
|
|
command: ["python", "tools/build_algorithm_guidance_proof_v1.py"]
|
|
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"]
|
|
outputs: ["Temp/algorithm_guidance_proof_v1.json"]
|
|
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"]
|
|
timeout_sec: 30
|
|
cache_key: "build_algorithm_guidance_proof_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "honest_proof_score + phase1_gate 7개 검증 — RELEASE_GATE_TRUTH 원천"
|
|
|
|
build_rebalance_sheet:
|
|
id: build_rebalance_sheet
|
|
command: ["python", "tools/build_rebalance_engine_v1.py", "--json", "GatherTradingData.json", "--harness", "Temp/computed_harness_v1.json"]
|
|
inputs: ["tools/build_rebalance_engine_v1.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/rebalance_engine_v1.json"]
|
|
depends_on: ["convert_xlsx"]
|
|
timeout_sec: 30
|
|
cache_key: "build_rebalance_engine_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "computed_harness_v1.json 없으면 regime=NEUTRAL fallback — WARN 허용"
|
|
|
|
inject_harness:
|
|
id: inject_harness
|
|
command: ["python", "src/quant_engine/inject_computed_harness.py", "GatherTradingData.json", "--output", "Temp/final_decision_packet_active.json"]
|
|
inputs: ["src/quant_engine/inject_computed_harness.py", "GatherTradingData.json", "Temp/computed_harness_v1.json"]
|
|
outputs: ["Temp/final_decision_packet_active.json"]
|
|
depends_on: ["build_formula_outputs"]
|
|
timeout_sec: 30
|
|
cache_key: "inject_harness_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
apply_strategy_execution_locks:
|
|
id: apply_strategy_execution_locks
|
|
command: ["python", "tools/apply_strategy_execution_locks.py"]
|
|
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"]
|
|
outputs: []
|
|
depends_on: ["inject_harness", "build_late_chase_attribution"]
|
|
timeout_sec: 30
|
|
cache_key: "apply_strategy_execution_locks_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "STRATEGY_EXECUTION_LOCKS_V1 필드를 GatherTradingData.json 하네스에 주입"
|
|
|
|
finalize_packet:
|
|
id: finalize_packet
|
|
command: ["python", "tools/build_packet_from_context_v1.py"]
|
|
inputs: ["tools/build_packet_from_context_v1.py", "Temp/final_decision_packet_active.json"]
|
|
outputs: ["Temp/final_decision_packet_active.json"]
|
|
depends_on: ["inject_harness"]
|
|
timeout_sec: 30
|
|
cache_key: "finalize_packet_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_strategy_routing_audit:
|
|
id: build_strategy_routing_audit
|
|
command: ["python", "tools/build_strategy_routing_audit_v1.py"]
|
|
inputs: ["tools/build_strategy_routing_audit_v1.py", "GatherTradingData.json",
|
|
"Temp/horizon_classification_v1.json", "Temp/capital_style_allocation_v1.json"]
|
|
outputs: ["Temp/strategy_routing_audit_v1.json"]
|
|
depends_on: ["inject_harness"]
|
|
timeout_sec: 30
|
|
cache_key: "build_strategy_routing_audit_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "routing_gate 공식 산출 — MID/SHORT/LONG 호라이즌 상한 검증"
|
|
|
|
build_horizon_rebalance_plan:
|
|
id: build_horizon_rebalance_plan
|
|
command: ["python", "tools/build_horizon_rebalance_plan_v1.py"]
|
|
inputs: ["tools/build_horizon_rebalance_plan_v1.py", "GatherTradingData.json",
|
|
"Temp/strategy_routing_audit_v1.json", "Temp/horizon_classification_v1.json"]
|
|
outputs: ["Temp/horizon_rebalance_plan_v1.json"]
|
|
depends_on: ["build_strategy_routing_audit", "finalize_packet"]
|
|
timeout_sec: 30
|
|
cache_key: "build_horizon_rebalance_plan_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "routing_gate FAIL 시 리밸런싱 우선순위 플랜 산출 — non-blocking"
|
|
|
|
audit_entropy:
|
|
id: audit_entropy
|
|
command: ["python", "tools/audit_repository_entropy_v2.py", "--out", "runtime/refactor_baseline_v1.yaml"]
|
|
inputs: ["tools/audit_repository_entropy_v2.py"]
|
|
outputs: ["runtime/refactor_baseline_v1.yaml"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "audit_entropy_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_specs:
|
|
id: validate_specs
|
|
command: ["python", "tools/validate_specs.py"]
|
|
inputs: ["tools/validate_specs.py", "spec/13_formula_registry.yaml"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 60
|
|
cache_key: "validate_specs_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_active_manifest:
|
|
id: validate_active_manifest
|
|
command: ["python", "tools/validate_active_manifest.py", "--manifest", "runtime/active_artifact_manifest.yaml", "--strict"]
|
|
inputs: ["tools/validate_active_manifest.py", "runtime/active_artifact_manifest.yaml"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_active_manifest_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_report_sync:
|
|
id: validate_report_sync
|
|
command: ["python", "tools/validate_report_packet_sync_v1.py", "--packet", "Temp/final_decision_packet_active.json", "--report", "Temp/operational_report.json"]
|
|
inputs: ["tools/validate_report_packet_sync_v1.py", "Temp/final_decision_packet_active.json", "Temp/operational_report.json"]
|
|
outputs: []
|
|
depends_on: ["build_report"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_report_sync_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_report_numeric_consistency:
|
|
id: validate_report_numeric_consistency
|
|
command: ["python", "tools/validate_report_numeric_consistency_guard_v2.py", "--packet", "Temp/final_decision_packet_active.json", "--report", "Temp/operational_report.json"]
|
|
inputs: ["tools/validate_report_numeric_consistency_guard_v2.py", "Temp/final_decision_packet_active.json", "Temp/operational_report.json"]
|
|
outputs: []
|
|
depends_on: ["build_report"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_report_numeric_consistency_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_report_section_completeness:
|
|
id: validate_report_section_completeness
|
|
command: ["python", "tools/validate_report_section_completeness_v1.py", "--report-json", "Temp/operational_report.json"]
|
|
inputs: ["tools/validate_report_section_completeness_v1.py", "Temp/operational_report.json"]
|
|
outputs: ["Temp/report_section_completeness.json"]
|
|
depends_on: ["build_report"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_report_section_completeness_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_json_generator_outputs:
|
|
id: validate_json_generator_outputs
|
|
command: ["python", "tools/validate_json_generator_outputs_v1.py"]
|
|
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"]
|
|
depends_on: ["inject_harness", "finalize_packet", "build_report"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_json_generator_outputs_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_field_dict:
|
|
id: validate_field_dict
|
|
command: ["python", "tools/validate_field_dictionary.py"]
|
|
inputs: ["tools/validate_field_dictionary.py", "spec/12_field_dictionary.yaml"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_field_dict_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_provenance:
|
|
id: validate_provenance
|
|
command: ["python", "tools/validate_number_provenance_strict_v3.py", "--ledger", "Temp/number_provenance_ledger_v4.json", "--report", "Temp/operational_report.md"]
|
|
inputs: ["tools/validate_number_provenance_strict_v3.py", "Temp/number_provenance_ledger_v4.json", "Temp/operational_report.md"]
|
|
depends_on: ["build_provenance_ledger", "build_report"]
|
|
outputs: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_provenance_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_low_capability:
|
|
id: validate_low_capability
|
|
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"]
|
|
inputs: ["tools/validate_low_capability_pack_v1.py", "Temp/final_context_for_llm_v5.yaml", "spec/46_low_capability_execution_pack.yaml"]
|
|
outputs: []
|
|
depends_on: ["build_final_context"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_low_capability_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_golden_coverage:
|
|
id: validate_golden_coverage
|
|
command: ["python", "tools/validate_golden_coverage_100.py"]
|
|
inputs: ["tools/validate_golden_coverage_100.py"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_golden_coverage_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_calibration:
|
|
id: validate_calibration
|
|
command: ["python", "tools/validate_calibration_registry_v1.py"]
|
|
inputs: ["tools/validate_calibration_registry_v1.py"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_calibration_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_schema_model:
|
|
id: validate_schema_model
|
|
command: ["python", "tools/validate_schema_model_generation_v1.py"]
|
|
inputs: ["tools/validate_schema_model_generation_v1.py", "Temp/schema_model_generation_v1.json"]
|
|
outputs: []
|
|
depends_on: ["build_schema_models"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_schema_model_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_gas_adapter:
|
|
id: validate_gas_adapter
|
|
command: ["python", "tools/validate_gas_thin_adapter_v1.py"]
|
|
inputs: ["tools/validate_gas_thin_adapter_v1.py"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_gas_adapter_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_agents_shrink:
|
|
id: validate_agents_shrink
|
|
command: ["python", "tools/validate_agents_shrink_v1.py"]
|
|
inputs: ["tools/validate_agents_shrink_v1.py", "AGENTS.md"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_agents_shrink_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_no_replay_live_mix:
|
|
id: validate_no_replay_live_mix
|
|
command: ["python", "tools/validate_no_replay_live_mix_v2.py", "--json", "Temp/live_replay_separation_v3.json", "--strict"]
|
|
inputs: ["tools/validate_no_replay_live_mix_v2.py", "Temp/live_replay_separation_v3.json"]
|
|
outputs: []
|
|
depends_on: ["build_live_replay_separation"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_no_replay_live_mix_v2"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_runtime_source_whitelist:
|
|
id: validate_runtime_source_whitelist
|
|
command: ["python", "tools/validate_runtime_source_whitelist_v1.py", "--manifest", "runtime/active_artifact_manifest.yaml", "--scan", "src", "gas_*.gs"]
|
|
inputs: ["tools/validate_runtime_source_whitelist_v1.py", "runtime/active_artifact_manifest.yaml"]
|
|
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_runtime_source_whitelist_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
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"]
|
|
inputs: ["tools/validate_cash_ledger_v2.py", "GatherTradingData.json", "spec/15_account_snapshot_contract.yaml"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_cash_ledger_v2"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_factor_lifecycle:
|
|
id: validate_factor_lifecycle
|
|
command: ["python", "tools/validate_factor_lifecycle_v1.py", "--taxonomy", "spec/43_quant_factor_taxonomy.yaml"]
|
|
inputs: ["tools/validate_factor_lifecycle_v1.py", "spec/43_quant_factor_taxonomy.yaml"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_factor_lifecycle_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_factor_lifecycle_completeness:
|
|
id: validate_factor_lifecycle_completeness
|
|
command: ["python", "tools/validate_factor_lifecycle_completeness_v1.py"]
|
|
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"]
|
|
depends_on: ["build_factor_shadow_eligibility"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_factor_lifecycle_completeness_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_metric_alias_collision:
|
|
id: validate_metric_alias_collision
|
|
command: ["python", "tools/validate_metric_alias_collision_v1.py", "--registry", "spec/25_canonical_metrics_registry.yaml", "--report", "Temp/operational_report.json"]
|
|
inputs: ["tools/validate_metric_alias_collision_v1.py", "spec/25_canonical_metrics_registry.yaml", "Temp/operational_report.json"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_metric_alias_collision_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_architecture_boundaries:
|
|
id: validate_architecture_boundaries
|
|
command: ["python", "tools/validate_architecture_boundaries_v2.py"]
|
|
inputs: ["tools/validate_architecture_boundaries_v2.py", "Temp/architecture_boundaries_v2.json"]
|
|
outputs: []
|
|
depends_on: ["build_architecture_boundaries"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_architecture_boundaries_v2"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_module_io_coverage:
|
|
id: build_module_io_coverage
|
|
command: ["python", "tools/build_module_io_coverage_v1.py"]
|
|
inputs: ["tools/build_module_io_coverage_v1.py", "spec/48_module_io_contract_registry.yaml"]
|
|
outputs: ["Temp/module_io_coverage_v1.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_module_io_coverage_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_architecture_boundaries:
|
|
id: build_architecture_boundaries
|
|
command: ["python", "tools/build_architecture_boundaries_v2.py"]
|
|
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"]
|
|
depends_on: ["build_module_io_coverage", "build_artifact_chain_hash"]
|
|
timeout_sec: 30
|
|
cache_key: "build_architecture_boundaries_v2"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_module_io_coverage:
|
|
id: validate_module_io_coverage
|
|
command: ["python", "tools/validate_module_io_coverage_v1.py"]
|
|
inputs: ["tools/validate_module_io_coverage_v1.py", "Temp/module_io_coverage_v1.json"]
|
|
outputs: []
|
|
depends_on: ["build_module_io_coverage"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_module_io_coverage_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_artifact_chain_hash:
|
|
id: build_artifact_chain_hash
|
|
command: ["python", "tools/build_artifact_chain_hash_v4.py"]
|
|
inputs: ["tools/build_artifact_chain_hash_v4.py"]
|
|
outputs: ["Temp/artifact_chain_hash_v4.json"]
|
|
depends_on: ["build_provenance_ledger", "build_report"]
|
|
timeout_sec: 30
|
|
cache_key: "build_artifact_chain_hash_v4"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_artifact_chain_hash:
|
|
id: validate_artifact_chain_hash
|
|
command: ["python", "tools/validate_artifact_chain_hash_v4.py"]
|
|
inputs: ["tools/validate_artifact_chain_hash_v4.py", "Temp/artifact_chain_hash_v4.json"]
|
|
outputs: []
|
|
depends_on: ["build_artifact_chain_hash"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_artifact_chain_hash_v4"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_artifact_sync:
|
|
id: validate_artifact_sync
|
|
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"]
|
|
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: []
|
|
depends_on: ["validate_engine_health_card"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_artifact_sync_v1"
|
|
strict: false
|
|
warn_only: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_renderer_no_calc:
|
|
id: validate_renderer_no_calc
|
|
command: ["python", "tools/validate_renderer_no_calculation_v1.py"]
|
|
inputs: ["tools/validate_renderer_no_calculation_v1.py"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_renderer_no_calc_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_packaged_refs:
|
|
id: validate_packaged_refs
|
|
command: ["python", "tools/validate_packaged_artifact_references_v1.py", "--strict"]
|
|
inputs: ["tools/validate_packaged_artifact_references_v1.py", "runtime/active_artifact_manifest.yaml"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_packaged_refs_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_property_invariants:
|
|
id: validate_property_invariants
|
|
command: ["python", "tools/run_property_tests_v1.py"]
|
|
inputs: ["tools/run_property_tests_v1.py", "spec/property_invariants.yaml"]
|
|
outputs: ["Temp/property_test_result_v1.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_property_invariants_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_anti_late_entry:
|
|
id: validate_anti_late_entry
|
|
command: ["python", "tools/validate_anti_late_entry_harness_v1.py", "--json", "Temp/late_chase_attribution_v2.json"]
|
|
inputs: ["tools/validate_anti_late_entry_harness_v1.py", "Temp/late_chase_attribution_v2.json"]
|
|
outputs: []
|
|
depends_on: ["build_late_chase_attribution"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_anti_late_entry_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_rule_lifecycle:
|
|
id: validate_rule_lifecycle
|
|
command: ["python", "tools/validate_rule_lifecycle_v2.py", "--strict"]
|
|
inputs: ["tools/validate_rule_lifecycle_v2.py", "Temp/shadow_ledger_v2.json"]
|
|
outputs: []
|
|
depends_on: ["build_shadow_ledger"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_rule_lifecycle_v2"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_change_requests:
|
|
id: validate_change_requests
|
|
command: ["python", "tools/validate_change_requests_v1.py", "--dir", "governance/change_requests", "--strict"]
|
|
inputs: ["tools/validate_change_requests_v1.py"]
|
|
outputs: []
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_change_requests_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_engine_health_card:
|
|
id: validate_engine_health_card
|
|
command: ["python", "tools/validate_engine_health_card_v1.py", "--json", "Temp/engine_health_card_v1.json"]
|
|
inputs: ["tools/validate_engine_health_card_v1.py", "Temp/engine_health_card_v1.json"]
|
|
outputs: []
|
|
depends_on: ["build_engine_health_card"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_engine_health_card_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_llm_regression:
|
|
id: validate_llm_regression
|
|
command: ["python", "tools/run_low_capability_llm_regression_v1.py", "--fixture", "tests/llm_regression", "--context", "Temp/final_context_for_llm_v5.yaml"]
|
|
inputs: ["tools/run_low_capability_llm_regression_v1.py", "Temp/final_context_for_llm_v5.yaml"]
|
|
outputs: []
|
|
depends_on: ["build_final_context"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_llm_regression_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
validate_llm_copy_only:
|
|
id: validate_llm_copy_only
|
|
command: ["python", "tools/validate_llm_copy_only_output_v1.py",
|
|
"--packet", "Temp/final_decision_packet_active.json",
|
|
"--report", "Temp/operational_report.json"]
|
|
inputs: ["tools/validate_llm_copy_only_output_v1.py",
|
|
"Temp/final_decision_packet_active.json",
|
|
"Temp/operational_report.json"]
|
|
outputs: []
|
|
depends_on: ["build_report", "build_final_decision"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_llm_copy_only_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
|
|
build_final_decision:
|
|
id: build_final_decision
|
|
command: ["python", "tools/build_final_decision_packet_v4.py", "--src", "Temp/final_decision_packet_active.json", "--out", "Temp/final_decision_packet_v4.json"]
|
|
inputs: ["tools/build_final_decision_packet_v4.py", "Temp/final_decision_packet_active.json"]
|
|
outputs: ["Temp/final_decision_packet_v4.json"]
|
|
depends_on: ["finalize_packet"]
|
|
timeout_sec: 30
|
|
cache_key: "build_final_decision_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_final_context:
|
|
id: build_final_context
|
|
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"]
|
|
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"]
|
|
depends_on: ["build_final_decision"]
|
|
timeout_sec: 30
|
|
cache_key: "build_final_context_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_provenance_ledger:
|
|
id: build_provenance_ledger
|
|
command: ["python", "tools/build_number_provenance_ledger_v4.py", "--packet", "Temp/final_decision_packet_v4.json", "--out", "Temp/number_provenance_ledger_v4.json"]
|
|
inputs: ["tools/build_number_provenance_ledger_v4.py", "Temp/final_decision_packet_v4.json"]
|
|
outputs: ["Temp/number_provenance_ledger_v4.json"]
|
|
depends_on: ["build_final_decision"]
|
|
timeout_sec: 30
|
|
cache_key: "build_provenance_ledger_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_live_replay_separation:
|
|
id: build_live_replay_separation
|
|
command: ["python", "tools/build_live_replay_separation_v3.py", "--out", "Temp/live_replay_separation_v3.json"]
|
|
inputs: ["tools/build_live_replay_separation_v3.py"]
|
|
outputs: ["Temp/live_replay_separation_v3.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_live_replay_separation_v3"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_late_chase_attribution:
|
|
id: build_late_chase_attribution
|
|
command: ["python", "tools/build_late_chase_attribution_v2.py", "--json", "GatherTradingData.json", "--out", "Temp/late_chase_attribution_v2.json"]
|
|
inputs: ["tools/build_late_chase_attribution_v2.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/late_chase_attribution_v2.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_late_chase_attribution_v2"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_profit_giveback_ratchet:
|
|
id: build_profit_giveback_ratchet
|
|
command: ["python", "tools/build_profit_giveback_ratchet_v2.py", "--json", "GatherTradingData.json", "--out", "Temp/profit_giveback_ratchet_v2.json"]
|
|
inputs: ["tools/build_profit_giveback_ratchet_v2.py", "GatherTradingData.json"]
|
|
outputs: ["Temp/profit_giveback_ratchet_v2.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_profit_giveback_ratchet_v2"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_shadow_ledger:
|
|
id: build_shadow_ledger
|
|
command: ["python", "tools/build_shadow_ledger_v2.py", "--out", "Temp/shadow_ledger_v2.json"]
|
|
inputs: ["tools/build_shadow_ledger_v2.py"]
|
|
outputs: ["Temp/shadow_ledger_v2.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_shadow_ledger_v2"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_operating_cadence_signal:
|
|
id: build_operating_cadence_signal
|
|
command: ["python", "tools/build_operating_cadence_signal_v1.py", "--timezone", "Asia/Seoul", "--out", "Temp/operating_cadence_signal_v1.json"]
|
|
inputs: ["tools/build_operating_cadence_signal_v1.py"]
|
|
outputs: ["Temp/operating_cadence_signal_v1.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_operating_cadence_signal_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_engine_health_card:
|
|
id: build_engine_health_card
|
|
command: ["python", "tools/build_engine_health_card_v1.py", "--out", "Temp/engine_health_card_v1.json"]
|
|
inputs: ["tools/build_engine_health_card_v1.py"]
|
|
outputs: ["Temp/engine_health_card_v1.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_engine_health_card_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_report:
|
|
id: build_report
|
|
command: ["python", "tools/render_operational_report.py", "--json", "GatherTradingData.json", "--output", "Temp/operational_report.md", "--report-json-output", "Temp/operational_report.json"]
|
|
inputs: ["tools/render_operational_report.py", "GatherTradingData.json", "Temp/final_decision_packet_active.json"]
|
|
outputs: ["Temp/operational_report.md", "Temp/operational_report.json"]
|
|
depends_on: ["convert_xlsx", "build_final_decision"]
|
|
timeout_sec: 60
|
|
cache_key: "build_report_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_honest_proof_gap_analyzer:
|
|
id: build_honest_proof_gap_analyzer
|
|
command: ["python", "tools/build_honest_proof_gap_analyzer_v1.py"]
|
|
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"]
|
|
outputs: ["Temp/honest_proof_gap_analyzer_v1.json"]
|
|
depends_on: ["build_algorithm_guidance_proof"]
|
|
timeout_sec: 30
|
|
cache_key: "build_honest_proof_gap_analyzer_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "RELEASE_GATE_TRUTH 45.1→70 경로 분석 — non-blocking diagnostic"
|
|
|
|
build_bundle:
|
|
id: build_bundle
|
|
command: ["python", "tools/build_bundle.py"]
|
|
inputs: ["tools/build_bundle.py"]
|
|
outputs: ["dist/retirement_portfolio_compact.yaml", "dist/retirement_portfolio_ultra_compact.yaml"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_bundle_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
build_schema_models:
|
|
id: build_schema_models
|
|
command: ["python", "tools/generate_models_from_schema.py"]
|
|
inputs: ["tools/generate_models_from_schema.py", "schemas/generated"]
|
|
outputs: ["Temp/schema_model_generation_v1.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "build_schema_models_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
|
|
# ── P1-2: live data 자동 전환 게이트 ─────────────────────────────────────
|
|
|
|
validate_live_activation:
|
|
id: validate_live_activation
|
|
command: ["python", "tools/validate_live_data_activation_gate_v1.py"]
|
|
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"]
|
|
outputs: ["Temp/live_data_activation_gate_v1.json"]
|
|
depends_on: []
|
|
timeout_sec: 30
|
|
cache_key: "validate_live_activation_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "PENDING(live_t20<30) = 정상. FAIL = 전환 조건 미충족. 2026-07-15 자동 활성화 예정."
|
|
|
|
# ── P1-1: TIME_STOP 사전 예측 ─────────────────────────────────────────────
|
|
|
|
build_time_stop_forecast:
|
|
id: build_time_stop_forecast
|
|
command: ["python", "tools/build_time_stop_forecast_v1.py",
|
|
"--harness", "Temp/computed_harness_v1.json"]
|
|
inputs: ["tools/build_time_stop_forecast_v1.py",
|
|
"Temp/computed_harness_v1.json"]
|
|
outputs: ["Temp/time_stop_forecast_v1.json"]
|
|
depends_on: ["build_formula_outputs"]
|
|
timeout_sec: 30
|
|
cache_key: "build_time_stop_forecast_v1"
|
|
strict: false
|
|
artifact_policy: "keep"
|
|
note: "WARN 허용 (발동 임박 = 경고, 미발동 = PASS)"
|
|
|
|
# ── spec/52~58 H001~H008 ghost contract validators ───────────────────────
|
|
|
|
validate_decision_trace:
|
|
id: validate_decision_trace
|
|
command: ["python", "tools/validate_decision_trace_replay_v1.py",
|
|
"--packet", "Temp/final_decision_packet_active.json",
|
|
"--harness", "Temp/computed_harness_v1.json"]
|
|
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"]
|
|
depends_on: ["finalize_packet", "build_formula_outputs"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_decision_trace_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
contract: "spec/52_decision_trace_replay_contract.yaml"
|
|
|
|
validate_factor_conflicts:
|
|
id: validate_factor_conflicts
|
|
command: ["python", "tools/validate_factor_conflict_matrix_v1.py",
|
|
"--taxonomy", "spec/43_quant_factor_taxonomy.yaml",
|
|
"--packet", "Temp/final_decision_packet_active.json"]
|
|
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"]
|
|
depends_on: ["finalize_packet"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_factor_conflicts_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
contract: "spec/53_factor_conflict_matrix.yaml"
|
|
|
|
validate_no_lookahead:
|
|
id: validate_no_lookahead
|
|
command: ["python", "tools/validate_no_lookahead_bias_v1.py",
|
|
"--harness", "Temp/computed_harness_v1.json"]
|
|
inputs: ["tools/validate_no_lookahead_bias_v1.py",
|
|
"Temp/computed_harness_v1.json"]
|
|
outputs: ["Temp/no_lookahead_bias_v1.json"]
|
|
depends_on: ["build_formula_outputs"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_no_lookahead_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
contract: "spec/54_temporal_data_integrity.yaml"
|
|
|
|
validate_execution_sim:
|
|
id: validate_execution_sim
|
|
command: ["python", "tools/validate_execution_simulator_v1.py",
|
|
"--packet", "Temp/final_decision_packet_active.json"]
|
|
inputs: ["tools/validate_execution_simulator_v1.py",
|
|
"Temp/final_decision_packet_active.json"]
|
|
outputs: ["Temp/execution_simulator_v1.json"]
|
|
depends_on: ["finalize_packet"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_execution_sim_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
contract: "spec/55_execution_simulator_contract.yaml"
|
|
|
|
validate_render_diff:
|
|
id: validate_render_diff
|
|
command: ["python", "tools/validate_report_render_diff_v1.py",
|
|
"--packet", "Temp/final_decision_packet_active.json",
|
|
"--report", "Temp/operational_report.json"]
|
|
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"]
|
|
depends_on: ["build_report", "finalize_packet"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_render_diff_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
contract: "spec/56_renderer_copy_only_contract.yaml"
|
|
|
|
build_shadow_promotion:
|
|
id: build_shadow_promotion
|
|
command: ["python", "tools/build_shadow_promotion_scorecard_v1.py",
|
|
"--shadow", "Temp/shadow_ledger_v2.json",
|
|
"--live-replay", "Temp/live_replay_separation_v3.json"]
|
|
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"]
|
|
depends_on: ["build_shadow_ledger", "build_live_replay_separation"]
|
|
timeout_sec: 30
|
|
cache_key: "build_shadow_promotion_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
contract: "spec/57_shadow_promotion_scorecard.yaml"
|
|
|
|
validate_llm_determinism:
|
|
id: validate_llm_determinism
|
|
command: ["python", "tools/validate_llm_determinism_pack_v1.py",
|
|
"--context", "Temp/final_context_for_llm_v5.yaml"]
|
|
inputs: ["tools/validate_llm_determinism_pack_v1.py",
|
|
"Temp/final_context_for_llm_v5.yaml"]
|
|
outputs: ["Temp/llm_determinism_pack_v1.json"]
|
|
depends_on: ["build_final_context"]
|
|
timeout_sec: 30
|
|
cache_key: "validate_llm_determinism_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|
|
contract: "spec/58_llm_determinism_contract.yaml"
|
|
|
|
prepare_zip:
|
|
id: prepare_zip
|
|
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_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_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"]
|
|
timeout_sec: 60
|
|
cache_key: "prepare_zip_v1"
|
|
strict: true
|
|
artifact_policy: "keep"
|