The Rollback Path Everyone Keeps
Every migration plan has a rollback section, and on cutover day Soul Vault had one too. The pilot log records Dad's terms for the move, and one of them was that moving it back is Dad's hand only. The old folder implementation was still installed, still selectable by the pointer, and the old notes were untouched. If the new store had misbehaved in the first hours, one pointer edit would have sent every reader back.
By 17:12 KST the same day, the new store had carried the vault for three and a half hours, writes had landed from several Macs, and the question changed from "can we go back?" to "what does keeping the way back cost?" Dad's answer (Coop todo 1110-40) was a rule: forward only. Only Delta may be selected. Problems are fixed in place.
What a Kept Rollback Costs
A rollback path is not free to keep. It is a second implementation that must stay installed on every Mac, a second set of tests that must stay green, and a second store that stops receiving writes the moment you move forward. That last cost is the subtle one. The longer you run on the new store, the more the old one is a snapshot of the past. Rolling back to it after a day is not undoing a change; it is throwing away a day of memory and calling it safety.
It also hides problems, by the same logic as a fallback. If the escape hatch is one edit away, the natural response to a bug in the new store is to flip back and investigate later. With no hatch, the bug is fixed where it lives, today.
What Forward Only Did
- A retired backend named anywhere, as
backendor as a read-rollout selection, fails withbackend_not_availablebefore anything is opened. Even code that constructs a pointer object by hand cannot select it. - The retired implementation's modules and its Delta share were removed from the codebase. The common contract suite now runs against Delta alone; tests that were only about the removed implementation were retired, and everything they protected that still matters (pointer rejection, bootstrap, history, quarantine) stays covered against Delta.
- Contract v6 removed the retired implementation's examples from the root's comments. No rule changed.
- Pointer generation 5 removed the retired implementation's metadata from the record, with backend, store, rollout and gate unchanged.
What Forward Only Did Not Do
Forward only is about what may be selected, not about destroying evidence. Dad's old soul folders stay where they were, as his data. Soul Vault's installer refuses to move or delete them, and the store's first commit preserved every note byte for byte (481 notes, every hash matching), so nothing in the old tree is the only copy of anything. The original cutover receipts stay in the repository's pilot log and an archived review as history, explicitly "never instructions for a current backend".
That pairing is the pattern worth keeping: retire the path aggressively, keep the evidence carefully. The way back is closed; the record of how you came is not.