doxa-maps/plugin-designs/gospel-resources/scripts
Doxa Maps c790b39840 Every shipped link has evidence, and 1,412 of them did not
Three findings, one thread: rule 4 says verify a URL before shipping it, and the
check I wrote for it yesterday was measuring one file.

1. THE TABLES PAGE WAS SHIPPING DEAD FORM. people-group-resources.json — the
"Resources by People Group" tab, which a reader clicks — carried 2,294 URL cells, of
which 1,412 were jesusfilm.org/watch/?languageId=<id>. That form is IGNORED by the
site: a real id and a bogus one render the same generic library page, which is why
the map migrated onto Arclight shareUrls. The migration never reached this table, so
the booleans beside those links were being refreshed while the links themselves went
stale for a year of builds. 1,417 film and 882 scripture URLs re-derived from the
index, which is authoritative for both and whose URLs are the verified ones.

2. TWO ARCLIGHT LANGUAGES, ONE ISO CODE — resolved, with evidence rather than a
ruling. jos was SKIPPED here, and the note said resolving it meant deciding whether
the code or the publisher's name was authoritative, "a data question for someone who
can check it". Checked: media-languages?iso3=jos returns 7138 "Jordanian Sign
Language" and 139080 "Lebanese Sign Language", and 7138's shareUrl redirects to
.../jordanian-sign-language.html while a bogus arc.gt code 404s. So the code stays
authoritative for the join and the NAME breaks the tie the code cannot. The old note
also had a fact wrong — it called Lebanese "a different language (lbs)", but lbs is
LIBYAN Sign Language and Lebanese has no code of its own, so this is two Levantine
varieties sharing one code, not a mis-filing. Three Deaf groups now reach the JESUS
Film in their own sign language through a link that resolves; 0 retired-form links
remain in the index.

3. THE GATE'S SCOPE WAS THE BUG. It walked the pin index alone, which is how item 1
hid from it. It now reads every table the SURFACES read, taken from the surfaces, and
resolves each URL against four records: the verification table, the org contacts, the
SUN pages (proved by content against a catch-all control) and doxa.life's own listing
for prayer pages, which cannot be proved by fetch because pray.doxa.life answers 200
for any slug. Provenance fields are excluded by path — a citation is not an offer.
8,445 links measured yesterday; 12,292 shipped links today, 0 unrecorded, 0 broken,
0 that no status code can prove.

Reading every STAGED file instead reported 6,115 unrecorded and 53 broken, all of
them correct behaviour: API endpoints in source fields, and build caches that still
hold the 53 share URLs the verifier proved dead — which is exactly why the pin
builder drops them. A gate that goes red on correct behaviour gets switched off.
2026-09-27 01:26:50 +00:00
..
_snapshot-guard.mjs A half-finished catalogue fetch can no longer overwrite a good one 2026-09-24 11:59:48 +00:00
build-country-gap-table.mjs Finish the GRN sweep: every reachable pool has now been checked 2026-09-25 02:44:37 +00:00
build-deaf-gap-table.mjs Tell the curated tables that GRN and Scripture Earth exist 2026-09-24 22:15:53 +00:00
build-doxa-gospel-access.mjs Gospel access: export the bridge's training, and stop offering Deaf groups a spoken one 2026-09-26 02:13:26 +00:00
build-gospel-by-province.mjs Publish which province each group falls in 2026-09-27 01:26:31 +00:00
build-gospel-gaps-table.mjs Export which kind of gap each row is, and make both surfaces agree 2026-09-25 00:22:11 +00:00
build-people-group-pins.mjs Name the translator, and let a mobiliser write to them 2026-09-26 07:43:58 +00:00
build-resource-links-table.mjs Stop the tables saying GRN is missing and miscounting their own rows 2026-09-24 22:46:16 +00:00
build-translation-priority-by-country.mjs Rank the translation priority by the place a team is sent 2026-09-24 22:29:38 +00:00
build-translation-priority-table.mjs Make the translation-priority list a table you can export 2026-09-24 21:14:21 +00:00
enrich-resources-list.mjs Stop claiming Scripture in a language recorded as "Undetermined" 2026-09-24 05:22:59 +00:00
fetch-arclight-index.mjs A half-finished catalogue fetch can no longer overwrite a good one 2026-09-24 11:59:48 +00:00
fetch-arclight-share-urls.mjs Every shipped link has evidence, and 1,412 of them did not 2026-09-27 01:26:50 +00:00
fetch-country-languages.mjs Guard the last three catalogue snapshots against a bad network day 2026-09-26 07:56:31 +00:00
fetch-door43-index.mjs A half-finished catalogue fetch can no longer overwrite a good one 2026-09-24 11:59:48 +00:00
fetch-doxa-detail.mjs All 2,107 of Doxa's groups, placed and searchable, from Doxa's own record 2026-09-25 05:35:11 +00:00
fetch-doxa-people-groups.mjs All 2,107 of Doxa's groups, placed and searchable, from Doxa's own record 2026-09-25 05:35:11 +00:00
fetch-ebible-credits.mjs Guard the last three catalogue snapshots against a bad network day 2026-09-26 07:56:31 +00:00
fetch-ebible-index.mjs A half-finished catalogue fetch can no longer overwrite a good one 2026-09-24 11:59:48 +00:00
fetch-fcbh-index.mjs A half-finished catalogue fetch can no longer overwrite a good one 2026-09-24 11:59:48 +00:00
fetch-godtools-index.mjs Gospel presentations in 94 languages, from Cru's API rather than its parked domain 2026-09-24 13:51:56 +00:00
fetch-grn-index.mjs The GRN sweep was defaulting to "none", not measuring it 2026-09-25 05:42:16 +00:00
fetch-iso-macrolanguages.mjs The two largest gaps on this map were Chinese varieties of a resourced language 2026-09-24 12:44:24 +00:00
fetch-pray-index.mjs The map said "someone still needs prayer" and gave you no way to pray 2026-09-24 16:06:01 +00:00
fetch-scriptureearth-index.mjs Add Scripture Earth, and lift 28 groups off "nothing found" 2026-09-24 17:46:27 +00:00
fetch-sun-deaf-index.mjs Guard the last three catalogue snapshots against a bad network day 2026-09-26 07:56:31 +00:00
fetch-zume-index.mjs A half-finished catalogue fetch can no longer overwrite a good one 2026-09-24 11:59:48 +00:00
refresh-country-bands.mjs Give the country sheet back the number its own footnote depends on 2026-09-25 03:19:00 +00:00
refresh-legacy-resource-flags.mjs Every shipped link has evidence, and 1,412 of them did not 2026-09-27 01:26:50 +00:00
verify-gospel-click-sheet.mjs The click-sheet verifier had not run in months, and was aimed at the wrong files 2026-09-25 03:33:31 +00:00
verify-gospel-links.mjs Finish the GRN sweep: every reachable pool has now been checked 2026-09-25 02:44:37 +00:00
verify-translator-org-links.mjs Name the translator, and let a mobiliser write to them 2026-09-26 07:43:58 +00:00