ALTITUDE · COMPANIONS PLATES READ: census-bricks.json · census-couplings.json SEE ALSO 2 4 

FIT VERDICTalternate plate — the same joints at reading size: eight companion-to-companion joints from four companions, four of them two-armed, and ssr's arm bridges the flagship and the server across the no-DOM line

THE ALTITUDE ATLAS — DRAWING SETSHEET 2A / 14

the COUPLING PLAN

ALTITUDE 2 — ALTERNATE PLATE: the ten companions sheet 2 schedules, laid out for reading — core central as a socket wall, companions at its right, the server below the no-DOM line — with every coupling drawn disengaged and lettered to its API call · rows read census-bricks.json @ eb1162da

SCALE — front-face area ≈ 35 px² per sloc (census-bricks.json @ eb1162da) · the two smallest companions (both 1×1) are held to a legible minimum · depth is constant and carries no data THE COUPLINGS ARE THE SUBJECT — every plug drawn just short of seated · sheet 2 shows this same assembly exploded BROWSER URL / HISTORY whoever holds the LOCATION SEAT speaks to it DOM the rendered <ui-view> tree @uirouter/core 6.1.2 — THE SOCKET WALL 80f · 5,272 sloc — peered by all, replaced by none B stateRegistry.decorator(‘views’, litViewsBuilder) — the render graft the views builder — the whole Lit graft D urlService.listen() · .sync() the client router starts here brick 1 starts & syncs the client A · router.plugin( ) — THE RAIL one method, any number of seats free seats queue here: visualizer · sticky-states · dsr · rx (sheet 4) router.plugin(servicesPlugin) seat 1 of rail A THE LOCATION SEAT — one per router: the Navigation API swaps core’s OUT exactly ONE location plugin per router pushStateLocation — swapped OUT C transitionService.onSuccess({}, update) one hook per router memoised by RouterStore.for() E globals.current · .params observed — never written mirrored, never written 1 lit-ui-router 1.16.5 22f · 2,860 sloc class UIRouterLit extends UIRouter — moulded onto the wall, not snapped PLUGS B · D · A(seat 1) its own stud ↓ 2 ui-router-navigation- location-plugin 1.1.2 2f · 208 sloc · core only — it has never heard of Lit PLUG THE LOCATION SEAT 3 lit-ui-router-mobx 1.2.0 · 5f · 145 sloc PLUGS blocks 1 · 10 no hook of its own peers block 10 ^0.1.0 seekRouter(host) the ui-router-context event the seat under block 1 no DOM below this line 4 ui-router-server 0.4.0 15f · 1,670 sloc adapters: connect · fetch · hono · vite tiers: ‘matcher’ (dep-free) · ‘simulate’ REQUEST GET /people/32 DECISION 302 · render · pass NO COUPLING — core is an OPTIONAL peer for the server the default ‘matcher’ tier is dependency-free and never loads the wall ‘simulate’ lazy-imports walls of its own — a prewarmed pool per mount, its config replayed peerDependenciesMeta: { ‘@uirouter/core’: { optional: true } } — the tie is drawn only to be crossed out peers ui-router-server ^0.2.0 || ^0.3.0 || ^0.4.0 peers lit-ui-router ^1.16.1 the bridge crosses the line 6 lit-ui-router-ssr 0.4.0 13f · 1,127 sloc PLUGS BOTH — the flagship and the server the one part that reaches across the no-DOM line peers lit-ui-router ^1.15.0 5 lit-ui-router-effect 0.4.1 · 4f · 281 sloc PLUGS blocks 1 · 8 no hook of its own peers block 8 ^0.1.0 8 ui-router-effect 0.1.2 · 2f · 21 sloc TAPS C · E routeRef( ) · snapshotRoute( ) peers lit-ui-router ^1.15.0 · seekRouter( ) 7 lit-ui-router-signals 0.1.1 · 4f · 171 sloc PLUGS blocks 1 · 9 no hook of its own peers block 9 ^0.1.0 9 ui-router-signals 0.1.1 · 3f · 95 sloc TAPS C · E RouterSignals.for( ) 10 ui-router-mobx 0.1.1 · 2f · 68 sloc PLUGS C · E RouterStore.for( ) taps C · E — as block 10 does
FIG. 2AThe brick assembly, uncoupled and brought down to one elevation: core as a socket wall, companions as shallow blocks drawn just short of seated, and each of the six connection points on the wall — five published studs and one keyed red seat — large enough to letter its API call on the joint itself. Eight more joints are companion-to-companion, and one of those spans both halves of the plate.

GENERAL NOTES

This plate is the legibility companion to sheet 2. The exploded assembly (sheet 2, THE BRICK ASSEMBLY) shows the whole stack and where every brick falls; this plate isolates the couplings and draws each one at reading size. The arrangement answers to reading rather than to assembly — core central, companions at its right, the server in a request lane below the no-DOM line — and the packages are shallow solids, so the recovered space goes entirely to the joints.

Every joint is drawn disengaged. A seated plug hides both mating faces, so nothing here is seated: each stud on the wall stops 18px short of its plug’s mouth, the dashed centreline is the engagement, and the call that makes the coupling — stateRegistry.decorator('views', litViewsBuilder), urlService.listen()/.sync(), router.plugin(servicesPlugin), transitionService.onSuccess({}, update), globals.current/.params — is lettered on the connection itself, not in a schedule at the edge of the sheet.

One connection point is a seat, not a stud, and it is drawn as a keyed recess. A router holds exactly one location plugin, so ui-router-navigation-location-plugin does not add to the wall — it swaps: its keyed red plug approaches the LOCATION SEAT while a dashed ghost plug, core’s own pushStateLocation, leaves it. The rail above behaves the opposite way: router.plugin() is one method with any number of seats, which is where visualizer, sticky-states, dsr and rx would queue (sheet 4).

The seat under the flagship gets its own axis. lit-ui-router-mobx takes it: its upward socket waits under a stud on lit-ui-router’s underside — seekRouter(host), the bubbling ui-router-context event it falls back to when no context-request provider answers — and it holds no hook of its own: it takes RouterStore.for() from ui-router-mobx ^0.1.0 (block 10) through a stud on that block's face, and reacts to the store, never a write.

Eight joints never touch the wall, and one of them spans the sheet. They come from four companions, and four of those reach two blocks. lit-ui-router-mobx reaches two: the seat under block 1, ^1.15.0, and a stud on block 10's face, ^0.1.0. The other three leave studs on block 1's right face as nested L's, the highest arm turning down farthest out, so no arm crosses another. lit-ui-router-ssr (block 6, 13 files, 1,127 sloc) takes the highest: it peers lit-ui-router ^1.16.1 and ui-router-server ^0.2.0 || ^0.3.0 || ^0.4.0, so its arm runs down the right edge of the plate, crosses the no-DOM line, and meets a second stud on block 4's face below it. Nothing else here crosses; a package that prerenders Lit for a server router is exactly the thing that would. lit-ui-router-effect (block 5, 4 files, 281 sloc) takes the middle stud, ^1.15.0, and plugs a stud on top of ui-router-effect ^0.1.0, whose routeRef() and snapshotRoute() it re-exports and binds to a Lit host. lit-ui-router-signals (block 7, 4 files, 171 sloc) takes the lowest, ^1.15.0, and plugs a stud on top of ui-router-signals ^0.1.0, whose RouterSignals.for() and watchSelection() it binds to a Lit host. Each binding stands over the block it plugs and holds no hook of its own.

Three blocks tap the wall and plug no companion. ui-router-effect (block 8, 21 sloc), ui-router-signals (block 9, 95 sloc) and ui-router-mobx (block 10, 68 sloc) peer @uirouter/core and nothing in this repo: each holds one onSuccess hook on stud C and reads globals on stud E, into an Effect SubscriptionRef, a Signal.State or MobX observables. Block 10 holds the C and E plugs, and a dashed tap runs from blocks 8 and 9 back to its E plug, because those are the studs block 10 plugs: one stud, a hook per consumer. Each carries a stud for its Lit binding — blocks 8 and 9 on the top face, block 10 on its right face, beside block 3 — and the binding plugs it. Sheet 2 seats all three on the plate; this plan seats nothing, so it draws their joints.

The missing coupling is drawn only to be crossed out. ui-router-server takes no stud: @uirouter/core is an optional peer (peerDependenciesMeta), its default 'matcher' tier is dependency-free, and its 'simulate' tier lazily imports a wall of its own. Blocks are sized roughly by mass — front-face area ≈ 35 px² per sloc, from census-bricks.json counted at origin/main @ eb1162da, which puts lit-ui-router at 2,860 sloc — with the two smallest companions (both 1×1) clamped up to a legible minimum, because at true scale they would be postage stamps, and their smallness is already sheet 2’s finding.

KEY

a published stud on the wall — core’s extension surface, lettered A–E
a companion’s plug, drawn just short of seated — both mating faces read
the LOCATION SEAT — keyed, one per router: the plug swaps core’s own out
the seat under block 1 — seekRouter( ), the one stud on a block’s underside
a tap — a block that takes a stud another block’s plug is drawn on
no coupling — the server’s core peer is optional; it never plugs this wall
context, not massed — browser, DOM, the request lane
PROJECTTHE ALTITUDE ATLAS
SHEET TITLEthe COUPLING PLAN
SCALETEN PACKAGES
FORMCOUPLING PLAN
CLIENTlit-ui-router · simshanith
DATE / REV2026-10-18 · H
DRAWN BYFable (Claude, AI)
SHEET2A OF 14