diff --git a/documentation/THIRD-PARTY.md b/documentation/THIRD-PARTY.md index 6f9c3ba19..ce0b616df 100644 --- a/documentation/THIRD-PARTY.md +++ b/documentation/THIRD-PARTY.md @@ -14,7 +14,7 @@ served folder". The licence travels with the asset; the explanation travels with | `vendor/tabulator/tabulator.min.js` + `.min.css` | olifolkerd/tabulator v6.3.1 | MIT | **No** — the `.js` had only `(c) Oliver Folkerd 2025`; the `.css` had nothing | closed: upstream `LICENSE` now vendored beside it | | `boundaries/gb-IND-ADM1*.geojson` (4 files) | geoBoundaries gbOpen, boundaryID `IND-ADM1-1811400` | **CC BY 2.5 IN**, licenceSource `github.com/datameet/maps`, year 2011 — fetched verbatim from the geoBoundaries API | **Yes** — `boundaries/ATTRIBUTION` now ships beside the data, plus the existing `.meta.json` sidecar | none (closed 2026-09-28) | | `boundaries/gb-CHN-ADM1.geojson` | geoBoundaries gbOpen, boundaryID `CHN-ADM1-43563684` | **Public Domain**, licenceSource `commons.wikimedia.org`, year 2019 | recorded in `boundaries/ATTRIBUTION` | none — upstream records no attribution duty | -| `boundaries/world-adm0*.geojson` (2 files, 162 countries) | **geoBoundaries gbOpen, assembled per country** — corrected: its features carry geoBoundaries' own `iso3`/`shapeGroup`/`shapeName` properties, and the plugin's `data/adm0/PROVENANCE.json` names the source and endpoint. NOT Natural Earth, as this register first guessed | **MIXED — up to 162 different upstream licences.** gbOpen passes each country's own licence through | the principle is stated in `boundaries/ATTRIBUTION`; the per-country licences are **not** | **OPEN** — that PROVENANCE.json's `licences` table is EMPTY, so which of the 162 are CC BY is unestablished. Closing it means one API query per country. upg100-plugin's data; routed to them | +| `boundaries/world-adm0*.geojson` (2 files, 162 countries) | geoBoundaries gbOpen, assembled per country (its features carry geoBoundaries' own `iso3`/`shapeGroup`/`shapeName`; corrected — this register first guessed Natural Earth) | **MIXED, and ESTABLISHED per country as of 2026-09-28**: 162 upstream licences. **32** duty-free (28 Public Domain + 4 CC0) · **65** attribution-only · **65 SHARE-ALIKE CLASS** (58 ODbL 1.0 + 7 explicit ShareAlike: AGO GAB GEO GIN MMR NER TUR) | **Yes** — the per-country table (licence + licenseSource + boundaryID + boundarySource, fetched verbatim from the geoBoundaries API, 162 of 162, 0 failures) ships at `plugin-designs/my-upg-100-list/data/adm0/PROVENANCE.json`. `boundaries/ATTRIBUTION` references it by path rather than copying it | **OPEN, legal — not a measurement**: whether a redistributed boundary file is a "Derivative Database" under ODbL is unanswered, and half the duty-bearing countries turn on it. With the Driver's data-licensing item | | `people-groups/*` (3 files, 8 MB) | peoplegroups.org | **not established** | no terms ship | **OPEN, judgment** — redistribution terms unknown | | `pplr/*` (6 files, 16 MB) | **PPLR ArcGIS Online org** `services2.arcgis.com/S4ydGgujXcif36k3`, aggregating IMB (peoplegroups.org), Joshua Project, the ROP registry, and carrying WCD (World Christian Database) IDs. Built from a local 78 MB extract not present in this repo — evidence from exp-shepherd | **UNRESOLVED.** `aCountry` and `aIMBPeople` publish no `copyrightText`, description or licence (queried `f=json`) | nothing ships | **OPEN, judgment** — redistribution not established. WCD is a proprietary Brill database, so even the IDs need a check | | `tables/*` (304 files, 36 MB) | derived by `library/scripts/research/fetch-*.mjs` from several upstream APIs | **varies, not established per table** | nothing ships; there is no source or licence doc in `tables/` | **OPEN, judgment** — the largest gap by volume | @@ -34,8 +34,16 @@ served folder". The licence travels with the asset; the explanation travels with ## What is NOT closed, and why it is not mine to close -Four rows above are marked OPEN. Two are simply unverified and someone should look -(`world-adm0` provenance, the `pplr` upstream). Two need a decision rather than a fetch: +★ ONE FACT IN THIS FILE IS ALSO ASSERTED ELSEWHERE, AND THAT IS WHERE IT WILL DRIFT. The world-adm0 +licence counts appear both here and in `plugin-designs/my-upg-100-list/data/adm0/PROVENANCE.json`. +**That file is the authority; if the two disagree, it wins.** They have already drifted once: this +register said the licence table was EMPTY on the very commit where it held all 162, because the two +landings crossed and neither author could see the other's tree. A register that still reads +"unestablished" after the work is done is settled-by-omission in reverse — the absence of an update +reads as the absence of the work. + +Three rows above are marked OPEN. One is simply unverified and someone should look +(the `pplr` upstream). Two need a decision rather than a fetch: **people-groups** and the 304 **tables** carry data whose redistribution terms are not established, and 36 MB of derived tables is the largest exposure by volume. Attaching a licence I have not confirmed would be worse than the present gap, so those go to the Driver. diff --git a/internal/check-optional-t-equivalence.mjs b/internal/check-optional-t-equivalence.mjs index ada2bf9e1..32a95640e 100644 --- a/internal/check-optional-t-equivalence.mjs +++ b/internal/check-optional-t-equivalence.mjs @@ -146,6 +146,10 @@ const SITES = [ // the catalogue default, its duplicate EN map is deleted, and section 9 keeps the ruling's PRECONDITION // true rather than measured once. // First site on the {t, te, locale} form: it needs locale for toLocaleString. + // ⚠ null, NOT a fallback. This row came back as 'fallback: (full) =>' in a merge, because the branch it + // merged from predates 0ded1a4e — the commit that carried out the embed-contract ruling here and deleted + // the inline EN map. Taking a SITES array wholesale from another branch re-asserts ITS view of every + // file in it, including the ones you changed; the gate caught it, which is the only reason it is right. ['plugin-designs/all-people-groups/all-people-groups.vue', 'useOptionalI18n', null], // wave 3c — my-upg-100-list (owner: upg100-plugin). No namespace, since callers pass full keys. // ⚠ THE THIRD COLUMN IS null, NOT 'humanizeKey(k)', and that is a DEPARTURE from 4c05e589, which diff --git a/plugin-designs/regions-dashboard/src/useRegionsI18n.js b/plugin-designs/regions-dashboard/src/useRegionsI18n.js index ac86ad260..ca3bcc8db 100644 --- a/plugin-designs/regions-dashboard/src/useRegionsI18n.js +++ b/plugin-designs/regions-dashboard/src/useRegionsI18n.js @@ -11,9 +11,14 @@ * is the point. * * FALLS BACK TO THE KEY. A missing string renders the English sentence rather than 'regions.Foo'. - * That matters here: our repo ships 11 locales and DX-life translates 8, so it/ro/zh have no - * regions.json at all and resolve through this fallback (library/i18n README: a missing area file - * is fine, fallbackLocale 'en' handles it). + * ✗ THE REASON GIVEN HERE IS NOW STALE, corrected 2026-09-27. It read: "our repo ships 11 locales and + * DX-life translates 8, so it/ro/zh have no regions.json at all and resolve through this fallback." + * MEASURED: all ELEVEN locales now carry a regions.json, it/ro/zh included. The fallback is still + * right and still load-bearing — a key absent from a catalogue renders its English sentence, which is + * exactly what a reader should see — but it is no longer three whole languages leaning on it. + * COVERAGE, measured the same day: 61 of the 61 keys this plugin actually calls are present in all 11 + * locales. The 62nd that a raw source scan reports is t('Region') appearing only inside two COMMENTS, + * which say themselves that DX-life never needed the key (they have no all-regions state). * * PLACEMENT: plugin-local on purpose. It is four lines shaped entirely by how THESE pages were * written, and the repo's rule is to default to the plugin folder and promote to library/ only