# Inkhaven 1.5.5 — Authoritative Sources (RESRCH-3)

_1.5.4 taught `/calc` to read the project's own World facts. 1.5.5 opens the research assistant onto
**authoritative, external sources** — structured knowledge, scholarly literature — and lets a claim be
**cross-checked across all of them**. The endpoint of the trust ladder: the gate that decides whether a
fact commits is no longer the model grading its own answer, but **independent sources voting**. No new
crates._

_Track: [RESRCH-3_TRACK.md](../PROPOSALS/RESRCH-3_TRACK.md)_

## Structured knowledge — `/wikidata` (R3-A)

**`/wikidata <query>`** looks up the best-matching Wikidata entity and shows its **structured claims**
(property → value), each citable by **Q-ID** — the top of the trust ladder. Keyless; three calls
(`wbsearchentities` → `wbgetentities` → one batched label resolve); external-identifier properties
filtered out; labels in the project language. A `/fact` from it records provenance **`wikidata`** (+ Q-ID)
and **skips the fact-check gate** — a Q-ID-backed triple is already verifiable. **Wikipedia is
deliberately excluded** (its narrative carries editorial bias; the triples don't).

## Scholarly literature — `/openalex`, `/arxiv` + auto-cite (R3-B)

**`/openalex <query>`** (with a `mailto` polite pool) and **`/arxiv <query>`** return a paper's title,
authors, year, abstract, and a stable **DOI / arXiv-ID** — keyless. A `/fact` from a paper records
provenance **`openalex`** / **`arxiv`** (+ the ID), skips the gate, and **auto-creates a SOURCES-1
`BibEntry`** under a *Research* chapter of your Sources book (deduped by cite key): the verified fact and
a real bibliography entry land together. Toggle with `research.scholarly.auto_cite`.

## Triangulation — `/triangulate` + the cross-source gate (R3-E)

**`/triangulate <claim>`** (bare → the last response) gathers evidence from the structured sources
**concurrently** (Wikidata + OpenAlex + arXiv), then has the model judge **each source** `SUPPORTS |
CONTRADICTS | SILENT` against the claim — judging *independent external evidence*, not its own output —
and reports an `Agreement: n/m support` tally.

Set **`research.triangulate_gate: true`** and triangulation becomes the **automatic `/fact` gate** for
`model` / `web` / `document` facts, **replacing** the single-source self-check: on confirm it gathers →
judges → and `SUPPORTS` with no `CONTRADICTS` inserts, else asks for a second `Ctrl+S`. Deterministic /
structured facts (`computed`, `wikidata`, `openalex`, `arxiv`) skip it. Off by default (network-heavy).

## Notes

- **No new runtime crates** (all three sources reuse the `reqwest` from 1.5.2; all keyless). New config
  blocks `research.wikidata` / `research.scholarly` and the flag `research.triangulate_gate`. New
  provenance origins `wikidata` / `openalex` / `arxiv`. New sidecar-free citation lands in the existing
  Sources system book.
- The corpus can now be grounded on **five source tiers** — World · Wikidata · OpenAlex/arXiv · web ·
  model — and **cross-checked** across them. Remaining RESRCH-3 items (R3-D Zotero/BibTeX + folder-watch,
  R3-C `/world` display) are deferred.
- arXiv is validated against the live feed; OpenAlex uses the polite pool (`mailto`) to avoid the
  anonymous rate limit. Tutorial 103 expanded; `Ctrl+B h` updated. Tests 2204 → 2213.
