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
    machine-discovery/feed-entry-identity-and-canonical-integrity

    Feed entries have stable identities that resolve to their canonical pages

    What it checks

    Validates that RSS/Atom entries carry stable, unique identifiers and that the URL each entry points at is the same URL the target page declares canonical — so an agent that cites a feed item cites a resolvable, non-deduplicated address.

    Why it matters

    RFC 4287 makes atom:id mandatory, exactly one per entry, ‘permanent, universally unique’ and unchanging ‘across different instantiations of the entry’; atom:updated is likewise mandatory and must mark the last significant modification. Ingestion pipelines dedupe and diff on these values. Falsifiable claim, in two parts. When ids are unstable — regenerated per build, or derived from a URL that includes tracking parameters — every poll re-emits the whole feed as new, and consumers either re-ingest duplicates or rate-limit the feed away.

    And when an entry’s <link> or atom:link href differs from the target page’s rel=canonical, an agent quoting the feed cites a URL that redirects or is consolidated away, which breaks attribution. Both are directly measurable without knowing anything about the consumer.

    Evidence

    • RFC 4287 — The Atom Syndication Format — IETF (spec, URL verified 2026-08-20)
    • Sec 4.1.2: atom:entry MUST contain exactly one atom:id and exactly one atom:updated. The id is a permanent, universally unique IRI that ‘must not change across different instantiations of the entry’. The updated time is the ‘most recent modification time that the publisher considers significant’. atom:entry MUST also contain atom:summary in two cases: when atom:content carries a src attribute, and is thus empty, and when content is Base64-encoded. MUST NOT contain more than one atom:summary.
    • RSS 2.0 Specification — RSS Advisory Board (spec, verified 2026-10-17)
    • <guid> is a string that uniquely identifies the item. Aggregators may use it to decide whether an item is new. isPermaLink defaults to true, and then the reader may assume the guid is a permalink to the item. This is the rule behind the check that a permalink guid is an absolute URL.
    • Consolidate duplicate URLs — Google Search Central (vendor-doc, verified 2026-10-17)
    • rel="canonical" is a strong signal of which URL should become canonical, and a redirect is a strong signal that its target should. The page uses a gclid tracking URL as its example of a non-preferred duplicate. A feed link that redirects, or that differs from the page’s canonical, therefore advertises an address Google consolidates away.

    How it scores

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

    Example finding

    A headless CMS emits <guid>https://example.com/blog/post?preview_id=8812</guid> and <link>https://example.com/blog/post?utm_source=rss</link> while the page declares rel=canonical https://example.com/blog/post. Every consumer stores the utm-tagged URL; an answer engine citing the article links to a URL that 301s, and analytics-driven URL rotation changes the guid on republish so the same article is ingested three times as three distinct documents.

    Sources