
Legacy Modernisation
Change old code, keep what works
An agent changes legacy code quickly. Characterisation tests written first tell you what it broke.
- Tests that record what it does today, correct or not
- Written before the first edit
- Run on each change after that
- The step most teams skip, and we do first
Example record
Recorded before the first edit
What it does today, kept as tests. Then you judge each behaviour.
A diff in recorded output stops the change.
- Intended
Rounding on invoice totals
a downstream report depends on it
- Unknown
Timeout returns an empty list
someone treats it as a feature
- Intended
Date format in the partner export
a partner parses it
- Blocked
Agent change altered recorded output
diff on 2 recorded cases
What breaks when legacy is changed first
Old systems carry behaviour nobody wrote down. Some of it is relied on.
Each behaviour recorded as a test before anyone touches the code
Each one labelled intended, accidental or unknown, with an owner
An agent’s change that alters a recorded output is blocked
Unknown behaviours go to the person who knows the domain, not to the agent
Answers from the code that runs
Documentation drifts. So we index the code, and your answers match what runs today.
How the code relates is indexed once, then queried
An architectural question in ~400 tokens, against ~10,000 before
25x less context for the same question
The figures are from our own case, One architectural question, priced 2 ways, on an internal workspace of 700 nodes and 1,000 edges.
Capabilities
How the characterisation is built
So the first change lands on a system you have on record.
Model
What we fix, and what you decide
What we fix
- F1Characterisation before the first change
- F2Recorded behaviour reviewed by someone who knows the domain
- F3A diff in recorded output blocks the change
What you decide
- C1Which parts of the system go first
- C2Who decides which behaviour is intended
- C3Stack and test framework
Next step
Send us the module nobody wants to touch.
We scope what characterising it takes. Then you schedule the change with its behaviour on record.

