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 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
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()/, router.plugin(servicesPlugin), transitionService.onSuccess({}, update), globals.current/ — 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/ 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/ 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 |