The ledger, rendered
Findings, not vibes.
Rendered from your real JSON.
Point this dashboard at any labs/crashledger.json (or a run blob from a CI artifact): it normalizes the artifact, computes the §7 gate with the exact functions the CLI uses, breaks findings down by module, and draws the cost-economics bars. All of it runs in your browser against a JSON the CLI wrote — the CLI collects nothing and makes no calls, and neither does the dashboard.
exit(diff).Findings by module
Every row below is a receipt of an attack that did not land.
§auth3
§guards2
§input3
§state2
§volume3
Cost economics
Cost economics — every request is accounted in backend ops. Amplification is bounded by config, not vibes.
Accepted risks
Owner + bound on file. Accepted risks never re-alarm — they are reported, not failed.
No accepted risks on file — nothing finds its way around an owner + bound.
Want the gate in CI instead of on a page? That is the same verdict, computed inside npx crashtest run — see the exit rules and the ledger format. CI can emit exactly this artifact with npx crashtest run --json (the last stdout line is the same blob this page renders) — the pipeline recipe lives at run roots & recipes.