A passing command has a scope. Transit unit tests can prove a transfer invariant while the repository still fails typecheck. A headless page render can prove that a component mounts while an Android screenshot still shows the wrong line wrapping. The verification record should name the scope instead of collapsing every result into “passed.”

The project trust model

CheckIt provesIt does not prove
Focused transit testsA route, image, fare, or planner case behaves as testedUncovered data or browser behavior
Collector testsIngestion, deduplication, projection, or cursor behavior in fixturesUpstream data quality
TypecheckDeclared interfaces line upRuntime configuration or visual fidelity
LintConfigured source rules passCorrect product behavior
Transit data validationGenerated bundle contracts passA route looks correct on a map
AI evaluation and release checkThe evaluated model/run meets configured metricsA future prompt/model run
Web buildThe current application compiles and bundlesDevice typography, touch, or cache behavior

Minimum checks by change

Planner or transit data changes should include:

text
1pnpm --filter @aidrecabrera/transit test
2pnpm --filter @aidrecabrera/transit validate-release
3pnpm --filter web typecheck
4pnpm --filter web build

Collector changes should include:

text
1pnpm --filter @aidrecabrera/collector test
2pnpm --filter @aidrecabrera/collector typecheck

AI changes should include:

text
1pnpm --filter @aidrecabrera/api test

Run the release checker with a saved summary and the gate file as described in AI model selection.

Run the root checks when the change crosses package boundaries:

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

High-value regression examples

The planner must reject a candidate with an access or egress walk above 1,500,000 mm, or a combined access walk above 2,000,000 mm. A graph-valid path with a 4.7 km access walk is a useful regression because it tests rider usefulness, not only connectivity.

The image reader must reject a bad magic value, incompatible format contract, truncated section, or mismatched digest. The collector must preserve a raw observation when derived intelligence fails, ignore a duplicate (vehicle_id, reported_at) record, and advance a road cursor when a trace is unusable. The AI boundary must turn malformed or semantically invalid model output into a safe fallback rather than a fabricated transit action.

Do and do not

Do report targeted, package, repository, and visual results separately. Do attach the input, run identifier, device, viewport, or commit when a measurement depends on it.

Do not use a percentage of passing tests as a release status. Do not call an illustrative snippet or an untested screenshot a regression test. Do not hide a failed fixture because the failure is inconvenient; it may be the only evidence that an invariant changed.