THE ALTITUDE ATLAS — DRAWING SET COLOPHON
The equation card: the lit-ui-router logo, an equals sign, the Lit flame, a plus sign and the UI-Router mark over the measured city of sheet 7, with THE ALTITUDE ATLAS lettered beneath. The equation card: the lit-ui-router logo, an equals sign, the Lit flame, a plus sign and the UI-Router mark over the measured city of sheet 7, with THE ALTITUDE ATLAS lettered beneath.
lit-ui-router.dev equals lit plus ui-router — the equation card: the lockup on a framed pane over sheet 7's census city.

THE SET, ROUTED

Riffs on an isometric codebase-visualization form seen in the wild; the notes on each sheet argue where that form fits and where it lies.

The atlas is 14 sheets of static HTML. This is the same set as one lit-ui-router application: an abstract atlas state renders the rail and a nested <ui-view>, and atlas.sheet resolves one generated fragment per plate. Every plate is cut out of its page chrome by www/atlas.lit-ui-router.dev/generator/emit-app.mjs and mounted through one state — nothing here is transcribed by hand.

WHAT IS DOGFOODED

srefHref, srefActiveClass and srefAriaCurrent — the attribute-part forms, so the href in the source is the href in the DOM — on every rail link, cover card and key chip; resolve for the manifest, the plate, and — on the three plates in the round — Google's <model-viewer> itself, so a library and the three.js it carries are fetched by the states that need them and by no other; redirectTo for /office → appendix A2; a url-less atlas.notFound as the otherwise target, so an unknown sheet keeps its own url in the address bar; nested <ui-view>; and the Navigation API location plugin with a pushState fallback.

THE ISSUE LOG

Every REV across every plate — the set's own revision record, latest first — is at /log. It is parsed at build time out of www/atlas.lit-ui-router.dev/HISTORY.md, the frozen record, and rides the manifest as JSON, so the app fetches no markdown. The sheets themselves carry no revision table: each describes its present state, and the log is where the set's history is read.

THE BARE PLATE

Every sheet is also served at /plate/<num>: one plate in a bare document, with no rail and no client script, which the prerender writes from the same route table — a top-level plate state the client knows only as a link target. Each sheet's crumb links its own.

WHAT THE SERVER DOES

ui-router-server compiles src/routes.ts — the same route table, projected as data — into a mount at the site root. It runs in the Vite dev and preview servers, so a bad deep link answers 404 rather than 200, and it drives the build-time prerender: every route a shell verdict claims gets its own HTML file, redirect verdicts become _redirects lines. The servers take its dependency-free matcher tier; the prerender replays its paths on the simulate tier, one pooled headless @uirouter/core router prewarmed before the first path. See SSR-VERDICT.md for what rendered and what did not.

PACKAGES

lit-ui-router, @uirouter/core, ui-router-server, ui-router-navigation-location-plugin, lit, ui-router-effect (the route ref: the boot's settled route, the index filter and the arrow-key walk read it), lit-ui-router-effect (the Lit controller that binds the city pin to it), effect, cytoscape (the four interactive plates) and @google/model-viewer (the plates in the round, imported only by atlas.city, atlas.plant, atlas.bricks and atlas.builds); at build time, lit-ui-router-ssr and @lit-labs/ssr. All from npm; no workspace links.

HOW THE SET IS DRAWN

Plates written by node generator/build.mjs . from this directory: one chrome-less fragment per sheet and a manifest for app/, the drawing set as a prerendered lit-ui-router app, the glTF binaries of its four plates in the round (city, plant, bricks, builds), drawn in Google's model-viewer. The frame audit and the card pictures read each sheet as a bare plate under app/dist/plate/, written by the prerender. The interactive lanes (1i, 2B, 12i and appendix A2i) bundle cytoscape 3.31.0. generator/check-scenes.mjs checks the models and drives the built app's 3D plates in headless Chromium. The published site is the app alone: /, /sheet/7, /city. Light theme is graphite-on-vellum; dark is cyanotype. Since 2026-09-06 every label on the plates draws in the data face (DIN 2014, Barlow Semi Condensed off the kit) rather than the system monospace; mono is reserved for code. Generated 2026-08-16 by Fable (Claude, AI). Every plate in data/ — versions, dates and all — was re-counted at origin/main @ eb1162da in one pass, plate 7A's test light included: generator/census-shadow.mjs re-meters it at the same ref. The cover's general survey — every tracked file on the scc 4.0.0 Code basis, origin/main @ eb1162da — is imported from data/census-files.json, the master snapshot generator/census-scc.mjs writes; generator/census-overview.mjs prints the same rollup on the terminal.

Icons: Lucide (ISC), restroked — the card keys, and the glyphs that mark the interactive plates' controls and panel heads; projection glyphs and the register and spine drawn here.

SOURCES — module inventory & manifests read from the repo at branch www/atlas · npm dates from www/atlas.lit-ui-router.dev/data/census-npm.json, which prints its own registry-read date on sheet 4 · every plate in www/atlas.lit-ui-router.dev/data/ counted at origin/main @ eb1162da in one pass — plate 7A's test light included, metered at that ref by www/atlas.lit-ui-router.dev/generator/census-shadow.mjs · cover general survey = origin/main @ eb1162da, counted 2026-10-18, imported from www/atlas.lit-ui-router.dev/data/census-files.json · eslint-plugin-lit-ui-router is counted on every plate and drawn or scheduled on sheets 2, 4, 7, 7A, 7B, 11, 12 and 13 · sheet 5 positions are editorial. FILES — www/atlas.lit-ui-router.dev/app/ files every plate, routed as one lit-ui-router app. DRAWN BY FABLE (CLAUDE, AI) FOR SHANE DANIEL.