The performance worry that started this tick was unfounded and measured as such: the new gaps table reaches first rows in 1,021ms, second-fastest of the four large tabs and ahead of Gaps & Opportunities at 1,910ms. 901KB raw but 106KB gzipped, and smaller than the 1.8MB tables already shipping. Nothing to fix. Reading that table found something that did need fixing. 2,608 of its 3,457 rows — 75% — carried an EMPTY "pools checked" and listed eBible, Arclight and Door43 as NOT checked. That is backwards. This build scans all three catalogues in full; a code reaching the naming pass is absent from every one of them, verified — 0 of the 2,248 such codes appear in any catalogue. "Not checked" reads as "we do not know". The truth is the stronger and far more useful "we searched three catalogues and it is not there", which is exactly the distinction a mobiliser needs when deciding where to work. A FURTHER 849 ROWS had the same understatement in milder form, claiming only "ebible, arclight" because their records predate the Door43 pass — though Door43 had in fact been searched for them too. Provenance is now stamped once, uniformly, over every code: the three catalogues this build actually scans are named as checked, and the four that genuinely were not — GRN, api.bible, DBL, Progress Bible, all credential-gated — are the only things the unchecked list ever names. 3,456 of 3,457 rows now state it correctly. THE ONE REMAINING ROW IS HONESTLY EMPTY and now says why. "Arab, Gazan", 2,330,000 people, has no ISO 639-3 code in the source at all, so nothing could be looked up — there was nothing to look up WITH. Two blank cells read as an oversight; the row now reads "no language code in the source — no lookup possible". This moves the map's claims in the direction of knowing MORE, not less, which is the rarer correction here — the previous eleven went the other way. Verified: 0 rows left with blank provenance, the coverage gate and map gate pass, the gaps tab still renders with both export buttons, and the country filter still isolates Chad at 94 and Nepal at 54. |
||
|---|---|---|
| .. | ||
| external-bundles | ||
| people-groups | ||
| posters | ||
| tables | ||
| vendor | ||
| README.md | ||
data/ — the bundler's source-of-truth data
The law: data lives here; public/ is generated. Every folder in data/ is copied into the
served web-root by the build (internal/generate-tree.mjs), exactly like 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/ |
/assets/people-groups/ |
People-group datasets (CSV/JSON) the maps read at runtime |
vendor/ |
/assets/vendor/ |
Third-party runtime assets (e.g. table libraries) |
posters/ |
/assets/posters/ |
Rendered poster webp set (heavy pipeline output; poster walls fetch these) |
tables/ |
/assets/tables/ |
The MERGED served table set (its index.json is the merge; per-profile plugin-designs/*/data/tables are build-time sources) |
external-bundles/ |
not served | Prebuilt map IIFEs vendored from sibling projects (not built here); only the optional layouts/ shell mounted them, so the build no longer copies them into public/ |
Don't edit anything under public/ by hand — change it here (or in plugin-designs/*/data/,
layouts/*/assets/) and rebuild.