ALTITUDE · MONOREPO PLATES READ: census-files.json · census-handoff.json · census-plate.json · census-yard.json SEE ALSO 3A 4  isometric

FIT VERDICTthe yard re-massed from sloc × files — gate severity in colour: the smallest blocks stop the line; the task-manager inset reads the same plates as 3A, so the two cannot disagree

THE ALTITUDE ATLAS — DRAWING SETSHEET 3 / 14

the INSTRUMENT YARD

ALTITUDE 3 — 12 publishable packages · 27 tools · 96 turbo task names · one packer, many readers · every mass counted at origin/main @ 3f55e419 (2026-10-31) from www/atlas.lit-ui-router.dev/data/census-yard.json on scc Code lines — 396 authored files and 32,205 sloc across 18 massed structures, with the task-manager inset reading the same two plates sheet 3A draws

TWO TASK MANAGERS, ONE RE-ENTRANT LOOP mise — node-free umbrella · turbo — cached fan-out (remote R2) · neither sits above the other GITHUB ACTIONS 9 workflows mise 65 tasks · 12 declare depends turbo ci = 1251 task nodes AQUA TOOL BELT rumdl · taplo · shellcheck · actionlint · zizmor 56 call sites · 36 distinct tasks 7 tasks shell turbo 7 root scripts shell mise run cache key over tools node never installs mise/aqua provisions them SCALE — footprint side = 1.6 · √sloc (plan area ∝ sloc) · height = 1.5 px per authored file · mass = sloc × files the tarball, the registry and the boundary are diagrammatic, not to scale 1 2 14 3 9 10 20 12 4 13 11 7 15 8 16 5 17 6 18 19 PACKAGES/* — THE MATERIAL 109 authored files · 10,708 sloc twelve published packages enter here THE TARBALL one packer · many readers · never re-packed NPM REGISTRY beyond the boundary a release is immutable and only published-diff still reads it published-diff — the only halt 5 files, 481 sloc docs deploy — gates the site SAMPLE APPS — 84f · 4,502 sloc the second-heaviest mass on the sheet gates nothing at all e2e — cypress · stops the line and drives the apps beside it the return: published-diff reads the LIVE npm tarball — the registry is inside the circuit, not at the end of it packages/ — the conveyor: source in, one tarball out tools/ — the instrument yard 27 packages, mostly measurement apps/ + www/ — proving ground & shopfront

STRUCTURE SCHEDULE — authored source per structure · files (f) · sloc · gate tier

#structurefilesslocgate tiernote
1src — packages/*/src10910,708the line itselftwelve published + two private — the material
2build — @tools/oxc-emit6487the line itselfJS pass + d.ts pass, one emitter
3pack — packPublishTarball12441the line itselfthe one packer (#449), cached
4THE TARBALL——the artifactthe one artifact every check reads
5publish — release-it332,046the line itselfbump · tag · push · publish steps
6npm registry——not massedimmutable once crossed
7tests — vitest harness6380STOPS THE PR LINElit-test-env + happy-dom · 3 real browsers
8compat-guards9312STOPS THE PR LINEthe lit 2 / mobx 6 / analyzer lanes
9dts-backtest9619STOPS THE PR LINE9 files · 619 lines hold the TS 5.0 floor
10check:exports2141STOPS THE PR LINEpublint + attw over the raw pack
#structurefilesslocgate tiernote
11published-diff5481HALTS A PUBLISHvs the LIVE npm tarball · halts publishing
12peer-floor tier-24274gates a later stagegates version bumps, never a PR
13peer-floor tier-12144never gatesreports check runs, never gates
14lint & probe fleet475,313never gatesoxlint · elements · axe · CI gate
15@tools/shared11516never gatesthe library under every instrument
16typedoc plugin2350never gatesbuilds the API pages, gates nothing
17e2e — cypress11826STOPS THE PR LINEdrives the sample apps · stops the PR line
18sample apps844,502the line itselfeffect + mobx + signals + vanilla + routes + shared
19docs deploy watch91,000gates a later stageworkers-builds triggers · gates the deploy
20anti-slop rules353,665never gatesvendored upstream · loaded by every oxlint lane

TOTAL — 18 massed structures · 396 authored files · 32,205 sloc · counted at origin/main @ 3f55e419 (2026-10-31) · gate tier is colour, never height

FIG. 3The monorepo drawn as what it functionally is: a short conveyor that turns source into one tarball, inside a yard of instruments built to measure that tarball. Every structure carries its measured mass — footprint ∝ √sloc, height ∝ authored files — and gate severity is colour rather than height, because the two do not correlate: the blocks that stop the line are among the smallest on the sheet.

GENERAL NOTES

Method — one basis, shared with sheet 4. Every massed structure was counted from this repo's authored source, counted at origin/main @ 3f55e419 (2026-10-31) and read from www/atlas.lit-ui-router.dev/data/census-yard.json: .ts/.tsx/.js/.mjs under each member's source directory, excluding *.d.ts, *.test-d.ts, *.spec.* and *.test.*, specs/, __tests__/ and fixtures. sloc is scc's Code count — string-aware, so the interior of a template literal counts as code rather than as one line. @tools/release hosts several instruments at once, so it is attributed by module prefix — check-published-diff* to structure 11, check-exports* to 10, the pack modules to 3, the release steps to 5 — with every file landing in exactly one structure and none counted twice. 20 structures, 18 of them massed: 396 authored files, 32,205 lines. One member is massed nowhere: @tools/wintercg-globals is a single globals.d.ts, and declaration files are outside this basis. The tarball, the registry and the boundary are diagrammatic.

Mass is volume; volume does not predict authority. Footprint side is 1.6 · √sloc, so plan area tracks lines; height is 1.5 px per authored file, so a block's volume is its sloc × files. The three heaviest masses on the sheet gate nothing: packages/*/src (109 files, 10,708 lines), sample apps (84 files, 4,502 lines), lint & probe fleet (47 files, 5,313 lines). The 5 structures that can stop a pull request total 37 files between them, and one of them — dts-backtest — is a single 619-line run.ts. Encoding severity as height would imply the opposite; the census says a gate's authority has nothing to do with how much code it is.

Severity in colour. Red hatch across cap and flank marks a check that stops the PR line: the vitest harness (7), compat-guards (8), dts-backtest (9), check:exports (10) and Cypress e2e (17). One block is solid red — published-diff (11) — because it is the only structure that halts publishing itself, and it closes the loop by pulling the live npm tarball back for comparison, which makes the registry part of the circuit rather than a destination. Accent hatch marks the gates that fire later rather than on a PR: peer-floor tier-2 (12) gates version bumps, the workers-builds watch (19) gates the docs deploy. Faint, unhatched blocks never gate at all — peer-floor tier-1 reports check runs, the lint & probe fleet is advisory, @tools/shared, the typedoc plugin and the vendored anti-slop rules (20) are libraries. The tiers survive both themes because they differ in hatch as well as hue: solid red, red hatch, accent hatch, no hatch.

One packer, many readers (#449). The dashed trunk leaving the green crate is literal: check:exports (publint + attw), dts-backtest and published-diff all read the same cached packPublishTarball output. No check re-packs, so a drift verdict is always about the artifact that would actually ship. Known failure mode, drawn nowhere but real: a poisoned remote cache entry can replay a stale verdict — --force is the remediation.

Two task managers, one re-entrant loop. The inset at top right is drawn flat, not isometric, because a task manager is not a place — and because the relationship is not the clean layering it sounds like. GitHub Actions enters mise at 56 call sites across 9 workflows (36 distinct tasks); mise itself is almost graphless — 65 tasks with exactly 12 of them declaring depends (16 edges), among them lint_workflows → its four linters and setup → turbo_pin_worktree — because it delegates fan-out rather than modelling it. Seven mise tasks shell turbo, whose ci graph alone expands to 1251 task nodes. Then the loop closes back on itself: seven root package.json scripts shell mise run again, so turbo's //#lint:markdown node literally runs mise run lint_markdown. That return is the whole point — mise/aqua owns the versions of the non-node tools (rumdl, taplo, shellcheck, actionlint, zizmor), and turbo climbs back out to it to get a cache key over tools node never installs. Neither gantry is above the other.

KEY

halts a publish (published-diff alone)
stops the PR line
gates a later stage (bump · release · deploy)
never gates — reporters and libraries
mass — footprint ∝ √sloc, height ∝ files
the artifact (one tarball)
checks reading the cached tarball
the return from the live registry
PROJECTTHE ALTITUDE ATLAS
SHEET TITLEthe INSTRUMENT YARD
SCALETHE MONOREPO
FORMISOMETRIC CITY
CLIENTlit-ui-router · simshanith
DATE / REV2026-10-30 · I
DRAWN BYFable (Claude, AI)
SHEET3 OF 14