Skip to main content
The PR comment is the point. Every comment is read by every reviewer, in context, at the moment it matters.

The action

.github/workflows/crust.yml
It fetches snapshot history, runs the check, posts or updates the comment, and publishes the new snapshot.

Budgets

Create .perf/budgets.json at the workspace root. Nothing is enforced until this file exists.
.perf/budgets.json
Both axes are covered on purpose. A check that only guards bytes will happily pass a PR that silently halved your static shell — which is the regression nothing else catches.
See the budgets reference for every field.

The comment

The comment carries a hidden <!-- crust-report --> marker so the action updates the existing one instead of stacking a new comment on every push. crust ci exits non-zero on a breach.

Snapshot history

A fresh CI checkout has no .perf/ directory, so the baseline lives on an orphan branch:
An orphan branch shares no history with your code, so it can grow and be truncated freely without polluting git log or complicating rebases.
Fork pull requests get the comment but skip the push. A fork’s GITHUB_TOKEN is read-only on the base repository, so history push reports and exits cleanly rather than failing the check. Diffs still work from whatever snapshots the branch already holds.

Retention

Full fidelity for the newest 50 builds, then one snapshot per commit, then module detail dropped after 90 days. Route totals and shell ratios are kept forever — they are tiny, and they are what anyone looks at a year later.