SuiteCommerce health report — www.deep-synthetic.example
Generated 2026-09-15T00:00:00.000Z
Scores
81 / 100Overall health
- Host
- www.deep-synthetic.example
- Platform
- sca
- Release
- 2024.1.30 (certain, modern family)
- Theme
- none detected
- Extensions
- 2
- Audit depth
- standard
- Pages fetched
- 60
- Pages rendered
- 20
- Generated
- 2026-09-15T00:00:00.000Z
coverage 72%
coverage 74%
coverage 84%
coverage 86%
coverage 100%
coverage 86%
SEO58 / 100 · coverage 72%
| Severity | Confidence | Status | Finding | Affected | Source | Evidence |
|---|---|---|---|---|---|---|
| Error | Certain | Unknown | Platform: Pages served without prerendering60 page(s) were served without prerendering: no version header and no generator body class, so what a search engine receives is the empty shell. | 60 pages of 60100% | rule | |
| Warning | Certain | Unknown | Published landing pages missing from the sitemap82 of 82 published landing pages are not in the sitemap (for example /about-the-fixture, /guide-1, /guide-2), so they are found only if something links to them. | site-wide— | rule | |
| Warning | Certain | Unknown | A multi-language storefront declares no hreflang alternatesThis storefront publishes 3 languages and 58 indexable page(s) declare no hreflang alternates, so each translation competes with the others in search instead of being grouped with them. | 58 pages of 58100% | rule | |
| Warning | Certain | Unknown | Commerce categories missing from the sitemap52 of 52 commerce category pages are not in the sitemap (for example /department-1, /department-1/section-1, /department-1/section-1/aisle-1), so search engines find them only if something links to them. | 52 categories of 52100% | rule | |
| Warning | Certain | Unknown | The two render passes emit different placeholders20 rendered page(s) emit different placeholders in the two passes: 1 present only in the browser (data-view:Synthetic.Promo#0). On this release the browser rebuilds the content area, so the cost is a flash rather than a wrong page — until the site is upgraded. | 20 pages of 20100% | rule | |
| Warning | Certain | Unknown | Pages sharing one <title>5 indexable page(s) share a <title> with another page across 1 duplicated title(s), so they compete with each other in search results. | 5 pages of 589% | rule | |
| Warning | Certain | Unknown | Canonical URLs point at a different host5 page(s) declare a canonical URL on a different host (www.deep-synthetic.example{{path}}), which asks search engines to index that host instead of this one. | 5 pages of 589% | rule | |
| Warning | Likely | Unknown | Pages with less visible text than their type needs58 indexable page(s) carry less visible text than their page type needs, the thinnest at 18 words. | 58 pages of 58100% | rule | |
| Warning | Certain | Unknown | Product structured data with fields absent or malformed15 Product/Offer node(s) across 15 page(s) are incomplete: image absent. A rich result needs every one of them. | 15 pages of 15100% | rule | |
| Warning | Certain | Unknown | Pages that never finished booting in the browser2 page(s) never finished booting in the browser: 0 had mounted at least one extension module, and the renderer collected 0 uncaught error(s) and 2 console error(s) on them. Every client-side measurement for those pages is reported as unavailable rather than as a bad score. | 2 pages of 307% | rule | |
| Warning | Certain | Unknown | Pages sharing one meta description5 indexable page(s) share a meta description with another page across 1 duplicated description(s), so their search snippets are identical. | 5 pages of 589% | rule | |
| Info | Certain | Unknown | Facet pages beyond the SEO limits still return 2001 facet combination(s) beyond the configured SEO limits still return 200 when requested. The limits suppress the links in the generated HTML and nothing more: they do not make these pages unavailable or tell a search engine to ignore them. | site-wide— | rule | |
| Info | Heuristic | Unknown | The <h1> and the <title> are the same string1 page(s) use one string for both the <h1> and the <title>, so the title adds nothing a shopper cannot already see on the page. | 1 page of 58 (home)2% | rule | |
| Info | Certain | Unknown | Product and listing pages publish no BreadcrumbList38 category and facet and search page(s) publish no BreadcrumbList, so search results for them show the raw URL path instead of a readable trail. | 38 pages of 38100% | rule |
Exposure80 / 100 · coverage 74%
| Severity | Confidence | Status | Finding | Affected | Source | Evidence |
|---|---|---|---|---|---|---|
| Error | Certain | Unknown | Plain HTTP does not redirect permanently to HTTPS1 plain-HTTP address(es) for this storefront answer without redirecting to HTTPS, so the site — and a shopper session on it — is reachable over an unencrypted connection. | site-wide— | rule | |
| Warning | Certain | Unknown | The storefront can be framed by another siteThe storefront sends neither X-Frame-Options nor a CSP frame-ancestors directive, so any site can load it in a frame and overlay it. | site-wide— | rule | |
| Info | Certain | Unknown | No Content-Security-Policy is sentThe storefront sends no Content-Security-Policy. A useful one is hard here: the SSP application emits inline scripts and the templates bundle is evaluated at runtime, so a policy without unsafe-inline would break the site. This is recorded as context rather than as a defect. | site-wide— | rule | |
| Info | Certain | Unknown | Platform: The NetSuite account id is reachable from the storefrontThe account id is reachable from the storefront: the CMS domain API names the NetSuite system domain, which carries it. This is NetSuite behaviour and there is no setting that suppresses it. | site-wide— | rule | |
| Info | Likely | Unknown | The public items API returns internal item fieldsThe public items API returns 2 operational field(s) for every item: isinactive, isonline. No commercial or cost field is exposed; confirm each of these is one you mean to publish. | 2 configuration keys— | rule | |
| Info | Certain | Unknown | No Referrer-Policy is declaredThe storefront declares no Referrer-Policy, so the browser default decides what is sent with every cross-origin request. Storefront URLs carry search terms, facet paths and session tokens. | site-wide— | rule | |
| Info | Certain | Unknown | Platform: No Strict-Transport-Security header is sentThe storefront sends no Strict-Transport-Security header, so a shopper who types the domain makes one interceptable plain-HTTP request before being redirected. NetSuite does not emit this header and no Web Site setting adds it. | site-wide— | rule |
Content90 / 100 · coverage 84%
| Severity | Confidence | Status | Finding | Affected | Source | Evidence |
|---|---|---|---|---|---|---|
| Warning | Certain | Unknown | Sampled items with no web-store image1 of the 13 sampled item(s) have no web-store image, so their product pages and every listing show the theme placeholder. | 1 item of 138% | rule | |
| Warning | Certain | Unknown | Landing pages with no meta description2 of the 83 CMS landing page(s) have no meta description, so their search snippets are taken from the page layout. | site-wide— | rule | |
| Warning | Certain | Unknown | Sampled items with an empty Meta Tag HTML field1 of the 13 sampled item(s) have an empty Meta Tag HTML field, so their product pages carry no meta description. | 1 item of 138% | rule | |
| Info | Likely | Unknown | Out-of-stock items the site still publishes1 out-of-stock item(s) are still published by the site, so search engines and shoppers keep arriving at a product that cannot be bought. | 1 item of 138% | rule |
Performance98 / 100 · coverage 86%
| Severity | Confidence | Status | Finding | Affected | Source | Evidence |
|---|---|---|---|---|---|---|
| Warning | Certain | Unknown | Platform: Bundles served without a Cache-Control header4 of 4 bundle(s) are served without a Cache-Control header, so browsers re-download them on every page view. | site-wide— | rule |
Accessibility94 / 100 · coverage 100%
| Severity | Confidence | Status | Finding | Affected | Source | Evidence |
|---|---|---|---|---|---|---|
| Warning | Certain | Unknown | Serious-impact accessibility violations14 serious accessibility violation(s) across 14 page(s), affecting 27 element(s): target-size (27 nodes). | 14 pages of 1878% | rule |
Platform95 / 100 · coverage 86%
| Severity | Confidence | Status | Finding | Affected | Source | Evidence |
|---|---|---|---|---|---|---|
| Warning | Certain | Unknown | The SSP application is a year or more behindThe storefront runs SuiteCommerce 2024.1.30, at least 4 release cycles behind 2026.1 — roughly 2.0 years of core fixes and features that are not on this site. | site-wide— | rule | |
| Info | Certain | Unknown | The extensions this storefront shipsThe storefront ships 2 extensions from 1 vendor(s). | 2 modules— | rule |
Platform
- Release
- 2024.1.30
- Release label
- SCA_2024.1.30
- Release family
- modern
- Release confidence
- certain
- NetSuite version
- not found
- SSP application
- not found
- SSP application fork
- none — the stock NetSuite application
- Legacy profile
- no
- Extensions
- 2
| Extension | Version | Mounted |
|---|---|---|
| Synthetic.Menus | 2.1.0 | yes |
| Synthetic.Wishes | 1.0.0 | yes |
A wrapper that is present but not observed mounting is installed and inert on the pages this audit read.
Catalog and content
| Measure | Items |
|---|---|
| URL component carries a duplicate suffix | 0 |
| Page Title duplicated across items | 0 |
| URL component duplicated across items | 0 |
| inactive or not published to the web store | 0 |
| matrix parent without meta | 0 |
| no Meta Tag HTML | 1 |
| no Page Title | 0 |
| no image | 1 |
| out of stock and still indexable | 1 |
| URL component is the SKU | 0 |
| thin or absent description | 0 |
| Measure | Count |
|---|---|
| Categories in the tree | 52 |
| Enriched through the API | 1 |
| Enriched without a meta description | 0 |
| Enriched and not displayed in the site | 0 |
| Measure | Count |
|---|---|
| Pages | 83 |
| Drafts | 1 |
| Without a meta description | 2 |
Pages
| Page | Type | Status | First byte (our fetch) | Prerender | Title | Canonical | H1 | Words |
|---|---|---|---|---|---|---|---|---|
/ | home | 200 | 40 ms | — | Deep Synthetic Store | / | 1 | 48 |
/Department-1 | other | 404 | 40 ms | — | Page not found | Deep Synthetic Store | absent | 1 | 12 |
/department-1 | category | 200 | 40 ms | — | Department 1 | Deep Synthetic Store | /department-1 | 1 | 22 |
/department-1/custitem_colour/Grey | facet | 200 | 40 ms | — | {{title}} | Deep Synthetic Store | / | 1 | 21 |
/department-1/custitem_colour/Grey/custitem_material/Paper/custitem_size/Small | facet | 200 | 40 ms | — | {{title}} | Deep Synthetic Store | / | 1 | 21 |
/department-1/custitem_material/Paper | facet | 200 | 40 ms | — | {{title}} | Deep Synthetic Store | / | 1 | 21 |
/department-1/custitem_size/Small | facet | 200 | 40 ms | — | {{title}} | Deep Synthetic Store | / | 1 | 21 |
/department-1/section-1 | category | 200 | 40 ms | — | Section 1.1 | Deep Synthetic Store | /department-1/section-1 | 1 | 22 |
/department-1/section-1/aisle-1 | category | 200 | 40 ms | — | Aisle 1.1.1 | Deep Synthetic Store | /department-1/section-1/aisle-1 | 1 | 22 |
/department-1/section-1/aisle-2 | category | 200 | 40 ms | — | Aisle 1.1.2 | Deep Synthetic Store | /department-1/section-1/aisle-2 | 1 | 22 |
/department-1/section-1/aisle-3 | category | 200 | 40 ms | — | Aisle 1.1.3 | Deep Synthetic Store | /department-1/section-1/aisle-3 | 1 | 22 |
/department-1/section-2 | category | 200 | 40 ms | — | Section 1.2 | Deep Synthetic Store | /department-1/section-2 | 1 | 22 |
/department-1/section-2/aisle-1 | category | 200 | 40 ms | — | Aisle 1.2.1 | Deep Synthetic Store | /department-1/section-2/aisle-1 | 1 | 22 |
/department-1/section-2/aisle-2 | category | 200 | 40 ms | — | Aisle 1.2.2 | Deep Synthetic Store | /department-1/section-2/aisle-2 | 1 | 22 |
/department-1/section-2/aisle-3 | category | 200 | 40 ms | — | Aisle 1.2.3 | Deep Synthetic Store | /department-1/section-2/aisle-3 | 1 | 22 |
/department-1/section-3 | category | 200 | 40 ms | — | Section 1.3 | Deep Synthetic Store | /department-1/section-3 | 1 | 22 |
/department-1/section-3/aisle-1 | category | 200 | 40 ms | — | Aisle 1.3.1 | Deep Synthetic Store | /department-1/section-3/aisle-1 | 1 | 22 |
/department-1/section-3/aisle-2 | category | 200 | 40 ms | — | Aisle 1.3.2 | Deep Synthetic Store | /department-1/section-3/aisle-2 | 1 | 22 |
/department-1/section-3/aisle-3 | category | 200 | 40 ms | — | Aisle 1.3.3 | Deep Synthetic Store | /department-1/section-3/aisle-3 | 1 | 22 |
/department-2 | category | 200 | 40 ms | — | Department 2 | Deep Synthetic Store | /department-2 | 1 | 22 |
/department-2/section-1 | category | 200 | 40 ms | — | Section 2.1 | Deep Synthetic Store | /department-2/section-1 | 1 | 22 |
/department-2/section-1/aisle-1 | category | 200 | 40 ms | — | Aisle 2.1.1 | Deep Synthetic Store | /department-2/section-1/aisle-1 | 1 | 22 |
/department-2/section-1/aisle-2 | category | 200 | 40 ms | — | Aisle 2.1.2 | Deep Synthetic Store | /department-2/section-1/aisle-2 | 1 | 22 |
/department-2/section-1/aisle-3 | category | 200 | 40 ms | — | Aisle 2.1.3 | Deep Synthetic Store | /department-2/section-1/aisle-3 | 1 | 22 |
/department-2/section-2 | category | 200 | 40 ms | — | Section 2.2 | Deep Synthetic Store | /department-2/section-2 | 1 | 22 |
/department-2/section-2/aisle-1 | category | 200 | 40 ms | — | Aisle 2.2.1 | Deep Synthetic Store | /department-2/section-2/aisle-1 | 1 | 22 |
/department-2/section-2/aisle-2 | category | 200 | 40 ms | — | Aisle 2.2.2 | Deep Synthetic Store | /department-2/section-2/aisle-2 | 1 | 22 |
/department-2/section-2/aisle-3 | category | 200 | 40 ms | — | Aisle 2.2.3 | Deep Synthetic Store | /department-2/section-2/aisle-3 | 1 | 22 |
/department-2/section-3 | category | 200 | 40 ms | — | Section 2.3 | Deep Synthetic Store | /department-2/section-3 | 1 | 22 |
/department-2/section-3/aisle-1 | category | 200 | 40 ms | — | Aisle 2.3.1 | Deep Synthetic Store | /department-2/section-3/aisle-1 | 1 | 22 |
/department-2/section-3/aisle-2 | category | 200 | 40 ms | — | Aisle 2.3.2 | Deep Synthetic Store | /department-2/section-3/aisle-2 | 1 | 22 |
/department-3 | category | 200 | 40 ms | — | Department 3 | Deep Synthetic Store | /department-3 | 1 | 22 |
/department-3/section-1 | category | 200 | 40 ms | — | Section 3.1 | Deep Synthetic Store | /department-3/section-1 | 1 | 22 |
/department-3/section-2 | category | 200 | 40 ms | — | Section 3.2 | Deep Synthetic Store | /department-3/section-2 | 1 | 22 |
/department-3/section-3 | category | 200 | 40 ms | — | Section 3.3 | Deep Synthetic Store | /department-3/section-3 | 1 | 22 |
/department-4 | category | 200 | 40 ms | — | Department 4 | Deep Synthetic Store | /department-4 | 1 | 22 |
/department-4/section-1 | category | 200 | 40 ms | — | Section 4.1 | Deep Synthetic Store | /department-4/section-1 | 1 | 22 |
/department-4/section-2 | category | 200 | 40 ms | — | Section 4.2 | Deep Synthetic Store | /department-4/section-2 | 1 | 22 |
/department-4/section-3 | category | 200 | 40 ms | — | Section 4.3 | Deep Synthetic Store | /department-4/section-3 | 1 | 22 |
/guide-41 | landing | 200 | 40 ms | — | Guide 41 | Deep Synthetic Store | /guide-41 | 1 | 22 |
/guide-65 | landing | 200 | 40 ms | — | Guide 65 | Deep Synthetic Store | /guide-65 | 1 | 22 |
/guide-66 | landing | 200 | 40 ms | — | Guide 66 | Deep Synthetic Store | /guide-66 | 1 | 22 |
/guide-69 | landing | 200 | 40 ms | — | Guide 69 | Deep Synthetic Store | /guide-69 | 1 | 22 |
/product-1 | pdp | 200 | 40 ms | — | Product 1 | Deep Synthetic Store | /product-1 | 1 | 18 |
/product-10 | pdp | 200 | 40 ms | — | Product 10 | Deep Synthetic Store | /product-10 | 1 | 18 |
/product-100 | pdp | 200 | 40 ms | — | Product 100 | Deep Synthetic Store | /product-100 | 1 | 18 |
/product-101 | pdp | 200 | 40 ms | — | Product 101 | Deep Synthetic Store | /product-101 | 1 | 18 |
/product-102 | pdp | 200 | 40 ms | — | Product 102 | Deep Synthetic Store | /product-102 | 1 | 18 |
/product-103 | pdp | 200 | 40 ms | — | Product 103 | Deep Synthetic Store | /product-103 | 1 | 18 |
/product-104 | pdp | 200 | 40 ms | — | Product 104 | Deep Synthetic Store | /product-104 | 1 | 18 |
/product-105 | pdp | 200 | 40 ms | — | Product 105 | Deep Synthetic Store | /product-105 | 1 | 18 |
/product-106 | pdp | 200 | 40 ms | — | Product 106 | Deep Synthetic Store | /product-106 | 1 | 18 |
/product-107 | pdp | 200 | 40 ms | — | Product 107 | Deep Synthetic Store | /product-107 | 1 | 18 |
/product-108 | pdp | 200 | 40 ms | — | Product 108 | Deep Synthetic Store | /product-108 | 1 | 18 |
/product-109 | pdp | 200 | 40 ms | — | Product 109 | Deep Synthetic Store | /product-109 | 1 | 18 |
/product-11 | pdp | 200 | 40 ms | — | Product 11 | Deep Synthetic Store | /product-11 | 1 | 18 |
/product-110 | pdp | 200 | 40 ms | — | Product 110 | Deep Synthetic Store | /product-110 | 1 | 18 |
/product-111 | pdp | 200 | 40 ms | — | Product 111 | Deep Synthetic Store | /product-111 | 1 | 18 |
/search?keywords=Grey | search | 200 | 40 ms | — | {{title}} | Deep Synthetic Store | / | 1 | 21 |
/this-page-does-not-exist-8c3dcdd1 | notfound | 404 | 40 ms | — | Page not found | Deep Synthetic Store | absent | 1 | 12 |
What we could not check
39 checks did not run, and 12 stages of the crawl did not run
Stages that did not run
discovercategory details: 16 of 52 categories enriched at depth standarddiscoveritems api: no items call was observed; the url was constructed from the environmentrender:https://www.deep-synthetic.example/rendered, but not compared against the prerendered HTML — parity is measured on the desktop pass onlyrender:https://www.deep-synthetic.example/department-1rendered, but not compared against the prerendered HTML — parity is measured on the desktop pass onlyrender:https://www.deep-synthetic.example/department-2rendered, but not compared against the prerendered HTML — parity is measured on the desktop pass onlyrender:https://www.deep-synthetic.example/department-3rendered, but not compared against the prerendered HTML — parity is measured on the desktop pass onlyrender:https://www.deep-synthetic.example/department-4rendered, but not compared against the prerendered HTML — parity is measured on the desktop pass onlyrender:https://www.deep-synthetic.example/product-1rendered, but not compared against the prerendered HTML — parity is measured on the desktop pass onlyrender:https://www.deep-synthetic.example/product-10rendered, but not compared against the prerendered HTML — parity is measured on the desktop pass onlyrender:https://www.deep-synthetic.example/product-100rendered, but not compared against the prerendered HTML — parity is measured on the desktop pass onlyrender:https://www.deep-synthetic.example/product-101rendered, but not compared against the prerendered HTML — parity is measured on the desktop pass onlyrender:https://www.deep-synthetic.example/search?keywords=Greyrendered, but not compared against the prerendered HTML — parity is measured on the desktop pass only
RELEASE_METADATA carries no ns_version; the account version cannot be compared against the cached environment
- The cached environment names the NetSuite version the account runs
platform/ns-version-skew
the environment script carries no themeAssetsPath, so the theme vendor, name and version are unknown and template findings stay unattributed
- The active theme is identified
platform/theme-inventory
the storefront sent no sspappcontext header, so the SSP application could not be read from the response
- The sspappcontext header is recorded
platform/ssp-context-header
the storefront sent no sspappcontext header, so the SSP application folder could not be derived and nothing was requested
- The SSP backend library is not readable by strangers
platform/ssp-library-readable
the extensions bundle answered without a Last-Modified header, so the build stamp has nothing to be compared against
- The ?t= cache buster is no older than the extension bundle it busts
platform/build-stamp-stale
0 extension service endpoint(s) were harvested from the bundle and none was requested: this crawl makes no call to a merchant service, so no response body exists to check for a stack trace or SQL text
- No extension service answers an error with internal detail
exposure/service-verbose-error
0 extension service endpoint(s) are referenced by this storefront and none was called: deciding whether an endpoint accepts an anonymous POST requires sending one, which is a write against the merchant’s account rather than an observation of it, and the ServiceController permissions that would answer it from outside are server-side
- Extension services that accept an anonymous write are inventoried
exposure/service-cross-origin
the rendered captures record request counts and hosts but not request bodies or the consent-banner state, so whether telemetry carried shopper PII before consent could not be decided — this needs a capture that retains the ElasticLogger POST body and the banner’s accepted state
- No shopper PII reaches telemetry before consent is given
exposure/sensors-pii-before-consent
the tag-manager data layer is merged into the browser by the user environment service rather than written into the cached environment script, and the rendered captures do not retain that merged object — so what the data layer holds for a guest could not be read
- No shopper PII in the tag-manager data layer for a guest
exposure/gtm-datalayer-pii
no sspappcontext header, so no SSP library path could be derived
- The SSP bundle carries only this domain’s configuration
exposure/ssp-config-other-domain
the home document set no cookies: it was served from the prerender cache, which correctly carries no Set-Cookie, so the flags on the session cookies a real shopper receives were not observed
- Cookies the storefront sets are Secure and HttpOnly
security/cookie-flags
deciding whether deep-synthetic.example and www.deep-synthetic.example disagree needs both probed over https, and this crawl probed 1 of them — the hygiene probes are the apex over https and the site host over http, so the two are never compared
- The apex and www agree on one canonical host
security/apex-www-inconsistent
no crawled page carries rel=prev or rel=next, so there is no pagination sequence to check — crawl a category deep enough to reach its second page
- rel=prev/next on a paged list is an absolute URL
seo/pagination-rel
no home or product page in this crawl emits an Open Graph card, so there is no card to check for completeness
- Pages that emit an Open Graph card fill og:title, og:description and og:image
social/og-basic-missing
no page in this crawl emits an Open Graph card, so there is no value to check for a templating placeholder that reached production
- Open Graph tags carry real values, not the string "undefined"
social/og-value-undefined
no page in this crawl emits an og:image, so there is no image URL to check the shape of
- og:image is an absolute http(s) URL
social/og-image-malformed
no page outside search and the 404 route emits an og:url, so there is no share address to check
- og:url carries no query parameters
social/og-url-has-params
no page in this crawl emits an og:image, so there is no image to reach for
- The og:image returns 200
social/og-image-unreachable
no page in this crawl emits a twitter:card, so there is no card to complete
- Twitter cards name twitter:site and twitter:creator
social/twitter-card-incomplete
no page in this crawl was confirmed as a product page by the generator’s own fieldset=details items call, so there is no product markup to look for
- Product pages carry Product structured data
structured/product-missing
the home page publishes no Organization node
- The Organization node carries the brand name, not the page title
structured/organization-name-is-title
no page in this crawl carried a prerender debug block; the timings, sub-requests and cache lines this check reads are only in that block — re-run the crawl so the debug request lands, or check whether the storefront strips the parameter
- The prerender pass completes in under five seconds
prerender/slow-generation
every page with a prerender debug block in this crawl returned a non-200 status, and on those the generator’s own failed lookups are how it discovered the page does not exist — re-run the crawl so a page that returns 200 carries a debug block
- Every first-party sub-request of the prerender pass returns 200
prerender/subrequest-failed - Third-party calls made during the prerender pass return 200
prerender/third-party-subrequest-failed - No sub-request of the prerender pass takes over a second
prerender/subrequest-slow - The prerendered document is stored in the cache
prerender/cache-not-stored - The prerender pass throws nothing and renders content
prerender/generator-js-error
neither a page debug block nor the footer comment carried the SQL timing sentinel in this crawl, so there is nothing to read a slow query from
- The prerender pass runs no query slower than 100 ms
prerender/slow-sql
the sitemap was found through the robots.txt Sitemap: line, so the crawler never requested /sitemap.xml and cannot say whether the conventional location serves one
- The sitemap is reachable at /sitemap.xml
discovery/sitemap-not-at-root
the pack records how many sitemap entries carry a lastmod (400 of 401) and never the dates themselves, so an age cannot be computed from it
- Sitemap lastmod dates are current
discovery/sitemap-lastmod-stale
the category API does not return the displayinsite flag — the crawler asks for it in every request and no response on any validated site has carried it, including all 1 categories enriched here — and without it a category the merchant hid deliberately cannot be told from one left unlinked by accident. This check needs that flag from another source before it can run on any site
- Categories meant to be visible are linked from the site
discovery/orphan-category
the items sample records only whether Meta Tag HTML is present, not whether it parses as <meta> tags — the crawler never keeps the blob, so malformed-ness cannot be distinguished from well-formed in this pack
- The Meta Tag HTML field parses as <meta> tags
catalog/metataghtml-malformed
the items sample carries no matrix parent-or-child marker and nothing joins a sitemap URL back to the item that produced it, so a child with its own URL cannot be distinguished from a standalone item in this pack
- Matrix children do not get their own indexable URL
catalog/matrix-child-exposed
the pack carries CMS page records but no CMS_HTML content bodies — the content endpoint is read to classify page types and its bodies are never stored, so inline scripts inside content blocks cannot be seen in this pack
- CMS HTML content carries no inline <script>
cms/html-content-inline-script
the pack carries CMS page records but no CMS_HTML content bodies, so images inside content blocks on pages the crawl did not fetch cannot be inspected — the alt-text census of the fetched pages is reported by the a11y checks
- Images inside CMS HTML content carry alt text
cms/html-content-img-no-alt
the pack carries no per-module member surface (ids and hashes only); member diffing needs the stored bundle bodies, which this check does not read yet
- Core modules export the members their release exports
core/member-mismatch
the behavioural harness did not run on this crawl; every behaviour check reports nothing — run a deep crawl to include it
- Every component an extension asks for exists on this site
component/availability
the headless pass recorded no Interaction to Next Paint for any rendered page — a lab run measures it only when an interaction happened
- Interaction to Next Paint on the rendered pages
perf/inp
render-blocking cost cannot be estimated: it came from the render-blocking-resources Lighthouse audit, ADR-007 removed Lighthouse and nothing has written that field since, and the pack does not carry the page’s script tags in document order either. This check cannot run on any crawl until one of those two changes
- Resources that delay the first paint
perf/render-blocking
A skipped check is not a pass. It is a gap, and it is counted in the coverage above.