Worldline & calendar
View 7 is the worldline: every leaf of the book laid out as a mark on one
horizontal, scrollable line. It answers the two questions a timeline can answer —
in what order does the reader meet these scenes? and when do they actually
happen in the world? — and it refuses to conflate them. Press t and
c to switch between the two answers.
Two arrangements, one line
Chronological (c) is reading order — the order the frames walk
the chapters, which is the order the reader turns pages. Marks are spaced evenly, one per
leaf; leaves not yet allocated to a chapter append after the allocated ones, in spine
order, so nothing hides.
Temporal (t) is story time. The axis divides into the
calendar’s eras, in order, each with its own segment. A dated mark places itself
within its era by year — earliest to latest across the segment. An undated mark (an
era-precision beat, or the only dated mark in its era) sits at its segment’s centre.
A mark whose era the calendar doesn’t know centres on the whole axis: visible rather
than lost, and a nudge to fix the beat card.
A flashback is nothing special here — it is simply a leaf whose temporal position sits left of its chronological one. Switching modes and watching a mark jump backwards is the fastest continuity check the tool has.
Driving it
| ← → | select the previous / next leaf (clamped, no wrap) |
| h · l | scroll the line left / right by four columns |
| t · c | temporal · chronological |
| Enter | open the selected leaf in the Write view |
The line is wider than the screen when the book demands it; the selection auto-scrolls
into view. Enter refuses politely if the leaf currently open in the editor has unsaved
work — save with ^s first. An empty worldline says so: leaves appear on the
line as beats gain them.
The five eras
The default calendar ships five eras — customizable per project, but the shape is deliberate: each era declares the finest dating it permits, and the validator holds every story time to it.
| Mythic | precision era — “roughly the Mythic era” is all a fact may claim; no faked days |
| Old | precision year — dated to a year before the Founding (negative years) |
| Present | precision day — full { year, day, part } dating; carries present: true |
| Future | precision year |
| Far Future | precision era |
Exactly one era carries present: true. It is the anchor: a story time that
names no era belongs to the present era, and the precision cap for undated material comes
from it. Without the marker, “current” would silently mean “last”
— wrong the moment futures exist.
Editing the calendar
The calendar is an ordinary object: keel co m-calendar, edit the YAML,
keel ci. Structure is load-bearing; names are yours to change freely.
Check-in validates before anything lands, loudly:
- month days must sum to
days_per_year; the month list may not be empty day_partsmust match the built-in ladder exactly — dawn · morning · noon · afternoon · dusk · night (it is the within-day sort key)- era names must be unique; the list may not be empty; exactly one
present: true epoch.beforemust benegative— the only defined convention- every story time on a beat must fit: fields must match its declared precision, the day must sit in 1..=360, and an era may never be dated more finely than its cap — a day-dated Mythic fact is refused, not rounded