THE ALTITUDE ATLAS — DRAWING SETSHEET 3B / 14

the WATCHED CITY

ALTITUDE 3 · ALTERNATE PLATE B — the PR ci graph as a city: 332 real tasks in 36 massed structures · footprint = watched files (21,118 task-file hashes) · height = command sloc (5,870) · 919 phantom plots · every number imported from www/atlas.lit-ui-router.dev/data/census-mass3b.json, surveyed at origin/main @ 3f55e419 (2026-10-31)

SCALE — footprint side = 1.2·√(files the task hashes) · height = 0.45 px per command sloc (floor 3) wall-clock and cache-rate excluded by design — run-confounded; the drawing is static and citable 27 ↦ the harbour 79 ↤ typedoc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 30 31 32 33 34 35 36 22 23 24 25 26 27 28 29 PHANTOM FLATS — 919 vacant plots (73.5%) no command — hash carriers for script-less packages · punched hole-by-hole on SHEET 12 THE TOWER — @tools/dts-backtest#test 372-sloc run.ts on a 111-file footprint: the tallest command in the city (23) FAN-OUT — typedoc-plugin#build:types (25) unblocks 79 nodes — every docs:api waits on it; only lit-ui-router#build:types reaches wider (89) MAIN-LINE ANNEX — ci:main adds 5 real tasks (1305/337 nodes) · outside this survey, drawn unmassed · accent tier THE ROOT YARD — 14 //# plots seven equal slabs watch the same 1,350 root files (2·5·7·8·10·13·14) the guard house (1) is a package ①② mise run ci → turbo run ci enter here — hop ③ lands on //#lint:toml (11), then leaves: ④⑤⑥ run back inside mise via the cache gasket (PLATE 3A) VACANT TWIN LOT — //#lint:workflows, the dependsOn umbrella (plate 3A’s twin): a plot with no building, even here THE EXAMPLES PLAIN — 592 files watched by 21 sloc of command (28): format:check:oxfmt hashes 94 files, lint:oxlint 101 — the examples file set, watched as CI surface the harbour (27): the site's build waits on 27 nodes — where the city drains

STRUCTURE SCHEDULE — tasks (t) · watched files (per-task inputs, summed) · command sloc · every mass cited in data/census-mass3b.json

#structuretaskswatched filescommand slocnote
1repo-checks121,850531the guard house — check-task-inputs.ts (122), the tallest one-file guard
2//#format:check:root11,3501one oxfmt line · the 1,350-file root glob
3//#format:check:toml11119mise run + tasks/taplo (17) — plate 3A, seam C
4//#lint:actionlint1222mise run + config.toml run line
5//#lint:css11,3501one stylelint line · the same 1,350-file surface
6//#lint:markdown19021mise run + tasks/rumdl (19)
7//#lint:package-json11,3501one eslint line watching 1,350 manifests
8//#lint:root11,3501one oxlint line · the same 1,350-file surface
9//#lint:shellcheck11928mise run + tasks/shellcheck (26)
10//#lint:templates11,350121lit-analyzer-ts-guard.ts (36) + lint-templates.ts (84)
11//#lint:toml11119mise run + tasks/taplo (17) — chain hop ③
12//#lint:zizmor1222mise run + config.toml run line
13//#typecheck:root11,3501one tsc line · the same 1,350-file surface
14//#lint:complexity11,3501one eslint line · the same 1,350-file surface
15lit-ui-router141,072439guards + oxc-emit + bundle-probe bins behind every task
16lit-ui-router-mobx15416476the lit2 and mobx6 guards ride four tasks
17nav-location-plugin10185325the fourth-smallest quarter by watched files, same block shape
18ui-router-server13800422node:test + runtime-globals lanes
#structuretaskswatched filescommand slocnote
19eslint-plugin10405199the fifth quarter — rules, docs and oxlint lanes
20lit-ui-router-effect15416476the sixth quarter — the effect bindings, running every lane
21lit-ui-router-ssr11632396the seventh quarter — the prerender bridge
30lit-ui-router-signals13333438the eighth quarter — the signals bindings
31ui-router-signals10155325the ninth quarter — the framework-agnostic signal mirror
32ui-router-effect12200363the tenth quarter — the framework-agnostic SubscriptionRef
33@repo/route-snapshot5295the eleventh quarter — private, five one-line lanes, nothing to build
34ui-router-mobx12212363the twelfth quarter — the framework-agnostic MobX store
35@repo/dev-gate5345the thirteenth quarter — private, the two halves of each package's #dev-gate import
36ui-router-registry7193120the fourteenth quarter — types only, no test lane
22@tools/release769485pack-all.ts (21) + check-exports.ts (57) live here
23@tools/dts-backtest3111375run.ts (372) on a 111-file footprint: THE TOWER
24@tools/shared4964the library under the instruments — all one-liners
25typedoc-plugin641119oxc-emit both passes — 79 nodes wait on build:types
26instrument terrace818678122 small tools × their style/test/typecheck rows
27www — the harbour191,38255eleven quarters ship docs:api here — its build waits on 27 nodes
28examples — the plain659221format:check:oxfmt hashes 94, lint:oxlint 101
29apps (7 sample pkgs)29778297 packages, every command one line

TOTALS — 36 massed structures reconcile all 332 real tasks · 21,118 task-file hashes · 5,870 command sloc · +1 vacant twin lot (//#lint:workflows, phantom) · 919 phantom plots · surveyed at origin/main @ 3f55e419 (2026-10-31) · ROADS — five district arteries drawn, the graph's heaviest degrees: @www/lit-ui-router.dev#build waits on 27 nodes · typedoc-plugin#build:types unblocks 79 · lit-ui-router#build:types 89 · release#check:exports 52; 283 of the graph's 5,250 edges join two real tasks, the rest are local streets itemised in the dry-run JSON

FIG. 3BThe pull-request graph that plate 3A traced as plumbing, surveyed here as ground: every real task massed by what it watches (footprint) and what it actually executes (height). The survey’s verdict is flatness — 255 of 332 blocks are a single script line riding an external binary — which makes the exceptions legible at a glance: a 372-line test tower on a 111-file lot, and a 592-file plain patrolled by 21 lines of command.

GENERAL NOTES

Method — the graph, imported. Every mass and footprint on this plate is read from www/atlas.lit-ui-router.dev/data/census-mass3b.json, the checked-in snapshot census-mass3b.mjs writes from a bare turbo run ci --dry=json on an installed archive of the ref — surveyed at origin/main @ 3f55e419 (2026-10-31), turbo 2.11.10: 1251 nodes, 332 real, 5,250 edges, 283 real→real. Nothing below is hand-pasted; a structure whose tasks have left the plate throws at build time rather than drawing a stale number, and the schedule totals are the plate's own sums. Footprint is the per-task inputs map — the files whose hashes decide that task's cache key — at 1.2·√files per side. Height is command mass: the package.json script line plus the repo script or bin file it executes, sloc-counted by census-mass3b.mjs on scc 4.0.0's Code basis (guards, emitters and mise task files each cited in the schedule; external binaries like tsc and oxlint contribute only their one line, because that is all this repo wrote). Wall-clock and cache-hit rates are excluded as geometry by design: they are properties of runs, not of the graph.

The city is flat, and that is the finding. 255 of 332 real tasks have command mass 1 — one script line handing the work to a pinned binary. The whole city executes 5,870 sloc of repo-written command while watching 21,118 task-file hashes. The skyline is inverted from intuition: @tools/dts-backtest#test, the tallest command in the city, is a 372-line run.ts on a 111-file lot — sheet 3 calls it "one 372-line run.ts holds the TS 5.0 floor", and the graph survey agrees to the line — while the largest footprint, the examples plain, watches 592 files (format:check:oxfmt 94 + lint:oxlint 101 alone) under 21 lines of command. The eslint-plugin quarter is nearly flat: eslint-plugin-lit-ui-router brings 10 tasks and 199 sloc, and all but build:js (78), build:types (37) and test:peer-floor (77) are one line apiece.

The root yard repays the walk. All 14 //# plots are drawn individually, and seven of them — format:check:root, lint:css, lint:package-json, lint:root, lint:templates, typecheck:root and lint:complexity — are equal slabs watching one identical root surface of 1,350 files. Seven tasks, one surface, one number: it is the plate's cleanest finding. The guards that patrol that surface are not root tasks: @tools/repo-checks is a package, drawn whole as the guard house (1) standing apart, south-west of the yard, and eight of its 12 tasks — check:task-inputs, check:graph-edges, check:patches, check:single-version, check:package-coverage, check:knip, check:dedupe and check:shared-source — are named in the dependsOn list of the lint umbrella, so a lint run takes them along wherever it starts. Five of the eight are the city's tall one-file guards, 122, 117, 75, 91 and 114 lines of TypeScript apiece; the other three are one script line each — knip hashing 1,050 files, the widest lot in the block, pnpm dedupe --check hashing 96, and check:shared-source hashing 35. The taplo pad (11) is where plate 3A's six-hop chain touches ground: hops ①–② arrive from mise run ci, hop ③ is this block, and ④–⑥ leave immediately to run back inside mise through the cache gasket. And one lot in the yard is vacant on purpose — //#lint:workflows, an umbrella with no script of its own, has no command even here.

One tier, stated in the key. Sheet 3's severity vocabulary survives, but at this altitude it degenerates truthfully: every real node in the ci graph stops the PR when it fails, so the tier is a constant: the blocks stand in ink, the key states the tier, and the drawing spends its information elsewhere. The 5 ci:main-only tasks (test:engines ×3, check:pack, test:matrix) sit outside this survey on an unmassed accent annex — 1305/337 nodes when they are included; the 919 phantom plots — 73.5% of the graph, transit and ^build hash carriers and the script-less lint, typecheck and format:check umbrellas — are the vacant field behind the city, inventoried hole-by-hole on sheet 12.

Roads and reach. Five arteries are drawn, one per district pair, and the plate labels them with degree rather than with an edge tally it cannot cite: @www/lit-ui-router.dev#build waits on 27 nodes (eleven quarters ship docs:api there, plus worker types and app fixtures — it is the city's sink), @tools/typedoc-plugin-lit-ui-router#build:types unblocks 79, @tools/release#check:exports 52 (pack:all and check:exports read every published quarter), and the widest fan-out in the graph is lit-ui-router#build:types at 89. Of the graph's 5,250 edges only 283 join two real tasks; the rest hang off phantom transit nodes, which is why the roads are drawn as districts and not as a wire count.

KEY

massed task block, in ink — every one stops the PR line, one tier
height = command sloc — script line + the file behind it
footprint = watched files — the task’s hashed inputs
ci:main annex — gates main, not the PR; unmassed
vacant plot — phantom node, runs nothing
the phantom flats — 919 plots (see sheet 12)
artery — real dependsOn edges, count labelled
the deepest chain passing through (plate 3A, hops ②③)
PROJECTTHE ALTITUDE ATLAS
SHEET TITLEthe WATCHED CITY
SCALETHE CI TASK GRAPH
FORMISOMETRIC GRAPH CITY
CLIENTlit-ui-router · simshanith
DATE / REV2026-10-30 · M
DRAWN BYFable (Claude, AI)
SHEET3B OF 14