MigrateProof
A TypeScript CLI that replays a project's existing fetch-based tests against documented API changes and reports which breaks those tests would have missed.
Problem
A passing test suite is not proof that a consumer survives an upstream API change. A weak assertion passes whether the field moved, changed unit or disappeared, so the suite reports green and the break reaches production.
How I solved it
- 01
Takes the documented changes as an explicit declaration rather than inferring them, then replays the existing consumer tests against each one and reports a per-change verdict of caught, missed or cannot prove.
- 02
Refuses to guess when it cannot observe a request: unsupported clients return cannot prove, which is reported as absence of evidence rather than as a passing result.
- 03
Keeps AI repair behind the verification boundary. A repair candidate is checked against the unchanged tests and left in a separate Git worktree for review, never applied to the working tree.
My role / what I owned
Author and maintainer
- Built the replay engine, the three-way caught, missed and cannot-prove verdict model and its 0, 1 and 2 exit codes.
- Added the optional AI repair path, gated on the unchanged tests passing and isolated in a separate Git worktree.
- Set up the CI gate across Ubuntu and native Windows, plus the Docker sandbox suite.
- Documented the unsupported clients, the untested adapters and the absence of adoption in the README rather than in a footnote.
How it was built
- Team
- A self-directed open-source project in Nivish's public repository.
- Tools
- TypeScript
- Node.js
- Vitest
- Docker
- GitHub Actions
- Git worktrees
- AI coding-agent adapters
- Use of AI
- An installed AI coding agent can propose a source repair for a missed change. The proposal is only surfaced after the unchanged tests still pass, and it lands in a separate worktree for human review rather than in the working tree.
Source and current state
- 89 public commits between 30 August and 27 September 2026, under Apache 2.0.
- Revision 808fa0c passed 338 standard tests and 18 Docker-suite tests with no skips; GitHub Actions passed the full Ubuntu gate plus native Windows smoke and installed-package checks.
- The README publishes its own limits: not on npm, five of eight repair adapters never live-tested, and no team has used it yet.
- Status
- Early and deliberately unpublished. It runs from a clone; there is no npm package, and the README calls it a working prototype rather than a dependency.
- What it shows
- The mechanism, the test suite, the CI result and the stated limits are all publicly inspectable. It demonstrates the verification boundary, not adoption.