Episodic Reporting¶
TrainResult.history pickle exports remain the durable episode-history format
for notebook experiments. EpisodeLog rows include start_step alongside
episode, t_end, ep_len, cum_reward, and cum_violations.
Current rows also retain analysis-ready safety and shield telemetry rather than
only cum_violations: unsafe-episode indicator/rate/first-hit time; shield
override, unsafe-proposal, missing-coverage, and infeasibility counts/rates;
eventual and immediate risks; budgets and safety margins; admissible-action
availability; one-step and finite-window Brier diagnostics; predicted reward
effects; OM floor summaries; and action/decision histograms. These fields are
durable report inputs even where the default paper figure intentionally shows
only reward and safety.
Do not interpret cum_violations as the probabilistic shield objective. It
counts unsafe timesteps. For reachability comparisons use unsafe_episode (or
cum_violations > 0) and report its rate across episodes/seeds; use
violation_rate and cum_violations as severity diagnostics. See
../shielding/horizon-semantics.md.
The existing cumulative figures answer what has accumulated up to a timestep. The existing two-panel episodic figure answers per-episode reward and safety at the episode's actual end step.
Notebook export helpers now also write paper/report single-metric episodic
variants directly under algorithm-scope graph directories whenever the standard
episodic.png export runs:
all/{episode_return,episode_safety}.pngall/*_legend.pngall/papers/*.png- matching
shielded/variants for labels containingShielded
These structured exports use completed episode rows directly, with t_end as
the x-axis, so they read as sample-efficiency plots.
Trainer aggregate fields such as episode_return_mean may still exist in logs,
but they are not canonical graph exports.