resuming an agent after a crash is useless if you restart from dirty state.
if a worker dies mid-tool execution and boots back up reading uncommitted memory, it acts on half-baked context and spirals immediately.
persisting atomic state checkpoints in sqlite before and after each tool call is the only clean way to recover without corrupting downstream tasks.