Multimodal Viability Shield
Implementation & benchmark of arXiv:2607.03263 — Multimodal Nonblocking Supervisory Control Synthesis
Source paper: Multimodal Nonblocking Supervisory Control Synthesis arXiv:2607.03263 ⓘ · analyzed Aug 30, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Attach a finite-state monitor to a neural policy and allow only actions whose successor remains in the simultaneous backward-reachable winning set for all active modes. Modes may encode safety, hardware configuration, and independent task goals. This gives a hard runtime constraint rather than relying on a reward penalty to teach the policy not to enter irreversible dead ends.
Formulas
Mathematical statement
Let P=(Q,\\Sigma,\\delta,q_0,Q_m) be a finite monitor, where Q is the monitor-state set, \\Sigma is the event or action alphabet, \\delta(q,\\sigma) is the successor state, q_0 is the initial state, and Q_m is the set of marked goal states. For each mode M_i\\subseteq Q, define W_i^0=M_i\\cap Q_m and W_i^{k+1}=W_i^k\\cup\\{q\\in M_i:\\exists\\sigma\\in\\Sigma,\\delta(q,\\sigma)\\in W_i^k\\}. The fixed point W_i is exactly the set of states that can reach a marked state while never leaving M_i. For r simultaneous modes, use W=\\bigcap_{i=1}^r W_i. At state q, the admissible action set is A(q)=\\{\\sigma:\\delta(q,\\sigma)\\in W\\}. If uncontrollable events \\Sigma_{uc} exist, every enabled uncontrollable successor must remain in W; otherwise q is blocking. The shield uses the paper's modal and multimodal nonblocking construction as a finite viability kernel.
Implementation notes
(1) Integrate the shield immediately before action sampling in a discrete-action PPO or SAC policy. Maintain a monitor state q for every environment instance and update it after each selected action or observed event using a deterministic transition table delta. Define one mode M_i for each requirement, such as collision-free states, valid hardware configuration, or progress toward a particular subgoal. Mark successful terminal or intermediate goal states in Q_m. (2) Before training, compute every W_i with reverse graph search. Initialize a boolean array with M_i intersect Q_m, enqueue those states, and repeatedly add a predecessor q when q is in M_i and has at least one enabled successor already in the queue. Stop when no state is added, intersect all arrays to obtain W, and precompute A(q) by scanning action successors. At runtime set policy logits outside A(q) to negative infinity before sampling. If A(q) is empty, record a blocking event and use an explicitly defined recovery action or terminate the episode; do not silently ignore the violation. (3) The fixed point and action mask are exact for the symbolic monitor. Empirically estimate only abstraction errors by checking whether simulator transitions disagree with delta; uncertain successors should be conservatively masked. (4) First test on MiniGrid or a 10x10 gridworld with hazards, locked-room configurations, and two required goals. Compare unconstrained PPO, reward-penalty PPO, and shielded PPO at equal environment steps. Measure total-goal success, irreversible dead-end frequency, constraint violations, return, and wall-clock overhead. The expected signal is near-zero violations and higher multi-goal success with only small action-filtering cost.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Confirmed ✓
Stage 2 · Practical benchmark result: Significantly worse ✗
Methodology: 8 paired seeds, permutation test (p<0.05) against a learning-rate-tuned baseline. How verification works
Stage 1 — Mechanism check agent confidence 9/10
Built a finite-state multimodal viability shield with least-fixed-point winning-set computation, rank tracking, action masks, and explicit blocking behavior. All tested mechanism predictions were confirmed: fixed-point rank matched shortest safe-path distance across 8 graph lengths, maximum rank followed the derived floor((L+2)/2) scaling, adding a mode monotonically shrank winning sets and masks, and shielded rollouts had zero violations. In the toy benchmark, shielding improved success from 25.98% to 59.42% and reduced violations from 74.02% to 0%, at the cost of substantially more steps under random masked action selection.
- Agent confidence
- 9/10
- Baseline
- 5000 rollouts: success_rate=0.2598, violation_rate=0.7402, blocking_rate=0.0, mean_steps=4.5708
- Idea
- 5000 rollouts: success_rate=0.5942, violation_rate=0.0, blocking_rate=0.0, mean_steps=72.3132; mask successor validity=true; rank-distance and multimodal prediction checks=true
Limitations: Tested only a deterministic discrete toy transition system, not PPO/SAC, MiniGrid, continuous actions, simulator/model-transition disagreement, or enabled uncontrollable events. The runtime comparison used uniformly random action selection rather than a learned neural policy and did not measure wall-clock masking overhead.
How to run: python3 run_experiment.py
Stage 2 — Benchmark vs. tuned baseline (arXiv:2607.03263)
Significantly WORSE than the tuned baseline (+1893.4%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0066
- Idea mean
- 0.1312
- Effect (Δ)
- 0.1246 (+1893.4%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±283.6%
- Mechanism
- Confirmed ✓
- Practical effect
- Hurts
- Baseline tuning
- swept over 3 configs
The built-in dynamics track is supervised successor-angle prediction rather than an interactive policy environment, so the action-level runtime shield was transferred as an end-to-end successor projection. No PPO/SAC rollout, simulator-versus-monitor abstraction disagreement, uncontrollable events, wall-clock overhead, or recovery-action behavior was tested. The baseline unsafe-prediction rate was not collected, because the canonical baseline report path only returns task MSE.
How to run: python3 bench_shield.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Failed ✗
Agent confidence: 9/10
Implemented a multimodal finite-state viability shield on the structurally matched controlled-pendulum dynamics track, using the same rnn_small architecture and paired seeds as the baseline. The mechanism signature was confirmed: all shielded trained-model predictions stayed within the winning-set angle bound (unsafe rate 0.0). However, the shielded system's MSE was 0.13115 versus 0.00658 for the tuned baseline, with paired delta +0.12457 and permutation p=0.0081, yielding a significant loss rather than a win.
- Baseline
- 8-seed full MSE mean=0.00657921, std=0.00369856; baseline sweep lr={0.001:0.02284431, 0.002:0.01496863, 0.003:0.00627983}, selected lr=0.003
- Idea
- 8-seed full MSE mean=0.13115271, std=0.02010597; idea sweep lr={0.001:0.13115271, 0.002:0.21055536, 0.003:0.20714562}, selected lr=0.001; unsafe prediction rate=0.0
- Paired comparison
- idea-baseline delta mean=+0.12457350, idea wins=0/8, permutation p=0.0081, verdict=idea worse (significant)
Benchmark result
Significantly WORSE than the tuned baseline (+1893.4%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0066
- Idea mean
- 0.1312
- Effect (Δ)
- 0.1246 (+1893.4%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±283.6%
- Mechanism
- Confirmed ✓
- Practical effect
- Hurts
- Baseline tuning
- swept over 3 configs
The built-in dynamics track is supervised successor-angle prediction rather than an interactive policy environment, so the action-level runtime shield was transferred as an end-to-end successor projection. No PPO/SAC rollout, simulator-versus-monitor abstraction disagreement, uncontrollable events, wall-clock overhead, or recovery-action behavior was tested. The baseline unsafe-prediction rate was not collected, because the canonical baseline report path only returns task MSE.
How to run: python3 bench_shield.py
Artifacts
- bench_report.json 4.0 KB View Raw
- bench_shield.py 5.7 KB View Raw
- report.md 1.5 KB View
- report_bench_2026-08-30T213809.md 4.1 KB View
- run_experiment.py 3.9 KB View Raw
- viability_shield.py 4.1 KB View Raw