doxa-maps/library/scripts/posters/series.json
Doxa Maps 9d1d1aa272 The series is the UPG100 List, one term: the posters' series line and side box ('What is a UPG100 List?'), and the packet's series line and funnel, x11
series.json upg100: seriesName 'UPG100 List', sideBoxHeading 'What is a UPG100 List?', label 'UPG100 — …'.
packet-strings: every 'UPG 100' / 'UPG-100' in the four strings that name the series, in all 11 languages
(map_page_series, funnel_kicker, funnel_packets, funnel_tip; 44 values). The structure gate's literals follow.
2026-10-02 21:35:04 +00:00

192 lines
12 KiB
JSON

{
"_meta": {
"purpose": "What differs BETWEEN poster/packet series. One entry per series; SERIES=<id> selects it.",
"why": [
"The country posters shipped rendering the UPG-100 packet's framing: the 'UNENGAGED PEOPLE",
"GROUPS' kicker, 'This packet is 1 of {n} UPG-100 lists', the UPG-100 narrowing funnel, and a",
"below-map block telling the reader to divide the set among thirty disciples. Coherent for ~30",
"UPG-100 zones; incoherent for ~170 countries.",
"There was no series parameter anywhere: packet.mjs and packet-render.js knew only one series,",
"so 'the packet' and 'the UPG-100 packet' were the same thing and nothing could disagree.",
"",
"ONE mechanism for BOTH surfaces: packet.mjs AND generate.mjs read this",
"file, because the leak was in two independent places -- the packet strings and the poster's",
"own furniture (generate.mjs NETWORKS), which is not a packet string at all. Fixing only the",
"first would have left 'Thirty disciples' printing on every country poster."
],
"default": "upg100 -- absent or unknown SERIES resolves to upg100, so existing runs are unchanged.",
"keys": {
"label": "human name, for logs and error messages",
"dataDir": "repo-relative folder holding clusters.json and the selector/normalize/legend modules",
"funnel": "false DROPS the narrowing-funnel page entirely (it is a UPG-100 argument)",
"strings": "overrides merged OVER packet-strings.json's <locale> block, per key",
"networks": "the three below-map blocks generate.mjs prints; ENGLISH ONLY -- see note",
"poster": "the page-1 poster HEADER wording; ENGLISH ONLY, same reason as networks",
"countryMode": "true selects the COUNTRIES zone source (one sheet per country)"
},
"poster_keys": {
"kicker": "the small line above the title (generate.mjs:2426)",
"titleQualifier": "the coloured words before the region name, e.g. 'Unengaged of' (:2427)",
"seriesName": "the name in quotes on the Series line and in the side box (:1877, :1907, :2115)",
"sideBoxHeading": "the right-hand explainer's heading (:2097)",
"sideBoxBody": "that explainer's first paragraph (:2115)"
},
"one_switch": [
"SERIES is the ONE switch (2026-09-28). SERIES=country implies the country zone",
"source, the country series name and the country header strings. COUNTRIES=1 is kept as an",
"ALIAS that sets SERIES=country, so runs that predate this file keep working AND now get the",
"matching packet. Two parameters for one concept is what let a country render take the new",
"packet path while its header stayed UPG-100."
],
"english_only_note": [
"`networks` is English-only ON PURPOSE, not an oversight. generate.mjs performs no localization",
"at all: measured zero occurrences of PACKET_LANG, packet-strings or i18n in the file, and its",
"1,728 non-ASCII characters are entirely typographic (box-drawing, em-dashes, middots) with no",
"CJK, Arabic, Cyrillic or Devanagari -- so no translated string has ever been in it",
"(verified independently, 2026-09-28). The poster surface is English end to",
"end; `strings` below is the half that carries 11 locales."
],
"translation_status": [
"The `country` English below is a DRAFT, provisional, pending a product decision -- see",
"_draft_pending_decision on that entry. NO translations are to be made from it: a",
"paraphrase multiplied by 11 locales is 11 wrong strings. Once the English is approved, the",
"strings go to a HUMAN translator, which is this file's established practice --",
"all 11 locales of packet-strings.json carry real translations, never English echoes."
]
},
"upg100": {
"label": "UPG100 — unengaged people groups, ~30 zoned lists",
"dataDir": "plugin-designs/my-upg-100-list/data",
"countryMode": false,
"funnel": true,
"strings": {},
"poster": {
"kicker": "Unengaged People Groups",
"titleQualifier": "Unengaged of",
"seriesName": "UPG100 List",
"sideBoxHeading": "What is a UPG100 List?",
"sideBoxBody": "This map is one of a {approxLists}-map set called the {seriesName} — a large, overwhelming target in the thousands, organised into clear groupings and displayed on maps and prayer lists.",
"headColumns": true
},
"networks": [
["1 · Thirty disciples.",
"Each follower of Jesus takes their own map and prayer list, and sets apart a place to pray — some have hung a people-group map over their bed."],
["2 · Thirty churches.",
"Each church dedicates a wall in one of its places of prayer, and keeps copies of the prayer list available for distribution."],
["3 · Thirty indigenous leaders.",
"Find leaders on the ground in these areas and give them the map and prayer list, to raise awareness of their unengaged neighbours."]
]
},
"country": {
"label": "Country — one poster per country, ~170 of them",
"dataDir": "plugin-designs/my-upg-100-list/data",
"countryMode": true,
"funnel": false,
"poster": {
"kicker": "Unreached People Groups",
"titleQualifier": "Pray for",
"seriesName": "Country Maps",
"sideBoxHeading": "What is a Country Prayer Map?",
"sideBoxBody": "This map is one of a {approxLists}-map set called the {seriesName} — one sheet for each country, naming the unreached people groups who live there so a reader can pray for them by name."
},
"_poster_why": [
"THE FOURTH LEAK SITE, found by reading the rendered page rather than a checker's verdict:",
"a SERIES=country poster still printed 'UNENGAGED PEOPLE GROUPS', 'Unengaged of West Africa',",
"'Series: List of 100 UPG's · map 11 of 28' and a side box calling it 'one of a 30-map set",
"called the List of 100 UPG's'. check:series-isolation passed because its vocabulary was a",
"HAND LIST of the phrases already found -- a PASS from it was only ever a lower bound.",
"seriesName 'Country Maps' is the series' agreed name, recorded in a generate.mjs comment",
"dated 2026-08-01, which also made the series name a parameterized field. The kicker says UNREACHED rather",
"than UNENGAGED because a country sheet lists the unreached groups living there, which is a",
"wider set than the unengaged -- see _draft_pending_decision; this wording is part of that draft."
],
"_funnel_why": [
"The funnel narrows every people group on earth down to THIS UPG-100 list (Project 2000/7000/",
"4700/700). That argument does not describe a country poster, and a page of true numbers about",
"the wrong thing is worse than no page. Dropped for country, 2026-09-28.",
"Dropping it also removes 12 of the 17 series-specific keys from the translation bill: a page",
"that does not render needs no locales."
],
"_draft_pending_decision": [
"THE ENGLISH BELOW IS A DRAFT, NOT APPROVED: provisional, pending a product decision on how",
"the three blocks should print. Do not translate, print at scale, or quote as final",
"until that lands; replace this key with the approved text when it does."
],
"strings": {
"map_page_kicker": "PRAY FOR THIS COUNTRY",
"map_page_sub": "A prayer list of {count} unreached people groups who live here",
"points_intro": "One hour with God, five minutes each. Pray these twelve for the peoples of this country.",
"christian_lede": "This is the same grid — one human life in weeks. Now each box is a share of the people in this country. The shaded boxes are the evangelical share of their population; the rest are waiting."
},
"_strings_why": [
"FOUR keys, not seventeen. Judged by what each string SAYS rather than by matching UPG-100",
"vocabulary: 12 of the 17 are funnel_* keys and drop with the page above; `points` -- the 12",
"prayer points -- is INVARIANT, because those points are about a PEOPLE and a country poster is",
"still praying for the peoples within it; only its framing sentence (points_intro) names the",
"packet. christian_lede is ADAPTED, not replaced: the % Christian vs lost page is just as",
"meaningful for a country, so only 'the people in this list' is reworded.",
"Everything not listed here -- pray_blessed / pray_know / pray_do, the rhythms, the wheel, the",
"list header -- is series-invariant and inherited unchanged."
],
"networks": [
["1 · Disciples.",
"Ask a disciple which country God has put on their heart, then give them that country's poster to print and prepare."],
["2 · Churches.",
"List the churches you know and ask each the same question, so every church has a poster to pray over together."],
["3 · Indigenous leaders.",
"Ask which leaders you know who live in one of these countries, and give them their own country's map to pray for it specifically."]
],
"_networks_why": [
"NOT a find-and-replace of thirty with a hundred and seventy. 'Divide the set among thirty",
"disciples' is coherent at 30 and incoherent at ~170 (172 countries + China + India, per",
"emit-countries.mjs), so the SHAPE was replaced: not 'split the set' but 'ask which one,",
"then give them that poster'. The numbers are gone from the headings for the same reason."
]
},
"indiaState": {
"label": "India states and union territories — one poster for each of the 34 with people groups listed",
"dataDir": "plugin-designs/my-upg-100-list/data",
"countryMode": true,
"funnel": false,
"poster": {
"kicker": "Unreached People Groups",
"titleQualifier": "Pray for",
"seriesName": "India State Maps",
"sideBoxHeading": "What is a State Prayer Map?",
"sideBoxBody": "This map is one of a {approxLists}-map set called the {seriesName} — one sheet for each state and union territory of India, naming the unreached people groups who live there so a reader can pray for them by name."
},
"_poster_why": [
"A state poster is a country poster one level down: the Country Posters wall prints one for each of India's",
"states and union territories that has people groups listed (34 of 36; data/people-groups/india-states.json).",
"The country series' text cannot be reused: it would call Gujarāt's poster one of the ~170 'Country Maps',",
"one sheet for each country. The term is 'state and union territory', never 'province'. This is the default",
"wording and stays editable; a change is a strings-only follow-up."
],
"strings": {
"map_page_kicker": "PRAY FOR THIS STATE",
"map_page_sub": "A prayer list of {count} unreached people groups who live here",
"points_intro": "One hour with God, five minutes each. Pray these twelve for the peoples of this state.",
"christian_lede": "This is the same grid — one human life in weeks. Now each box is a share of the people in this state. The shaded boxes are the evangelical share of their population; the rest are waiting."
},
"_strings_why": [
"The country series' four keys with 'country' read as 'state'. Used by the Node generator; the browser",
"packet reads the localized packet-strings.json, which is series-invariant."
],
"networks": [
[
"1 · Disciples.",
"Ask a disciple which state God has put on their heart, then give them that state's poster to print and prepare."
],
[
"2 · Churches.",
"List the churches you know and ask each the same question, so every church has a poster to pray over together."
],
[
"3 · Indigenous leaders.",
"Ask which leaders you know who live in one of these states, and give them their own state's map to pray for it specifically."
]
]
}
}