Chapter 8
The two clocks
A .trl has always had one clock: the beat/scene/act
sequence, read top to bottom. That is work-time — the order the audience is
shown things. For a story told straight, that's the whole picture, and you never think about it.
But Memento runs its story backward; Pulp Fiction shuffles it; a flashback shows you something that happened years before the scene around it. In all of these, the order on the page is a permutation of the order in the world. The missing piece is a second clock — story-time: when an event happens in the fiction, independent of when it's shown. This is the old film-theory split of fabula (story) from syuzhet (discourse).
The story clock
You declare story-time with a chron spine — markers joined by ~>
("then, in story-time"). Then @@ stamps a scope with the marker it sits at. Here two scenes
are shown present-first, but the clock says they happen childhood-first — a flashback:
chron childhood ~> present // story-time: childhood first, then the present
char vale [+Protagonist]
char mentor
scene the_present @@ present { // the film opens here…
beat 1 { vale -- mentor : "visits the grave" }
}
scene the_memory @@ childhood { // …then cuts back: shown second, happened first
beat 1 { mentor -- vale : "the first lesson" }
} ~> is the story clock, deliberately distinct from causal ->: precedence is
"then," not "therefore." Markers need no declaration of their own — a marker is born the first time it
appears in a chron. With no chron or @@ anywhere, story-time simply
equals work-time, which is why every story you've written so far needed neither.
Loud only when displaced
A bare reference always means this character, here and now — at the scope's active story-time. The only thing ever decorated is a reference reaching to a different point on a character's own timeline. This mirrors how diegetic-level crossings are always loud: a fact slipping silently between two times (a character's future self acting as if present now) is exactly the bug a narrative engine must never hide.
The case it's built for is a character meeting themselves. Inside the second pass of one
lakeside hour, bare harry is the returned Harry; his earlier self is displaced, and so is
written loud — harry @@ lake. ~~ ties the two: one identity, two story-times,
co-present.
char harry [+Protagonist]
chron lake ~> aftermath // the night runs forward
chron lake ~~ lake_again // …but the lake hour is lived a second time (the time-turner)
scene the_rescue @@ lake_again {
beat 1 {
harry -- harry @@ lake : "casts the Patronus that saves his earlier self"
harry @@ lake ~~ harry // one Harry, two passes — a self-encounter
}
} ~~ is the time-axis sibling of !=: where != says different
people, ~~ says same person, different when. A self-consistent re-living (a
time-turner) unrolls into ~~-tied passes and stays acyclic; only a genuinely paradoxical
loop — a ~> precedence that bites its own tail — must be made loud with a
[+Loop] marker, or the validator rejects it.
Asking about story order
Two conditions read the story clock in a rule's when: — before(a, b) and
after(a, b). They are the story-time duals of work-time's past /
future, and they are three-valued: on a partial clock an answer can be
yes, no, or incomparable (no known ordering yet). An incomplete spine — the normal state while
you're still drafting — reads as "unknown," never as a false match. They gate both evaluation and
recognition, so a trope can key on in-world ordering. This is what makes order-tropes expressible
at all: dramatic irony, in medias res, the bootstrap paradox are each defined by a gap
between the two clocks, and a gap is something you can only state once you have two.
One craft note when a trope keys on story order: recognition binds events by shape, not name, so
order asymmetric operands — distinct event classes, or an event before the entity it
produces — and give both a story-time position (a scene @@ stamp or an anchor). A symmetric
same-class pair would still match a reversed story. The style guide has the
rule of thumb.
When the page order is the clock
Some works are chronological by genre contract — a clinical chart, a case file, a captain's log, a
police procedural. Their fabula already equals their syuzhet: the beat sequence is the
story clock, and the order of two events is a live discriminator (fever then rash reads measles;
rash at defervescence reads roseola). You could write that out — a linear
chron t1 ~> t2 ~> … and a @@ stamp on every scope — but it's pure
boilerplate an encoder would generate.
@@ auto is that whole spine in one line: a top-level directive declaring this work's
story clock is its presentation order. The engine synthesizes an internal marker per beat, so
before / after read the page sequence directly — no spine to write, no stamps
to keep in sync:
@@ auto // the chart is chronological — one declared line
char pt [+Patient]
scene chart {
beat 1 { evt fever [&Onsets(finding=Fever, subject=pt)] }
beat 2 { evt rash [&Onsets(finding=Rash, subject=pt)] }
}
rule Fever_Then_Rash { // measles reads fever THEN rash
when:
evt $f [&Onsets(finding=Fever, subject=$p)]
evt $r [&Onsets(finding=Rash, subject=$p)]
before($f, $r)
then:
$p [+FeverPrecedesRash]
}
Delete the @@ auto line and the trope stops firing: with no clock, before($f, $r)
is three-valued unknown and recognition's order gate refuses it. That's the whole point —
story-time is declared, never assumed. A silent "page order = story order" default is exactly the
corruption the two clocks exist to prevent (in Memento the page order is precisely not
the story order), so the equivalence must be stated out loud. For the same reason @@ auto is
exclusive: combine it with any explicit chron, @@ stamp, or
~~ in the same work and the validator rejects it — a work either declares its clock or
derives it, never both.
Because every fact is now stamped, "same tick" becomes something you can ask about.
not(before($a, $b)) and not(after($a, $b)) together — both operands resolvable —
read as genuine same-beat co-occurrence (the rash arriving at defervescence,
neither before nor after). Under a partial hand-declared clock that same pair only means "not
known to be ordered"; under @@ auto it closes to at the same time. The
style guide notes the distinction.
Finally, the story lens re-emits a permuted narrative in fabula order — the editor can show Memento forward — without touching the file: presentation order stays the source of truth, and story-time is a coordinate laid over it. The time axis and the level axis compose cleanly: a tale-within-a-tale told out of order is simply level × story-time.