Every diagnostic code the portal audit can emit. Severity, remediation, and
the fragment on this page all come from the CHECKS catalog —
the same source the engine, terminal report, and CLI --list-checks
read. Findings link here via docsUrl.
Documented skips
Checks that are structurally impossible for Doctorine's generated Astro + Starlight portal, and why they stay out of the catalog.
- Full i18n/hreflang suite (~9 rows) No multi-locale product model yet (MASTER W6 investigation). Locale key on PageSnapshot is reserved so duplicate checks stay locale-grouped without false positives later.
- FUTURE_DATED_PAGE Portal pages have no authored date frontmatter on the built HTML path; publish timestamps live on the release, not the page.
- DRAFT_PAGE_PUBLISHED No draft flag reaches the built dist — drafts never leave the editor.
- SITE_NOT_SET / SITE_INFERRED_AT_DEPLOY portal-build always carries baseUrl; local CLI requires --site when absolute-URL checks matter.
- Core Web Vitals / font-size / tap targets Need a real browser or are theme-level properties identical on every page (a regression is a renderer bug, not a tenant finding).
- JS/CSS redirect matrix (~11 Ahrefs rows) Vite emits content-hashed, existent, non-redirecting bundles. Collapsed into SUBRESOURCE_MISSING.
- "Only one dofollow incoming" / "no outgoing links" Starlight sidebar links every page — pure noise.
- "3XX redirect" / "302 redirect" / "HTTP→HTTPS" Inventory or correct behavior, not findings.
- Network + external tiers (HTTP 4xx/5xx, external broken links, …) Catalogued so skipped tiers are reported; implementations are W3b/W5 (--url / --external). Static portal-build gate never runs them.
content
-
Title tag missing or empty
- Code
DT_AUDIT_TITLE_MISSING- Category
- content
- Severity
- error
- Tier
- static
Title tag missing or empty
Fix: Set a page title in the guide frontmatter / portal branding.
-
Multiple title tags
- Code
DT_AUDIT_TITLE_MULTIPLE- Category
- content
- Severity
- error
- Tier
- static
Multiple title tags
Fix: Remove the extra <title> from the page layout or guide.
-
Title too long or too short
- Code
DT_AUDIT_TITLE_LENGTH- Category
- content
- Severity
- warning
- Tier
- static
Title too long or too short
Fix: Rewrite the title to fit the length range (10–60 characters).
-
Meta description missing or empty
- Code
DT_AUDIT_DESCRIPTION_MISSING- Category
- content
- Severity
- warning
- Tier
- static
Meta description missing or empty
Fix: Add a meta description in the guide frontmatter or branding.
-
Multiple meta description tags
- Code
DT_AUDIT_DESCRIPTION_MULTIPLE- Category
- content
- Severity
- error
- Tier
- static
Multiple meta description tags
Fix: Remove the extra description <meta> from the page layout.
-
Meta description too long or too short
- Code
DT_AUDIT_DESCRIPTION_LENGTH- Category
- content
- Severity
- warning
- Tier
- static
Meta description too long or too short
Fix: Rewrite the description to fit 110–160 characters.
-
H1 tag missing or empty
- Code
DT_AUDIT_H1_MISSING- Category
- content
- Severity
- warning
- Tier
- static
H1 tag missing or empty
Fix: Give the page a title — the portal renders it as the page <h1>.
-
Multiple H1 tags
- Code
DT_AUDIT_H1_MULTIPLE- Category
- content
- Severity
- warning
- Tier
- static
Multiple H1 tags
Fix: Demote extra body `# Heading` lines to `##` — the title is already the h1.
-
Low word count
- Code
DT_AUDIT_LOW_WORD_COUNT- Category
- content
- Severity
- info
- Tier
- static
Low word count
Fix: Expand the page, or fold it into a larger one.
-
Heading levels skip (e.g. h2 to h4)
- Code
DT_AUDIT_HEADING_SKIP- Category
- content
- Severity
- info
- Tier
- static
Heading levels skip (e.g. h2 to h4)
Fix: Adjust the heading to the next level down — skipped levels break TOC nesting.
-
Viewport not set
- Code
DT_AUDIT_VIEWPORT_MISSING- Category
- content
- Severity
- error
- Tier
- static
Viewport not set
Fix: Restore the viewport <meta> in the portal layout (renderer regression).
duplicates
-
Duplicate title
- Code
DT_AUDIT_DUPLICATE_TITLE- Category
- duplicates
- Severity
- warning
- Tier
- static
Duplicate title
Fix: Give each page a distinct title — search engines show it as the result headline.
-
Duplicate meta description
- Code
DT_AUDIT_DUPLICATE_DESCRIPTION- Category
- duplicates
- Severity
- warning
- Tier
- static
Duplicate meta description
Fix: Give each page a distinct description.
-
Duplicate pages without canonical
- Code
DT_AUDIT_DUPLICATE_CONTENT- Category
- duplicates
- Severity
- warning
- Tier
- static
Duplicate pages without canonical
Fix: Merge the pages, or set a canonical on all but one.
indexability
-
Page is noindex but declares a canonical
- Code
DT_AUDIT_CANONICAL_ON_NOINDEX- Category
- indexability
- Severity
- warning
- Tier
- static
Page is noindex but declares a canonical
Fix: Drop the canonical from noindex pages — Google treats the pairing as contradictory.
-
Canonical URL missing
- Code
DT_AUDIT_CANONICAL_MISSING- Category
- indexability
- Severity
- warning
- Tier
- static
Canonical URL missing
Fix: Ensure the portal emits a self-canonical for every indexable page.
-
Non-canonical page
- Code
DT_AUDIT_CANONICAL_NOT_SELF- Category
- indexability
- Severity
- info
- Tier
- static
Non-canonical page
Fix: Point the canonical at this page, or accept that it will not be indexed itself.
-
Canonical points to a broken or redirecting page
- Code
DT_AUDIT_CANONICAL_BAD_TARGET- Category
- indexability
- Severity
- error
- Tier
- static
Canonical points to a broken or redirecting page
Fix: Point the canonical at a page that exists and does not redirect.
-
Canonical protocol does not match the site
- Code
DT_AUDIT_CANONICAL_PROTOCOL_MISMATCH- Category
- indexability
- Severity
- error
- Tier
- static
Canonical protocol does not match the site
Fix: Use the same protocol in the canonical as in the site origin (https).
-
Page is not indexable
- Code
DT_AUDIT_ROBOTS_META_UNEXPECTED- Category
- indexability
- Severity
- info
- Tier
- static
Page is not indexable
Fix: Remove noindex from the page if it should be indexed.
-
Page HTML exceeds the 2 MB size budget
- Code
DT_AUDIT_HTML_TOO_LARGE- Category
- indexability
- Severity
- warning
- Tier
- static
Page HTML exceeds the 2 MB size budget
Fix: Split the page to reduce crawl, transfer, and rendering cost.
links
-
Page has links to a broken page
- Code
DT_AUDIT_LINK_TO_BROKEN- Category
- links
- Severity
- error
- Tier
- static
Page has links to a broken page
Fix: Fix the link target, or create the page it points at.
-
Page has links to a redirect
- Code
DT_AUDIT_LINK_TO_REDIRECT- Category
- links
- Severity
- warning
- Tier
- static
Page has links to a redirect
Fix: Link straight to the destination instead of through the redirect.
-
Orphan page (only reachable from navigation)
- Code
DT_AUDIT_ORPHAN_PAGE- Category
- links
- Severity
- warning
- Tier
- static
Orphan page (only reachable from navigation)
Fix: Link to this page from the body of a related page.
-
Internal link hardcodes the site's own origin
- Code
DT_AUDIT_INTERNAL_LINK_ABSOLUTE- Category
- links
- Severity
- warning
- Tier
- static
Internal link hardcodes the site's own origin
Fix: Use a root-relative path (`/guides/x`) so the link survives previews and base paths.
-
Double slash in URL
- Code
DT_AUDIT_DOUBLE_SLASH_URL- Category
- links
- Severity
- warning
- Tier
- static
Double slash in URL
Fix: Check base path composition — a trailing slash there produces `//`.
-
Link fragment matches no id on the target page
- Code
DT_AUDIT_ANCHOR_BROKEN- Category
- links
- Severity
- warning
- Tier
- static
Link fragment matches no id on the target page
Fix: Point the fragment at a heading that exists on the target page.
-
URL contains uppercase, underscores, or spaces
- Code
DT_AUDIT_URL_STYLE- Category
- links
- Severity
- info
- Tier
- static
URL contains uppercase, underscores, or spaces
Fix: Rename the slug to lowercase hyphenated form; add a redirect from the old URL if published.
redirects
-
Broken redirect
- Code
DT_AUDIT_REDIRECT_BROKEN- Category
- redirects
- Severity
- error
- Tier
- static
Broken redirect
Fix: Point the redirect at a page that exists.
-
Redirect loop
- Code
DT_AUDIT_REDIRECT_LOOP- Category
- redirects
- Severity
- error
- Tier
- static
Redirect loop
Fix: Break the cycle in the redirect map — it never resolves.
-
Redirect chain
- Code
DT_AUDIT_REDIRECT_CHAIN- Category
- redirects
- Severity
- warning
- Tier
- static
Redirect chain
Fix: Point every hop straight at the final destination.
-
Meta refresh redirect
- Code
DT_AUDIT_META_REFRESH- Category
- redirects
- Severity
- warning
- Tier
- static
Meta refresh redirect
Fix: Use a real HTTP redirect instead of a meta refresh.
-
Redirect source is also a real page
- Code
DT_AUDIT_REDIRECT_SOURCE_IS_PAGE- Category
- redirects
- Severity
- error
- Tier
- static
Redirect source is also a real page
Fix: Remove the redirect, or delete the page it shadows — the page wins.
social
-
Open Graph tags missing or incomplete
- Code
DT_AUDIT_OG_INCOMPLETE- Category
- social
- Severity
- warning
- Tier
- static
Open Graph tags missing or incomplete
Fix: Ensure the portal layout emits complete Open Graph tags for indexable pages.
-
Open Graph image missing
- Code
DT_AUDIT_OG_IMAGE_MISSING- Category
- social
- Severity
- warning
- Tier
- static
Open Graph image missing
Fix: Enable OG card generation, or set seo.image on the page.
-
Open Graph image is not in the build
- Code
DT_AUDIT_OG_IMAGE_BROKEN- Category
- social
- Severity
- warning
- Tier
- static
Open Graph image is not in the build
Fix: Point og:image at a file that exists in the build.
-
Open Graph image is too small for large cards
- Code
DT_AUDIT_OG_IMAGE_SMALL- Category
- social
- Severity
- warning
- Tier
- static
Open Graph image is too small for large cards
Fix: Use an image of at least 600×315 (1200×630 recommended).
-
Open Graph URL not matching canonical
- Code
DT_AUDIT_OG_URL_MISMATCH- Category
- social
- Severity
- warning
- Tier
- static
Open Graph URL not matching canonical
Fix: Align og:url with the page's canonical URL.
-
X (Twitter) card missing or incomplete
- Code
DT_AUDIT_TWITTER_CARD_INCOMPLETE- Category
- social
- Severity
- warning
- Tier
- static
X (Twitter) card missing or incomplete
Fix: Emit twitter:card (summary or summary_large_image) on indexable pages.
assets
-
Missing alt text
- Code
DT_AUDIT_IMAGE_ALT_MISSING- Category
- assets
- Severity
- warning
- Tier
- static
Missing alt text
Fix: Add descriptive alt text, or alt="" if the image is decorative.
-
Image broken
- Code
DT_AUDIT_IMAGE_BROKEN- Category
- assets
- Severity
- error
- Tier
- static
Image broken
Fix: Fix the image path, or add the file to the build.
-
Asset file size too large
- Code
DT_AUDIT_ASSET_TOO_LARGE- Category
- assets
- Severity
- warning
- Tier
- static
Asset file size too large
Fix: Compress the asset, or serve a modern format (WebP/AVIF).
-
Image has no width/height
- Code
DT_AUDIT_IMAGE_MISSING_DIMENSIONS- Category
- assets
- Severity
- warning
- Tier
- static
Image has no width/height
Fix: Set width and height so the browser can reserve space (avoids layout shift).
-
Referenced script, style, or asset is missing from the build
- Code
DT_AUDIT_SUBRESOURCE_MISSING- Category
- assets
- Severity
- error
- Tier
- static
Referenced script, style, or asset is missing from the build
Fix: Fix the reference, or restore the missing file.
-
HTTPS/HTTP mixed content
- Code
DT_AUDIT_MIXED_CONTENT- Category
- assets
- Severity
- error
- Tier
- static
HTTPS/HTTP mixed content
Fix: Load the subresource over HTTPS — browsers block mixed content.
sitemap
-
Indexable page not in sitemap
- Code
DT_AUDIT_INDEXABLE_PAGE_NOT_IN_SITEMAP- Category
- sitemap
- Severity
- warning
- Tier
- static
Indexable page not in sitemap
Fix: Ensure the page is included in the sitemap generator (indexable pages only).
-
Noindex page in sitemap
- Code
DT_AUDIT_NOINDEX_IN_SITEMAP- Category
- sitemap
- Severity
- error
- Tier
- static
Noindex page in sitemap
Fix: A noindex page should not be advertised in the sitemap.
-
Sitemap names a page that does not exist or redirects
- Code
DT_AUDIT_SITEMAP_BAD_URL- Category
- sitemap
- Severity
- error
- Tier
- static
Sitemap names a page that does not exist or redirects
Fix: Remove the URL from the sitemap, or build the page it names.
-
Sitemap has a syntax error or wrong format
- Code
DT_AUDIT_SITEMAP_INVALID- Category
- sitemap
- Severity
- error
- Tier
- static
Sitemap has a syntax error or wrong format
Fix: Sitemaps must be valid XML in the sitemaps.org urlset format.
-
Sitemap lastmod is invalid or in the future
- Code
DT_AUDIT_SITEMAP_LASTMOD_INVALID- Category
- sitemap
- Severity
- warning
- Tier
- static
Sitemap lastmod is invalid or in the future
Fix: Use a real W3C date that is not in the future (24h timezone slack applies).
-
Sitemap includes URLs out of its scope
- Code
DT_AUDIT_SITEMAP_OUT_OF_SCOPE- Category
- sitemap
- Severity
- warning
- Tier
- static
Sitemap includes URLs out of its scope
Fix: A sitemap may only list URLs on its own origin.
robots
-
robots.txt missing
- Code
DT_AUDIT_ROBOTS_MISSING- Category
- robots
- Severity
- warning
- Tier
- static
robots.txt missing
Fix: Ensure the portal emits robots.txt for public builds.
-
robots.txt has a syntax error
- Code
DT_AUDIT_ROBOTS_INVALID- Category
- robots
- Severity
- error
- Tier
- static
robots.txt has a syntax error
Fix: Every robots.txt line must be a `Field: value` directive or a comment.
-
robots.txt disallows a page that is in the sitemap
- Code
DT_AUDIT_ROBOTS_DISALLOWS_INDEXABLE- Category
- robots
- Severity
- error
- Tier
- static
robots.txt disallows a page that is in the sitemap
Fix: A page can't be both disallowed in robots.txt and advertised in the sitemap.
-
robots.txt does not reference the sitemap
- Code
DT_AUDIT_ROBOTS_SITEMAP_MISSING- Category
- robots
- Severity
- info
- Tier
- static
robots.txt does not reference the sitemap
Fix: Add a Sitemap: line pointing at the portal sitemap.
ai
-
llms.txt missing from the build
- Code
DT_AUDIT_LLMS_TXT_MISSING- Category
- ai
- Severity
- warning
- Tier
- static
llms.txt missing from the build
Fix: Rebuild with branding.llmsTxt enabled (free on every plan), or disable llms emission intentionally.
-
llms.txt lists a page the build does not serve
- Code
DT_AUDIT_LLMS_TXT_STALE_ENTRY- Category
- ai
- Severity
- warning
- Tier
- static
llms.txt lists a page the build does not serve
Fix: Rebuild so llms.txt matches the site — a stale entry sends agents nowhere.
-
Indexable page missing from llms.txt
- Code
DT_AUDIT_LLMS_TXT_PAGE_MISSING- Category
- ai
- Severity
- warning
- Tier
- static
Indexable page missing from llms.txt
Fix: Rebuild so llms.txt lists every indexable page.
-
agent-readability.json is missing or invalid
- Code
DT_AUDIT_AGENT_READABILITY_INVALID- Category
- ai
- Severity
- error
- Tier
- static
agent-readability.json is missing or invalid
Fix: Emit a valid agent-readability.json from the portal build.
-
agent-readability.json lists a route the build does not serve
- Code
DT_AUDIT_AGENT_READABILITY_BAD_ROUTE- Category
- ai
- Severity
- error
- Tier
- static
agent-readability.json lists a route the build does not serve
Fix: Every route listed in agent-readability.json must exist in the build.
-
Public page has no .md variant
- Code
DT_AUDIT_MD_VARIANT_MISSING- Category
- ai
- Severity
- warning
- Tier
- static
Public page has no .md variant
Fix: Emit a .md variant for every public page (markdown negotiation surface).
structured-data
-
Structured data is not valid JSON
- Code
DT_AUDIT_JSONLD_INVALID- Category
- structured-data
- Severity
- error
- Tier
- static
Structured data is not valid JSON
Fix: The JSON-LD block must be valid JSON.
-
Structured data is missing required properties
- Code
DT_AUDIT_JSONLD_INCOMPLETE- Category
- structured-data
- Severity
- warning
- Tier
- static
Structured data is missing required properties
Fix: Every JSON-LD node needs @context and @type (@graph-aware).
network
-
4XX page
- Code
DT_AUDIT_HTTP_4XX- Category
- network
- Severity
- error
- Tier
- network
4XX page
Fix: The page is linked or in the sitemap but the deployment 404s it.
-
5XX page
- Code
DT_AUDIT_HTTP_5XX- Category
- network
- Severity
- error
- Tier
- network
5XX page
Fix: The deployment is erroring on this page.
-
External link is broken
- Code
DT_AUDIT_EXTERNAL_LINK_BROKEN- Category
- network
- Severity
- error
- Tier
- external
External link is broken
Fix: Fix or remove the outbound link.