Skip to content

Pursuit Safety Label

LabelledPursuit.safe(...) now marks a public state as unsafe only when every non-guard agent is inside the goal region at the same time.

Semantics

  • In the 2-agent case this is unchanged: the single intruder being in goal is unsafe.
  • In the 3-agent case, one intruder reaching goal by itself is no longer a hard safety violation.
  • The hard safety event is therefore "full breach" rather than "any breach".

Reward contract

The maintained environment uses the original sparse interception rewards. A guard--intruder collision gives the guard +10 and the intercepted intruder -10; an intruder occupying the goal gives that intruder +10 and the guard -10. These rewards are independent of the binary safety label. A prior version set all four constructor defaults to zero while referring to an EPLTL reward layer, but no such layer is present in the training pipeline. Leaving those defaults at zero makes every reported reward comparison vacuous and also trains the WM reward head and reward-aware shield action ranking on zero targets.

Why

The project shield constrains eventual reachability of unsafe states, not just one-step risk. With the default pursuit map, 1 guard vs 2 intruders made the old "any intruder in goal" label structurally difficult to satisfy at low risk budgets, because the intruders can pressure distinct goal entries.

This relabel keeps the environment dynamics and public state contract unchanged while making the hard safety objective match the stronger failure mode we care about in the 3-agent case.

Modelling impact

  • WM and OM remain structurally compatible because the public state/action contract did not change.
  • Joint opponent modelling still fits this objective: the shield only needs the induced probability that the joint opponent drives the system into states where all intruders are in goal simultaneously.
  • Learned shield bundle caches rebuild automatically because the bundle cache metadata hashes the safe(...) source.