{"registry":"gm-finding-registry","version":1,"protocolSetVersion":"gm-ai-consumer-compat/1.8.0","description":"Every finding code the Generative Metrics engine can emit: the severity or severities it can carry, its finding class, the protocol whose builder emits it, and a one-line description taken from that protocol own text. Verdicts are execution states (PASS, FAIL, INCOMPLETE); no entry here is a score or an outcome promise.","generatedFrom":"lib/evidence/findingRegistry.ts","count":44,"findings":[{"code":"ACCESS_BLOCKED_CONTENT","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"extraction.main-content","description":"The scanner received an automated access gate, bot challenge, or not-found interstitial instead of the requested page content, and abstained rather than judging gated content."},{"code":"ACQUISITION_NOT_ACQUIRED","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"extraction.main-content","description":"The audited representation was not acquired, so the audit abstained from content evaluation instead of judging a response that was not the page."},{"code":"ACTOR_ACCESS_DENIED","severities":["INFO","WARNING"],"findingClass":"PRODUCTION","protocolId":"access.actor-probe","description":"Our probe carrying a documented AI actor product token received an access-denial response; recorded from our measurement vantage, it never establishes that the vendor crawler is denied."},{"code":"ACTOR_ACCESS_NOT_MEASURED","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"access.actor-probe","description":"A documented AI actor the active profile requires produced no access measurement, so the required actor outcome is incomplete rather than assumed."},{"code":"ACTOR_ACCESS_SERVER_ERROR","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"access.actor-probe","description":"A required AI actor received a server-error response during the audit; this may be transient and is reported for reliability review."},{"code":"ACTOR_ACCESS_STATUS_DIVERGENCE","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"access.actor-probe","description":"The audit direct acquisition succeeded while a request carrying a required actor product token was answered with a 4xx status, which may indicate actor-specific bot management or routing."},{"code":"ACTOR_ACCESS_THROTTLED","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"access.actor-probe","description":"A required AI actor was rate-limited during the audit; this may be transient or intentional and is reported for policy review."},{"code":"ACTOR_CONTENT_DIVERGENCE","severities":["INFO","WARNING"],"findingClass":"PRODUCTION","protocolId":"content.actor-extraction","description":"A probe request carrying an actor product token received materially different extractable main-content words than the scanner own fetch of the same URL, reported for review only."},{"code":"AI_USAGE_HEADER_POLICY_OBSERVED","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"policy.ai-usage-headers","description":"The observed response headers declare one or more AI-usage policy signals; observed policy signals only, with no provider compliance or behavior inferred."},{"code":"AUDIT_FRONT_DOOR_BLOCKED","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"access.actor-probe","description":"The audit stopped at the site front door: the scanner did not obtain the audited page from its measurement vantage, so per-actor probes derive no findings — a vantage statement, not a finding about the site."},{"code":"CLIENT_DIFFERENTIATED_RESPONSE","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"extraction.main-content","description":"A real browser received a document with substantial content while the non-browser client received none; the audit abstained from the raw-versus-rendered comparison rather than treating the access decision as a content defect."},{"code":"CONTENT_CANONICAL_MISMATCH","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"metadata.signals","description":"The page declares a canonical URL that resolves to a different address than the audited URL; a measured fact to review, since cross-page canonicals can be intentional."},{"code":"CONTENT_CANONICAL_MISSING","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"metadata.signals","description":"The rendered page does not declare a canonical link, which is how automated systems identify the authoritative address of a page."},{"code":"CONTENT_HEADING_ORDER_VIOLATIONS","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"content.structure","description":"Heading levels skip a step in the page outline (for example H2 directly followed by H4); a measured structural fact, not a judgment."},{"code":"CONTENT_NEGOTIATION_ADVERTISED_MARKDOWN_UNSERVED","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"content.negotiation","description":"The origin declares a markdown alternate but did not serve one to a request that preferred text/markdown; a convention observation, not a defect."},{"code":"CONTENT_NEGOTIATION_MARKDOWN_NOT_SERVED","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"content.negotiation","description":"The origin did not serve a markdown representation; serving one is an agent-friendly convention rather than a requirement."},{"code":"CRAWLER_IDENTITY_NOT_VERIFIABLE","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"identity.crawler-verification","description":"Crawler identity was not verified by this scan: a synthetic request from our own declared scan address can never confirm a vendor crawler, and only origin-side logs can."},{"code":"DATE_EVIDENCE_CONTRADICTION","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"freshness.dates","description":"At least one supported modified date is earlier than the supported published-date evidence."},{"code":"DATE_EVIDENCE_OUT_OF_RANGE","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"freshness.dates","description":"Supported date fields fell outside the protocol-accepted range and were excluded from the freshness evaluation."},{"code":"DATE_EVIDENCE_STALE","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"freshness.dates","description":"Every supported date observed for this resource is older than the disclosed STALE convention; an informational freshness observation."},{"code":"HTTP_ACCESS_DENIED","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"acquisition.http","description":"The direct HTTP actor received an access-denial response, so the audit could not measure the page content from its vantage; a measurement limitation, not a content defect."},{"code":"HTTP_CONTENT_TYPE_UNDECLARED","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"acquisition.http","description":"A successful response was received without a declared Content-Type header, so consumers cannot determine the representation's type from the response."},{"code":"HTTP_REDIRECT_NOT_RESOLVED","severities":["BLOCKER"],"findingClass":"PRODUCTION","protocolId":"acquisition.http","description":"The bounded redirect protocol ended on a redirect response instead of a final representation."},{"code":"HTTP_TARGET_CLIENT_ERROR","severities":["BLOCKER"],"findingClass":"PRODUCTION","protocolId":"acquisition.http","description":"The audited URL returned a client-error response instead of the intended resource."},{"code":"HTTP_TARGET_NOT_FOUND","severities":["BLOCKER"],"findingClass":"PRODUCTION","protocolId":"acquisition.http","description":"The audited URL returned 404 or 410 and did not return an available resource."},{"code":"LLMS_TXT_INVALID","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"acquisition.llms-txt","description":"A /llms.txt file exists but does not satisfy the deterministic validity contract for AI-agent consumption."},{"code":"LLMS_TXT_NOT_FOUND","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"acquisition.llms-txt","description":"The site does not publish a /llms.txt file; an informational optimization opportunity, not an access problem."},{"code":"LLMS_TXT_NOT_VALIDATED","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"acquisition.llms-txt","description":"A /llms.txt response was observed but exceeded the bounded capture size, so it could not be validated; no defect is claimed."},{"code":"MAIN_CONTENT_EVIDENCE_INSUFFICIENT","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"extraction.main-content","description":"The scanner could not extract content from the returned page (a disclosed convention); the page may be empty, render only via client-side JavaScript, or serve a body the extractor cannot read."},{"code":"MAIN_CONTENT_EXTRACTION_LIMITATION","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"extraction.main-content","description":"A limitation of the scanner own extraction was recorded (mismatched scopes between arms, additive rendered growth, low coverage, or raw extraction shortfalls) — transparency data, never a site defect and never a verdict input."},{"code":"MAIN_CONTENT_NOT_IDENTIFIED","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"extraction.main-content","description":"The deterministic extractor did not identify a main-content region in either representation; this may be valid for a very short utility page."},{"code":"RAW_JSONLD_UNPARSEABLE","severities":["BLOCKER"],"findingClass":"PRODUCTION","protocolId":"structured-data.visible-consistency","description":"JSON-LD is present in the raw response but none of the blocks parsed successfully."},{"code":"RAW_MAIN_CONTENT_DEFICIT","severities":["BLOCKER"],"findingClass":"PRODUCTION","protocolId":"extraction.main-content","description":"The raw HTML omits substantial rendered main content that the no-JavaScript capture also lacks, so the content genuinely requires JavaScript to reach."},{"code":"RAW_STRUCTURED_DATA_DEFICIT","severities":["BLOCKER"],"findingClass":"PRODUCTION","protocolId":"structured-data.visible-consistency","description":"No supported structured-data object was extracted from the raw response while the browser-rendered representation contained structured data on the fixed disclosed material-type list."},{"code":"RAW_STRUCTURED_DATA_NOT_MATERIAL","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"structured-data.visible-consistency","description":"Structured data appeared only after browser rendering, but none of it is on the fixed disclosed material-type list; no content-semantics defect is claimed."},{"code":"ROBOTS_DISALLOWS_INFORMATIONAL_ACTOR","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"policy.robots","description":"A robots.txt rule disallows a documented AI actor the active profile reports for information only; an intentional block is not necessarily a defect."},{"code":"ROBOTS_DISALLOWS_REQUIRED_DISCOVERY_ACTOR","severities":["BLOCKER"],"findingClass":"PRODUCTION","protocolId":"policy.robots","description":"A robots.txt rule disallows a documented discovery actor the active audit profile requires; the deterministic robots-corroborated blocker."},{"code":"SITEMAP_INVALID","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"acquisition.sitemap","description":"A /sitemap.xml response was observed but the body was not an accepted, complete sitemap document under the deterministic validity contract."},{"code":"SITEMAP_NOT_FOUND","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"acquisition.sitemap","description":"The site does not publish a /sitemap.xml file; an informational opportunity, not proof of a discovery problem."},{"code":"SITEMAP_NOT_VALIDATED","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"acquisition.sitemap","description":"A /sitemap.xml response was observed but exceeded the bounded capture size, so it could not be validated; no defect is claimed."},{"code":"SITEMAP_TARGET_URL_MISSING","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"acquisition.sitemap","description":"The observed, valid sitemap did not list the audited URL path; it may still be discovered through other paths."},{"code":"STRUCTURED_DATA_ORGANIZATION_IDENTITY_INCOMPLETE","severities":["INFO"],"findingClass":"PRODUCTION","protocolId":"structured-data.completeness","description":"An Organization node was observed in the raw response and the bounded identity check did not observe some identity fields; an informational completeness observation."},{"code":"STRUCTURED_DATA_VISIBLE_TEXT_MISMATCH","severities":["WARNING"],"findingClass":"PRODUCTION","protocolId":"structured-data.visible-consistency","description":"Some material structured-data values were not found verbatim in the browser-visible text; a review signal, not proof the markup is wrong."},{"code":"UNSUPPORTED_TARGET_REPRESENTATION","severities":["BLOCKER"],"findingClass":"PRODUCTION","protocolId":"acquisition.http","description":"The target returned a content type the audit HTML/PDF protocols cannot evaluate in the production beta."}]}