MigrateProof

Published open source · pre-releasePublic repository · Aug-Sep 2026

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.

Implementation record

How I solved it

  1. 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.

  2. 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.

  3. 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.