- Undo no longer writes its before-image over a value someone else gave the field since. Each `update` entry now records the value it wrote beside the value it replaced, and undo restores a field only while the field still holds what that step gave it. Otherwise the newer value stands and the step names it, as `kept: [{ field, by }]` on the API and as "Kept: Due, changed since by agent-bo" in the app's toast; a step whose every field is kept answers `skipped: 'changed since'` and changes nothing. Documents compare by fingerprint, so an appended section survives. An entry recorded before this change carries no after-image and restores as it always did (Issue #1726).