Skip to content

Repeated Matrix Shield Feasibility

This note records the repeated-matrix shielding issue that showed up in April 2026 and the env-level repairs that were chosen for the two affected matrix games.

Historical problem pattern

The current shield runtime constrains the probability of eventually reaching unsafe, not just the probability that the very next step is unsafe.

That can make repeated stage games structurally infeasible at reset when:

  • the safety label marks a single bad round as unsafe
  • the game immediately continues from an ordinary public state after safe rounds
  • every round keeps some positive hazard of unsafe alive

Under those conditions, eventual unsafe reachability can climb to 1.0 even if the one-step unsafe probability at reset looks only moderate.

Current repairs

Bertrand

Bertrand now treats only price_war (Low, Low) as unsafe.

  • The old "undercut while I played High" case is no longer a safety violation.
  • Under the exact true shield's default uniform opponent prior, choosing High is now a zero-risk action at reset.
  • The public state/action contract did not change, so existing Bertrand WM/OM artifacts remain structurally compatible with learned shielding.

Congestion

Congestion now adds a third action, Detour, as a safe fallback.

  • Detour has a fixed reward cost -detour_cost.
  • Public observations now use 3 action bits per agent instead of 2.
  • LabelledCongestion.safe(...) now treats the focal agent as safe if it took the detour, even if the roads jammed.

That gives the shield a true zero-risk reset action without changing the shield objective itself.

Consequences for notebook defaults

  • Bertrand can enable both learned and exact shielding again at max_risk=0.2.
  • Congestion can enable both learned and exact true shielding again at max_risk=0.2.
  • Congestion learned shielding requires WM/OM artifacts regenerated after the detour action was added. Older exports are structurally stale because the public action/state contract changed.

Time semantics

These repairs are intentionally environment-specific. They do not mean reintroducing public time bits into matrix environments.

  • Hidden episode caps still stay outside the public environment state.
  • Truncation should still use time-free bootstrapping semantics.
  • Exact graph builders may use private time augmentation for some other env families, but that is separate from the public contract for these matrix games.

Practical guidance

  • If a repeated game remains infeasible under eventual-unsafe shielding, first ask whether the safety label or action set should change before changing the global shield semantics.
  • Use setup-time reset() feasibility checks so notebook failures happen early.
  • When an env-level repair changes the public observation or action contract, treat existing WM/OM artifacts as stale and rebuild them.