the ALTERNATE BUILDS
ALTITUDE 2 — SIBLING PLATE, THE ECOSYSTEM: one box of twelve 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 ten alternate models the repository’s own consumers build from it, and an eleventh 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 @ 3f55e419
THE BOX — 12 BRICKS, 9 PLATES · the bricks at sheet 2’s mould, the plates at the same scale, numbered as the panels’ callouts badge them
| # | part | mould | at the cabinet’s tree | with the atlas app | note |
|---|---|---|---|---|---|
| 1 | lit-ui-router | 2×4 · 9 courses | carried by 18 consumers | carried by 19 with the atlas app | — |
| 2 | navigation-location-plugin | 1×2 · 1 course | carried by 2 consumers | carried by 3 with the atlas app | — |
| 3 | lit-ui-router-mobx | 1×1 · 2 courses | carried by 2 consumers | carried by 2 with the atlas app | — |
| 4 | ui-router-server | 2×4 · 7 courses | carried by 2 consumers | carried by 3 with the atlas app | — |
| 5 | lit-ui-router-effect | 1×2 · 2 courses | carried by 2 consumers | carried by 3 with the atlas app | — |
| 6 | lit-ui-router-ssr | 2×4 · 6 courses | carried by 1 consumer | carried by 2 with the atlas app | — |
| 7 | lit-ui-router-signals | 1×2 · 2 courses | carried by 3 consumers | carried by 3 with the atlas app | — |
| 8 | ui-router-effect | 1×1 · 1 course | carried by 2 consumers | carried by 3 with the atlas app | — |
| 9 | ui-router-signals | 1×1 · 2 courses | carried by 3 consumers | carried by 3 with the atlas app | — |
| 10 | ui-router-mobx | 1×1 · 1 course | carried by 2 consumers | carried by 2 with the atlas app | — |
| 11 | ui-router-registry | 2×2 · 2 courses | carried by 9 consumers | carried by 10 with the atlas app | — |
| # | part | mould | at the cabinet’s tree | with the atlas app | note |
|---|---|---|---|---|---|
| 12 | eslint-plugin-lit-ui-router | 2×4 · 4 courses | carried by 1 consumer | carried by 2 with the atlas app | — |
| A | @lit-labs/ssr | 1 plate · 3×3 · 8 studs | under 1 build | under 2 with the atlas app | — |
| B | @lit-labs/ssr-client | 1 plate · 1×2 · 2 studs | under 1 build | under 2 with the atlas app | an optional peer, drawn dashed |
| C | @uirouter/core | 1 plate · 6×6 · 32 studs | under 10 builds | under 11 with the atlas app | — |
| D | effect | 19 plates · 18 of 8×6 + a 4×4 · 878 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 · 62 studs | under none | under none with the atlas app | an optional peer, pinned by no consumer |
| G | lit | 1 plate · 1×1 · 1 stud | under 9 builds | under 10 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 | — |
BUILD SCHEDULE — ten builds · eleven 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 20 consumers · 21 with the atlas app
| # | build | bricks | plates | couplings | consumers | note |
|---|---|---|---|---|---|---|
| I | VANILLA | 1 lit-ui-router | C @uirouter/core and G lit | straddles brick 1 to G | 6 consumers: helloworld (example), helloworld-buildless (example), hellosolarsystem (example), hellogalaxy (example), design-system-links (example), loading-and-error-views (example) | — |
| II | TYPED SIGNALS | 1 lit-ui-router, 7 lit-ui-router-signals, 9 ui-router-signals and 11 ui-router-registry | 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 | TYPED EFFECT | 1 lit-ui-router, 5 lit-ui-router-effect, 8 ui-router-effect and 11 ui-router-registry | 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 | TYPED MOBX | 1 lit-ui-router, 3 lit-ui-router-mobx, 10 ui-router-mobx and 11 ui-router-registry | 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 | ESLINTED VANILLA | 1 lit-ui-router and 12 eslint-plugin-lit-ui-router | C @uirouter/core, G lit and E eslint | straddles brick 1 to G | 1 consumer: lint-eslint (example) | — |
| VI | SSR SERVER | 1 lit-ui-router, 4 ui-router-server and 6 lit-ui-router-ssr | C @uirouter/core, G lit, A @lit-labs/ssr and B @lit-labs/ssr-client | straddles brick 1 to G · cords hang from brick 6 to A and B | 1 consumer: @www/lit-ui-router.dev (docs site) | — |
| VII | NAV | 1 lit-ui-router and 2 ui-router-navigation-location-plugin | C @uirouter/core and G lit | straddles brick 1 to G | 1 consumer: navigation-api (example) | — |
| VIII | TYPED NAV | 1 lit-ui-router, 2 ui-router-navigation-location-plugin and 11 ui-router-registry | C @uirouter/core and G lit | straddles brick 1 to G | 1 consumer: sample-app-shared (sample app) | — |
| IX | TYPED VANILLA | 1 lit-ui-router and 11 ui-router-registry | C @uirouter/core and G lit | straddles brick 1 to G | 1 consumer: sample-app-lit-vanilla (sample app) | — |
| X | SERVER | 4 ui-router-server | C @uirouter/core | — | 1 consumer: sample-app-routes (sample app) | — |
| XI | THE ATLAS — typed eslinted effect nav ssr server | 1 lit-ui-router, 2 ui-router-navigation-location-plugin, 4 ui-router-server, 5 lit-ui-router-effect, 6 lit-ui-router-ssr, 8 ui-router-effect, 11 ui-router-registry and 12 eslint-plugin-lit-ui-router | 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) | — |
| — | no build | no family part | — | — | 1 consumer: 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
| # | runtime | range | one build | files | sloc | studs | plates | ships | closure | peered by · under |
|---|---|---|---|---|---|---|---|---|---|---|
| A | @lit-labs/ssr 4.1.0 | ^4.1.0 | main | 8 | 1,083 | 8 | 1 plate · 3×3 | 17 files · 1,530 sloc | 20 packages · 28,345 sloc | peered by brick 6 · under build VI · under builds VI and XI with the atlas app |
| B | @lit-labs/ssr-client 1.1.8 · OPTIONAL, drawn dashed | ^1.1.7 | development | 4 | 282 | 2 | 1 plate · 1×2 | 16 files · 576 sloc | 7 packages · 4,564 sloc | peered by brick 6 · under build VI · under builds VI and XI with the atlas app |
| C | @uirouter/core 6.1.2 | ^6.0.8 | module | 80 | 4,776 | 32 | 1 plate · 6×6 | 162 files · 14,601 sloc | 1 package · 4,776 sloc | peered by brick 1, brick 5, brick 3, brick 7, brick 6, brick 8, brick 10, brick 2, brick 11, brick 4 and brick 9 · under builds I, II, III, IV, V, VI, VII, VIII, IX and X · under builds I, II, III, IV, V, VI, VII, VIII, IX, X and XI with the atlas app |
| D | effect 4.1.1 | ^3.22.0 || ^4.0.2 | default | 581 | 131,671 | 878 | 19 plates · 18 of 8×6 + a 4×4 | 581 files · 131,671 sloc | 1 package · 131,671 sloc | peered by brick 5 and brick 8 · under build III · under builds III and XI with the atlas app |
| E | eslint 10.14.0 | ^9.0.0 || ^10.0.0 | default | 380 | 62,666 | 418 | 9 plates · 8 of 8×6 + a 6×6 | 410 files · 64,595 sloc | 75 packages · 99,760 sloc | peered by brick 12 · under build V · under builds V and XI with the atlas app |
| F | hono 4.13.14 · OPTIONAL, drawn dashed | ^4.0.0 | import | 180 | 9,170 | 62 | 2 plates · 1 of 8×6 + a 4×4 | 380 files · 19,007 sloc | 1 package · 9,170 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 | default | 38 | 39 | 1 | 1 plate · 1×1 | 77 files · 118 sloc | 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, VI, VII, VIII and IX · under builds I, II, III, IV, V, VI, VII, VIII, IX and XI with the atlas app |
| H | mobx 7.1.3 | ^6.0.0 || ^7.0.0 | import | 1 | 4,622 | 31 | 1 plate · 6×6 | 9 files · 23,213 sloc | 1 package · 4,622 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 | main | 1 | 520 | 4 | 1 plate · 2×2 | 1 file · 520 sloc | 1 package · 520 sloc | peered by brick 9 · under build II · under build II with the atlas app |
TOTAL — ten builds from 20 consumers · eleven from 21 with the atlas app · twelve of twelve parts carried · twelve with the atlas app · eight of nine plates stood on · eight with the atlas app · counted at origin/main @ 3f55e419 (2026-10-31)
GENERAL NOTES
One box, several models. Sheet 2 draws every family brick in one assembly on @uirouter/. The repository's own consumers — 20 consumers: the sample apps, the docs site and the examples at the cabinet's sha — pin ten 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 eleventh model, build XI, is the atlas's own app: its manifest at www/, read from git archive www/ @ 08a98096, 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/ 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/ is a plate like the others: eleven of the twelve 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, brick 6 in build VI and brick 6 in build XI. 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/) — 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 19 plates · 18 of 8×6 + a 4×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/ 3×3, @lit-labs/ 1×2, @uirouter/ 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/ builds 1,083 lines over a closure of 28,345, @lit-labs/ 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: nine of the ten builds, ten of eleven with the atlas app, and the runtime they run on is in its closure.
What stays in the box. Every part in the box is carried by a consumer at the cabinet’s tree, so a model of that reading draws each one. hono is a plate no model stands on at the cabinet's tree — hono optional and pinned by no consumer there. They stand in the parts schedule below the drawing, each row reading the cabinet's tree first and the atlas app after, and no model draws them. 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/, census-peers.json, census-bricks.json and census-couplings.json — counted at origin/main @ 3f55e419 (2026-10-31); the second reading adds www/ at www/atlas @ 08a98096.
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 | |
| ground — the registry, not massed |