ALTITUDE · WORKSPACE × TIME PLATES READ: census-city.json · census-weather.json SEE ALSO 7 7B A1 

FIT VERDICT93% of the city is summer stone — and the port’s original masonry, 26 files from 2025-07-21, carries the hottest edges

THE ALTITUDE ATLAS — DRAWING SETSHEET 13 / 14

the WEATHERING MAP

ALTITUDE t — the same city as sheet 7, surveyed in time · 627 files dated from the whole history · three construction seasons, 10 silent months · counted at origin/main @ eb1162da

THE WEATHERING MAP — WHEN EVERY WALL WAS LAID, AND HOW OFTEN IT IS TOUCHED same city, same footprints as sheet 7 · fills date the stone · edges and ticks carry the churn DATING — first-commit and last-touch per file from one pass over the history behind the measured ref, renames followed footprints reused from sheet 7's plate as pure geometry (side = 1.6·√sloc) · TODAY = 2026-10-18 · counted at origin/main @ eb1162da AGE IS FILL, CHURN IS EDGE — the two disagree: the oldest stone carries the hottest edges 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 READING THE WEATHER AGE — masonry courses, oldest at the base SEASON I · THE PORT · 2025-07 · 26f SEASON II · WINTER · 2026-01 · 15f SEASON III · SUMMER · 07-04 on · 586f CHURN — ticks: one per touch per file HOT · ≥6/file · red edge · 14 blocks MID · 2–5 · the working stock COLD · <2 · touched once, left THE GRADIENT THE MAP ARGUES mean touches per file, by birth season: I ×15.4 · II ×11.1 · III ×3.9 the older the wall, the more it is chiselled lit-ui-router — THE ORIGINAL MASONRY 7 of 22 src walls laid 2025-07-21, the first day — mean ×19.9 touches each, and still under the chisel: ui-sref.ts ×29, last touched 2026-10-12 www/lit-ui-router.dev/.vitepress/config.ts ×48 the most-weathered wall in the city — 453 days old, repainted 48 times, idle 3d examples/ — THE OLDEST UNTOUCHED STONE two vite configs sealed 291 days, both winter-built @tools/typedoc-plugin — THE YARD’S ONE WINTER WALL index.ts laid 2026-01-09, still under the chisel — ×14, idle 9d @tools/release — 78 walls, every one summer-built the yard’s largest building is 105 days old navigation-location-plugin — ×10.5/f its January index.ts chiselled 19 times; one September wall beside it, touched 2× packages/ — THE PRODUCT the only district with stone from all three seasons apps/ — THE PROVING GROUND port-born shell, summer-rebuilt interior www/ + examples/ — THE SHOPFRONT tools/ — THE INSTRUMENT YARD zero touches before 2026 · all but the typedoc plugin summer-built THE FOUR SEASONS — activity by month · a bar is source-file touches in that district; the top row is all four together 10 of 16 months are silent — the city is built in campaigns, not tended daily ALL DISTRICTS 69 96 517 174 704 1294 packages/ 20 36 129 48 291 440 apps/ 39 29 173 46 78 216 www+examples 10 29 40 19 61 82 tools/ 2 175 61 274 556 '25-07'25-08'25-09'25-10'25-11'25-12'26-01'26-02'26-03'26-04'26-05'26-06'26-07'26-08'26-09'26-10 THE PORT WINTER WORKS THE SUMMER STRUCTURE SCHEDULE — weathering per member · files · first-commit date · files born per season I/II/III · touches (per file) · median days since last touch 1 lit-ui-router — 52f · 2025-07-21 · 8/5/39 · ×377 (7.3/f) · idle 9d · ui-sref.ts×29 2 ui-router-server — 37f · 2026-07-14 · 0/0/37 · ×154 (4.2/f) · idle 4d · index.ts×16 3 lit-ui-router-mobx — 9f · 2026-07-04 · 0/0/9 · ×58 (6.4/f) · idle 4d · router-reaction-controller.ts×12 4 navigation-location-plugin — 9f · 2026-01-11 · 0/2/7 · ×49 (5.4/f) · idle 9d · index.ts×19 5 sample-app-shared — 49f · 2025-07-21 · 8/0/41 · ×300 (6.1/f) · idle 9d · router.config.ts×23 6 sample-app-lit-vanilla — 8f · 2025-07-21 · 6/0/2 · ×65 (8.1/f) · idle 9d · app/mymessages/Compose.ts×16 7 sample-app-lit-mobx — 8f · 2026-07-04 · 0/0/8 · ×48 (6.0/f) · idle 9d · app/mymessages/Compose.ts×12 8 sample-app-routes — 6f · 2026-07-14 · 0/0/6 · ×23 (3.8/f) · idle 3d · test/routes.test.ts×8 9 sample-app-lit-e2e — 21f · 2025-07-21 · 2/0/19 · ×100 (4.8/f) · idle 5d · scripts/run-e2e.ts×13 10 docs — 13f · 2025-07-23 · 2/1/10 · ×132 (10.2/f) · idle 6d · .vitepress/config.ts×48 11 examples — 32f · 2026-01-01 · 0/6/26 · ×109 (3.4/f) · idle 9d · 2 SEALED · hellogalaxy/src/main.ts×13 12 @tools/release — 78f · 2026-07-06 · 0/0/78 · ×350 (4.5/f) · idle 9d · checks/check-pack.ts×15 13 @tools/typedoc-plugin — 2f · 2026-01-09 · 0/1/1 · ×22 (11.0/f) · idle 9d · index.ts×14 14 @tools/dts-backtest — 1f · 2026-07-06 · 0/0/1 · ×16 (16.0/f) · idle 4d · run.ts×16 15 @tools/build_and_test — 22f · 2026-07-07 · 0/0/22 · ×117 (5.3/f) · idle 4d · run-summary.core.ts×21 16 @tools/shared — 17f · 2026-07-06 · 0/0/17 · ×60 (3.5/f) · idle 7d · workspace.ts×13 17 @tools/workers-builds — 10f · 2026-07-11 · 0/0/10 · ×47 (4.7/f) · idle 7d · workers-builds-triggers.test.ts×13 18 @tools/bundle-probe — 9f · 2026-07-18 · 0/0/9 · ×45 (5.0/f) · idle 5d · entries.ts×11 19 @tools/compat-guards — 14f · 2026-08-09 · 0/0/14 · ×44 (3.1/f) · idle 3d · catalog.ts×5 20 @tools/oxc-emit — 9f · 2026-07-17 · 0/0/9 · ×42 (4.7/f) · idle 3d · emit-js.ts×9 21 @tools/release-config — 3f · 2026-07-31 · 0/0/3 · ×8 (2.7/f) · idle 2d · release-it.js×5 22 @tools/lit-template-lint — 4f · 2026-08-11 · 0/0/4 · ×12 (3.0/f) · idle 9d · lint-templates.ts×5 23 @tools/lit-test-env — 6f · 2026-08-09 · 0/0/6 · ×18 (3.0/f) · idle 9d · dom.ts×5 24 @tools/vue-check — 1f · 2026-07-09 · 0/0/1 · ×6 (6.0/f) · idle 7d · bin.ts×6 25 @tools/lcov-rebase — 3f · 2026-07-29 · 0/0/3 · ×7 (2.3/f) · idle 9d · rebase-lcov.ts×4 26 @tools/happy-dom — 3f · 2026-07-19 · 0/0/3 · ×6 (2.0/f) · idle 30d · specs/happy-dom-conformance.spec.ts×4 27 @tools/wintercg-globals — no dated source (ambient types only) 28 @tools/lint-elements — 1f · 2026-08-31 · 0/0/1 · ×7 (7.0/f) · idle 5d · lint-elements.ts×7 30 @tools/eslint-ts-parser — 1f · 2026-08-16 · 0/0/1 · ×1 (1.0/f) · idle 64d · index.ts×1 31 eslint-plugin-lit-ui-router — 25f · 2026-09-01 · 0/0/25 · ×114 (4.6/f) · idle 9d · anchor-is-valid.ts×13 32 @tools/embed-heights — 4f · 2026-09-04 · 0/0/4 · ×16 (4.0/f) · idle 9d · check-embed-heights.ts×8 33 @tools/bootstrap — 6f · 2026-07-14 · 0/0/6 · ×17 (2.8/f) · idle 9d · manifest.ts×5 34 @tools/eslint — 8f · 2026-07-19 · 0/0/8 · ×29 (3.6/f) · idle 9d · oxlint-directives.ts×7 35 @tools/repo-checks — 26f · 2026-07-19 · 0/0/26 · ×127 (4.9/f) · idle 9d · check-graph-edges.ts×13 36 sample-app-lit-effect — 9f · 2026-09-11 · 0/0/9 · ×31 (3.4/f) · idle 9d · app/mymessages/Compose.ts×8 37 lit-ui-router-effect — 9f · 2026-09-12 · 0/0/9 · ×52 (5.8/f) · idle 7d · ref-controller.ts×11 38 lit-ui-router-ssr — 25f · 2026-09-14 · 0/0/25 · ×133 (5.3/f) · idle 4d · prerender.ts×15 39 @tools/crap — 3f · 2026-10-01 · 0/0/3 · ×9 (3.0/f) · idle 9d · crap-report.ts×5 40 @tools/oxlint-anti-slop — 35f · 2026-10-10 · 0/0/35 · ×35 (1.0/f) · idle 9d · effect/index.ts×1 41 lit-ui-router-signals — 8f · 2026-10-12 · 0/0/8 · ×8 (1.0/f) · idle 7d · dev-warn.ts×1 42 ui-router-signals — 5f · 2026-10-12 · 0/0/5 · ×5 (1.0/f) · idle 7d · index.ts×1 43 ui-router-effect — 4f · 2026-10-12 · 0/0/4 · ×4 (1.0/f) · idle 7d · index.ts×1 44 @repo/route-snapshot — 2f · 2026-10-12 · 0/0/2 · ×3 (1.5/f) · idle 7d · route-snapshot.ts×2 45 sample-app-lit-signals — 8f · 2026-10-12 · 0/0/8 · ×14 (1.8/f) · idle 7d · app/global/appConfig.ts×2 46 @tools/a11y — 8f · 2026-10-12 · 0/0/8 · ×15 (1.9/f) · idle 7d · audit.ts×5 47 ui-router-mobx — 4f · 2026-10-15 · 0/0/4 · ×4 (1.0/f) · idle 4d · index.ts×1 48 @tools/ci-logs — 7f · 2026-10-15 · 0/0/7 · ×12 (1.7/f) · idle 3d · ci-logs.ts×2 49 @repo/dev-gate — 3f · 2026-10-16 · 0/0/3 · ×3 (1.0/f) · idle 3d · dev-gate.node.ts×1 TOTAL — 627 dated files (sheet 7's plate counts the same 627) · 2,854 touches · seasons 26 / 15 / 586 · TODAY = 2026-10-18 · counted at origin/main @ eb1162da
FIG. 13Every sheet so far has drawn the city as it stands; this one dates the stone. Same districts and footprints as sheet 7, but the fills now say when each file was first committed and the edges how often it is touched. The history is three construction campaigns separated by silent months, and the two encodings disagree on purpose: 93% of the city is summer-built and barely weathered, while the port’s original masonry carries the hottest edges on the map.

GENERAL NOTES

Method — one pass, renames followed. Every date on this sheet is read at build time from the checked-in plate www/atlas.lit-ui-router.dev/data/census-weather.json, counted at origin/main @ eb1162da. Each file in the shared city universe was dated from a single git log --name-status -M pass over the history behind that ref, walked newest to oldest with rename chains followed backwards — equivalent to per-file --follow (spot-verified against it, including tools/shared/workspace.ts, which the plain path log mis-dates by a week) but one process instead of 627. Per file: first-commit date, last-touch date, touch count. Merge commits list no files under the default log, so a touch is a non-merge commit — the standard convention. TODAY is not a wall-clock date: it is the measured ref's own commit date, 2026-10-18, so every age and idle figure below is reproducible from the sha rather than from the day the sheet was drawn. Footprints come from sheet 7's plate, www/atlas.lit-ui-router.dev/data/census-city.json, reused as pure geometry so the two sheets reconcile by eye — and by count: 627 dated files here against the same 627 there.

The bands are campaigns, not round numbers. The age histogram is not a slope, it is three spikes: files born around day 455 (July 2025), around day 281 (January 2026), and within the last 107 days — with nothing between them, because the repo has source births or touches in only 6 of its 16 calendar months. So the map bins by season, where the distribution actually cuts: SEASON I, the port — 26 files that arrived 2025-07-21 with the upstream sample-app lineage; SEASON II, the winter works — 15 files including the typedoc plugin and the examples; SEASON III, the summer — 586 files, 93% of the city, none older than 2026-07-04. Churn tiers are editorial cuts on touches per file: HOT is ≥6, where 14 of the 47 dated blocks stand, and COLD sits below 2, under the per-file median of 3. SEALED is idle >180 days — the idle histogram is empty from 105 to 291, and 2 files sit beyond the gap.

The verdict: age and churn run opposite ways. Mean touches per file falls monotonically with youth — ×15.4 for the port cohort, ×11.1 for winter, ×3.9 for summer — and 173 of 627 files (28%) have been touched exactly once, ever. The port's masonry is not museum stone: ui-sref.ts is at ×29 with the last chisel-mark dated 2026-10-12, and the two most-weathered walls in the city are the port-era www/lit-ui-router.dev/.vitepress pair — config.ts at ×48 and vite.config.ts at ×32. What survives from the first day is precisely what keeps being worked.

What each district's weather says. The instrument yard — 16,757 sloc, the city's largest district by mass — logged zero touches before 2026 and is almost entirely summer stone: infrastructure arrived late, fast, and mostly settled on the first cut. Its one winter building is the typedoc plugin, whose index.ts was laid 2026-01-09 and is still under the chisel — idle 9 days; every sealed file left on this map now stands in examples/. The shopfront splits in two: docs runs the hottest multi-file block-average in the city (×12.2/f src) while examples holds the oldest untouched stone — two vite configs idle 291 days. And the eighth-smallest package on the map still runs hot: navigation-location-plugin's January index.ts has been chiselled 19 times, and its 2-file block averages ×10.5/f, the fourth-highest on the map — matching its history as the extracted plugin that every routing change touches.

See also — appendix A1, THE SPRITE STUDY. This map draws age and churn flat, as fills and edges, so the dating stays readable at city scale. The sprited reading of the same two measurements — wreck & ruin ↔ shine & splendor on the building itself — is the research filed as appendix A1, and its recommendation is what sheet 7B draws.

Approximations, so the numbers stay honest. Dates are author dates (%as); on this repo's squash-merge convention they equal the merge day of the PR that landed the change. Rename detection is git's -M heuristic: a file moved and rewritten in one commit can read as a fresh birth — the July 2026 scripts/ → tools/ graduations are dated to that graduation where git saw no rename, which the yard's notes above already state as its story. Generated and vendored trees were never in the universe (the shared city rules); nothing else was excluded.

KEY

SEASON I stone — born 2025-07, the port
SEASON II stone — born 2026-01, winter works
SEASON III stone — born since 2026-07-04
HOT — ≥6 touches/file · red edge + tall ticks
COLD — <2 touches/file · faint edge, short tick
SEALED — contains files idle >180 days
spec annex — same strata, own weather
timeline bars — district touches · all four together
district (sheet 7’s)
PROJECTTHE ALTITUDE ATLAS
SHEET TITLEthe WEATHERING MAP
SCALEWORKSPACE × TIME
FORMWEATHERING MAP
CLIENTlit-ui-router · simshanith
DATE / REV2026-10-18 · H
DRAWN BYFable (Claude, AI)
SHEET13 OF 14