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.