The objects
seven first-class things, one graph between them, and everything else derived
The record is a small number of first-class objects with a typed graph between them. Sources are documents — a web page, a PDF, a scan, a book, a file — stored as immutable, content-addressed snapshots. A source is cut into chunks, ~1,200 characters on paragraph boundaries, each remembering its byte offsets in the snapshot. Claims are atomic statements extracted from chunks. Evidence ties a claim to an exact quote in a chunk, with the quote's offsets and whether the bytes were found. Entities are the people, organisations, places, events and things claims mention, resolved from the names sources use. Questions are the frontier — what the loop works. Patterns are what the slow loop finds in the whole record.
Everything else is derived from those and recomputed as they change: pages (spans of an uploaded document's snapshot with a digest each), surfaces (the record along one axis), trajectories (momentum and entropy of a thread), standing answers, the narrative, breaks, the ledger of what each stage cost. Notes — your margin — are the one table deliberately outside all of it: never evidence, never cited, never graded.
The graph is one table, links, where every edge has a from-object, a to-object and a kind. Which kinds exist, and what each means, is in the last section of this page.
| object | what it carries |
|---|---|
| source | url, kind (web · pdf · file · manual · fixture), title, author, published_at, status (candidate › fetched › extracted › rejected), content_hash (sha256 of the snapshot), rights |
| chunk | a char span of one source's snapshot: ord, text, char_start, char_end |
| claim | text, epistemic (fact · inference · hypothesis · speculation), status (provisional · corroborated · contested · retracted), created_by (the role that emitted it), meta (the entity slugs it mentions, any typed relations) |
| evidence | claim → chunk, stance (supports · refutes · mentions), the exact quote, its char_start/char_end, verified (the quote was found in the bytes) |
| entity | canonical name, kind (person · org · place · event · thing · unknown), aliases (the mention slugs it absorbed), meta (a geocode, a Wikidata id) |
| question | text, parent, origin (seed · secondary · decompose · pattern:<id> · gap), status (open · active · closed · dead), priority, closed_reason |
| pattern | kind (ten of them — below), scale (1 within a source · 2 across the corpus · 3 the investigation), description, support (the objects it rests on), strength, status (candidate · confirmed · dismissed) |
| link | from_type/from_id → to_type/to_id, kind, weight, meta — the whole graph |