Ship changes.
Keep the way back.
Rehearse what your previous app reads after a new version writes.
Then read it again through the new version.
Can both versions preserve
the last acknowledged value?
Healthy isn’t the same as compatible.
Old version
Create an order withstreet.
New version
Read, create & update
the same stored data.
Roll back
Read the new records.
Edit through the old app.
Forward again
Read the old app’s edit.
Catch a stale alias.
One key changes.
Rollback breaks.
The candidate writes street_address. The old reader still expects street.
Dual writes.
A stale read remains.
Both keys are written, but a new reader prefers the alias left behind by an old edit.
Preserve the
canonical value.
A supplied fixture keeps the legacy key authoritative. This is not an agent-generated repair.
Keep the evolved schema.
Add an unused nullable column and a nonunique index after the old version writes. Return to old code, retain its edits, and verify the evolved schema before moving forward again.
Supplied synthetic control · No arbitrary SQL or native release action
Every result has a record.
No rehearsals yet
Choose a scenario above. Results appear only after actual execution.