What to do when the requirements change mid-build

Requirements change on every project that has ever been run. This is not a failure of planning, and a process that treats it as one will simply be ignored.
The damage comes from what a capable, willing team does with a change by default, which is to accept it quietly.
The silent yes
Here is how it happens. Week five. Someone senior on the client side, in the middle of a demo, says: while you're in there, could it also handle the case where a customer has two accounts?
The team says yes. Not because they are too weak to say no. Because the request is reasonable, because it genuinely is small, because saying yes takes four seconds and explaining the cost takes twenty minutes and feels like an accusation, and because everyone in the meeting wants it to go well.
Nothing is written down. No date changes. Repeat this eleven times over two months.
The project is then late, and nobody can identify the week it went wrong, because it never went wrong in any particular week. The conversation that follows is much worse than eleven small conversations would have been, and it is worse in a specific way: it is now about competence and good faith rather than about scope, because there is no shared record showing otherwise.
Almost every scope dispute we have seen comes from this pattern rather than to anyone behaving badly. Why scope creep happens and how to stop it covers the organisational version; this piece is about the mechanics of handling a single change well.
Classify before pricing
Three categories, and conflating them is where both sides start behaving unreasonably.
A clarification resolves something the original specification left open. "When two users have the same email, which one receives the notification?" was never answered, and the requirement could not have been delivered without answering it. This work was always owed. Charging for it is how vendors get a reputation for charging for every small thing, and it is deserved when they do.
A reversal replaces a decision that was already made and built against. The client chose single-currency in week two and now wants multi-currency. This is real work, and it is more expensive than the same requirement stated in week two would have been, because it includes undoing.
An addition is a genuinely new requirement that does not contradict anything. It is the easiest of the three to price and, in practice, the least common.
Most change requests are a mixture, and separating them is the first useful step. It also tends to calm the conversation, because a client who is told "half of this is clarification, which we owe you, and half is a reversal, which costs" hears somebody being fair rather than somebody negotiating.
Price against the checks
If the project is specified as automated checks rather than as prose, pricing a change becomes mechanical.
A change affects the check set in three ways. It invalidates existing checks, which now assert something the client no longer wants. It requires new checks for behaviour that was not previously specified. And it implies implementation work to make the new set pass.
"This change invalidates six existing checks, requires four new ones, and touches the export path and the reconciliation job" is a sentence both sides can examine. Neither party has to trust the other's memory or estimate. The alternative, which is the industry norm, is two people arguing from recollection about what a paragraph written in July meant, where the outcome depends mostly on who is more willing to damage the relationship.
This is the practical benefit of the approach described in how to write an acceptance test a machine can run. The checks are a quality mechanism and also the shared, unambiguous record of what was agreed, and that second job turns out to matter most during a disagreement.
What actually got cheaper
A fair question: does generated code make this less of a problem?
Partly, and it is worth being precise about which part. Re-implementation got much cheaper. A change that is mostly re-typing, where the requirement is clear and the structure stays the same, is now a fraction of what it was. That is a real reduction and it should show up in what the client pays.
What did not change is everything around it. Deciding what the new correct behaviour is. Updating the checks. Re-testing the paths the change touches. Confirming the change does not contradict a decision three other features depend on. Re-establishing agreement between people.
So the cost of change has fallen for some kinds of change and not for others. Changes that are mostly typing are cheap now. Changes that invalidate a decision the system is built around cost what they always did, because the expensive part was never the typing.
The timing that costs most
Not the latest change. The one that arrives for work currently half finished.
A change to something not yet started costs the difference between the old plan and the new one. A change to something finished, tested and released costs the modification. A change to something in progress costs both: the partial work is discarded or reworked, and the person doing it has to rebuild their understanding around a plan that no longer applies.
This gives a scheduling rule worth following. When a change arrives for work already in progress, the default is to finish the current piece and apply the change immediately after, rather than changing direction partway through. It feels wasteful. It is usually cheaper, and the finished intermediate state is something you can test, release, and roll back.
Keep the specification accurate, or retire it
A specification that has quietly stopped matching the build is worse than no specification, because people still cite it in good faith.
Two workable options after any accepted change. Update the document, with a dated note saying what changed and why. Or declare it superseded and name what is authoritative now, usually the check suite.
What must not happen is the third thing, which is what happens by default: the document stays in the shared drive, unchanged, gradually diverging, until month four when two parties are quoting different paragraphs of what each believes is the current specification. Half the disputes we see at this stage are exactly that, and nobody in them is lying.
A change budget, agreed at the start
The mechanism that removes most of the conflict is to agree up front that change will happen and to allocate for it.
State it in the terms that suit the engagement: a number of days, a percentage of the budget, or a count of change events per phase. What matters is that change becomes an expected, accounted-for part of the project rather than an exception requiring an awkward negotiation each time.
Two effects follow, and the second is the more valuable. Change requests stop being confrontations, because there is an agreed amount they are paid from and nobody has to argue about whether change is legitimate. And that amount is visible, so when it is two-thirds spent in week four, both sides can see that, and the conversation about the remainder happens while there is still room to have it.
The four questions worth asking on any change
What problem does this solve? Surprisingly often, nobody can answer. Requests get generated by a meeting rather than by a need, and asking the question removes a fair share of them at no cost.
What does it cost, specifically? In checks invalidated, checks added, and paths retested. Not in feelings about size.
What comes out? If the date is fixed, accepting something new means something else leaves. Naming what leaves is the whole discipline, and it is the step that gets skipped.
Who is deciding? One named person on each side who can accept the cost. Change control fails far more often from approval spread across too many people than from a bad process: something gets verbally agreed by whoever was in the meeting, and nobody discovers they were not empowered to agree it until the invoice arrives.
The goal was never to prevent change, which is neither possible nor desirable. It is to make the cost visible at the moment it is incurred, while there is still room to decide differently.
Sources
- 2025 DORA report announcement, Google Cloud: drawn from roughly 5,000 respondents; AI adoption relates positively to throughput and negatively to delivery stability, amplifying a team's existing practices rather than replacing them.
- METR, early-2025 study of experienced open-source developers: 16 developers took 19 percent longer across 246 tasks with AI tools while believing afterwards they had been 20 percent faster, which is why change cost deserves measurement rather than intuition.


