WBS-7.3: GAS→Python 마이그레이션 5개 항목 완료 (F14, F02-F06)
- F14: late_chase_risk_score 검증 * GAS가 유일한 생산처 (Python canonical 없음) * migration_action: KEEP_IN_GAS로 정정, status: DONE - F02/F03/F04/F06: priceBasis 로직 포팅 * formulas/price_basis_v1.py: select_price_basis_tier2/tier1 구현 * tests/parity/test_price_basis_parity_v1.py: 8 parity 테스트 (모두 PASS) * GAS Number.isFinite() 의미론 정확히 재현 (math.isfinite 사용) * 모든 테스트 112/112 PASS 남은 작업 (4개): - F05: decision_logic (action assignment) - F07: score_logic (threshold addition) - F10: routing decision - F15: late_chase_gate Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
+263
-2
@@ -1,5 +1,5 @@
|
||||
schema_version: release_dag.v3
|
||||
step_count: 99
|
||||
step_count: 104
|
||||
goal: Linearize package.json scripts into a validated DAG execution graph.
|
||||
has_code_implementation: true
|
||||
code_path: "tools/run_release_dag_v3.py"
|
||||
@@ -8,6 +8,7 @@ execution_order:
|
||||
wave_0:
|
||||
- audit_entropy
|
||||
- build_bundle
|
||||
- build_gas_bundle
|
||||
- build_macro_event_ticker_impact
|
||||
- build_engine_health_card
|
||||
- build_late_chase_attribution
|
||||
@@ -20,14 +21,17 @@ execution_order:
|
||||
- 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
|
||||
@@ -38,6 +42,7 @@ execution_order:
|
||||
- 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
|
||||
@@ -105,6 +110,9 @@ execution_order:
|
||||
- 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
|
||||
@@ -121,6 +129,72 @@ execution_order:
|
||||
- prepare_zip
|
||||
dag:
|
||||
nodes:
|
||||
build_gas_bundle:
|
||||
id: build_gas_bundle
|
||||
command: ["python", "tools/build_gas_bundle_v1.py"]
|
||||
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"
|
||||
depends_on: []
|
||||
timeout_sec: 30
|
||||
cache_key: "build_gas_bundle_v1"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_gas_adapter_contract:
|
||||
id: validate_gas_adapter_contract
|
||||
command: ["python", "tools/validate_gas_adapter_contract_v1.py"]
|
||||
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"
|
||||
depends_on: []
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_gas_adapter_contract_v1"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_gas_bundle_sync:
|
||||
id: validate_gas_bundle_sync
|
||||
command: ["python", "tools/validate_gas_bundle_sync_v1.py"]
|
||||
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"
|
||||
depends_on: ["build_gas_bundle"]
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_gas_bundle_sync_v1"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
convert_xlsx:
|
||||
id: convert_xlsx
|
||||
command: ["python", "tools/convert_xlsx_to_json.py"]
|
||||
@@ -665,6 +739,20 @@ dag:
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_low_capability_pipeline_todo_v2:
|
||||
id: validate_low_capability_pipeline_todo_v2
|
||||
command: ["python", "tools/validate_low_capability_pipeline_todo_v2.py"]
|
||||
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"
|
||||
depends_on: []
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_low_capability_pipeline_todo_v2"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_golden_coverage:
|
||||
id: validate_golden_coverage
|
||||
command: ["python", "tools/validate_golden_coverage_100.py"]
|
||||
@@ -720,6 +808,23 @@ dag:
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_docs_no_formula_duplication:
|
||||
id: validate_docs_no_formula_duplication
|
||||
command: ["python", "tools/validate_docs_no_formula_duplication_v1.py"]
|
||||
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"
|
||||
depends_on: []
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_docs_no_formula_duplication_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"]
|
||||
@@ -865,6 +970,145 @@ dag:
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_factor_lifecycle_registry_v1:
|
||||
id: validate_factor_lifecycle_registry_v1
|
||||
command: ["python", "tools/validate_factor_lifecycle_registry_v1.py"]
|
||||
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"
|
||||
depends_on: []
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_factor_lifecycle_registry_v1"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_anti_late_entry_gate_v5:
|
||||
id: validate_anti_late_entry_gate_v5
|
||||
command: ["python", "tools/validate_anti_late_entry_gate_v5.py"]
|
||||
inputs:
|
||||
- "tools/validate_anti_late_entry_gate_v5.py"
|
||||
- "GatherTradingData.json"
|
||||
outputs:
|
||||
- "Temp/anti_late_entry_gate_validation_v5.json"
|
||||
depends_on: []
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_anti_late_entry_gate_v5"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_decision_graph_precedence_v1:
|
||||
id: validate_decision_graph_precedence_v1
|
||||
command: ["python", "tools/validate_decision_graph_precedence_v1.py"]
|
||||
inputs:
|
||||
- "tools/validate_decision_graph_precedence_v1.py"
|
||||
- "spec/routing/decision_graph.yaml"
|
||||
outputs:
|
||||
- "Temp/decision_graph_precedence_validation_v1.json"
|
||||
depends_on: []
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_decision_graph_precedence_v1"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_factor_conflict_precedence_v1:
|
||||
id: validate_factor_conflict_precedence_v1
|
||||
command: ["python", "tools/validate_factor_conflict_precedence_v1.py"]
|
||||
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"
|
||||
depends_on: []
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_factor_conflict_precedence_v1"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_honest_performance_guard_v1:
|
||||
id: validate_honest_performance_guard_v1
|
||||
command: ["python", "tools/validate_honest_performance_guard_v1.py"]
|
||||
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"
|
||||
depends_on: ["build_honest_performance_guard"]
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_honest_performance_guard_v1"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_execution_precedence_lock_v2:
|
||||
id: validate_execution_precedence_lock_v2
|
||||
command: ["python", "tools/validate_execution_precedence_lock_v2.py"]
|
||||
inputs:
|
||||
- "tools/validate_execution_precedence_lock_v2.py"
|
||||
- "Temp/final_execution_decision_v4.json"
|
||||
outputs:
|
||||
- "Temp/execution_precedence_lock_v2.json"
|
||||
depends_on: ["build_honest_performance_guard"]
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_execution_precedence_lock_v2"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_order_grammar_v1:
|
||||
id: validate_order_grammar_v1
|
||||
command: ["python", "tools/validate_order_grammar_v1.py"]
|
||||
inputs:
|
||||
- "tools/validate_order_grammar_v1.py"
|
||||
- "GatherTradingData.json"
|
||||
outputs:
|
||||
- "Temp/order_grammar_validation_v1.json"
|
||||
depends_on: ["build_honest_performance_guard"]
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_order_grammar_v1"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
|
||||
validate_cash_floor_policy_v1:
|
||||
id: validate_cash_floor_policy_v1
|
||||
command: ["python", "tools/validate_cash_floor_policy_v1.py"]
|
||||
inputs:
|
||||
- "tools/validate_cash_floor_policy_v1.py"
|
||||
- "GatherTradingData.json"
|
||||
- "Temp/operational_report.json"
|
||||
outputs:
|
||||
- "Temp/cash_floor_policy_validation_v1.json"
|
||||
depends_on: ["build_report"]
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_cash_floor_policy_v1"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
validate_position_sizing:
|
||||
id: validate_position_sizing
|
||||
command: ["python", "tools/validate_position_sizing.py"]
|
||||
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"
|
||||
depends_on: ["build_report"]
|
||||
timeout_sec: 30
|
||||
cache_key: "validate_position_sizing"
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
validate_factor_lifecycle_completeness:
|
||||
id: validate_factor_lifecycle_completeness
|
||||
command: ["python", "tools/validate_factor_lifecycle_completeness_v1.py"]
|
||||
@@ -1213,6 +1457,22 @@ dag:
|
||||
strict: true
|
||||
artifact_policy: "keep"
|
||||
|
||||
build_honest_performance_guard:
|
||||
id: build_honest_performance_guard
|
||||
command: ["python", "tools/build_honest_performance_guard_v1.py"]
|
||||
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"
|
||||
depends_on: ["build_report"]
|
||||
timeout_sec: 30
|
||||
cache_key: "build_honest_performance_guard_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"]
|
||||
@@ -1221,6 +1481,7 @@ dag:
|
||||
"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"
|
||||
@@ -1439,7 +1700,7 @@ dag:
|
||||
command: ["python", "tools/prepare_upload_zip.py", "--skip-validate", "--skip-convert", "--validation-mode", "package-only"]
|
||||
inputs: ["tools/prepare_upload_zip.py"]
|
||||
outputs: []
|
||||
depends_on: ["audit_entropy", "validate_specs", "validate_no_direct_api_trading", "validate_active_manifest", "validate_report_sync", "validate_report_numeric_consistency", "validate_field_dict", "validate_provenance", "validate_low_capability", "validate_golden_coverage", "validate_calibration", "validate_schema_model", "validate_gas_adapter", "validate_agents_shrink", "validate_no_replay_live_mix", "validate_prediction_accuracy_harness", "validate_alpha_feedback_loop", "validate_operational_alpha_calibration", "validate_realized_performance", "validate_data_gated_progress", "validate_sector_flow_history_progress", "validate_runtime_source_whitelist", "validate_cash_ledger", "validate_factor_lifecycle", "validate_factor_lifecycle_completeness", "validate_metric_alias_collision", "validate_architecture_boundaries", "validate_module_io_coverage", "validate_artifact_chain_hash", "validate_artifact_sync", "validate_renderer_no_calc", "validate_packaged_refs", "validate_property_invariants", "validate_anti_late_entry", "validate_rule_lifecycle", "validate_change_requests", "validate_completion_harness_instructions", "validate_engine_health_card", "validate_llm_regression", "validate_llm_copy_only", "build_final_decision", "build_final_context", "build_provenance_ledger", "build_live_replay_separation", "build_late_chase_attribution", "build_profit_giveback_ratchet", "build_shadow_ledger", "build_operating_cadence_signal", "build_engine_health_card", "build_module_io_coverage", "build_artifact_chain_hash", "build_report", "build_bundle", "build_schema_models", "build_architecture_boundaries", "validate_decision_trace", "validate_factor_conflicts", "validate_no_lookahead", "validate_execution_sim", "validate_render_diff", "build_shadow_promotion", "validate_llm_determinism", "build_time_stop_forecast", "validate_live_activation", "build_rebalance_sheet", "build_prediction_accuracy_harness", "build_alpha_feedback_loop", "build_calibration_priority", "build_calibration_change_ledger", "build_calibration_review_report", "build_calibration_approval_list", "build_calibration_decision_draft", "build_operational_alpha_calibration", "build_sector_flow_history_progress"]
|
||||
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"]
|
||||
timeout_sec: 60
|
||||
cache_key: "prepare_zip_v1"
|
||||
strict: true
|
||||
|
||||
Reference in New Issue
Block a user