Both halves of studio's L13U refusal were correct and both are mine. 1. THE LEGACY upg100WallIntro FALLBACK IS GONE. It existed for exactly one window — the three plain-text keys were landing in studio's catalogue while this consumer was already written, so the branch rendered the old markup-bearing key until they arrived. They are on main in all eleven locales, so the condition can no longer be true: it is DEAD CODE that keeps a key alive, because studio cannot delete upg100WallIntro while a line still reads it. A fallback whose condition cannot fire is not safety, it is a reference. The three remaining mentions in this file are COMMENTS, not code — verified that no live call site anywhere in plugin-designs/ or library/ reads it, so it is now safe to delete. 2. THE GATE DEFAULTED TO A GITIGNORED FILE. check:zoning-declared read library/scripts/posters/out/_records.json, which .gitignore:94 excludes, so on a clean checkout it exited 75 — NOT MEASURED forever, indistinguishable from an unwired gate. studio measured exactly that and correctly refused to wire it into gates:post. This tree has been here before: check:packets-all SKIPped on every build for weeks for the same reason. ★ THE FIX IS A COMMITTED FIXTURE, NOT A LOOSER GATE. data/people-groups/zoning-records.json carries slug plus every field a selector actually reads — 2,107 records, ~300 KB. country_code alone would not do: the deaf zone reads rop1 and five African/European zones read wagf_block/wagf_region, which is the same omission that made six zones silently resolve to nothing in the packet generator. The live cache is still PREFERRED when present, so a local run measures the freshest data and CI measures the committed one. VERIFIED on a genuinely clean tree (git archive of the staged tree, no cache, no network): PASS — 28 zones, 2,107 records, 2,096 covered, all five assertions green, exit 0. check:i18n-keys-exist PASS, check:sfc-parse PASS. |
||
|---|---|---|
| .. | ||
| boundaries | ||
| brand | ||
| external-bundles | ||
| fonts | ||
| glottolog | ||
| images | ||
| internet | ||
| legacy/upg-neighbor | ||
| people-groups | ||
| posters | ||
| pplr | ||
| tables | ||
| vendor | ||
| README.md | ||
data/ — the bundler's source-of-truth data
The law: data lives here; public/ is generated. public/ holds only the output folder
(public/<tree>/, named by name in vite.doxa-maps-build-config.json) and a generated README. The
build (internal/generate-tree.mjs) copies what the plugins FETCH at runtime from here into
<tree>/assets/, alongside the per-profile data in plugin-designs/*/data/. You should be able to
rm -rf public/ and get it all back with bun run build.
| Folder | Served at | What it is |
|---|---|---|
people-groups/ |
<tree>/assets/people-groups/ (the fetched cuts only) |
People-group datasets (CSV/JSON) the maps read at runtime |
vendor/ |
<tree>/assets/vendor/ |
Third-party runtime assets (e.g. table libraries) |
posters/ |
<tree>/assets/posters/ (opt-in: bundlePosters / posterSources) |
Rendered poster set (heavy pipeline output; the export button fetches these) |
tables/ |
<tree>/assets/tables/ |
The MERGED served table set (its index.json is the merge; per-profile plugin-designs/*/data/tables are build-time sources) |
pplr/ |
<tree>/assets/pplr/ (the fetched files only) |
The PPLR data maps' derived datasets |
fonts/ |
<tree>/assets/fonts/ |
Vendored typefaces (SIL OFL), e.g. Bebas Neue for the regions clone |
images/ |
<tree>/assets/images/ |
Images the plugins fetch (e.g. the regions list's world-map watermark; see its PROVENANCE) |
brand/ |
not served | Logos and brand imagery (sources; the optional library/layouts/app-wrapper-material shell references them) |
legacy/ |
not served | Archived standalone builds kept for reference (e.g. the original upg-neighbor page) |
external-bundles/ |
not served | Prebuilt map IIFEs vendored from sibling projects (not built here); only the optional layouts/ shell mounted them |
fonts/, images/, brand/ and legacy/ moved here from public/assets/ on 2026-09-25 (card
BUILD-OUTPUT-IS-ONE-FOLDER): they were sources that existed only in the generated folder.
Don't edit anything under public/ by hand — change it here (or in plugin-designs/*/data/,
layouts/*/assets/) and rebuild.