The Design Record
Base document 06 · written 18 July 2026, the day the author commissioned design. The sequence held to the end: documentation (00–04), architecture (05), the unstyled site under contract — and only then the look. This document records how the look was decided, what it is, and what it refuses, so that it can be re-opened deliberately rather than drifted from.
How it was decided
- Panel session 02 (
panel-session-02-design.md): seven advisors, three rounds, binding vetoes. Direction D, Addresses Before Paint carried at 12, grafting A, The Sealed Quotation (9). Two directions died under argued vetoes — the cinematic threshold, and the empty matrix as front door. - A design swarm produced three complete stylesheet candidates under the ratified brief — Folio (the book page), Ledger (Ithaca as design logic), Restraint (near-defaults minimalism) — each with a computed contrast manifest.
- Three judges — the Shneiderman floor (who recomputed every contrast claim and verified rendered behaviour in a browser), the Kiberd first-reader, and a joint Braudel/Warburg furniture-and-plate lens — scored them Folio 25.5 · Ledger 20.5 · Restraint 17, with itemized defects.
- A synthesis pass repaired every judged defect in Folio and grafted the losers'
named strengths. The result is
design/site.css, deployed at/assets/site/site.css.
What it is
- The reading room. A 65ch serif column (Iowan Old Style / Palatino / Georgia
stack), 17px at reading width, 1.65 leading, on paper
#f4efe2with deep#081a35ink. The site's core surfaces are twenty-minute documents; the page is built for them. Minor-third scale; no webfonts — a system stack is both faster and free of fabricated provenance. - The mono factual layer (ui-monospace stack, 14px floor): status lines, the visible canonical address on every page, hours, captions, matrix labels, empty-state labels, and tables — whole tables, because "table numerics in mono" cannot be guaranteed cell-wise for unknown future markdown.
- One new deep plate: the 16×4 dimension/register matrix on
/dimensions/— deep ground, hard edges, visible whole on load, keyboard-walkable (focus ring drawn inside the scroll box atoutline-offset:-2px, Ledger's graft, so edge cells can never clip it). Cell state rides in semantic elements plus the literal word, never colour alone (Restraint's graft):<strong>built</strong>on the site's only gold,<em>building</em>, plainplanned,<del>dropped</del>,<s>skip</s>,—. - Gold discipline:
#dfa93fexists only on deep ground (8.17:1). On paper, gold's form is#A0701Cand it never carries a letterform — it is the focus ring, the link underline, thearia-currentbar (≥3:1 as a UI indicator; 3.79:1 measured). - The quotation grammar, installed before any dimension needs it:
blockquote+cite+ mono.q-address; quoted matter is never justified, hyphenated, clamped, ellipsized or case-transformed. Senn's red line is now a stylesheet fact. - The two artifacts are byte-verbatim assets (
/assets/characters/…,/assets/day/…), embedded in orientation frames — the earlier head-injection of a canonical is gone; the frame pages carry the canonical and the way back. REVISED ONCE, ON THE AUTHOR'S EXPLICIT COMMISSION, 5 August 2026. The rule did what it was written to do: it held the two files unchanged for eighteen days while a real accessibility defect stood in them — playtest-01's author-queue item 1, roughly 4px labels and sliver tap targets on a phone, and a detail panel updating below the fold. The rule is not that the files may never change; it is that only the author may change them, by name, and everything else about them is frozen. He commissioned the revision as part of the closing act. What was done is bounded and recorded in catch C-110: a narrow-screen scroll region at a fixed width (the ratified deck pattern), enlarged hit areas, and the panel brought into view on selection. Nothing changed above 760px — verified in both files at 1280px, where the layout, the geometry and the scroll behaviour are byte-for-byte what they were. The byte-verbatim rule resumes over the revised files: the next change needs the next commission. - Print keeps the footer, drops only nav and iframes, restores wide tables to
full display, and renders the built state as a
#A0701Cborder (gold's print form per00-method.md).
What it refuses (as binding as what it has)
Photography and imagery (REVERSED by the author, 19 July 2026 — see below) · network webfonts · icons in the chrome · animation and
transitions · hover-only reveals · ambient ash/rose washes (those colours belong to
Stephen and Molly, who are not on these pages yet) · gold letterforms on paper ·
serif display type for schema titles · uppercase performance · empty-state theatrics ·
any rule keyed to today's emptiness.
Synthetic speech of any kind, on any surface — including a voice restricted to the reader's
own device. Refused 25 July 2026 by the build panel (session 06, six vetoes to one second),
on the author's request for a warm read-aloud voice. Three grounds. A voice performs a text:
it chooses stress, pace and pauses the print does not contain, which is a characterisation of a
passage laid over the passage (A19). The register system this design uses to tell the truth —
the mono factual layer, the deep plate, sourced set apart from inferred — has no audible
form, so everything the page distinguishes by sight arrives flattened. And no check that
runs on this repository can observe what a browser sends: the voices that sound warm are
overwhelmingly the ones where localService is false, which post the text to a vendor, and on
/dimensions/reading-log/ that text would be the reader's own entries from the page that
promises they never leave their device (C-37).
Refused with it: audio and video of any kind, anywhere on this site. Not narrowed to the
Reading Log, not narrowed to the passages, and with no exemption held open. <audio>,
<video>, <embed>, <object>, <source>, <track>, autoplay, loop, preload, and any
off-origin media src.
This clause shipped on 25 July 2026 with one narrow exemption held open for a future recorded human voice — the panel's own recommendation, left to the author. The author ruled the same day that there will be no recorded voice, and asked for it to be struck rather than parked. So the exemption is gone rather than left standing unused. An unused exemption is a door, and the next session tidying up for consistency finds a door and no argument against walking through it. What replaces it is the simpler and stronger rule: this site has no sound.
Recorded as a refusal rather than left as an absence, so restoring consistency cannot
quietly reverse it. What ships in its place is the read-aloud that already happens, made
correct: the held transcription's italic markers set as italics rather than published as
underscores a screen reader reads aloud, and the French, Latin and Hebrew runs carrying their
own lang. Enforced in tools/check.mjs §11r and §11s. The full argument is in
docs/panel-session-06.md.
Two author-directed exceptions, recorded 18 July 2026: the practice's shared
GoatCounter page-view counting (cookieless, no personal data — the one external
request, allow-listed exactly in tools/check.mjs), and the home-screen icons and
web manifest (the 1922 object as an app icon: paper U on deep ground, one gold rule
— design/icons/), both as on the practice's other sites.
The deck form (presentation register, added 19 July 2026)
The first audience deck (Four Odysseys) establishes the deck form, applying the
ratified 1922 system rather than opening a new design decision — the panel's system
extends to it. An audience deck is a self-contained HTML card-viewer on the deep
plate (the register's slides are projected surfaces, so deep ground, like the two
interactive artifacts): image cards only, no explanatory prose, keyboard-navigable
(arrows, Home/End, dot tablist), an aria-live caption, and no animation — so
reduced-motion is honoured by construction. Cards carry identity labels (a work's
name, year, and its reading on the chart), never the argument; the argument is the
presenter deck, kept in presenter-decks/ in the private repository and never
passed through to the site (author's ruling, C-19). A deck is an artifact with register
presentation, embed: false (a slideshow wants full width, so the dimension page
links it rather than embedding it), and it surfaces automatically on /presentation/
and /registers/presentations/.
Enforcement
tools/check.mjs inverted at this commit — from forbidding style to protecting
words: exactly one stylesheet per page and no stray styling vectors; rendered
document text sampled and verified against source on all twelve document pages;
artifacts and PDFs byte-compared to their sources; every declared colour pairing in
data/design.json recomputed against its WCAG floor at every build (with a standing
sanity assertion that gold-on-paper fails, so the forbidden pairing can never be
declared conforming); fragment links resolve against real heading ids.
Implementer's additions beyond the synthesis (recorded per the handback discipline)
- The matrix cell semantics in
site/dimensions/index.njkmap grid states to the semantic elements the synthesis specified; a dropped dimension's cells readdroppedregardless of budget. - The 404 page links the stylesheet directly (it does not use the base layout).
- The synthesis's
.artifact-frame + iframerule set width but no height, leaving the embedded artifacts at the 150px iframe default; aheight: max(78vh, 34rem)was added so the plate is a room, not a slot. - The
.artifact-embedclass on the iframes is inert (the stylesheet targets.artifact-frame + iframe); it is left in place as a future hook.
The user-cohort tests
Three pre-registered personas — a first-time reader, an experienced Joycean, and an accessibility professional — tested the designed site in isolated cycles; an evaluator per cohort triaged findings across the content/presentation boundary (bounded presentation fixes applied; content findings queued for the author; anything that would erode an honesty marker refused). Results and the applied fixes are appended below.
Appendix — the cohort verdicts, the applied fixes, the author queue and the refused
list are recorded in docs/playtest-01.md. All three cohorts would return; the two
failures every cohort named — the artifact letterbox and the stale "unstyled" claim —
were fixed the same day.
The way back (navigation in the artifacts — panel session 03, 19 July 2026)
Fifteen self-contained artifacts were published as byte-verbatim assets and not one carried
a link back to the site. A reader arriving at /assets/object-museum/museum.html#potato-talisman
— from a search engine, a citation, or the project's own newly hyperlinked PDFs — was stranded.
Found by the author. Five advisors were convened, because this document requires the panel again
for new chrome. They found almost no new chrome was needed: the mono factual layer, the decks'
.foot line, the gold underline, the gold focus ring and the checker's asset link-walk were all
already built. What follows finishes a sentence the project had already started.
Two corrections the panel made before designing. The citable ids are sixty-one, not 190 — the rest are SVG hooks and form fields nobody will cite, and the two prior-work drafts hold only JavaScript hooks, so there is nothing in them to deep-link to. And the cliff is authored: the site's own frame pages say "Open the artifact on its own page, full width," which is not a search engine's fault.
The element. One class family, .whence, in each artifact's own stylesheet. A head strip
before the h1, a foot strip after the source line, and — in the three artifacts with citable
sections — one return line per section, placed after the h2 and before the first prose. That
placement satisfies two vetoes that looked opposed: it is the first Tab stop after the fragment
target (the keyboard floor), and it sits at the one point in a case where nothing is quoted
(Senn's line). Ink-mute on paper at 7.5:1. No icon, no glyph, no uppercase, nothing sticky.
"Back" has no address, so the spec does not pretend it does. Browser history is not addressable, and a reader arriving from a search engine has none. What "back" means here is the parent — the dimension page that names the register and holds the siblings — labelled by destination, never by direction. The words "Back", "Return" and "Up" are refused as labels: the browser owns Back, and a link named Back that goes elsewhere betrays the one control the reader already trusts.
The URLs are absolute, because these files are self-contained and the Reading Log tells its
reader they may save it. A downloaded artifact has no origin and every relative link in it is
dead. target="_top" is unconditional: nine of fifteen artifacts are iframed, and without it the
site would load inside a 78vh box.
The decks get no new element (C-19 governs — image cards without explanations). Their existing off-stage foot line gains its links. The rule that keeps navigation from becoming explanation: a return link may name a destination and may never characterise the card. No "learn more", no "read the analysis".
The two prior-work artifacts are not edited, and the rule does not bend. They have nothing to deep-link to; playtest-01's author queue item 1 is already an open commission against those exact files, so the missing way back is a fifth item on it, not an exception. A byte-verbatim rule that bends once for a good reason is not a rule. What is repaired today is on the site's side of the line, where the site's own writing is fully editable.
Refused, so it can be re-opened deliberately: runtime navigation of any kind (history.back(),
document.referrer, frame detection) · build-time injection into artifact bytes · position:fixed
or sticky · site chrome inside an artifact · a navigation card in any deck · anchor glyphs and
every icon · target="_blank" — a reader who arrived in the middle is trying to get out · a link
in or on a quotation · any :target highlight reaching quoted matter, because colouring Joyce's
words to show where someone clicked is a reframing performed by the site and attributed to nobody ·
a "copy link to this quotation" control, which makes the quotation a unit of traffic · direction
words as labels · and growth: three items in the strip, a fourth reconvenes the panel.
Dissent, recorded. Nelson wanted the inbound half in the same commit — each artifact naming
its citers — and it is queued, not carried; his objection stands unanswered on its own terms, that
a link which goes one way is half a link. Kiberd wanted the prior-work assets Disallowed in
robots.txt; not carried, because hiding a published address from search is an address change in the
only sense a stranded reader experiences. Shneiderman would not close the catch while curve.html
still has two ids and no internal overview; partly carried — the gap is named and queued, because
creating addresses is a content decision and was not this panel's question.
Panel session 04 — the eleven-session review (20 July 2026)
Seven free-thinking roundtables, then a four-round session on improvements from project to
website. Seven chairs across the seven roundtables; Eames, Nelson, Shneiderman and Eames
chaired the four rounds. Recorded in full in docs/panel-session-04-interim-report.md,
with the ballot, every veto and the argument that carried it, the unresolved disagreements
preserved as disagreements (A4), and the questions returned to the author.
Three rulings from it bear on this document and are recorded here so they bind:
- Checkers enforce derivation, resolution and structure; they do not enforce silence. Carried by the death of a proposal to fail the build when an aggregate count appeared in a reader-facing template. Warburg: "a gag compiled into the toolchain," unrevisable without editing a checker. Braudel: honest counts do not become dishonest by being added up. Drift in an editorial choice is recoverable; a compile-time refusal is not.
- No address may be published on a conditional whose failure branch removes it. Carried under A14 and L-20 against an A/B test that would have deleted the losing arm. An address whose failure branch withdraws it is an address change in the only sense a stranded reader experiences. Withdrawn by its own proposer.
- Derive facts, never derive decisions (Senn). If re-running the build could produce it from scratch, it is a fact and prose must not assert it; if someone had to choose, it is a decision and it carries a date and a name. Adopted in practice, not yet tested on a hard case — the panel's own open question is whether closing a register slot is a fact or a decision.
The imagery refusal, reversed by the author (19 July 2026, catch C-35)
The author has rejected this document's refusal of photography and imagery. Images are allowed. The refusal is struck above rather than deleted, because an abandoned path is shown, not hidden (anchor A4), and because knowing what the project once refused is part of knowing what it is.
Why the refusal existed, honestly stated. It was made at a moment when the project had no images and no rights position, and a design that forbids what you do not have costs nothing while looking principled. It also protected something real — a site of twenty-minute documents does not want decorative photography, and stock imagery would have made the work look like every other literary microsite. That protection is now carried by a rule about purpose rather than a ban on a medium.
What replaces it. Imagery is admitted where it carries the work, and refused where it decorates it. Concretely:
- An image must be evidence, an object of study, or a signature device — never atmosphere, never a mood-setter, never a header photograph, never a stock illustration behind text.
- Every image carries a named licence at a named URL on a credits surface (RIGHTS.md clause 7). This was already binding for dimension 14 and now binds everywhere.
- Nothing is fetched at read time. The site remains zero-dependence and makes exactly one external request. Images are committed to the repository and served from it, or they are drawn inline as SVG. No hotlinking, ever — it would make the work depend on someone else's uptime and would leak the reader's visit to a third party.
- The accessibility floor does not move. Every image that carries meaning carries a real text
alternative; decorative SVG is
aria-hidden. An image is never the only way a fact is available. - The site's own chrome stays imageless. This reversal is about the work — dimensions, artifacts, decks, the atlas — not about the header, the navigation or the page furniture. Icons in the chrome remain refused, and so does animation.
What this unblocks. Dimension 14, the Atlas of One Day, is a made object of images and was proceeding under a design that formally refused its medium — a contradiction this session had already flagged and left for the author. It is now consistent. The audience decks are also freed: they were built as text on a plate under a rule that forbade the alternative, and the register is called image cards.
What it does not touch. Catch C-19 still governs what a deck may say: image cards carry identity labels and never the argument. Making the cards more visual does not make them more explanatory. And Senn's line holds unchanged — nothing sits on, in, or over a quotation of the 1922 text, image or otherwise.