Merge commit '6090e8e7daea9d1275b6ce3d6346f5940802b9c9' into bundler-1/work
# Conflicts: # public/doxa-maps/index.html
This commit is contained in:
commit
59a3295a01
50 changed files with 10142 additions and 1232 deletions
|
|
@ -150,6 +150,31 @@ with **each other**, not with the source. The same shape bit a `git merge` in th
|
|||
instead of piping, or `set -o pipefail` first. If you want short output AND a reliable
|
||||
status, capture to a file and `tail` the file afterwards.
|
||||
|
||||
### And capture the status into a variable, not `$?` later
|
||||
|
||||
`$?` is a single slot that EVERY command overwrites — including the harmless one somebody
|
||||
adds months later for readability. Measured here:
|
||||
|
||||
```sh
|
||||
some_command > log 2>&1
|
||||
sed -n '1p' log # redact a token, rotate the log, echo a heading — anything
|
||||
if [ "$?" -ne 0 ]; then ... # tests SED, not some_command. A failure reads as success.
|
||||
```
|
||||
|
||||
The durable form names it on the very next line, and branches on the name:
|
||||
|
||||
```sh
|
||||
some_command > log 2>&1
|
||||
rc=$? # nothing may come between these two lines
|
||||
sed -n '1p' log # now insert whatever you like
|
||||
if [ "$rc" -ne 0 ]; then tail log; exit 1; fi
|
||||
```
|
||||
|
||||
Both were run: with the `sed` in between, the bare `$?` reported success on a command that
|
||||
had failed; `rc` still read 1. This is the same family as the pipe above — a status you read
|
||||
one step too late is a status about something else — and it matters most in exactly the
|
||||
scripts that redact a token before printing a log, because that redaction looks harmless.
|
||||
|
||||
## Landing on main: the shape of the lock
|
||||
|
||||
`main` is shared and serialized by `main-capture`. The ordering is load-bearing and BOTH
|
||||
|
|
|
|||
|
|
@ -69,9 +69,9 @@
|
|||
"meta": {
|
||||
"title": "The gap by country",
|
||||
"grain": "one row per country that has at least one people group on this map",
|
||||
"generated": "2026-09-24",
|
||||
"measured": "242 countries · 2,001 groups with nothing found · 208,582,160 people",
|
||||
"by_region": "Oceania 43.5% (577 of 1325) · Africa 15.7% (483 of 3074) · Asia 13.7% (697 of 5073) · Europe 8.9% (70 of 790) · Americas 8.2% (174 of 2117)",
|
||||
"generated": "2026-09-25",
|
||||
"measured": "242 countries · 1,845 groups with nothing found · 208,105,325 people",
|
||||
"by_region": "Oceania 38.1% (505 of 1325) · Africa 14.8% (456 of 3074) · Asia 12.8% (649 of 5073) · Europe 8.9% (70 of 790) · Americas 7.8% (165 of 2117)",
|
||||
"three_questions": "Groups with nothing, people with nothing, and the share of the country each represents. They rank differently on purpose — Papua New Guinea has the most groups and few people, China the reverse, and Oceania has the worst share of any region while being the smallest by population.",
|
||||
"source": "data/tables/gospel-by-country.json, which is itself refreshed from data/tables/people-group-pins.json — the same index the map draws, so this table and the map cannot disagree.",
|
||||
"curated_columns": "growing_unreached and deaths_day come from the curated country analysis and are null where it does not cover the country. Null, never zero: zero is a claim this build cannot make."
|
||||
|
|
@ -82,9 +82,9 @@
|
|||
"iso3": "PNG",
|
||||
"region": "Oceania",
|
||||
"people_groups": 831,
|
||||
"groups_with_nothing": 404,
|
||||
"pct_with_nothing": 48.6,
|
||||
"people_with_nothing": 1095850,
|
||||
"groups_with_nothing": 350,
|
||||
"pct_with_nothing": 42.1,
|
||||
"people_with_nothing": 946300,
|
||||
"groups_with_scripture": 332,
|
||||
"groups_with_film": 143,
|
||||
"band": "high",
|
||||
|
|
@ -97,9 +97,9 @@
|
|||
"iso3": "IDN",
|
||||
"region": "Asia",
|
||||
"people_groups": 669,
|
||||
"groups_with_nothing": 276,
|
||||
"pct_with_nothing": 41.3,
|
||||
"people_with_nothing": 4268480,
|
||||
"groups_with_nothing": 256,
|
||||
"pct_with_nothing": 38.3,
|
||||
"people_with_nothing": 4210680,
|
||||
"groups_with_scripture": 222,
|
||||
"groups_with_film": 265,
|
||||
"band": "high",
|
||||
|
|
@ -112,9 +112,9 @@
|
|||
"iso3": "CHN",
|
||||
"region": "Asia",
|
||||
"people_groups": 391,
|
||||
"groups_with_nothing": 89,
|
||||
"pct_with_nothing": 22.8,
|
||||
"people_with_nothing": 127361200,
|
||||
"groups_with_nothing": 85,
|
||||
"pct_with_nothing": 21.7,
|
||||
"people_with_nothing": 127351400,
|
||||
"groups_with_scripture": 118,
|
||||
"groups_with_film": 227,
|
||||
"band": "partial",
|
||||
|
|
@ -122,14 +122,29 @@
|
|||
"deaths_day": 274.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Vanuatu",
|
||||
"iso3": "VUT",
|
||||
"region": "Oceania",
|
||||
"people_groups": 114,
|
||||
"groups_with_nothing": 68,
|
||||
"pct_with_nothing": 59.6,
|
||||
"people_with_nothing": 72200,
|
||||
"groups_with_scripture": 28,
|
||||
"groups_with_film": 26,
|
||||
"band": "high",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Nigeria",
|
||||
"iso3": "NGA",
|
||||
"region": "Africa",
|
||||
"people_groups": 433,
|
||||
"groups_with_nothing": 76,
|
||||
"pct_with_nothing": 17.6,
|
||||
"people_with_nothing": 3069025,
|
||||
"groups_with_nothing": 62,
|
||||
"pct_with_nothing": 14.3,
|
||||
"people_with_nothing": 3015225,
|
||||
"groups_with_scripture": 105,
|
||||
"groups_with_film": 188,
|
||||
"band": "partial",
|
||||
|
|
@ -137,29 +152,14 @@
|
|||
"deaths_day": 44,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Vanuatu",
|
||||
"iso3": "VUT",
|
||||
"region": "Oceania",
|
||||
"people_groups": 114,
|
||||
"groups_with_nothing": 74,
|
||||
"pct_with_nothing": 64.9,
|
||||
"people_with_nothing": 87135,
|
||||
"groups_with_scripture": 28,
|
||||
"groups_with_film": 26,
|
||||
"band": "critical",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Cameroon",
|
||||
"iso3": "CMR",
|
||||
"region": "Africa",
|
||||
"people_groups": 260,
|
||||
"groups_with_nothing": 65,
|
||||
"pct_with_nothing": 25,
|
||||
"people_with_nothing": 1358325,
|
||||
"groups_with_nothing": 59,
|
||||
"pct_with_nothing": 22.7,
|
||||
"people_with_nothing": 1337925,
|
||||
"groups_with_scripture": 72,
|
||||
"groups_with_film": 84,
|
||||
"band": "partial",
|
||||
|
|
@ -172,9 +172,9 @@
|
|||
"iso3": "MYS",
|
||||
"region": "Asia",
|
||||
"people_groups": 160,
|
||||
"groups_with_nothing": 59,
|
||||
"pct_with_nothing": 36.9,
|
||||
"people_with_nothing": 1784950,
|
||||
"groups_with_nothing": 58,
|
||||
"pct_with_nothing": 36.3,
|
||||
"people_with_nothing": 1781950,
|
||||
"groups_with_scripture": 75,
|
||||
"groups_with_film": 68,
|
||||
"band": "high",
|
||||
|
|
@ -202,9 +202,9 @@
|
|||
"iso3": "BRA",
|
||||
"region": "Americas",
|
||||
"people_groups": 270,
|
||||
"groups_with_nothing": 55,
|
||||
"pct_with_nothing": 20.4,
|
||||
"people_with_nothing": 30680,
|
||||
"groups_with_nothing": 52,
|
||||
"pct_with_nothing": 19.3,
|
||||
"people_with_nothing": 24030,
|
||||
"groups_with_scripture": 186,
|
||||
"groups_with_film": 163,
|
||||
"band": "partial",
|
||||
|
|
@ -217,12 +217,12 @@
|
|||
"iso3": "LAO",
|
||||
"region": "Asia",
|
||||
"people_groups": 158,
|
||||
"groups_with_nothing": 50,
|
||||
"pct_with_nothing": 31.6,
|
||||
"people_with_nothing": 705585,
|
||||
"groups_with_nothing": 46,
|
||||
"pct_with_nothing": 29.1,
|
||||
"people_with_nothing": 693785,
|
||||
"groups_with_scripture": 55,
|
||||
"groups_with_film": 58,
|
||||
"band": "high",
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 15.5,
|
||||
"basis": "pins, with curated country analysis"
|
||||
|
|
@ -247,9 +247,9 @@
|
|||
"iso3": "TCD",
|
||||
"region": "Africa",
|
||||
"people_groups": 150,
|
||||
"groups_with_nothing": 43,
|
||||
"pct_with_nothing": 28.7,
|
||||
"people_with_nothing": 1282450,
|
||||
"groups_with_nothing": 42,
|
||||
"pct_with_nothing": 28,
|
||||
"people_with_nothing": 1279150,
|
||||
"groups_with_scripture": 46,
|
||||
"groups_with_film": 49,
|
||||
"band": "partial",
|
||||
|
|
@ -257,36 +257,6 @@
|
|||
"deaths_day": 68.4,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "India",
|
||||
"iso3": "IND",
|
||||
"region": "Asia",
|
||||
"people_groups": 2146,
|
||||
"groups_with_nothing": 28,
|
||||
"pct_with_nothing": 1.3,
|
||||
"people_with_nothing": 373335,
|
||||
"groups_with_scripture": 1757,
|
||||
"groups_with_film": 2044,
|
||||
"band": "partial",
|
||||
"growing_unreached": 38,
|
||||
"deaths_day": 721.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Solomon Islands",
|
||||
"iso3": "SLB",
|
||||
"region": "Oceania",
|
||||
"people_groups": 79,
|
||||
"groups_with_nothing": 27,
|
||||
"pct_with_nothing": 34.2,
|
||||
"people_with_nothing": 91895,
|
||||
"groups_with_scripture": 34,
|
||||
"groups_with_film": 33,
|
||||
"band": "high",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Central African Republic",
|
||||
"iso3": "CAF",
|
||||
|
|
@ -302,29 +272,14 @@
|
|||
"deaths_day": 0.6,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "United States of America",
|
||||
"iso3": "USA",
|
||||
"region": "Americas",
|
||||
"people_groups": 623,
|
||||
"groups_with_nothing": 25,
|
||||
"pct_with_nothing": 4,
|
||||
"people_with_nothing": 337525,
|
||||
"groups_with_scripture": 517,
|
||||
"groups_with_film": 549,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "New Caledonia",
|
||||
"iso3": "NCL",
|
||||
"region": "Oceania",
|
||||
"people_groups": 42,
|
||||
"groups_with_nothing": 24,
|
||||
"pct_with_nothing": 57.1,
|
||||
"people_with_nothing": 101725,
|
||||
"groups_with_nothing": 23,
|
||||
"pct_with_nothing": 54.8,
|
||||
"people_with_nothing": 96825,
|
||||
"groups_with_scripture": 12,
|
||||
"groups_with_film": 11,
|
||||
"band": "high",
|
||||
|
|
@ -332,14 +287,44 @@
|
|||
"deaths_day": 0.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "India",
|
||||
"iso3": "IND",
|
||||
"region": "Asia",
|
||||
"people_groups": 2146,
|
||||
"groups_with_nothing": 20,
|
||||
"pct_with_nothing": 0.9,
|
||||
"people_with_nothing": 345835,
|
||||
"groups_with_scripture": 1757,
|
||||
"groups_with_film": 2044,
|
||||
"band": "partial",
|
||||
"growing_unreached": 38,
|
||||
"deaths_day": 721.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "United States of America",
|
||||
"iso3": "USA",
|
||||
"region": "Americas",
|
||||
"people_groups": 623,
|
||||
"groups_with_nothing": 20,
|
||||
"pct_with_nothing": 3.2,
|
||||
"people_with_nothing": 323925,
|
||||
"groups_with_scripture": 517,
|
||||
"groups_with_film": 549,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Nepal",
|
||||
"iso3": "NPL",
|
||||
"region": "Asia",
|
||||
"people_groups": 171,
|
||||
"groups_with_nothing": 21,
|
||||
"pct_with_nothing": 12.3,
|
||||
"people_with_nothing": 493850,
|
||||
"groups_with_nothing": 19,
|
||||
"pct_with_nothing": 11.1,
|
||||
"people_with_nothing": 489050,
|
||||
"groups_with_scripture": 97,
|
||||
"groups_with_film": 111,
|
||||
"band": "partial",
|
||||
|
|
@ -347,21 +332,6 @@
|
|||
"deaths_day": 34,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Philippines",
|
||||
"iso3": "PHL",
|
||||
"region": "Asia",
|
||||
"people_groups": 156,
|
||||
"groups_with_nothing": 19,
|
||||
"pct_with_nothing": 12.2,
|
||||
"people_with_nothing": 3110775,
|
||||
"groups_with_scripture": 108,
|
||||
"groups_with_film": 90,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Vietnam",
|
||||
"iso3": "VNM",
|
||||
|
|
@ -377,6 +347,21 @@
|
|||
"deaths_day": 5.7,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Philippines",
|
||||
"iso3": "PHL",
|
||||
"region": "Asia",
|
||||
"people_groups": 156,
|
||||
"groups_with_nothing": 17,
|
||||
"pct_with_nothing": 10.9,
|
||||
"people_with_nothing": 3104075,
|
||||
"groups_with_scripture": 108,
|
||||
"groups_with_film": 90,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Russian Federation",
|
||||
"iso3": "RUS",
|
||||
|
|
@ -392,6 +377,21 @@
|
|||
"deaths_day": 93.6,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Solomon Islands",
|
||||
"iso3": "SLB",
|
||||
"region": "Oceania",
|
||||
"people_groups": 79,
|
||||
"groups_with_nothing": 17,
|
||||
"pct_with_nothing": 21.5,
|
||||
"people_with_nothing": 53695,
|
||||
"groups_with_scripture": 34,
|
||||
"groups_with_film": 33,
|
||||
"band": "partial",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "United Republic of Tanzania",
|
||||
"iso3": "TZA",
|
||||
|
|
@ -437,21 +437,6 @@
|
|||
"deaths_day": null,
|
||||
"basis": "pins only — no curated country analysis for this country"
|
||||
},
|
||||
{
|
||||
"country": "Bhutan",
|
||||
"iso3": "BTN",
|
||||
"region": "Asia",
|
||||
"people_groups": 36,
|
||||
"groups_with_nothing": 13,
|
||||
"pct_with_nothing": 36.1,
|
||||
"people_with_nothing": 76125,
|
||||
"groups_with_scripture": 11,
|
||||
"groups_with_film": 16,
|
||||
"band": "high",
|
||||
"growing_unreached": 13,
|
||||
"deaths_day": 2.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "South Sudan",
|
||||
"iso3": "SSD",
|
||||
|
|
@ -467,21 +452,6 @@
|
|||
"deaths_day": 59,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Ethiopia",
|
||||
"iso3": "ETH",
|
||||
"region": "Africa",
|
||||
"people_groups": 119,
|
||||
"groups_with_nothing": 11,
|
||||
"pct_with_nothing": 9.2,
|
||||
"people_with_nothing": 1568400,
|
||||
"groups_with_scripture": 59,
|
||||
"groups_with_film": 95,
|
||||
"band": "partial",
|
||||
"growing_unreached": 8,
|
||||
"deaths_day": 130,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Oman",
|
||||
"iso3": "OMN",
|
||||
|
|
@ -512,14 +482,44 @@
|
|||
"deaths_day": 5.4,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Bhutan",
|
||||
"iso3": "BTN",
|
||||
"region": "Asia",
|
||||
"people_groups": 36,
|
||||
"groups_with_nothing": 11,
|
||||
"pct_with_nothing": 30.6,
|
||||
"people_with_nothing": 70525,
|
||||
"groups_with_scripture": 11,
|
||||
"groups_with_film": 16,
|
||||
"band": "high",
|
||||
"growing_unreached": 13,
|
||||
"deaths_day": 2.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Ethiopia",
|
||||
"iso3": "ETH",
|
||||
"region": "Africa",
|
||||
"people_groups": 119,
|
||||
"groups_with_nothing": 10,
|
||||
"pct_with_nothing": 8.4,
|
||||
"people_with_nothing": 1564200,
|
||||
"groups_with_scripture": 59,
|
||||
"groups_with_film": 95,
|
||||
"band": "partial",
|
||||
"growing_unreached": 8,
|
||||
"deaths_day": 130,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Colombia",
|
||||
"iso3": "COL",
|
||||
"region": "Americas",
|
||||
"people_groups": 98,
|
||||
"groups_with_nothing": 11,
|
||||
"pct_with_nothing": 11.2,
|
||||
"people_with_nothing": 11225,
|
||||
"groups_with_nothing": 10,
|
||||
"pct_with_nothing": 10.2,
|
||||
"people_with_nothing": 8725,
|
||||
"groups_with_scripture": 80,
|
||||
"groups_with_film": 51,
|
||||
"band": "partial",
|
||||
|
|
@ -557,21 +557,6 @@
|
|||
"deaths_day": 25.8,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Cote d'Ivoire",
|
||||
"iso3": "CIV",
|
||||
"region": "Africa",
|
||||
"people_groups": 83,
|
||||
"groups_with_nothing": 8,
|
||||
"pct_with_nothing": 9.6,
|
||||
"people_with_nothing": 266300,
|
||||
"groups_with_scripture": 44,
|
||||
"groups_with_film": 53,
|
||||
"band": "partial",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 3.7,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Japan",
|
||||
"iso3": "JPN",
|
||||
|
|
@ -588,33 +573,18 @@
|
|||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "French Polynesia",
|
||||
"iso3": "PYF",
|
||||
"region": "Oceania",
|
||||
"people_groups": 14,
|
||||
"groups_with_nothing": 8,
|
||||
"pct_with_nothing": 57.1,
|
||||
"people_with_nothing": 41775,
|
||||
"groups_with_scripture": 3,
|
||||
"groups_with_film": 5,
|
||||
"band": "high",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Cambodia",
|
||||
"iso3": "KHM",
|
||||
"region": "Asia",
|
||||
"people_groups": 28,
|
||||
"country": "Cote d'Ivoire",
|
||||
"iso3": "CIV",
|
||||
"region": "Africa",
|
||||
"people_groups": 83,
|
||||
"groups_with_nothing": 7,
|
||||
"pct_with_nothing": 25,
|
||||
"people_with_nothing": 175300,
|
||||
"groups_with_scripture": 20,
|
||||
"groups_with_film": 17,
|
||||
"pct_with_nothing": 8.4,
|
||||
"people_with_nothing": 262200,
|
||||
"groups_with_scripture": 44,
|
||||
"groups_with_film": 53,
|
||||
"band": "partial",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 2.8,
|
||||
"deaths_day": 3.7,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
|
|
@ -647,6 +617,21 @@
|
|||
"deaths_day": null,
|
||||
"basis": "pins only — no curated country analysis for this country"
|
||||
},
|
||||
{
|
||||
"country": "French Polynesia",
|
||||
"iso3": "PYF",
|
||||
"region": "Oceania",
|
||||
"people_groups": 14,
|
||||
"groups_with_nothing": 7,
|
||||
"pct_with_nothing": 50,
|
||||
"people_with_nothing": 37775,
|
||||
"groups_with_scripture": 3,
|
||||
"groups_with_film": 5,
|
||||
"band": "high",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Pakistan",
|
||||
"iso3": "PAK",
|
||||
|
|
@ -693,18 +678,18 @@
|
|||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Guinea",
|
||||
"iso3": "GIN",
|
||||
"region": "Africa",
|
||||
"people_groups": 41,
|
||||
"country": "Cambodia",
|
||||
"iso3": "KHM",
|
||||
"region": "Asia",
|
||||
"people_groups": 28,
|
||||
"groups_with_nothing": 6,
|
||||
"pct_with_nothing": 14.6,
|
||||
"people_with_nothing": 156400,
|
||||
"groups_with_scripture": 19,
|
||||
"groups_with_film": 24,
|
||||
"pct_with_nothing": 21.4,
|
||||
"people_with_nothing": 171400,
|
||||
"groups_with_scripture": 20,
|
||||
"groups_with_film": 17,
|
||||
"band": "partial",
|
||||
"growing_unreached": 7,
|
||||
"deaths_day": 14.5,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 2.8,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
|
|
@ -752,36 +737,6 @@
|
|||
"deaths_day": 285.5,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Afghanistan",
|
||||
"iso3": "AFG",
|
||||
"region": "Asia",
|
||||
"people_groups": 45,
|
||||
"groups_with_nothing": 5,
|
||||
"pct_with_nothing": 11.1,
|
||||
"people_with_nothing": 601500,
|
||||
"groups_with_scripture": 15,
|
||||
"groups_with_film": 25,
|
||||
"band": "partial",
|
||||
"growing_unreached": 17,
|
||||
"deaths_day": 17.6,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Ghana",
|
||||
"iso3": "GHA",
|
||||
"region": "Africa",
|
||||
"people_groups": 96,
|
||||
"groups_with_nothing": 5,
|
||||
"pct_with_nothing": 5.2,
|
||||
"people_with_nothing": 422600,
|
||||
"groups_with_scripture": 71,
|
||||
"groups_with_film": 70,
|
||||
"band": "partial",
|
||||
"growing_unreached": null,
|
||||
"deaths_day": null,
|
||||
"basis": "pins only — no curated country analysis for this country"
|
||||
},
|
||||
{
|
||||
"country": "Brunei Darussalam",
|
||||
"iso3": "BRN",
|
||||
|
|
@ -962,6 +917,21 @@
|
|||
"deaths_day": 1.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Guinea",
|
||||
"iso3": "GIN",
|
||||
"region": "Africa",
|
||||
"people_groups": 41,
|
||||
"groups_with_nothing": 4,
|
||||
"pct_with_nothing": 9.8,
|
||||
"people_with_nothing": 146600,
|
||||
"groups_with_scripture": 19,
|
||||
"groups_with_film": 24,
|
||||
"band": "partial",
|
||||
"growing_unreached": 7,
|
||||
"deaths_day": 14.5,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Equatorial Guinea",
|
||||
"iso3": "GNQ",
|
||||
|
|
@ -1052,6 +1022,21 @@
|
|||
"deaths_day": 0.3,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Ghana",
|
||||
"iso3": "GHA",
|
||||
"region": "Africa",
|
||||
"people_groups": 96,
|
||||
"groups_with_nothing": 3,
|
||||
"pct_with_nothing": 3.1,
|
||||
"people_with_nothing": 416000,
|
||||
"groups_with_scripture": 71,
|
||||
"groups_with_film": 70,
|
||||
"band": "partial",
|
||||
"growing_unreached": null,
|
||||
"deaths_day": null,
|
||||
"basis": "pins only — no curated country analysis for this country"
|
||||
},
|
||||
{
|
||||
"country": "Zambia",
|
||||
"iso3": "ZMB",
|
||||
|
|
@ -1187,21 +1172,6 @@
|
|||
"deaths_day": 0,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Tajikistan",
|
||||
"iso3": "TJK",
|
||||
"region": "Asia",
|
||||
"people_groups": 29,
|
||||
"groups_with_nothing": 3,
|
||||
"pct_with_nothing": 10.3,
|
||||
"people_with_nothing": 6600,
|
||||
"groups_with_scripture": 21,
|
||||
"groups_with_film": 23,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 1.3,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "French Guiana",
|
||||
"iso3": "GUF",
|
||||
|
|
@ -1307,6 +1277,21 @@
|
|||
"deaths_day": 16.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Afghanistan",
|
||||
"iso3": "AFG",
|
||||
"region": "Asia",
|
||||
"people_groups": 45,
|
||||
"groups_with_nothing": 2,
|
||||
"pct_with_nothing": 4.4,
|
||||
"people_with_nothing": 594000,
|
||||
"groups_with_scripture": 15,
|
||||
"groups_with_film": 25,
|
||||
"band": "partial",
|
||||
"growing_unreached": 17,
|
||||
"deaths_day": 17.6,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Uganda",
|
||||
"iso3": "UGA",
|
||||
|
|
@ -1667,6 +1652,21 @@
|
|||
"deaths_day": 0.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Tajikistan",
|
||||
"iso3": "TJK",
|
||||
"region": "Asia",
|
||||
"people_groups": 29,
|
||||
"groups_with_nothing": 2,
|
||||
"pct_with_nothing": 6.9,
|
||||
"people_with_nothing": 4700,
|
||||
"groups_with_scripture": 21,
|
||||
"groups_with_film": 23,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 1.3,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Comoros",
|
||||
"iso3": "COM",
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@
|
|||
"meta": {
|
||||
"title": "The Deaf Gap",
|
||||
"grain": "one row per Deaf people group",
|
||||
"generated": "2026-09-24",
|
||||
"generated": "2026-09-25",
|
||||
"measured": "150 sign languages · 234 people groups · 84,159,050 people. 136 languages / 183 groups / 55,199,840 people with NOTHING found.",
|
||||
"bridge_rule": "A sign language is bridged ONLY by another sign language. Text and audio in a spoken language do not reach a Deaf community.",
|
||||
"compounding_problem": "40 of these languages carry PRIVATE-USE (qaa-qtz) codes outside ISO 639-3. No resource pool indexes a private-use code, so those groups cannot be matched to a resource even if one exists.",
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
"bridge_strength_note": "MEASURED: 24% of aligned rows rest on a bridge shared by only 2-3 groups. bridge_strength grades this (strong >=8 groups, moderate >=4, weak <4). A WEAK bridge is a hypothesis, not a route — e.g. \"Gawri\" was offered as the bridge for 10.3M Pakistanis where the real lingua franca is Urdu, which no unengaged group here claims as primary and which this method therefore cannot see. Filter on bridge_strength before acting.",
|
||||
"bridge_caveat": "A bridge candidate is measured from THIS corpus (a language primary to >1 DX group in the country). It is NOT proof the group speaks it, and it is NOT a national trade language — a lingua franca no unengaged group claims as primary is invisible here.",
|
||||
"pools_caveat": "Resource status is from eBible + JESUS Film. GRN and FCBH audio are key-blocked and unchecked — absence is never proof.",
|
||||
"resource_flags_refreshed": "2026-09-24",
|
||||
"resource_flags_refreshed": "2026-09-25",
|
||||
"resource_flags_source": "data/tables/people-group-pins.json — the same index the map draws. Curated bridge, internet and channel columns are untouched."
|
||||
},
|
||||
"columns": [
|
||||
|
|
@ -3275,7 +3275,7 @@
|
|||
"population": 3000,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "",
|
||||
"bridge_iso639_3": "",
|
||||
|
|
@ -3283,13 +3283,13 @@
|
|||
"bridge_strength": "",
|
||||
"bridge_has_scripture": false,
|
||||
"bridge_has_film": false,
|
||||
"gap": true,
|
||||
"gap": false,
|
||||
"internet_access": "yes",
|
||||
"internet_pct": 91.3,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": false,
|
||||
"status": "gap — nothing found in heart or bridge language",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -3483,7 +3483,7 @@
|
|||
"population": 2400,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "",
|
||||
"bridge_iso639_3": "",
|
||||
|
|
@ -3491,13 +3491,13 @@
|
|||
"bridge_strength": "",
|
||||
"bridge_has_scripture": false,
|
||||
"bridge_has_film": false,
|
||||
"gap": true,
|
||||
"gap": false,
|
||||
"internet_access": "yes",
|
||||
"internet_pct": 91.3,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": false,
|
||||
"status": "gap — nothing found in heart or bridge language",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -35801,8 +35801,8 @@
|
|||
"population": 4900,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Pulaar",
|
||||
"bridge_iso639_3": "fuc",
|
||||
"bridge_groups_in_country": 2,
|
||||
|
|
@ -35814,8 +35814,8 @@
|
|||
"internet_pct": 33.3,
|
||||
"top_channel": "Facebook",
|
||||
"channel_source": "referral share",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -36295,8 +36295,8 @@
|
|||
"population": 4700,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Hausa",
|
||||
"bridge_iso639_3": "hau",
|
||||
"bridge_groups_in_country": 4,
|
||||
|
|
@ -36308,8 +36308,8 @@
|
|||
"internet_pct": 41.2,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -36321,8 +36321,8 @@
|
|||
"population": 4700,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Hausa",
|
||||
"bridge_iso639_3": "hau",
|
||||
"bridge_groups_in_country": 4,
|
||||
|
|
@ -36334,8 +36334,8 @@
|
|||
"internet_pct": 41.2,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -36529,8 +36529,8 @@
|
|||
"population": 4600,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Hausa",
|
||||
"bridge_iso639_3": "hau",
|
||||
"bridge_groups_in_country": 4,
|
||||
|
|
@ -36542,8 +36542,8 @@
|
|||
"internet_pct": 41.2,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -36685,8 +36685,8 @@
|
|||
"population": 4500,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Telugu",
|
||||
"bridge_iso639_3": "tel",
|
||||
"bridge_groups_in_country": 122,
|
||||
|
|
@ -36698,8 +36698,8 @@
|
|||
"internet_pct": 64.9,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -37465,8 +37465,8 @@
|
|||
"population": 4000,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Telugu",
|
||||
"bridge_iso639_3": "tel",
|
||||
"bridge_groups_in_country": 122,
|
||||
|
|
@ -37478,8 +37478,8 @@
|
|||
"internet_pct": 64.9,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -37647,8 +37647,8 @@
|
|||
"population": 4000,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Telugu",
|
||||
"bridge_iso639_3": "tel",
|
||||
"bridge_groups_in_country": 122,
|
||||
|
|
@ -37660,8 +37660,8 @@
|
|||
"internet_pct": 64.9,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -38531,8 +38531,8 @@
|
|||
"population": 3600,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Akha",
|
||||
"bridge_iso639_3": "ahk",
|
||||
"bridge_groups_in_country": 12,
|
||||
|
|
@ -38544,8 +38544,8 @@
|
|||
"internet_pct": 65.6,
|
||||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -38999,8 +38999,8 @@
|
|||
"population": 3300,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Arabic, Chadian",
|
||||
"bridge_iso639_3": "shu",
|
||||
"bridge_groups_in_country": 5,
|
||||
|
|
@ -39013,7 +39013,7 @@
|
|||
"top_channel": "Facebook",
|
||||
"channel_source": "referral share",
|
||||
"aligned": false,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -39467,8 +39467,8 @@
|
|||
"population": 3000,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Dari",
|
||||
"bridge_iso639_3": "prs",
|
||||
"bridge_groups_in_country": 2,
|
||||
|
|
@ -39481,7 +39481,7 @@
|
|||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": false,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -39909,8 +39909,8 @@
|
|||
"population": 2700,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Akha",
|
||||
"bridge_iso639_3": "ahk",
|
||||
"bridge_groups_in_country": 12,
|
||||
|
|
@ -39922,8 +39922,8 @@
|
|||
"internet_pct": 65.6,
|
||||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -40325,8 +40325,8 @@
|
|||
"population": 2600,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Telugu",
|
||||
"bridge_iso639_3": "tel",
|
||||
"bridge_groups_in_country": 122,
|
||||
|
|
@ -40338,8 +40338,8 @@
|
|||
"internet_pct": 64.9,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -40377,8 +40377,8 @@
|
|||
"population": 2500,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Chinese, Mandarin",
|
||||
"bridge_iso639_3": "cmn",
|
||||
"bridge_groups_in_country": 25,
|
||||
|
|
@ -40390,8 +40390,8 @@
|
|||
"internet_pct": 92,
|
||||
"top_channel": "Twitter",
|
||||
"channel_source": "referral share",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -40819,8 +40819,8 @@
|
|||
"population": 2400,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Nepali",
|
||||
"bridge_iso639_3": "npi",
|
||||
"bridge_groups_in_country": 23,
|
||||
|
|
@ -40833,7 +40833,7 @@
|
|||
"top_channel": "Facebook",
|
||||
"channel_source": "referral share",
|
||||
"aligned": false,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -41209,8 +41209,8 @@
|
|||
"population": 2300,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Chinese, Mandarin",
|
||||
"bridge_iso639_3": "cmn",
|
||||
"bridge_groups_in_country": 25,
|
||||
|
|
@ -41222,8 +41222,8 @@
|
|||
"internet_pct": 92,
|
||||
"top_channel": "Twitter",
|
||||
"channel_source": "referral share",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -41313,8 +41313,8 @@
|
|||
"population": 2300,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Akha",
|
||||
"bridge_iso639_3": "ahk",
|
||||
"bridge_groups_in_country": 12,
|
||||
|
|
@ -41326,8 +41326,8 @@
|
|||
"internet_pct": 65.6,
|
||||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -41339,8 +41339,8 @@
|
|||
"population": 2300,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Dari",
|
||||
"bridge_iso639_3": "prs",
|
||||
"bridge_groups_in_country": 2,
|
||||
|
|
@ -41353,7 +41353,7 @@
|
|||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": false,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -41521,8 +41521,8 @@
|
|||
"population": 2200,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Dari",
|
||||
"bridge_iso639_3": "prs",
|
||||
"bridge_groups_in_country": 2,
|
||||
|
|
@ -41535,7 +41535,7 @@
|
|||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": false,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -44303,8 +44303,8 @@
|
|||
"population": 1300,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Chinese, Mandarin",
|
||||
"bridge_iso639_3": "cmn",
|
||||
"bridge_groups_in_country": 25,
|
||||
|
|
@ -44316,8 +44316,8 @@
|
|||
"internet_pct": 92,
|
||||
"top_channel": "Twitter",
|
||||
"channel_source": "referral share",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -50361,8 +50361,8 @@
|
|||
"population": 450,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Portuguese",
|
||||
"bridge_iso639_3": "por",
|
||||
"bridge_groups_in_country": 41,
|
||||
|
|
@ -50374,8 +50374,8 @@
|
|||
"internet_pct": 84.5,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"generated": "2026-08-01",
|
||||
"band_rule": "critical >=60% of a country's unengaged groups with NO resource found · high >=30% · partial >0 · covered 0",
|
||||
"caveat": "NO RESOURCE means not found in the pools checked — eBible, PNG.Bible, Arclight/JESUS Film, Door43 and Faith Comes By Hearing. GRN audio, api.bible, DBL and progress.bible are unchecked; absence here is never proof that nothing exists.",
|
||||
"refreshed": "2026-09-24",
|
||||
"refreshed": "2026-09-25",
|
||||
"basis": "data/tables/people-group-pins.json — the same index the pins are drawn from, so the fill and the dots cannot disagree.",
|
||||
"curated_columns": "growing_unreached, deaths_day and growth come from the curated country analysis over a narrower set and are NOT derived from the pins. A row flagged from_pins_only carries null for all three, because this build does not know them — null, never zero, which would be a claim."
|
||||
},
|
||||
|
|
@ -14,14 +14,14 @@
|
|||
"country": "People's Republic of China",
|
||||
"region": "Asia",
|
||||
"groups": 391,
|
||||
"no_resource": 89,
|
||||
"pop_no_resource": 127361200,
|
||||
"no_resource": 85,
|
||||
"pop_no_resource": 127351400,
|
||||
"scripture": 118,
|
||||
"film": 227,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 274.2,
|
||||
"growth": -0.12,
|
||||
"pct_no_resource": 22.8,
|
||||
"pct_no_resource": 21.7,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -29,29 +29,29 @@
|
|||
"country": "Lao People's Democratic Republic",
|
||||
"region": "Asia",
|
||||
"groups": 158,
|
||||
"no_resource": 50,
|
||||
"pop_no_resource": 705585,
|
||||
"no_resource": 46,
|
||||
"pop_no_resource": 693785,
|
||||
"scripture": 55,
|
||||
"film": 58,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 15.5,
|
||||
"growth": null,
|
||||
"pct_no_resource": 31.6,
|
||||
"band": "high"
|
||||
"pct_no_resource": 29.1,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
"iso3": "IND",
|
||||
"country": "India",
|
||||
"region": "Asia",
|
||||
"groups": 2146,
|
||||
"no_resource": 28,
|
||||
"pop_no_resource": 373335,
|
||||
"no_resource": 20,
|
||||
"pop_no_resource": 345835,
|
||||
"scripture": 1757,
|
||||
"film": 2044,
|
||||
"growing_unreached": 38,
|
||||
"deaths_day": 721.2,
|
||||
"growth": 0.89,
|
||||
"pct_no_resource": 1.3,
|
||||
"pct_no_resource": 0.9,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -59,14 +59,14 @@
|
|||
"country": "Brazil",
|
||||
"region": "Americas",
|
||||
"groups": 270,
|
||||
"no_resource": 55,
|
||||
"pop_no_resource": 30680,
|
||||
"no_resource": 52,
|
||||
"pop_no_resource": 24030,
|
||||
"scripture": 186,
|
||||
"film": 163,
|
||||
"growing_unreached": 38,
|
||||
"deaths_day": 1.2,
|
||||
"growth": 0.41,
|
||||
"pct_no_resource": 20.4,
|
||||
"pct_no_resource": 19.3,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -74,14 +74,14 @@
|
|||
"country": "Chad",
|
||||
"region": "Africa",
|
||||
"groups": 150,
|
||||
"no_resource": 43,
|
||||
"pop_no_resource": 1282450,
|
||||
"no_resource": 42,
|
||||
"pop_no_resource": 1279150,
|
||||
"scripture": 46,
|
||||
"film": 49,
|
||||
"growing_unreached": 37,
|
||||
"deaths_day": 68.4,
|
||||
"growth": 4.95,
|
||||
"pct_no_resource": 28.7,
|
||||
"pct_no_resource": 28,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -104,14 +104,14 @@
|
|||
"country": "Nigeria",
|
||||
"region": "Africa",
|
||||
"groups": 433,
|
||||
"no_resource": 76,
|
||||
"pop_no_resource": 3069025,
|
||||
"no_resource": 62,
|
||||
"pop_no_resource": 3015225,
|
||||
"scripture": 105,
|
||||
"film": 188,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 44,
|
||||
"growth": null,
|
||||
"pct_no_resource": 17.6,
|
||||
"pct_no_resource": 14.3,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -119,14 +119,14 @@
|
|||
"country": "Indonesia",
|
||||
"region": "Asia",
|
||||
"groups": 669,
|
||||
"no_resource": 276,
|
||||
"pop_no_resource": 4268480,
|
||||
"no_resource": 256,
|
||||
"pop_no_resource": 4210680,
|
||||
"scripture": 222,
|
||||
"film": 265,
|
||||
"growing_unreached": 23,
|
||||
"deaths_day": 47.2,
|
||||
"growth": 0.81,
|
||||
"pct_no_resource": 41.3,
|
||||
"pct_no_resource": 38.3,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -134,14 +134,14 @@
|
|||
"country": "Afghanistan",
|
||||
"region": "Asia",
|
||||
"groups": 45,
|
||||
"no_resource": 5,
|
||||
"pop_no_resource": 601500,
|
||||
"no_resource": 2,
|
||||
"pop_no_resource": 594000,
|
||||
"scripture": 15,
|
||||
"film": 25,
|
||||
"growing_unreached": 17,
|
||||
"deaths_day": 17.6,
|
||||
"growth": 2.84,
|
||||
"pct_no_resource": 11.1,
|
||||
"pct_no_resource": 4.4,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -164,14 +164,14 @@
|
|||
"country": "Bhutan",
|
||||
"region": "Asia",
|
||||
"groups": 36,
|
||||
"no_resource": 13,
|
||||
"pop_no_resource": 76125,
|
||||
"no_resource": 11,
|
||||
"pop_no_resource": 70525,
|
||||
"scripture": 11,
|
||||
"film": 16,
|
||||
"growing_unreached": 13,
|
||||
"deaths_day": 2.1,
|
||||
"growth": 0.65,
|
||||
"pct_no_resource": 36.1,
|
||||
"pct_no_resource": 30.6,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -224,14 +224,14 @@
|
|||
"country": "Ethiopia",
|
||||
"region": "Africa",
|
||||
"groups": 119,
|
||||
"no_resource": 11,
|
||||
"pop_no_resource": 1568400,
|
||||
"no_resource": 10,
|
||||
"pop_no_resource": 1564200,
|
||||
"scripture": 59,
|
||||
"film": 95,
|
||||
"growing_unreached": 8,
|
||||
"deaths_day": 130,
|
||||
"growth": 2.58,
|
||||
"pct_no_resource": 9.2,
|
||||
"pct_no_resource": 8.4,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -269,14 +269,14 @@
|
|||
"country": "Malaysia",
|
||||
"region": "Asia",
|
||||
"groups": 160,
|
||||
"no_resource": 59,
|
||||
"pop_no_resource": 1784950,
|
||||
"no_resource": 58,
|
||||
"pop_no_resource": 1781950,
|
||||
"scripture": 75,
|
||||
"film": 68,
|
||||
"growing_unreached": 8,
|
||||
"deaths_day": 8.2,
|
||||
"growth": 1.22,
|
||||
"pct_no_resource": 36.9,
|
||||
"pct_no_resource": 36.3,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -284,14 +284,14 @@
|
|||
"country": "Cameroon",
|
||||
"region": "Africa",
|
||||
"groups": 260,
|
||||
"no_resource": 65,
|
||||
"pop_no_resource": 1358325,
|
||||
"no_resource": 59,
|
||||
"pop_no_resource": 1337925,
|
||||
"scripture": 72,
|
||||
"film": 84,
|
||||
"growing_unreached": 8,
|
||||
"deaths_day": 3.4,
|
||||
"growth": 2.61,
|
||||
"pct_no_resource": 25,
|
||||
"pct_no_resource": 22.7,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -314,14 +314,14 @@
|
|||
"country": "Guinea",
|
||||
"region": "Africa",
|
||||
"groups": 41,
|
||||
"no_resource": 6,
|
||||
"pop_no_resource": 156400,
|
||||
"no_resource": 4,
|
||||
"pop_no_resource": 146600,
|
||||
"scripture": 19,
|
||||
"film": 24,
|
||||
"growing_unreached": 7,
|
||||
"deaths_day": 14.5,
|
||||
"growth": 2.4,
|
||||
"pct_no_resource": 14.6,
|
||||
"pct_no_resource": 9.8,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -359,14 +359,14 @@
|
|||
"country": "Nepal",
|
||||
"region": "Asia",
|
||||
"groups": 171,
|
||||
"no_resource": 21,
|
||||
"pop_no_resource": 493850,
|
||||
"no_resource": 19,
|
||||
"pop_no_resource": 489050,
|
||||
"scripture": 97,
|
||||
"film": 111,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 34,
|
||||
"growth": null,
|
||||
"pct_no_resource": 12.3,
|
||||
"pct_no_resource": 11.1,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -419,14 +419,14 @@
|
|||
"country": "Colombia",
|
||||
"region": "Americas",
|
||||
"groups": 98,
|
||||
"no_resource": 11,
|
||||
"pop_no_resource": 11225,
|
||||
"no_resource": 10,
|
||||
"pop_no_resource": 8725,
|
||||
"scripture": 80,
|
||||
"film": 51,
|
||||
"growing_unreached": 6,
|
||||
"deaths_day": 1.6,
|
||||
"growth": 1.07,
|
||||
"pct_no_resource": 11.2,
|
||||
"pct_no_resource": 10.2,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -914,14 +914,14 @@
|
|||
"country": "Cambodia",
|
||||
"region": "Asia",
|
||||
"groups": 28,
|
||||
"no_resource": 7,
|
||||
"pop_no_resource": 175300,
|
||||
"no_resource": 6,
|
||||
"pop_no_resource": 171400,
|
||||
"scripture": 20,
|
||||
"film": 17,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 2.8,
|
||||
"growth": 1.23,
|
||||
"pct_no_resource": 25,
|
||||
"pct_no_resource": 21.4,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -959,14 +959,14 @@
|
|||
"country": "Cote d'Ivoire",
|
||||
"region": "Africa",
|
||||
"groups": 83,
|
||||
"no_resource": 8,
|
||||
"pop_no_resource": 266300,
|
||||
"no_resource": 7,
|
||||
"pop_no_resource": 262200,
|
||||
"scripture": 44,
|
||||
"film": 53,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 3.7,
|
||||
"growth": 2.44,
|
||||
"pct_no_resource": 9.6,
|
||||
"pct_no_resource": 8.4,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -1049,14 +1049,14 @@
|
|||
"country": "Papua New Guinea",
|
||||
"region": "Oceania",
|
||||
"groups": 831,
|
||||
"no_resource": 404,
|
||||
"pop_no_resource": 1095850,
|
||||
"no_resource": 350,
|
||||
"pop_no_resource": 946300,
|
||||
"scripture": 332,
|
||||
"film": 143,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0.9,
|
||||
"growth": 1.78,
|
||||
"pct_no_resource": 48.6,
|
||||
"pct_no_resource": 42.1,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -1214,15 +1214,15 @@
|
|||
"country": "Solomon Islands",
|
||||
"region": "Oceania",
|
||||
"groups": 79,
|
||||
"no_resource": 27,
|
||||
"pop_no_resource": 91895,
|
||||
"no_resource": 17,
|
||||
"pop_no_resource": 53695,
|
||||
"scripture": 34,
|
||||
"film": 33,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0.1,
|
||||
"growth": 2.37,
|
||||
"pct_no_resource": 34.2,
|
||||
"band": "high"
|
||||
"pct_no_resource": 21.5,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
"iso3": "SUR",
|
||||
|
|
@ -1319,14 +1319,14 @@
|
|||
"country": "New Caledonia",
|
||||
"region": "Oceania",
|
||||
"groups": 42,
|
||||
"no_resource": 24,
|
||||
"pop_no_resource": 101725,
|
||||
"no_resource": 23,
|
||||
"pop_no_resource": 96825,
|
||||
"scripture": 12,
|
||||
"film": 11,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0.1,
|
||||
"growth": 0.95,
|
||||
"pct_no_resource": 57.1,
|
||||
"pct_no_resource": 54.8,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -1394,14 +1394,14 @@
|
|||
"country": "French Polynesia",
|
||||
"region": "Oceania",
|
||||
"groups": 14,
|
||||
"no_resource": 8,
|
||||
"pop_no_resource": 41775,
|
||||
"no_resource": 7,
|
||||
"pop_no_resource": 37775,
|
||||
"scripture": 3,
|
||||
"film": 5,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"growth": 0.24,
|
||||
"pct_no_resource": 57.1,
|
||||
"pct_no_resource": 50,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -1439,15 +1439,15 @@
|
|||
"country": "Vanuatu",
|
||||
"region": "Oceania",
|
||||
"groups": 114,
|
||||
"no_resource": 74,
|
||||
"pop_no_resource": 87135,
|
||||
"no_resource": 68,
|
||||
"pop_no_resource": 72200,
|
||||
"scripture": 28,
|
||||
"film": 26,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"growth": 2.27,
|
||||
"pct_no_resource": 64.9,
|
||||
"band": "critical"
|
||||
"pct_no_resource": 59.6,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
"iso3": "STP",
|
||||
|
|
@ -2039,14 +2039,14 @@
|
|||
"country": "Tajikistan",
|
||||
"region": "Asia",
|
||||
"groups": 29,
|
||||
"no_resource": 3,
|
||||
"pop_no_resource": 6600,
|
||||
"no_resource": 2,
|
||||
"pop_no_resource": 4700,
|
||||
"scripture": 21,
|
||||
"film": 23,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 1.3,
|
||||
"growth": 1.92,
|
||||
"pct_no_resource": 10.3,
|
||||
"pct_no_resource": 6.9,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -2144,14 +2144,14 @@
|
|||
"country": "Philippines",
|
||||
"region": "Asia",
|
||||
"groups": 156,
|
||||
"no_resource": 19,
|
||||
"pop_no_resource": 3110775,
|
||||
"no_resource": 17,
|
||||
"pop_no_resource": 3104075,
|
||||
"scripture": 108,
|
||||
"film": 90,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.2,
|
||||
"growth": 0.83,
|
||||
"pct_no_resource": 12.2,
|
||||
"pct_no_resource": 10.9,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -2264,14 +2264,14 @@
|
|||
"country": "United States of America",
|
||||
"region": "Americas",
|
||||
"groups": 623,
|
||||
"no_resource": 25,
|
||||
"pop_no_resource": 337525,
|
||||
"no_resource": 20,
|
||||
"pop_no_resource": 323925,
|
||||
"scripture": 517,
|
||||
"film": 549,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.1,
|
||||
"growth": 0.96,
|
||||
"pct_no_resource": 4,
|
||||
"pct_no_resource": 3.2,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -2836,14 +2836,14 @@
|
|||
"country": "Ghana",
|
||||
"region": "Africa",
|
||||
"groups": 96,
|
||||
"no_resource": 5,
|
||||
"pop_no_resource": 422600,
|
||||
"no_resource": 3,
|
||||
"pop_no_resource": 416000,
|
||||
"scripture": 71,
|
||||
"film": 70,
|
||||
"growing_unreached": null,
|
||||
"deaths_day": null,
|
||||
"growth": null,
|
||||
"pct_no_resource": 5.2,
|
||||
"pct_no_resource": 3.1,
|
||||
"band": "partial",
|
||||
"from_pins_only": true
|
||||
},
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"meta": {
|
||||
"title": "Gospel resource link verification",
|
||||
"generated": "2026-09-24T23:13:38.725Z",
|
||||
"generated": "2026-09-25T00:17:42.379Z",
|
||||
"method": "HEAD, redirects followed. verified = HTTP 200. broken = 404/410. unknown = unreachable, an ambiguous status, or a URL shape that cannot be checked by fetch.",
|
||||
"scope": "Every URL in data/tables/people-group-pins.json, deduplicated.",
|
||||
"states": {
|
||||
|
|
@ -86,12 +86,12 @@
|
|||
]
|
||||
},
|
||||
"summary": {
|
||||
"records": 8151,
|
||||
"checkedThisPass": 74,
|
||||
"records": 8291,
|
||||
"checkedThisPass": 62,
|
||||
"carriedForward": 74,
|
||||
"pruned": 0,
|
||||
"broken": 74,
|
||||
"verified": 8072,
|
||||
"verified": 8212,
|
||||
"unknown": 5
|
||||
},
|
||||
"byHost": {
|
||||
|
|
@ -132,7 +132,7 @@
|
|||
"verified": 921
|
||||
},
|
||||
"fivefish.org": {
|
||||
"verified": 660
|
||||
"verified": 800
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -40891,6 +40891,706 @@
|
|||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3121?language=Bana%27)",
|
||||
"at": "2026-09-24T23:13:38.549Z"
|
||||
},
|
||||
"https://fivefish.org/can": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3258?language=Chambri)",
|
||||
"at": "2026-09-24T23:45:33.722Z"
|
||||
},
|
||||
"https://fivefish.org/kzz": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1660?language=Kalabara%20Group)",
|
||||
"at": "2026-09-24T23:45:33.743Z"
|
||||
},
|
||||
"https://fivefish.org/bpv": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1908?language=Bian%20Group%20%282%29)",
|
||||
"at": "2026-09-24T23:45:33.784Z"
|
||||
},
|
||||
"https://fivefish.org/ega": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/9517?language=Ega)",
|
||||
"at": "2026-09-24T23:45:33.807Z"
|
||||
},
|
||||
"https://fivefish.org/tqu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3605?language=Baniata)",
|
||||
"at": "2026-09-24T23:45:33.825Z"
|
||||
},
|
||||
"https://fivefish.org/ksg": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/5175?language=Kusaghe)",
|
||||
"at": "2026-09-24T23:45:33.934Z"
|
||||
},
|
||||
"https://fivefish.org/kcs": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/12093?language=Koenoem)",
|
||||
"at": "2026-09-24T23:45:33.954Z"
|
||||
},
|
||||
"https://fivefish.org/nps": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/15002?language=Nipsan)",
|
||||
"at": "2026-09-24T23:45:33.986Z"
|
||||
},
|
||||
"https://fivefish.org/sge": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/809?language=Ga%27ai)",
|
||||
"at": "2026-09-24T23:45:34.172Z"
|
||||
},
|
||||
"https://fivefish.org/twp": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1482?language=Londru)",
|
||||
"at": "2026-09-24T23:45:34.259Z"
|
||||
},
|
||||
"https://fivefish.org/svs": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3662?language=Savosavo)",
|
||||
"at": "2026-09-24T23:45:34.280Z"
|
||||
},
|
||||
"https://fivefish.org/mbq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/553?language=Maisin)",
|
||||
"at": "2026-09-24T23:45:34.299Z"
|
||||
},
|
||||
"https://fivefish.org/mqm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/23158?language=Marquesan%2C%20South)",
|
||||
"at": "2026-09-24T23:45:34.441Z"
|
||||
},
|
||||
"https://fivefish.org/sax": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4499?language=Sa)",
|
||||
"at": "2026-09-24T23:45:34.479Z"
|
||||
},
|
||||
"https://fivefish.org/gar": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2178?language=Garea%20%26%20Gameta)",
|
||||
"at": "2026-09-24T23:45:34.515Z"
|
||||
},
|
||||
"https://fivefish.org/blq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1487?language=Paluai)",
|
||||
"at": "2026-09-24T23:45:34.524Z"
|
||||
},
|
||||
"https://fivefish.org/dmr": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/822?language=Damar)",
|
||||
"at": "2026-09-24T23:45:34.702Z"
|
||||
},
|
||||
"https://fivefish.org/kce": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2570?language=Kaivi)",
|
||||
"at": "2026-09-24T23:45:34.769Z"
|
||||
},
|
||||
"https://fivefish.org/erg": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4462?language=Sie)",
|
||||
"at": "2026-09-24T23:45:34.885Z"
|
||||
},
|
||||
"https://fivefish.org/bcg": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2527?language=Baga)",
|
||||
"at": "2026-09-24T23:45:34.965Z"
|
||||
},
|
||||
"https://fivefish.org/lbu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/495?language=Labo)",
|
||||
"at": "2026-09-24T23:45:34.997Z"
|
||||
},
|
||||
"https://fivefish.org/kwe": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/12623?language=Kwerba)",
|
||||
"at": "2026-09-24T23:45:35.072Z"
|
||||
},
|
||||
"https://fivefish.org/xkt": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11533?language=Kantosi)",
|
||||
"at": "2026-09-24T23:45:35.182Z"
|
||||
},
|
||||
"https://fivefish.org/idi": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/563?language=Idi)",
|
||||
"at": "2026-09-24T23:45:35.226Z"
|
||||
},
|
||||
"https://fivefish.org/tva": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3672?language=Vaghua)",
|
||||
"at": "2026-09-24T23:45:35.469Z"
|
||||
},
|
||||
"https://fivefish.org/amb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1751?language=Ambo)",
|
||||
"at": "2026-09-24T23:45:35.563Z"
|
||||
},
|
||||
"https://fivefish.org/dby": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/639?language=Bainapi)",
|
||||
"at": "2026-09-24T23:45:35.572Z"
|
||||
},
|
||||
"https://fivefish.org/nmo": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/14567?language=Naga%2C%20Moyon)",
|
||||
"at": "2026-09-24T23:45:35.663Z"
|
||||
},
|
||||
"https://fivefish.org/xkk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11277?language=Kachok)",
|
||||
"at": "2026-09-24T23:45:35.669Z"
|
||||
},
|
||||
"https://fivefish.org/nke": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3614?language=Duke)",
|
||||
"at": "2026-09-24T23:45:35.676Z"
|
||||
},
|
||||
"https://fivefish.org/bye": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3873?language=Bo%27yei)",
|
||||
"at": "2026-09-24T23:45:35.727Z"
|
||||
},
|
||||
"https://fivefish.org/bya": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/256?language=Batak)",
|
||||
"at": "2026-09-24T23:45:35.928Z"
|
||||
},
|
||||
"https://fivefish.org/elk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3744?language=Olko)",
|
||||
"at": "2026-09-24T23:45:36.076Z"
|
||||
},
|
||||
"https://fivefish.org/mij": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6235?language=Missong%3A%20Bejune)",
|
||||
"at": "2026-09-24T23:45:36.250Z"
|
||||
},
|
||||
"https://fivefish.org/apm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3456?language=Apache%2C%20Mescalero)",
|
||||
"at": "2026-09-24T23:45:36.269Z"
|
||||
},
|
||||
"https://fivefish.org/lle": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/510?language=Lele)",
|
||||
"at": "2026-09-24T23:45:36.278Z"
|
||||
},
|
||||
"https://fivefish.org/bek": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/497?language=Bebeli)",
|
||||
"at": "2026-09-24T23:45:36.662Z"
|
||||
},
|
||||
"https://fivefish.org/fir": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2541?language=Kwakwi)",
|
||||
"at": "2026-09-24T23:45:36.701Z"
|
||||
},
|
||||
"https://fivefish.org/zik": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/506?language=Zimakani)",
|
||||
"at": "2026-09-24T23:45:36.713Z"
|
||||
},
|
||||
"https://fivefish.org/ywa": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3880?language=Kalou)",
|
||||
"at": "2026-09-24T23:45:36.805Z"
|
||||
},
|
||||
"https://fivefish.org/leq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3247?language=Lembena)",
|
||||
"at": "2026-09-24T23:45:37.128Z"
|
||||
},
|
||||
"https://fivefish.org/iai": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2743?language=Iai)",
|
||||
"at": "2026-09-24T23:45:37.180Z"
|
||||
},
|
||||
"https://fivefish.org/hoe": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2564?language=Horom)",
|
||||
"at": "2026-09-24T23:45:37.224Z"
|
||||
},
|
||||
"https://fivefish.org/sde": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2574?language=Surubu)",
|
||||
"at": "2026-09-24T23:45:37.280Z"
|
||||
},
|
||||
"https://fivefish.org/bqo": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/7618?language=Balo)",
|
||||
"at": "2026-09-24T23:45:37.596Z"
|
||||
},
|
||||
"https://fivefish.org/tmy": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/425?language=Tami)",
|
||||
"at": "2026-09-24T23:45:37.654Z"
|
||||
},
|
||||
"https://fivefish.org/gcn": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2497?language=Gaina)",
|
||||
"at": "2026-09-24T23:45:37.662Z"
|
||||
},
|
||||
"https://fivefish.org/tsx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/616?language=Mubami%3A%20Dausuami)",
|
||||
"at": "2026-09-24T23:45:37.916Z"
|
||||
},
|
||||
"https://fivefish.org/bzq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/8447?language=Buli)",
|
||||
"at": "2026-09-24T23:45:38.022Z"
|
||||
},
|
||||
"https://fivefish.org/kih": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3741?language=Kilmeri)",
|
||||
"at": "2026-09-24T23:45:38.152Z"
|
||||
},
|
||||
"https://fivefish.org/wli": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/18110?language=Waioli)",
|
||||
"at": "2026-09-24T23:45:38.247Z"
|
||||
},
|
||||
"https://fivefish.org/brq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3214?language=Breri%20Group)",
|
||||
"at": "2026-09-24T23:45:38.389Z"
|
||||
},
|
||||
"https://fivefish.org/dor": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3613?language=Dori%27o)",
|
||||
"at": "2026-09-24T23:45:38.497Z"
|
||||
},
|
||||
"https://fivefish.org/lvk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3636?language=Lavukaleve)",
|
||||
"at": "2026-09-24T23:45:38.634Z"
|
||||
},
|
||||
"https://fivefish.org/tbj": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1476?language=Dyaul)",
|
||||
"at": "2026-09-24T23:45:38.669Z"
|
||||
},
|
||||
"https://fivefish.org/kku": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2572?language=Kitimi)",
|
||||
"at": "2026-09-24T23:45:39.022Z"
|
||||
},
|
||||
"https://fivefish.org/bfh": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/628?language=West%20Morehead%20Group)",
|
||||
"at": "2026-09-24T23:45:39.073Z"
|
||||
},
|
||||
"https://fivefish.org/pkg": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/472?language=Pak)",
|
||||
"at": "2026-09-24T23:45:39.133Z"
|
||||
},
|
||||
"https://fivefish.org/brp": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1205?language=Barapasi)",
|
||||
"at": "2026-09-24T23:45:39.179Z"
|
||||
},
|
||||
"https://fivefish.org/tlx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/478?language=Khehek)",
|
||||
"at": "2026-09-24T23:45:39.464Z"
|
||||
},
|
||||
"https://fivefish.org/kcx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11267?language=Kachama-Ganjule%3A%20Ganta)",
|
||||
"at": "2026-09-24T23:45:39.594Z"
|
||||
},
|
||||
"https://fivefish.org/pwa": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/549?language=Pauaia)",
|
||||
"at": "2026-09-24T23:45:39.696Z"
|
||||
},
|
||||
"https://fivefish.org/isk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3369?language=Ishkashimi)",
|
||||
"at": "2026-09-24T23:45:40.028Z"
|
||||
},
|
||||
"https://fivefish.org/saa": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3108?language=Saba)",
|
||||
"at": "2026-09-24T23:45:40.178Z"
|
||||
},
|
||||
"https://fivefish.org/sdp": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/16613?language=Sherdukpen)",
|
||||
"at": "2026-09-24T23:45:40.624Z"
|
||||
},
|
||||
"https://fivefish.org/sqq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/16872?language=Sou)",
|
||||
"at": "2026-09-24T23:45:40.791Z"
|
||||
},
|
||||
"https://fivefish.org/bkk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/8374?language=Brokskat)",
|
||||
"at": "2026-09-24T23:45:41.240Z"
|
||||
},
|
||||
"https://fivefish.org/aio": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6793?language=Aiton)",
|
||||
"at": "2026-09-24T23:45:41.374Z"
|
||||
},
|
||||
"https://fivefish.org/aik": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6817?language=Akye)",
|
||||
"at": "2026-09-24T23:45:41.384Z"
|
||||
},
|
||||
"https://fivefish.org/lgu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3638?language=Longgu)",
|
||||
"at": "2026-09-24T23:45:41.461Z"
|
||||
},
|
||||
"https://fivefish.org/knm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3514?language=Kanamar%C3%AD)",
|
||||
"at": "2026-09-24T23:45:41.515Z"
|
||||
},
|
||||
"https://fivefish.org/giw": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6046?language=Galao%2C%20White)",
|
||||
"at": "2026-09-24T23:45:41.570Z"
|
||||
},
|
||||
"https://fivefish.org/dia": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3753?language=Alu)",
|
||||
"at": "2026-09-24T23:45:41.580Z"
|
||||
},
|
||||
"https://fivefish.org/aim": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3822?language=Aimol)",
|
||||
"at": "2026-09-24T23:45:41.761Z"
|
||||
},
|
||||
"https://fivefish.org/jmb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2666?language=Jimbin)",
|
||||
"at": "2026-09-24T23:45:41.771Z"
|
||||
},
|
||||
"https://fivefish.org/kil": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2028?language=Kariya)",
|
||||
"at": "2026-09-24T23:45:41.887Z"
|
||||
},
|
||||
"https://fivefish.org/bmd": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4999?language=Baga%20Manduri)",
|
||||
"at": "2026-09-24T23:45:41.950Z"
|
||||
},
|
||||
"https://fivefish.org/vkn": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2071?language=Koro%3A%20Adunu)",
|
||||
"at": "2026-09-24T23:45:42.033Z"
|
||||
},
|
||||
"https://fivefish.org/nmh": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3859?language=Monsang)",
|
||||
"at": "2026-09-25T00:17:37.983Z"
|
||||
},
|
||||
"https://fivefish.org/nlu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/14759?language=Nchumbulu)",
|
||||
"at": "2026-09-25T00:17:38.033Z"
|
||||
},
|
||||
"https://fivefish.org/xra": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2322?language=Kraho)",
|
||||
"at": "2026-09-25T00:17:38.063Z"
|
||||
},
|
||||
"https://fivefish.org/srl": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/10956?language=Isirawa)",
|
||||
"at": "2026-09-25T00:17:38.080Z"
|
||||
},
|
||||
"https://fivefish.org/akt": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2781?language=Akolet)",
|
||||
"at": "2026-09-25T00:17:38.129Z"
|
||||
},
|
||||
"https://fivefish.org/bxs": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6218?language=Busam)",
|
||||
"at": "2026-09-25T00:17:38.164Z"
|
||||
},
|
||||
"https://fivefish.org/mdb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/5021?language=Morigi)",
|
||||
"at": "2026-09-25T00:17:38.203Z"
|
||||
},
|
||||
"https://fivefish.org/mds": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2989?language=Manubara)",
|
||||
"at": "2026-09-25T00:17:38.241Z"
|
||||
},
|
||||
"https://fivefish.org/bqs": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3207?language=Bosman)",
|
||||
"at": "2026-09-25T00:17:38.446Z"
|
||||
},
|
||||
"https://fivefish.org/gak": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/10006?language=Gamkonora)",
|
||||
"at": "2026-09-25T00:17:38.472Z"
|
||||
},
|
||||
"https://fivefish.org/xky": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11858?language=Uma%27%20Lasan)",
|
||||
"at": "2026-09-25T00:17:38.532Z"
|
||||
},
|
||||
"https://fivefish.org/jee": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11139?language=Jerung)",
|
||||
"at": "2026-09-25T00:17:38.590Z"
|
||||
},
|
||||
"https://fivefish.org/kwt": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1244?language=Aujefor%20%26%20Mafena%20Mur)",
|
||||
"at": "2026-09-25T00:17:38.623Z"
|
||||
},
|
||||
"https://fivefish.org/kic": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4169?language=Kickapoo)",
|
||||
"at": "2026-09-25T00:17:38.679Z"
|
||||
},
|
||||
"https://fivefish.org/bnw": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3271?language=Bisis)",
|
||||
"at": "2026-09-25T00:17:38.699Z"
|
||||
},
|
||||
"https://fivefish.org/szv": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2636?language=Bimbia)",
|
||||
"at": "2026-09-25T00:17:38.766Z"
|
||||
},
|
||||
"https://fivefish.org/klx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2215?language=Ibawana%2FKao%20Kao)",
|
||||
"at": "2026-09-25T00:17:38.916Z"
|
||||
},
|
||||
"https://fivefish.org/cbg": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3155?language=Chimila)",
|
||||
"at": "2026-09-25T00:17:39.033Z"
|
||||
},
|
||||
"https://fivefish.org/asy": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1516?language=Asmat%2C%20Yaosakor)",
|
||||
"at": "2026-09-25T00:17:39.130Z"
|
||||
},
|
||||
"https://fivefish.org/anx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/469?language=Andra-Hus)",
|
||||
"at": "2026-09-25T00:17:39.144Z"
|
||||
},
|
||||
"https://fivefish.org/vls": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/434?language=Flemish)",
|
||||
"at": "2026-09-25T00:17:39.207Z"
|
||||
},
|
||||
"https://fivefish.org/gbf": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1139?language=Gaikundi)",
|
||||
"at": "2026-09-25T00:17:39.393Z"
|
||||
},
|
||||
"https://fivefish.org/fut": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4473?language=Futuna-Aniwa)",
|
||||
"at": "2026-09-25T00:17:39.414Z"
|
||||
},
|
||||
"https://fivefish.org/sbh": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/470?language=Sori)",
|
||||
"at": "2026-09-25T00:17:39.506Z"
|
||||
},
|
||||
"https://fivefish.org/kjr": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1210?language=Famaij%20Group)",
|
||||
"at": "2026-09-25T00:17:39.520Z"
|
||||
},
|
||||
"https://fivefish.org/ayt": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4736?language=Ayta%3A%20Kadmang)",
|
||||
"at": "2026-09-25T00:17:39.599Z"
|
||||
},
|
||||
"https://fivefish.org/kvm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6229?language=Kendem)",
|
||||
"at": "2026-09-25T00:17:39.726Z"
|
||||
},
|
||||
"https://fivefish.org/itr": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3447?language=Agrame)",
|
||||
"at": "2026-09-25T00:17:39.819Z"
|
||||
},
|
||||
"https://fivefish.org/ilu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/717?language=Wetar)",
|
||||
"at": "2026-09-25T00:17:39.959Z"
|
||||
},
|
||||
"https://fivefish.org/kbv": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3762?language=Dla)",
|
||||
"at": "2026-09-25T00:17:39.967Z"
|
||||
},
|
||||
"https://fivefish.org/pnu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6284?language=Yao%3A%20Sanzi%20Jinxiuluoxiang)",
|
||||
"at": "2026-09-25T00:17:39.978Z"
|
||||
},
|
||||
"https://fivefish.org/wbb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1226?language=Wabo)",
|
||||
"at": "2026-09-25T00:17:39.988Z"
|
||||
},
|
||||
"https://fivefish.org/ymb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/976?language=Yambes)",
|
||||
"at": "2026-09-25T00:17:40.000Z"
|
||||
},
|
||||
"https://fivefish.org/aof": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3430?language=Bragat)",
|
||||
"at": "2026-09-25T00:17:40.030Z"
|
||||
},
|
||||
"https://fivefish.org/lsr": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3275?language=Lau%20Seranga)",
|
||||
"at": "2026-09-25T00:17:40.279Z"
|
||||
},
|
||||
"https://fivefish.org/gua": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2660?language=Shiki%3A%20Gubi)",
|
||||
"at": "2026-09-25T00:17:40.366Z"
|
||||
},
|
||||
"https://fivefish.org/rhp": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3438?language=Yahang)",
|
||||
"at": "2026-09-25T00:17:40.413Z"
|
||||
},
|
||||
"https://fivefish.org/moh": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3420?language=Mohawk)",
|
||||
"at": "2026-09-25T00:17:40.443Z"
|
||||
},
|
||||
"https://fivefish.org/kkd": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2571?language=Kinugu)",
|
||||
"at": "2026-09-25T00:17:40.525Z"
|
||||
},
|
||||
"https://fivefish.org/yet": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/18551?language=Yetfa)",
|
||||
"at": "2026-09-25T00:17:40.619Z"
|
||||
},
|
||||
"https://fivefish.org/mrm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3643?language=Merlava)",
|
||||
"at": "2026-09-25T00:17:40.752Z"
|
||||
},
|
||||
"https://fivefish.org/mtk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4964?language=Banbalang)",
|
||||
"at": "2026-09-25T00:17:40.778Z"
|
||||
},
|
||||
"https://fivefish.org/gnu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3760?language=Gnau)",
|
||||
"at": "2026-09-25T00:17:40.852Z"
|
||||
},
|
||||
"https://fivefish.org/tcx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/879?language=Toda)",
|
||||
"at": "2026-09-25T00:17:40.890Z"
|
||||
},
|
||||
"https://fivefish.org/gnm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/5096?language=Ginuman)",
|
||||
"at": "2026-09-25T00:17:41.041Z"
|
||||
},
|
||||
"https://fivefish.org/bpa": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4470?language=Daakaka)",
|
||||
"at": "2026-09-25T00:17:41.066Z"
|
||||
},
|
||||
"https://fivefish.org/tow": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3824?language=Towa)",
|
||||
"at": "2026-09-25T00:17:41.267Z"
|
||||
},
|
||||
"https://fivefish.org/lek": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/471?language=Leipon)",
|
||||
"at": "2026-09-25T00:17:41.313Z"
|
||||
},
|
||||
"https://fivefish.org/gmb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/5106?language=Gula%27alaa)",
|
||||
"at": "2026-09-25T00:17:41.353Z"
|
||||
},
|
||||
"https://fivefish.org/piv": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3657?language=Pileni)",
|
||||
"at": "2026-09-25T00:17:41.416Z"
|
||||
},
|
||||
"https://fivefish.org/abo": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4257?language=Abong)",
|
||||
"at": "2026-09-25T00:17:41.434Z"
|
||||
},
|
||||
"https://fivefish.org/sug": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3757?language=Blimo)",
|
||||
"at": "2026-09-25T00:17:41.517Z"
|
||||
},
|
||||
"https://fivefish.org/wbk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3331?language=Waygali)",
|
||||
"at": "2026-09-25T00:17:41.735Z"
|
||||
},
|
||||
"https://fivefish.org/nuo": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2017?language=Nguon)",
|
||||
"at": "2026-09-25T00:17:41.803Z"
|
||||
},
|
||||
"https://fivefish.org/byo": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6069?language=Bio)",
|
||||
"at": "2026-09-25T00:17:41.825Z"
|
||||
},
|
||||
"https://fivefish.org/sgy": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3378?language=Sanglechi)",
|
||||
"at": "2026-09-25T00:17:41.849Z"
|
||||
},
|
||||
"https://fivefish.org/lhp": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/12922?language=Lhokpu)",
|
||||
"at": "2026-09-25T00:17:41.876Z"
|
||||
},
|
||||
"https://fivefish.org/kzq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11320?language=Kaike)",
|
||||
"at": "2026-09-25T00:17:41.911Z"
|
||||
},
|
||||
"https://fivefish.org/thm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6765?language=So%20Thavung)",
|
||||
"at": "2026-09-25T00:17:42.168Z"
|
||||
},
|
||||
"https://fivefish.org/npb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/15137?language=Nupbikha)",
|
||||
"at": "2026-09-25T00:17:42.171Z"
|
||||
},
|
||||
"https://fivefish.org/phk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/15621?language=Phake)",
|
||||
"at": "2026-09-25T00:17:42.243Z"
|
||||
},
|
||||
"https://fivefish.org/bfu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2424?language=Gahri)",
|
||||
"at": "2026-09-25T00:17:42.259Z"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"source": "https://fivefish.org/<iso639-3> (5fish, Global Recordings Network)",
|
||||
"fetched": "2026-09-24",
|
||||
"fetched": "2026-09-25",
|
||||
"_note": "GRN gospel AUDIO, typed as Gospel audio and never as Scripture — \"Words of Life\" is gospel messages and Bible stories, not a translation of the canon. The host never 404s: a nonsense path returns a geo-located page with HTTP 200, so existence is read from the page title, with a negative and a positive control run in band every time. Their robots.txt asks for Crawl-delay: 10 and this fetcher obeys it, sequentially.",
|
||||
"codes": 660,
|
||||
"decidedNone": 707,
|
||||
"codes": 800,
|
||||
"decidedNone": 907,
|
||||
"byIso": {
|
||||
"mnp": {
|
||||
"u": "https://fivefish.org/mnp",
|
||||
|
|
@ -2644,6 +2644,566 @@
|
|||
"kfg": {
|
||||
"u": "https://fivefish.org/kfg",
|
||||
"n": "Kudiya"
|
||||
},
|
||||
"wli": {
|
||||
"u": "https://fivefish.org/wli",
|
||||
"n": "Waioli"
|
||||
},
|
||||
"iai": {
|
||||
"u": "https://fivefish.org/iai",
|
||||
"n": "Iai"
|
||||
},
|
||||
"bcg": {
|
||||
"u": "https://fivefish.org/bcg",
|
||||
"n": "Baga"
|
||||
},
|
||||
"bmd": {
|
||||
"u": "https://fivefish.org/bmd",
|
||||
"n": "Baga Manduri"
|
||||
},
|
||||
"isk": {
|
||||
"u": "https://fivefish.org/isk",
|
||||
"n": "Ishkashimi"
|
||||
},
|
||||
"kil": {
|
||||
"u": "https://fivefish.org/kil",
|
||||
"n": "Kariya"
|
||||
},
|
||||
"vkn": {
|
||||
"u": "https://fivefish.org/vkn",
|
||||
"n": "Koro: Adunu"
|
||||
},
|
||||
"lbu": {
|
||||
"u": "https://fivefish.org/lbu",
|
||||
"n": "Labo"
|
||||
},
|
||||
"svs": {
|
||||
"u": "https://fivefish.org/svs",
|
||||
"n": "Savosavo"
|
||||
},
|
||||
"jmb": {
|
||||
"u": "https://fivefish.org/jmb",
|
||||
"n": "Jimbin"
|
||||
},
|
||||
"can": {
|
||||
"u": "https://fivefish.org/can",
|
||||
"n": "Chambri"
|
||||
},
|
||||
"pwa": {
|
||||
"u": "https://fivefish.org/pwa",
|
||||
"n": "Pauaia"
|
||||
},
|
||||
"dor": {
|
||||
"u": "https://fivefish.org/dor",
|
||||
"n": "Dori'o"
|
||||
},
|
||||
"bqo": {
|
||||
"u": "https://fivefish.org/bqo",
|
||||
"n": "Balo"
|
||||
},
|
||||
"ksg": {
|
||||
"u": "https://fivefish.org/ksg",
|
||||
"n": "Kusaghe"
|
||||
},
|
||||
"bkk": {
|
||||
"u": "https://fivefish.org/bkk",
|
||||
"n": "Brokskat"
|
||||
},
|
||||
"tlx": {
|
||||
"u": "https://fivefish.org/tlx",
|
||||
"n": "Khehek"
|
||||
},
|
||||
"kku": {
|
||||
"u": "https://fivefish.org/kku",
|
||||
"n": "Kitimi"
|
||||
},
|
||||
"giw": {
|
||||
"u": "https://fivefish.org/giw",
|
||||
"n": "Galao, White"
|
||||
},
|
||||
"lle": {
|
||||
"u": "https://fivefish.org/lle",
|
||||
"n": "Lele"
|
||||
},
|
||||
"nke": {
|
||||
"u": "https://fivefish.org/nke",
|
||||
"n": "Duke"
|
||||
},
|
||||
"sax": {
|
||||
"u": "https://fivefish.org/sax",
|
||||
"n": "Sa"
|
||||
},
|
||||
"fir": {
|
||||
"u": "https://fivefish.org/fir",
|
||||
"n": "Kwakwi"
|
||||
},
|
||||
"zik": {
|
||||
"u": "https://fivefish.org/zik",
|
||||
"n": "Zimakani"
|
||||
},
|
||||
"aik": {
|
||||
"u": "https://fivefish.org/aik",
|
||||
"n": "Akye"
|
||||
},
|
||||
"kce": {
|
||||
"u": "https://fivefish.org/kce",
|
||||
"n": "Kaivi"
|
||||
},
|
||||
"kzz": {
|
||||
"u": "https://fivefish.org/kzz",
|
||||
"n": "Kalabara Group"
|
||||
},
|
||||
"dmr": {
|
||||
"u": "https://fivefish.org/dmr",
|
||||
"n": "Damar"
|
||||
},
|
||||
"kcx": {
|
||||
"u": "https://fivefish.org/kcx",
|
||||
"n": "Kachama-Ganjule: Ganta"
|
||||
},
|
||||
"dby": {
|
||||
"u": "https://fivefish.org/dby",
|
||||
"n": "Bainapi"
|
||||
},
|
||||
"knm": {
|
||||
"u": "https://fivefish.org/knm",
|
||||
"n": "Kanamarí"
|
||||
},
|
||||
"aio": {
|
||||
"u": "https://fivefish.org/aio",
|
||||
"n": "Aiton"
|
||||
},
|
||||
"ega": {
|
||||
"u": "https://fivefish.org/ega",
|
||||
"n": "Ega"
|
||||
},
|
||||
"mij": {
|
||||
"u": "https://fivefish.org/mij",
|
||||
"n": "Missong: Bejune"
|
||||
},
|
||||
"bya": {
|
||||
"u": "https://fivefish.org/bya",
|
||||
"n": "Batak"
|
||||
},
|
||||
"sdp": {
|
||||
"u": "https://fivefish.org/sdp",
|
||||
"n": "Sherdukpen"
|
||||
},
|
||||
"mqm": {
|
||||
"u": "https://fivefish.org/mqm",
|
||||
"n": "Marquesan, South"
|
||||
},
|
||||
"leq": {
|
||||
"u": "https://fivefish.org/leq",
|
||||
"n": "Lembena"
|
||||
},
|
||||
"kwe": {
|
||||
"u": "https://fivefish.org/kwe",
|
||||
"n": "Kwerba"
|
||||
},
|
||||
"xkk": {
|
||||
"u": "https://fivefish.org/xkk",
|
||||
"n": "Kachok"
|
||||
},
|
||||
"twp": {
|
||||
"u": "https://fivefish.org/twp",
|
||||
"n": "Londru"
|
||||
},
|
||||
"sde": {
|
||||
"u": "https://fivefish.org/sde",
|
||||
"n": "Surubu"
|
||||
},
|
||||
"apm": {
|
||||
"u": "https://fivefish.org/apm",
|
||||
"n": "Apache, Mescalero"
|
||||
},
|
||||
"tva": {
|
||||
"u": "https://fivefish.org/tva",
|
||||
"n": "Vaghua"
|
||||
},
|
||||
"kcs": {
|
||||
"u": "https://fivefish.org/kcs",
|
||||
"n": "Koenoem"
|
||||
},
|
||||
"kih": {
|
||||
"u": "https://fivefish.org/kih",
|
||||
"n": "Kilmeri"
|
||||
},
|
||||
"pkg": {
|
||||
"u": "https://fivefish.org/pkg",
|
||||
"n": "Pak"
|
||||
},
|
||||
"tsx": {
|
||||
"u": "https://fivefish.org/tsx",
|
||||
"n": "Mubami: Dausuami"
|
||||
},
|
||||
"aim": {
|
||||
"u": "https://fivefish.org/aim",
|
||||
"n": "Aimol"
|
||||
},
|
||||
"dia": {
|
||||
"u": "https://fivefish.org/dia",
|
||||
"n": "Alu"
|
||||
},
|
||||
"gar": {
|
||||
"u": "https://fivefish.org/gar",
|
||||
"n": "Garea & Gameta"
|
||||
},
|
||||
"sge": {
|
||||
"u": "https://fivefish.org/sge",
|
||||
"n": "Ga'ai"
|
||||
},
|
||||
"nps": {
|
||||
"u": "https://fivefish.org/nps",
|
||||
"n": "Nipsan"
|
||||
},
|
||||
"brp": {
|
||||
"u": "https://fivefish.org/brp",
|
||||
"n": "Barapasi"
|
||||
},
|
||||
"lgu": {
|
||||
"u": "https://fivefish.org/lgu",
|
||||
"n": "Longgu"
|
||||
},
|
||||
"bek": {
|
||||
"u": "https://fivefish.org/bek",
|
||||
"n": "Bebeli"
|
||||
},
|
||||
"elk": {
|
||||
"u": "https://fivefish.org/elk",
|
||||
"n": "Olko"
|
||||
},
|
||||
"sqq": {
|
||||
"u": "https://fivefish.org/sqq",
|
||||
"n": "Sou"
|
||||
},
|
||||
"nmo": {
|
||||
"u": "https://fivefish.org/nmo",
|
||||
"n": "Naga, Moyon"
|
||||
},
|
||||
"idi": {
|
||||
"u": "https://fivefish.org/idi",
|
||||
"n": "Idi"
|
||||
},
|
||||
"xkt": {
|
||||
"u": "https://fivefish.org/xkt",
|
||||
"n": "Kantosi"
|
||||
},
|
||||
"tqu": {
|
||||
"u": "https://fivefish.org/tqu",
|
||||
"n": "Baniata"
|
||||
},
|
||||
"ywa": {
|
||||
"u": "https://fivefish.org/ywa",
|
||||
"n": "Kalou"
|
||||
},
|
||||
"tbj": {
|
||||
"u": "https://fivefish.org/tbj",
|
||||
"n": "Dyaul"
|
||||
},
|
||||
"lvk": {
|
||||
"u": "https://fivefish.org/lvk",
|
||||
"n": "Lavukaleve"
|
||||
},
|
||||
"tmy": {
|
||||
"u": "https://fivefish.org/tmy",
|
||||
"n": "Tami"
|
||||
},
|
||||
"mbq": {
|
||||
"u": "https://fivefish.org/mbq",
|
||||
"n": "Maisin"
|
||||
},
|
||||
"bfh": {
|
||||
"u": "https://fivefish.org/bfh",
|
||||
"n": "West Morehead Group"
|
||||
},
|
||||
"erg": {
|
||||
"u": "https://fivefish.org/erg",
|
||||
"n": "Sie"
|
||||
},
|
||||
"brq": {
|
||||
"u": "https://fivefish.org/brq",
|
||||
"n": "Breri Group"
|
||||
},
|
||||
"bzq": {
|
||||
"u": "https://fivefish.org/bzq",
|
||||
"n": "Buli"
|
||||
},
|
||||
"gcn": {
|
||||
"u": "https://fivefish.org/gcn",
|
||||
"n": "Gaina"
|
||||
},
|
||||
"bye": {
|
||||
"u": "https://fivefish.org/bye",
|
||||
"n": "Bo'yei"
|
||||
},
|
||||
"amb": {
|
||||
"u": "https://fivefish.org/amb",
|
||||
"n": "Ambo"
|
||||
},
|
||||
"blq": {
|
||||
"u": "https://fivefish.org/blq",
|
||||
"n": "Paluai"
|
||||
},
|
||||
"bpv": {
|
||||
"u": "https://fivefish.org/bpv",
|
||||
"n": "Bian Group (2)"
|
||||
},
|
||||
"hoe": {
|
||||
"u": "https://fivefish.org/hoe",
|
||||
"n": "Horom"
|
||||
},
|
||||
"saa": {
|
||||
"u": "https://fivefish.org/saa",
|
||||
"n": "Saba"
|
||||
},
|
||||
"kwt": {
|
||||
"u": "https://fivefish.org/kwt",
|
||||
"n": "Aujefor & Mafena Mur"
|
||||
},
|
||||
"kjr": {
|
||||
"u": "https://fivefish.org/kjr",
|
||||
"n": "Famaij Group"
|
||||
},
|
||||
"mds": {
|
||||
"u": "https://fivefish.org/mds",
|
||||
"n": "Manubara"
|
||||
},
|
||||
"akt": {
|
||||
"u": "https://fivefish.org/akt",
|
||||
"n": "Akolet"
|
||||
},
|
||||
"gmb": {
|
||||
"u": "https://fivefish.org/gmb",
|
||||
"n": "Gula'alaa"
|
||||
},
|
||||
"byo": {
|
||||
"u": "https://fivefish.org/byo",
|
||||
"n": "Bio"
|
||||
},
|
||||
"npb": {
|
||||
"u": "https://fivefish.org/npb",
|
||||
"n": "Nupbikha"
|
||||
},
|
||||
"mtk": {
|
||||
"u": "https://fivefish.org/mtk",
|
||||
"n": "Banbalang"
|
||||
},
|
||||
"gnm": {
|
||||
"u": "https://fivefish.org/gnm",
|
||||
"n": "Ginuman"
|
||||
},
|
||||
"kkd": {
|
||||
"u": "https://fivefish.org/kkd",
|
||||
"n": "Kinugu"
|
||||
},
|
||||
"kbv": {
|
||||
"u": "https://fivefish.org/kbv",
|
||||
"n": "Dla"
|
||||
},
|
||||
"bxs": {
|
||||
"u": "https://fivefish.org/bxs",
|
||||
"n": "Busam"
|
||||
},
|
||||
"asy": {
|
||||
"u": "https://fivefish.org/asy",
|
||||
"n": "Asmat, Yaosakor"
|
||||
},
|
||||
"xky": {
|
||||
"u": "https://fivefish.org/xky",
|
||||
"n": "Uma' Lasan"
|
||||
},
|
||||
"nlu": {
|
||||
"u": "https://fivefish.org/nlu",
|
||||
"n": "Nchumbulu"
|
||||
},
|
||||
"gnu": {
|
||||
"u": "https://fivefish.org/gnu",
|
||||
"n": "Gnau"
|
||||
},
|
||||
"rhp": {
|
||||
"u": "https://fivefish.org/rhp",
|
||||
"n": "Yahang"
|
||||
},
|
||||
"kvm": {
|
||||
"u": "https://fivefish.org/kvm",
|
||||
"n": "Kendem"
|
||||
},
|
||||
"vls": {
|
||||
"u": "https://fivefish.org/vls",
|
||||
"n": "Flemish"
|
||||
},
|
||||
"anx": {
|
||||
"u": "https://fivefish.org/anx",
|
||||
"n": "Andra-Hus"
|
||||
},
|
||||
"bnw": {
|
||||
"u": "https://fivefish.org/bnw",
|
||||
"n": "Bisis"
|
||||
},
|
||||
"mdb": {
|
||||
"u": "https://fivefish.org/mdb",
|
||||
"n": "Morigi"
|
||||
},
|
||||
"pnu": {
|
||||
"u": "https://fivefish.org/pnu",
|
||||
"n": "Yao: Sanzi Jinxiuluoxiang"
|
||||
},
|
||||
"ayt": {
|
||||
"u": "https://fivefish.org/ayt",
|
||||
"n": "Ayta: Kadmang"
|
||||
},
|
||||
"fut": {
|
||||
"u": "https://fivefish.org/fut",
|
||||
"n": "Futuna-Aniwa"
|
||||
},
|
||||
"szv": {
|
||||
"u": "https://fivefish.org/szv",
|
||||
"n": "Bimbia"
|
||||
},
|
||||
"thm": {
|
||||
"u": "https://fivefish.org/thm",
|
||||
"n": "So Thavung"
|
||||
},
|
||||
"phk": {
|
||||
"u": "https://fivefish.org/phk",
|
||||
"n": "Phake"
|
||||
},
|
||||
"gbf": {
|
||||
"u": "https://fivefish.org/gbf",
|
||||
"n": "Gaikundi"
|
||||
},
|
||||
"bqs": {
|
||||
"u": "https://fivefish.org/bqs",
|
||||
"n": "Bosman"
|
||||
},
|
||||
"nmh": {
|
||||
"u": "https://fivefish.org/nmh",
|
||||
"n": "Monsang"
|
||||
},
|
||||
"sug": {
|
||||
"u": "https://fivefish.org/sug",
|
||||
"n": "Blimo"
|
||||
},
|
||||
"lek": {
|
||||
"u": "https://fivefish.org/lek",
|
||||
"n": "Leipon"
|
||||
},
|
||||
"bfu": {
|
||||
"u": "https://fivefish.org/bfu",
|
||||
"n": "Gahri"
|
||||
},
|
||||
"wbb": {
|
||||
"u": "https://fivefish.org/wbb",
|
||||
"n": "Wabo"
|
||||
},
|
||||
"cbg": {
|
||||
"u": "https://fivefish.org/cbg",
|
||||
"n": "Chimila"
|
||||
},
|
||||
"xra": {
|
||||
"u": "https://fivefish.org/xra",
|
||||
"n": "Kraho"
|
||||
},
|
||||
"lhp": {
|
||||
"u": "https://fivefish.org/lhp",
|
||||
"n": "Lhokpu"
|
||||
},
|
||||
"srl": {
|
||||
"u": "https://fivefish.org/srl",
|
||||
"n": "Isirawa"
|
||||
},
|
||||
"tow": {
|
||||
"u": "https://fivefish.org/tow",
|
||||
"n": "Towa"
|
||||
},
|
||||
"tcx": {
|
||||
"u": "https://fivefish.org/tcx",
|
||||
"n": "Toda"
|
||||
},
|
||||
"itr": {
|
||||
"u": "https://fivefish.org/itr",
|
||||
"n": "Agrame"
|
||||
},
|
||||
"kzq": {
|
||||
"u": "https://fivefish.org/kzq",
|
||||
"n": "Kaike"
|
||||
},
|
||||
"nuo": {
|
||||
"u": "https://fivefish.org/nuo",
|
||||
"n": "Nguon"
|
||||
},
|
||||
"jee": {
|
||||
"u": "https://fivefish.org/jee",
|
||||
"n": "Jerung"
|
||||
},
|
||||
"gak": {
|
||||
"u": "https://fivefish.org/gak",
|
||||
"n": "Gamkonora"
|
||||
},
|
||||
"yet": {
|
||||
"u": "https://fivefish.org/yet",
|
||||
"n": "Yetfa"
|
||||
},
|
||||
"aof": {
|
||||
"u": "https://fivefish.org/aof",
|
||||
"n": "Bragat"
|
||||
},
|
||||
"abo": {
|
||||
"u": "https://fivefish.org/abo",
|
||||
"n": "Abong"
|
||||
},
|
||||
"kic": {
|
||||
"u": "https://fivefish.org/kic",
|
||||
"n": "Kickapoo"
|
||||
},
|
||||
"wbk": {
|
||||
"u": "https://fivefish.org/wbk",
|
||||
"n": "Waygali"
|
||||
},
|
||||
"piv": {
|
||||
"u": "https://fivefish.org/piv",
|
||||
"n": "Pileni"
|
||||
},
|
||||
"bpa": {
|
||||
"u": "https://fivefish.org/bpa",
|
||||
"n": "Daakaka"
|
||||
},
|
||||
"gua": {
|
||||
"u": "https://fivefish.org/gua",
|
||||
"n": "Shiki: Gubi"
|
||||
},
|
||||
"moh": {
|
||||
"u": "https://fivefish.org/moh",
|
||||
"n": "Mohawk"
|
||||
},
|
||||
"sgy": {
|
||||
"u": "https://fivefish.org/sgy",
|
||||
"n": "Sanglechi"
|
||||
},
|
||||
"ilu": {
|
||||
"u": "https://fivefish.org/ilu",
|
||||
"n": "Wetar"
|
||||
},
|
||||
"ymb": {
|
||||
"u": "https://fivefish.org/ymb",
|
||||
"n": "Yambes"
|
||||
},
|
||||
"sbh": {
|
||||
"u": "https://fivefish.org/sbh",
|
||||
"n": "Sori"
|
||||
},
|
||||
"klx": {
|
||||
"u": "https://fivefish.org/klx",
|
||||
"n": "Ibawana/Kao Kao"
|
||||
},
|
||||
"mrm": {
|
||||
"u": "https://fivefish.org/mrm",
|
||||
"n": "Merlava"
|
||||
},
|
||||
"lsr": {
|
||||
"u": "https://fivefish.org/lsr",
|
||||
"n": "Lau Seranga"
|
||||
}
|
||||
},
|
||||
"none": [
|
||||
|
|
@ -3353,6 +3913,206 @@
|
|||
"opo",
|
||||
"weu",
|
||||
"bnb",
|
||||
"kqx"
|
||||
"kqx",
|
||||
"ahh",
|
||||
"bnd",
|
||||
"jeu",
|
||||
"bgl",
|
||||
"kig",
|
||||
"rkh",
|
||||
"bdj",
|
||||
"bxd",
|
||||
"pni",
|
||||
"ste",
|
||||
"ojv",
|
||||
"kts",
|
||||
"pla",
|
||||
"xhv",
|
||||
"awy",
|
||||
"nnf",
|
||||
"aew",
|
||||
"adu",
|
||||
"kbt",
|
||||
"bbh",
|
||||
"uan",
|
||||
"aih",
|
||||
"mpk",
|
||||
"urx",
|
||||
"mgn",
|
||||
"lka",
|
||||
"mzd",
|
||||
"rka",
|
||||
"ush",
|
||||
"kuv",
|
||||
"let",
|
||||
"sib",
|
||||
"kqg",
|
||||
"bay",
|
||||
"tzx",
|
||||
"kee",
|
||||
"klf",
|
||||
"sxg",
|
||||
"spb",
|
||||
"mpl",
|
||||
"kyi",
|
||||
"nct",
|
||||
"goq",
|
||||
"khv",
|
||||
"kqv",
|
||||
"low",
|
||||
"aup",
|
||||
"bes",
|
||||
"igm",
|
||||
"gwe",
|
||||
"blp",
|
||||
"glc",
|
||||
"ltu",
|
||||
"aod",
|
||||
"gwb",
|
||||
"imi",
|
||||
"bjs",
|
||||
"ssz",
|
||||
"qcy",
|
||||
"roc",
|
||||
"wuh",
|
||||
"zal",
|
||||
"kcy",
|
||||
"qfj",
|
||||
"xkn",
|
||||
"bzl",
|
||||
"kbk",
|
||||
"nbo",
|
||||
"sow",
|
||||
"hbu",
|
||||
"mvk",
|
||||
"sko",
|
||||
"dju",
|
||||
"nis",
|
||||
"fni",
|
||||
"biq",
|
||||
"qkm",
|
||||
"vkj",
|
||||
"van",
|
||||
"gei",
|
||||
"nib",
|
||||
"ngy",
|
||||
"zem",
|
||||
"kxr",
|
||||
"csw",
|
||||
"kkt",
|
||||
"ubi",
|
||||
"net",
|
||||
"vao",
|
||||
"zib",
|
||||
"woc",
|
||||
"kve",
|
||||
"pmo",
|
||||
"lcs",
|
||||
"mzu",
|
||||
"btc",
|
||||
"tuh",
|
||||
"don",
|
||||
"ttf",
|
||||
"hih",
|
||||
"mze",
|
||||
"rmp",
|
||||
"ali",
|
||||
"ybo",
|
||||
"igo",
|
||||
"pkp",
|
||||
"goi",
|
||||
"mwb",
|
||||
"bgu",
|
||||
"noh",
|
||||
"paq",
|
||||
"qcv",
|
||||
"ssj",
|
||||
"jia",
|
||||
"hkn",
|
||||
"lau",
|
||||
"nua",
|
||||
"gdo",
|
||||
"sob",
|
||||
"fam",
|
||||
"pnn",
|
||||
"zsu",
|
||||
"ago",
|
||||
"ped",
|
||||
"bpo",
|
||||
"bxz",
|
||||
"ley",
|
||||
"bgk",
|
||||
"mcy",
|
||||
"goe",
|
||||
"mdl",
|
||||
"mvr",
|
||||
"wll",
|
||||
"mxr",
|
||||
"skm",
|
||||
"kop",
|
||||
"awv",
|
||||
"loj",
|
||||
"mqp",
|
||||
"xkd",
|
||||
"ylu",
|
||||
"aku",
|
||||
"bup",
|
||||
"uve",
|
||||
"kjj",
|
||||
"brz",
|
||||
"mrv",
|
||||
"meb",
|
||||
"szp",
|
||||
"rmm",
|
||||
"aie",
|
||||
"mtv",
|
||||
"apo",
|
||||
"dba",
|
||||
"kmv",
|
||||
"njl",
|
||||
"zka",
|
||||
"bkf",
|
||||
"ymo",
|
||||
"dkk",
|
||||
"bzp",
|
||||
"buq",
|
||||
"koa",
|
||||
"skc",
|
||||
"ybm",
|
||||
"kqt",
|
||||
"nlz",
|
||||
"mwo",
|
||||
"mrb",
|
||||
"abw",
|
||||
"uge",
|
||||
"omo",
|
||||
"ukh",
|
||||
"pda",
|
||||
"mmi",
|
||||
"tqp",
|
||||
"anj",
|
||||
"afd",
|
||||
"btr",
|
||||
"qtp",
|
||||
"snz",
|
||||
"enr",
|
||||
"yir",
|
||||
"fwa",
|
||||
"bbx",
|
||||
"irx",
|
||||
"qmv",
|
||||
"hld",
|
||||
"ptv",
|
||||
"vko",
|
||||
"lgk",
|
||||
"jet",
|
||||
"ran",
|
||||
"aya",
|
||||
"boe",
|
||||
"kuo",
|
||||
"ykr",
|
||||
"xay",
|
||||
"asx",
|
||||
"emn"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
"honest_limit": "This is NOT the same as a national trade language. It finds languages widely used AMONG THE UNENGAGED GROUPS TRACKED HERE, and will MISS a lingua franca that no unengaged group claims as primary (e.g. Hindi in India). Named bridge_candidates, not trade_languages, for that reason.",
|
||||
"why_not_a_list": "No open machine-readable list of national trade languages was available; bridge candidates are derived from this corpus."
|
||||
},
|
||||
"resource_flags_refreshed": "2026-09-24",
|
||||
"resource_flags_refreshed": "2026-09-25",
|
||||
"resource_flags_source": "data/tables/people-group-pins.json. prevalence_rank, bridge_candidate, groups_speaking and full_bible are curated and untouched."
|
||||
},
|
||||
"columns": [
|
||||
|
|
@ -1664,7 +1664,7 @@
|
|||
"has_scripture": false,
|
||||
"full_bible": false,
|
||||
"has_film": false,
|
||||
"carries_resource": false,
|
||||
"carries_resource": true,
|
||||
"country_people_groups": 34
|
||||
},
|
||||
{
|
||||
|
|
@ -3854,7 +3854,7 @@
|
|||
"has_scripture": false,
|
||||
"full_bible": false,
|
||||
"has_film": false,
|
||||
"carries_resource": false,
|
||||
"carries_resource": true,
|
||||
"country_people_groups": 13
|
||||
},
|
||||
{
|
||||
|
|
@ -3944,7 +3944,7 @@
|
|||
"has_scripture": false,
|
||||
"full_bible": false,
|
||||
"has_film": false,
|
||||
"carries_resource": false,
|
||||
"carries_resource": true,
|
||||
"country_people_groups": 13
|
||||
},
|
||||
{
|
||||
|
|
@ -4049,7 +4049,7 @@
|
|||
"has_scripture": false,
|
||||
"full_bible": false,
|
||||
"has_film": false,
|
||||
"carries_resource": false,
|
||||
"carries_resource": true,
|
||||
"country_people_groups": 13
|
||||
},
|
||||
{
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -43,7 +43,7 @@
|
|||
"absence_meaning": "FALSE means NOT FOUND in the pools checked — never proof that no resource exists.",
|
||||
"unmatchable_note": "33 of 862 DX language codes are OUTSIDE the ISO 639-3 registry (31 private-use q*, almost all SIGN LANGUAGES). No pool can index those codes, so their resource status is UNRESOLVABLE BY JOIN — structurally false, not measured. Filter on code_unmatchable to separate them.",
|
||||
"boundary": "Resource availability only. No church, believer or meeting-point data.",
|
||||
"resource_flags_refreshed": "2026-09-24",
|
||||
"resource_flags_refreshed": "2026-09-25",
|
||||
"has_audio_note": "true where Faith Comes By Hearing publishes audio Scripture; \"unknown\" otherwise, never false. GRN is the other main audio pool and IS now searched, through their 5fish site, a batch at a time at the crawl delay they ask for — it appears as gospel audio rather than in this column, because Words of Life is gospel messages and Bible stories, not a translation.",
|
||||
"grn_note": "Global Recordings Network IS included, via their 5fish site, which resolves by ISO 639-3 and needs no API key — only the ten-second crawl delay their robots.txt asks for, so the sweep runs a batch at a time and part of the pool is still unread. It appears as gospel audio, never as Scripture: Words of Life is gospel messages and Bible stories, not a translation."
|
||||
},
|
||||
|
|
@ -11051,8 +11051,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11171,8 +11171,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11195,8 +11195,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11219,8 +11219,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11267,8 +11267,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11603,8 +11603,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11675,8 +11675,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11915,8 +11915,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12011,8 +12011,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12155,8 +12155,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12179,8 +12179,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12371,8 +12371,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12491,8 +12491,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12707,8 +12707,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12731,8 +12731,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12779,8 +12779,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12899,8 +12899,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12947,8 +12947,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12971,8 +12971,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -13019,8 +13019,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -13667,8 +13667,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -14723,8 +14723,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
"meta": {
|
||||
"title": "Translation priority by country — can hear it, no text found",
|
||||
"source": "data/tables/translation-priority.json, itself built from the pin index — so this table, that one and the map cannot disagree.",
|
||||
"generated": "2026-09-24",
|
||||
"countries": 156,
|
||||
"groups": 2727,
|
||||
"people": 1330190929,
|
||||
"generated": "2026-09-25",
|
||||
"countries": 157,
|
||||
"groups": 2883,
|
||||
"people": 1330667764,
|
||||
"definition": "People groups with recorded audio, the JESUS Film, a Bible video or Words of Life in their language and NO text Scripture found in the pools checked, aggregated to the country a team would be sent to. \"Not found\" is a statement about those pools, never a claim that no text exists; the per-group table carries the checked and unchecked pools on every row.",
|
||||
"two_columns_note": "groups and languages answer different questions from people. Nigeria and the DRC lead on languages, which is the translation workload; China and Pakistan lead on population across far fewer languages. Neither is ranked for you."
|
||||
},
|
||||
|
|
@ -55,9 +55,9 @@
|
|||
{
|
||||
"country": "People's Republic of China",
|
||||
"iso3": "CHN",
|
||||
"groups": 183,
|
||||
"languages": 84,
|
||||
"people": 218370950,
|
||||
"groups": 187,
|
||||
"languages": 87,
|
||||
"people": 218380750,
|
||||
"largest_group": "Han Chinese, Wu",
|
||||
"largest_group_population": 92530000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -75,9 +75,9 @@
|
|||
{
|
||||
"country": "India",
|
||||
"iso3": "IND",
|
||||
"groups": 351,
|
||||
"languages": 109,
|
||||
"people": 165835830,
|
||||
"groups": 359,
|
||||
"languages": 117,
|
||||
"people": 165863330,
|
||||
"largest_group": "Bhil",
|
||||
"largest_group_population": 20480000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -105,9 +105,9 @@
|
|||
{
|
||||
"country": "Nigeria",
|
||||
"iso3": "NGA",
|
||||
"groups": 245,
|
||||
"languages": 240,
|
||||
"people": 54886725,
|
||||
"groups": 259,
|
||||
"languages": 254,
|
||||
"people": 54940525,
|
||||
"largest_group": "Tiv",
|
||||
"largest_group_population": 5220000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -155,9 +155,9 @@
|
|||
{
|
||||
"country": "Afghanistan",
|
||||
"iso3": "AFG",
|
||||
"groups": 25,
|
||||
"languages": 25,
|
||||
"people": 26159700,
|
||||
"groups": 28,
|
||||
"languages": 28,
|
||||
"people": 26167200,
|
||||
"largest_group": "Pashtun, Southern",
|
||||
"largest_group_population": 13680000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -185,9 +185,9 @@
|
|||
{
|
||||
"country": "Indonesia",
|
||||
"iso3": "IDN",
|
||||
"groups": 148,
|
||||
"languages": 129,
|
||||
"people": 23132670,
|
||||
"groups": 168,
|
||||
"languages": 147,
|
||||
"people": 23190470,
|
||||
"largest_group": "Betawi",
|
||||
"largest_group_population": 5620000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -205,9 +205,9 @@
|
|||
{
|
||||
"country": "Cameroon",
|
||||
"iso3": "CMR",
|
||||
"groups": 119,
|
||||
"languages": 112,
|
||||
"people": 18444325,
|
||||
"groups": 125,
|
||||
"languages": 118,
|
||||
"people": 18464725,
|
||||
"largest_group": "Cameroonian Creole",
|
||||
"largest_group_population": 4365000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -285,9 +285,9 @@
|
|||
{
|
||||
"country": "Cote d'Ivoire",
|
||||
"iso3": "CIV",
|
||||
"groups": 30,
|
||||
"languages": 30,
|
||||
"people": 8408700,
|
||||
"groups": 31,
|
||||
"languages": 31,
|
||||
"people": 8412800,
|
||||
"largest_group": "Maninka",
|
||||
"largest_group_population": 2535000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -295,9 +295,9 @@
|
|||
{
|
||||
"country": "Chad",
|
||||
"iso3": "TCD",
|
||||
"groups": 60,
|
||||
"languages": 44,
|
||||
"people": 8197850,
|
||||
"groups": 61,
|
||||
"languages": 45,
|
||||
"people": 8201150,
|
||||
"largest_group": "Kanembu",
|
||||
"largest_group_population": 1220000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -305,9 +305,9 @@
|
|||
{
|
||||
"country": "Ethiopia",
|
||||
"iso3": "ETH",
|
||||
"groups": 48,
|
||||
"languages": 38,
|
||||
"people": 7901000,
|
||||
"groups": 49,
|
||||
"languages": 39,
|
||||
"people": 7905200,
|
||||
"largest_group": "Gedeo",
|
||||
"largest_group_population": 1590000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -325,9 +325,9 @@
|
|||
{
|
||||
"country": "Philippines",
|
||||
"iso3": "PHL",
|
||||
"groups": 28,
|
||||
"languages": 27,
|
||||
"people": 6447000,
|
||||
"groups": 30,
|
||||
"languages": 29,
|
||||
"people": 6453700,
|
||||
"largest_group": "Magindanao",
|
||||
"largest_group_population": 1390000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -335,9 +335,9 @@
|
|||
{
|
||||
"country": "Guinea",
|
||||
"iso3": "GIN",
|
||||
"groups": 16,
|
||||
"languages": 13,
|
||||
"people": 5937700,
|
||||
"groups": 18,
|
||||
"languages": 15,
|
||||
"people": 5947500,
|
||||
"largest_group": "Maninka",
|
||||
"largest_group_population": 3855000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -385,9 +385,9 @@
|
|||
{
|
||||
"country": "Nepal",
|
||||
"iso3": "NPL",
|
||||
"groups": 49,
|
||||
"languages": 42,
|
||||
"people": 4333975,
|
||||
"groups": 51,
|
||||
"languages": 44,
|
||||
"people": 4338775,
|
||||
"largest_group": "Magar, Eastern",
|
||||
"largest_group_population": 610000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -425,9 +425,9 @@
|
|||
{
|
||||
"country": "United States of America",
|
||||
"iso3": "USA",
|
||||
"groups": 72,
|
||||
"languages": 69,
|
||||
"people": 3515375,
|
||||
"groups": 77,
|
||||
"languages": 74,
|
||||
"people": 3528975,
|
||||
"largest_group": "Armenian",
|
||||
"largest_group_population": 1180000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -475,13 +475,23 @@
|
|||
{
|
||||
"country": "Brazil",
|
||||
"iso3": "BRA",
|
||||
"groups": 13,
|
||||
"languages": 9,
|
||||
"people": 3040065,
|
||||
"groups": 16,
|
||||
"languages": 11,
|
||||
"people": 3046715,
|
||||
"largest_group": "Hunsrik",
|
||||
"largest_group_population": 2000000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Ghana",
|
||||
"iso3": "GHA",
|
||||
"groups": 21,
|
||||
"languages": 21,
|
||||
"people": 2910700,
|
||||
"largest_group": "Brong",
|
||||
"largest_group_population": 1765000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Bangladesh",
|
||||
"iso3": "BGD",
|
||||
|
|
@ -492,16 +502,6 @@
|
|||
"largest_group_population": 2080000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Ghana",
|
||||
"iso3": "GHA",
|
||||
"groups": 19,
|
||||
"languages": 19,
|
||||
"people": 2904100,
|
||||
"largest_group": "Brong",
|
||||
"largest_group_population": 1765000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Myanmar",
|
||||
"iso3": "MMR",
|
||||
|
|
@ -615,9 +615,9 @@
|
|||
{
|
||||
"country": "Lao People's Democratic Republic",
|
||||
"iso3": "LAO",
|
||||
"groups": 53,
|
||||
"languages": 28,
|
||||
"people": 2034425,
|
||||
"groups": 57,
|
||||
"languages": 32,
|
||||
"people": 2046225,
|
||||
"largest_group": "White Thai",
|
||||
"largest_group_population": 325000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -655,9 +655,9 @@
|
|||
{
|
||||
"country": "Malaysia",
|
||||
"iso3": "MYS",
|
||||
"groups": 25,
|
||||
"languages": 21,
|
||||
"people": 1870350,
|
||||
"groups": 26,
|
||||
"languages": 22,
|
||||
"people": 1873350,
|
||||
"largest_group": "Javanese",
|
||||
"largest_group_population": 728000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -672,6 +672,16 @@
|
|||
"largest_group_population": 1485000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Papua New Guinea",
|
||||
"iso3": "PNG",
|
||||
"groups": 144,
|
||||
"languages": 123,
|
||||
"people": 1653125,
|
||||
"largest_group": "Sinasina",
|
||||
"largest_group_population": 176000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Eritrea",
|
||||
"iso3": "ERI",
|
||||
|
|
@ -682,16 +692,6 @@
|
|||
"largest_group_population": 923000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Papua New Guinea",
|
||||
"iso3": "PNG",
|
||||
"groups": 90,
|
||||
"languages": 77,
|
||||
"people": 1503575,
|
||||
"largest_group": "Sinasina",
|
||||
"largest_group_population": 176000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Italy",
|
||||
"iso3": "ITA",
|
||||
|
|
@ -1052,6 +1052,16 @@
|
|||
"largest_group_population": 117000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Solomon Islands",
|
||||
"iso3": "SLB",
|
||||
"groups": 28,
|
||||
"languages": 27,
|
||||
"people": 269700,
|
||||
"largest_group": "Areare",
|
||||
"largest_group_population": 34500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Germany",
|
||||
"iso3": "DEU",
|
||||
|
|
@ -1062,16 +1072,6 @@
|
|||
"largest_group_population": 136000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Solomon Islands",
|
||||
"iso3": "SLB",
|
||||
"groups": 18,
|
||||
"languages": 17,
|
||||
"people": 231500,
|
||||
"largest_group": "Areare",
|
||||
"largest_group_population": 34500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "LBN",
|
||||
"iso3": "LBN",
|
||||
|
|
@ -1105,9 +1105,9 @@
|
|||
{
|
||||
"country": "French Polynesia",
|
||||
"iso3": "PYF",
|
||||
"groups": 3,
|
||||
"languages": 3,
|
||||
"people": 189200,
|
||||
"groups": 4,
|
||||
"languages": 4,
|
||||
"people": 193200,
|
||||
"largest_group": "Tahitian",
|
||||
"largest_group_population": 181000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -1122,6 +1122,16 @@
|
|||
"largest_group_population": 73500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Bhutan",
|
||||
"iso3": "BTN",
|
||||
"groups": 11,
|
||||
"languages": 11,
|
||||
"people": 180300,
|
||||
"largest_group": "Kheng",
|
||||
"largest_group_population": 66000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Georgia",
|
||||
"iso3": "GEO",
|
||||
|
|
@ -1132,16 +1142,6 @@
|
|||
"largest_group_population": 177000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Bhutan",
|
||||
"iso3": "BTN",
|
||||
"groups": 9,
|
||||
"languages": 9,
|
||||
"people": 174700,
|
||||
"largest_group": "Kheng",
|
||||
"largest_group_population": 66000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Djibouti",
|
||||
"iso3": "DJI",
|
||||
|
|
@ -1172,6 +1172,16 @@
|
|||
"largest_group_population": 140000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Vanuatu",
|
||||
"iso3": "VUT",
|
||||
"groups": 18,
|
||||
"languages": 17,
|
||||
"people": 129535,
|
||||
"largest_group": "Lenakel Tannese",
|
||||
"largest_group_population": 21500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Azerbaijan",
|
||||
"iso3": "AZE",
|
||||
|
|
@ -1192,16 +1202,6 @@
|
|||
"largest_group_population": 75500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Vanuatu",
|
||||
"iso3": "VUT",
|
||||
"groups": 12,
|
||||
"languages": 12,
|
||||
"people": 114600,
|
||||
"largest_group": "Lenakel Tannese",
|
||||
"largest_group_population": 21500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Fiji",
|
||||
"iso3": "FJI",
|
||||
|
|
@ -1225,9 +1225,9 @@
|
|||
{
|
||||
"country": "Colombia",
|
||||
"iso3": "COL",
|
||||
"groups": 4,
|
||||
"languages": 4,
|
||||
"people": 66000,
|
||||
"groups": 5,
|
||||
"languages": 5,
|
||||
"people": 68500,
|
||||
"largest_group": "Embera, Baudo",
|
||||
"largest_group_population": 30500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -1285,9 +1285,9 @@
|
|||
{
|
||||
"country": "Tajikistan",
|
||||
"iso3": "TJK",
|
||||
"groups": 4,
|
||||
"languages": 4,
|
||||
"people": 47300,
|
||||
"groups": 5,
|
||||
"languages": 5,
|
||||
"people": 49200,
|
||||
"largest_group": "Yagnobi",
|
||||
"largest_group_population": 20000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -1302,6 +1302,16 @@
|
|||
"largest_group_population": 22000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "New Caledonia",
|
||||
"iso3": "NCL",
|
||||
"groups": 7,
|
||||
"languages": 5,
|
||||
"people": 45625,
|
||||
"largest_group": "Lifuan",
|
||||
"largest_group_population": 15500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Greenland",
|
||||
"iso3": "GRL",
|
||||
|
|
@ -1342,16 +1352,6 @@
|
|||
"largest_group_population": 41500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "New Caledonia",
|
||||
"iso3": "NCL",
|
||||
"groups": 6,
|
||||
"languages": 4,
|
||||
"people": 40725,
|
||||
"largest_group": "Lifuan",
|
||||
"largest_group_population": 15500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Liechtenstein",
|
||||
"iso3": "LIE",
|
||||
|
|
@ -1522,6 +1522,16 @@
|
|||
"largest_group_population": 5900,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Cambodia",
|
||||
"iso3": "KHM",
|
||||
"groups": 1,
|
||||
"languages": 1,
|
||||
"people": 3900,
|
||||
"largest_group": "Kachok",
|
||||
"largest_group_population": 3900,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "KGZ",
|
||||
"iso3": "KGZ",
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
82
internal/build-packet-fixtures.mjs
Normal file
82
internal/build-packet-fixtures.mjs
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
#!/usr/bin/env node
|
||||
/**
|
||||
* build-packet-fixtures — build every committed packet fixture, so check:packets-all has more
|
||||
* than one SHAPE to evaluate.
|
||||
*
|
||||
* THE GAP THIS CLOSES. check:packets-all reported "every generated packet renders, in every locale
|
||||
* present" and passed on 11 packets — all of them the SAME ZONE (laos) in 11 locales, against 28
|
||||
* poster zones. The suite proved one zone's layout eleven times. Generating all 28 x 11 is a
|
||||
* network fetch per zone and ~100MB of artefacts, so the answer is not more zones: it is more
|
||||
* SHAPES, chosen where the layout can actually break, built from committed records with no network.
|
||||
*
|
||||
* ★ THE SHAPES ARE THE PAGE BOUNDARY. packet-render.js:76 sets PER_PAGE = 20, and pagination is
|
||||
* `for (start = 0; start < groups.length; start += PER_PAGE)`. laos has 95 groups and tibet 43 —
|
||||
* both mid-range, both remainder cases, so the boundary itself had NEVER been rendered:
|
||||
* - exactly 20 : one full page. An off-by-one here yields 2 list pages, the second empty.
|
||||
* - 21 : two pages, the second holding a SINGLE card.
|
||||
* - 1 : the minimum a zone can have.
|
||||
* Each is derived by slicing the committed tibet fixture, so they are byte-deterministic and need
|
||||
* no API.
|
||||
*
|
||||
* ⚠ EACH BUILD OVERWRITES THE PREVIOUS ONE, which is the reason this script exists rather than a
|
||||
* line of shell. packet.mjs names its output for the ZONE, not the fixture, so four fixture builds
|
||||
* against one zone leave one file — and check:packets-all would go on seeing a single shape while
|
||||
* reporting success. Each output is renamed to its fixture's own name so all of them coexist and
|
||||
* every one gets evaluated.
|
||||
*
|
||||
* Usage: node internal/build-packet-fixtures.mjs
|
||||
*/
|
||||
import { existsSync, renameSync, readdirSync } from 'node:fs'
|
||||
import { resolve, dirname, join } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import { spawnSync } from 'node:child_process'
|
||||
|
||||
const HERE = dirname(fileURLToPath(import.meta.url))
|
||||
const REPO = process.env.DOXA_REPO || resolve(HERE, '..')
|
||||
const FIXTURES = resolve(REPO, 'library/scripts/posters/fixtures')
|
||||
const OUT = resolve(REPO, 'library/scripts/posters/out/packets')
|
||||
// Every fixture is built against this zone: the records come from the fixture, and the zone only
|
||||
// supplies page 1's map. Keeping it constant means a shape difference is the ONLY variable.
|
||||
const ZONE = 'asia-china-tibet-autonomous-region'
|
||||
|
||||
if (!existsSync(FIXTURES)) {
|
||||
console.log(`PACKET-FIXTURES: SKIP — no fixtures directory at ${FIXTURES}`)
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
const fixtures = readdirSync(FIXTURES).filter((f) => /^records-.*\.json$/.test(f)).sort()
|
||||
if (!fixtures.length) {
|
||||
console.log('PACKET-FIXTURES: SKIP — no records-*.json fixtures committed')
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
console.log(`PACKET-FIXTURES: building ${fixtures.length} fixture(s)`)
|
||||
const built = []
|
||||
const failed = []
|
||||
|
||||
for (const fx of fixtures) {
|
||||
const name = fx.replace(/^records-/, '').replace(/\.json$/, '')
|
||||
const res = spawnSync(process.execPath, [join(REPO, 'library/scripts/posters/packet.mjs')], {
|
||||
cwd: REPO,
|
||||
encoding: 'utf8',
|
||||
env: { ...process.env, PACKET_RECORDS: join(FIXTURES, fx), ONLY: ZONE },
|
||||
})
|
||||
const produced = join(OUT, `${ZONE}.html`)
|
||||
if (res.status !== 0 || !existsSync(produced)) {
|
||||
failed.push(`${fx}: ${(res.stderr || res.stdout || '').trim().split('\n').slice(-1)[0] || 'no output'}`)
|
||||
console.log(` ✗ ${fx}`)
|
||||
continue
|
||||
}
|
||||
// Rename BEFORE the next build, or the next one overwrites it — see the warning above.
|
||||
const dest = join(OUT, `fixture-${name}.html`)
|
||||
renameSync(produced, dest)
|
||||
built.push(`fixture-${name}.html`)
|
||||
console.log(` ✓ ${fx} -> fixture-${name}.html`)
|
||||
}
|
||||
|
||||
if (failed.length) {
|
||||
console.error(`\nPACKET-FIXTURES: FAIL — ${failed.length} fixture(s) did not build`)
|
||||
for (const f of failed) console.error(' - ' + f)
|
||||
process.exit(1)
|
||||
}
|
||||
console.log(`\nPACKET-FIXTURES: ${built.length} packet(s) built. Run check:packets-all to evaluate them.`)
|
||||
|
|
@ -55,6 +55,7 @@ const REPO = resolve(dirname(fileURLToPath(import.meta.url)), '..')
|
|||
const POISON = process.argv.includes('--poison')
|
||||
let poisonStale = false
|
||||
let poisonTable = false
|
||||
let poisonGapKind = false
|
||||
|
||||
const read = (p) => JSON.parse(readFileSync(resolve(REPO, p), 'utf8'))
|
||||
let pins, table, verif
|
||||
|
|
@ -93,6 +94,7 @@ if (POISON) {
|
|||
poisonStale = true // L
|
||||
codes.zzm = { l: 'Claims a pool nobody swept for it', ck: 'ebible, grn', s: 'https://ebible.org/zzm/' } // M
|
||||
poisonTable = true // N
|
||||
poisonGapKind = true // O
|
||||
}
|
||||
|
||||
const SPECIAL = (c) => c === 'und' || c === 'mul' || c === 'mis' || c === 'zxx' || (c >= 'qaa' && c <= 'qtz')
|
||||
|
|
@ -336,13 +338,45 @@ if (verif && verif.links) {
|
|||
}
|
||||
}
|
||||
|
||||
/* ── O: every gap row is classified, and the classification means what it says ───────────
|
||||
"1,845 groups have nothing" is four situations wearing one number, and the map and the
|
||||
exported table each state the split. They did not agree: the table tested sign language
|
||||
first, the map tested private-use first, so 47 Deaf groups landed in different buckets and
|
||||
the Deaf share read 136 in one place and 183 in the other. Both were internally consistent
|
||||
and they told different stories, which is worse than one of them simply being wrong.
|
||||
|
||||
This holds the table to three things a reader depends on: every tier-0 group appears
|
||||
exactly once, every row carries a kind, and a sign language is ALWAYS labelled as one —
|
||||
never as an unindexable code — because being Deaf is the actionable fact and every
|
||||
private-use code in this gap belongs to a sign language anyway. */
|
||||
{
|
||||
let t
|
||||
try { t = read('data/tables/gospel-gaps.json') } catch { t = null }
|
||||
if (t) {
|
||||
const tier0 = rows.filter((r) => r[6] === 0).length
|
||||
const gapRows = (t.rows || []).length
|
||||
if (tier0 !== gapRows) {
|
||||
add('O', `the gap table has ${gapRows} row(s) but ${tier0} pin(s) are tier 0 — one of them is stale`)
|
||||
}
|
||||
const unclassified = (t.rows || []).filter((r) => (poisonGapKind ? true : !r.gap_kind)).length
|
||||
if (unclassified) add('O', `${unclassified} gap row(s) carry no gap_kind`)
|
||||
const mislabelled = (t.rows || []).filter((r) => {
|
||||
const c = codes[r.iso639_3]
|
||||
return c && c.sg === 1 && !/sign language/.test(r.gap_kind || '')
|
||||
})
|
||||
if (mislabelled.length) {
|
||||
add('O', `${mislabelled.length} sign-language row(s) are not labelled as sign languages (e.g. ${mislabelled.slice(0, 3).map((r) => r.iso639_3).join(', ')}) — the Deaf share of the gap will read low`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const clauses = new Set(fails.map((f) => f.slice(3, 4)))
|
||||
if (POISON) {
|
||||
// D is included deliberately: it is the clause that would have caught the 506
|
||||
// resources dropped from a table titled "every link", and the most valuable clause is
|
||||
// the worst one to leave unproven. The injected codes above (und, zzq) are absent from
|
||||
// the table, so they poison D as well as A and B.
|
||||
const want = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
|
||||
const want = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']
|
||||
const caught = want.filter((c) => clauses.has(c))
|
||||
console.log(`COVERAGE-CONSISTENT --poison: ${caught.length}/${want.length} clause(s) caught their injected defect (${caught.join(',')})`)
|
||||
if (caught.length !== want.length) {
|
||||
|
|
@ -370,3 +404,4 @@ console.log(' K every shipped link is verified, and none known-broken ships')
|
|||
console.log(' L the verification record is current, not merely consistent')
|
||||
console.log(' M a pool named as checked was really searched for that code')
|
||||
console.log(' N a table\'s has-anything column agrees with the pin tier')
|
||||
console.log(' O every gap row is classified, and a sign language says so')
|
||||
|
|
|
|||
|
|
@ -32,6 +32,21 @@ const LEAF = process.argv[2] || DEFAULT_LEAF
|
|||
const WIDTHS = (process.env.CARD_FIT_WIDTH || '390,768,1024,1440,1920')
|
||||
.split(',').map((n) => Number(n.trim())).filter(Boolean)
|
||||
|
||||
// ★ AND SWEEP LOCALES, for exactly the same reason the widths are swept. The Driver's requirement
|
||||
// was "full words visible AND support localization"; this gate only ever ran in English, which is
|
||||
// the shortest of the eleven. MEASURED 2026-09-24 at 1440px, the three print labels:
|
||||
// en Prayer List 76px · Card Deck 72px · Poster Map 79px
|
||||
// ro Listă de rugăciune 122px · Pachet de cartonașe 133px · Harta afișului 92px (+75%)
|
||||
// zh 禱告名單 56px · 禱告卡組 56px · 海报地图 56px
|
||||
// Romanian is the widest RENDERED, which is the property that matters — not the longest string.
|
||||
// Chinese is only 4 characters yet each glyph is near double-width, so a character-count heuristic
|
||||
// would have picked the wrong worst case. The gate asserts scrollWidth > clientWidth, which is
|
||||
// pixels, so the sweep has to be pixels too.
|
||||
// en is always included as the control; ro and zh are the measured extremes. Override with
|
||||
// CARD_FIT_LANG to check a specific locale.
|
||||
const LANGS = (process.env.CARD_FIT_LANG || 'en,ro,zh')
|
||||
.split(',').map((s) => s.trim()).filter(Boolean)
|
||||
|
||||
let reachable = false
|
||||
try { const r = await fetch(LEAF, { signal: AbortSignal.timeout(4000) }); reachable = r.ok } catch { /* precondition */ }
|
||||
if (!reachable) {
|
||||
|
|
@ -44,10 +59,15 @@ const WALK = `(root, out) => { out = out || []; const rec = (r) => { for (const
|
|||
|
||||
const browser = await chromium.launch({ args: ['--use-gl=swiftshader', '--enable-unsafe-swiftshader'] })
|
||||
|
||||
async function measure(width) {
|
||||
async function measure(width, lang) {
|
||||
const mobile = width < 500
|
||||
const page = await browser.newPage({ viewport: { width, height: 1000 }, isMobile: mobile, hasTouch: mobile })
|
||||
await page.goto(LEAF, { waitUntil: 'load', timeout: 45000 })
|
||||
// ?lang= is how the app selects a locale (library/i18n/index.js:83). Appended rather than
|
||||
// replaced so a caller can still pass a leaf URL that already carries query params.
|
||||
const url = lang && lang !== 'en'
|
||||
? LEAF + (LEAF.includes('?') ? '&' : '?') + 'lang=' + encodeURIComponent(lang)
|
||||
: LEAF
|
||||
await page.goto(url, { waitUntil: 'load', timeout: 45000 })
|
||||
await page.waitForTimeout(10000)
|
||||
|
||||
// ★ HOVER IS INVISIBLE TO A STATIC PROBE, which is exactly how the blue outline stayed
|
||||
|
|
@ -98,6 +118,50 @@ async function measure(width) {
|
|||
}
|
||||
} catch (_) { /* hover is an enhancement; never let it break the geometry run */ }
|
||||
|
||||
// ★ CAN A READER ACTUALLY REACH THE LAST POSTER? Everything else here measures cards that are
|
||||
// ALREADY laid out — which is satisfied perfectly by a wall whose bottom half is unreachable.
|
||||
// The Kingdom-agent ruled UPG-100 the one mobile-app showcase, promising an "Instagram-style
|
||||
// scroll", and nothing asserted it.
|
||||
//
|
||||
// ⚠ DO NOT ASK document.documentElement.scrollHeight. MEASURED at 390x844 on upg-100-mfe: it
|
||||
// reports 844 — exactly one viewport — while the wall holds 13,032px of cards. The composite
|
||||
// scrolls an INNER element, so the document is not the thing that moves and a document-level
|
||||
// check would call a healthy wall empty. Find the element that actually overflows.
|
||||
//
|
||||
// It SCROLLS rather than computing: geometry saying "the last card is at 13001px" is not the
|
||||
// same claim as "scrolling brings it into view with working controls".
|
||||
let reach = null
|
||||
try {
|
||||
reach = await page.evaluate(`(async () => {
|
||||
const all = (${WALK})(document)
|
||||
const vis = (e) => { const b = e.getBoundingClientRect(); return b.width > 2 && b.height > 2 }
|
||||
const cards = all.filter((e) => (e.className||'').toString().split(' ').includes('card')).filter(vis)
|
||||
if (!cards.length) return null
|
||||
const last = cards[cards.length - 1]
|
||||
// The scroller is whichever ancestor-ish element genuinely overflows. Picking the LARGEST
|
||||
// overflow avoids matching a small inner scroller (the legend's own list, say).
|
||||
const scrollers = all.filter((e) => {
|
||||
const cs = getComputedStyle(e)
|
||||
return /(auto|scroll)/.test(cs.overflowY) && e.scrollHeight > e.clientHeight + 8
|
||||
}).sort((a, b) => (b.scrollHeight - b.clientHeight) - (a.scrollHeight - a.clientHeight))
|
||||
const sc = scrollers[0]
|
||||
if (sc) { sc.scrollTop = sc.scrollHeight } else { window.scrollTo(0, document.body.scrollHeight) }
|
||||
await new Promise((r) => setTimeout(r, 1000))
|
||||
const lb = last.getBoundingClientRect()
|
||||
const ctrls = [...last.querySelectorAll('.pbtn,.pstock')]
|
||||
return {
|
||||
scrolled: sc ? Math.round(sc.scrollTop) : Math.round(window.scrollY),
|
||||
maxScroll: sc ? sc.scrollHeight - sc.clientHeight : 0,
|
||||
lastInView: lb.top < window.innerHeight && lb.bottom > 0,
|
||||
lastControls: ctrls.length,
|
||||
lastClipped: ctrls.filter((e) => e.scrollWidth > e.clientWidth + 1).length,
|
||||
lastUnusable: ctrls.filter((e) => {
|
||||
const r = e.getBoundingClientRect(); return r.width < 18 || r.height < 10
|
||||
}).length,
|
||||
}
|
||||
})()`)
|
||||
} catch (_) { /* reachability is additive; never let it break the geometry run */ }
|
||||
|
||||
const out = await page.evaluate(`(() => {
|
||||
const all = (${WALK})(document)
|
||||
const vis = (e) => { const b = e.getBoundingClientRect(); return b.width > 2 && b.height > 2 }
|
||||
|
|
@ -164,12 +228,12 @@ async function measure(width) {
|
|||
controls: ctrls.length, tiny: tiny.length }
|
||||
})()`)
|
||||
await page.close()
|
||||
return { width, hover, ...out }
|
||||
return { width, lang, hover, reach, ...out }
|
||||
}
|
||||
|
||||
const results = []
|
||||
try {
|
||||
for (const w of WIDTHS) results.push(await measure(w))
|
||||
for (const lang of LANGS) for (const w of WIDTHS) results.push(await measure(w, lang))
|
||||
} finally {
|
||||
await browser.close()
|
||||
}
|
||||
|
|
@ -177,13 +241,14 @@ try {
|
|||
console.log('POSTER-CARD-FITS')
|
||||
console.log(` leaf : ${LEAF}`)
|
||||
for (const r of results) {
|
||||
console.log(` ${String(r.width).padStart(4)}px cards ${String(r.cards).padStart(2)}`
|
||||
console.log(` ${(r.lang || 'en').padEnd(2)} ${String(r.width).padStart(4)}px cards ${String(r.cards).padStart(2)}`
|
||||
+ ` · overflow ${r.overflowing}${r.worst ? ` (${r.worst}px)` : ''}`
|
||||
+ ` · neighbour ${r.intrusions}`
|
||||
+ ` · over-preview ${r.coveringPreview}${r.worstY ? ` (${r.worstY}px)` : ''}`
|
||||
+ ` · previews ${r.previewsPainted} painted`
|
||||
+ `${r.previewsBroken ? `/${r.previewsBroken} BROKEN` : ''}${r.noPreview ? `/${r.noPreview} none` : ''}`
|
||||
+ ` · ${r.controls} control(s), ${r.tiny} too small, ${r.clipped} clipped`
|
||||
+ (r.reach ? ` · last card ${r.reach.lastInView ? 'reachable' : 'UNREACHABLE'}` : '')
|
||||
+ (r.hover
|
||||
? ` · hover ${r.hover.after.outlineStyle === 'none'
|
||||
? 'no outline' + (r.width < 500 ? ' (touch, correct)' : '')
|
||||
|
|
@ -193,7 +258,7 @@ for (const r of results) {
|
|||
|
||||
const fails = []
|
||||
for (const r of results) {
|
||||
const at = `${r.width}px`
|
||||
const at = `${r.lang || 'en'} ${r.width}px`
|
||||
// PRECONDITION: no cards means nothing was tested at this width — not a pass.
|
||||
if (!r.cards) { fails.push(`${at}: no poster cards rendered — wrong url, or the wall did not mount`); continue }
|
||||
if (!r.rows) { fails.push(`${at}: ${r.cards} card(s) but none carry a .pfs print-options row`); continue }
|
||||
|
|
@ -242,6 +307,24 @@ for (const r of results) {
|
|||
// HOVER: the card must answer the pointer, and must not move when it does.
|
||||
// Only asserted where a pointer exists — a touch viewport has `@media (hover:none)` suppressing
|
||||
// the state deliberately, so demanding an outline there would fail the correct behaviour.
|
||||
// REACHABILITY: the LAST card must be reachable, and still work when you get there.
|
||||
if (r.reach) {
|
||||
if (!r.reach.lastInView) {
|
||||
fails.push(`${at}: scrolling to the bottom does NOT bring the last poster into view `
|
||||
+ `(scrolled ${r.reach.scrolled} of ${r.reach.maxScroll}) — every geometry assertion above `
|
||||
+ 'is satisfied by a wall whose bottom half a reader can never get to')
|
||||
}
|
||||
if (r.reach.lastControls === 0) {
|
||||
fails.push(`${at}: the last poster has NO print controls — the wall degrades toward the end`)
|
||||
}
|
||||
if (r.reach.lastClipped) {
|
||||
fails.push(`${at}: ${r.reach.lastClipped} control(s) on the LAST poster are clipped — the `
|
||||
+ 'sampled cards near the top fit while the far end does not')
|
||||
}
|
||||
if (r.reach.lastUnusable) {
|
||||
fails.push(`${at}: ${r.reach.lastUnusable} control(s) on the last poster are too small to press`)
|
||||
}
|
||||
}
|
||||
if (r.hover) {
|
||||
const { before, after } = r.hover
|
||||
const pointer = r.width >= 500
|
||||
|
|
@ -274,6 +357,9 @@ if (fails.length) {
|
|||
for (const f of fails) console.error(' - ' + f)
|
||||
process.exit(1)
|
||||
}
|
||||
console.log(`\nPOSTER-CARD-FITS: PASS — at ${results.length} width(s) (${WIDTHS.join(', ')}px) every `
|
||||
// Report widths x LOCALES, not the product. "15 width(s)" misdescribes 5 widths in 3 languages,
|
||||
// and a summary that overstates its own coverage is how a green line stops meaning anything.
|
||||
console.log(`\nPOSTER-CARD-FITS: PASS — ${WIDTHS.length} width(s) (${WIDTHS.join(', ')}px) `
|
||||
+ `x ${LANGS.length} locale(s) (${LANGS.join(', ')}) = ${results.length} combination(s). Every `
|
||||
+ 'print-options row sits inside its own card and below its preview, with every control still '
|
||||
+ 'big enough to press.')
|
||||
+ 'big enough to press and its label fully readable in every locale checked.')
|
||||
|
|
|
|||
117
internal/check-published-tree-weight.mjs
Normal file
117
internal/check-published-tree-weight.mjs
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
#!/usr/bin/env node
|
||||
/**
|
||||
* check-published-tree-weight — the tree we publish has a weight, and nothing was watching it.
|
||||
*
|
||||
* THE DEFECT THIS CATCHES. A publish was ALREADY BLOCKED ONCE at a 74MB asset tree (Forgejo
|
||||
* rejected the pack). Nothing has measured the tree since. MEASURED 2026-09-25: public/assets is
|
||||
* 134MB, against the 94MB recorded when BUILD-POSTERS-GENERATE-ON-DEMAND-DROP-52MB was written —
|
||||
* it grew 40MB, and no one noticed, because size is the classic property that only becomes visible
|
||||
* when something refuses to accept it.
|
||||
*
|
||||
* ★ IT REPORTS THE SPLIT, NOT JUST A TOTAL, because the total cannot be acted on. Measured today:
|
||||
* posters 70MB 28 zone HTML sources 28MB + 28 zone rasters 5.8MB
|
||||
* + 176 city-* 23MB + 174 country-* 14MB
|
||||
* tables 24MB
|
||||
* people-groups 23MB
|
||||
* previews 10MB
|
||||
* The zone half is REPRODUCIBLE (generate.mjs is token-free and makes no network call). The 176
|
||||
* city posters are NOT — they fetch OSM street tiles at generation time, so their .webp must not
|
||||
* be deleted, and publish-html.mjs deliberately skips them. A gate that reported only "134MB"
|
||||
* would invite deleting exactly the wrong half.
|
||||
*
|
||||
* ⚠ AND RAW SIZE IS NOT THE SHIPPING COST. publish-html.mjs measured it with real git packs:
|
||||
* swapping the 28 zone rasters (5.0MB raw, ~5.0MB packed — webp is already compressed and git
|
||||
* cannot pack it further) for their HTML sources (21.4MB raw, 5.78MB packed — repetitive text) is
|
||||
* about +0.8MB PACKED. A net LOSS. Its own comment says "do not ship that swap and call it a
|
||||
* saving". So this gate reports raw bytes as a TREND SIGNAL, and says plainly that a raw number is
|
||||
* not a packed number.
|
||||
*
|
||||
* Thresholds are a CEILING WITH HEADROOM, not today's value pinned: a gate that fails on the next
|
||||
* legitimate asset teaches people to raise the number rather than read it.
|
||||
*
|
||||
* Usage: node internal/check-published-tree-weight.mjs
|
||||
* TREE_WEIGHT_MAX_MB=<n> override the ceiling
|
||||
*/
|
||||
import { existsSync, statSync, readdirSync } from 'node:fs'
|
||||
import { resolve, dirname, join } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
|
||||
const HERE = dirname(fileURLToPath(import.meta.url))
|
||||
const REPO = process.env.DOXA_REPO || resolve(HERE, '..')
|
||||
const ASSETS = resolve(REPO, 'public/assets')
|
||||
|
||||
if (!existsSync(ASSETS)) {
|
||||
console.log(`TREE-WEIGHT: SKIP — no asset tree at ${ASSETS}`)
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
const MB = 1024 * 1024
|
||||
// 160MB against 134MB measured: ~20% headroom. Far above today, far below anything that would
|
||||
// repeat the 74MB publish rejection by surprise.
|
||||
const MAX_MB = Number(process.env.TREE_WEIGHT_MAX_MB || 160)
|
||||
|
||||
const dirSize = (dir) => {
|
||||
let total = 0
|
||||
const walk = (d) => {
|
||||
let entries
|
||||
try { entries = readdirSync(d, { withFileTypes: true }) } catch { return }
|
||||
for (const e of entries) {
|
||||
const p = join(d, e.name)
|
||||
if (e.isDirectory()) { walk(p); continue }
|
||||
try { total += statSync(p).size } catch { /* raced away */ }
|
||||
}
|
||||
}
|
||||
walk(dir)
|
||||
return total
|
||||
}
|
||||
|
||||
const top = readdirSync(ASSETS, { withFileTypes: true })
|
||||
.filter((e) => e.isDirectory())
|
||||
.map((e) => ({ name: e.name, bytes: dirSize(join(ASSETS, e.name)) }))
|
||||
.sort((a, b) => b.bytes - a.bytes)
|
||||
|
||||
const total = top.reduce((s, d) => s + d.bytes, 0)
|
||||
const mb = (b) => (b / MB).toFixed(1)
|
||||
|
||||
console.log('TREE-WEIGHT')
|
||||
console.log(` public/assets : ${mb(total)}MB (ceiling ${MAX_MB}MB)`)
|
||||
for (const d of top.slice(0, 6)) console.log(` ${d.name.padEnd(14)} ${mb(d.bytes).padStart(6)}MB`)
|
||||
|
||||
// The posters split is the actionable part — see the header. Reported whenever it exists.
|
||||
const posters = join(ASSETS, 'posters')
|
||||
if (existsSync(posters)) {
|
||||
const files = readdirSync(posters)
|
||||
const bucket = (pred) => {
|
||||
let n = 0, b = 0
|
||||
for (const f of files) {
|
||||
if (!pred(f)) continue
|
||||
n++
|
||||
try { b += statSync(join(posters, f)).size } catch { /* raced away */ }
|
||||
}
|
||||
return { n, b }
|
||||
}
|
||||
const city = bucket((f) => /^city-/.test(f) && f.endsWith('.webp'))
|
||||
const country = bucket((f) => /^country-/.test(f) && f.endsWith('.webp'))
|
||||
const zoneRaster = bucket((f) => f.endsWith('.webp') && !/^(city|country)-/.test(f))
|
||||
const zoneSource = bucket((f) => f.endsWith('.html'))
|
||||
console.log(' posters split :')
|
||||
console.log(` city-*.webp ${String(city.n).padStart(4)} files ${mb(city.b).padStart(6)}MB NOT reproducible (needs OSM tiles) — do not delete`)
|
||||
console.log(` country-*.webp ${String(country.n).padStart(4)} files ${mb(country.b).padStart(6)}MB`)
|
||||
console.log(` zone *.webp ${String(zoneRaster.n).padStart(4)} files ${mb(zoneRaster.b).padStart(6)}MB reproducible`)
|
||||
console.log(` zone *.html ${String(zoneSource.n).padStart(4)} files ${mb(zoneSource.b).padStart(6)}MB reproducible (the browser-rasterise fallback)`)
|
||||
console.log(' ⚠ raw bytes, NOT packed. publish-html.mjs measured the swap of zone rasters for')
|
||||
console.log(' their HTML sources at about +0.8MB PACKED — a net LOSS, because webp is already')
|
||||
console.log(' compressed and repetitive HTML packs well. Do not read a raw saving as a shipped one.')
|
||||
}
|
||||
|
||||
if (total > MAX_MB * MB) {
|
||||
console.error(`\nTREE-WEIGHT: FAIL — public/assets is ${mb(total)}MB, over the ${MAX_MB}MB ceiling.`)
|
||||
console.error(' A publish was already blocked once at a 74MB asset tree (Forgejo rejected the pack),')
|
||||
console.error(' and nothing has measured it since; it grew from 94MB to 134MB unnoticed.')
|
||||
console.error(' Before deleting anything, read the split above: the city posters are the heavy half')
|
||||
console.error(' AND the half that cannot be regenerated. The reproducible half is worth less than')
|
||||
console.error(' its raw size suggests once packed.')
|
||||
process.exit(1)
|
||||
}
|
||||
console.log(`\nTREE-WEIGHT: PASS — ${mb(total)}MB of ${MAX_MB}MB. This is a RAW measurement of what we `
|
||||
+ 'publish, not a packed one, and it is a trend signal rather than a shipping cost.')
|
||||
|
|
@ -85,8 +85,25 @@ const consumersOf = (componentPath) => {
|
|||
if (!/\.(vue|js|mjs)$/.test(e)) continue
|
||||
let text
|
||||
try { text = readFileSync(p, 'utf8') } catch { continue }
|
||||
// an import of this component, by path or by the bare stem
|
||||
if (text.includes(componentPath.replace(/^library\//, '@map/')) || text.includes('/' + name)) {
|
||||
// ⚠ REQUIRE AN ACTUAL IMPORT, NOT A MENTION. This was a plain substring test, and a
|
||||
// substring cannot tell an import from a comment ABOUT the component.
|
||||
// MEASURED 2026-09-25: it reported research-dashboard as a stale consumer of
|
||||
// SemanticTreeLegend for three ticks, and I routed that "drift" to its owner as work to do.
|
||||
// It was a FALSE POSITIVE. research-dashboard imports the component ZERO times and mentions
|
||||
// it four times in PROSE — DashboardFacetRail.vue:3 says "the floating @map
|
||||
// SemanticTreeLegend is DROPPED", with the root cause it was dropped for. A bundle that
|
||||
// deliberately removed a component is CORRECT to lack its translation keys; the gate was
|
||||
// reading the comment explaining the removal as evidence of use.
|
||||
// A gate that manufactures work for another agent is worse than one that misses drift.
|
||||
const importPath = componentPath.replace(/^library\//, '@map/')
|
||||
const stem = name.replace(/\.vue$/, '')
|
||||
const isImport = new RegExp(
|
||||
// import ... from '<path or .../Name.vue>' | import('<...>')
|
||||
`(?:import[^;\\n]*?from\\s*|import\\s*\\(\\s*)['"\`][^'"\`]*(?:${
|
||||
importPath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
||||
}|/${stem.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\.vue)['"\`]`,
|
||||
).test(text)
|
||||
if (isImport) {
|
||||
// the BUNDLE is the first directory under plugin-designs/
|
||||
const rel = p.slice(designs.length + 1)
|
||||
out.add(rel.split('/')[0])
|
||||
|
|
|
|||
578
library/scripts/posters/fixtures/records-edge-21-groups.json
Normal file
578
library/scripts/posters/fixtures/records-edge-21-groups.json
Normal file
|
|
@ -0,0 +1,578 @@
|
|||
[
|
||||
{
|
||||
"slug": "adi",
|
||||
"name": "Adi",
|
||||
"country_code": "CHN",
|
||||
"population": "1400",
|
||||
"religion": "E",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://flickr.com/photos/ramesh_lalwani/8169468855/",
|
||||
"text": "Ramesh Lalwani - Flickr"
|
||||
}
|
||||
],
|
||||
"latitude": "29.24961200",
|
||||
"longitude": "95.17182400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion"
|
||||
},
|
||||
{
|
||||
"slug": "ainu-china",
|
||||
"name": "Ainu",
|
||||
"country_code": "CHN",
|
||||
"population": "11000",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "38.93020500",
|
||||
"longitude": "76.16959600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "alxa-mongols",
|
||||
"name": "Alxa Mongols",
|
||||
"country_code": "CHN",
|
||||
"population": "35500",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "39.20798700",
|
||||
"longitude": "101.67522000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "bogar-lhoba",
|
||||
"name": "Bogar Lhoba",
|
||||
"country_code": "CHN",
|
||||
"population": "5300",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By bojum"
|
||||
}
|
||||
],
|
||||
"latitude": "28.74470000",
|
||||
"longitude": "93.64580000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "bogol",
|
||||
"name": "Bogol",
|
||||
"country_code": "CHN",
|
||||
"population": "1400",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "48.46892600",
|
||||
"longitude": "124.48821300",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "boyu-tibetans",
|
||||
"name": "Boyu Tibetans",
|
||||
"country_code": "CHN",
|
||||
"population": "5400",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "33.36236100",
|
||||
"longitude": "104.58044400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "bunan",
|
||||
"name": "Bunan",
|
||||
"country_code": "CHN",
|
||||
"population": "2500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "31.79607000",
|
||||
"longitude": "78.90344000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "buryat",
|
||||
"name": "Buryat",
|
||||
"country_code": "CHN",
|
||||
"population": "170000",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://commons.wikimedia.org/wiki/File:Me_and_a_Buryat.jpg",
|
||||
"text": "Telaneo - Wikimedia"
|
||||
}
|
||||
],
|
||||
"latitude": "48.75926000",
|
||||
"longitude": "117.78630000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "butuo-nosu",
|
||||
"name": "Butuo Nosu",
|
||||
"country_code": "CHN",
|
||||
"population": "337000",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By Anonymous"
|
||||
}
|
||||
],
|
||||
"latitude": "27.60452900",
|
||||
"longitude": "102.87518600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "cona-monba",
|
||||
"name": "Cona Monba",
|
||||
"country_code": "CHN",
|
||||
"population": "58500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of Joshua Project by Anonymous"
|
||||
}
|
||||
],
|
||||
"latitude": "27.89404900",
|
||||
"longitude": "92.20691400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "darang-deng",
|
||||
"name": "Darang Deng",
|
||||
"country_code": "CHN",
|
||||
"population": "12500",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.37980000",
|
||||
"longitude": "97.02930000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "enger-yugur",
|
||||
"name": "Enger Yugur",
|
||||
"country_code": "CHN",
|
||||
"population": "5500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://flickr.com/photos/mke1963/154213183/",
|
||||
"text": "Mark mke1963 - Flickr"
|
||||
}
|
||||
],
|
||||
"latitude": "37.98815000",
|
||||
"longitude": "101.76214000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "ersu",
|
||||
"name": "Ersu",
|
||||
"country_code": "CHN",
|
||||
"population": "48000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "29.23558500",
|
||||
"longitude": "102.35591600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "geman-deng",
|
||||
"name": "Geman Deng",
|
||||
"country_code": "CHN",
|
||||
"population": "16500",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.47324000",
|
||||
"longitude": "97.04437000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "heishui",
|
||||
"name": "Heishui",
|
||||
"country_code": "CHN",
|
||||
"population": "48500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": null,
|
||||
"latitude": "32.19164300",
|
||||
"longitude": "103.03860100",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "henan-mongols",
|
||||
"name": "Henan Mongols",
|
||||
"country_code": "CHN",
|
||||
"population": "43000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": null,
|
||||
"latitude": "34.73230000",
|
||||
"longitude": "101.60860000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "keji",
|
||||
"name": "Keji",
|
||||
"country_code": "CHN",
|
||||
"population": "2600",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.paulnoll.com/China/Minorities/China-Nationalities.html",
|
||||
"text": "Paul Noll"
|
||||
}
|
||||
],
|
||||
"latitude": "29.65355100",
|
||||
"longitude": "91.12095900",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "kyrgyz",
|
||||
"name": "Kyrgyz",
|
||||
"country_code": "CHN",
|
||||
"population": "195000",
|
||||
"religion": "MOF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://commons.wikimedia.org/wiki/File:Kyrgyz_women_offering_butter_and_salt.jpg",
|
||||
"text": "Theklan - Wikimedia"
|
||||
}
|
||||
],
|
||||
"latitude": "38.01774000",
|
||||
"longitude": "76.09630000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Folk"
|
||||
},
|
||||
{
|
||||
"slug": "luzu",
|
||||
"name": "Luzu",
|
||||
"country_code": "CHN",
|
||||
"population": "1600",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.33754000",
|
||||
"longitude": "101.35823900",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "manyak",
|
||||
"name": "Manyak",
|
||||
"country_code": "CHN",
|
||||
"population": "3000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "29.67090000",
|
||||
"longitude": "101.59510000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "medog-monba",
|
||||
"name": "Medog Monba",
|
||||
"country_code": "CHN",
|
||||
"population": "11000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "29.46300000",
|
||||
"longitude": "95.74060000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
}
|
||||
]
|
||||
548
library/scripts/posters/fixtures/records-edge-exactly-20.json
Normal file
548
library/scripts/posters/fixtures/records-edge-exactly-20.json
Normal file
|
|
@ -0,0 +1,548 @@
|
|||
[
|
||||
{
|
||||
"slug": "adi",
|
||||
"name": "Adi",
|
||||
"country_code": "CHN",
|
||||
"population": "1400",
|
||||
"religion": "E",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://flickr.com/photos/ramesh_lalwani/8169468855/",
|
||||
"text": "Ramesh Lalwani - Flickr"
|
||||
}
|
||||
],
|
||||
"latitude": "29.24961200",
|
||||
"longitude": "95.17182400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion"
|
||||
},
|
||||
{
|
||||
"slug": "ainu-china",
|
||||
"name": "Ainu",
|
||||
"country_code": "CHN",
|
||||
"population": "11000",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "38.93020500",
|
||||
"longitude": "76.16959600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "alxa-mongols",
|
||||
"name": "Alxa Mongols",
|
||||
"country_code": "CHN",
|
||||
"population": "35500",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "39.20798700",
|
||||
"longitude": "101.67522000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "bogar-lhoba",
|
||||
"name": "Bogar Lhoba",
|
||||
"country_code": "CHN",
|
||||
"population": "5300",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By bojum"
|
||||
}
|
||||
],
|
||||
"latitude": "28.74470000",
|
||||
"longitude": "93.64580000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "bogol",
|
||||
"name": "Bogol",
|
||||
"country_code": "CHN",
|
||||
"population": "1400",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "48.46892600",
|
||||
"longitude": "124.48821300",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "boyu-tibetans",
|
||||
"name": "Boyu Tibetans",
|
||||
"country_code": "CHN",
|
||||
"population": "5400",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "33.36236100",
|
||||
"longitude": "104.58044400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "bunan",
|
||||
"name": "Bunan",
|
||||
"country_code": "CHN",
|
||||
"population": "2500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "31.79607000",
|
||||
"longitude": "78.90344000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "buryat",
|
||||
"name": "Buryat",
|
||||
"country_code": "CHN",
|
||||
"population": "170000",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://commons.wikimedia.org/wiki/File:Me_and_a_Buryat.jpg",
|
||||
"text": "Telaneo - Wikimedia"
|
||||
}
|
||||
],
|
||||
"latitude": "48.75926000",
|
||||
"longitude": "117.78630000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "butuo-nosu",
|
||||
"name": "Butuo Nosu",
|
||||
"country_code": "CHN",
|
||||
"population": "337000",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By Anonymous"
|
||||
}
|
||||
],
|
||||
"latitude": "27.60452900",
|
||||
"longitude": "102.87518600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "cona-monba",
|
||||
"name": "Cona Monba",
|
||||
"country_code": "CHN",
|
||||
"population": "58500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of Joshua Project by Anonymous"
|
||||
}
|
||||
],
|
||||
"latitude": "27.89404900",
|
||||
"longitude": "92.20691400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "darang-deng",
|
||||
"name": "Darang Deng",
|
||||
"country_code": "CHN",
|
||||
"population": "12500",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.37980000",
|
||||
"longitude": "97.02930000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "enger-yugur",
|
||||
"name": "Enger Yugur",
|
||||
"country_code": "CHN",
|
||||
"population": "5500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://flickr.com/photos/mke1963/154213183/",
|
||||
"text": "Mark mke1963 - Flickr"
|
||||
}
|
||||
],
|
||||
"latitude": "37.98815000",
|
||||
"longitude": "101.76214000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "ersu",
|
||||
"name": "Ersu",
|
||||
"country_code": "CHN",
|
||||
"population": "48000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "29.23558500",
|
||||
"longitude": "102.35591600",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "geman-deng",
|
||||
"name": "Geman Deng",
|
||||
"country_code": "CHN",
|
||||
"population": "16500",
|
||||
"religion": "ECF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.47324000",
|
||||
"longitude": "97.04437000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion - Chinese Folk Religion"
|
||||
},
|
||||
{
|
||||
"slug": "heishui",
|
||||
"name": "Heishui",
|
||||
"country_code": "CHN",
|
||||
"population": "48500",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": null,
|
||||
"latitude": "32.19164300",
|
||||
"longitude": "103.03860100",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "henan-mongols",
|
||||
"name": "Henan Mongols",
|
||||
"country_code": "CHN",
|
||||
"population": "43000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": null,
|
||||
"latitude": "34.73230000",
|
||||
"longitude": "101.60860000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "keji",
|
||||
"name": "Keji",
|
||||
"country_code": "CHN",
|
||||
"population": "2600",
|
||||
"religion": "MSN",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.paulnoll.com/China/Minorities/China-Nationalities.html",
|
||||
"text": "Paul Noll"
|
||||
}
|
||||
],
|
||||
"latitude": "29.65355100",
|
||||
"longitude": "91.12095900",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Sunni"
|
||||
},
|
||||
{
|
||||
"slug": "kyrgyz",
|
||||
"name": "Kyrgyz",
|
||||
"country_code": "CHN",
|
||||
"population": "195000",
|
||||
"religion": "MOF",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://commons.wikimedia.org/wiki/File:Kyrgyz_women_offering_butter_and_salt.jpg",
|
||||
"text": "Theklan - Wikimedia"
|
||||
}
|
||||
],
|
||||
"latitude": "38.01774000",
|
||||
"longitude": "76.09630000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Islam - Folk"
|
||||
},
|
||||
{
|
||||
"slug": "luzu",
|
||||
"name": "Luzu",
|
||||
"country_code": "CHN",
|
||||
"population": "1600",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "28.33754000",
|
||||
"longitude": "101.35823900",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
},
|
||||
{
|
||||
"slug": "manyak",
|
||||
"name": "Manyak",
|
||||
"country_code": "CHN",
|
||||
"population": "3000",
|
||||
"religion": "BLA",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://www.asiaharvest.org",
|
||||
"text": "Operation China, Asia Harvest"
|
||||
}
|
||||
],
|
||||
"latitude": "29.67090000",
|
||||
"longitude": "101.59510000",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Buddhism - Tibetan"
|
||||
}
|
||||
]
|
||||
32
library/scripts/posters/fixtures/records-edge-one-group.json
Normal file
32
library/scripts/posters/fixtures/records-edge-one-group.json
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
[
|
||||
{
|
||||
"slug": "adi",
|
||||
"name": "Adi",
|
||||
"country_code": "CHN",
|
||||
"population": "1400",
|
||||
"religion": "E",
|
||||
"has_photo": false,
|
||||
"picture_credit": [
|
||||
{
|
||||
"link": null,
|
||||
"text": "Photo courtesy of "
|
||||
},
|
||||
{
|
||||
"link": "https://www.joshuaproject.net",
|
||||
"text": "Joshua Project"
|
||||
},
|
||||
{
|
||||
"link": null,
|
||||
"text": ". By "
|
||||
},
|
||||
{
|
||||
"link": "https://flickr.com/photos/ramesh_lalwani/8169468855/",
|
||||
"text": "Ramesh Lalwani - Flickr"
|
||||
}
|
||||
],
|
||||
"latitude": "29.24961200",
|
||||
"longitude": "95.17182400",
|
||||
"country_code_label": "People's Republic of China",
|
||||
"religion_label": "Ethnoreligion"
|
||||
}
|
||||
]
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
"packets": "cd library/scripts/posters && VITE_API_BASE_URL=https://pray.doxa.life node packet.mjs # the prayer packets. READS out/posters/<zone>.html for page 1's map, which `bun run posters` writes — without it the packet still builds and page 1 is simply BLANK, so the script now warns per-zone AND in its summary. PACKET_LANG=<loc> for one language, ONLY=<zoneKey> for one zone, NOPHOTOS=1 to skip the photo fetch.",
|
||||
"packet-fixture": "node internal/generate-packet-fixture.mjs # regenerate the committed records subset (smallest zone, image_url stripped) that lets CI build a packet at all — out/ is gitignored, so a clean checkout has neither the records cache nor any packet.",
|
||||
"check:packet-fixture": "node internal/generate-packet-fixture.mjs --check # the committed fixture must still match clusters.json and must never carry image_url (CI would fetch 43 photos from someone else's CDN).",
|
||||
"packet:ci": "sh -c 'F=\"$PWD/library/scripts/posters/fixtures/records-tibet.json\"; PACKET_RECORDS=\"$F\" ONLY=asia-china-tibet-autonomous-region node library/scripts/posters/packet.mjs' # build ONE packet from the committed fixture, no network. This is what makes check:packets-all evaluate something in CI instead of SKIPping, as it had on every build.",
|
||||
"packet:ci": "node internal/build-packet-fixtures.mjs # build EVERY committed fixture, no network, each renamed to its own output so they coexist. Was one fixture (tibet); packet.mjs names its output for the ZONE not the fixture, so sequential builds overwrote each other and check:packets-all saw a single SHAPE while reporting success. The fixtures are chosen at the PER_PAGE=20 page boundary — exactly 20, 21, and 1 group — because laos (95) and tibet (43) are both mid-range remainder cases and the boundary itself had never rendered.",
|
||||
"token": "node internal/write-token.mjs",
|
||||
"smoke": "node internal/smoke.mjs",
|
||||
"smoke:embeds": "node internal/embed-smoke.mjs",
|
||||
|
|
@ -179,7 +179,8 @@
|
|||
"check:poster-degrades": "node internal/check-poster-degrades-honestly.mjs # with NEITHER poster nor source — the DEFAULT drop — nothing must print and the reader must be told why. check:poster-print-fallback SKIPs that case, so the behaviour a reader most often meets had no gate. MUST be served from the TREE ROOT, not public/, or assetsBase resolves outside the tree and the poster loads when it should 404.",
|
||||
"check:upg-map-data": "node internal/check-upg-map-data-painted.mjs # the UPG-100 map must carry OUR polygons/zones/pins, not just a basemap — reads the counter the profile itself writes. Pass live URLs to audit what is published.",
|
||||
"check:published": "node internal/check-published-matches-build.mjs # what readers are SERVED must be what we BUILT. Every other gate measures the local tree, so all of them stay green while a stale publish serves something else — and manufactures bug reports that cannot be reproduced. Compares the sha384 per bundle. SKIPs when the published host is unreachable (a network gate that goes red on flaky wifi gets ignored).",
|
||||
"check:shared-reached": "node internal/check-shared-component-reached-bundles.mjs # a shared library fix is only as deployed as the last rebuild of EVERY bundle that consumes it. Each bundle ships its own COMPILED copy, so a one-line fix in library/ is live in whichever bundles happened to be rebuilt after it and silently absent from the rest — and every other gate measures ONE leaf, which renders the old behaviour perfectly. Asserts a distinctive marker string per tracked change; consumers are DERIVED from imports, never hardcoded."
|
||||
"check:shared-reached": "node internal/check-shared-component-reached-bundles.mjs # a shared library fix is only as deployed as the last rebuild of EVERY bundle that consumes it. Each bundle ships its own COMPILED copy, so a one-line fix in library/ is live in whichever bundles happened to be rebuilt after it and silently absent from the rest — and every other gate measures ONE leaf, which renders the old behaviour perfectly. Asserts a distinctive marker string per tracked change; consumers are DERIVED from imports, never hardcoded.",
|
||||
"check:tree-weight": "node internal/check-published-tree-weight.mjs # the tree we publish has a weight and nothing was watching it. A publish was ALREADY BLOCKED once at a 74MB asset tree (Forgejo rejected the pack); it has since grown to 132MB unnoticed. Reports the SPLIT, because a bare total invites deleting the wrong half: the 176 city posters are the heavy half AND the half that cannot be regenerated (they need OSM tiles). Raw bytes, not packed — see publish-html.mjs for why a raw saving is not a shipped one."
|
||||
},
|
||||
"devDependencies": {
|
||||
"@capacitor/android": "^7.6.9",
|
||||
|
|
|
|||
|
|
@ -345,6 +345,44 @@ const gapBy = ref('groups')
|
|||
// nothing-found list: largest population first, because that is what a team choosing a
|
||||
// field is actually weighing. What each group DOES have is carried onto the row, so the
|
||||
// reader can see whether they are being sent to a recording or a film before they go.
|
||||
// WHAT THE GAP NUMBER IS MADE OF. "1,913 groups have nothing" is four different
|
||||
// situations wearing one number, and they call for four different responses:
|
||||
// - a private-use code (qaa-qtz) or no code at all: NO pool can index them, so this is a
|
||||
// cataloguing problem and no amount of searching will move it;
|
||||
// - a sign language: the pools that would hold signed Scripture are key-gated, so this is
|
||||
// an access problem — 136 groups and fifty million people sit here;
|
||||
// - a code GRN has not reached yet: the sweep is still running at their crawl delay, and
|
||||
// these will resolve themselves one batch at a time;
|
||||
// - everything else: every pool this build can reach was checked and found nothing. That
|
||||
// last line is the real translation gap, and it is the only one of the four that a
|
||||
// translator rather than an administrator can close.
|
||||
// Computed from the pins and the per-code `checked` line, never from a typed number.
|
||||
const gapMakeup = computed(() => {
|
||||
const m = { noCode: 0, priv: 0, signPriv: 0, sign: 0, pending: 0, searched: 0,
|
||||
noCodeP: 0, privP: 0, signPrivP: 0, signP: 0, pendingP: 0, searchedP: 0 }
|
||||
for (const r of pinRows.value) {
|
||||
if (r[6] !== 0) continue
|
||||
const code = r[4]
|
||||
const c = pinCodes.value[code] || {}
|
||||
const pop = r[5] || 0
|
||||
if (!code) { m.noCode++; m.noCodeP += pop; continue }
|
||||
// SIGN LANGUAGE IS TESTED FIRST, and the order is the whole point. Every private-use
|
||||
// code in this gap is also a sign language, so testing private-use first split one
|
||||
// population across two lines and understated the Deaf share by 47 groups. Being Deaf
|
||||
// is the more actionable fact about these rows than the shape of their code, and the
|
||||
// exported gaps table classifies them the same way — the two must not disagree.
|
||||
if (c.sg === 1) {
|
||||
m.sign++; m.signP += pop
|
||||
if (/^q[a-t][a-z]$/.test(code)) { m.signPriv++; m.signPrivP += pop }
|
||||
continue
|
||||
}
|
||||
if (/^q[a-t][a-z]$/.test(code)) { m.priv++; m.privP += pop; continue }
|
||||
if (!/\bgrn\b/.test(c.ck || '')) { m.pending++; m.pendingP += pop; continue }
|
||||
m.searched++; m.searchedP += pop
|
||||
}
|
||||
return m
|
||||
})
|
||||
|
||||
const gapHnr = computed(() => {
|
||||
if (!showGapList.value) return []
|
||||
const out = []
|
||||
|
|
@ -1217,7 +1255,7 @@ useShadowStyles(
|
|||
</template>
|
||||
<template v-else>
|
||||
{{ fmt(pinTally.none) }} people groups have no Scripture, audio, film, Bible video or
|
||||
Door43 resource in the pools checked — {{ fmt(gapPeople) }} people.</template>
|
||||
Door43 resource in the pools checked — {{ fmt(gapPeople) }} people. </template>
|
||||
<template v-if="gapBy === 'noprayer'">
|
||||
The groups with nothing found in any pool checked AND nobody praying —
|
||||
{{ fmt(gapNoPrayer.length) }} shown, largest first. Tapping one opens their prayer
|
||||
|
|
@ -1239,6 +1277,23 @@ useShadowStyles(
|
|||
sending translators or broadcasters.
|
||||
</template>
|
||||
<template v-else-if="gapBy !== 'hnr'">These are the 40 largest; tap one to fly there.</template>
|
||||
<template v-if="gapBy === 'groups'">
|
||||
<br><b>What that number is made of.</b> Four different situations share it, and
|
||||
only the last is a translation problem:
|
||||
<br>· <b>{{ fmt(gapMakeup.searched) }}</b> groups ({{ fmt(gapMakeup.searchedP) }} people)
|
||||
— every pool this build can reach was checked and found nothing. This is the real gap.
|
||||
<br>· <b>{{ fmt(gapMakeup.pending) }}</b> ({{ fmt(gapMakeup.pendingP) }}) — Global
|
||||
Recordings Network has not been swept for them yet; the crawl runs a batch at a time.
|
||||
<br>· <b>{{ fmt(gapMakeup.sign) }}</b> ({{ fmt(gapMakeup.signP) }}) — sign languages,
|
||||
whose pools are key-gated. The largest blocked population here, and an access
|
||||
problem rather than a translation one. <template v-if="gapMakeup.signPriv">{{ fmt(gapMakeup.signPriv) }}
|
||||
of them also carry a code no pool can index, so they are doubly stuck. </template>
|
||||
<template v-if="gapMakeup.priv + gapMakeup.noCode">
|
||||
<br>· <b>{{ fmt(gapMakeup.priv + gapMakeup.noCode) }}</b>
|
||||
({{ fmt(gapMakeup.privP + gapMakeup.noCodeP) }}) — a private-use code or none at
|
||||
all, which no pool can index. Searching harder cannot move these.
|
||||
</template>
|
||||
</template>
|
||||
<!-- This paragraph has twice had to stop claiming a pool was unsearched: first when
|
||||
Faith Comes By Hearing was added, then when GRN was reached through 5fish. A
|
||||
stale caveat is as misleading as a stale number. -->
|
||||
|
|
|
|||
|
|
@ -70,6 +70,17 @@ for (const [name, lat, lng, iso3, code, pop, tier] of pins) {
|
|||
iso639_3: code || '',
|
||||
population: pop || 0,
|
||||
sign_language: c.sg === 1 ? 'yes' : '',
|
||||
// WHICH KIND OF GAP THIS IS. "1,845 groups have nothing" is four situations wearing one
|
||||
// number and they need four different responses — the map says so on screen, and an
|
||||
// exported copy of this table could not say it at all until now. Order matters: a code
|
||||
// can be both a sign language and private-use (every private-use code here IS one), so
|
||||
// the more actionable label wins and the meta says they overlap.
|
||||
gap_kind:
|
||||
!code ? 'no language code — no pool can index it'
|
||||
: c.sg === 1 ? 'sign language — pools are key-gated, an access problem'
|
||||
: /^q[a-t][a-z]$/.test(code) ? 'private-use code — no pool can index it'
|
||||
: !/\bgrn\b/.test(c.ck || '') ? 'GRN not yet swept — the crawl is still running'
|
||||
: 'every reachable pool checked — the real translation gap',
|
||||
// A group with NO ISO 639-3 code cannot be looked up in any pool at all — nothing was
|
||||
// searched because there was nothing to search WITH. Two blank cells would read as an
|
||||
// oversight; this says why. One row is in this state: Arab, Gazan, 2.33M people.
|
||||
|
|
@ -91,6 +102,7 @@ const doc = {
|
|||
not_proof_of_absence: 'ABSENT FROM THE POOLS CHECKED, never proof that nothing exists. Each row carries its own checked_pools and unchecked_pools so an exported copy cannot be read as a claim about the world.',
|
||||
audio_never_checked: 'AUDIO HAS NEVER BEEN SEARCHED FOR ANY GROUP ON THIS MAP. GRN is the main audio-gospel pool and needs credentials this build does not have, so for an oral culture the most relevant resource is the one pool nobody has looked in.',
|
||||
sign_languages: 'A sign language cannot be served by a text translation at all, so a text pool was never the right place to look for the rows flagged sign_language.',
|
||||
gap_kind_note: 'Four situations share this table and only the last is a translation problem. Sign language and private-use OVERLAP COMPLETELY here — every private-use code in this gap is a sign language — so filtering to gap_kind="sign language" alone understates the Deaf share; add the private-use rows to get the true figure. The "GRN not yet swept" rows will resolve themselves as the crawl proceeds and are not evidence of absence.',
|
||||
doctrine_boundary: 'Only sources publishing the 66-book canon are searched. Watchtower/JW, Seventh-day Adventist, LDS and other added-canon publishers are excluded by rule, which is why some languages they do publish in appear here.',
|
||||
no_believer_data: 'This table describes PUBLISHED RESOURCES only. It carries no church, believer or meeting-point data and must never gain any.',
|
||||
},
|
||||
|
|
@ -101,6 +113,7 @@ const doc = {
|
|||
{ title: 'ISO 639-3', field: 'iso639_3', type: 'string' },
|
||||
{ title: 'Population', field: 'population', type: 'number' },
|
||||
{ title: 'Sign language', field: 'sign_language', type: 'string' },
|
||||
{ title: 'Kind of gap', field: 'gap_kind', type: 'string' },
|
||||
{ title: 'Pools checked', field: 'checked_pools', type: 'string' },
|
||||
{ title: 'Pools NOT checked', field: 'unchecked_pools', type: 'string' },
|
||||
],
|
||||
|
|
|
|||
|
|
@ -365,6 +365,19 @@ const NOT_SCANNED = 'api_bible, dbl, progress_bible'
|
|||
const SIGN_SCANNED = 'arclight (14 sign languages, all captured), fcbh (none)'
|
||||
const SIGN_NOT_SCANNED = 'deaf_bible_society, door_international — both key-gated'
|
||||
|
||||
// SIGN-LANGUAGE SOURCES CHECKED AND REJECTED, so the next agent does not re-probe them.
|
||||
// This is the largest blocked population on the map — 183 groups and 55.2 million people —
|
||||
// so it is worth saying exactly what was tried:
|
||||
// - deafbible.com 3,894 bytes, the same app shell for every URL. No catalogue to read.
|
||||
// - door.international 114 bytes. Nothing there at all.
|
||||
// - Deaf Missions a real ministry with a real site, but ASL ONLY — and ZERO of the
|
||||
// 183 sign-language groups in this gap speak ASL, so it adds nothing
|
||||
// here even though it is doctrinally fine and genuinely useful.
|
||||
// - JW / Watchtower produce a great deal of sign-language material and are EXCLUDED on
|
||||
// doctrine, without exception. Not a coverage decision.
|
||||
// So the 136 indexable sign codes plus the 47 private-use ones stay blocked on an agreement
|
||||
// rather than on a search, which is why the gap sheet calls them an access problem.
|
||||
|
||||
// Attach Zume where the language matches. A code with no other resource still gets an
|
||||
// entry, because "training exists in your language" is a real answer to "what is there".
|
||||
let zumeCodes = 0, zumeNew = 0
|
||||
|
|
|
|||
2
public/assets/tables/gospel-gaps.json
vendored
2
public/assets/tables/gospel-gaps.json
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/assets/tables/people-group-pins.json
vendored
2
public/assets/tables/people-group-pins.json
vendored
File diff suppressed because one or more lines are too long
478
public/doxa-maps/assets/tables/country-gap.json
generated
478
public/doxa-maps/assets/tables/country-gap.json
generated
|
|
@ -69,9 +69,9 @@
|
|||
"meta": {
|
||||
"title": "The gap by country",
|
||||
"grain": "one row per country that has at least one people group on this map",
|
||||
"generated": "2026-09-24",
|
||||
"measured": "242 countries · 2,001 groups with nothing found · 208,582,160 people",
|
||||
"by_region": "Oceania 43.5% (577 of 1325) · Africa 15.7% (483 of 3074) · Asia 13.7% (697 of 5073) · Europe 8.9% (70 of 790) · Americas 8.2% (174 of 2117)",
|
||||
"generated": "2026-09-25",
|
||||
"measured": "242 countries · 1,845 groups with nothing found · 208,105,325 people",
|
||||
"by_region": "Oceania 38.1% (505 of 1325) · Africa 14.8% (456 of 3074) · Asia 12.8% (649 of 5073) · Europe 8.9% (70 of 790) · Americas 7.8% (165 of 2117)",
|
||||
"three_questions": "Groups with nothing, people with nothing, and the share of the country each represents. They rank differently on purpose — Papua New Guinea has the most groups and few people, China the reverse, and Oceania has the worst share of any region while being the smallest by population.",
|
||||
"source": "data/tables/gospel-by-country.json, which is itself refreshed from data/tables/people-group-pins.json — the same index the map draws, so this table and the map cannot disagree.",
|
||||
"curated_columns": "growing_unreached and deaths_day come from the curated country analysis and are null where it does not cover the country. Null, never zero: zero is a claim this build cannot make."
|
||||
|
|
@ -82,9 +82,9 @@
|
|||
"iso3": "PNG",
|
||||
"region": "Oceania",
|
||||
"people_groups": 831,
|
||||
"groups_with_nothing": 404,
|
||||
"pct_with_nothing": 48.6,
|
||||
"people_with_nothing": 1095850,
|
||||
"groups_with_nothing": 350,
|
||||
"pct_with_nothing": 42.1,
|
||||
"people_with_nothing": 946300,
|
||||
"groups_with_scripture": 332,
|
||||
"groups_with_film": 143,
|
||||
"band": "high",
|
||||
|
|
@ -97,9 +97,9 @@
|
|||
"iso3": "IDN",
|
||||
"region": "Asia",
|
||||
"people_groups": 669,
|
||||
"groups_with_nothing": 276,
|
||||
"pct_with_nothing": 41.3,
|
||||
"people_with_nothing": 4268480,
|
||||
"groups_with_nothing": 256,
|
||||
"pct_with_nothing": 38.3,
|
||||
"people_with_nothing": 4210680,
|
||||
"groups_with_scripture": 222,
|
||||
"groups_with_film": 265,
|
||||
"band": "high",
|
||||
|
|
@ -112,9 +112,9 @@
|
|||
"iso3": "CHN",
|
||||
"region": "Asia",
|
||||
"people_groups": 391,
|
||||
"groups_with_nothing": 89,
|
||||
"pct_with_nothing": 22.8,
|
||||
"people_with_nothing": 127361200,
|
||||
"groups_with_nothing": 85,
|
||||
"pct_with_nothing": 21.7,
|
||||
"people_with_nothing": 127351400,
|
||||
"groups_with_scripture": 118,
|
||||
"groups_with_film": 227,
|
||||
"band": "partial",
|
||||
|
|
@ -122,14 +122,29 @@
|
|||
"deaths_day": 274.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Vanuatu",
|
||||
"iso3": "VUT",
|
||||
"region": "Oceania",
|
||||
"people_groups": 114,
|
||||
"groups_with_nothing": 68,
|
||||
"pct_with_nothing": 59.6,
|
||||
"people_with_nothing": 72200,
|
||||
"groups_with_scripture": 28,
|
||||
"groups_with_film": 26,
|
||||
"band": "high",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Nigeria",
|
||||
"iso3": "NGA",
|
||||
"region": "Africa",
|
||||
"people_groups": 433,
|
||||
"groups_with_nothing": 76,
|
||||
"pct_with_nothing": 17.6,
|
||||
"people_with_nothing": 3069025,
|
||||
"groups_with_nothing": 62,
|
||||
"pct_with_nothing": 14.3,
|
||||
"people_with_nothing": 3015225,
|
||||
"groups_with_scripture": 105,
|
||||
"groups_with_film": 188,
|
||||
"band": "partial",
|
||||
|
|
@ -137,29 +152,14 @@
|
|||
"deaths_day": 44,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Vanuatu",
|
||||
"iso3": "VUT",
|
||||
"region": "Oceania",
|
||||
"people_groups": 114,
|
||||
"groups_with_nothing": 74,
|
||||
"pct_with_nothing": 64.9,
|
||||
"people_with_nothing": 87135,
|
||||
"groups_with_scripture": 28,
|
||||
"groups_with_film": 26,
|
||||
"band": "critical",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Cameroon",
|
||||
"iso3": "CMR",
|
||||
"region": "Africa",
|
||||
"people_groups": 260,
|
||||
"groups_with_nothing": 65,
|
||||
"pct_with_nothing": 25,
|
||||
"people_with_nothing": 1358325,
|
||||
"groups_with_nothing": 59,
|
||||
"pct_with_nothing": 22.7,
|
||||
"people_with_nothing": 1337925,
|
||||
"groups_with_scripture": 72,
|
||||
"groups_with_film": 84,
|
||||
"band": "partial",
|
||||
|
|
@ -172,9 +172,9 @@
|
|||
"iso3": "MYS",
|
||||
"region": "Asia",
|
||||
"people_groups": 160,
|
||||
"groups_with_nothing": 59,
|
||||
"pct_with_nothing": 36.9,
|
||||
"people_with_nothing": 1784950,
|
||||
"groups_with_nothing": 58,
|
||||
"pct_with_nothing": 36.3,
|
||||
"people_with_nothing": 1781950,
|
||||
"groups_with_scripture": 75,
|
||||
"groups_with_film": 68,
|
||||
"band": "high",
|
||||
|
|
@ -202,9 +202,9 @@
|
|||
"iso3": "BRA",
|
||||
"region": "Americas",
|
||||
"people_groups": 270,
|
||||
"groups_with_nothing": 55,
|
||||
"pct_with_nothing": 20.4,
|
||||
"people_with_nothing": 30680,
|
||||
"groups_with_nothing": 52,
|
||||
"pct_with_nothing": 19.3,
|
||||
"people_with_nothing": 24030,
|
||||
"groups_with_scripture": 186,
|
||||
"groups_with_film": 163,
|
||||
"band": "partial",
|
||||
|
|
@ -217,12 +217,12 @@
|
|||
"iso3": "LAO",
|
||||
"region": "Asia",
|
||||
"people_groups": 158,
|
||||
"groups_with_nothing": 50,
|
||||
"pct_with_nothing": 31.6,
|
||||
"people_with_nothing": 705585,
|
||||
"groups_with_nothing": 46,
|
||||
"pct_with_nothing": 29.1,
|
||||
"people_with_nothing": 693785,
|
||||
"groups_with_scripture": 55,
|
||||
"groups_with_film": 58,
|
||||
"band": "high",
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 15.5,
|
||||
"basis": "pins, with curated country analysis"
|
||||
|
|
@ -247,9 +247,9 @@
|
|||
"iso3": "TCD",
|
||||
"region": "Africa",
|
||||
"people_groups": 150,
|
||||
"groups_with_nothing": 43,
|
||||
"pct_with_nothing": 28.7,
|
||||
"people_with_nothing": 1282450,
|
||||
"groups_with_nothing": 42,
|
||||
"pct_with_nothing": 28,
|
||||
"people_with_nothing": 1279150,
|
||||
"groups_with_scripture": 46,
|
||||
"groups_with_film": 49,
|
||||
"band": "partial",
|
||||
|
|
@ -257,36 +257,6 @@
|
|||
"deaths_day": 68.4,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "India",
|
||||
"iso3": "IND",
|
||||
"region": "Asia",
|
||||
"people_groups": 2146,
|
||||
"groups_with_nothing": 28,
|
||||
"pct_with_nothing": 1.3,
|
||||
"people_with_nothing": 373335,
|
||||
"groups_with_scripture": 1757,
|
||||
"groups_with_film": 2044,
|
||||
"band": "partial",
|
||||
"growing_unreached": 38,
|
||||
"deaths_day": 721.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Solomon Islands",
|
||||
"iso3": "SLB",
|
||||
"region": "Oceania",
|
||||
"people_groups": 79,
|
||||
"groups_with_nothing": 27,
|
||||
"pct_with_nothing": 34.2,
|
||||
"people_with_nothing": 91895,
|
||||
"groups_with_scripture": 34,
|
||||
"groups_with_film": 33,
|
||||
"band": "high",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Central African Republic",
|
||||
"iso3": "CAF",
|
||||
|
|
@ -302,29 +272,14 @@
|
|||
"deaths_day": 0.6,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "United States of America",
|
||||
"iso3": "USA",
|
||||
"region": "Americas",
|
||||
"people_groups": 623,
|
||||
"groups_with_nothing": 25,
|
||||
"pct_with_nothing": 4,
|
||||
"people_with_nothing": 337525,
|
||||
"groups_with_scripture": 517,
|
||||
"groups_with_film": 549,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "New Caledonia",
|
||||
"iso3": "NCL",
|
||||
"region": "Oceania",
|
||||
"people_groups": 42,
|
||||
"groups_with_nothing": 24,
|
||||
"pct_with_nothing": 57.1,
|
||||
"people_with_nothing": 101725,
|
||||
"groups_with_nothing": 23,
|
||||
"pct_with_nothing": 54.8,
|
||||
"people_with_nothing": 96825,
|
||||
"groups_with_scripture": 12,
|
||||
"groups_with_film": 11,
|
||||
"band": "high",
|
||||
|
|
@ -332,14 +287,44 @@
|
|||
"deaths_day": 0.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "India",
|
||||
"iso3": "IND",
|
||||
"region": "Asia",
|
||||
"people_groups": 2146,
|
||||
"groups_with_nothing": 20,
|
||||
"pct_with_nothing": 0.9,
|
||||
"people_with_nothing": 345835,
|
||||
"groups_with_scripture": 1757,
|
||||
"groups_with_film": 2044,
|
||||
"band": "partial",
|
||||
"growing_unreached": 38,
|
||||
"deaths_day": 721.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "United States of America",
|
||||
"iso3": "USA",
|
||||
"region": "Americas",
|
||||
"people_groups": 623,
|
||||
"groups_with_nothing": 20,
|
||||
"pct_with_nothing": 3.2,
|
||||
"people_with_nothing": 323925,
|
||||
"groups_with_scripture": 517,
|
||||
"groups_with_film": 549,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Nepal",
|
||||
"iso3": "NPL",
|
||||
"region": "Asia",
|
||||
"people_groups": 171,
|
||||
"groups_with_nothing": 21,
|
||||
"pct_with_nothing": 12.3,
|
||||
"people_with_nothing": 493850,
|
||||
"groups_with_nothing": 19,
|
||||
"pct_with_nothing": 11.1,
|
||||
"people_with_nothing": 489050,
|
||||
"groups_with_scripture": 97,
|
||||
"groups_with_film": 111,
|
||||
"band": "partial",
|
||||
|
|
@ -347,21 +332,6 @@
|
|||
"deaths_day": 34,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Philippines",
|
||||
"iso3": "PHL",
|
||||
"region": "Asia",
|
||||
"people_groups": 156,
|
||||
"groups_with_nothing": 19,
|
||||
"pct_with_nothing": 12.2,
|
||||
"people_with_nothing": 3110775,
|
||||
"groups_with_scripture": 108,
|
||||
"groups_with_film": 90,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Vietnam",
|
||||
"iso3": "VNM",
|
||||
|
|
@ -377,6 +347,21 @@
|
|||
"deaths_day": 5.7,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Philippines",
|
||||
"iso3": "PHL",
|
||||
"region": "Asia",
|
||||
"people_groups": 156,
|
||||
"groups_with_nothing": 17,
|
||||
"pct_with_nothing": 10.9,
|
||||
"people_with_nothing": 3104075,
|
||||
"groups_with_scripture": 108,
|
||||
"groups_with_film": 90,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Russian Federation",
|
||||
"iso3": "RUS",
|
||||
|
|
@ -392,6 +377,21 @@
|
|||
"deaths_day": 93.6,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Solomon Islands",
|
||||
"iso3": "SLB",
|
||||
"region": "Oceania",
|
||||
"people_groups": 79,
|
||||
"groups_with_nothing": 17,
|
||||
"pct_with_nothing": 21.5,
|
||||
"people_with_nothing": 53695,
|
||||
"groups_with_scripture": 34,
|
||||
"groups_with_film": 33,
|
||||
"band": "partial",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "United Republic of Tanzania",
|
||||
"iso3": "TZA",
|
||||
|
|
@ -437,21 +437,6 @@
|
|||
"deaths_day": null,
|
||||
"basis": "pins only — no curated country analysis for this country"
|
||||
},
|
||||
{
|
||||
"country": "Bhutan",
|
||||
"iso3": "BTN",
|
||||
"region": "Asia",
|
||||
"people_groups": 36,
|
||||
"groups_with_nothing": 13,
|
||||
"pct_with_nothing": 36.1,
|
||||
"people_with_nothing": 76125,
|
||||
"groups_with_scripture": 11,
|
||||
"groups_with_film": 16,
|
||||
"band": "high",
|
||||
"growing_unreached": 13,
|
||||
"deaths_day": 2.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "South Sudan",
|
||||
"iso3": "SSD",
|
||||
|
|
@ -467,21 +452,6 @@
|
|||
"deaths_day": 59,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Ethiopia",
|
||||
"iso3": "ETH",
|
||||
"region": "Africa",
|
||||
"people_groups": 119,
|
||||
"groups_with_nothing": 11,
|
||||
"pct_with_nothing": 9.2,
|
||||
"people_with_nothing": 1568400,
|
||||
"groups_with_scripture": 59,
|
||||
"groups_with_film": 95,
|
||||
"band": "partial",
|
||||
"growing_unreached": 8,
|
||||
"deaths_day": 130,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Oman",
|
||||
"iso3": "OMN",
|
||||
|
|
@ -512,14 +482,44 @@
|
|||
"deaths_day": 5.4,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Bhutan",
|
||||
"iso3": "BTN",
|
||||
"region": "Asia",
|
||||
"people_groups": 36,
|
||||
"groups_with_nothing": 11,
|
||||
"pct_with_nothing": 30.6,
|
||||
"people_with_nothing": 70525,
|
||||
"groups_with_scripture": 11,
|
||||
"groups_with_film": 16,
|
||||
"band": "high",
|
||||
"growing_unreached": 13,
|
||||
"deaths_day": 2.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Ethiopia",
|
||||
"iso3": "ETH",
|
||||
"region": "Africa",
|
||||
"people_groups": 119,
|
||||
"groups_with_nothing": 10,
|
||||
"pct_with_nothing": 8.4,
|
||||
"people_with_nothing": 1564200,
|
||||
"groups_with_scripture": 59,
|
||||
"groups_with_film": 95,
|
||||
"band": "partial",
|
||||
"growing_unreached": 8,
|
||||
"deaths_day": 130,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Colombia",
|
||||
"iso3": "COL",
|
||||
"region": "Americas",
|
||||
"people_groups": 98,
|
||||
"groups_with_nothing": 11,
|
||||
"pct_with_nothing": 11.2,
|
||||
"people_with_nothing": 11225,
|
||||
"groups_with_nothing": 10,
|
||||
"pct_with_nothing": 10.2,
|
||||
"people_with_nothing": 8725,
|
||||
"groups_with_scripture": 80,
|
||||
"groups_with_film": 51,
|
||||
"band": "partial",
|
||||
|
|
@ -557,21 +557,6 @@
|
|||
"deaths_day": 25.8,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Cote d'Ivoire",
|
||||
"iso3": "CIV",
|
||||
"region": "Africa",
|
||||
"people_groups": 83,
|
||||
"groups_with_nothing": 8,
|
||||
"pct_with_nothing": 9.6,
|
||||
"people_with_nothing": 266300,
|
||||
"groups_with_scripture": 44,
|
||||
"groups_with_film": 53,
|
||||
"band": "partial",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 3.7,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Japan",
|
||||
"iso3": "JPN",
|
||||
|
|
@ -588,33 +573,18 @@
|
|||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "French Polynesia",
|
||||
"iso3": "PYF",
|
||||
"region": "Oceania",
|
||||
"people_groups": 14,
|
||||
"groups_with_nothing": 8,
|
||||
"pct_with_nothing": 57.1,
|
||||
"people_with_nothing": 41775,
|
||||
"groups_with_scripture": 3,
|
||||
"groups_with_film": 5,
|
||||
"band": "high",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Cambodia",
|
||||
"iso3": "KHM",
|
||||
"region": "Asia",
|
||||
"people_groups": 28,
|
||||
"country": "Cote d'Ivoire",
|
||||
"iso3": "CIV",
|
||||
"region": "Africa",
|
||||
"people_groups": 83,
|
||||
"groups_with_nothing": 7,
|
||||
"pct_with_nothing": 25,
|
||||
"people_with_nothing": 175300,
|
||||
"groups_with_scripture": 20,
|
||||
"groups_with_film": 17,
|
||||
"pct_with_nothing": 8.4,
|
||||
"people_with_nothing": 262200,
|
||||
"groups_with_scripture": 44,
|
||||
"groups_with_film": 53,
|
||||
"band": "partial",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 2.8,
|
||||
"deaths_day": 3.7,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
|
|
@ -647,6 +617,21 @@
|
|||
"deaths_day": null,
|
||||
"basis": "pins only — no curated country analysis for this country"
|
||||
},
|
||||
{
|
||||
"country": "French Polynesia",
|
||||
"iso3": "PYF",
|
||||
"region": "Oceania",
|
||||
"people_groups": 14,
|
||||
"groups_with_nothing": 7,
|
||||
"pct_with_nothing": 50,
|
||||
"people_with_nothing": 37775,
|
||||
"groups_with_scripture": 3,
|
||||
"groups_with_film": 5,
|
||||
"band": "high",
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Pakistan",
|
||||
"iso3": "PAK",
|
||||
|
|
@ -693,18 +678,18 @@
|
|||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Guinea",
|
||||
"iso3": "GIN",
|
||||
"region": "Africa",
|
||||
"people_groups": 41,
|
||||
"country": "Cambodia",
|
||||
"iso3": "KHM",
|
||||
"region": "Asia",
|
||||
"people_groups": 28,
|
||||
"groups_with_nothing": 6,
|
||||
"pct_with_nothing": 14.6,
|
||||
"people_with_nothing": 156400,
|
||||
"groups_with_scripture": 19,
|
||||
"groups_with_film": 24,
|
||||
"pct_with_nothing": 21.4,
|
||||
"people_with_nothing": 171400,
|
||||
"groups_with_scripture": 20,
|
||||
"groups_with_film": 17,
|
||||
"band": "partial",
|
||||
"growing_unreached": 7,
|
||||
"deaths_day": 14.5,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 2.8,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
|
|
@ -752,36 +737,6 @@
|
|||
"deaths_day": 285.5,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Afghanistan",
|
||||
"iso3": "AFG",
|
||||
"region": "Asia",
|
||||
"people_groups": 45,
|
||||
"groups_with_nothing": 5,
|
||||
"pct_with_nothing": 11.1,
|
||||
"people_with_nothing": 601500,
|
||||
"groups_with_scripture": 15,
|
||||
"groups_with_film": 25,
|
||||
"band": "partial",
|
||||
"growing_unreached": 17,
|
||||
"deaths_day": 17.6,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Ghana",
|
||||
"iso3": "GHA",
|
||||
"region": "Africa",
|
||||
"people_groups": 96,
|
||||
"groups_with_nothing": 5,
|
||||
"pct_with_nothing": 5.2,
|
||||
"people_with_nothing": 422600,
|
||||
"groups_with_scripture": 71,
|
||||
"groups_with_film": 70,
|
||||
"band": "partial",
|
||||
"growing_unreached": null,
|
||||
"deaths_day": null,
|
||||
"basis": "pins only — no curated country analysis for this country"
|
||||
},
|
||||
{
|
||||
"country": "Brunei Darussalam",
|
||||
"iso3": "BRN",
|
||||
|
|
@ -962,6 +917,21 @@
|
|||
"deaths_day": 1.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Guinea",
|
||||
"iso3": "GIN",
|
||||
"region": "Africa",
|
||||
"people_groups": 41,
|
||||
"groups_with_nothing": 4,
|
||||
"pct_with_nothing": 9.8,
|
||||
"people_with_nothing": 146600,
|
||||
"groups_with_scripture": 19,
|
||||
"groups_with_film": 24,
|
||||
"band": "partial",
|
||||
"growing_unreached": 7,
|
||||
"deaths_day": 14.5,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Equatorial Guinea",
|
||||
"iso3": "GNQ",
|
||||
|
|
@ -1052,6 +1022,21 @@
|
|||
"deaths_day": 0.3,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Ghana",
|
||||
"iso3": "GHA",
|
||||
"region": "Africa",
|
||||
"people_groups": 96,
|
||||
"groups_with_nothing": 3,
|
||||
"pct_with_nothing": 3.1,
|
||||
"people_with_nothing": 416000,
|
||||
"groups_with_scripture": 71,
|
||||
"groups_with_film": 70,
|
||||
"band": "partial",
|
||||
"growing_unreached": null,
|
||||
"deaths_day": null,
|
||||
"basis": "pins only — no curated country analysis for this country"
|
||||
},
|
||||
{
|
||||
"country": "Zambia",
|
||||
"iso3": "ZMB",
|
||||
|
|
@ -1187,21 +1172,6 @@
|
|||
"deaths_day": 0,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Tajikistan",
|
||||
"iso3": "TJK",
|
||||
"region": "Asia",
|
||||
"people_groups": 29,
|
||||
"groups_with_nothing": 3,
|
||||
"pct_with_nothing": 10.3,
|
||||
"people_with_nothing": 6600,
|
||||
"groups_with_scripture": 21,
|
||||
"groups_with_film": 23,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 1.3,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "French Guiana",
|
||||
"iso3": "GUF",
|
||||
|
|
@ -1307,6 +1277,21 @@
|
|||
"deaths_day": 16.1,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Afghanistan",
|
||||
"iso3": "AFG",
|
||||
"region": "Asia",
|
||||
"people_groups": 45,
|
||||
"groups_with_nothing": 2,
|
||||
"pct_with_nothing": 4.4,
|
||||
"people_with_nothing": 594000,
|
||||
"groups_with_scripture": 15,
|
||||
"groups_with_film": 25,
|
||||
"band": "partial",
|
||||
"growing_unreached": 17,
|
||||
"deaths_day": 17.6,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Uganda",
|
||||
"iso3": "UGA",
|
||||
|
|
@ -1667,6 +1652,21 @@
|
|||
"deaths_day": 0.2,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Tajikistan",
|
||||
"iso3": "TJK",
|
||||
"region": "Asia",
|
||||
"people_groups": 29,
|
||||
"groups_with_nothing": 2,
|
||||
"pct_with_nothing": 6.9,
|
||||
"people_with_nothing": 4700,
|
||||
"groups_with_scripture": 21,
|
||||
"groups_with_film": 23,
|
||||
"band": "partial",
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 1.3,
|
||||
"basis": "pins, with curated country analysis"
|
||||
},
|
||||
{
|
||||
"country": "Comoros",
|
||||
"iso3": "COM",
|
||||
|
|
|
|||
2
public/doxa-maps/assets/tables/deaf-gap.json
generated
2
public/doxa-maps/assets/tables/deaf-gap.json
generated
|
|
@ -59,7 +59,7 @@
|
|||
"meta": {
|
||||
"title": "The Deaf Gap",
|
||||
"grain": "one row per Deaf people group",
|
||||
"generated": "2026-09-24",
|
||||
"generated": "2026-09-25",
|
||||
"measured": "150 sign languages · 234 people groups · 84,159,050 people. 136 languages / 183 groups / 55,199,840 people with NOTHING found.",
|
||||
"bridge_rule": "A sign language is bridged ONLY by another sign language. Text and audio in a spoken language do not reach a Deaf community.",
|
||||
"compounding_problem": "40 of these languages carry PRIVATE-USE (qaa-qtz) codes outside ISO 639-3. No resource pool indexes a private-use code, so those groups cannot be matched to a resource even if one exists.",
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
"bridge_strength_note": "MEASURED: 24% of aligned rows rest on a bridge shared by only 2-3 groups. bridge_strength grades this (strong >=8 groups, moderate >=4, weak <4). A WEAK bridge is a hypothesis, not a route — e.g. \"Gawri\" was offered as the bridge for 10.3M Pakistanis where the real lingua franca is Urdu, which no unengaged group here claims as primary and which this method therefore cannot see. Filter on bridge_strength before acting.",
|
||||
"bridge_caveat": "A bridge candidate is measured from THIS corpus (a language primary to >1 DX group in the country). It is NOT proof the group speaks it, and it is NOT a national trade language — a lingua franca no unengaged group claims as primary is invisible here.",
|
||||
"pools_caveat": "Resource status is from eBible + JESUS Film. GRN and FCBH audio are key-blocked and unchecked — absence is never proof.",
|
||||
"resource_flags_refreshed": "2026-09-24",
|
||||
"resource_flags_refreshed": "2026-09-25",
|
||||
"resource_flags_source": "data/tables/people-group-pins.json — the same index the map draws. Curated bridge, internet and channel columns are untouched."
|
||||
},
|
||||
"columns": [
|
||||
|
|
@ -3275,7 +3275,7 @@
|
|||
"population": 3000,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "",
|
||||
"bridge_iso639_3": "",
|
||||
|
|
@ -3283,13 +3283,13 @@
|
|||
"bridge_strength": "",
|
||||
"bridge_has_scripture": false,
|
||||
"bridge_has_film": false,
|
||||
"gap": true,
|
||||
"gap": false,
|
||||
"internet_access": "yes",
|
||||
"internet_pct": 91.3,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": false,
|
||||
"status": "gap — nothing found in heart or bridge language",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -3483,7 +3483,7 @@
|
|||
"population": 2400,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "",
|
||||
"bridge_iso639_3": "",
|
||||
|
|
@ -3491,13 +3491,13 @@
|
|||
"bridge_strength": "",
|
||||
"bridge_has_scripture": false,
|
||||
"bridge_has_film": false,
|
||||
"gap": true,
|
||||
"gap": false,
|
||||
"internet_access": "yes",
|
||||
"internet_pct": 91.3,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": false,
|
||||
"status": "gap — nothing found in heart or bridge language",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -35801,8 +35801,8 @@
|
|||
"population": 4900,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Pulaar",
|
||||
"bridge_iso639_3": "fuc",
|
||||
"bridge_groups_in_country": 2,
|
||||
|
|
@ -35814,8 +35814,8 @@
|
|||
"internet_pct": 33.3,
|
||||
"top_channel": "Facebook",
|
||||
"channel_source": "referral share",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -36295,8 +36295,8 @@
|
|||
"population": 4700,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Hausa",
|
||||
"bridge_iso639_3": "hau",
|
||||
"bridge_groups_in_country": 4,
|
||||
|
|
@ -36308,8 +36308,8 @@
|
|||
"internet_pct": 41.2,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -36321,8 +36321,8 @@
|
|||
"population": 4700,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Hausa",
|
||||
"bridge_iso639_3": "hau",
|
||||
"bridge_groups_in_country": 4,
|
||||
|
|
@ -36334,8 +36334,8 @@
|
|||
"internet_pct": 41.2,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -36529,8 +36529,8 @@
|
|||
"population": 4600,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Hausa",
|
||||
"bridge_iso639_3": "hau",
|
||||
"bridge_groups_in_country": 4,
|
||||
|
|
@ -36542,8 +36542,8 @@
|
|||
"internet_pct": 41.2,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -36685,8 +36685,8 @@
|
|||
"population": 4500,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Telugu",
|
||||
"bridge_iso639_3": "tel",
|
||||
"bridge_groups_in_country": 122,
|
||||
|
|
@ -36698,8 +36698,8 @@
|
|||
"internet_pct": 64.9,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -37465,8 +37465,8 @@
|
|||
"population": 4000,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Telugu",
|
||||
"bridge_iso639_3": "tel",
|
||||
"bridge_groups_in_country": 122,
|
||||
|
|
@ -37478,8 +37478,8 @@
|
|||
"internet_pct": 64.9,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -37647,8 +37647,8 @@
|
|||
"population": 4000,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Telugu",
|
||||
"bridge_iso639_3": "tel",
|
||||
"bridge_groups_in_country": 122,
|
||||
|
|
@ -37660,8 +37660,8 @@
|
|||
"internet_pct": 64.9,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -38531,8 +38531,8 @@
|
|||
"population": 3600,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Akha",
|
||||
"bridge_iso639_3": "ahk",
|
||||
"bridge_groups_in_country": 12,
|
||||
|
|
@ -38544,8 +38544,8 @@
|
|||
"internet_pct": 65.6,
|
||||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -38999,8 +38999,8 @@
|
|||
"population": 3300,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Arabic, Chadian",
|
||||
"bridge_iso639_3": "shu",
|
||||
"bridge_groups_in_country": 5,
|
||||
|
|
@ -39013,7 +39013,7 @@
|
|||
"top_channel": "Facebook",
|
||||
"channel_source": "referral share",
|
||||
"aligned": false,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -39467,8 +39467,8 @@
|
|||
"population": 3000,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Dari",
|
||||
"bridge_iso639_3": "prs",
|
||||
"bridge_groups_in_country": 2,
|
||||
|
|
@ -39481,7 +39481,7 @@
|
|||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": false,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -39909,8 +39909,8 @@
|
|||
"population": 2700,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Akha",
|
||||
"bridge_iso639_3": "ahk",
|
||||
"bridge_groups_in_country": 12,
|
||||
|
|
@ -39922,8 +39922,8 @@
|
|||
"internet_pct": 65.6,
|
||||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -40325,8 +40325,8 @@
|
|||
"population": 2600,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Telugu",
|
||||
"bridge_iso639_3": "tel",
|
||||
"bridge_groups_in_country": 122,
|
||||
|
|
@ -40338,8 +40338,8 @@
|
|||
"internet_pct": 64.9,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -40377,8 +40377,8 @@
|
|||
"population": 2500,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Chinese, Mandarin",
|
||||
"bridge_iso639_3": "cmn",
|
||||
"bridge_groups_in_country": 25,
|
||||
|
|
@ -40390,8 +40390,8 @@
|
|||
"internet_pct": 92,
|
||||
"top_channel": "Twitter",
|
||||
"channel_source": "referral share",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -40819,8 +40819,8 @@
|
|||
"population": 2400,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Nepali",
|
||||
"bridge_iso639_3": "npi",
|
||||
"bridge_groups_in_country": 23,
|
||||
|
|
@ -40833,7 +40833,7 @@
|
|||
"top_channel": "Facebook",
|
||||
"channel_source": "referral share",
|
||||
"aligned": false,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -41209,8 +41209,8 @@
|
|||
"population": 2300,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Chinese, Mandarin",
|
||||
"bridge_iso639_3": "cmn",
|
||||
"bridge_groups_in_country": 25,
|
||||
|
|
@ -41222,8 +41222,8 @@
|
|||
"internet_pct": 92,
|
||||
"top_channel": "Twitter",
|
||||
"channel_source": "referral share",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -41313,8 +41313,8 @@
|
|||
"population": 2300,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Akha",
|
||||
"bridge_iso639_3": "ahk",
|
||||
"bridge_groups_in_country": 12,
|
||||
|
|
@ -41326,8 +41326,8 @@
|
|||
"internet_pct": 65.6,
|
||||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -41339,8 +41339,8 @@
|
|||
"population": 2300,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Dari",
|
||||
"bridge_iso639_3": "prs",
|
||||
"bridge_groups_in_country": 2,
|
||||
|
|
@ -41353,7 +41353,7 @@
|
|||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": false,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -41521,8 +41521,8 @@
|
|||
"population": 2200,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Dari",
|
||||
"bridge_iso639_3": "prs",
|
||||
"bridge_groups_in_country": 2,
|
||||
|
|
@ -41535,7 +41535,7 @@
|
|||
"top_channel": "WhatsApp Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": false,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -44303,8 +44303,8 @@
|
|||
"population": 1300,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Chinese, Mandarin",
|
||||
"bridge_iso639_3": "cmn",
|
||||
"bridge_groups_in_country": 25,
|
||||
|
|
@ -44316,8 +44316,8 @@
|
|||
"internet_pct": 92,
|
||||
"top_channel": "Twitter",
|
||||
"channel_source": "referral share",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
@ -50361,8 +50361,8 @@
|
|||
"population": 450,
|
||||
"heart_has_scripture": false,
|
||||
"heart_has_film": false,
|
||||
"heart_has_any": false,
|
||||
"opportunity": true,
|
||||
"heart_has_any": true,
|
||||
"opportunity": false,
|
||||
"bridge_language": "Portuguese",
|
||||
"bridge_iso639_3": "por",
|
||||
"bridge_groups_in_country": 41,
|
||||
|
|
@ -50374,8 +50374,8 @@
|
|||
"internet_pct": 84.5,
|
||||
"top_channel": "Telegram Messenger",
|
||||
"channel_source": "app-store ranking",
|
||||
"aligned": true,
|
||||
"status": "opportunity — bridge language has a resource",
|
||||
"aligned": false,
|
||||
"status": "reached in heart language",
|
||||
"caveat": "Bridge = a language of the same country spoken by >1 DX group. NOT proof this group speaks it. Resource status = pools checked (eBible + JESUS Film); audio pools are key-blocked."
|
||||
},
|
||||
{
|
||||
|
|
|
|||
164
public/doxa-maps/assets/tables/gospel-by-country.json
generated
164
public/doxa-maps/assets/tables/gospel-by-country.json
generated
|
|
@ -4,7 +4,7 @@
|
|||
"generated": "2026-08-01",
|
||||
"band_rule": "critical >=60% of a country's unengaged groups with NO resource found · high >=30% · partial >0 · covered 0",
|
||||
"caveat": "NO RESOURCE means not found in the pools checked — eBible, PNG.Bible, Arclight/JESUS Film, Door43 and Faith Comes By Hearing. GRN audio, api.bible, DBL and progress.bible are unchecked; absence here is never proof that nothing exists.",
|
||||
"refreshed": "2026-09-24",
|
||||
"refreshed": "2026-09-25",
|
||||
"basis": "data/tables/people-group-pins.json — the same index the pins are drawn from, so the fill and the dots cannot disagree.",
|
||||
"curated_columns": "growing_unreached, deaths_day and growth come from the curated country analysis over a narrower set and are NOT derived from the pins. A row flagged from_pins_only carries null for all three, because this build does not know them — null, never zero, which would be a claim."
|
||||
},
|
||||
|
|
@ -14,14 +14,14 @@
|
|||
"country": "People's Republic of China",
|
||||
"region": "Asia",
|
||||
"groups": 391,
|
||||
"no_resource": 89,
|
||||
"pop_no_resource": 127361200,
|
||||
"no_resource": 85,
|
||||
"pop_no_resource": 127351400,
|
||||
"scripture": 118,
|
||||
"film": 227,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 274.2,
|
||||
"growth": -0.12,
|
||||
"pct_no_resource": 22.8,
|
||||
"pct_no_resource": 21.7,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -29,29 +29,29 @@
|
|||
"country": "Lao People's Democratic Republic",
|
||||
"region": "Asia",
|
||||
"groups": 158,
|
||||
"no_resource": 50,
|
||||
"pop_no_resource": 705585,
|
||||
"no_resource": 46,
|
||||
"pop_no_resource": 693785,
|
||||
"scripture": 55,
|
||||
"film": 58,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 15.5,
|
||||
"growth": null,
|
||||
"pct_no_resource": 31.6,
|
||||
"band": "high"
|
||||
"pct_no_resource": 29.1,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
"iso3": "IND",
|
||||
"country": "India",
|
||||
"region": "Asia",
|
||||
"groups": 2146,
|
||||
"no_resource": 28,
|
||||
"pop_no_resource": 373335,
|
||||
"no_resource": 20,
|
||||
"pop_no_resource": 345835,
|
||||
"scripture": 1757,
|
||||
"film": 2044,
|
||||
"growing_unreached": 38,
|
||||
"deaths_day": 721.2,
|
||||
"growth": 0.89,
|
||||
"pct_no_resource": 1.3,
|
||||
"pct_no_resource": 0.9,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -59,14 +59,14 @@
|
|||
"country": "Brazil",
|
||||
"region": "Americas",
|
||||
"groups": 270,
|
||||
"no_resource": 55,
|
||||
"pop_no_resource": 30680,
|
||||
"no_resource": 52,
|
||||
"pop_no_resource": 24030,
|
||||
"scripture": 186,
|
||||
"film": 163,
|
||||
"growing_unreached": 38,
|
||||
"deaths_day": 1.2,
|
||||
"growth": 0.41,
|
||||
"pct_no_resource": 20.4,
|
||||
"pct_no_resource": 19.3,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -74,14 +74,14 @@
|
|||
"country": "Chad",
|
||||
"region": "Africa",
|
||||
"groups": 150,
|
||||
"no_resource": 43,
|
||||
"pop_no_resource": 1282450,
|
||||
"no_resource": 42,
|
||||
"pop_no_resource": 1279150,
|
||||
"scripture": 46,
|
||||
"film": 49,
|
||||
"growing_unreached": 37,
|
||||
"deaths_day": 68.4,
|
||||
"growth": 4.95,
|
||||
"pct_no_resource": 28.7,
|
||||
"pct_no_resource": 28,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -104,14 +104,14 @@
|
|||
"country": "Nigeria",
|
||||
"region": "Africa",
|
||||
"groups": 433,
|
||||
"no_resource": 76,
|
||||
"pop_no_resource": 3069025,
|
||||
"no_resource": 62,
|
||||
"pop_no_resource": 3015225,
|
||||
"scripture": 105,
|
||||
"film": 188,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 44,
|
||||
"growth": null,
|
||||
"pct_no_resource": 17.6,
|
||||
"pct_no_resource": 14.3,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -119,14 +119,14 @@
|
|||
"country": "Indonesia",
|
||||
"region": "Asia",
|
||||
"groups": 669,
|
||||
"no_resource": 276,
|
||||
"pop_no_resource": 4268480,
|
||||
"no_resource": 256,
|
||||
"pop_no_resource": 4210680,
|
||||
"scripture": 222,
|
||||
"film": 265,
|
||||
"growing_unreached": 23,
|
||||
"deaths_day": 47.2,
|
||||
"growth": 0.81,
|
||||
"pct_no_resource": 41.3,
|
||||
"pct_no_resource": 38.3,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -134,14 +134,14 @@
|
|||
"country": "Afghanistan",
|
||||
"region": "Asia",
|
||||
"groups": 45,
|
||||
"no_resource": 5,
|
||||
"pop_no_resource": 601500,
|
||||
"no_resource": 2,
|
||||
"pop_no_resource": 594000,
|
||||
"scripture": 15,
|
||||
"film": 25,
|
||||
"growing_unreached": 17,
|
||||
"deaths_day": 17.6,
|
||||
"growth": 2.84,
|
||||
"pct_no_resource": 11.1,
|
||||
"pct_no_resource": 4.4,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -164,14 +164,14 @@
|
|||
"country": "Bhutan",
|
||||
"region": "Asia",
|
||||
"groups": 36,
|
||||
"no_resource": 13,
|
||||
"pop_no_resource": 76125,
|
||||
"no_resource": 11,
|
||||
"pop_no_resource": 70525,
|
||||
"scripture": 11,
|
||||
"film": 16,
|
||||
"growing_unreached": 13,
|
||||
"deaths_day": 2.1,
|
||||
"growth": 0.65,
|
||||
"pct_no_resource": 36.1,
|
||||
"pct_no_resource": 30.6,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -224,14 +224,14 @@
|
|||
"country": "Ethiopia",
|
||||
"region": "Africa",
|
||||
"groups": 119,
|
||||
"no_resource": 11,
|
||||
"pop_no_resource": 1568400,
|
||||
"no_resource": 10,
|
||||
"pop_no_resource": 1564200,
|
||||
"scripture": 59,
|
||||
"film": 95,
|
||||
"growing_unreached": 8,
|
||||
"deaths_day": 130,
|
||||
"growth": 2.58,
|
||||
"pct_no_resource": 9.2,
|
||||
"pct_no_resource": 8.4,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -269,14 +269,14 @@
|
|||
"country": "Malaysia",
|
||||
"region": "Asia",
|
||||
"groups": 160,
|
||||
"no_resource": 59,
|
||||
"pop_no_resource": 1784950,
|
||||
"no_resource": 58,
|
||||
"pop_no_resource": 1781950,
|
||||
"scripture": 75,
|
||||
"film": 68,
|
||||
"growing_unreached": 8,
|
||||
"deaths_day": 8.2,
|
||||
"growth": 1.22,
|
||||
"pct_no_resource": 36.9,
|
||||
"pct_no_resource": 36.3,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -284,14 +284,14 @@
|
|||
"country": "Cameroon",
|
||||
"region": "Africa",
|
||||
"groups": 260,
|
||||
"no_resource": 65,
|
||||
"pop_no_resource": 1358325,
|
||||
"no_resource": 59,
|
||||
"pop_no_resource": 1337925,
|
||||
"scripture": 72,
|
||||
"film": 84,
|
||||
"growing_unreached": 8,
|
||||
"deaths_day": 3.4,
|
||||
"growth": 2.61,
|
||||
"pct_no_resource": 25,
|
||||
"pct_no_resource": 22.7,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -314,14 +314,14 @@
|
|||
"country": "Guinea",
|
||||
"region": "Africa",
|
||||
"groups": 41,
|
||||
"no_resource": 6,
|
||||
"pop_no_resource": 156400,
|
||||
"no_resource": 4,
|
||||
"pop_no_resource": 146600,
|
||||
"scripture": 19,
|
||||
"film": 24,
|
||||
"growing_unreached": 7,
|
||||
"deaths_day": 14.5,
|
||||
"growth": 2.4,
|
||||
"pct_no_resource": 14.6,
|
||||
"pct_no_resource": 9.8,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -359,14 +359,14 @@
|
|||
"country": "Nepal",
|
||||
"region": "Asia",
|
||||
"groups": 171,
|
||||
"no_resource": 21,
|
||||
"pop_no_resource": 493850,
|
||||
"no_resource": 19,
|
||||
"pop_no_resource": 489050,
|
||||
"scripture": 97,
|
||||
"film": 111,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 34,
|
||||
"growth": null,
|
||||
"pct_no_resource": 12.3,
|
||||
"pct_no_resource": 11.1,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -419,14 +419,14 @@
|
|||
"country": "Colombia",
|
||||
"region": "Americas",
|
||||
"groups": 98,
|
||||
"no_resource": 11,
|
||||
"pop_no_resource": 11225,
|
||||
"no_resource": 10,
|
||||
"pop_no_resource": 8725,
|
||||
"scripture": 80,
|
||||
"film": 51,
|
||||
"growing_unreached": 6,
|
||||
"deaths_day": 1.6,
|
||||
"growth": 1.07,
|
||||
"pct_no_resource": 11.2,
|
||||
"pct_no_resource": 10.2,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -914,14 +914,14 @@
|
|||
"country": "Cambodia",
|
||||
"region": "Asia",
|
||||
"groups": 28,
|
||||
"no_resource": 7,
|
||||
"pop_no_resource": 175300,
|
||||
"no_resource": 6,
|
||||
"pop_no_resource": 171400,
|
||||
"scripture": 20,
|
||||
"film": 17,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 2.8,
|
||||
"growth": 1.23,
|
||||
"pct_no_resource": 25,
|
||||
"pct_no_resource": 21.4,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -959,14 +959,14 @@
|
|||
"country": "Cote d'Ivoire",
|
||||
"region": "Africa",
|
||||
"groups": 83,
|
||||
"no_resource": 8,
|
||||
"pop_no_resource": 266300,
|
||||
"no_resource": 7,
|
||||
"pop_no_resource": 262200,
|
||||
"scripture": 44,
|
||||
"film": 53,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 3.7,
|
||||
"growth": 2.44,
|
||||
"pct_no_resource": 9.6,
|
||||
"pct_no_resource": 8.4,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -1049,14 +1049,14 @@
|
|||
"country": "Papua New Guinea",
|
||||
"region": "Oceania",
|
||||
"groups": 831,
|
||||
"no_resource": 404,
|
||||
"pop_no_resource": 1095850,
|
||||
"no_resource": 350,
|
||||
"pop_no_resource": 946300,
|
||||
"scripture": 332,
|
||||
"film": 143,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0.9,
|
||||
"growth": 1.78,
|
||||
"pct_no_resource": 48.6,
|
||||
"pct_no_resource": 42.1,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -1214,15 +1214,15 @@
|
|||
"country": "Solomon Islands",
|
||||
"region": "Oceania",
|
||||
"groups": 79,
|
||||
"no_resource": 27,
|
||||
"pop_no_resource": 91895,
|
||||
"no_resource": 17,
|
||||
"pop_no_resource": 53695,
|
||||
"scripture": 34,
|
||||
"film": 33,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0.1,
|
||||
"growth": 2.37,
|
||||
"pct_no_resource": 34.2,
|
||||
"band": "high"
|
||||
"pct_no_resource": 21.5,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
"iso3": "SUR",
|
||||
|
|
@ -1319,14 +1319,14 @@
|
|||
"country": "New Caledonia",
|
||||
"region": "Oceania",
|
||||
"groups": 42,
|
||||
"no_resource": 24,
|
||||
"pop_no_resource": 101725,
|
||||
"no_resource": 23,
|
||||
"pop_no_resource": 96825,
|
||||
"scripture": 12,
|
||||
"film": 11,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0.1,
|
||||
"growth": 0.95,
|
||||
"pct_no_resource": 57.1,
|
||||
"pct_no_resource": 54.8,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -1394,14 +1394,14 @@
|
|||
"country": "French Polynesia",
|
||||
"region": "Oceania",
|
||||
"groups": 14,
|
||||
"no_resource": 8,
|
||||
"pop_no_resource": 41775,
|
||||
"no_resource": 7,
|
||||
"pop_no_resource": 37775,
|
||||
"scripture": 3,
|
||||
"film": 5,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"growth": 0.24,
|
||||
"pct_no_resource": 57.1,
|
||||
"pct_no_resource": 50,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
|
|
@ -1439,15 +1439,15 @@
|
|||
"country": "Vanuatu",
|
||||
"region": "Oceania",
|
||||
"groups": 114,
|
||||
"no_resource": 74,
|
||||
"pop_no_resource": 87135,
|
||||
"no_resource": 68,
|
||||
"pop_no_resource": 72200,
|
||||
"scripture": 28,
|
||||
"film": 26,
|
||||
"growing_unreached": 1,
|
||||
"deaths_day": 0,
|
||||
"growth": 2.27,
|
||||
"pct_no_resource": 64.9,
|
||||
"band": "critical"
|
||||
"pct_no_resource": 59.6,
|
||||
"band": "high"
|
||||
},
|
||||
{
|
||||
"iso3": "STP",
|
||||
|
|
@ -2039,14 +2039,14 @@
|
|||
"country": "Tajikistan",
|
||||
"region": "Asia",
|
||||
"groups": 29,
|
||||
"no_resource": 3,
|
||||
"pop_no_resource": 6600,
|
||||
"no_resource": 2,
|
||||
"pop_no_resource": 4700,
|
||||
"scripture": 21,
|
||||
"film": 23,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 1.3,
|
||||
"growth": 1.92,
|
||||
"pct_no_resource": 10.3,
|
||||
"pct_no_resource": 6.9,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -2144,14 +2144,14 @@
|
|||
"country": "Philippines",
|
||||
"region": "Asia",
|
||||
"groups": 156,
|
||||
"no_resource": 19,
|
||||
"pop_no_resource": 3110775,
|
||||
"no_resource": 17,
|
||||
"pop_no_resource": 3104075,
|
||||
"scripture": 108,
|
||||
"film": 90,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.2,
|
||||
"growth": 0.83,
|
||||
"pct_no_resource": 12.2,
|
||||
"pct_no_resource": 10.9,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -2264,14 +2264,14 @@
|
|||
"country": "United States of America",
|
||||
"region": "Americas",
|
||||
"groups": 623,
|
||||
"no_resource": 25,
|
||||
"pop_no_resource": 337525,
|
||||
"no_resource": 20,
|
||||
"pop_no_resource": 323925,
|
||||
"scripture": 517,
|
||||
"film": 549,
|
||||
"growing_unreached": 0,
|
||||
"deaths_day": 0.1,
|
||||
"growth": 0.96,
|
||||
"pct_no_resource": 4,
|
||||
"pct_no_resource": 3.2,
|
||||
"band": "partial"
|
||||
},
|
||||
{
|
||||
|
|
@ -2836,14 +2836,14 @@
|
|||
"country": "Ghana",
|
||||
"region": "Africa",
|
||||
"groups": 96,
|
||||
"no_resource": 5,
|
||||
"pop_no_resource": 422600,
|
||||
"no_resource": 3,
|
||||
"pop_no_resource": 416000,
|
||||
"scripture": 71,
|
||||
"film": 70,
|
||||
"growing_unreached": null,
|
||||
"deaths_day": null,
|
||||
"growth": null,
|
||||
"pct_no_resource": 5.2,
|
||||
"pct_no_resource": 3.1,
|
||||
"band": "partial",
|
||||
"from_pins_only": true
|
||||
},
|
||||
|
|
|
|||
2
public/doxa-maps/assets/tables/gospel-gaps.json
generated
2
public/doxa-maps/assets/tables/gospel-gaps.json
generated
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"meta": {
|
||||
"title": "Gospel resource link verification",
|
||||
"generated": "2026-09-24T23:13:38.725Z",
|
||||
"generated": "2026-09-25T00:17:42.379Z",
|
||||
"method": "HEAD, redirects followed. verified = HTTP 200. broken = 404/410. unknown = unreachable, an ambiguous status, or a URL shape that cannot be checked by fetch.",
|
||||
"scope": "Every URL in data/tables/people-group-pins.json, deduplicated.",
|
||||
"states": {
|
||||
|
|
@ -86,12 +86,12 @@
|
|||
]
|
||||
},
|
||||
"summary": {
|
||||
"records": 8151,
|
||||
"checkedThisPass": 74,
|
||||
"records": 8291,
|
||||
"checkedThisPass": 62,
|
||||
"carriedForward": 74,
|
||||
"pruned": 0,
|
||||
"broken": 74,
|
||||
"verified": 8072,
|
||||
"verified": 8212,
|
||||
"unknown": 5
|
||||
},
|
||||
"byHost": {
|
||||
|
|
@ -132,7 +132,7 @@
|
|||
"verified": 921
|
||||
},
|
||||
"fivefish.org": {
|
||||
"verified": 660
|
||||
"verified": 800
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -40891,6 +40891,706 @@
|
|||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3121?language=Bana%27)",
|
||||
"at": "2026-09-24T23:13:38.549Z"
|
||||
},
|
||||
"https://fivefish.org/can": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3258?language=Chambri)",
|
||||
"at": "2026-09-24T23:45:33.722Z"
|
||||
},
|
||||
"https://fivefish.org/kzz": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1660?language=Kalabara%20Group)",
|
||||
"at": "2026-09-24T23:45:33.743Z"
|
||||
},
|
||||
"https://fivefish.org/bpv": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1908?language=Bian%20Group%20%282%29)",
|
||||
"at": "2026-09-24T23:45:33.784Z"
|
||||
},
|
||||
"https://fivefish.org/ega": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/9517?language=Ega)",
|
||||
"at": "2026-09-24T23:45:33.807Z"
|
||||
},
|
||||
"https://fivefish.org/tqu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3605?language=Baniata)",
|
||||
"at": "2026-09-24T23:45:33.825Z"
|
||||
},
|
||||
"https://fivefish.org/ksg": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/5175?language=Kusaghe)",
|
||||
"at": "2026-09-24T23:45:33.934Z"
|
||||
},
|
||||
"https://fivefish.org/kcs": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/12093?language=Koenoem)",
|
||||
"at": "2026-09-24T23:45:33.954Z"
|
||||
},
|
||||
"https://fivefish.org/nps": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/15002?language=Nipsan)",
|
||||
"at": "2026-09-24T23:45:33.986Z"
|
||||
},
|
||||
"https://fivefish.org/sge": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/809?language=Ga%27ai)",
|
||||
"at": "2026-09-24T23:45:34.172Z"
|
||||
},
|
||||
"https://fivefish.org/twp": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1482?language=Londru)",
|
||||
"at": "2026-09-24T23:45:34.259Z"
|
||||
},
|
||||
"https://fivefish.org/svs": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3662?language=Savosavo)",
|
||||
"at": "2026-09-24T23:45:34.280Z"
|
||||
},
|
||||
"https://fivefish.org/mbq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/553?language=Maisin)",
|
||||
"at": "2026-09-24T23:45:34.299Z"
|
||||
},
|
||||
"https://fivefish.org/mqm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/23158?language=Marquesan%2C%20South)",
|
||||
"at": "2026-09-24T23:45:34.441Z"
|
||||
},
|
||||
"https://fivefish.org/sax": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4499?language=Sa)",
|
||||
"at": "2026-09-24T23:45:34.479Z"
|
||||
},
|
||||
"https://fivefish.org/gar": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2178?language=Garea%20%26%20Gameta)",
|
||||
"at": "2026-09-24T23:45:34.515Z"
|
||||
},
|
||||
"https://fivefish.org/blq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1487?language=Paluai)",
|
||||
"at": "2026-09-24T23:45:34.524Z"
|
||||
},
|
||||
"https://fivefish.org/dmr": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/822?language=Damar)",
|
||||
"at": "2026-09-24T23:45:34.702Z"
|
||||
},
|
||||
"https://fivefish.org/kce": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2570?language=Kaivi)",
|
||||
"at": "2026-09-24T23:45:34.769Z"
|
||||
},
|
||||
"https://fivefish.org/erg": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4462?language=Sie)",
|
||||
"at": "2026-09-24T23:45:34.885Z"
|
||||
},
|
||||
"https://fivefish.org/bcg": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2527?language=Baga)",
|
||||
"at": "2026-09-24T23:45:34.965Z"
|
||||
},
|
||||
"https://fivefish.org/lbu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/495?language=Labo)",
|
||||
"at": "2026-09-24T23:45:34.997Z"
|
||||
},
|
||||
"https://fivefish.org/kwe": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/12623?language=Kwerba)",
|
||||
"at": "2026-09-24T23:45:35.072Z"
|
||||
},
|
||||
"https://fivefish.org/xkt": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11533?language=Kantosi)",
|
||||
"at": "2026-09-24T23:45:35.182Z"
|
||||
},
|
||||
"https://fivefish.org/idi": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/563?language=Idi)",
|
||||
"at": "2026-09-24T23:45:35.226Z"
|
||||
},
|
||||
"https://fivefish.org/tva": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3672?language=Vaghua)",
|
||||
"at": "2026-09-24T23:45:35.469Z"
|
||||
},
|
||||
"https://fivefish.org/amb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1751?language=Ambo)",
|
||||
"at": "2026-09-24T23:45:35.563Z"
|
||||
},
|
||||
"https://fivefish.org/dby": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/639?language=Bainapi)",
|
||||
"at": "2026-09-24T23:45:35.572Z"
|
||||
},
|
||||
"https://fivefish.org/nmo": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/14567?language=Naga%2C%20Moyon)",
|
||||
"at": "2026-09-24T23:45:35.663Z"
|
||||
},
|
||||
"https://fivefish.org/xkk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11277?language=Kachok)",
|
||||
"at": "2026-09-24T23:45:35.669Z"
|
||||
},
|
||||
"https://fivefish.org/nke": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3614?language=Duke)",
|
||||
"at": "2026-09-24T23:45:35.676Z"
|
||||
},
|
||||
"https://fivefish.org/bye": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3873?language=Bo%27yei)",
|
||||
"at": "2026-09-24T23:45:35.727Z"
|
||||
},
|
||||
"https://fivefish.org/bya": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/256?language=Batak)",
|
||||
"at": "2026-09-24T23:45:35.928Z"
|
||||
},
|
||||
"https://fivefish.org/elk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3744?language=Olko)",
|
||||
"at": "2026-09-24T23:45:36.076Z"
|
||||
},
|
||||
"https://fivefish.org/mij": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6235?language=Missong%3A%20Bejune)",
|
||||
"at": "2026-09-24T23:45:36.250Z"
|
||||
},
|
||||
"https://fivefish.org/apm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3456?language=Apache%2C%20Mescalero)",
|
||||
"at": "2026-09-24T23:45:36.269Z"
|
||||
},
|
||||
"https://fivefish.org/lle": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/510?language=Lele)",
|
||||
"at": "2026-09-24T23:45:36.278Z"
|
||||
},
|
||||
"https://fivefish.org/bek": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/497?language=Bebeli)",
|
||||
"at": "2026-09-24T23:45:36.662Z"
|
||||
},
|
||||
"https://fivefish.org/fir": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2541?language=Kwakwi)",
|
||||
"at": "2026-09-24T23:45:36.701Z"
|
||||
},
|
||||
"https://fivefish.org/zik": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/506?language=Zimakani)",
|
||||
"at": "2026-09-24T23:45:36.713Z"
|
||||
},
|
||||
"https://fivefish.org/ywa": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3880?language=Kalou)",
|
||||
"at": "2026-09-24T23:45:36.805Z"
|
||||
},
|
||||
"https://fivefish.org/leq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3247?language=Lembena)",
|
||||
"at": "2026-09-24T23:45:37.128Z"
|
||||
},
|
||||
"https://fivefish.org/iai": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2743?language=Iai)",
|
||||
"at": "2026-09-24T23:45:37.180Z"
|
||||
},
|
||||
"https://fivefish.org/hoe": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2564?language=Horom)",
|
||||
"at": "2026-09-24T23:45:37.224Z"
|
||||
},
|
||||
"https://fivefish.org/sde": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2574?language=Surubu)",
|
||||
"at": "2026-09-24T23:45:37.280Z"
|
||||
},
|
||||
"https://fivefish.org/bqo": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/7618?language=Balo)",
|
||||
"at": "2026-09-24T23:45:37.596Z"
|
||||
},
|
||||
"https://fivefish.org/tmy": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/425?language=Tami)",
|
||||
"at": "2026-09-24T23:45:37.654Z"
|
||||
},
|
||||
"https://fivefish.org/gcn": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2497?language=Gaina)",
|
||||
"at": "2026-09-24T23:45:37.662Z"
|
||||
},
|
||||
"https://fivefish.org/tsx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/616?language=Mubami%3A%20Dausuami)",
|
||||
"at": "2026-09-24T23:45:37.916Z"
|
||||
},
|
||||
"https://fivefish.org/bzq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/8447?language=Buli)",
|
||||
"at": "2026-09-24T23:45:38.022Z"
|
||||
},
|
||||
"https://fivefish.org/kih": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3741?language=Kilmeri)",
|
||||
"at": "2026-09-24T23:45:38.152Z"
|
||||
},
|
||||
"https://fivefish.org/wli": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/18110?language=Waioli)",
|
||||
"at": "2026-09-24T23:45:38.247Z"
|
||||
},
|
||||
"https://fivefish.org/brq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3214?language=Breri%20Group)",
|
||||
"at": "2026-09-24T23:45:38.389Z"
|
||||
},
|
||||
"https://fivefish.org/dor": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3613?language=Dori%27o)",
|
||||
"at": "2026-09-24T23:45:38.497Z"
|
||||
},
|
||||
"https://fivefish.org/lvk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3636?language=Lavukaleve)",
|
||||
"at": "2026-09-24T23:45:38.634Z"
|
||||
},
|
||||
"https://fivefish.org/tbj": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1476?language=Dyaul)",
|
||||
"at": "2026-09-24T23:45:38.669Z"
|
||||
},
|
||||
"https://fivefish.org/kku": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2572?language=Kitimi)",
|
||||
"at": "2026-09-24T23:45:39.022Z"
|
||||
},
|
||||
"https://fivefish.org/bfh": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/628?language=West%20Morehead%20Group)",
|
||||
"at": "2026-09-24T23:45:39.073Z"
|
||||
},
|
||||
"https://fivefish.org/pkg": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/472?language=Pak)",
|
||||
"at": "2026-09-24T23:45:39.133Z"
|
||||
},
|
||||
"https://fivefish.org/brp": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1205?language=Barapasi)",
|
||||
"at": "2026-09-24T23:45:39.179Z"
|
||||
},
|
||||
"https://fivefish.org/tlx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/478?language=Khehek)",
|
||||
"at": "2026-09-24T23:45:39.464Z"
|
||||
},
|
||||
"https://fivefish.org/kcx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11267?language=Kachama-Ganjule%3A%20Ganta)",
|
||||
"at": "2026-09-24T23:45:39.594Z"
|
||||
},
|
||||
"https://fivefish.org/pwa": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/549?language=Pauaia)",
|
||||
"at": "2026-09-24T23:45:39.696Z"
|
||||
},
|
||||
"https://fivefish.org/isk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3369?language=Ishkashimi)",
|
||||
"at": "2026-09-24T23:45:40.028Z"
|
||||
},
|
||||
"https://fivefish.org/saa": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3108?language=Saba)",
|
||||
"at": "2026-09-24T23:45:40.178Z"
|
||||
},
|
||||
"https://fivefish.org/sdp": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/16613?language=Sherdukpen)",
|
||||
"at": "2026-09-24T23:45:40.624Z"
|
||||
},
|
||||
"https://fivefish.org/sqq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/16872?language=Sou)",
|
||||
"at": "2026-09-24T23:45:40.791Z"
|
||||
},
|
||||
"https://fivefish.org/bkk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/8374?language=Brokskat)",
|
||||
"at": "2026-09-24T23:45:41.240Z"
|
||||
},
|
||||
"https://fivefish.org/aio": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6793?language=Aiton)",
|
||||
"at": "2026-09-24T23:45:41.374Z"
|
||||
},
|
||||
"https://fivefish.org/aik": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6817?language=Akye)",
|
||||
"at": "2026-09-24T23:45:41.384Z"
|
||||
},
|
||||
"https://fivefish.org/lgu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3638?language=Longgu)",
|
||||
"at": "2026-09-24T23:45:41.461Z"
|
||||
},
|
||||
"https://fivefish.org/knm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3514?language=Kanamar%C3%AD)",
|
||||
"at": "2026-09-24T23:45:41.515Z"
|
||||
},
|
||||
"https://fivefish.org/giw": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6046?language=Galao%2C%20White)",
|
||||
"at": "2026-09-24T23:45:41.570Z"
|
||||
},
|
||||
"https://fivefish.org/dia": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3753?language=Alu)",
|
||||
"at": "2026-09-24T23:45:41.580Z"
|
||||
},
|
||||
"https://fivefish.org/aim": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3822?language=Aimol)",
|
||||
"at": "2026-09-24T23:45:41.761Z"
|
||||
},
|
||||
"https://fivefish.org/jmb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2666?language=Jimbin)",
|
||||
"at": "2026-09-24T23:45:41.771Z"
|
||||
},
|
||||
"https://fivefish.org/kil": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2028?language=Kariya)",
|
||||
"at": "2026-09-24T23:45:41.887Z"
|
||||
},
|
||||
"https://fivefish.org/bmd": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4999?language=Baga%20Manduri)",
|
||||
"at": "2026-09-24T23:45:41.950Z"
|
||||
},
|
||||
"https://fivefish.org/vkn": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2071?language=Koro%3A%20Adunu)",
|
||||
"at": "2026-09-24T23:45:42.033Z"
|
||||
},
|
||||
"https://fivefish.org/nmh": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3859?language=Monsang)",
|
||||
"at": "2026-09-25T00:17:37.983Z"
|
||||
},
|
||||
"https://fivefish.org/nlu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/14759?language=Nchumbulu)",
|
||||
"at": "2026-09-25T00:17:38.033Z"
|
||||
},
|
||||
"https://fivefish.org/xra": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2322?language=Kraho)",
|
||||
"at": "2026-09-25T00:17:38.063Z"
|
||||
},
|
||||
"https://fivefish.org/srl": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/10956?language=Isirawa)",
|
||||
"at": "2026-09-25T00:17:38.080Z"
|
||||
},
|
||||
"https://fivefish.org/akt": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2781?language=Akolet)",
|
||||
"at": "2026-09-25T00:17:38.129Z"
|
||||
},
|
||||
"https://fivefish.org/bxs": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6218?language=Busam)",
|
||||
"at": "2026-09-25T00:17:38.164Z"
|
||||
},
|
||||
"https://fivefish.org/mdb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/5021?language=Morigi)",
|
||||
"at": "2026-09-25T00:17:38.203Z"
|
||||
},
|
||||
"https://fivefish.org/mds": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2989?language=Manubara)",
|
||||
"at": "2026-09-25T00:17:38.241Z"
|
||||
},
|
||||
"https://fivefish.org/bqs": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3207?language=Bosman)",
|
||||
"at": "2026-09-25T00:17:38.446Z"
|
||||
},
|
||||
"https://fivefish.org/gak": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/10006?language=Gamkonora)",
|
||||
"at": "2026-09-25T00:17:38.472Z"
|
||||
},
|
||||
"https://fivefish.org/xky": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11858?language=Uma%27%20Lasan)",
|
||||
"at": "2026-09-25T00:17:38.532Z"
|
||||
},
|
||||
"https://fivefish.org/jee": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11139?language=Jerung)",
|
||||
"at": "2026-09-25T00:17:38.590Z"
|
||||
},
|
||||
"https://fivefish.org/kwt": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1244?language=Aujefor%20%26%20Mafena%20Mur)",
|
||||
"at": "2026-09-25T00:17:38.623Z"
|
||||
},
|
||||
"https://fivefish.org/kic": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4169?language=Kickapoo)",
|
||||
"at": "2026-09-25T00:17:38.679Z"
|
||||
},
|
||||
"https://fivefish.org/bnw": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3271?language=Bisis)",
|
||||
"at": "2026-09-25T00:17:38.699Z"
|
||||
},
|
||||
"https://fivefish.org/szv": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2636?language=Bimbia)",
|
||||
"at": "2026-09-25T00:17:38.766Z"
|
||||
},
|
||||
"https://fivefish.org/klx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2215?language=Ibawana%2FKao%20Kao)",
|
||||
"at": "2026-09-25T00:17:38.916Z"
|
||||
},
|
||||
"https://fivefish.org/cbg": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3155?language=Chimila)",
|
||||
"at": "2026-09-25T00:17:39.033Z"
|
||||
},
|
||||
"https://fivefish.org/asy": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1516?language=Asmat%2C%20Yaosakor)",
|
||||
"at": "2026-09-25T00:17:39.130Z"
|
||||
},
|
||||
"https://fivefish.org/anx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/469?language=Andra-Hus)",
|
||||
"at": "2026-09-25T00:17:39.144Z"
|
||||
},
|
||||
"https://fivefish.org/vls": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/434?language=Flemish)",
|
||||
"at": "2026-09-25T00:17:39.207Z"
|
||||
},
|
||||
"https://fivefish.org/gbf": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1139?language=Gaikundi)",
|
||||
"at": "2026-09-25T00:17:39.393Z"
|
||||
},
|
||||
"https://fivefish.org/fut": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4473?language=Futuna-Aniwa)",
|
||||
"at": "2026-09-25T00:17:39.414Z"
|
||||
},
|
||||
"https://fivefish.org/sbh": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/470?language=Sori)",
|
||||
"at": "2026-09-25T00:17:39.506Z"
|
||||
},
|
||||
"https://fivefish.org/kjr": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1210?language=Famaij%20Group)",
|
||||
"at": "2026-09-25T00:17:39.520Z"
|
||||
},
|
||||
"https://fivefish.org/ayt": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4736?language=Ayta%3A%20Kadmang)",
|
||||
"at": "2026-09-25T00:17:39.599Z"
|
||||
},
|
||||
"https://fivefish.org/kvm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6229?language=Kendem)",
|
||||
"at": "2026-09-25T00:17:39.726Z"
|
||||
},
|
||||
"https://fivefish.org/itr": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3447?language=Agrame)",
|
||||
"at": "2026-09-25T00:17:39.819Z"
|
||||
},
|
||||
"https://fivefish.org/ilu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/717?language=Wetar)",
|
||||
"at": "2026-09-25T00:17:39.959Z"
|
||||
},
|
||||
"https://fivefish.org/kbv": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3762?language=Dla)",
|
||||
"at": "2026-09-25T00:17:39.967Z"
|
||||
},
|
||||
"https://fivefish.org/pnu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6284?language=Yao%3A%20Sanzi%20Jinxiuluoxiang)",
|
||||
"at": "2026-09-25T00:17:39.978Z"
|
||||
},
|
||||
"https://fivefish.org/wbb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/1226?language=Wabo)",
|
||||
"at": "2026-09-25T00:17:39.988Z"
|
||||
},
|
||||
"https://fivefish.org/ymb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/976?language=Yambes)",
|
||||
"at": "2026-09-25T00:17:40.000Z"
|
||||
},
|
||||
"https://fivefish.org/aof": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3430?language=Bragat)",
|
||||
"at": "2026-09-25T00:17:40.030Z"
|
||||
},
|
||||
"https://fivefish.org/lsr": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3275?language=Lau%20Seranga)",
|
||||
"at": "2026-09-25T00:17:40.279Z"
|
||||
},
|
||||
"https://fivefish.org/gua": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2660?language=Shiki%3A%20Gubi)",
|
||||
"at": "2026-09-25T00:17:40.366Z"
|
||||
},
|
||||
"https://fivefish.org/rhp": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3438?language=Yahang)",
|
||||
"at": "2026-09-25T00:17:40.413Z"
|
||||
},
|
||||
"https://fivefish.org/moh": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3420?language=Mohawk)",
|
||||
"at": "2026-09-25T00:17:40.443Z"
|
||||
},
|
||||
"https://fivefish.org/kkd": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2571?language=Kinugu)",
|
||||
"at": "2026-09-25T00:17:40.525Z"
|
||||
},
|
||||
"https://fivefish.org/yet": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/18551?language=Yetfa)",
|
||||
"at": "2026-09-25T00:17:40.619Z"
|
||||
},
|
||||
"https://fivefish.org/mrm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3643?language=Merlava)",
|
||||
"at": "2026-09-25T00:17:40.752Z"
|
||||
},
|
||||
"https://fivefish.org/mtk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4964?language=Banbalang)",
|
||||
"at": "2026-09-25T00:17:40.778Z"
|
||||
},
|
||||
"https://fivefish.org/gnu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3760?language=Gnau)",
|
||||
"at": "2026-09-25T00:17:40.852Z"
|
||||
},
|
||||
"https://fivefish.org/tcx": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/879?language=Toda)",
|
||||
"at": "2026-09-25T00:17:40.890Z"
|
||||
},
|
||||
"https://fivefish.org/gnm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/5096?language=Ginuman)",
|
||||
"at": "2026-09-25T00:17:41.041Z"
|
||||
},
|
||||
"https://fivefish.org/bpa": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4470?language=Daakaka)",
|
||||
"at": "2026-09-25T00:17:41.066Z"
|
||||
},
|
||||
"https://fivefish.org/tow": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3824?language=Towa)",
|
||||
"at": "2026-09-25T00:17:41.267Z"
|
||||
},
|
||||
"https://fivefish.org/lek": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/471?language=Leipon)",
|
||||
"at": "2026-09-25T00:17:41.313Z"
|
||||
},
|
||||
"https://fivefish.org/gmb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/5106?language=Gula%27alaa)",
|
||||
"at": "2026-09-25T00:17:41.353Z"
|
||||
},
|
||||
"https://fivefish.org/piv": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3657?language=Pileni)",
|
||||
"at": "2026-09-25T00:17:41.416Z"
|
||||
},
|
||||
"https://fivefish.org/abo": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/4257?language=Abong)",
|
||||
"at": "2026-09-25T00:17:41.434Z"
|
||||
},
|
||||
"https://fivefish.org/sug": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3757?language=Blimo)",
|
||||
"at": "2026-09-25T00:17:41.517Z"
|
||||
},
|
||||
"https://fivefish.org/wbk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3331?language=Waygali)",
|
||||
"at": "2026-09-25T00:17:41.735Z"
|
||||
},
|
||||
"https://fivefish.org/nuo": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2017?language=Nguon)",
|
||||
"at": "2026-09-25T00:17:41.803Z"
|
||||
},
|
||||
"https://fivefish.org/byo": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6069?language=Bio)",
|
||||
"at": "2026-09-25T00:17:41.825Z"
|
||||
},
|
||||
"https://fivefish.org/sgy": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/3378?language=Sanglechi)",
|
||||
"at": "2026-09-25T00:17:41.849Z"
|
||||
},
|
||||
"https://fivefish.org/lhp": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/12922?language=Lhokpu)",
|
||||
"at": "2026-09-25T00:17:41.876Z"
|
||||
},
|
||||
"https://fivefish.org/kzq": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/11320?language=Kaike)",
|
||||
"at": "2026-09-25T00:17:41.911Z"
|
||||
},
|
||||
"https://fivefish.org/thm": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/6765?language=So%20Thavung)",
|
||||
"at": "2026-09-25T00:17:42.168Z"
|
||||
},
|
||||
"https://fivefish.org/npb": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/15137?language=Nupbikha)",
|
||||
"at": "2026-09-25T00:17:42.171Z"
|
||||
},
|
||||
"https://fivefish.org/phk": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/15621?language=Phake)",
|
||||
"at": "2026-09-25T00:17:42.243Z"
|
||||
},
|
||||
"https://fivefish.org/bfu": {
|
||||
"state": "verified",
|
||||
"detail": "HTTP 200 (via https://fivefish.org/2424?language=Gahri)",
|
||||
"at": "2026-09-25T00:17:42.259Z"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
768
public/doxa-maps/assets/tables/grn-index.json
generated
768
public/doxa-maps/assets/tables/grn-index.json
generated
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"source": "https://fivefish.org/<iso639-3> (5fish, Global Recordings Network)",
|
||||
"fetched": "2026-09-24",
|
||||
"fetched": "2026-09-25",
|
||||
"_note": "GRN gospel AUDIO, typed as Gospel audio and never as Scripture — \"Words of Life\" is gospel messages and Bible stories, not a translation of the canon. The host never 404s: a nonsense path returns a geo-located page with HTTP 200, so existence is read from the page title, with a negative and a positive control run in band every time. Their robots.txt asks for Crawl-delay: 10 and this fetcher obeys it, sequentially.",
|
||||
"codes": 660,
|
||||
"decidedNone": 707,
|
||||
"codes": 800,
|
||||
"decidedNone": 907,
|
||||
"byIso": {
|
||||
"mnp": {
|
||||
"u": "https://fivefish.org/mnp",
|
||||
|
|
@ -2644,6 +2644,566 @@
|
|||
"kfg": {
|
||||
"u": "https://fivefish.org/kfg",
|
||||
"n": "Kudiya"
|
||||
},
|
||||
"wli": {
|
||||
"u": "https://fivefish.org/wli",
|
||||
"n": "Waioli"
|
||||
},
|
||||
"iai": {
|
||||
"u": "https://fivefish.org/iai",
|
||||
"n": "Iai"
|
||||
},
|
||||
"bcg": {
|
||||
"u": "https://fivefish.org/bcg",
|
||||
"n": "Baga"
|
||||
},
|
||||
"bmd": {
|
||||
"u": "https://fivefish.org/bmd",
|
||||
"n": "Baga Manduri"
|
||||
},
|
||||
"isk": {
|
||||
"u": "https://fivefish.org/isk",
|
||||
"n": "Ishkashimi"
|
||||
},
|
||||
"kil": {
|
||||
"u": "https://fivefish.org/kil",
|
||||
"n": "Kariya"
|
||||
},
|
||||
"vkn": {
|
||||
"u": "https://fivefish.org/vkn",
|
||||
"n": "Koro: Adunu"
|
||||
},
|
||||
"lbu": {
|
||||
"u": "https://fivefish.org/lbu",
|
||||
"n": "Labo"
|
||||
},
|
||||
"svs": {
|
||||
"u": "https://fivefish.org/svs",
|
||||
"n": "Savosavo"
|
||||
},
|
||||
"jmb": {
|
||||
"u": "https://fivefish.org/jmb",
|
||||
"n": "Jimbin"
|
||||
},
|
||||
"can": {
|
||||
"u": "https://fivefish.org/can",
|
||||
"n": "Chambri"
|
||||
},
|
||||
"pwa": {
|
||||
"u": "https://fivefish.org/pwa",
|
||||
"n": "Pauaia"
|
||||
},
|
||||
"dor": {
|
||||
"u": "https://fivefish.org/dor",
|
||||
"n": "Dori'o"
|
||||
},
|
||||
"bqo": {
|
||||
"u": "https://fivefish.org/bqo",
|
||||
"n": "Balo"
|
||||
},
|
||||
"ksg": {
|
||||
"u": "https://fivefish.org/ksg",
|
||||
"n": "Kusaghe"
|
||||
},
|
||||
"bkk": {
|
||||
"u": "https://fivefish.org/bkk",
|
||||
"n": "Brokskat"
|
||||
},
|
||||
"tlx": {
|
||||
"u": "https://fivefish.org/tlx",
|
||||
"n": "Khehek"
|
||||
},
|
||||
"kku": {
|
||||
"u": "https://fivefish.org/kku",
|
||||
"n": "Kitimi"
|
||||
},
|
||||
"giw": {
|
||||
"u": "https://fivefish.org/giw",
|
||||
"n": "Galao, White"
|
||||
},
|
||||
"lle": {
|
||||
"u": "https://fivefish.org/lle",
|
||||
"n": "Lele"
|
||||
},
|
||||
"nke": {
|
||||
"u": "https://fivefish.org/nke",
|
||||
"n": "Duke"
|
||||
},
|
||||
"sax": {
|
||||
"u": "https://fivefish.org/sax",
|
||||
"n": "Sa"
|
||||
},
|
||||
"fir": {
|
||||
"u": "https://fivefish.org/fir",
|
||||
"n": "Kwakwi"
|
||||
},
|
||||
"zik": {
|
||||
"u": "https://fivefish.org/zik",
|
||||
"n": "Zimakani"
|
||||
},
|
||||
"aik": {
|
||||
"u": "https://fivefish.org/aik",
|
||||
"n": "Akye"
|
||||
},
|
||||
"kce": {
|
||||
"u": "https://fivefish.org/kce",
|
||||
"n": "Kaivi"
|
||||
},
|
||||
"kzz": {
|
||||
"u": "https://fivefish.org/kzz",
|
||||
"n": "Kalabara Group"
|
||||
},
|
||||
"dmr": {
|
||||
"u": "https://fivefish.org/dmr",
|
||||
"n": "Damar"
|
||||
},
|
||||
"kcx": {
|
||||
"u": "https://fivefish.org/kcx",
|
||||
"n": "Kachama-Ganjule: Ganta"
|
||||
},
|
||||
"dby": {
|
||||
"u": "https://fivefish.org/dby",
|
||||
"n": "Bainapi"
|
||||
},
|
||||
"knm": {
|
||||
"u": "https://fivefish.org/knm",
|
||||
"n": "Kanamarí"
|
||||
},
|
||||
"aio": {
|
||||
"u": "https://fivefish.org/aio",
|
||||
"n": "Aiton"
|
||||
},
|
||||
"ega": {
|
||||
"u": "https://fivefish.org/ega",
|
||||
"n": "Ega"
|
||||
},
|
||||
"mij": {
|
||||
"u": "https://fivefish.org/mij",
|
||||
"n": "Missong: Bejune"
|
||||
},
|
||||
"bya": {
|
||||
"u": "https://fivefish.org/bya",
|
||||
"n": "Batak"
|
||||
},
|
||||
"sdp": {
|
||||
"u": "https://fivefish.org/sdp",
|
||||
"n": "Sherdukpen"
|
||||
},
|
||||
"mqm": {
|
||||
"u": "https://fivefish.org/mqm",
|
||||
"n": "Marquesan, South"
|
||||
},
|
||||
"leq": {
|
||||
"u": "https://fivefish.org/leq",
|
||||
"n": "Lembena"
|
||||
},
|
||||
"kwe": {
|
||||
"u": "https://fivefish.org/kwe",
|
||||
"n": "Kwerba"
|
||||
},
|
||||
"xkk": {
|
||||
"u": "https://fivefish.org/xkk",
|
||||
"n": "Kachok"
|
||||
},
|
||||
"twp": {
|
||||
"u": "https://fivefish.org/twp",
|
||||
"n": "Londru"
|
||||
},
|
||||
"sde": {
|
||||
"u": "https://fivefish.org/sde",
|
||||
"n": "Surubu"
|
||||
},
|
||||
"apm": {
|
||||
"u": "https://fivefish.org/apm",
|
||||
"n": "Apache, Mescalero"
|
||||
},
|
||||
"tva": {
|
||||
"u": "https://fivefish.org/tva",
|
||||
"n": "Vaghua"
|
||||
},
|
||||
"kcs": {
|
||||
"u": "https://fivefish.org/kcs",
|
||||
"n": "Koenoem"
|
||||
},
|
||||
"kih": {
|
||||
"u": "https://fivefish.org/kih",
|
||||
"n": "Kilmeri"
|
||||
},
|
||||
"pkg": {
|
||||
"u": "https://fivefish.org/pkg",
|
||||
"n": "Pak"
|
||||
},
|
||||
"tsx": {
|
||||
"u": "https://fivefish.org/tsx",
|
||||
"n": "Mubami: Dausuami"
|
||||
},
|
||||
"aim": {
|
||||
"u": "https://fivefish.org/aim",
|
||||
"n": "Aimol"
|
||||
},
|
||||
"dia": {
|
||||
"u": "https://fivefish.org/dia",
|
||||
"n": "Alu"
|
||||
},
|
||||
"gar": {
|
||||
"u": "https://fivefish.org/gar",
|
||||
"n": "Garea & Gameta"
|
||||
},
|
||||
"sge": {
|
||||
"u": "https://fivefish.org/sge",
|
||||
"n": "Ga'ai"
|
||||
},
|
||||
"nps": {
|
||||
"u": "https://fivefish.org/nps",
|
||||
"n": "Nipsan"
|
||||
},
|
||||
"brp": {
|
||||
"u": "https://fivefish.org/brp",
|
||||
"n": "Barapasi"
|
||||
},
|
||||
"lgu": {
|
||||
"u": "https://fivefish.org/lgu",
|
||||
"n": "Longgu"
|
||||
},
|
||||
"bek": {
|
||||
"u": "https://fivefish.org/bek",
|
||||
"n": "Bebeli"
|
||||
},
|
||||
"elk": {
|
||||
"u": "https://fivefish.org/elk",
|
||||
"n": "Olko"
|
||||
},
|
||||
"sqq": {
|
||||
"u": "https://fivefish.org/sqq",
|
||||
"n": "Sou"
|
||||
},
|
||||
"nmo": {
|
||||
"u": "https://fivefish.org/nmo",
|
||||
"n": "Naga, Moyon"
|
||||
},
|
||||
"idi": {
|
||||
"u": "https://fivefish.org/idi",
|
||||
"n": "Idi"
|
||||
},
|
||||
"xkt": {
|
||||
"u": "https://fivefish.org/xkt",
|
||||
"n": "Kantosi"
|
||||
},
|
||||
"tqu": {
|
||||
"u": "https://fivefish.org/tqu",
|
||||
"n": "Baniata"
|
||||
},
|
||||
"ywa": {
|
||||
"u": "https://fivefish.org/ywa",
|
||||
"n": "Kalou"
|
||||
},
|
||||
"tbj": {
|
||||
"u": "https://fivefish.org/tbj",
|
||||
"n": "Dyaul"
|
||||
},
|
||||
"lvk": {
|
||||
"u": "https://fivefish.org/lvk",
|
||||
"n": "Lavukaleve"
|
||||
},
|
||||
"tmy": {
|
||||
"u": "https://fivefish.org/tmy",
|
||||
"n": "Tami"
|
||||
},
|
||||
"mbq": {
|
||||
"u": "https://fivefish.org/mbq",
|
||||
"n": "Maisin"
|
||||
},
|
||||
"bfh": {
|
||||
"u": "https://fivefish.org/bfh",
|
||||
"n": "West Morehead Group"
|
||||
},
|
||||
"erg": {
|
||||
"u": "https://fivefish.org/erg",
|
||||
"n": "Sie"
|
||||
},
|
||||
"brq": {
|
||||
"u": "https://fivefish.org/brq",
|
||||
"n": "Breri Group"
|
||||
},
|
||||
"bzq": {
|
||||
"u": "https://fivefish.org/bzq",
|
||||
"n": "Buli"
|
||||
},
|
||||
"gcn": {
|
||||
"u": "https://fivefish.org/gcn",
|
||||
"n": "Gaina"
|
||||
},
|
||||
"bye": {
|
||||
"u": "https://fivefish.org/bye",
|
||||
"n": "Bo'yei"
|
||||
},
|
||||
"amb": {
|
||||
"u": "https://fivefish.org/amb",
|
||||
"n": "Ambo"
|
||||
},
|
||||
"blq": {
|
||||
"u": "https://fivefish.org/blq",
|
||||
"n": "Paluai"
|
||||
},
|
||||
"bpv": {
|
||||
"u": "https://fivefish.org/bpv",
|
||||
"n": "Bian Group (2)"
|
||||
},
|
||||
"hoe": {
|
||||
"u": "https://fivefish.org/hoe",
|
||||
"n": "Horom"
|
||||
},
|
||||
"saa": {
|
||||
"u": "https://fivefish.org/saa",
|
||||
"n": "Saba"
|
||||
},
|
||||
"kwt": {
|
||||
"u": "https://fivefish.org/kwt",
|
||||
"n": "Aujefor & Mafena Mur"
|
||||
},
|
||||
"kjr": {
|
||||
"u": "https://fivefish.org/kjr",
|
||||
"n": "Famaij Group"
|
||||
},
|
||||
"mds": {
|
||||
"u": "https://fivefish.org/mds",
|
||||
"n": "Manubara"
|
||||
},
|
||||
"akt": {
|
||||
"u": "https://fivefish.org/akt",
|
||||
"n": "Akolet"
|
||||
},
|
||||
"gmb": {
|
||||
"u": "https://fivefish.org/gmb",
|
||||
"n": "Gula'alaa"
|
||||
},
|
||||
"byo": {
|
||||
"u": "https://fivefish.org/byo",
|
||||
"n": "Bio"
|
||||
},
|
||||
"npb": {
|
||||
"u": "https://fivefish.org/npb",
|
||||
"n": "Nupbikha"
|
||||
},
|
||||
"mtk": {
|
||||
"u": "https://fivefish.org/mtk",
|
||||
"n": "Banbalang"
|
||||
},
|
||||
"gnm": {
|
||||
"u": "https://fivefish.org/gnm",
|
||||
"n": "Ginuman"
|
||||
},
|
||||
"kkd": {
|
||||
"u": "https://fivefish.org/kkd",
|
||||
"n": "Kinugu"
|
||||
},
|
||||
"kbv": {
|
||||
"u": "https://fivefish.org/kbv",
|
||||
"n": "Dla"
|
||||
},
|
||||
"bxs": {
|
||||
"u": "https://fivefish.org/bxs",
|
||||
"n": "Busam"
|
||||
},
|
||||
"asy": {
|
||||
"u": "https://fivefish.org/asy",
|
||||
"n": "Asmat, Yaosakor"
|
||||
},
|
||||
"xky": {
|
||||
"u": "https://fivefish.org/xky",
|
||||
"n": "Uma' Lasan"
|
||||
},
|
||||
"nlu": {
|
||||
"u": "https://fivefish.org/nlu",
|
||||
"n": "Nchumbulu"
|
||||
},
|
||||
"gnu": {
|
||||
"u": "https://fivefish.org/gnu",
|
||||
"n": "Gnau"
|
||||
},
|
||||
"rhp": {
|
||||
"u": "https://fivefish.org/rhp",
|
||||
"n": "Yahang"
|
||||
},
|
||||
"kvm": {
|
||||
"u": "https://fivefish.org/kvm",
|
||||
"n": "Kendem"
|
||||
},
|
||||
"vls": {
|
||||
"u": "https://fivefish.org/vls",
|
||||
"n": "Flemish"
|
||||
},
|
||||
"anx": {
|
||||
"u": "https://fivefish.org/anx",
|
||||
"n": "Andra-Hus"
|
||||
},
|
||||
"bnw": {
|
||||
"u": "https://fivefish.org/bnw",
|
||||
"n": "Bisis"
|
||||
},
|
||||
"mdb": {
|
||||
"u": "https://fivefish.org/mdb",
|
||||
"n": "Morigi"
|
||||
},
|
||||
"pnu": {
|
||||
"u": "https://fivefish.org/pnu",
|
||||
"n": "Yao: Sanzi Jinxiuluoxiang"
|
||||
},
|
||||
"ayt": {
|
||||
"u": "https://fivefish.org/ayt",
|
||||
"n": "Ayta: Kadmang"
|
||||
},
|
||||
"fut": {
|
||||
"u": "https://fivefish.org/fut",
|
||||
"n": "Futuna-Aniwa"
|
||||
},
|
||||
"szv": {
|
||||
"u": "https://fivefish.org/szv",
|
||||
"n": "Bimbia"
|
||||
},
|
||||
"thm": {
|
||||
"u": "https://fivefish.org/thm",
|
||||
"n": "So Thavung"
|
||||
},
|
||||
"phk": {
|
||||
"u": "https://fivefish.org/phk",
|
||||
"n": "Phake"
|
||||
},
|
||||
"gbf": {
|
||||
"u": "https://fivefish.org/gbf",
|
||||
"n": "Gaikundi"
|
||||
},
|
||||
"bqs": {
|
||||
"u": "https://fivefish.org/bqs",
|
||||
"n": "Bosman"
|
||||
},
|
||||
"nmh": {
|
||||
"u": "https://fivefish.org/nmh",
|
||||
"n": "Monsang"
|
||||
},
|
||||
"sug": {
|
||||
"u": "https://fivefish.org/sug",
|
||||
"n": "Blimo"
|
||||
},
|
||||
"lek": {
|
||||
"u": "https://fivefish.org/lek",
|
||||
"n": "Leipon"
|
||||
},
|
||||
"bfu": {
|
||||
"u": "https://fivefish.org/bfu",
|
||||
"n": "Gahri"
|
||||
},
|
||||
"wbb": {
|
||||
"u": "https://fivefish.org/wbb",
|
||||
"n": "Wabo"
|
||||
},
|
||||
"cbg": {
|
||||
"u": "https://fivefish.org/cbg",
|
||||
"n": "Chimila"
|
||||
},
|
||||
"xra": {
|
||||
"u": "https://fivefish.org/xra",
|
||||
"n": "Kraho"
|
||||
},
|
||||
"lhp": {
|
||||
"u": "https://fivefish.org/lhp",
|
||||
"n": "Lhokpu"
|
||||
},
|
||||
"srl": {
|
||||
"u": "https://fivefish.org/srl",
|
||||
"n": "Isirawa"
|
||||
},
|
||||
"tow": {
|
||||
"u": "https://fivefish.org/tow",
|
||||
"n": "Towa"
|
||||
},
|
||||
"tcx": {
|
||||
"u": "https://fivefish.org/tcx",
|
||||
"n": "Toda"
|
||||
},
|
||||
"itr": {
|
||||
"u": "https://fivefish.org/itr",
|
||||
"n": "Agrame"
|
||||
},
|
||||
"kzq": {
|
||||
"u": "https://fivefish.org/kzq",
|
||||
"n": "Kaike"
|
||||
},
|
||||
"nuo": {
|
||||
"u": "https://fivefish.org/nuo",
|
||||
"n": "Nguon"
|
||||
},
|
||||
"jee": {
|
||||
"u": "https://fivefish.org/jee",
|
||||
"n": "Jerung"
|
||||
},
|
||||
"gak": {
|
||||
"u": "https://fivefish.org/gak",
|
||||
"n": "Gamkonora"
|
||||
},
|
||||
"yet": {
|
||||
"u": "https://fivefish.org/yet",
|
||||
"n": "Yetfa"
|
||||
},
|
||||
"aof": {
|
||||
"u": "https://fivefish.org/aof",
|
||||
"n": "Bragat"
|
||||
},
|
||||
"abo": {
|
||||
"u": "https://fivefish.org/abo",
|
||||
"n": "Abong"
|
||||
},
|
||||
"kic": {
|
||||
"u": "https://fivefish.org/kic",
|
||||
"n": "Kickapoo"
|
||||
},
|
||||
"wbk": {
|
||||
"u": "https://fivefish.org/wbk",
|
||||
"n": "Waygali"
|
||||
},
|
||||
"piv": {
|
||||
"u": "https://fivefish.org/piv",
|
||||
"n": "Pileni"
|
||||
},
|
||||
"bpa": {
|
||||
"u": "https://fivefish.org/bpa",
|
||||
"n": "Daakaka"
|
||||
},
|
||||
"gua": {
|
||||
"u": "https://fivefish.org/gua",
|
||||
"n": "Shiki: Gubi"
|
||||
},
|
||||
"moh": {
|
||||
"u": "https://fivefish.org/moh",
|
||||
"n": "Mohawk"
|
||||
},
|
||||
"sgy": {
|
||||
"u": "https://fivefish.org/sgy",
|
||||
"n": "Sanglechi"
|
||||
},
|
||||
"ilu": {
|
||||
"u": "https://fivefish.org/ilu",
|
||||
"n": "Wetar"
|
||||
},
|
||||
"ymb": {
|
||||
"u": "https://fivefish.org/ymb",
|
||||
"n": "Yambes"
|
||||
},
|
||||
"sbh": {
|
||||
"u": "https://fivefish.org/sbh",
|
||||
"n": "Sori"
|
||||
},
|
||||
"klx": {
|
||||
"u": "https://fivefish.org/klx",
|
||||
"n": "Ibawana/Kao Kao"
|
||||
},
|
||||
"mrm": {
|
||||
"u": "https://fivefish.org/mrm",
|
||||
"n": "Merlava"
|
||||
},
|
||||
"lsr": {
|
||||
"u": "https://fivefish.org/lsr",
|
||||
"n": "Lau Seranga"
|
||||
}
|
||||
},
|
||||
"none": [
|
||||
|
|
@ -3353,6 +3913,206 @@
|
|||
"opo",
|
||||
"weu",
|
||||
"bnb",
|
||||
"kqx"
|
||||
"kqx",
|
||||
"ahh",
|
||||
"bnd",
|
||||
"jeu",
|
||||
"bgl",
|
||||
"kig",
|
||||
"rkh",
|
||||
"bdj",
|
||||
"bxd",
|
||||
"pni",
|
||||
"ste",
|
||||
"ojv",
|
||||
"kts",
|
||||
"pla",
|
||||
"xhv",
|
||||
"awy",
|
||||
"nnf",
|
||||
"aew",
|
||||
"adu",
|
||||
"kbt",
|
||||
"bbh",
|
||||
"uan",
|
||||
"aih",
|
||||
"mpk",
|
||||
"urx",
|
||||
"mgn",
|
||||
"lka",
|
||||
"mzd",
|
||||
"rka",
|
||||
"ush",
|
||||
"kuv",
|
||||
"let",
|
||||
"sib",
|
||||
"kqg",
|
||||
"bay",
|
||||
"tzx",
|
||||
"kee",
|
||||
"klf",
|
||||
"sxg",
|
||||
"spb",
|
||||
"mpl",
|
||||
"kyi",
|
||||
"nct",
|
||||
"goq",
|
||||
"khv",
|
||||
"kqv",
|
||||
"low",
|
||||
"aup",
|
||||
"bes",
|
||||
"igm",
|
||||
"gwe",
|
||||
"blp",
|
||||
"glc",
|
||||
"ltu",
|
||||
"aod",
|
||||
"gwb",
|
||||
"imi",
|
||||
"bjs",
|
||||
"ssz",
|
||||
"qcy",
|
||||
"roc",
|
||||
"wuh",
|
||||
"zal",
|
||||
"kcy",
|
||||
"qfj",
|
||||
"xkn",
|
||||
"bzl",
|
||||
"kbk",
|
||||
"nbo",
|
||||
"sow",
|
||||
"hbu",
|
||||
"mvk",
|
||||
"sko",
|
||||
"dju",
|
||||
"nis",
|
||||
"fni",
|
||||
"biq",
|
||||
"qkm",
|
||||
"vkj",
|
||||
"van",
|
||||
"gei",
|
||||
"nib",
|
||||
"ngy",
|
||||
"zem",
|
||||
"kxr",
|
||||
"csw",
|
||||
"kkt",
|
||||
"ubi",
|
||||
"net",
|
||||
"vao",
|
||||
"zib",
|
||||
"woc",
|
||||
"kve",
|
||||
"pmo",
|
||||
"lcs",
|
||||
"mzu",
|
||||
"btc",
|
||||
"tuh",
|
||||
"don",
|
||||
"ttf",
|
||||
"hih",
|
||||
"mze",
|
||||
"rmp",
|
||||
"ali",
|
||||
"ybo",
|
||||
"igo",
|
||||
"pkp",
|
||||
"goi",
|
||||
"mwb",
|
||||
"bgu",
|
||||
"noh",
|
||||
"paq",
|
||||
"qcv",
|
||||
"ssj",
|
||||
"jia",
|
||||
"hkn",
|
||||
"lau",
|
||||
"nua",
|
||||
"gdo",
|
||||
"sob",
|
||||
"fam",
|
||||
"pnn",
|
||||
"zsu",
|
||||
"ago",
|
||||
"ped",
|
||||
"bpo",
|
||||
"bxz",
|
||||
"ley",
|
||||
"bgk",
|
||||
"mcy",
|
||||
"goe",
|
||||
"mdl",
|
||||
"mvr",
|
||||
"wll",
|
||||
"mxr",
|
||||
"skm",
|
||||
"kop",
|
||||
"awv",
|
||||
"loj",
|
||||
"mqp",
|
||||
"xkd",
|
||||
"ylu",
|
||||
"aku",
|
||||
"bup",
|
||||
"uve",
|
||||
"kjj",
|
||||
"brz",
|
||||
"mrv",
|
||||
"meb",
|
||||
"szp",
|
||||
"rmm",
|
||||
"aie",
|
||||
"mtv",
|
||||
"apo",
|
||||
"dba",
|
||||
"kmv",
|
||||
"njl",
|
||||
"zka",
|
||||
"bkf",
|
||||
"ymo",
|
||||
"dkk",
|
||||
"bzp",
|
||||
"buq",
|
||||
"koa",
|
||||
"skc",
|
||||
"ybm",
|
||||
"kqt",
|
||||
"nlz",
|
||||
"mwo",
|
||||
"mrb",
|
||||
"abw",
|
||||
"uge",
|
||||
"omo",
|
||||
"ukh",
|
||||
"pda",
|
||||
"mmi",
|
||||
"tqp",
|
||||
"anj",
|
||||
"afd",
|
||||
"btr",
|
||||
"qtp",
|
||||
"snz",
|
||||
"enr",
|
||||
"yir",
|
||||
"fwa",
|
||||
"bbx",
|
||||
"irx",
|
||||
"qmv",
|
||||
"hld",
|
||||
"ptv",
|
||||
"vko",
|
||||
"lgk",
|
||||
"jet",
|
||||
"ran",
|
||||
"aya",
|
||||
"boe",
|
||||
"kuo",
|
||||
"ykr",
|
||||
"xay",
|
||||
"asx",
|
||||
"emn"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
"honest_limit": "This is NOT the same as a national trade language. It finds languages widely used AMONG THE UNENGAGED GROUPS TRACKED HERE, and will MISS a lingua franca that no unengaged group claims as primary (e.g. Hindi in India). Named bridge_candidates, not trade_languages, for that reason.",
|
||||
"why_not_a_list": "No open machine-readable list of national trade languages was available; bridge candidates are derived from this corpus."
|
||||
},
|
||||
"resource_flags_refreshed": "2026-09-24",
|
||||
"resource_flags_refreshed": "2026-09-25",
|
||||
"resource_flags_source": "data/tables/people-group-pins.json. prevalence_rank, bridge_candidate, groups_speaking and full_bible are curated and untouched."
|
||||
},
|
||||
"columns": [
|
||||
|
|
@ -1664,7 +1664,7 @@
|
|||
"has_scripture": false,
|
||||
"full_bible": false,
|
||||
"has_film": false,
|
||||
"carries_resource": false,
|
||||
"carries_resource": true,
|
||||
"country_people_groups": 34
|
||||
},
|
||||
{
|
||||
|
|
@ -3854,7 +3854,7 @@
|
|||
"has_scripture": false,
|
||||
"full_bible": false,
|
||||
"has_film": false,
|
||||
"carries_resource": false,
|
||||
"carries_resource": true,
|
||||
"country_people_groups": 13
|
||||
},
|
||||
{
|
||||
|
|
@ -3944,7 +3944,7 @@
|
|||
"has_scripture": false,
|
||||
"full_bible": false,
|
||||
"has_film": false,
|
||||
"carries_resource": false,
|
||||
"carries_resource": true,
|
||||
"country_people_groups": 13
|
||||
},
|
||||
{
|
||||
|
|
@ -4049,7 +4049,7 @@
|
|||
"has_scripture": false,
|
||||
"full_bible": false,
|
||||
"has_film": false,
|
||||
"carries_resource": false,
|
||||
"carries_resource": true,
|
||||
"country_people_groups": 13
|
||||
},
|
||||
{
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -43,7 +43,7 @@
|
|||
"absence_meaning": "FALSE means NOT FOUND in the pools checked — never proof that no resource exists.",
|
||||
"unmatchable_note": "33 of 862 DX language codes are OUTSIDE the ISO 639-3 registry (31 private-use q*, almost all SIGN LANGUAGES). No pool can index those codes, so their resource status is UNRESOLVABLE BY JOIN — structurally false, not measured. Filter on code_unmatchable to separate them.",
|
||||
"boundary": "Resource availability only. No church, believer or meeting-point data.",
|
||||
"resource_flags_refreshed": "2026-09-24",
|
||||
"resource_flags_refreshed": "2026-09-25",
|
||||
"has_audio_note": "true where Faith Comes By Hearing publishes audio Scripture; \"unknown\" otherwise, never false. GRN is the other main audio pool and IS now searched, through their 5fish site, a batch at a time at the crawl delay they ask for — it appears as gospel audio rather than in this column, because Words of Life is gospel messages and Bible stories, not a translation.",
|
||||
"grn_note": "Global Recordings Network IS included, via their 5fish site, which resolves by ISO 639-3 and needs no API key — only the ten-second crawl delay their robots.txt asks for, so the sweep runs a batch at a time and part of the pool is still unread. It appears as gospel audio, never as Scripture: Words of Life is gospel messages and Bible stories, not a translation."
|
||||
},
|
||||
|
|
@ -11051,8 +11051,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11171,8 +11171,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11195,8 +11195,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11219,8 +11219,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11267,8 +11267,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11603,8 +11603,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11675,8 +11675,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -11915,8 +11915,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12011,8 +12011,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12155,8 +12155,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12179,8 +12179,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12371,8 +12371,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12491,8 +12491,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12707,8 +12707,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12731,8 +12731,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12779,8 +12779,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12899,8 +12899,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12947,8 +12947,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -12971,8 +12971,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -13019,8 +13019,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -13667,8 +13667,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
@ -14723,8 +14723,8 @@
|
|||
"has_audio": "unknown",
|
||||
"has_open_bible_stories": false,
|
||||
"obs_note": "",
|
||||
"no_resource_found": true,
|
||||
"any_resource_found": false,
|
||||
"no_resource_found": false,
|
||||
"any_resource_found": true,
|
||||
"scripture_url": "",
|
||||
"film_url": "",
|
||||
"code_unmatchable": false,
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
"meta": {
|
||||
"title": "Translation priority by country — can hear it, no text found",
|
||||
"source": "data/tables/translation-priority.json, itself built from the pin index — so this table, that one and the map cannot disagree.",
|
||||
"generated": "2026-09-24",
|
||||
"countries": 156,
|
||||
"groups": 2727,
|
||||
"people": 1330190929,
|
||||
"generated": "2026-09-25",
|
||||
"countries": 157,
|
||||
"groups": 2883,
|
||||
"people": 1330667764,
|
||||
"definition": "People groups with recorded audio, the JESUS Film, a Bible video or Words of Life in their language and NO text Scripture found in the pools checked, aggregated to the country a team would be sent to. \"Not found\" is a statement about those pools, never a claim that no text exists; the per-group table carries the checked and unchecked pools on every row.",
|
||||
"two_columns_note": "groups and languages answer different questions from people. Nigeria and the DRC lead on languages, which is the translation workload; China and Pakistan lead on population across far fewer languages. Neither is ranked for you."
|
||||
},
|
||||
|
|
@ -55,9 +55,9 @@
|
|||
{
|
||||
"country": "People's Republic of China",
|
||||
"iso3": "CHN",
|
||||
"groups": 183,
|
||||
"languages": 84,
|
||||
"people": 218370950,
|
||||
"groups": 187,
|
||||
"languages": 87,
|
||||
"people": 218380750,
|
||||
"largest_group": "Han Chinese, Wu",
|
||||
"largest_group_population": 92530000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -75,9 +75,9 @@
|
|||
{
|
||||
"country": "India",
|
||||
"iso3": "IND",
|
||||
"groups": 351,
|
||||
"languages": 109,
|
||||
"people": 165835830,
|
||||
"groups": 359,
|
||||
"languages": 117,
|
||||
"people": 165863330,
|
||||
"largest_group": "Bhil",
|
||||
"largest_group_population": 20480000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -105,9 +105,9 @@
|
|||
{
|
||||
"country": "Nigeria",
|
||||
"iso3": "NGA",
|
||||
"groups": 245,
|
||||
"languages": 240,
|
||||
"people": 54886725,
|
||||
"groups": 259,
|
||||
"languages": 254,
|
||||
"people": 54940525,
|
||||
"largest_group": "Tiv",
|
||||
"largest_group_population": 5220000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -155,9 +155,9 @@
|
|||
{
|
||||
"country": "Afghanistan",
|
||||
"iso3": "AFG",
|
||||
"groups": 25,
|
||||
"languages": 25,
|
||||
"people": 26159700,
|
||||
"groups": 28,
|
||||
"languages": 28,
|
||||
"people": 26167200,
|
||||
"largest_group": "Pashtun, Southern",
|
||||
"largest_group_population": 13680000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -185,9 +185,9 @@
|
|||
{
|
||||
"country": "Indonesia",
|
||||
"iso3": "IDN",
|
||||
"groups": 148,
|
||||
"languages": 129,
|
||||
"people": 23132670,
|
||||
"groups": 168,
|
||||
"languages": 147,
|
||||
"people": 23190470,
|
||||
"largest_group": "Betawi",
|
||||
"largest_group_population": 5620000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -205,9 +205,9 @@
|
|||
{
|
||||
"country": "Cameroon",
|
||||
"iso3": "CMR",
|
||||
"groups": 119,
|
||||
"languages": 112,
|
||||
"people": 18444325,
|
||||
"groups": 125,
|
||||
"languages": 118,
|
||||
"people": 18464725,
|
||||
"largest_group": "Cameroonian Creole",
|
||||
"largest_group_population": 4365000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -285,9 +285,9 @@
|
|||
{
|
||||
"country": "Cote d'Ivoire",
|
||||
"iso3": "CIV",
|
||||
"groups": 30,
|
||||
"languages": 30,
|
||||
"people": 8408700,
|
||||
"groups": 31,
|
||||
"languages": 31,
|
||||
"people": 8412800,
|
||||
"largest_group": "Maninka",
|
||||
"largest_group_population": 2535000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -295,9 +295,9 @@
|
|||
{
|
||||
"country": "Chad",
|
||||
"iso3": "TCD",
|
||||
"groups": 60,
|
||||
"languages": 44,
|
||||
"people": 8197850,
|
||||
"groups": 61,
|
||||
"languages": 45,
|
||||
"people": 8201150,
|
||||
"largest_group": "Kanembu",
|
||||
"largest_group_population": 1220000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -305,9 +305,9 @@
|
|||
{
|
||||
"country": "Ethiopia",
|
||||
"iso3": "ETH",
|
||||
"groups": 48,
|
||||
"languages": 38,
|
||||
"people": 7901000,
|
||||
"groups": 49,
|
||||
"languages": 39,
|
||||
"people": 7905200,
|
||||
"largest_group": "Gedeo",
|
||||
"largest_group_population": 1590000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -325,9 +325,9 @@
|
|||
{
|
||||
"country": "Philippines",
|
||||
"iso3": "PHL",
|
||||
"groups": 28,
|
||||
"languages": 27,
|
||||
"people": 6447000,
|
||||
"groups": 30,
|
||||
"languages": 29,
|
||||
"people": 6453700,
|
||||
"largest_group": "Magindanao",
|
||||
"largest_group_population": 1390000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -335,9 +335,9 @@
|
|||
{
|
||||
"country": "Guinea",
|
||||
"iso3": "GIN",
|
||||
"groups": 16,
|
||||
"languages": 13,
|
||||
"people": 5937700,
|
||||
"groups": 18,
|
||||
"languages": 15,
|
||||
"people": 5947500,
|
||||
"largest_group": "Maninka",
|
||||
"largest_group_population": 3855000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -385,9 +385,9 @@
|
|||
{
|
||||
"country": "Nepal",
|
||||
"iso3": "NPL",
|
||||
"groups": 49,
|
||||
"languages": 42,
|
||||
"people": 4333975,
|
||||
"groups": 51,
|
||||
"languages": 44,
|
||||
"people": 4338775,
|
||||
"largest_group": "Magar, Eastern",
|
||||
"largest_group_population": 610000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -425,9 +425,9 @@
|
|||
{
|
||||
"country": "United States of America",
|
||||
"iso3": "USA",
|
||||
"groups": 72,
|
||||
"languages": 69,
|
||||
"people": 3515375,
|
||||
"groups": 77,
|
||||
"languages": 74,
|
||||
"people": 3528975,
|
||||
"largest_group": "Armenian",
|
||||
"largest_group_population": 1180000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -475,13 +475,23 @@
|
|||
{
|
||||
"country": "Brazil",
|
||||
"iso3": "BRA",
|
||||
"groups": 13,
|
||||
"languages": 9,
|
||||
"people": 3040065,
|
||||
"groups": 16,
|
||||
"languages": 11,
|
||||
"people": 3046715,
|
||||
"largest_group": "Hunsrik",
|
||||
"largest_group_population": 2000000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Ghana",
|
||||
"iso3": "GHA",
|
||||
"groups": 21,
|
||||
"languages": 21,
|
||||
"people": 2910700,
|
||||
"largest_group": "Brong",
|
||||
"largest_group_population": 1765000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Bangladesh",
|
||||
"iso3": "BGD",
|
||||
|
|
@ -492,16 +502,6 @@
|
|||
"largest_group_population": 2080000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Ghana",
|
||||
"iso3": "GHA",
|
||||
"groups": 19,
|
||||
"languages": 19,
|
||||
"people": 2904100,
|
||||
"largest_group": "Brong",
|
||||
"largest_group_population": 1765000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Myanmar",
|
||||
"iso3": "MMR",
|
||||
|
|
@ -615,9 +615,9 @@
|
|||
{
|
||||
"country": "Lao People's Democratic Republic",
|
||||
"iso3": "LAO",
|
||||
"groups": 53,
|
||||
"languages": 28,
|
||||
"people": 2034425,
|
||||
"groups": 57,
|
||||
"languages": 32,
|
||||
"people": 2046225,
|
||||
"largest_group": "White Thai",
|
||||
"largest_group_population": 325000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -655,9 +655,9 @@
|
|||
{
|
||||
"country": "Malaysia",
|
||||
"iso3": "MYS",
|
||||
"groups": 25,
|
||||
"languages": 21,
|
||||
"people": 1870350,
|
||||
"groups": 26,
|
||||
"languages": 22,
|
||||
"people": 1873350,
|
||||
"largest_group": "Javanese",
|
||||
"largest_group_population": 728000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -672,6 +672,16 @@
|
|||
"largest_group_population": 1485000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Papua New Guinea",
|
||||
"iso3": "PNG",
|
||||
"groups": 144,
|
||||
"languages": 123,
|
||||
"people": 1653125,
|
||||
"largest_group": "Sinasina",
|
||||
"largest_group_population": 176000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Eritrea",
|
||||
"iso3": "ERI",
|
||||
|
|
@ -682,16 +692,6 @@
|
|||
"largest_group_population": 923000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Papua New Guinea",
|
||||
"iso3": "PNG",
|
||||
"groups": 90,
|
||||
"languages": 77,
|
||||
"people": 1503575,
|
||||
"largest_group": "Sinasina",
|
||||
"largest_group_population": 176000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Italy",
|
||||
"iso3": "ITA",
|
||||
|
|
@ -1052,6 +1052,16 @@
|
|||
"largest_group_population": 117000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Solomon Islands",
|
||||
"iso3": "SLB",
|
||||
"groups": 28,
|
||||
"languages": 27,
|
||||
"people": 269700,
|
||||
"largest_group": "Areare",
|
||||
"largest_group_population": 34500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Germany",
|
||||
"iso3": "DEU",
|
||||
|
|
@ -1062,16 +1072,6 @@
|
|||
"largest_group_population": 136000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Solomon Islands",
|
||||
"iso3": "SLB",
|
||||
"groups": 18,
|
||||
"languages": 17,
|
||||
"people": 231500,
|
||||
"largest_group": "Areare",
|
||||
"largest_group_population": 34500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "LBN",
|
||||
"iso3": "LBN",
|
||||
|
|
@ -1105,9 +1105,9 @@
|
|||
{
|
||||
"country": "French Polynesia",
|
||||
"iso3": "PYF",
|
||||
"groups": 3,
|
||||
"languages": 3,
|
||||
"people": 189200,
|
||||
"groups": 4,
|
||||
"languages": 4,
|
||||
"people": 193200,
|
||||
"largest_group": "Tahitian",
|
||||
"largest_group_population": 181000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -1122,6 +1122,16 @@
|
|||
"largest_group_population": 73500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Bhutan",
|
||||
"iso3": "BTN",
|
||||
"groups": 11,
|
||||
"languages": 11,
|
||||
"people": 180300,
|
||||
"largest_group": "Kheng",
|
||||
"largest_group_population": 66000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Georgia",
|
||||
"iso3": "GEO",
|
||||
|
|
@ -1132,16 +1142,6 @@
|
|||
"largest_group_population": 177000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Bhutan",
|
||||
"iso3": "BTN",
|
||||
"groups": 9,
|
||||
"languages": 9,
|
||||
"people": 174700,
|
||||
"largest_group": "Kheng",
|
||||
"largest_group_population": 66000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Djibouti",
|
||||
"iso3": "DJI",
|
||||
|
|
@ -1172,6 +1172,16 @@
|
|||
"largest_group_population": 140000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Vanuatu",
|
||||
"iso3": "VUT",
|
||||
"groups": 18,
|
||||
"languages": 17,
|
||||
"people": 129535,
|
||||
"largest_group": "Lenakel Tannese",
|
||||
"largest_group_population": 21500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Azerbaijan",
|
||||
"iso3": "AZE",
|
||||
|
|
@ -1192,16 +1202,6 @@
|
|||
"largest_group_population": 75500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Vanuatu",
|
||||
"iso3": "VUT",
|
||||
"groups": 12,
|
||||
"languages": 12,
|
||||
"people": 114600,
|
||||
"largest_group": "Lenakel Tannese",
|
||||
"largest_group_population": 21500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Fiji",
|
||||
"iso3": "FJI",
|
||||
|
|
@ -1225,9 +1225,9 @@
|
|||
{
|
||||
"country": "Colombia",
|
||||
"iso3": "COL",
|
||||
"groups": 4,
|
||||
"languages": 4,
|
||||
"people": 66000,
|
||||
"groups": 5,
|
||||
"languages": 5,
|
||||
"people": 68500,
|
||||
"largest_group": "Embera, Baudo",
|
||||
"largest_group_population": 30500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -1285,9 +1285,9 @@
|
|||
{
|
||||
"country": "Tajikistan",
|
||||
"iso3": "TJK",
|
||||
"groups": 4,
|
||||
"languages": 4,
|
||||
"people": 47300,
|
||||
"groups": 5,
|
||||
"languages": 5,
|
||||
"people": 49200,
|
||||
"largest_group": "Yagnobi",
|
||||
"largest_group_population": 20000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
|
|
@ -1302,6 +1302,16 @@
|
|||
"largest_group_population": 22000,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "New Caledonia",
|
||||
"iso3": "NCL",
|
||||
"groups": 7,
|
||||
"languages": 5,
|
||||
"people": 45625,
|
||||
"largest_group": "Lifuan",
|
||||
"largest_group_population": 15500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Greenland",
|
||||
"iso3": "GRL",
|
||||
|
|
@ -1342,16 +1352,6 @@
|
|||
"largest_group_population": 41500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "New Caledonia",
|
||||
"iso3": "NCL",
|
||||
"groups": 6,
|
||||
"languages": 4,
|
||||
"people": 40725,
|
||||
"largest_group": "Lifuan",
|
||||
"largest_group_population": 15500,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Liechtenstein",
|
||||
"iso3": "LIE",
|
||||
|
|
@ -1522,6 +1522,16 @@
|
|||
"largest_group_population": 5900,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "Cambodia",
|
||||
"iso3": "KHM",
|
||||
"groups": 1,
|
||||
"languages": 1,
|
||||
"people": 3900,
|
||||
"largest_group": "Kachok",
|
||||
"largest_group_population": 3900,
|
||||
"basis": "no text Scripture found in the pools checked"
|
||||
},
|
||||
{
|
||||
"country": "KGZ",
|
||||
"iso3": "KGZ",
|
||||
|
|
|
|||
2192
public/doxa-maps/assets/tables/translation-priority.json
generated
2192
public/doxa-maps/assets/tables/translation-priority.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
2
public/doxa-maps/index.html
generated
2
public/doxa-maps/index.html
generated
File diff suppressed because one or more lines are too long
12
public/doxa-maps/manifest.json
generated
12
public/doxa-maps/manifest.json
generated
|
|
@ -596,7 +596,7 @@
|
|||
"bundle": "gospel-resources",
|
||||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"output": "doxa-maps/gospel-resources/gospel-resources.js",
|
||||
"integrity": "sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06",
|
||||
"integrity": "sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji",
|
||||
"elements": [
|
||||
"gospel-resources-map"
|
||||
],
|
||||
|
|
@ -616,7 +616,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/charts/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -630,7 +630,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -644,7 +644,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/gospel-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -658,7 +658,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -672,7 +672,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-ZWZimy8hrM+ie5xCmAKNORI3aiua3aGfVxgz4vlFfwDsRR5Ubcd6xXgx2Kj32j06\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-oU4fzyqGLWRJYxs1661RlfrUImIDaImMQ83esQj3DKJGjLfN8u78LlXSJpLzurji\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in a new issue