Part of #5097. P2. MiroFish theater-limited simulation. Verified 2026-07-09.
Context / de-risking: the sim does not rewrite published pred.probability — decorations (simulationAdjustment/simPathConfidence/demotedBySimulation) are consumed only by ForecastPanel.ts (display) + deep-path acceptance + next-run priorWorldState seeding. Merge math itself is correct, clamped, idempotent, and race-safe. So these are lower-urgency correctness/completeness items, not Brier-corrupting.
Accuracy
- A1 — demotion-gate threshold wrong.
applyPostSimulationRescore gate uses acceptanceScore < 0.65 (:17722) with a comment deriving "max negative −0.15". But invalidator (−0.12) and stabilizer (−0.15) are separate loops that can both fire (−0.27 combined), so the threshold should be 0.77. Paths in [0.65, 0.77) that a combined hit would push below 0.50 silently skip a legitimate demotion (no_actionable_paths). Fix: threshold 0.50 + 0.27 = 0.77 + fix the derivation comment.
- A2 (SUSPECTED) — broad substring keyword matching in
matchesBucket/matchesChannel can over-fire adjustments (e.g. bare 'military'/'attack').
Completeness (silent-by-design gaps)
Related: #5097, #4930 (Bet 6).
Part of #5097. P2. MiroFish theater-limited simulation. Verified 2026-07-09.
Context / de-risking: the sim does not rewrite published
pred.probability— decorations (simulationAdjustment/simPathConfidence/demotedBySimulation) are consumed only byForecastPanel.ts(display) + deep-path acceptance + next-runpriorWorldStateseeding. Merge math itself is correct, clamped, idempotent, and race-safe. So these are lower-urgency correctness/completeness items, not Brier-corrupting.Accuracy
applyPostSimulationRescoregate usesacceptanceScore < 0.65(:17722) with a comment deriving "max negative −0.15". But invalidator (−0.12) and stabilizer (−0.15) are separate loops that can both fire (−0.27 combined), so the threshold should be 0.77. Paths in [0.65, 0.77) that a combined hit would push below 0.50 silently skip a legitimate demotion (no_actionable_paths). Fix: threshold0.50 + 0.27 = 0.77+ fix the derivation comment.matchesBucket/matchesChannelcan over-fire adjustments (e.g. bare'military'/'attack').Completeness (silent-by-design gaps)
+adjustments → systematic upward bias for degraded theaters.timingMarkersproduced but never consumed by scoring — display-only. Notable: epic(forecast): verified probabilistic forecasting — resolution engine, public Brier track record, learned calibration, LLM ensemble (MiroFish++ roadmap) #4930 Bet 6 assumes they can be bound to feeds for resolution; they aren't wired into scoring today.Related: #5097, #4930 (Bet 6).