qualitylab

Reversibility · Blast radius

Deploy dark; release with a flag

tier II/cost to adopt: medium/contested

Separating the act of shipping code from the act of turning it on makes the risky half of a change reversible in seconds without a deploy, and lets the two halves be judged by different people at different times.

Do this firstRolling back is one step, and it is practised

The code goes to production off. Someone turns it on afterwards, for some people, and can turn it off again without a build.

The reversibility gain is the obvious half. The one people underestimate is that it makes the release decision a separate, cheap, human decision — which is what lets a deploy pipeline run unattended without anyone feeling they have given up control. Teams that will not automate deploys often will automate them once turning a thing on is no longer the same event.

The cost is a flag system and the discipline to delete flags, which is underrated: a codebase of permanent flags is its own coupling problem.

The decoy

A staging environment. It answers “does this run”, which is rarely the question, and it answers it with traffic that does not resemble yours. It also costs about as much to operate as flags do to adopt.

Evidence

Counterevidence

Last reviewed 2026-08-19.