FIT VERDICTthe shadow survey — the tests are the light: where a suite reaches it burns near-full — 37 members read under their own suites' meters at 3f55e419, so the light and the census are one measurement
the SHADOW SURVEY
ALTITUDE 3½ — ALTERNATE PLATE TO SHEET 7: the measured city under its own test light · same city as sheet 7, 52 members · reach = the source each suite loads, brightness = line coverage of what it loads · metered at origin/main @ 3f55e419 (2026-10-31)
SHADOW SCHEDULE — per member: files and sloc the suite lights / authored · L line · B branch · F function coverage of the lit files
| # | member | files lit | sloc lit | extent | L | B | F | note |
|---|---|---|---|---|---|---|---|---|
| 1 | lit-ui-router | 21 / 25 | 3,069 / 3,262 | 94.1% | 99.6% | 96.5% | 99.6% | in shadow: barrels + interface.ts |
| 2 | ui-router-server | 21 / 21 | 3,006 / 3,006 | 100% | 99.9% | 97.6% | 98.6% | whole footprint fully lit |
| 3 | lit-ui-router-mobx | 3 / 5 | 134 / 144 | 93.1% | 100% | 93.8% | 100% | in shadow: the barrel and the router-store.ts re-export |
| 4 | navigation-location-plugin | 2 / 2 | 214 / 214 | 100% | 100% | 98.1% | 100% | two of three meters read 100 |
| 5 | sample-app-shared | — | — | — | — | — | — | tests run, no meter · tests pass · no provider in browser mode |
| 6 | sample-app-lit-vanilla | — | — | — | — | — | — | e2e light only · lit only by the cypress rig |
| 7 | sample-app-lit-mobx | — | — | — | — | — | — | e2e light only · lit only by the cypress rig |
| 8 | sample-app-routes | 7 / 7 | 104 / 104 | 100% | 100% | 100% | 100% | route table lit (no functions to meter) |
| 9 | sample-app-lit-e2e | — | — | — | — | — | — | e2e light only · the rig itself — its sloc are support code |
| 10 | docs | 14 / 21 | 1,221 / 2,153 | 56.7% | 96.8% | 94.8% | 95.9% | worker lit · the site sees only e2e light |
| 11 | examples | 1 / 33 | 60 / 5,915 | 1% | 100% | 100% | — | the stackblitz copies stay dark |
| 12 | @tools/release | 29 / 54 | 1,712 / 2,772 | 61.8% | 97.3% | 97.1% | 94.8% | cores lit, CLI wrappers in shadow |
| 13 | @tools/typedoc-plugin | — | — | — | — | — | — | FULL SHADOW — no suite · builds the API pages, tests nothing |
| 14 | @tools/dts-backtest | — | — | — | — | — | — | FULL SHADOW — no suite · no self-suite — it IS the d.ts test |
| 15 | @tools/build_and_test | 9 / 15 | 2,513 / 2,933 | 85.7% | 92.9% | 95.8% | 94.3% | 3 wrappers in shadow, the cores lit |
| 16 | @tools/shared | 7 / 11 | 328 / 516 | 63.6% | 96.5% | 94.7% | 94.1% | pale: exec.ts and workspace.ts |
| 17 | @tools/workers-builds | 7 / 7 | 889 / 889 | 100% | 82.8% | 86.9% | 88.2% | trigger wrapper in shadow |
| 18 | @tools/bundle-probe | 4 / 6 | 371 / 535 | 69.3% | 95.4% | 79.2% | 93% | size probe, advisory · its cores lit |
| 19 | @tools/compat-guards | 3 / 11 | 231 / 540 | 42.8% | 98% | 95.2% | 100% | ranges.ts lit; the CI guards unmetered |
| 20 | @tools/oxc-emit | 3 / 6 | 304 / 487 | 62.4% | 83.3% | 100% | 80% | the check lane, lit by its own suite |
| 21 | @tools/release-config | 2 / 2 | 122 / 122 | 100% | 98.5% | 83.3% | 100% | config only |
| 22 | @tools/lit-template-lint | 1 / 3 | 20 / 151 | 13.2% | 100% | 92.9% | 100% | wrapper only |
| 23 | @tools/lit-test-env | 2 / 4 | 313 / 366 | 85.5% | 100% | 97.4% | 100% | the spec helpers lit, the setup in shadow |
| 24 | @tools/vue-check | — | — | — | — | — | — | FULL SHADOW — no suite · wrapper only |
| 25 | @tools/lcov-rebase | 1 / 2 | 6 / 30 | 20% | 100% | 100% | 100% | rebase.ts lit · CLI wrapper in shadow |
| 26 | @tools/happy-dom | 1 / 2 | 6 / 14 | 42.9% | 100% | — | 100% | canary lights inner-html.ts, not append.ts |
| # | member | files lit | sloc lit | extent | L | B | F | note |
|---|---|---|---|---|---|---|---|---|
| 27 | @tools/wintercg-globals | — | — | — | — | — | — | no mass · ambient types — nothing to light |
| 28 | @tools/lint-elements | — | — | — | — | — | — | no mass · an oxlint config and its glob test — no source to light |
| 30 | @tools/eslint-ts-parser | — | — | — | — | — | — | FULL SHADOW — no suite · a one-line parser shim — nothing to light |
| 31 | eslint-plugin-lit-ui-router | 11 / 12 | 1,475 / 1,481 | 99.6% | 99.4% | 89.4% | 100% | vendored rules, lit wall to wall |
| 32 | @tools/embed-heights | 1 / 3 | 38 / 354 | 10.7% | 100% | 100% | 100% | reserve lit — driver + CLI in shadow |
| 33 | @tools/bootstrap | 2 / 3 | 34 / 58 | 58.6% | 100% | 100% | 100% | the manifest reads lit, types.ts in shadow |
| 34 | @tools/eslint | 1 / 5 | 35 / 254 | 13.8% | 100% | 85.7% | 100% | the Actions formatter lit · the repo rules and the complexity ceiling in shadow |
| 35 | @tools/repo-checks | 8 / 15 | 876 / 1,532 | 57.2% | 99.7% | 92.6% | 96.4% | the lint-lane guards, half lit |
| 36 | sample-app-lit-effect | — | — | — | — | — | — | FULL SHADOW — no suite · the effect demo — e2e light only |
| 37 | lit-ui-router-effect | 3 / 4 | 266 / 285 | 93.3% | 97.9% | 91.4% | 100% | the bindings lit; the barrel in shadow |
| 38 | lit-ui-router-ssr | 15 / 18 | 1,460 / 1,485 | 98.3% | 98.9% | 96% | 97.8% | the bridge lit, its own barrel dark |
| 39 | @tools/crap | 1 / 2 | 82 / 124 | 66.1% | 100% | 88.2% | 100% | report.ts lit, the crap-report CLI in shadow |
| 40 | @tools/oxlint-anti-slop | — | — | — | — | — | — | FULL SHADOW — no suite · vendored rules with no suite of their own |
| 41 | lit-ui-router-signals | 3 / 4 | 162 / 170 | 95.3% | 100% | 96.9% | 100% | the bindings lit; the barrel in shadow |
| 42 | ui-router-signals | 2 / 4 | 93 / 104 | 89.4% | 100% | 83.3% | 100% | the signal mirror lit; barrel and route types in shadow |
| 43 | ui-router-effect | 1 / 3 | 20 / 30 | 66.7% | 100% | 100% | 100% | the SubscriptionRef lit; barrel and route types in shadow |
| 44 | @repo/route-snapshot | 1 / 1 | 45 / 45 | 100% | 100% | 100% | 100% | private · the inlined snapshot, lit wall to wall |
| 45 | sample-app-lit-signals | — | — | — | — | — | — | FULL SHADOW — no suite · the signals demo — no test script |
| 46 | @tools/a11y | 3 / 5 | 127 / 491 | 25.9% | 100% | 94.3% | 100% | audit.ts + check-a11y.ts in shadow · the rest lit |
| 47 | ui-router-mobx | 1 / 3 | 72 / 117 | 61.5% | 100% | 90% | 100% | the store lit; barrel and route types in shadow |
| 48 | @tools/ci-logs | 3 / 4 | 295 / 404 | 73% | 100% | 100% | 100% | the CLI wrapper in shadow, the cores lit |
| 49 | @repo/dev-gate | 2 / 2 | 3 / 3 | 100% | 100% | — | 100% | private · both halves of the gate lit |
| 50 | ui-router-registry | — | — | — | — | — | — | FULL SHADOW — no suite · types only, dark by design — its type tests run under typecheck |
| 51 | @tools/release-ledger | 2 / 2 | 516 / 516 | 100% | 100% | 97.7% | 100% | the ledger model and its fixtures, lit wall to wall |
| 52 | release-diffs | — | — | — | — | — | — | FULL SHADOW — no suite · a 404 worker — no test script |
| 53 | release-ledger | 9 / 9 | 1,491 / 1,491 | 100% | 94.1% | 92.9% | 95.2% | the ledger worker, every file lit |
TOTAL — 37 members metered: 24,994 of 25,839 metered lines lit (96.7%) · branches 5,620/5,923 (94.9%) · functions 1,958/2,018 (97.0%) · lit extent 21,713/33,097 sloc (65.6%) · metered at origin/main @ 3f55e419 (2026-10-31)
GENERAL NOTES
Method — one meter per member, nothing installed by hand, nothing left behind. Footprints, annexes and districts are sheet 7's own plate (census-city.json); the light is census-shadow.json, metered at origin/main @ 3f55e419 (2026-10-31), so meter and census read one tree at one ref. 37 of the 52 members carry a meter. The probe never edits a repo file: members that declare test:coverage are metered by the tree's own unmodified turbo run test:coverage; node:test members by their own test script re-run with --experimental-test-coverage and the lcov reporter; the vitest members by their own script with --coverage.enabled --coverage.provider=v8. Each meter reports lines on its own basis (v8 remaps to executable lines; node counts raw lines), so brightness percentages are per-meter and are never summed across meters in the drawing — only the schedule's grand total does, and says so. LIT means a source file the suite actually executed; extent is those files' sloc over the member's src sloc, both from the same ref. One honest wobble found by re-running the probe four times over: node --test's branch denominator for №31 came back 213 on two runs and 215 on two more, with 191 hit either way — a 0.9-point swing on one member's branch figure and nothing else in the plate moved. Branch discovery under V8 is not perfectly repeatable, and this plate says so rather than pretending the last run is the only one.
The product glows wall to wall — the budget lands where the house says. The published packages meter 99.7% of 9,921 lines over 96.8% of their metered source. What little stays dark is entry barrels and interface.ts — type declarations, which no runtime meter can light. ui-router-registry stands dark for the same reason: it ships types only, has no test script, and its type tests run under typecheck, where no meter reads. This is the priority made visible: library coverage outranks docs coverage, and the annexes sheet 7 drew at 1.2–8.0× their buildings turn out to buy near-total light.
The yard's habit: bright cores, dark wrappers. The instruments repeat one pattern — @tools/, build_and_test, workers-builds, lcov-rebase: the .core.ts logic is lit and the command-line file in front of it is not. 4,270 sloc across 72 files of process-edge code is never loaded by any suite, while the logic behind it meters 94.7%. compat-guards is the pattern at its extreme: only ranges.ts is unit-lit; its guard lanes run for real in CI, where no meter follows. @tools/ splits its light: its spec is a conformance canary pointed at happy-dom upstream, and it lights the one workaround it guards, inner-html.ts, while append.ts is lit only from lit-ui-router's lamp, as borrowed light.
What the meter cannot say, the plate refuses to fake. The two demo apps and the Cypress host are hatched in accent, not banded: e2e light is real — the rig drives the built docs site — but no lcov leaves it, so it is drawn as light of unknowable brightness and labelled unmetered. That judgement is the only one in the probe, and it is verified rather than assumed: the run throws if the rig has stopped being a Cypress suite. sample-app-shared runs its unit tests green, yet browser-mode vitest cannot fetch a coverage provider the repo never installed; its light is an outline, and the probe proves it by running the suite a second time without the meter. The members that are dark are dark because nothing tests them, and two of them (dts-backtest, lit-test-env) spend their working lives inside other members' suites.
KEY
| a member’s footprint — sheet 7’s census, plan view | |
| its spec annex — the LAMP: the light falls from the tests | |
| lit ≥95% line — full bright | |
| lit 85–95% — bright, faint accent hatch | |
| lit 70–85% — pale, red hatch | |
| lit below 70% — guttering, dense red | |
| e2e light — real, no meter reads it | |
| an outline of light — tests run, no meter attaches | |
| SHADOW — source no suite ever loads | |
| fully dark, red badge — no suite at all | |
| lit strip = share of source the suite loads · light from the lamp side |