Two-way vs. one-way door
Before any other decision criteria — figure out if this is a door you can walk back through.
When to reach for this
The shape of the problem this playbook is for.
- A meeting has spent more than 20 minutes debating a small reversible call.
- A team is scared of a decision that's actually trivial to undo.
- A team is moving fast on a decision that's effectively permanent.
Signals you're ready
If these aren't true, you're not deciding yet — you're scoping.
- You can describe the rollback in one paragraph and it costs less than a week of work.
- Or: rollback requires data migration, partner re-onboarding, or breaking a public contract.
The rubric
Numbered, weighted, opinionated. Walk through them in order — the first decisive answer often ends the meeting.
- Decisive
If we ship this and hate it in 30 days, what does undoing it cost?
Less than a week of focused work and no external coordination → two-way. Anything involving partner re-onboarding, data migrations you can't reverse, or public-API breakage → one-way.
- Heavy
Does anyone outside our team have to change behavior because of this?
If yes (customers, partners, downstream services), bias toward treating it as one-way even if technically reversible — the social cost is what makes it expensive.
- Tiebreaker
Is there a flag, dial, or feature gate that can hide this from users?
A behind-flag launch converts most one-way doors into two-way doors at the cost of one extra week of plumbing. Almost always worth it.
Default pick
When the meeting is going in circles, ship this — and write down what would change your mind.
Red flags
Patterns that mean the playbook isn't your real problem.
- The team is anxious in proportion to the actual reversibility — common on two-way doors with high visibility.
- Nobody has actually written down what the rollback would look like; the 'it's reversible' claim is a vibe.
- The decision is being made by the people who would not own the rollback.
Real applications
The playbook used in anger — context and outcome.
- ContextRenaming an internal package — debated for two days, scared of breakage.OutcomeTwo-way door. Codemod + alias took an afternoon; rolled forward, kept the alias for one release.
- ContextSwitching the public API auth scheme from API keys to OAuth-only.OutcomeOne-way door. Partners need to re-onboard; deprecation window of 6 months with overlap was the only realistic plan.
Related briefs
Real decisions that used this playbook, written up in the Library.