@@ -668,7 +668,28 @@ class SingleMatchOrchestrator(
|
||||
base_package.setdefault("analysis_details", {})
|
||||
base_package["analysis_details"]["v27_loaded"] = False
|
||||
|
||||
base_package = self._apply_upper_brain_guards(base_package)
|
||||
base_package = self._apply_upper_brain_guards(base_package, data)
|
||||
|
||||
# V35c: the brain rebuilt main/value/supporting/bet_summary AFTER the
|
||||
# market anchor ran inside _build_prediction_package — re-stamp the
|
||||
# calibrated display fields (Güven/CI/Model%/edge) so they stay
|
||||
# consistent, BEFORE the commentary reads the package.
|
||||
self._apply_anchor_to_picks(
|
||||
base_package.get("market_board") or {},
|
||||
base_package.get("main_pick"),
|
||||
base_package.get("value_pick"),
|
||||
base_package.get("aggressive_pick"),
|
||||
base_package.get("supporting_picks"),
|
||||
base_package.get("bet_summary"),
|
||||
)
|
||||
_mp = base_package.get("main_pick")
|
||||
_advice = base_package.get("bet_advice")
|
||||
if isinstance(_mp, dict) and isinstance(_advice, dict) and _mp.get("confidence_band"):
|
||||
_advice["confidence_band"] = _mp["confidence_band"]
|
||||
# no fabricated value bets: a value pick must carry measured positive edge
|
||||
_vp = base_package.get("value_pick")
|
||||
if isinstance(_vp, dict) and float(_vp.get("ev_edge", 0.0) or 0.0) <= 0.0:
|
||||
base_package["value_pick"] = None
|
||||
|
||||
# ── Match Commentary: human-readable summary ──────────────
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user