This is the checklist, not the config
The integration page explains the three settings and the canonical tag. This page is the sequence to run before the site goes public.
The checklist, filled in
Ridgeline Roofing, a 41 page Astro build, September 2026.
build
1. the build ran from the commit you intend to ship yes, sha recorded
2. one html file per route in dist 41 files
3. no page needs a client script for its main content verified on three pages
4. assets are hashed, and old hashes are gone yes
urls
5. each page emits one canonical on the production host one per page
6. no canonical points at a preview host none
7. trailing slashes match the host never, both sides
sitemap and robots
8. the sitemap lists indexable pages only 41 of 41
9. robots.txt served at the root, with the sitemap line yes
10. no noindex page in the sitemap verified
hosting
11. the preview host is not publicly resolvable verified from outside
12. the certificate covers every host you serve apex and www
13. a 404 returns 404, not a redirect home verified
what this caught
- the sitemap included a noindex page until the filter was added
- the preview host served a sitemap until robots was tightened
Verify from the output, not the source
Read the files in the built directory. A component can add a second canonical without the page source changing at all.
Acceptance: the build is ready when
- every step has a result, from the built output
- the checks are run in the order above, after a build
- failures are fixed and the affected step is re-run
- the commit sha and the date are recorded with the results
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| Two canonicals on one page | A layout and a page both emit one | Emit once, in the layout |
| The sitemap lists a noindex route | The filter does not cover it | Add the URL to the filter |
| Every URL redirects | Trailing slash disagreement | Fix the setting or the host rule |
| The 404 page returns 200 | A catch-all route | Return a real 404 status |
| A page is missing from the sitemap | It is generated at request time | Add it to the list explicitly |
Limits
These checks cover a static build. A route that renders at request time needs its own check, because the build never saw it.
A checklist cannot tell you whether a page should exist. That is an intent question, and no build step answers it.