Category 7 of 10
Performance smoke
Critical flows meet agreed budgets under baseline load; data access stays bounded.
v1.0 · verified on 2026-09-21
A smoke run under baseline load with a realistic dataset. Growth and Scale include these items.
Critical flows within agreed budgets under baseline load
tool Run a k6 smoke script over the critical flows at the agreed baseline concurrency against staging.
p95 latency for each flow is within the written budget and the error rate is under 1% of requests in the run.
List endpoints are paginated and bounded
automated Request each list endpoint with no limit parameter and with limit=100000.
Every list endpoint returns at most its documented page size in both cases.
No N+1 query pattern on critical pages
tool Count database queries per request for the ten most visited pages using the ORM's query log.
Query count per request does not grow with the number of rows displayed.
Generated migrations include indexes for new lookups
manual For each new foreign key or filtered column in the release's migrations, check for an index.
Every new foreign key and every column used in a WHERE clause of a critical query has an index or a written reason not to.
Dots: Starter, Growth, Scale. Compare plan limits.
Failure patterns these items catch
- mediumOne query per row
A list page runs a separate query for each item, so response time grows with the data.
- mediumList endpoint without a page size
An endpoint returns every row in the table, which works in development and fails at the first real customer.
- mediumGenerated migration without indexes
A new foreign key or filter column ships without an index, and queries slow down as the table grows.
Ask which plan runs these items
Email with your team size, cadence and stacks. We reply within 24 hours on business days.