keel.pub Yard

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.

[temporal] ←→ select · h/l scroll · t/c mode · Enter open Mythic Old Present Future Far Future s-0007 1.2.3 · The River · Present Y812 d31
Temporal mode: the axis is cut into the calendar’s five eras; the selected leaf carries its id above the line and its beat, title, and date below.

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 · lscroll the line left / right by four columns
t · ctemporal · chronological
Enteropen 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.

Mythicprecision era — “roughly the Mythic era” is all a fact may claim; no faked days
Oldprecision year — dated to a year before the Founding (negative years)
Presentprecision day — full { year, day, part } dating; carries present: true
Futureprecision year
Far Futureprecision 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.

days_per_year: 360 months: # must sum to days_per_year - name: First Seed days: 30 ⋮ # twelve months of thirty day_parts: [dawn, morning, noon, afternoon, dusk, night] epoch: event: The Founding before: negative # years before Y0 count down eras: - name: Mythic precision: era - name: Old precision: year - name: Present precision: day present: true # exactly one era carries this - name: Future precision: year - name: Far Future precision: era story_present: year: 812

Check-in validates before anything lands, loudly:

  • month days must sum to days_per_year; the month list may not be empty
  • day_parts must 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.before must be negative — 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
The one-branch rule. The worldline may carry at most one branch — a single fork into a second strand, ever. No branch construct exists in the data yet, so today a single strand renders; the rule is recorded so that when alternate-timeline material arrives, it forks here and nowhere else. One branch is a story choice; two is a spreadsheet.