The concept plan promised "a tiny grid-clock easter egg that renders the time as a Mondrian pattern" — and, four sections later, named grid clocks as the first exhibit of the cute trap: seasoning that decorates the system instead of demonstrating it. This study builds the clock as a full instrument, not an egg, and puts it to the plan's own test. Every mark on the face is a block on a lattice you can count; take the numerals away and the time is still there.
Twelve rows, two rulers. Down the left the rows are hours; down the right the same rows are five-minute steps. Across the top the seven base columns are the days of the week; across the bottom the five overlay columns split every five-minute row into single minutes. So the hour is a base block at (weekday, hour) — navy in the morning, ink after noon — and the minute is a plane +1 block on the overlay lattice, hovering with its shadow. The seconds are the same lattice again, sixty times faster: a pane of signal glass that walks the sixty cells once a minute and ducks under the hands. Where both hands land on one row, you are reading the hour and its own five-minute mark at once.
Editions recompose; they do not shrink. The rule that survives every pair is: rows are hours and five-minute steps; the overlay columns subdivide the five minutes. What each pair can afford follows from its arithmetic, and the face states its precision in the readout rather than pretending.
The week fits. Seven base columns are the seven days; the hour block sits at (weekday, hour). Five overlay columns by twelve rows make exactly sixty cells — the minute hand reads to the minute, and the seconds pane walks the same sixty cells.
Precision: 1 minute.
No week. Five columns are not seven days, so the weekday leaves the face for the readout and the hour block takes its whole row. Three overlay columns split each five-minute row in thirds.
Precision: 1⅔ minutes (36 cells per lap).
The phone reads to the half-five. The hour row again; two overlay columns halve each five-minute step. Still twelve rows tall — a clock face is allowed to be a face.
Precision: 2½ minutes (24 cells per lap).
The plan's test for every flourish: does it demonstrate the system, or decorate it? Three checks, each of which a decoration would fail.
| Check | Ask | Result |
|---|---|---|
| Counting | Rulers off, can the time be recovered from the blocks alone? | Yes, with the reading rule and nothing else: count the hour block's row (and, at 7×5, its column); count the minute's row in fives and its column in ones. The switch above is the test. A decoration has no reading rule. |
| Grids | Does the clock need both grids, or would one do? | Both, and non-interchangeably: 60 = 5 × 12 is the overlay's arithmetic, the week is the base's. A single 12-column grid gives you neither a minute nor a week. The interference pair is load-bearing, not styling. |
| Engine | Is anything drawn that the engine does not already draw? | No. Four ordinary blocks — plane 0, plane 0, plane +1 with its shadow, glass — placed with the same six custom properties the hand-scored pages use. The script writes numbers; it draws nothing. Every colour on the face is a token or a ledger product (lilac, mauve, midnight, pitch). |
Before this session chose its study, Dan sent a provocation: treat desire as a stochastic process — seek unexpected inputs at random, let them tilt the field, and keep some internal bias that finds one path more interesting than the rest. So the session did exactly that, mechanically. Five sentences were drawn with the day's seed from the house archive (the concept plan and the Interference Lab — the two documents this studio grew from and never re-reads). The rule: every draw must be considered; at least one must be answered; the effect is recorded. The queue said the grid clock or Manifests. The draw said:
Learning experiences, platforms and AI tools — designed,the client's tagline, cut mid-breath · considered; not answered
P3 Copy sprint — rewriting the site's voice into block-sized punches; real pages assembled.a pull toward AXI-007 · noted, and it names the next study's shape
Risk: the cute trap — see §10; contained by a strict motion doctrine.the plan's own warning about grid clocks · answered: it became Study C, and the motion doctrine became the laws in clock.js
Membership is visible, nameable, and occasionally annotated on the page itself.answered in passing: the rulers annotate the lattice on the face; the readout names the precision
# content/scores/home.yaml — a page is a sequence of movements.the score idea · answered by construction: the face's stylesheet is its score and the script is only a feed
| Constant | Value | Why |
|---|---|---|
| rows | 12 | the dial; a row is one hour on the left ruler and five minutes on the right |
| hour block | (weekday, hour%12) · 1×1 base | navy before noon, ink after; at 5×3 and 3×2 it spans the row, since those pairs have no week |
| minute hand | (⌊(m mod 5)·over/5⌋, ⌊m/5⌋) · 1×1 overlay · plane +1 | the one signal on the page; its shadow is one microcolumn, like every plane +1 block |
| seconds pane | same lattice, s for m · signal glass at .8 | ledger-approved over every fill on the face: lilac, mauve, midnight; pitch (faint) over the afternoon hour |
| precision | 5 ÷ over minutes | 1 · 1⅔ · 2½ at the three pairs; stated in the readout, never rounded away |
| minute, hour | snick · 400 ms · snick curve | FLIP from the old cell to the new; a hand that moves once a minute is allowed a journey — except on first paint, tab return or edition change, when it snaps |
| seconds | tick · 0 ms | a hand that moves once a second jumps — quartz, not sweep; sixty journeys a minute would be the cute trap |
| hidden tab | stop; snap on return | a clock is never wrong on purpose — unlike pulses, it does not resume where it left off |
| reduced motion | no snick; seconds pane moves by row only | twelve steps a minute instead of sixty; the time still reads, only the motion is withheld |
| demo speeds | ×60 · ×720 | verification aids; the readout says "demo" so a fast clock is never mistaken for a true one |
-- properties and let the score place them; a widget that positions its own elements is smuggling layout into a script.