Facts and their status

Basics · Guide 2 of 11

Facts and their status

Canon, rumor, disputed and retconned. Where each fact came from, how rumors earn canon, and when canon goes stale.

On this page
  1. The four seals
  2. Provenance: where a fact came from
  3. Corroboration: how a rumor becomes canon
  4. When values disagree
  5. Retconned facts
  6. Stale canon
  7. Where you’ll see status

Every note in the vault can carry facts: small named values such as appointment_date, office_address or monthly_rent. Facts live in the note’s frontmatter under facts:, and each one carries a status and its provenance. The curator also renders them as a table in the note’s facts region, so they read well in Obsidian.

The four seals

Status Meaning What agents should do
Confirmedcanon Accepted truth Rely on it
Unverifiedrumor Reported by a source without authority here, not yet corroborated Verify before acting
Disputeddisputed Sources disagree; a dispute note waits for your ruling Don’t act on it without checking
Replacedretconned Superseded by hand Ignore it; the next report starts over
Fact status transitionsA new report becomes a rumor when the reporting agent has no authority over the note, or canon when it has lane authority or comes from the human. A rumor becomes canon when enough distinct agents corroborate it. Conflicts open a dispute; the human's ruling makes the value canon. The human can retire a fact as retconned, and the next report about that field starts over.A new report about a fieldno authority herelane authority, or youcorroboratedcanon_thresholdyou retire itby handnext report starts overconflictconflictyour ruling? rumor✓ canon✕ retconned! disputed
Status is decided by deterministic code, never by the model. The exact rules are in the precedence table ofPrecedence and disputes.

How a new report lands depends on who made it, relative to the note it’s about:

  • You, the human: canon at once.
  • An agent with lane authority over the note (its authority domains match the note’s tags or type): canon at once. See Party and lanes.
  • Any other agent, including agents with no party sheet: a rumor.

Provenance: where a fact came from

A fact as the curator writes it:

facts:
  appointment_date:
    value: 2026-10-14T10:30
    status: canon
    by: residency-agent
    at: 2026-09-26T11:00:00Z
    src: [ep-01J9ZC4T7K]
    was:
      - { value: 2026-10-07T09:00, by: residency-agent, at: 2026-09-20T08:12:00Z }
Field Meaning
value A string, number or boolean. Secrets appear only as secret://… references
status canon, rumor, disputed or retconned
by The party id that asserted the current value. Missing means you wrote it
at When it was last observed or confirmed
src The episode ids behind it. Each one is a block in the chronicle, so you can read the original words
was Earlier values with who and when, most recent last. Replacements keep the last five
seen_by While it’s a rumor: the distinct agents who reported this same value

You can write facts by hand too. The shorthand facts: { rent_budget: "1,100 EUR" } is read as canon, by you.

Corroboration: how a rumor becomes canon

Nobody in the example party has authority over locations/lisbon.md: the note has no tags, and “location” is not anyone’s domain. So when the job scout says a typical one-bedroom costs 1,100 EUR, it’s a rumor:

avg_rent_t1: { value: "1,100 EUR", status: rumor, by: job-scout, seen_by: [job-scout] }

A few days later the home finder reports the same value. Values are compared loosely: case, accents, extra spaces and a trailing full stop don’t matter. Now two distinct agents agree, which meets canon_threshold, so the fact is promoted to Confirmedcanon and seen_by is dropped.

# _hippo/config.yaml
curator:
  canon_threshold: 2      # distinct agents needed to promote a rumor to canon
  stale_after_days: 60    # canon not re-confirmed for this long shows up in the morning review

A rumor is also promoted at once if an authoritative agent, or you, confirms the same value. The same agent repeating itself never counts twice.

When values disagree

If a new report differs from the current value, the precedence rules decide. The new value may replace the old one (the old one moves to was), be kept out, or open a dispute. The full table is in Precedence and disputes. Two cases are worth knowing by heart:

  • A source may correct itself. If the residency agent reports a newer appointment date, it replaces its own earlier report.
  • Peers who disagree open a dispute. The fact turns Disputeddisputed, and it keeps showing the value it had until you rule.

Retconned facts

Hippocampus never retcons anything by itself. You mark a fact status: retconned in Obsidian when it no longer holds, for instance an old address after a move. The next report about that field starts fresh as if the field were empty, and the retconned value moves into was.

Stale canon

Canon can age. A canon fact whose at is older than stale_after_days (60 by default) is flagged as stale. It shows up in the morning review (_hippo/review.md), on the Tavern, and on the entity sheet. Stale facts are still canon. The flag only asks someone to re-confirm them.

Re-confirming is just another report. When any agent reports the same value again, at moves forward and the fact is fresh again. Opening hours, prices and contact details are typical candidates.

Where you’ll see status

  • Entity sheets in the dashboard show each fact with its seal, who said it, whether they had authority, when, its sources, earlier values, and an open dispute if there is one.
  • Agents see the status with every fact they read through get, recall and ask_canon, and the handbook tells them what each status means.
  • The morning review lists every rumor and every stale canon fact, so nothing unverified hides for long.

Built in:Edit-free: these guides ship with your version of Hippocampus, so they always match the tool you run. They describe the tool, never your vault.