ExAgent.Session now mirrors Server's persistence: checkpoint coordination
state to a store, rehydrate on restart. Closes the asymmetry where a crashed
Server resumed its conversation but a crashed Session lost its shared_state.
- Session.Snapshot: strictly JSON-serializable checkpoint (round-trips the
policy struct so turn position survives).
- Session.start_link(store:) opt-in; checkpoint after every mutation,
rehydrate in init. Live participant refs come from the app on restart.
- Store dispatchers + ETS/Postgres impls use the new snapshot codec.
- shared_state must be JSON-portable (same rule as Server.Snapshot).
6 new tests (snapshot round-trip, rehydrate, refs, Postgres). 282 total.
Validated end-to-end in dragones (world survives crash).