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 @ 3f55e419
THE MOULD
| Code | Variable | Value | Unit |
|---|---|---|---|
| P1 | pitch — stud centre to stud centre | 40 | plan units |
| C1 | course — one brick high | 24 | plan units |
| P2 | plate — one baseplate high | 12 | plan units |
| S1 | stud height | 7 | plan units |
| R1 | stud radius | 12 | plan units |
| N1 | stud segments — the round as the model sweeps it | 24 | sides |
| K1 | cord cap height | 8 | plan units |
| K2 | cord cap radius | 19 | plan units |
| W1 | 2×2 brick side = 2·P1 | 80 | plan units |
| E1 | edge to stud centre = P1 ÷ 2 | 20 | plan units |
| D1 | stud diameter = 2·R1 | 24 | plan units |
| H1 | stud top above the foot = C1 + S1 | 31 | plan units |
| K3 | cap top above its seat = K1 + S1 | 15 | plan units |
| I1 | iso stud ellipse, half-width = R1·√2·cos 30° | 14.7 | plan units |
| I2 | iso stud ellipse, half-height = R1·√2·sin 30° | 8.49 | plan units |
15 codes · read from generator/brick-glb.mjs and generator/connector-iso.mjs
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.2.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.16.0, and a stud on block 10's face, ^0.2.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, 18 files, 1,485 sloc) takes the highest: it peers lit-ui-router ^1.19.0 and ui-router-server ^0.7.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, 285 sloc) takes the middle stud, ^1.16.0, and plugs a stud on top of ui-router-effect ^0.2.0, whose routeRef() and snapshotRoute() it re-exports and binds to a Lit host. lit-ui-router-signals (block 7, 4 files, 170 sloc) takes the lowest, ^1.16.0, and plugs a stud on top of ui-router-signals ^0.2.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, 30 sloc), ui-router-signals (block 9, 104 sloc) and ui-router-mobx (block 10, 117 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 @ 3f55e419, which puts lit-ui-router at 3,262 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.
The mould. Every brick on sheets 2, 2C, 2E and 2F, in the models in the round and in the panel under this plan is cast from six numbers — P1 pitch, C1 course, P2 plate, S1 stud height, R1 stud radius and N1 segments — which live once, as exports of generator/; the cord cap adds two, K1 and K2, in generator/. The panel draws one 2×2 brick from them at 2:1 in third-angle projection, the top over the front and the right beside it, with section A–A cut through a row of studs and the cap on a stud of its own. THE MOULD under the plate reads the same identifiers the drawing does, its derived rows written as formulas, and the sheet throws when a scheduled value and the kit that draws the bricks disagree. The panel follows dimensional-drawing by enesozturk (MIT), after Apple's accessory dimensional drawings, its physical-product branch: third-angle views, a hatched section, codes on every dimension.
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 | |
| the cut solid — section A–A through a row of studs, brick and studs one casting | |
| a dimension — lettered by its code, the code a row in THE MOULD | |
| the cutting plane A–A, seen in the direction of its arrows |