THE ALTITUDE ATLAS — DRAWING SETSHEET 8 / 14

the DELIVERED CITY

ALTITUDE 1½ — what npm actually installs for one consumer · sample-app-lit-vanilla · 33 delivered packages, 180,509 lines of code and 43,999 d.ts lines on disk, footprint from files and height from lines — measured at origin/main @ 3f55e419 (2026-10-31), closure of apps/sample-app-lit-vanilla

registry-delivered — 28 packages workspace-linked — built dist/ the consumer 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 the entire application: 11 files, 646 lines delivered for four imports: isEqual · cloneDeep · get · set 22,193 lines across 644 files one lit major stands in this city: lit 3.3.3, lit-html, lit-element and @lit/reactive-element — one copy each, held by scoped overrides SCALE — 1 px of height ≈ 250 lines (sheet 7: ≈ 34) every number on this sheet is read from www/atlas.lit-ui-router.dev/data/census-nm.json — measured at origin/main @ 3f55e419 (2026-10-31), closure of apps/sample-app-lit-vanilla

STRUCTURE SCHEDULE — delivered files · lines of code on disk · d.ts lines

#packagedistrictfileslinesd.ts lines
1lodash-es 4.18.1registry64422,193—
2hono 4.13.14registry38025,1257,718
3@oxc-project/runtime 0.156.0registry2325,198—
4@uirouter/core 6.1.2registry16226,25515,854
5lit-html 3.3.3registry1208,7014,002
6lit 3.3.3registry77436585
7preact 10.4.8registry613,7861,832
8@lit/reactive-element 2.1.2registry584,0842,682
9@uirouter/dsr 1.2.0registry452,053236
10d3-hierarchy 2.0.0registry352,688—
11d3-interpolate 1.4.0registry281,219—
12lit-element 4.2.2registry28471616
13@lit/context 1.1.6registry271,675834
14@uirouter/sticky-states 1.5.1registry181,354186
15marked 4.3.0registry1611,676—
16dompurify 3.4.17registry1239,121888
17d3-color 3.1.0registry81,211—
#packagedistrictfileslinesd.ts lines
18@lit-labs/ssr-dom-shim 1.6.0registry71,178223
19tslib 2.8.1registry61,363499
20@api-viewer/common 1.0.0-pre.10registry623453
21@api-viewer/docs 1.0.0-pre.10registry537949
22@uirouter/visualizer 7.2.1registry36,048241
23lit-dialog 2.0.1registry438292
24@api-viewer/tabs 1.0.0-pre.10registry331653
25custom-elements-manifest 2.1.0registry00767
26@types/marked 4.3.2registry00650
27@types/dompurify 2.4.0registry00135
28@types/trusted-types 2.0.7registry00119
29sample-app-sharedworkspace575,51417
30lit-ui-router 1.19.0workspace503,5973,477
31ui-router-server 0.7.1workspace463,3891,976
32sample-app-routesworkspace11730—
33ui-router-navigation-location-plugin 1.2.0workspace2133215
34sample-app-lit-vanillathe app, src11646—

TOTAL — 33 delivered packages · 180,509 lines of code · 43,999 d.ts lines · measured at origin/main @ 3f55e419 (2026-10-31), closure of apps/sample-app-lit-vanilla

FIG. 8The production dependency closure of one sample app, surveyed on disk: every delivered package as a building — footprint from file count, height from lines — with the consumer’s own 646-line building standing in the city it summoned.

GENERAL NOTES

Method: the production closure of apps/sample-app-lit-vanilla (dependencies plus installed peers — pnpm auto-installs peers, so they are genuinely on disk), resolved through the pnpm store and measured as delivered: lines of .js/.ts/.css/.html per package directory, source maps and prose excluded, .d.ts drawn separately as the hatched annex. Workspace-linked members are measured by their built dist/ — the shape a registry install would deliver. Plenty of prior art measures this differently — bundlephobia and packagephobia weigh tarballs and install bytes, npmgraph draws the dependency graph — but this sheet measures what actually lands on disk, in files and lines, and stages it as a city with the consumer's own building standing in it for scale. Every count on the drawing and in these notes is read at build time from the plate www/atlas.lit-ui-router.dev/data/census-nm.json — measured at origin/main @ 3f55e419 (2026-10-31), closure of apps/sample-app-lit-vanilla — written after installing and building the ref itself, never the working tree. A package the drawing places that the plate does not carry, or a package the plate carries that no district draws, is a build error rather than a stale constant.

The consumer is a doormat in its own city. The app brings 646 lines of its own and receives 180,509 delivered lines of code plus 43,999 of type declarations — 279× its own mass. The router this repo exists to ship, lit-ui-router, delivers 3,597 lines over 50 files: one of the smaller buildings on the skyline it anchors, and 50× smaller than the city it stands in.

Four imports, 22,193 lines. lodash-es is delivered whole — 22,193 lines across 644 files — so the app can call isEqual, cloneDeep, get and set. The bundler tree-shakes almost all of it away, and sheet 9 charts what survives to the wire; the delivered city is the other measure, the one that installs, audits and updates. It is the fourth-tallest building here, behind dompurify, hono and @uirouter/core.

One lit, and a server in a client demo. Scoped pnpm overrides (@api-viewer/docs>lit, @api-viewer/common>lit, lit-dialog>lit → ^3.3.3) hold the demo chrome to one lit major, so lit, lit-html, lit-element and @lit/reactive-element each stand once in this city. The oddest building is hono at 25,125 lines: ui-router-server names it a peer, so peer auto-install delivers a server framework into a client demo.

Note the vertical scale: 1 px ≈ 250 lines against sheet 7's ≈ 34. Drawn at the workspace's own scale, lodash-es alone would stand 653 px tall — the compression is the finding.

KEY

delivered code — height = lines on disk
type declarations (d.ts) annex
lit-ui-router · the consumer
district (how it got here)
PROJECTTHE ALTITUDE ATLAS
SHEET TITLEthe DELIVERED CITY
SCALEONE CONSUMER
FORMDELIVERED CITY
CLIENTlit-ui-router · simshanith
DATE / REV2026-10-30 · F
DRAWN BYFable (Claude, AI)
SHEET8 OF 14