THE ALTITUDE ATLAS — DRAWING SETSHEET 13 / 14

the WEATHERING MAP

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

DATING — first-commit and last-touch per file from one pass over the history behind the measured ref, renames followed 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 50 51 52 53 lit-ui-router — THE ORIGINAL MASONRY 7 of 25 src walls laid 2025-07-21, the first day — mean ×21.6 touches each, and still under the chisel: ui-sref.ts ×30, last touched 2026-10-21 www/lit-ui-router.dev/.vitepress/config.ts ×54 the most-weathered wall in the city — 465 days old, repainted 54 times, idle 6d examples/ — THE OLDEST UNTOUCHED STONE two vite configs sealed 303 days, both winter-built @tools/typedoc-plugin — THE YARD’S ONE WINTER WALL index.ts laid 2026-01-09, still under the chisel — ×15, idle 10d @tools/release — 78 walls, every one summer-built the yard’s largest building is 117 days old navigation-location-plugin — ×11.0/f its January index.ts chiselled 20 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 171 698 1769 packages/ 20 36 129 48 290 685 apps/ 39 29 173 46 78 261 www+examples 10 29 40 19 61 189 tools/ 2 175 58 269 634 '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

#memberfilesfirst commitborn I/II/IIItouchesper fileidle (d)sealedhottest file
1lit-ui-router582025-07-218/5/454227.310—ui-view.ts×34
2ui-router-server472026-07-140/0/472234.715—index.ts×20
3lit-ui-router-mobx92026-07-040/0/9606.716—router-reaction-controller.ts×13
4navigation-location-plugin92026-01-110/2/7535.921—index.ts×20
5sample-app-shared522025-07-218/0/443196.121—router.config.ts×24
6sample-app-lit-vanilla82025-07-216/0/2698.621—app/mymessages/Compose.ts×16
7sample-app-lit-mobx82026-07-040/0/8516.421—app/mymessages/Compose.ts×13
8sample-app-routes112026-07-140/0/11322.93—test/routes.test.ts×10
9sample-app-lit-e2e212025-07-212/0/191004.817—scripts/run-e2e.ts×13
10docs312025-07-232/1/281835.99—.vitepress/config.ts×54
11examples342026-01-010/6/281354.0122 SEALEDhellogalaxy/src/main.ts×14
12@tools/release782026-07-060/0/783684.721—checks/check-published-diff.ts×16
13@tools/typedoc-plugin22026-01-090/1/12311.521—index.ts×15
14@tools/dts-backtest92026-07-060/0/9293.23—run.ts×19
15@tools/build_and_test222026-07-070/0/221225.515—run-summary.core.ts×21
16@tools/shared192026-07-060/0/19653.417—workspace.ts×13
17@tools/workers-builds102026-07-110/0/10666.612—workers-builds-triggers.test.ts×18
18@tools/bundle-probe92026-07-180/0/9455.017—entries.ts×11
19@tools/compat-guards142026-08-090/0/14473.415—catalog.ts×5
20@tools/oxc-emit92026-07-170/0/9424.715—emit-js.ts×9
21@tools/release-config32026-07-310/0/382.714—release-it.js×5
22@tools/lit-template-lint42026-08-110/0/4123.021—lint-templates.ts×5
23@tools/lit-test-env62026-08-090/0/6183.021—dom.ts×5
24@tools/vue-check12026-07-090/0/166.019—bin.ts×6
25@tools/lcov-rebase32026-07-290/0/372.321—rebase-lcov.ts×4
26@tools/happy-dom32026-07-190/0/362.042—specs/happy-dom-conformance.spec.ts×4
#memberfilesfirst commitborn I/II/IIItouchesper fileidle (d)sealedhottest file
27@tools/wintercg-globals———————no dated source (ambient types only)
28@tools/lint-elements———————no dated source (ambient types only)
30@tools/eslint-ts-parser12026-08-160/0/111.076—index.ts×1
31eslint-plugin-lit-ui-router252026-09-010/0/251204.821—anchor-is-valid.ts×14
32@tools/embed-heights42026-09-040/0/4205.09—check-embed-heights.ts×10
33@tools/bootstrap62026-07-140/0/6172.821—manifest.ts×5
34@tools/eslint62026-07-190/0/6203.321—rules/catalog-fields.ts×6
35@tools/repo-checks272026-07-190/0/271365.019—check-single-version.ts×18
36sample-app-lit-effect92026-09-110/0/9343.819—app/mymessages/Compose.ts×9
37lit-ui-router-effect92026-09-120/0/9586.419—router-ref-controller.ts×14
38lit-ui-router-ssr422026-09-140/0/422145.11—prerender.ts×21
39@tools/crap32026-10-010/0/393.021—crap-report.ts×5
40@tools/oxlint-anti-slop352026-10-100/0/35351.021—effect/index.ts×1
41lit-ui-router-signals82026-10-120/0/8101.319—router-signal-controller.ts×2
42ui-router-signals62026-10-120/0/681.319—index.ts×2
43ui-router-effect52026-10-120/0/571.47—index.ts×2
44@repo/route-snapshot22026-10-120/0/231.519—route-snapshot.ts×2
45sample-app-lit-signals82026-10-120/0/8212.619—app/mymessages/Compose.ts×4
46@tools/a11y82026-10-120/0/8162.019—audit.ts×5
47ui-router-mobx52026-10-150/0/571.47—index.ts×2
48@tools/ci-logs72026-10-150/0/7121.715—ci-logs.ts×2
49@repo/dev-gate32026-10-160/0/331.015—dev-gate.node.ts×1
50ui-router-registry82026-10-230/0/8202.56—registry.ts×9
51@tools/release-ledger42026-10-190/0/471.812—release-ledger.core.test.ts×2
52release-diffs22026-10-230/0/221.08—cloudflare.config.ts×1
53release-ledger172026-10-190/0/17281.612—ledger-statements.ts×3

TOTAL — 731 dated files (sheet 7's plate counts the same 731) · 3,320 touches · seasons 26 / 15 / 690 · mean touches per file by birth season I ×16.6 · II ×11.9 · III ×3.9 · TODAY = 2026-10-30 · counted at origin/main @ 3f55e419

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: 94% 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 @ 3f55e419. 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 731. 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-30, 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: 731 dated files here against the same 731 there.

The bands are campaigns, not round numbers. The age histogram is not a slope, it is three spikes: files born around day 467 (July 2025), around day 293 (January 2026), and within the last 119 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 — 690 files, 94% of the city, none older than 2026-07-04. Churn tiers are editorial cuts on touches per file: HOT is ≥6, where 15 of the 50 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 117 to 303, and 2 files sit beyond the gap.

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

What each district's weather says. The instrument yard — 17,759 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 10 days; every sealed file on this map stands in examples/. The shopfront splits in two: docs runs the sixth-hottest multi-file block-average in the city (×7.6/f src, under @tools/typedoc-plugin's ×11.5/f at the top) while examples holds the oldest untouched stone — two vite configs idle 303 days. And the eighth-smallest package on the map still runs hot: navigation-location-plugin's January index.ts has been chiselled 20 times, and its 2-file block averages ×11.0/f, the second-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 · 26 files
SEASON II stone — born 2026-01, winter works · 15 files
SEASON III stone — born since 2026-07-04, the summer · 690 files
HOT — ≥6 touches/file · red edge + tall ticks
COLD — <2 touches/file · faint edge, short tick
MID — 2–5 touches/file · ink edge, the working stock
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-30 · J
DRAWN BYFable (Claude, AI)
SHEET13 OF 14