All 9 tables are read/written by runtime code. budget is seeded by existing changeset 10 (13 reference budgets; unchanged, no new changeset). target is synced from the sitemap; the other seven are runtime logs and start empty.
CONTENT_TABLE scope: already handled in WebPerfEvaluationService.matches and covered by WebPerfRegressionTest.matchesBudgetScopesComparatorsAndSeverity (all five scopes).
Half-wired, fixed: reportRetentionDays was documented and validated but nothing read it. Now enforced when a report is stored; test WebPerfP1Test.testReportRetention (0 keeps, 30 deletes a 40-day-old report).
Setup card (WebPerfSetupStatus, first home widget): tested pages, lab runner, budgets (defaults vs own), Google field data; uses runtime.labRunner()/cruxClient()/url source resolution. Test testSetupCard.
WebPerfDefaultsChangelogTest: shipped changelog through real Liquibase on H2 (PostgreSQL mode; liquibase-core as test dep): 13 seeds, second update runs nothing, seed re-run inserts nothing and keeps an edit.
Seeded budgets with source RUM (7 of the 13) are never evaluated: no real-user source consumes RumSource. The budget help says so. The CrUX evaluator only reads source CRUX budgets, and none are seeded. Seeding CRUX budgets would change behavior on deploy (new regressions), so it needs an owner decision.
Config with no consumer in main code: RUM_VIEW/rumSource, TRIGGERS_ESB, publishSettleSeconds, deploySettleSeconds, concurrency (not tables; left as is).
## Audit
- All 9 tables are read/written by runtime code. `budget` is seeded by existing changeset 10 (13 reference budgets; unchanged, no new changeset). `target` is synced from the sitemap; the other seven are runtime logs and start empty.
- `CONTENT_TABLE` scope: already handled in `WebPerfEvaluationService.matches` and covered by `WebPerfRegressionTest.matchesBudgetScopesComparatorsAndSeverity` (all five scopes).
- Half-wired, fixed: `reportRetentionDays` was documented and validated but nothing read it. Now enforced when a report is stored; test `WebPerfP1Test.testReportRetention` (0 keeps, 30 deletes a 40-day-old report).
## Changes
- `help/web-performance.yaml` + `WebPerfHelp` (STAND-IN core#1198).
- Setup card (`WebPerfSetupStatus`, first home widget): tested pages, lab runner, budgets (defaults vs own), Google field data; uses `runtime.labRunner()`/`cruxClient()`/url source resolution. Test `testSetupCard`.
- `WebPerfDefaultsChangelogTest`: shipped changelog through real Liquibase on H2 (PostgreSQL mode; liquibase-core as test dep): 13 seeds, second update runs nothing, seed re-run inserts nothing and keeps an edit.
- `WebPerfTablesGuardrailTest`. Docs: README, UPGRADE, CHANGELOG.
## Not done
- Seeded budgets with source RUM (7 of the 13) are never evaluated: no real-user source consumes `RumSource`. The budget help says so. The CrUX evaluator only reads source CRUX budgets, and none are seeded. Seeding CRUX budgets would change behavior on deploy (new regressions), so it needs an owner decision.
- Config with no consumer in main code: `RUM_VIEW`/`rumSource`, `TRIGGERS_ESB`, `publishSettleSeconds`, `deploySettleSeconds`, `concurrency` (not tables; left as is).
`./mvnw verify` green.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Audit
budgetis seeded by existing changeset 10 (13 reference budgets; unchanged, no new changeset).targetis synced from the sitemap; the other seven are runtime logs and start empty.CONTENT_TABLEscope: already handled inWebPerfEvaluationService.matchesand covered byWebPerfRegressionTest.matchesBudgetScopesComparatorsAndSeverity(all five scopes).reportRetentionDayswas documented and validated but nothing read it. Now enforced when a report is stored; testWebPerfP1Test.testReportRetention(0 keeps, 30 deletes a 40-day-old report).Changes
help/web-performance.yaml+WebPerfHelp(STAND-IN core#1198).WebPerfSetupStatus, first home widget): tested pages, lab runner, budgets (defaults vs own), Google field data; usesruntime.labRunner()/cruxClient()/url source resolution. TesttestSetupCard.WebPerfDefaultsChangelogTest: shipped changelog through real Liquibase on H2 (PostgreSQL mode; liquibase-core as test dep): 13 seeds, second update runs nothing, seed re-run inserts nothing and keeps an edit.WebPerfTablesGuardrailTest. Docs: README, UPGRADE, CHANGELOG.Not done
RumSource. The budget help says so. The CrUX evaluator only reads source CRUX budgets, and none are seeded. Seeding CRUX budgets would change behavior on deploy (new regressions), so it needs an owner decision.RUM_VIEW/rumSource,TRIGGERS_ESB,publishSettleSeconds,deploySettleSeconds,concurrency(not tables; left as is)../mvnw verifygreen.🤖 Generated with Claude Code