Skip to content

fix(forecast): MiroFish sim — demotion-gate threshold + completeness gaps (geo-dedup, archetypes, round-2 bias, timingMarkers) (P2, #5097) #5102

Description

@koala73

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: AI/intelAI analysis, intelligence findings, summarizationbugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions