A plan that looks excellent against the most-likely adversary course of action may catastrophically fail under the most-dangerous one. Doctrine has said this for decades. ASSAY makes it computable and visible — not as an assertion that “you should consider R2,” but as scored data the commander reads directly.
Three postures, two rejected
Robust-optimisation literature offers three postures for multi-scenario planning. Scenario-weighted (probability-weighted expected value) is the civilian OR default — and exactly the posture JP 2-01.3’s doctrine warns against. In ASSAY it is doubly forbidden: the scenario_weight firewall (knowledge model §9) blocks scenario probabilities from entering any computation, and a probability-weighted band would collapse three interval-valued outcomes into a false-precision scalar (DEC-15).
Minimax regret (Savage, 1951) measures each plan’s shortfall from the per-scenario optimum. The problem: regret is relative. A plan with violated must commitments can show low regret if the per-scenario optimum is also poor. The commander asking “does this plan survive R2?” does not want “it’s only 3 steps worse than the best R2 plan” — they want the actual verdict. Regret launders absolute failure into relative mediocrity.
Minimax (worst-case) survives. The plan is judged by its worst scenario’s verdicts — real verdicts on real scenarios, traced back to named knowledge (G3). No information is destroyed. No weights, no blending, no invented robustness index.
The scenario strip
The mechanism is a thin loop over the SPEC-07 scorer (DEC-10): compile one world per scenario, score each plan against each world, assemble the plan × commitment × scenario verdict tensor. The scenarioStrip component renders it as a grid — same plans, same commitments, but with the scenario dimension fanned out. Toggle a scenario to see what changes.
Illustrative widget, fixture data. The strip shows Meridian plans P1 (strait-early) and P2 (sweep-first) scored against commitments C1–C4 under each scenario. Toggle R2 on to see P1’s C1/C2 collapse. The verdict chips follow the shipped scenarioStrip component’s colour language. Frozen as shipped on 2026-07-14.
The R1-optimal collapse
Meridian’s vignette engineers the robustness trap. R1 (Fortress Halcyon, most-likely) does not mine the strait. P1 (strait-early) routes PACKHORSE through Halcyon Strait — fast, efficient, robust on C1 and C2 under BASE and R1.
Toggle R2 (Strait Denial). Mines appear in the strait early and deep. P1’s mobility factor through those cells drops to [0.1, 0.4], threat rises to [0.6, 0.95]. The strait-open timing band inflates past the C2 threshold. C1 and C2 collapse to violated. The favourite dies.
P2 (sweep-first) avoids the early strait transit. Its C2 stays marginal under all scenarios — slightly worse against R1, surviving against all three. The scenario strip shows the trade at a glance: the commander sees which commitments fail and under which scenario, at the four-stop scale, without a single scalar summarising “how robust” each plan is.
What the strip does not show
Three deliberate absences. No scenario weights — K14a–c are firewalled from the computation and the surface (DEC-15, knowledge model §9). The strip orders scenarios by logical id, not by probability. No robustness index — any scalar summary would collapse the verdict tensor past banded honesty. No recommendation — the strip shows data; the insight (“don’t plan on most-likely”) is the commander’s own, drawn from reading the collapse, not from a system-generated label.
Sources & trace
- Robustness service — src/robustness.ts
- Scenario strip — src/components/scenarioStrip.ts
- Research note — 06-robustness.md (the minimax decision)
- Minimax posture — A. Wald, Statistical Decision Functions (1950); scenario-weighted and minimax regret rejected §1
- JP 5-0, ch. IV — “the commander should not plan solely on the most likely enemy COA”
- JP 2-01.3, §II-9 — most-likely / most-dangerous COA doctrine (JIPOE step 4)
- Fixtures — R1, R2 (Fortress Halcyon, Strait Denial) in the Meridian vignette §4
- Scenario-weight firewall — ASSAY-DEC-15 in the decision register