go-int cross-checked 20 roster languages with "no New Testament found in the pools" against open-data signals. Thirteen of the twenty had readable text all along — on a record the tier could not see — and chasing that found one rule written four times and wrong in two of them. THE BUG. tierOfCode tested `!!c.s`, one field, while this build's own hasReadableScripture tested four sources. Tier 2 means "Scripture AND film", so a language whose text is on the Faith Comes By Hearing record (au.m names the media it holds), on Scripture Earth, or in a Door43 translation was scored 1 — "some resource found" — with its own text and the JESUS Film both in hand. Measured: 602 codes and 2,001 of 12,379 groups move 1 -> 2. Tier 0 does not move at all, 1,592 before and after, so nothing about who has NOTHING changes: the gap lists, the 369 zero-access groups and the bridge-reach table are untouched. THE SAME BUG DOWNSTREAM, and this is the one a catalyst would have felt: resourceRows typed an FCBH record "audio, text, video" as Audio Scripture only, so the access table's byType.Scripture never saw it. 288 people groups were published as "watch or hear, cannot read" while their own readable Scripture sat behind that link. Access now reads 1,129 "read and watch" (was 869), 518 "cannot read" (was 806), 85 "read" (was 57), 369 nothing found and 6 stories only — unchanged where it should be, and 2,107 in total either way. Typing the row by its text would have dropped "can hear", so the access builder now counts a Scripture row whose scope names audio as hearable too. ONE OWNER NOW. hasReadableScripture is exported from gospel-resource-rows.js and imported by the pin builder and by check-gospel-coverage-consistent, whose arm F had its own narrow copy and therefore reported 2,001 disagreements against the corrected tier — a gate defending the bug it exists to catch. A rule with four copies has no owner; this one has. `sx` ships alongside: the readable text with its source named, for the 887 codes whose text is not at c.s, so a surface can LINK what the tier now counts instead of claiming Scripture and showing a film. Wiring it into the sheet and the field card is the next commit; this one is data and rules only, and public/ is deliberately NOT rebuilt because rega is rendering this worktree. |
||
|---|---|---|
| .. | ||
| 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.