Colophon
The materials behind this portfolio. Every figure below is measured from the generated files; the results belong to the revision shown beside them.
This build
| Built | 8 October 2026 |
| Revision | a758ccb |
| Pages | 22 |
| HTML, all pages | 719 kB |
| Assets, all types | 169.80 MB |
| Search entries | 19 |
| Build time | 908 ms |
By file type
| Type | Bytes |
|---|---|
| .mp4 | 145.23 MB |
| .webp | 18.75 MB |
| .js | 2.08 MB |
| .png | 1.86 MB |
| .css | 1.08 MB |
| .mjs | 489 kB |
| .woff2 | 187 kB |
| .json | 66 kB |
| .html | 33 kB |
| .vtt | 24 kB |
| .txt | 9 kB |
| .svg | 6 kB |
The diagrams are drawn at build time from their sources and inlined in each project page, so they add nothing to the SVG figure.
How it is built
Stack
No application framework. Static HTML, CSS and JavaScript, rendered by a Node script using the standard library. Fonts are self-hosted. The production site uses Vercel Web Analytics for aggregate traffic statistics. Read about privacy and your analytics choice.
The components collection keeps its own React and Motion runtime, styles and Inter fonts. Those files are self-hosted and load only when you open it.
Type
Geist, self-hosted. Geist for the interface and Geist Mono for anything a machine produced — including every number on this page and the drawing chrome of the home page's exploded view. Caveat is kept for a hand annotating the work rather than the interface speaking. All three are subset, served from this domain, and released under the SIL Open Font Licence.
Theme
Light on a first visit, whatever your system is set to. A saved dark choice is remembered on this device and restored before first paint by a small inline script, so there is no flash either way. The script never reads your operating system's preference. Both themes are checked in the browser.
Checks
Last run Thu, 08 Oct 2026 09:01:11 GMT against revision 00f0294.
| Check | Result | Detail |
|---|---|---|
| G1 build | Pass | 24 pages, 21 routes |
| G2 vendor identity | Pass | 13 files byte-identical to source |
| G3 reviewed dependencies | Pass | 117 files; only official analytics SDK permitted |
| G4 html | Pass | 24 pages checked |
| G5 links | Pass | internal links and anchors resolve |
| G6 budgets | Pass | largest page 227kB · max route css 28.7kB gz · js 29.3kB gz · aggregate css/js 64/180kB · fonts 187kB |
| G7 css rules | Fail | 18 site stylesheets |
| G25 components | Pass | 38 identities, original checksums, checked adapters, scoped styles, one h1 and no review tooling |
| G26 share images | Pass | 23/23 pages with a sound 1200×630 og:image · 21 distinct images, 1601kB linked · assets/og 20 files, 1568kB |
| G27 Dot engine | Pass | 30 properties: frame-rate determinism, seek equals play, continuity, area, reduced motion, golden frames |
| G8 contrast | Pass | WCAG AA on 15 routes, both themes |
| G9 accessibility | Pass | names, targets, slider and dialog semantics |
| G12 layout | Pass | no horizontal overflow |
| G20 console | Pass | no errors or warnings |
| G10 keyboard | Pass | focus, palette, lens keys |
| G11 reduced motion | Pass | nothing moves; films show stills |
| G14 theme | Pass | light first, saved dark wins, persists, no flash |
| G13 vitals | Pass | mobile, CPU 4x: CLS max 0.0047 · LCP max 556ms across 7 routes |
| G17 archive | Pass | 472 of 472 artefacts painted · 129 open · 74/74 wall behaviours · 9 of 9 decks draw in the viewer · frame:1b opens in the lightbox |
| G18 receipt truth | Pass | every figure on the colophon is computed |
| G21 panel regressions | Pass | every held defect class still fixed |
| G22 the exploded view | Pass | keys, hand, lift, leaders on their evidence, arrival, touch and the fold, driven |
| G23 the hero control | Pass | focus, names, micro type, dark materials, reduced motion, no-script rest pose |
| G24 Project mechanisms | Pass | one template at 320/390/768/1440; four models; media; reduced motion; no-JS |
| G28 Dot page | Pass | focus ring both themes; storage blocked; idle, paused and exclusive films; gated film sound; reduced motion; touch drag; keyboard pick up, move and throw; film played = film seeked; expression links; replay keeps the full stop; proof identical at every stop; springs switch; mood keys and sentence; finale full stop; no-JS content; no overflow 320–1920 |
| G29 Dot performance | Fail | slow start-ups (median of 3): short dot-undo 93 ms; long tasks in 3 of 3 runs: 153 ms in arrival, 136 ms in film | 189 ms in arrival, 95 ms in film | 146 ms in arrival, 93 ms in film; up-front JS 25.0 KB gz (budget 25 KB): dot-studio.c651f359.mjs, engine.4dc4ae63.mjs, mind.2bed42e6.mjs, stage.36b932ea.mjs, tuning.0e3a1209.mjs |