Skip to content

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}.png
  • all/*_legend.png
  • all/papers/*.png
  • matching shielded/ variants for labels containing Shielded

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.