THE ALTITUDE ATLAS — DRAWING SETSHEET 2C / 14

the ALTERNATE BUILDS

ALTITUDE 2 — SIBLING PLATE, THE ECOSYSTEM: one box of eleven family bricks at sheet 2’s mould and nine runtimes as stacks of baseplates sized from one shipped build at the same scale, and the seven alternate models the repository’s own consumers build from it, and an eighth the atlas’s own app builds on its own branch — each model the parts one consumer pins, on the plates they peer · rows read census-builds.json, both readings, and census-peers.json @ eb1162da

SCALE — one scale, sheet 2’s: a family brick is 1 stud per 150 sloc and a course per 3 files · a runtime is baseplates at sheet 2’s baseplate footprint, 8×6 = 48 studs, 1 stud per 150 sloc of one shipped build — the development build where one is shipped laid a plate at a time and stacked when it overflows, the remainder on top at its own size · under 48 studs, one plate at its own size · a ringed stud marks each brick coupled to a plate, the plate lettered A–I; a dashed plate is an optional peer · the ground is the registry, not massed THE BOX — 11 BRICKS, 9 PLATES THE PARTS — eleven BRICKS AT SHEET 2’S MOULD 1 lit-ui-router 2×4 · 8 courses carried by 16 consumers 17 with the atlas app 2 navigation-location-plugin 1×2 · 1 course carried by 2 consumers 3 with the atlas app 3 lit-ui-router-mobx 1×1 · 2 courses carried by 2 consumers 2 with the atlas app 4 ui-router-server 2×4 · 5 courses carried by 2 consumers 3 with the atlas app 5 lit-ui-router-effect 1×2 · 2 courses carried by 2 consumers 3 with the atlas app 6 lit-ui-router-ssr 2×4 · 5 courses carried by none at the cabinet’s tree 1 with the atlas app 7 lit-ui-router-signals 1×2 · 2 courses carried by 3 consumers 3 with the atlas app 8 ui-router-effect 1×1 · 1 course carried by 2 consumers 3 with the atlas app 9 ui-router-signals 1×1 · 1 course carried by 3 consumers 3 with the atlas app 10 ui-router-mobx 1×1 · 1 course carried by 2 consumers 2 with the atlas app 11 eslint-plugin-lit-ui-router 2×4 · 4 courses carried by 1 consumer 2 with the atlas app THE PLATES — nine RUNTIMES AT THE SAME SCALE A @lit-labs/ssr 1 plate · 3×3 8 studs · under none under 1 with the atlas app B @lit-labs/ssr-client 1 plate · 1×2 2 studs · under none under 1 with the atlas app C @uirouter/core 1 plate · 6×6 32 studs · under 7 builds under 8 with the atlas app D effect 8 plates · 7 of 8×6 + a 3×4 348 studs · under 1 build under 2 with the atlas app E eslint 9 plates · 8 of 8×6 + a 6×6 418 studs · under 1 build under 2 with the atlas app F hono 2 plates · 1 of 8×6 + a 4×4 61 studs · under none under none with the atlas app G lit 1 plate · 1×1 1 stud · under 6 builds under 7 with the atlas app H mobx 1 plate · 6×6 31 studs · under 1 build under 1 with the atlas app I signal-polyfill 1 plate · 2×2 4 studs · under 1 build under 1 with the atlas app NOT IN ANY BUILD — SPARE PARTS AND SPARE PLATES 6 lit-ui-router-ssr in the box, in no build at the cabinet’s tree carried by 1 with the atlas app A @lit-labs/ssr peered by lit-ui-router-ssr, in no build under 1 build with the atlas app B @lit-labs/ssr-client an optional peer, pinned by no consumer under 1 build with the atlas app F hono an optional peer, pinned by no consumer under none with the atlas app BUILD I · VANILLA 6 consumers · a sample app and five examples 1×1 C×1 G×1 1 C G BUILD II · SIGNALS 3 consumers · a sample app and two examples 1×1 7×1 9×1 C×1 G×1 I×1 1 7 9 C G I BUILD III · EFFECT 2 consumers · a sample app and an example 1×1 5×1 8×1 C×1 D×1 G×1 1 5 8 C G D BUILD IV · MOBX 2 consumers · a sample app and an example 1×1 3×1 10×1 C×1 G×1 H×1 1 3 10 C G H BUILD V · NAV 2 consumers · a sample app and an example 1×1 2×1 C×1 G×1 1 2 C G BUILD VI · SERVER 2 consumers · a sample app and a docs site 4×1 C×1 4 C BUILD VII · ESLINTED VANILLA 1 consumer · an example 1×1 11×1 C×1 E×1 G×1 1 11 C G E BUILD VIII · THE ATLAS 1 consumer · an atlas app · eslinted effect nav ssr server 1×1 2×1 4×1 5×1 6×1 8×1 11×1 A×1 B×1 C×1 D×1 E×1 G×1 1 5 6 2 8 4 11 C G D A B E BUILD SCHEDULE — seven builds · eight with the atlas app, numbered from most consumers down, ties alphabetical by parts, the atlas app’s build after them · a build is the family parts one consumer pins, counted over 19 consumers · 20 with the atlas app I VANILLA — brick 1 lit-ui-router — on plates C @uirouter/core and G lit · straddles brick 1 to G 6 consumers: sample-app-lit-vanilla (sample app) · helloworld (example) · hellosolarsystem (example) · hellogalaxy (example) · design-system-links (example) loading-and-error-views (example) II SIGNALS — brick 1 lit-ui-router, brick 7 lit-ui-router-signals and brick 9 ui-router-signals — on plates C @uirouter/core, G lit and I signal-polyfill · straddles brick 1 to G · cords brick 9 to I 3 consumers: sample-app-lit-signals (sample app) · hellosolarsystem-signals (example) · hellogalaxy-signals (example) 1 manifest takes ui-router-signals as a peer rather than pinning it: sample-app-lit-signals III EFFECT — brick 1 lit-ui-router, brick 5 lit-ui-router-effect and brick 8 ui-router-effect — on plates C @uirouter/core, G lit and D effect · straddles brick 1 to G · cords brick 8 to D · a cord hangs from brick 5 to D 2 consumers: sample-app-lit-effect (sample app) · hellogalaxy-effect (example) 1 manifest takes ui-router-effect as a peer rather than pinning it: sample-app-lit-effect IV MOBX — brick 1 lit-ui-router, brick 3 lit-ui-router-mobx and brick 10 ui-router-mobx — on plates C @uirouter/core, G lit and H mobx · straddles brick 1 to G · cords brick 3 to H and brick 10 to H 2 consumers: sample-app-lit-mobx (sample app) · hellosolarsystem-mobx (example) 1 manifest takes ui-router-mobx as a peer rather than pinning it: sample-app-lit-mobx V NAV — brick 1 lit-ui-router and brick 2 ui-router-navigation-location-plugin — on plates C @uirouter/core and G lit · straddles brick 1 to G 2 consumers: sample-app-shared (sample app) · navigation-api (example) VI SERVER — brick 4 ui-router-server — on plate C @uirouter/core 2 consumers: sample-app-routes (sample app) · @www/lit-ui-router.dev (docs site) VII ESLINTED VANILLA — brick 1 lit-ui-router and brick 11 eslint-plugin-lit-ui-router — on plates C @uirouter/core, G lit and E eslint · straddles brick 1 to G 1 consumer: lint-eslint (example) VIII THE ATLAS — eslinted effect nav ssr server — brick 1 lit-ui-router, brick 2 ui-router-navigation-location-plugin, brick 4 ui-router-server, brick 5 lit-ui-router-effect, brick 6 lit-ui-router-ssr, brick 8 ui-router-effect and brick 11 eslint-plugin-lit-ui-router — on plates C @uirouter/core, G lit, D effect, A @lit-labs/ssr, B @lit-labs/ssr-client and E eslint · straddles brick 1 to G · cords brick 5 to D and brick 8 to D · cords hang from brick 6 to A and B 1 consumer: altitude-atlas-app (atlas app) — sample-app-lit-e2e (sample app) pins no family part: a consumer, not a build PLATE SCHEDULE — one row per runtime · one build, the tarball it ships, its closure · every joint a peerDependency row A @lit-labs/ssr 4.1.0 — ^4.1.0 · one build (main): 8 files · 1,083 sloc → 8 studs · 1 plate · 3×3 · ships 17 files · 1,530 sloc · closure 20 packages · 28,345 sloc peered by brick 6 · under no build · under build VIII with the atlas app B @lit-labs/ssr-client 1.1.8 — ^1.1.7 · OPTIONAL, drawn dashed · one build (development): 4 files · 282 sloc → 2 studs · 1 plate · 1×2 · ships 16 files · 576 sloc · closure 7 packages · 4,564 sloc peered by brick 6 · under no build · under build VIII with the atlas app C @uirouter/core 6.1.2 — ^6.0.8 · one build (module): 80 files · 4,776 sloc → 32 studs · 1 plate · 6×6 · ships 162 files · 14,601 sloc · closure 1 package · 4,776 sloc peered by brick 1, brick 5, brick 3, brick 7, brick 6, brick 8, brick 10, brick 2, brick 4 and brick 9 · under builds I, II, III, IV, V, VI and VII · under builds I, II, III, IV, V, VI, VII and VIII with the atlas app D effect 3.22.3 — ^3.22.0 || ^4.0.2 · one build (import): 361 files · 52,146 sloc → 348 studs · 8 plates · 7 of 8×6 + a 3×4 · ships 724 files · 109,298 sloc · closure 4 packages · 62,490 sloc peered by brick 5 and brick 8 · under build III · under builds III and VIII with the atlas app E eslint 10.13.0 — ^9.0.0 || ^10.0.0 · one build (default): 380 files · 62,616 sloc → 418 studs · 9 plates · 8 of 8×6 + a 6×6 · ships 410 files · 64,545 sloc · closure 75 packages · 99,710 sloc peered by brick 11 · under build VII · under builds VII and VIII with the atlas app F hono 4.13.13 — ^4.0.0 · OPTIONAL, drawn dashed · one build (import): 180 files · 9,148 sloc → 61 studs · 2 plates · 1 of 8×6 + a 4×4 · ships 380 files · 18,963 sloc · closure 1 package · 9,148 sloc peered by brick 4 · under no build · under no build with the atlas app G lit 3.3.3 — ^2.0.0 || ^3.0.0 || ^3.1.2 · one build (default): 38 files · 39 sloc → 1 stud · 1 plate · 1×1 · ships 77 files · 118 sloc · closure 6 packages · 4,282 sloc peered by brick 1, brick 5, brick 3, brick 7 and brick 6 · under builds I, II, III, IV, V and VII · under builds I, II, III, IV, V, VII and VIII with the atlas app H mobx 7.0.6 — ^6.0.0 || ^7.0.0 · one build (import): 1 file · 4,593 sloc → 31 studs · 1 plate · 6×6 · ships 9 files · 23,068 sloc · closure 1 package · 4,593 sloc peered by brick 3 and brick 10 · under build IV · under build IV with the atlas app I signal-polyfill 0.2.2 — ^0.2.0 · one build (main): 1 file · 520 sloc → 4 studs · 1 plate · 2×2 · ships 1 file · 520 sloc · closure 1 package · 520 sloc peered by brick 9 · under build II · under build II with the atlas app TOTAL — seven builds from 19 consumers · eight from 20 with the atlas app · ten of eleven parts carried · eleven with the atlas app · six of nine plates stood on · eight with the atlas app · counted at origin/main @ eb1162da (2026-10-18)
FIG. 2COne box, eight models. The sample apps, the docs site and the examples pin seven distinct sets of family parts, and the atlas’s own app pins an eighth on its own branch; each set is drawn as the small assembly it makes on the runtime plates its parts peer, under a callout of its parts: effect, mobx and signal-polyfill share no model, one brick stays in the box at the cabinet’s tree and no bricks with the atlas app, and three plates carry nothing at the cabinet’s tree and one with the atlas app.

GENERAL NOTES

One box, several models. Sheet 2 draws every family brick in one assembly on @uirouter/core. The repository's own consumers — 19 consumers: the sample apps, the docs site and the examples at the cabinet's sha — pin seven distinct sets of family parts, each manifest closed over its family peers, and this plate draws each set as the model it makes: its parts at sheet 2's mould, standing on the runtime plates those parts peer. The eighth model, build VIII, is the atlas's own app: its manifest at www/atlas.lit-ui-router.dev/app, read from git archive www/atlas @ 2011c945, off the cabinet's tree, and drawn accent-edged on its own branch the way sheet A4 draws the atlas deploy. Every count on this sheet reads both ways, the cabinet's tree first and “with the atlas app” after. Build I is the most built, lit-ui-router alone on @uirouter/core and lit, by 6 consumers. One consumer pins no family part at all (sample-app-lit-e2e), and is a consumer rather than a build.

No model mixes two reactivity runtimes. effect, mobx and signal-polyfill are each reached by a family binding — lit-ui-router-mobx, lit-ui-router-effect, lit-ui-router-signals, ui-router-effect, ui-router-signals and ui-router-mobx — and no consumer in either reading mixes two of them; the build stops if one does. The bindings are alternates in the box, the way one set's instructions show a car or a plane, not both.

Ground and stacking follow the dependency. A family brick peers lit or effect, not the reverse, and no runtime on this plate peers another — both read from each row's own peerDependencies — so each runtime is a plate, the parts stand on them, and the plates lie on plain ground. @uirouter/core is a plate like the others: ten of the eleven family bricks peer it, and it is the baseplate of every model, laid first at the left, the way sheet 2 seats the family on it. A part stands on the part it peers when that part is in the same build, as it does on sheet 2, and the rest seat on core at sheet 2's places measured from core's right edge, packed from the back where sheet 2 seats them off its client plate; a part that peers no core seats on its one runtime (eslint-plugin-lit-ui-router). Every other runtime a brick peers abuts core and the brick reaches it, unless the brick it stands on already carries it: a brick on core straddles the seam onto a flat runtime plate one stud deep, the way lit-ui-router stands on both core and lit, and a brick that cannot straddle, one on another brick or one beside a stack, reaches it by a cord: a string with end studs, two 1×1 round plates joined by a cord, one seated on a ringed stud of the brick's top and the other on a ringed stud of the plate, the cord leaving each plate's own stud, from the nearest pair of free studs whose cord clears every brick and stack. A brick standing on another brick hangs its cord instead from a free stud of its underside, the round plate's stud seated in the brick as on a stud, wherever that cord drops clear of every other brick and stack — brick 5 in build III and brick 6 in build VIII. Nothing abuts core from behind: a stack taller than core stands at its left or right side, and a flat plate along its front, at the right beside the seam or at the left, wherever every cord to it runs clear of every brick and stack; each plate rings one stud per brick coupled to it. The atlas app's model spans the columns its width needs. A build stands on the runtimes its consumers declare and on every required peer its parts carry, which the installer adds whether or not a manifest names it; an optional peer no consumer declares stays off the model.

One scale. The family keeps sheet 2's mould exactly — 1 stud per 150 sloc rounded up the brick shapes, a course per 3 authored files. A runtime is baseplates at sheet 2's baseplate footprint, 8×6 = 48 studs, one stud per 150 sloc of one shipped build — the files reachable from its exports entries, the development condition where one is shipped (@lit-labs/ssr-client) — laid a plate at a time and stacked when it overflows, the remainder on top at its own size, three plates to a brick course: effect is 8 plates · 7 of 8×6 + a 3×4, eslint is 9 plates · 8 of 8×6 + a 6×6 and hono is 2 plates · 1 of 8×6 + a 4×4. Under 48 studs a runtime is one plate at its own size, the nearest rectangle: @lit-labs/ssr 3×3, @lit-labs/ssr-client 1×2, @uirouter/core 6×6, lit 1×1, mobx 6×6 and signal-polyfill 2×2. A package's dependencies are a number in the schedule rather than area on the plate: @lit-labs/ssr builds 1,083 lines over a closure of 28,345, @lit-labs/ssr-client builds 282 lines over a closure of 4,564 and lit builds 39 lines over a closure of 4,282. Every model on lit stands on a 1×1: six of the seven builds, seven of eight with the atlas app, and the runtime they run on is in its closure.

What stays in the box. lit-ui-router-ssr is carried by no consumer at the cabinet's tree, so no model of that reading draws it; with the atlas app, lit-ui-router-ssr stands in build VIII. @lit-labs/ssr, @lit-labs/ssr-client and hono are plates no model stands on at the cabinet's tree — @lit-labs/ssr-client and hono optional and pinned by no consumer there, @lit-labs/ssr peered only by a part no consumer there carries; with the atlas app, build VIII stands on @lit-labs/ssr and @lit-labs/ssr-client, and hono stays spare. They stand in the dashed register under the box, each line reading the cabinet's tree first and the atlas app after, and the spare plates are drawn there rather than on the ground. Build II's manifests differ in what they pin and what they take as a peer, build III's manifests differ in what they pin and what they take as a peer and build IV's manifests differ in what they pin and what they take as a peer; the schedule says which. Every number on this sheet is read from www/atlas.lit-ui-router.dev/data/census-builds.json, census-peers.json, census-bricks.json and census-couplings.json — counted at origin/main @ eb1162da (2026-10-18); the second reading adds www/atlas.lit-ui-router.dev/app at www/atlas @ 2011c945.

KEY

a family brick — sheet 2’s mould: 1 stud per 150 sloc, a course per 3 files
a runtime — baseplates of 8×6, 1 stud per 150 sloc of one shipped build, stacked when they overflow, the remainder on top at its own size; three plates are one brick course, 144 studs; under 48 studs, one plate at its own size
a build — the family parts one consumer installs together, counted from the sample apps, the docs site and the examples at the cabinet’s sha, and from the atlas app’s own manifest on its branch
an accent-edged panel — the atlas app’s build, on its own branch, its ground edged in accent
a ringed stud — one per brick coupled to a plate, under a seated or straddling brick or under a cord's round plate, on the plate and on the brick's top; the plate lettered A–I beside it
drop line — the brick seats on that stud; a brick straddling a seam drops onto both plates
a string with end studs — two 1×1 round plates joined by a cord, a coupling a footprint cannot make, drawn to fit and not massed: one plate seated on a ringed stud of the brick’s top, the other on a ringed stud of the runtime’s plate, the cord leaving each one’s own stud; a cap seats on a stud or hangs from a brick’s underside
a dashed plate — an optional peer
not in any build — a part no consumer carries, or a plate no model stands on
ground — the registry, not massed
PROJECTTHE ALTITUDE ATLAS
SHEET TITLEthe ALTERNATE BUILDS
SCALEONE BOX, EIGHT BUILDS
FORMBUILD INSTRUCTIONS
CLIENTlit-ui-router · simshanith
DATE / REV2026-10-18 · A
DRAWN BYFable (Claude, AI)
SHEET2C OF 14