Les Dossiers / FI-PROJ-006 / sub-dossier
Le Cadran
A watch face that doesn't tell time. It shows what an AI assistant was actually doing when it answered, and it never shows a state that didn't happen.
rouage/dial.py, not drawn by hand.Object record / CDN-01
Twelve positions that are operating modes, not hours.
Live in the terminal Prototype 0 Case not built
ATLAS runs as one assistant in many modes. Le Conseil names those modes (the skeptic, the archivist, the bloodhound, the smith and the rest) and decides which of them answer a given message. Le Cadran is the dial that shows the outcome: each lit position is a member who actually convened, the hands point to who answered and who took precedence, and anything the system can't measure yet is drawn and labelled undriven.
It's laid out as a diver's chronograph because every part of that movement carries a real constraint. The bezel turns one way only, which is how Le Sauvegarder works. The crown screws down, so nothing changes by accident. A guarded pusher has to be armed before Le Fripon can be used, and the arming expires.
The honesty constraint
The display never shows a state the router did not produce.
In software it is a discipline.
Every lit element traces back to a field in a routing trace emitted by Le Rouage, the routing train. There's no demo loop, idle animation or startup sweep that lights positions for effect. Dark positions are genuinely dark: the gate did not fire.
In hardware it is a wiring constraint.
The case's LEDs are driven by that same trace, so the physical object can't be finished before the software behind it is. An instrument that displays invented state is a prop.
Undriven is a reading, not a gap.
The registers (Signal, Noise, Gain), the up-and-down reserve (Le Barillet), the calendar (Le Continuant) and the retrograde arc are drawn on the face and marked undriven. They'll light when something real drives them, and not before.
LIVE / IN THE BROWSER
Type something. The council routes it.
The live instrument runs the same routing train in your browser: train.js, held to the Python rouage.py by a conformance suite. Type a message and the dial and the terminal face redraw from the trace it produces. Matching is by named invocation, so a route needs its verb. Try run Publish, not "publish". The page also takes a proposed member and a reason, standing in for the assistant's own call.
Nothing on it is sent anywhere. It's a static page with no network requests, rendered by ATLAS rouage/live.py and published here unchanged.
Display / six states
Six states, six colours. Red belongs to fault and nothing else.
-
Dark · unlit
The gate did not fire.
-
Consulted · yellow
Weighed and contributed, not surfaced.
-
Active · green
Convened and surfaced.
-
Sealed · amber
Locked, awaiting the crown.
-
Held · dim amber-grey
Stopped at the door. Held and consulted once shared a colour, and that was a bug: one was heard, the other never got in.
-
Dissent · magenta
Le Renégat refusing; the brake is engaged.
Sequence / 2026
From a council to a dial to a face in the terminal.
-
08.16
Inception
The council is rebuilt as a diver's movement, and the case is specified the same night, honesty constraint included. A marine chronometer was drafted first and sent back: it has neither a rotating bezel nor a crown.
-
08.26
The going train
Le Rouage, the router, lands with the first SVG dial (#2). Prototype 0 is started: the layout under test, honest by construction.
-
08.29
The dial catches a bug
Position 12 lit, and the reason engraved on the dial was the exact sentence written to keep him dark. The negative gate was fixed (#24).
-
10.02
A round face in the terminal
The dial is redrawn in character cells; the hands were chosen by L'Opérateur from four candidates (#50), then split into a face for glancing and a table for reading (#52).
-
10.09
Every prompt
The train runs on every message through a prompt hook (#56), and a stop hook is added to draw the face after the turn settles (#59). Its display in a live session is not yet verified.
-
10.25
Live in the browser
The live page draws the terminal face and takes a proposal (#62). This sub-dossier makes the sheet and the instrument public.
-
Next
Prototype 1 / .30 cal
The case: specified, not built.
Le Boîtier / the case
Prototype 1 goes into a .30 cal ammo can, turned on its side.
Specified Not built
An M19A1 can laid on its side carries a dial of six to six and a half inches. Behind diffused acrylic batons sit addressable RGB LEDs, one per position, with the hands on a geared stepper and a single-board computer in the three-inch depth. The can's existing latch and hinge become the caseback, so the instrument opens the way its doctrine says a case opens. Pusher, crown and pusher come through the side under a fabricated guard.
Prototype 0 comes first: a four-inch round panel showing the existing interface at real size, the cheapest way to find out that a marker is unreadable at arm's length.
What the case does not do.
It doesn't run the council, store L'Archive, or decide anything. The instrument is read. L'Opérateur decides.
Le Signal / video
Le Cadran: A Watch Face That Can't Lie.
Routes
Source of truth first. Public record second.
-
Le Cadran · Live
The interactive dial and terminal face, running the routing train in the browser.
-
Object record CDN-01
The full sheet: the dial, five specimen inputs, the terminal face at prompt time and settled, the Le Conseil table, and field notes.
-
ATLAS
rouage/The routing train, the renderers, and the conformance suite that keeps the Python and JavaScript trains in step.
-
Le Boîtier
The case specification: controls, display states, enclosure, and the honesty constraint.
-
Source note
Which ATLAS commit these exhibits were rendered from, and their checksums.
-
ATLAS dossier
The operating layer Le Cadran reads out.