The argument and the artifact are the same claim, made twice.
This is a site about machine-readable, structured, token-driven design, so the site itself is a precise, token-driven artifact. Every visual value comes from a DTCG token through var(--token-name), with no raw hex and no pixel literals. Open the source and you find the thing it argues for.
One value, from JSON to browser.
build
paints
The chip at station 01 and the fill at station 03 are the same value, #0B0B0D. Style Dictionary compiled the JSON, the browser resolved the var chain, and nothing in between retyped it. The name changes at every station. The value never does.
One token remapped. Everything downstream followed. No value was touched twice.
The dark theme is not a token file. The DTCG spec does not yet standardize theming, so the remap lives in the Style Dictionary config, the same build source of truth that compiles the tokens. At build time a generator walks the semantic layer and emits themes.css, and it fails the build if any color token lacks a dark alias. Nine tokens remapped, coverage enforced, never hand-edited.
The repo is the diagram
This site was written as documents before it was built as pages. The argument came first, then the spec, then the context files agents execute against, then the build. The four layers the site teaches are the same four layers the repository instantiates. Read the tree and you are reading the thesis.
The layers are out of file order on disk and in exact order in the argument. Both readings are true at once. That is what machine-readable means.
Drift is not hypothetical on this site. It happened here. Three files disagreed on the canonical sans: the tokens said N27, a working doc said Archivo, a handoff snapshot said Space Grotesk. An agent surfaced the conflict mid-build and stopped. The fix was not a font choice, it was governance: one canonical DESIGN.md, every earlier draft marked superseded. The failure, the catch, and the fix are all in the vault below.
The canon, file by file.
Every public file that built this site, each with one line on what to look at. A repo is a pile of files until someone tells you where to start.
- Readme DownloadREADME.md Excerpt
Curated excerpt. The full file is one click away.
## The framework decision Build on Astro. Astro is the right tool because the site is content-first, and Astro ships zero JavaScript by default, produces the cleanest static HTML, and gives you type-safe content collections for the pillars and an islands model for the one piece of interactivity. For the requirement that the source read as pristine, that matters concretely: an Astro page ships the HTML and the CSS you write and nothing else, with no framework runtime to clutter view-source.
- Start here DownloadSTART-HERE.md Excerpt
Curated excerpt. The full file is one click away.
So the rule is simple: do not redesign, port. The design files are the source of truth for markup, tokens, type, motion, and behavior. Recreate them as Astro components on the real token pipeline. ## The lock Locked and approved. Reproduce faithfully. Do not restyle, re-lay-out, or refactor the look: - the homepage, including the kinetic stack signature - the four pillar pages (one template, four layers) - the token reference page - the audio player - the design language end to end: the monochrome system, the two type voices, inversion-only emphasis, the sharp 2px radius
- Thesis Downloaddocs/thesis.md Excerpt
Curated excerpt. The full file is one click away.
The short version: a design system used to be documentation a human read and interpreted. Now it is infrastructure an agent reads and executes against. When you formalize design decisions into structured, version-controlled data, design stops being a pile of static assets and becomes a source of executable intent. The truth of the system moves out of a fragile codebase and into an architecture built for machines to act on. Four layers make that real: design tokens, machine-readable logic, spec-driven development, and runtime context standards. Each layer hands the next the context it needs, and the whole chain is what turns AI from a guessing intern into a partner you can rely on.
- Strategy Downloaddocs/strategy.md Excerpt
Curated excerpt. The full file is one click away.
Different people learn differently, so forcing everyone through one format is how a learning site fails. The strategy is to take one curated body of knowledge and offer it through several on-ramps, then let each person choose the depth and the format that fits them. The skimmer, the listener, the deep reader, and the question-asker each get their own door into the same curated knowledge. This is what makes the site a complete, self-directed learning environment rather than a links page with extras bolted on.
- Direction Downloaddocs/art-direction.md Excerpt
Curated excerpt. The full file is one click away.
### Monochrome on purpose True monochrome, a single grayscale ramp from a warm paper to a cool, blue-black ink, with no chromatic accent anywhere. This is not a style preference, it is an argument. Tokens begin life as a grayscale ramp before any color decision is made, and stripping color out forces structure, type, and motion to carry the design. A site that leaned on a brand accent could hide weak structure behind it. This one cannot, which is the point: the discipline is visible. Emphasis is inversion, never a second color. A block that needs weight flips from ink-on-paper to paper-on-ink. The only chroma in the whole system is the faint temperature difference, paper kept slightly warm and ink kept slightly cool, and that is deliberate. If a reviewer cannot name a single accent color, the system is working.
- Tokens Downloadtokens/ Excerpt
Curated excerpt. The full file is one click away.
// tokens/primitive.tokens.json "gray": { "050": { "$value": "#F6F5F2", "$type": "color", "$description": "Paper, kept slightly warm on purpose." }, ... "950": { "$value": "#0B0B0D", "$type": "color", "$description": "Ink, kept slightly cool on purpose." } }, // tokens/semantic.tokens.json "color": { "surface": { "$value": "{gray.050}", "$type": "color", "$description": "Default page surface, warm paper." }, "foreground": { "$value": "{gray.950}", "$type": "color", "$description": "Default text and marks." }, ... } // tokens/component.tokens.json "button": { "background": { "$value": "{color.foreground}", "$type": "color", "$description": "Solid control fill. References a semantic token, never a primitive." }, ... }
- Glossary View
- Spec DownloadPRODUCTION-BUILD-SPEC.md Excerpt
Curated excerpt. The full file is one click away.
## Non-negotiables These carry from AGENTS.md and do not loosen. - True monochrome. Warm paper to cool blue-black ink, no accent color anywhere. Emphasis is inversion. - Two type voices. The characterful sans for the human argument, the designed monospace for the machine voice (layer numbers, token names, code, labels). - Every visual value is a token, consumed as var(--token-name). Nothing hardcoded. - Never use em dashes or en dashes, in the code or any copy. Use commas, colons, parentheses, or periods.
- Agents DownloadAGENTS.md Excerpt
Curated excerpt. The full file is one click away.
## Drift alarms, self-correct when you catch these - A centered hero. Use left-aligned and asymmetric, with the kinetic stack as the hero. - Inter, Roboto, or system-ui. Use the characterful sans plus the designed mono. - A gradient, or any single bright accent color. Stay fully monochrome; inversion is the only emphasis. - Rounded cards in a three-column grid with soft drop shadows. Use the exposed grid and real structure. - Fade-in-on-scroll on every element. One orchestrated signature, everything else static. - Buzzword copy, meaning unlock, seamless, empower, elevate. Use the thesis voice, plain and specific.
- Claude DownloadCLAUDE.md Excerpt
Curated excerpt. The full file is one click away.
Three rules that always apply, restated here so they are never missed: 1. Never use em dashes or en dashes, anywhere, in the UI or in copy. Use commas, colons, parentheses, or periods. 2. Every visual value comes from a design token. Never hardcode what a token should own. 3. Pristine naming and structure are a feature. Write the repository so it reads as deliberate to anyone who opens it.
- Design DownloadDESIGN.md Excerpt
Curated excerpt. The full file is one click away.
## Two voices, one answer each The human voice is N27, licensed from atipo. It carries the argument: prose, headlines, annotations, labels, and UI chrome. Weights carry the hierarchy: Bold (700, with 600 declared into the same cut) for page titles and primary headings, Medium (500) for subheads, nav, labels, and chrome, Regular (400) for body copy at 17px with 1.7 leading, and Light (300) reserved for display sizes above 40px, never for body. The wordmark ("tokens", an arrow, "agents", all lowercase) is set in this voice at medium (500), in the header and the footer alike. The machine voice is Basier Square Mono, licensed from atipo, shipped in Regular (400) only. It carries everything that is, or represents, structured data: code, token names and values, file paths, and structured-data excerpts, set at 0.9em against the surrounding sans. The two faces share the same cap height and x-height, so no size-adjust is needed; the 0.9em compensates for the mono's wide set. font-synthesis is off on every mono surface, so a weight the family does not ship is never faked. It is consumed only through the font.family.mono token, never as a hardcoded family, so a future swap propagates in one edit. There are no candidates and no alternatives in this file on purpose. Earlier drafts listed options, three files disagreed, and an agent caught the conflict mid-build. This file is the fix. One canonical answer per decision, every earlier draft superseded.
- Repo Open the repo
It compiles in one step
Clone the repo, install, build. The tokens compile through Style Dictionary into the custom properties this site runs on. There is no hidden step. What renders here is what builds from these files.
Open the source and the rules are visible. That is the whole point.
The stack.
The colophon, in the machine voiceRunning this inside an organization, or thinking about it? I compare notes with teams doing this work. The files above are the method. The rest travels by conversation.
Get in touchThe rest of the system, rendered live.
This page traced one value from JSON to browser. The token reference renders the whole system from the same values, read at runtime: the palette ramp, the type scale, the spacing, and the three-tier map.
Open the token referenceEvery screen runs on these tokens. Start at the top and follow the chain, layer by layer.
Return to the map