Versioned, checksummed persistence for Fast-Slow training state.
A checkpoint is not redacted. Its prompts, rollouts and digests are the state a run resumes from, and redacting any of them would change what the resumed run trains on or fail its digest checks. Structs and credential-named keys are refused when the state is built, so no client, retriever or OAuth struct reaches it, but text in a prompt or a rollout is written as it is: treat the file as sensitive.
Summary
Functions
@spec dump(Imp.Training.FastSlow.Config.t(), Imp.Training.FastSlow.State.t()) :: map()
@spec encode!(Imp.Training.FastSlow.Config.t(), Imp.Training.FastSlow.State.t()) :: String.t()
@spec load!(map(), Imp.Training.FastSlow.Config.t()) :: Imp.Training.FastSlow.State.t()
@spec read!(Path.t(), Imp.Training.FastSlow.Config.t()) :: Imp.Training.FastSlow.State.t()
@spec write!( Path.t(), Imp.Training.FastSlow.Config.t(), Imp.Training.FastSlow.State.t() ) :: :ok