The planner patch looked nearly green because one check answered only one question. The incident record reports 116 of 117 targeted transit tests passing. A broader check then found three TypeScript errors, four lint failures, and a production build failure.

The remaining test was a transfer-cycle case. Its approved transfer claimed zero distance even though its endpoints were separated. Dismissing that failure as a fixture problem removed the one test that was already contradicting the patch's transfer model.

What the checks actually established

The sequence was:

The targeted test command showed that most exercised planner cases still returned the expected result. It did not compile every package, inspect generated bundle exports, or run the build. The typecheck and lint commands found problems outside that test process, and the build found a mismatch between generated data and the updated TypeScript interfaces.

The test pass rate was not false. It was incomplete evidence. The error was turning it into a repository-level status.

Why the failure was easy to miss

The incident record attributes the hidden failures to synthetic contracts in the focused tests and stale generated bundle files. A mock can keep a test small, but it can also preserve an interface that the real generated artifact no longer implements. The transfer-cycle test was the useful contradiction because it exercised a semantic boundary rather than only a happy-path route.

This is the same boundary that appears elsewhere in the planner. Source code, generated bundles, compiled images, and runtime consumers must agree before a route result is trustworthy. A test that bypasses one of those boundaries can still be valuable, but its scope must stay visible.

What to record now

The repository exposes separate commands for separate claims:

text
1pnpm typecheck
2pnpm lint
3pnpm test
4pnpm build

Report each result independently. A targeted planner test pass can support a planner claim. It cannot support a typecheck, lint, generated-artifact, or production-build claim. The current scripts make those checks available; this page does not claim that an external CI system runs them in a particular order.

The practical correction is small: preserve the failing semantic test, regenerate data before integration checks, and call the repository verified only when all required scopes pass. If one scope is unavailable, name that scope instead of converting the other green checks into a general status.

The planner's transfer rules are described in Conservative Connectivity. The rider-facing consequence of a different planner failure is in Graph-valid but rider-absurd route.