Canonical Interface Cleanup¶
The August 2026 cleanup removed repository-owned compatibility layers instead of maintaining two names or schemas for the same concept. New code should use only the contracts below.
Runtime APIs¶
- Logging uses
src.core.logging.logandconfigure_loggingdirectly. - The learned shield wrapper is
TransitionShield, constructed with the requiredinit_safety_boundkeyword. - Labelled environments require an explicit
SafetyAbstraction; overriding a wrapper-onlysafe(...)implementation is not a substitute. - Environment episode-cap metadata is named
max_steps. DPGGMatrixusespot_step; the ignoredpot_binsconstructor argument was removed.- Soft opponent-model rollouts accept a graph-indexed
OMBufferand the three-argument graph sampler.SoftRolloutPIConfig.rollout_stepsis the sole rollout-length field. - World-model inference uses
predict_probs_bits_rewards; random collection usescollect_rollouts_random. - Experiment notebooks pass
n_agentsexplicitly tocreate_base_config. Omitting it is a launch error even for environments that currently support exactly two agents.
Artifacts and caches¶
- Joint graphs are serialized as
src.joint_graph.common.Graphdirectly; wrapper objects containing a.graphfield are rejected. - True-shield graph caches require the graph pickle plus its canonical metadata sidecar. Embedded cache-wrapper objects are rejected.
- Timing data is read only from the export root's
timings.json, with hardware records intimings_hardware.json. Suffixed files and pickle timing payloads are not migrated. - Diagram state widths must match the live environment schema. Extra stored suffix bits are rejected instead of displayed as auxiliary metadata.
- Environment
set_state()methods accept only the tuple emitted by the currentget_state(). Counter-bearing snapshot tuples are rejected.
Existing exports that violate these contracts must be rebuilt with the current notebooks. The repository deliberately has no import shims or conversion notebooks for those formats.