litany
Everything the player of **The Acceding** looks at. The player never moves in this game: they read what the Assent Engine has asked for and they compose three words out of eight. So the interface is not a layer over the game, it *is* the game, and this module is where most of the…
litany — the screens
Everything the player of The Acceding looks at. The player never moves in this game: they read what the Assent Engine has asked for and they compose three words out of eight. So the interface is not a layer over the game, it is the game, and this module is where most of the playing happens.
The screens
| screen | layer | what it is |
|---|---|---|
acc-title | 40 | the title — the rosette, the name, DESCEND |
acc-how | 42 | how it is done: four rules and the whole vocabulary |
acc-hud | 30 | the console the game is played on |
acc-brief | 32 | the descent — carries nothing but SKIP |
acc-line | 46 | the written form of every spoken line, over whatever is showing |
acc-flash | 34 | the verdict, stamped across the machine |
acc-pause | 60 | HELD — and the ledger of what the Engine has heard |
acc-end | 52 | the crown, and the seal |
What share of the frame the machine gets back
The screen is 1080 × 1440, three units wide by four tall. The console is a fixed 728 px of brass along the bottom: everything a hand touches, stacked down the tall axis, because a row of eight glyphs across 1080 px does not fit and a 2 × 4 grid does.
The remaining 712 px belongs to the vault and the Assent Engine. A 54 px gate ribbon and the liturgy plate sit in it, both translucent and both blurring what is behind them rather than hiding it, which leaves 330–430 px of completely clear glass looking up the column, depending on whether the gate's demand runs to one line or two. The verdict is stamped in that clear band and never over the console, so the one moment the game turns on happens on the machine.
The art
art.ui.sigils (/source/art/ui/sigils.module) holds every mark as inline SVG:
one sigil per glyph, drawn so a suit's giving and withholding words are the same
figure turned against itself; the four alchemical suit seals; the nine-toothed
rosette; the crown and the seal; the rules and sockets. Inline SVG rasterises at
the element's display resolution, so a mark is crisp at 16 px in a slab and at
268 px on the title.
Three generated textures carry the metal: ui_plate (the console and every
panel), ui_frame (the reliquary moulding around the liturgy, nine-sliced), and
ui_slip (prayer-slip paper).
What it reads and what it drives
- Reads
A.stateand never writes it — RITE is that table's only writer. - Drives the game only through
Rite.*:begin,skip,place,unplace,speak,reset. It asksRite.tenderness(glyph)what one more saying of a word would cost, which is what puts the amber warning and the hatched projection on a slab before the player commits, andRite.stats()for the ledger on an end card. - Renders
Choir.line(id).textfor every spoken line. A line with no audio is marked UNVOICED rather than dropped: the words are on screen whether or not the generation arrived. - Every callback id is prefixed
lit:so no two slices collide.
Two things that are load-bearing
The driver holds the module table it captured at load. A hot-reloaded slice
keeps being ticked by the OLD table until the driver component itself
re-evaluates, so for a while the tree a fresh require reads and the frame on
the glass are built by two different versions of this file. That is the
documented require semantics, and it is why anything with a lifetime longer
than one chunk run — the clock, the pause card's state, the bus subscriptions —
lives on A.litany rather than in a local.
State lives on A.litany, not in module-locals. Six agents share one engine;
any save re-runs the boot pass, and a module-local dies with it. The pause card
survives a reload because its state is parked on the shared contract table.
Scoped to this part · feeds back into the world's score.