{"id":355,"slug":"rule-enforce-performance-budgets-in-ci","title":"RULE: Performance budgets enforced in CI. Build fails on budget violation. Documented budgets without CI enforcement do not work.","kind":"rule","scope":"business","status":"current","audiences":["claude-code","dev","candid-team"],"topics":["core-web-vitals","agency-methodology"],"reference_body":"**Rule:** Every Candid Creative client site ships with a **performance budget enforced in CI**. Lighthouse CI or DebugBear GitHub integration runs on every PR. Build fails if any budget threshold is exceeded. **Documented budgets without CI enforcement do not work** — they're wishlists.\n\n**Why:** A site can pass CWV at launch and regress within six months as content, plugins, and tags accumulate. The default arc of any maintained website is heavier next year than this year (see [[web-almanac-2025-mobile-page-weight-2-56mb]] — +7.8% median weight YoY). Without CI enforcement, every \"small\" change ratchets the budget; six months later, LCP has crossed 2.5s and nobody noticed.\n\nThe pattern was popularised by Tim Kadlec and Brad Frost. The 2025 Web Almanac confirms what they've been saying for a decade: **discipline at the CI layer is the only durable defense against compounding bloat.**\n\n**How to apply:**\n- Use [[2026-performance-budget-smb-site]] as the default budget targets\n- Tools: Lighthouse CI (free) for build-time enforcement; DebugBear or SpeedCurve for field-data monitoring\n- Build fails on budget violation — no overrides without explicit waiver in the PR\n- Quarterly budget review: tighten where slack exists; document why if any threshold is loosened","rationale_body":null,"metadata":null,"links":{"outgoing":[{"slug":"2026-performance-budget-smb-site","title":"Reference: 2026 performance budget — SMB marketing site (Candid default targets)","kind":"reference","scope":"business","link_type":"depends-on"},{"slug":"web-almanac-2025-mobile-page-weight-2-56mb","title":"Web Almanac 2025: median mobile page weight crossed 2,559 KB in July 2025 (+7.8% YoY)","kind":"reference","scope":"business","link_type":"depends-on"}],"incoming":[{"slug":"research-brief-page-speed-moat","title":"Research brief: Page Speed as a Moat — why CWV separates the agencies from the freelancers (piece 9 of 15)","kind":"reference","scope":"business","link_type":"relates-to"},{"slug":"inp-150ms-target-not-200ms-floor","title":"Candid build standard: INP ≤ 150ms target (200ms is the failing floor); LCP ≤ 2.0s; CLS ≤ 0.05","kind":"rule","scope":"business","link_type":"relates-to"}]},"created_at":"2026-05-22T20:03:33.396Z","updated_at":"2026-05-22T20:03:33.396Z"}