Rehearse a Change and Retire an Old Tool

Lesson 4 of 4

Retire a Tool Over a Window

Estimated time: 10 minutes

Phasing out an old call over a window

Removing a tool the moment its replacement lands breaks every run that still calls the old one, and the breakage appears in those runs rather than at the moment of removal. A window between still working and gone turns a surprise into a schedule.

Mark it before you remove it

A marked tool still works. It carries a notice that names the replacement and the date the old path goes, so callers can move on their own time rather than on the day of the removal.

Watch who still calls it

The removal is safe when the caller list is empty, and the caller list is the part most people skip. Count the runs that still call the old tool and name them, because a count that is not zero is a reason to wait.

def removal_ready(callers):
    remaining = [c for c in callers if c["tool"] == "old"]
    return {"ready": not remaining, "callers": remaining}

Make the old call teach the new one

While the window is open, a reply from the old tool can carry the new path. The caller learns the replacement at the moment it uses the old call, which is worth more than a notice read once.

Let the window have a date

A phase with no date becomes permanent, and two paths stay alive longer than either was meant to. Pick the date when the replacement lands, not when someone remembers.