Opens in a new tabSkip to content
Agent LighthouseAgent Lighthouse

    Searches the text of every published page. The evidence sources themselves are not in this index — search all of them on the trusted sources page.

    GitHub ↗
    Browse checks and page contents
    operability-safety/c2pa-manifest-survives-delivery

    Content Credentials survive the image delivery pipeline

    What it checks

    Detects the single most common provenance failure: a publisher signs images at creation, then the CDN/image optimizer silently discards the Content Credentials, so every byte an agent or crawler actually downloads is unsigned. Compares provenance on origin assets against the transformed variants that are really served (srcset candidates, /_next/image, /cdn-cgi/image/, imgix/Cloudinary renditions).

    Why it matters

    Image transformation pipelines strip C2PA manifests by default. Cloudflare states it outright: ‘When this setting is disabled, any existing Content Credentials will always be discarded’ — preservation is an opt-in toggle. Therefore, for any site whose images pass through a transformation layer without explicit preservation enabled, the served variant carries no manifest even when the origin asset does. FALSIFIABLE: fetch the origin asset and the served variant; if the origin contains a C2PA manifest store and the variant does not, the pipeline is stripping provenance. The check fails if variants are found to retain manifests without any preservation setting, or if origin and variant provenance always agree.

    Evidence

    • MCP Specification 2026-07-28 — Authorization Server Discovery — Model Context Protocol (spec, URL verified 2026-08-20)
    • PRM document returned by the MCP server MUST include authorization_servers with at least one entry (stronger than RFC 9728, where it is OPTIONAL). Two discovery mechanisms, both of which clients MUST support: WWW-Authenticate resource_metadata, then well-known probing in order — path-inserted (example.com/…/mcp -> example.com/…/mcp) then root. AS metadata probing order for issuers with a path: /.well-known/oauth-authorization-server/{path}, /.well-known/openid-configuration/{path}, {path}/.well-known/openid-configuration; without a path: /.well-known/oauth-authorization-server then /.well-known/openid-configuration. Clients MUST reject a metadata doc whose issuer differs from the issuer used to build the URL.
    • Playwright: Auto-waiting / Actionability checks — Microsoft (vendor-doc, URL verified 2026-08-20)
    • Before click/check/fill/selectOption, Playwright enforces five checks: Visible (non-empty bounding box, not visibility:hidden), Stable (same bounding box over 2 animation frames), Receives Events (element is the hit target at the action point — overlays cause failure), Enabled (not [disabled]/aria-disabled), Editable (not readonly/aria-readonly). Fill requires visible+enabled+editable. This is the exact gate every Playwright-based agent (Playwright-MCP, browser-use, most CUA harnesses) passes through, so each check is a directly testable site-side failure cause.
    • Text fragments — Google / web.dev (vendor-doc, URL verified 2026-08-20)
    • Confirms a shipped answer-surface consumer: “Clicking a featured snippet takes the user directly to the featured snippet text on the source web page. This works thanks to automatically created Text Fragments URLs.” Support: Chrome 89+, Edge 89+, Firefox 131+, Safari 18.2+. Restates the boundary rule: “Each of prefix-, start, end, and -suffix can only match text within a single block-level element, but full start,end ranges can span multiple blocks.” Opt-out header: Document-Policy: force-load-at-top.

    How it scores

    Tier per evidence policy: scored — grade B meets the A/B bar required for scored audits.

    Example failure

    A newsroom signs photos in Photoshop, uploads them to a Next.js site behind Cloudflare. The origin /uploads/protest.jpg validates with a full manifest, but every rendered <img> points at /_next/image?url=%2Fuploads%2Fprotest.jpg&w=1920 which returns a re-encoded JPEG with no APP11 segment. Content Credentials verification on the live page shows nothing; 100% of the provenance investment is destroyed at the edge.

    Sources