Official Source Research
Overview
Collects evidence directly from primary institutional sources: a company's own docs/pricing/changelog/press releases, government and regulatory sites, standards bodies, court/legal filings. Every record from this skill is tier 1 by definition — this skill exists specifically to reach the root instead of settling for a relay.
Layer rule: produces evidence, not results. Synthesis and confidence status are the orchestrator's job.
When to use
Direct use: "what does their pricing page say", "check the actual filing", "what does the spec say". As a component: this is also the skill other source skills route to when their origin tracing surfaces a press release, filing, or official announcement as the root of something they found secondhand (news-research and blog-research both point here in their own workflows) — dispatch it to fetch that root directly rather than settling for the relay's account of it.
Don't use for: coverage or reaction to an official source (→ news-research, social-research), an interpretation of what a filing means (that's synthesis, not evidence collection — this skill records what the document says, not what it implies).
Workflow
- Go to the primary domain directly when it's known (the company's own site, the regulator's site, the standards body's site) rather than searching generally and hoping to land on it — this skill's whole value is bypassing relays.
- When dispatched to resolve another source's root (a press release cited via news-research, an official statement cited via blog-research): fetch the actual document, don't just confirm it exists. The calling skill's record gets
root_origin pointing here; this skill's own record becomes the authoritative version of that claim.
- If the document isn't publicly linked (e.g., referenced but not URL'd): search the official domain directly, or construct the likely canonical location (press-release archives, filing databases, changelog paths) before giving up. If truly unreachable, use
root_origin format press-release:<org>:<YYYY-MM-DD> per engine/origin-tracing.md and note the access limitation.
- If search returns nothing: run references/query-relaxation.md. Log full exhaustion as a gap — an official source genuinely not existing (no public statement on X) is itself sometimes the finding.
- Record all three dates, don't collapse them. Official documents routinely distinguish issue date from effective date from last-revised date, and the contract has a field for each:
published_at (when it was issued), modified_at (when it was last revised — pricing pages, living policy docs), effective_at (when the stated thing takes or took effect — regulations, scheduled changes). The freshness class picks which one drives staleness (engine/freshness-rules.yaml), so collapsing them into one date silently breaks that: a regulation published years ago but effective next month is not stale, and a pricing page published in 2020 but revised last week is not stale either.
- One organization is one
root_id. An org's docs, blog, press releases, and its executives' statements all get root_id: org:<canonical-name> when the claim is about that org. Two of its own channels agreeing is not corroboration — it's the same voice twice (engine/origin-tracing.md).
- Archive per references/citation-rules.md — official pages get revised in place more than most source types (pricing pages, policy pages, living documents), so the archive snapshot is often the only durable record of what it said at the time the claim was made.
- Assign purpose — usually
fact (stated terms, specs, figures) or implementation (official how-to/API docs). Purpose is never opinion here; an official source stating a position is still a fact about what the org states, not a personal opinion record.
- Note self-reference: a claim about the entity's own product/performance sourced from that entity's own official channel needs
provenance.self_referential: true — this feeds the self-interest cap in engine/ranking.md; it doesn't lower the tier, but it does mean confirmed status for that claim requires a second, non-affiliated root elsewhere.
- Write the evidence record per engine/evidence-contract.md,
verification_status: pending. Do not self-verify.
Output
One evidence record per claim, appended to the run's evidence.jsonl.
Common mistakes
| Mistake |
Fix |
| Confirming a press release "exists" via a news article instead of fetching it |
Go to the primary domain, get the actual document |
Forgetting self_referential: true on a company's own claim about itself |
Always set it — it's what makes the self-interest cap work downstream |
| Not archiving a pricing/policy page because "it won't change" |
These change constantly and without notice; archive at collection time |
| Collapsing issue / revised / effective into one date |
Record published_at, modified_at, and effective_at separately — the freshness class chooses which clock to run |
| Counting an org's docs and its CEO's statement as two sources |
Same root_id: org:<name>; one voice, one root |
1---2name: official-source-research3description: Use when the user asks to check official documentation, a company's own announcement, a government/regulatory filing, or a standards body's specification. Triggers on "check the official docs", "what does the filing say", "official announcement", "regulatory source", "official-source research". Produces tier-1 evidence records (URL + verbatim quote), never conclusions. Do NOT use for press coverage of an official source (use news-research, which should trace back here anyway) or community discussion about an official source (use reddit-research/social-research).4---56# Official Source Research78## Overview910Collects evidence directly from primary institutional sources: a company's own docs/pricing/changelog/press releases, government and regulatory sites, standards bodies, court/legal filings. Every record from this skill is tier 1 by definition — this skill exists specifically to reach the root instead of settling for a relay.1112**Layer rule:** produces evidence, not results. Synthesis and confidence status are the orchestrator's job.1314## When to use1516Direct use: "what does their pricing page say", "check the actual filing", "what does the spec say". As a component: this is also the skill other source skills route to when their origin tracing surfaces a press release, filing, or official announcement as the root of something they found secondhand (news-research and blog-research both point here in their own workflows) — dispatch it to fetch that root directly rather than settling for the relay's account of it.1718Don't use for: coverage or reaction to an official source (→ news-research, social-research), an interpretation of what a filing means (that's synthesis, not evidence collection — this skill records what the document says, not what it implies).1920## Workflow21221. **Go to the primary domain directly** when it's known (the company's own site, the regulator's site, the standards body's site) rather than searching generally and hoping to land on it — this skill's whole value is bypassing relays.232. **When dispatched to resolve another source's root** (a press release cited via news-research, an official statement cited via blog-research): fetch the actual document, don't just confirm it exists. The calling skill's record gets `root_origin` pointing here; this skill's own record becomes the authoritative version of that claim.243. **If the document isn't publicly linked** (e.g., referenced but not URL'd): search the official domain directly, or construct the likely canonical location (press-release archives, filing databases, changelog paths) before giving up. If truly unreachable, use `root_origin` format `press-release:<org>:<YYYY-MM-DD>` per engine/origin-tracing.md and note the access limitation.254. **If search returns nothing:** run references/query-relaxation.md. Log full exhaustion as a gap — an official source genuinely not existing (no public statement on X) is itself sometimes the finding.265. **Record all three dates, don't collapse them.** Official documents routinely distinguish issue date from effective date from last-revised date, and the contract has a field for each: `published_at` (when it was issued), `modified_at` (when it was last revised — pricing pages, living policy docs), `effective_at` (when the stated thing takes or took effect — regulations, scheduled changes). The freshness class picks which one drives staleness (engine/freshness-rules.yaml), so collapsing them into one date silently breaks that: a regulation published years ago but effective next month is not stale, and a pricing page published in 2020 but revised last week is not stale either.276. **One organization is one `root_id`.** An org's docs, blog, press releases, and its executives' statements all get `root_id: org:<canonical-name>` when the claim is about that org. Two of its own channels agreeing is not corroboration — it's the same voice twice (engine/origin-tracing.md).287. **Archive** per references/citation-rules.md — official pages get revised in place more than most source types (pricing pages, policy pages, living documents), so the archive snapshot is often the only durable record of what it said *at the time the claim was made*.298. **Assign purpose** — usually `fact` (stated terms, specs, figures) or `implementation` (official how-to/API docs). Purpose is never `opinion` here; an official source stating a position is still a fact about what the org states, not a personal opinion record.309. **Note self-reference:** a claim about the entity's own product/performance sourced from that entity's own official channel needs `provenance.self_referential: true` — this feeds the self-interest cap in engine/ranking.md; it doesn't lower the tier, but it does mean `confirmed` status for that claim requires a second, non-affiliated root elsewhere.3110. **Write the evidence record** per engine/evidence-contract.md, `verification_status: pending`. Do not self-verify.3233## Output3435One evidence record per claim, appended to the run's `evidence.jsonl`.3637## Common mistakes3839| Mistake | Fix |40|---|---|41| Confirming a press release "exists" via a news article instead of fetching it | Go to the primary domain, get the actual document |42| Forgetting `self_referential: true` on a company's own claim about itself | Always set it — it's what makes the self-interest cap work downstream |43| Not archiving a pricing/policy page because "it won't change" | These change constantly and without notice; archive at collection time |44| Collapsing issue / revised / effective into one date | Record `published_at`, `modified_at`, and `effective_at` separately — the freshness class chooses which clock to run |45| Counting an org's docs and its CEO's statement as two sources | Same `root_id: org:<name>`; one voice, one root |