Exact Graph State Width¶
Exact joint-graph builders now use the same public state width as env.state()
for all supported environments.
- No gridworld exact builder appends graph-only time bits.
- Cached legal graphs should therefore have node widths equal to the live env observation/state width.
- Hidden
max_stepsepisode caps are not part of node identity and should not be reintroduced as extra channels.
Why this matters¶
The world-model and opponent-model pipelines assume graph nodes can be fed back through the same public-state encoders used for replay data. If an exact graph stores a wider internal state than the environment exposes, downstream components either mis-hash the cache or fail at WM scoring time when the state widths disagree.
Pursuit memory note¶
Removing time bits fixes the largest Pursuit blow-up, but exhaustive 3-agent Pursuit graphs can still be large because the public state includes all agent position combinations and every joint action expands a separate edge.
build_guard_legal_joint_graph(..., include_all_starts=False)is the safe default for WM notebooks.- Exhaustive 3-agent builds now preflight their rough edge upper bound and raise
a clear
MemoryErrorbefore the kernel gets OOM-killed.