Global biotechnology company
Two decisions. One safer migration.
Challenged inherited migration scope using usage evidence, then investigated behavioral differences between legacy and new implementations—removing unnecessary work and establishing repeatable validation.



- Inherited work
- Usage evidence
- Necessity decision


- Actual behavior
- Live comparison
- Investigate · revalidate
Two complementary investigations, grounded in evidence.
01 / The Challenge
An inherited plan. Unverified assumptions.
A business-critical proprietary registry and inventory API was being replaced by a new platform and proxy implementation. Internal applications still depended on its behavior.
When I returned from parental leave, I encountered an inherited endpoint backlog with unclear provenance. Development was underway without reliable behavioral validation.
There were two different uncertainties: did every planned endpoint still need migration, and did the new implementation preserve required behavior? Neither the backlog nor the available contracts was sufficient evidence on its own.
02 / The Investigations
Evidence over assumptions.
Both investigations asked whether the evidence justified further engineering effort. One examined the necessity of planned work; the other examined the reliability of the implementation and its supposed sources of truth.
A / Scope reduction
Establish what still matters.
I built Kibana/CloudWatch traffic views and a reusable endpoint-usage agent skill to examine active callers over approximately a year. With Product, technical leads and engineering leadership, I agreed retirement criteria based on both usage and continued application support.
- Inherited endpoint backlog
- Historical traffic
- Still-supported applications
- Agreed retirement criteria
Does this endpoint still need migration?
No — remove unnecessary work
37+Planned endpoint migrations removed from scope
Yes — retain necessary work
Endpoints still requiring migration
B / Behavioral correctness
Validate what the system actually does.
With management approval, I built an initial shadow-diff MVP in approximately three weeks. Live legacy-versus-new response comparisons revealed contract discrepancies across 200+ endpoints, including missing negative-path behavior. Follow-on coding-agent analysis examined actual legacy JavaScript logic.
Unreliable abstraction · deprioritized
Typed legacy client — insufficient as a reliable representation of actual behavior
Legacy implementation and responses
New proxy implementation
Source-level analysis · legacy JavaScript
75 missed behavioral branches identified
Prioritize corrective work
Revalidate after correction
A repeatable delivery check—not evidence that every finding was corrected.
The scope filter and behavioral investigation are complementary, not a sequential pipeline. Their endpoint populations are not established as identical, and the figures do not describe an additive funnel.
03 / Key Decisions
When the evidence changed the plan.
I treated the backlog, the client abstraction and one-off testing as assumptions to examine—not conclusions to preserve.
- Challenge inherited scope. An inherited backlog could have set the agenda. I asked for usage and support evidence, then worked with Product and engineering leads to agree when work could be retired. Usage verification became part of migration planning rather than assuming every ticket was necessary.
- Abandon an unreliable abstraction. Typed definitions looked authoritative but did not reliably reflect legacy behavior. I deprioritized static comparison rather than expand an untrustworthy check, redirecting the investigation toward live responses and implementation logic.
- Make validation repeatable. A one-off investigation was not a delivery capability. Shadow-diff checks were integrated into CI, and engineering leadership prioritized corrective bugs other than negative-path parity issues. Repeatable validation did not make identified issues equivalent to resolved defects.
04 / Results and Reflection
Less unnecessary work. Better evidence of correctness.
The initial static comparison had limited value because its abstraction did not reliably describe actual behavior. I would establish that source of truth earlier and keep the MVP tighter.
I would also involve engineers earlier in investigating discrepancies, making difficult findings a shared discovery and giving colleagues a role in validating the assumptions behind their work.
- Planned endpoint migrations removed
- 37+Usage and supported-application evidence
- Missed behavioral branches identified
- 75Analysis of actual legacy implementation logic
- Shadow-diff validation integrated
- CIRepeatable checks during delivery
Corrective delivery continued through a separate agentic build harness. Its corrective tickets were not the migration work removed from scope.
