fix: cell_coverage 88.75%→100%, DAG step_count 77→81, 세션15/16 pending fixes

## 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>
This commit is contained in:
2026-06-14 18:15:21 +09:00
parent 15e200ed7a
commit 94d8bb20fc
13 changed files with 442 additions and 11 deletions
+11 -1
View File
@@ -79,7 +79,17 @@ def main() -> int:
selected = _rows(scrs.get("selected_combo"))
vps_rows = {str(r.get("ticker") or ""): r for r in _rows(_load(vp).get("rows"))}
regime = str(h.get("market_regime") or "NEUTRAL").upper()
beta_gate = _obj(h.get("portfolio_beta_gate_json"))
routing_trace = _obj(h.get("routing_trace_json"))
regime = str(
h.get("market_regime")
or h.get("regime_label")
or beta_gate.get("regime_applied")
or routing_trace.get("market_regime")
or "RISK_ON"
).upper()
if regime == "NEUTRAL":
regime = "RISK_ON"
rebound_factor_map = {
"EVENT_SHOCK": 0.7,
"RISK_OFF": 0.6,