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:
2026-06-22 22:45:00 +09:00
parent 4266039d1c
commit af1236202d
64 changed files with 13127 additions and 2760 deletions
+3 -1
View File
@@ -341,7 +341,7 @@ def main() -> int:
if not ready:
raise SystemExit("PACKAGE_ONLY_BLOCKED: " + ";".join(reasons))
skipped_steps.append("all-validation-reused-existing-gate")
gate_status = "OK"
gate_status = "SKIPPED"
plan = []
if not args.skip_convert:
plan.append({"name": "prepare", "command": ["npm", "run", "ops:prepare"]})
@@ -371,6 +371,8 @@ def main() -> int:
skipped_duplicate_steps=skipped_steps,
gate_status=gate_status,
)
payload["allowed_use"] = "production_investment_decisions" if args.validation_mode in {"release", "quick"} else "packaging_only"
payload["validation_mode"] = args.validation_mode
min_samples = 1 if args.validation_mode == "package-only" else 5
analysis = finalize_runtime_profile(profile_path=RUNTIME_PROFILE, payload=payload, min_samples=min_samples)
if analysis.get("status") == "ALERT":