Status: implemented on branch landing-page, under site/. Preview build published
as a Claude artifact on 2026-09-16; Vercel deploy pending (see §6).
A single page that says what proofpath does, shows a real run, and gets someone to
uv tool install proofpath. It must carry the product's own rules: it shows passages,
it names its coverage, and it never dresses up an example as a real result.
| Topic | Decision |
|---|---|
| Scope | proofpath only |
| Look | Warm paper ground, crimson field for the hero / rules / footer, rose only as a wash. "Strange" dithered public-domain engravings. Pencil-drawn UI: wobbly SVG boxes, rules, arrows, underlines, badges. |
| Mythology | Norse: Odin's ravens. Huginn (thought) flies to the source — levels 1 and 2. Muninn (memory) brings the passage back — level 3. A raven back with nothing says "nothing found", not "nothing exists" (rule 2). |
| Artwork | No hand-drawn ravens (rejected). Ravens are details lifted from the engravings themselves. |
| Type | Fraunces (display, opsz/SOFT/WONK axes) · Inter (body) · IBM Plex Mono (terminal, findings, code) · Caveat (margin notes and captions — the "pen"). Self-hosted via fontsource; the four first-paint files are preloaded. |
| Emphasis | Key words in body copy are set in the pen colour: *word* in the data files → <em class="key"> via src/lib/mark.ts. |
| Stack | Astro 7, static output, no UI framework (React can be added as islands later without a rewrite). npm, Node ≥ 22.12, TypeScript strict, Prettier. |
| Motion | Medium: strokes draw themselves on scroll, a typewriter terminal, hover swaps a denser halftone. Everything is gated on prefers-reduced-motion and on html.js, so no-JS and reduced-motion readers get complete lines and the final terminal state. |
| Hosting | Vercel via Git integration, root directory site. site in astro.config.mjs is a placeholder until a domain exists. |
- Hero (crimson) — "Don't guess. Show the evidence.", one-paragraph lede, install
box with
uv/pipx/piptabs and a copy button, Bracquemond's Le Corbeau. - A run, as it happens (paper) — the real
/check tests/data/draft-live.mdrun fromdocs/eval/2026-09-15-tui-v2-live.md, replayed frame by frame with the ferret banner; margin notes point at what matters. Full transcript is in the markup for screen readers. - Three questions, asked in order (paper) — exists / still valid / supports, each with an engraving, the services asked, the states it can produce, and one finding. Level 2's finding is illustrative and says so on the page.
- Six things it will never do (crimson) — the six rules from
CLAUDE.md; rule 6 carries the coverage bar and the "coverage is weak … lower bound" line. - The same engine behind a pipe (paper) — install box again, the four CLI lines, exit codes, SARIF/JSON, "ask → deny in CI, reported".
- Footer (crimson) — Heath Robinson band, links, and generated credits for every engraving with source, licence and year.
site/images.manifest.json lists each source (Wikimedia Commons / Met Open Access, all
CC0 or public domain, checked on the file page), its crop and tuning. npm run images
(scripts/dither.mjs) fetches once into .cache/, then writes two-level Bayer 8×8
halftones to public/images/ — a paper colourway (crimson darks, paper transparent) and a
crimson colourway (paper lights, crimson transparent), each in 720 and 1440 widths and a
denser hover variant. Output is deterministic and committed; the build does not fetch.
src/data/images.generated.ts is written by the same script and feeds <Halftone> and the
footer credits. Wikimedia rate-limits aggressively; the script backs off on 429.
npm run check(astro check) — 0 errors;npm run format:checkclean;npm run buildclean.- Lighthouse (mobile, preview build): accessibility 100, best practices 100, SEO 100.
- No horizontal scroll at 390 px; all grid children carry
min-width: 0. - Contrast: crimson on paper 5.28:1, slate on paper 5.06:1, rose-soft on crimson 4.69:1, ink-mute on paper 5.01:1.
- Main checkout on
mainuntouched; this branch adds onlysite/and this file.
- Domain, then
siteinastro.config.mjsandpublic/robots.txt. - Connect the GitHub repo to a Vercel project with root directory
site. - README link to the site and a CHANGELOG line, after merge (the other session owns those files).
public/og.pngis a browser capture of/og(seesite/scripts/og.md); regenerate when the hero copy changes.