inkhaven 1.5.8

Inkhaven — TUI literary work editor for Typst books
# Tutorial 80 — Timeline-aware fact-checking

*Inkhaven 1.3.30+ (RFC WORLD-5)*

[Tutorial 77](77-world-maps-and-fact-checking.md) showed the world fact-checker —
it knows your world's geography, climate, and demographics, and flags prose that
contradicts them. This tutorial adds the missing axis: **when**. If your project
has a [timeline](31-story-timeline.md), the checker now reads each scene against
the events you've declared — so it can catch the messenger who outran the calendar
and the character who's in two cities at once.

Nothing changes for projects without a timeline; this is purely additive. And as
always, the checker respects your **magic ledger** — a declared exception
suppresses a finding with a note instead of nagging.

## What the timeline adds

The world fact-checker infers time from prose ("a few weeks"); the timeline gives
it **ground truth**. A paragraph linked to a timeline event — or near one in
world-time — gains four kinds of question:

- **Calendar-grounded season.** Snow in a paragraph the timeline places in summer
  is no longer ambiguous; it's a contradiction.
- **Event-derived travel time.** The prose says a journey took "three days"; the
  timeline shows 35 days between the traveller's departure and arrival.
- **Date coherence.** A *midsummer feast* mentioned in a winter-dated scene.
- **Co-location.** A character whose events place them in Velmaril and Korthun at
  the same time.

## Setting it up

You need two things you probably already have: a **world** (`world.hjson`, even a
minimal one for the calendar) and a **timeline** with some events linked to
paragraphs. Link an event to the paragraph it depicts in the swim-lane view (see
Tutorial 31). The richer your event/character/place links, the more the checker
can see.

## As you write

Open a paragraph that depicts a linked event and fact-check it — **`Ctrl+B W →
F`**, or just let the ambient check run. Timeline-aware findings appear in the
**Output pane** alongside the world ones, marked with a **📅**:

```
⊗ fact_check_warning 📅   ch07-p042
   Tropical heat described here, but the timeline places this in winter.

⚠ fact_check_warning 📅   ch07-p042
   The prose suggests about 3 day(s), but the timeline places about 35 day(s)
   between "Departure from Velmaril" and "Arrival in Korthun".
```

The 📅 tells you the timeline was consulted. These run in all five languages — a
Russian paragraph gets Russian findings.

## Catching a character in two places

Co-location is a whole-timeline check (it compares events, not prose), so it has
its own command:

```
$ inkhaven realworld co-location
⊗ [co_location] Mara is in Velmaril ("The reunion") and Korthun ("The siege")
  at overlapping times.

1 co-location conflict(s).
```

If your world allows it — a teleporting mage, an astral projection — declare it in
the `magic:` ledger with a rule that `covers: ["co_location"]`, and the conflict is
suppressed with a note instead.

## On the command line

The same checks run headlessly. `fact-check` is timeline-aware by default when a
paragraph is identified and the project has events:

```
$ inkhaven fact-check --paragraph ch07-p042
$ inkhaven fact-check --paragraph ch07-p042 --timeline-only   # just the timeline checks
$ inkhaven fact-check --paragraph ch07-p042 --timeline-aware off   # world checks only
```

## A note on the older timeline critique

Inkhaven has had a separate timeline AI critique since 1.2.6 (you invoke it from
the swim-lane view). It still works, unchanged. During this interim the two may
flag the same things — to avoid the overlap, lean on the fact-checker and simply
don't invoke the legacy critique. A later release will prune the duplication.

## What you learned

- With a timeline configured, the world fact-checker reads each scene against your
  declared events — **calendar-grounded season**, **event-derived travel time**,
  **date coherence**, and **co-location**.
- Timeline-aware findings carry a **📅** in the Output pane and run automatically
  (`Ctrl+B W → F` or the ambient check), in five languages.
- `inkhaven realworld co-location` checks the whole timeline for a character in two
  places at once; the **magic ledger** excuses the deliberate exceptions.
- `fact-check --timeline-aware on|off|auto` / `--timeline-only` control it on the
  CLI; projects without a timeline are unaffected.

See also: [Tutorial 77 — World maps and the fact-checker](77-world-maps-and-fact-checking.md)
and [Tutorial 31 — The story timeline](31-story-timeline.md). Full reference:
[`../WORLDBUILDING.md`](../WORLDBUILDING.md).