Episodic Reporting Contract¶
The temporal-game exports keep using per-agent runs.npy histories as their
durable source of truth. New EpisodeLog rows include start_step in addition
to episode, t_end, ep_len, and reward fields; old rows without
start_step remain valid, and graph helpers infer it from t_end - ep_len + 1
when needed.
The existing EWMA satisfaction figures answer an episode-indexed question:
how objective satisfaction changes over completed episodes. They keep their
default x_axis="episode" behavior.
Paper/report episodic exports answer a sample-efficiency question: what
completed-episode return was achieved at the episode's actual end step.
Regraph writes these under graphs/all/ using t_end and union alignment:
episode_return.png,episode_return_legend.png,papers/episode_return.png
Trainer fields such as episode_return_mean and episode_length_mean remain
logging metrics, but they are not used for canonical graph exports. Generated
graphs/episodes/ and graphs/metrics/ directories are legacy namespaces and
should be removed during export so stale per-update episode aggregate plots and
old episode_length graph files do not remain visible.
For suite-level curves, per-agent rows are aggregated into one algorithm-level
episode row by episode index: t_end is the latest agent end step, cum_reward
is the mean across agents, and ep_len is the mean completed episode length.