Browse documentation
Provenance and independence: roles, origins and owners
Seventeen URLs of one wire story are one origin. ground says which sources are actually independent, and exactly how it decided.
Two counts, two questions
Every search hit carries independent_sources: the number of distinct hosts carrying
the passage’s story, counted across near-duplicates dropped at ingest. It is a good filter
(min_independent_sources=3) and a cheap signal. It is not a measure of independence: ten
sites can run one wire dispatch, copy one press release, or belong to one media group, and
every one of them counts as a host.
ground computes a different number. Within each story it groups members into
origins, assigns each origin an owner, and reports independent_origins — origins
with distinct owners. That is the count to hold a claim to.
source_role
What kind of source a passage is, for the purpose of weighing it as evidence.
| Role | Rule |
|---|---|
official | The host is a government, regulator, court, standards body or university: authority is gov or edu, the TLD is gov, mil or edu, or the host is under .gov.uk, .gc.ca, .gov.au, .europa.eu or .ac.uk. |
primary | Documentation, an academic paper, code, a published document (content_type docs, academic, code, document), or a press release — an organisation speaking for itself. |
secondary | Reporting, analysis or reference material about the subject (news, article, reference, opinion, how-to, video, product). |
aggregator | A host that collects other hosts’ content (news aggregators). |
ugc | User-generated: forums, Q&A, social hosts, or content_type forum / qa. |
unknown | None of the above applied. |
The rules run in that order, so a .gov host is official whatever its content type. Each
label carries a role_confidence: high for a host rule, lower for a content-type rule.
origin_type
How a passage came to exist relative to the story it belongs to.
| Type | Meaning |
|---|---|
original | The earliest member of its origin — the thing others copied, or a lone source. |
wire | A news-wire dispatch (Reuters, AP, AFP, dpa, PA, …), by host or by dateline in the text. |
press_release | A press release, by distributor host or by distributor marker in the text. |
republish | A later copy of an origin that already exists in the set. Never an evidence item. |
Origins
Within a story, members are visited earliest-first. A member joins an existing origin when it carries the same wire service, the same press-release distributor, the same canonical URL, or the same normalised title as that origin’s representative; otherwise it opens a new origin. Two passages of the same page share a title and therefore an origin, which is right: they are one document.
{
"id": "o:3f2a9c1e4b7d",
"story_id": "…",
"kind": "wire",
"owner": "Thomson Reuters",
"hosts": ["reuters.com", "localpaper.com", "othernews.com"],
"registrable_domains": ["localpaper.com", "othernews.com", "reuters.com"],
"members": ["a:0", "b:0", "c:0"],
"representative": "a:0",
"earliest_published_at": 1757790000,
"confidence": 0.85
}
confidence says how strong the grouping signal was: a wire dateline is stronger than a
title match across two unrelated domains.
Owners
An origin’s owner is the wire service for a wire dispatch; otherwise the media group that
owns the representative’s registrable domain, from a curated table of the groups whose
outlets most often appear together in one story; otherwise the registrable domain itself.
news.bbc.co.uk and bbc.com are one owner; thehill.com and newsnationnow.com are
one owner; example.com is its own.
The table is a starter list and is stated as such in /describe. A domain it does not know
is treated as independent of every other domain, so the count errs towards over-stating
independence for small outlets and never towards hiding a known group.
independence_score
Per evidence item, within the packed set:
| Score | Meaning |
|---|---|
1.0 | The only origin with this owner in the set. |
0.5 | Another origin in the set shares the owner. |
0.0 | A republish — which never becomes an evidence item, so you will not see it. |
The set-level number is coverage.independent_origins. hosts and copies on the receipt
show how much syndication was collapsed to reach it.
What this does and does not detect
It detects: wire copy by host and dateline; press releases by distributor host and marker; republishes by matching title within a story; subdomains of one registrable domain; the media groups in the ownership table.
It does not detect: a rewrite of a wire story under a new headline (that becomes a second origin); ownership outside the table; two outlets citing the same unnamed source. The labels are deterministic and heuristic, each carries a confidence, and the rules on this page are the whole method.
Claim relations
Experimental. Pass claim= and each evidence item gets a claim_relation —
supports, contradicts, qualifies or unresolved — with a relation_confidence and a
relation_basis of passage (judged on the full text) or snippet. The rule is lexical:
the best-overlapping sentence decides; a flipped negation or a disagreeing number makes it
contradicts; a hedge (however, although, partly) makes it qualifies; too little
overlap is unresolved. contradictions on the response lists the ids that contradict.
No model is involved, and the response says experimental: ["claim_relations"].
Next
- Grounding — where these labels appear.
- Coverage receipts — the set-level counts.
corroborate— the host-level view of one story.