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
| Check | It proves | It does not prove |
|---|---|---|
| Focused transit tests | A route, image, fare, or planner case behaves as tested | Uncovered data or browser behavior |
| Collector tests | Ingestion, deduplication, projection, or cursor behavior in fixtures | Upstream data quality |
| Typecheck | Declared interfaces line up | Runtime configuration or visual fidelity |
| Lint | Configured source rules pass | Correct product behavior |
| Transit data validation | Generated bundle contracts pass | A route looks correct on a map |
| AI evaluation and release check | The evaluated model/run meets configured metrics | A future prompt/model run |
| Web build | The current application compiles and bundles | Device typography, touch, or cache behavior |
Minimum checks by change
Planner or transit data changes should include:
pnpm --filter @aidrecabrera/transit testpnpm --filter @aidrecabrera/transit validate-releasepnpm --filter web typecheckpnpm --filter web buildCollector changes should include:
pnpm --filter @aidrecabrera/collector testpnpm --filter @aidrecabrera/collector typecheckAI changes should include:
pnpm --filter @aidrecabrera/api testRun 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:
pnpm typecheckpnpm lintpnpm testpnpm buildHigh-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.