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
Highis 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.
Detourhas a fixed reward cost-detour_cost.- Public observations now use
3action bits per agent instead of2. 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¶
Bertrandcan enable both learned and exact shielding again atmax_risk=0.2.Congestioncan enable both learned and exact true shielding again atmax_risk=0.2.Congestionlearned 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.