THE ALTITUDE ATLAS — DRAWING SETSHEET 3B / 14

the WATCHED CITY

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

PLATE 3B — THE SAME TWO MACHINES, CITY SIDE plate 3A drew the seams flat; this plate walks through seam B and surveys what turbo actually schedules on every PR source: bare `turbo run ci --dry=json` · eb1162da · 1154/310 SCALE — footprint side = 1.2·√(files the task hashes) · height = 0.45 px per command sloc (floor 3) ONE TIER ONLY — every massed block stops the PR line: sheet-3 red hatch throughout, by construction wall-clock and cache-rate excluded by design — run-confounded; the drawing is static and citable 23 ↦ the harbour 72 ↤ 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 22 23 24 25 26 27 28 29 PHANTOM FLATS — 844 vacant plots (73.1%) no command — hash carriers for script-less packages · punched hole-by-hole on SHEET 12 THE TOWER — @tools/dts-backtest#test 301-sloc run.ts on a 50-file footprint: the tallest command in the city (23) FAN-OUT — typedoc-plugin#build:types (25) unblocks 72 nodes — every docs:api waits on it; only lit-ui-router#build:types reaches wider (72) MAIN-LINE ANNEX — ci:main adds 5 real tasks (1204/315 nodes) · outside this survey, drawn unmassed · accent tier THE ROOT YARD — 14 //# plots seven equal slabs watch the same 1,157 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 — 555 files watched by 20 sloc of command (28): format:check:oxfmt hashes 88 files, lint:oxlint 94 — the examples file set, watched as CI surface the harbour (27): the site's build waits on 23 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 1 repo-checks — 12t · 1,651 files · 539 sloc · the guard house — check-task-inputs.ts (122), the tallest one-file guard 2 //#format:check:root — 1t · 1,157 files · 1 sloc · one oxfmt line · the 1,157-file root glob 3 //#format:check:toml — 1t · 11 files · 19 sloc · mise run + tasks/taplo (17) — plate 3A, seam C 4 //#lint:actionlint — 1t · 22 files · 2 sloc · mise run + config.toml run line 5 //#lint:elements — 1t · 1,157 files · 37 sloc · lint-elements.ts (36) — the custom-element lane 6 //#lint:markdown — 1t · 84 files · 21 sloc · mise run + tasks/rumdl (19) 7 //#lint:package-json — 1t · 1,157 files · 1 sloc · one eslint line watching 1,157 manifests 8 //#lint:root — 1t · 1,157 files · 1 sloc · one oxlint line · the same 1,157-file surface 9 //#lint:shellcheck — 1t · 15 files · 28 sloc · mise run + tasks/shellcheck (26) 10 //#lint:templates — 1t · 1,157 files · 121 sloc · lit-analyzer-ts-guard.ts (36) + lint-templates.ts (84) 11 //#lint:toml — 1t · 11 files · 19 sloc · mise run + tasks/taplo (17) — chain hop ③ 12 //#lint:zizmor — 1t · 22 files · 2 sloc · mise run + config.toml run line 13 //#typecheck:root — 1t · 1,157 files · 1 sloc · one tsc line · the same 1,157-file surface 14 //#lint:complexity — 1t · 1,157 files · 1 sloc · one eslint line · the same 1,157-file surface 15 lit-ui-router — 14t · 987 files · 432 sloc · guards + oxc-emit + bundle-probe bins behind every task 16 lit-ui-router-mobx — 15t · 385 files · 469 sloc · the lit2 and mobx6 guards ride four tasks 17 nav-location-plugin — 10t · 184 files · 318 sloc · the fourth-smallest quarter by watched files, same block shape 18 ui-router-server — 13t · 669 files · 415 sloc · node:test + runtime-globals lanes 19 eslint-plugin — 10t · 404 files · 192 sloc · the fifth quarter — rules, docs and oxlint lanes 20 lit-ui-router-effect — 15t · 385 files · 469 sloc · the sixth quarter — the effect bindings, running every lane 21 lit-ui-router-ssr — 11t · 455 files · 389 sloc · the seventh quarter — the prerender bridge 30 lit-ui-router-signals — 13t · 306 files · 431 sloc · the eighth quarter — the signals bindings 31 ui-router-signals — 10t · 144 files · 318 sloc · the ninth quarter — the framework-agnostic signal mirror 32 ui-router-effect — 12t · 187 files · 356 sloc · the tenth quarter — the framework-agnostic SubscriptionRef 33 @repo/route-snapshot — 5t · 28 files · 5 sloc · the eleventh quarter — private, five one-line lanes, nothing to build 34 ui-router-mobx — 12t · 199 files · 356 sloc · the twelfth quarter — the framework-agnostic MobX store 35 @repo/dev-gate — 5t · 33 files · 5 sloc · the thirteenth quarter — private, the two halves of each package's #dev-gate import 22 @tools/release — 7t · 683 files · 85 sloc · pack-all.ts (21) + check-exports.ts (57) live here 23 @tools/dts-backtest — 3t · 50 files · 304 sloc · run.ts (301) on a 50-file footprint: THE TOWER 24 @tools/shared — 4t · 87 files · 4 sloc · the library under the instruments — all one-liners 25 typedoc-plugin — 6t · 40 files · 119 sloc · oxc-emit both passes — 72 nodes wait on build:types 26 instrument terrace — 76t · 821 files · 76 sloc · 21 small tools × their style/test/typecheck rows 27 www — the harbour — 9t · 833 files · 45 sloc · ten quarters ship docs:api here — its build waits on 23 nodes 28 examples — the plain — 6t · 555 files · 20 sloc · format:check:oxfmt hashes 88, lint:oxlint 94 29 apps (7 sample pkgs) — 29t · 718 files · 29 sloc · 7 packages, every command one line TOTALS — 35 massed structures reconcile all 310 real tasks · 18,068 task-file hashes · 5,630 command sloc · +1 vacant twin lot (//#lint:workflows, phantom) · 844 phantom plots · surveyed at origin/main @ eb1162da (2026-10-18) ROADS — five district arteries drawn, the graph's heaviest degrees: @www/lit-ui-router.dev#build waits on 23 nodes · typedoc-plugin#build:types unblocks 72 · lit-ui-router#build:types 72 · release#check:exports 48; 187 of the graph's 4,706 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 — 234 of 310 blocks are a single script line riding an external binary — which makes the exceptions legible at a glance: a 301-line test tower on a 50-file lot, and a 555-file plain patrolled by 20 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 @ eb1162da (2026-10-18), turbo 2.11.8: 1154 nodes, 310 real, 4,706 edges, 187 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. 234 of 310 real tasks have command mass 1 — one script line handing the work to a pinned binary. The whole city executes 5,630 sloc of repo-written command while watching 18,068 task-file hashes. The skyline is inverted from intuition: @tools/dts-backtest#test, the tallest command in the city, is a 301-line run.ts on a 50-file lot — sheet 3 calls it "one 301-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 555 files (format:check:oxfmt 88 + lint:oxlint 94 alone) under 20 lines of command. The eslint-plugin quarter is nearly flat: eslint-plugin-lit-ui-router brings 10 tasks and 192 sloc, and all but build:js (78), build:types (37) and test:peer-floor (70) are one line apiece.

The root yard repays the walk. All 14 //# plots are drawn individually, and seven of them — format:check:root, lint:elements, lint:package-json, lint:root, lint:templates, typecheck:root and lint:complexity — are equal slabs watching one identical root surface of 1,157 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 seven of its 12 tasks — check:task-inputs, check:graph-edges, check:patches, check:single-version, check:package-coverage, check:knip and check:dedupe — are named in the dependsOn list of the lint umbrella, so a lint run takes them along wherever it starts. Five of the seven are the city's tall one-file guards, 122, 117, 75, 99 and 114 lines of TypeScript apiece; the other two are one script line each — knip hashing 896 files, the widest lot in the block, and pnpm dedupe --check hashing 90. 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, uniformly red. 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 every massed block wears the same red hatch, 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 — 1204/315 nodes when they are included; the 844 phantom plots — 73.1% 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 23 nodes (ten 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 72, @tools/release#check:exports 48 (pack:all and check:exports read every published quarter), and the widest fan-out in the graph is lit-ui-router#build:types at 72. Of the graph's 4,706 edges only 187 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 — stops the PR (all of them do)
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 — 844 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-18 · J
DRAWN BYFable (Claude, AI)
SHEET3B OF 14