The situation
Every organisation has one.
Yours might be the legacy payment path, the framework two majors behind, or the database nobody wants to touch. Everyone agrees it matters. It has been agreed for four quarters.
It doesn't get deferred because it isn't worth doing. It gets deferred because nobody can scope it, and a plan without a size doesn't win an argument against work that has one.
The unknowns are the work. Scoping it honestly would mean doing much of it first, so the ticket collects another stamp and waits.
Why it's hard
Three reasons it never gets scoped.
Nobody knows every caller
The call sites grew over years. A search finds most of them, never all of them.
The behaviour is undocumented
Nobody can promise the same behaviour when nobody has written down today's.
The authors have left
The reasons for the odd cases went with them. The code shows what, not why.
The way in
Buy knowledge first, then ship slices.
A migration stalls when the first cycle has to produce changes. Let the first cycle produce knowledge instead, and the second one has something to size.
- Run a survey cycleOne cycle that changes nothing: what calls it, what it does today, what could be carved off first.
- Write down the decisions that are yoursThe data model, the cutover, the rollback, anything a customer would notice.
- Pin today's behaviourTests that capture what happens now come before changes, so unchanged is something you can prove.
- Cut the first slice that ships aloneOne path, one caller, one table. It goes through the same review as any other change.
- Keep it on the roadmapOne roadmap item, one cycle at a time, while normal delivery carries on beside it.
The questions
Five questions before you start.
Put these to whoever would run it. Vague answers aren't a reason to defer again; they're the list of what cycle one is for.
What would we know at the end of one survey cycle?
SurveyName what it produces: a list of callers, the behaviour written down, a first slice. If that's vague, the cycle isn't scoped either.
What is the smallest slice that could ship on its own?
SliceIf nothing can ship alone today, the first slice is the work that makes one possible.
Which decisions are ours, not the agent's?
DecisionsThe data model, the cutover and the rollback are yours. Name the person for each before any build starts.
How do we prove behaviour is unchanged?
ProofWithout tests that pin today's behaviour, the same as before is an opinion, and the review has nothing to check.
What happens to normal delivery while this runs?
DeliveryIf the migration has no place on the roadmap, it competes with everything else in private, and loses again.
Try this on your organisation
Size your stuck migration.
Answer for the one you keep deferring. It takes two minutes, it proposes a first cycle rather than a plan, and nothing you type leaves this page.
No durations here, on purpose. Cycle one is what tells you what the rest is worth estimating.
With Wakalix
A migration is work like any other.
Wakalix doesn't make a migration small. It makes it one roadmap item with cycles under it, each approved by a person and each leaving a record.
- 1It starts on the roadmapEvery product keeps a ranked roadmap. A cycle opens from any item, and the roadmap keeps track of every cycle it spawned and what each one produced.
- 2A plan, approved before anything runsA planning agent breaks the work into items, each with a definition of done and the right agent. Nothing runs until a person approves the plan.
- 3The agent stops when the call is yoursWhen a decision belongs to a person, the agent stops, lays out the options and waits. It doesn't guess at the cutover.
- 4Every slice comes back with evidenceWork comes back with its evidence and lands as a pull request a person merges. Every item is estimated before it starts.


What an agent got wrong goes back into the agents at the retro, so the next slice starts from a better team than the last one did.