expand and contract
Add the new setting first and remove the old one only in a later release.
Expand and contract is a two-release migration pattern: add the new field alongside the old (expand), then remove the old once no supported version needs it (contract).
Examples
Release 1.5.0 adds
report_msand keeps writingreport_s, so a rollback to 1.4.0 still finds the setting it expects; a later release deletesreport_s.The back end is deployed to accept the new message format, and still the old, before the first canary device updates.
See also