From b3daa34ab10e0a58725a33bca52abae9d811af42 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Fri, 2 Oct 2026 08:51:19 +0000 Subject: [PATCH] P2 (2/2): five more lines without "design note" as a person, in the UPG-100 data scripts clusters.json (one decision_pending value; the field is not in the built tree), retag-adm1.mjs (a comment and a console message), search-index.js and uncovered-proof.mjs (comments) state the reason without a persona. derive-city-candidates.mjs's safety_note no longer repeats "separate". --- library/scripts/research/derive-city-candidates.mjs | 2 +- plugin-designs/my-upg-100-list/data/clusters.json | 2 +- plugin-designs/my-upg-100-list/data/retag-adm1.mjs | 4 ++-- plugin-designs/my-upg-100-list/data/search-index.js | 2 +- plugin-designs/my-upg-100-list/data/uncovered-proof.mjs | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/library/scripts/research/derive-city-candidates.mjs b/library/scripts/research/derive-city-candidates.mjs index dfa3a9c42..028375939 100644 --- a/library/scripts/research/derive-city-candidates.mjs +++ b/library/scripts/research/derive-city-candidates.mjs @@ -122,7 +122,7 @@ const stats = { internet_researched: clusters.filter((c) => c.internet_access !== 'unknown').length, generated: '2026-08-01', scope_note: 'Scope is the full 2,106-record DX people-group corpus. No separate "2000 list" artefact exists on disk — verified by search — so this corpus IS the scope.', - safety_note: 'Contains NO gospel-resource, church or believer field, and must not gain one. That join is held pending a separate architecture (separate store, never joined to UPG locations in a public artifact).', + safety_note: 'Contains NO gospel-resource, church or believer field, and must not gain one. That join is held pending its own architecture (separate store, never joined to UPG locations in a public artifact).', }; if (!existsSync(OUT)) mkdirSync(OUT, { recursive: true }); diff --git a/plugin-designs/my-upg-100-list/data/clusters.json b/plugin-designs/my-upg-100-list/data/clusters.json index dcfba44ad..cb07a68e8 100644 --- a/plugin-designs/my-upg-100-list/data/clusters.json +++ b/plugin-designs/my-upg-100-list/data/clusters.json @@ -1626,7 +1626,7 @@ "uncovered_scatter": { "n_a_region_total": 19, "null_region_total": 3, - "decision_pending": "fold into nearest geographic neighbour OR create a 'Diaspora and Micro-territories' list. design note decides." + "decision_pending": "fold into nearest geographic neighbour OR create a 'Diaspora and Micro-territories' list. The product decision is open." }, "asia_solved_validation": "2026-06-06 — pg_slugs predicate exact-count for all 12 Asia lists against live 2106-row source; 0 cross-country leaks", "uncovered_lists": [ diff --git a/plugin-designs/my-upg-100-list/data/retag-adm1.mjs b/plugin-designs/my-upg-100-list/data/retag-adm1.mjs index f377c1360..349da54c3 100644 --- a/plugin-designs/my-upg-100-list/data/retag-adm1.mjs +++ b/plugin-designs/my-upg-100-list/data/retag-adm1.mjs @@ -21,7 +21,7 @@ // So we re-tag `listId` and nothing else. // // R-D2: a feature whose shapeName matches NO cluster must be 0. If any appear we -// LOG loudly, LEAVE the old tag (do not drop), and flag for the design note — never +// LOG loudly, LEAVE the old tag (do not drop), and flag for a product decision — never // silently mis-tag. // R-D3: stable canonical writer — match the existing on-disk style EXACTLY // (single-line minified JSON, no trailing newline) so the diff is the listId @@ -95,7 +95,7 @@ function report(r) { } } if (r.unmatched.length) { - console.log(` *** UNMATCHED (R-D2: should be 0 — LEFT old tag, FLAGGED for design note) ***`); + console.log(` *** UNMATCHED (R-D2: should be 0 — LEFT old tag, FLAGGED for review) ***`); for (const u of r.unmatched) { console.log(` !!! ${u.shapeName.padEnd(42)} kept old listId=${u.keptOld}`); } diff --git a/plugin-designs/my-upg-100-list/data/search-index.js b/plugin-designs/my-upg-100-list/data/search-index.js index f4cbb0ef3..9377e7e7f 100644 --- a/plugin-designs/my-upg-100-list/data/search-index.js +++ b/plugin-designs/my-upg-100-list/data/search-index.js @@ -111,7 +111,7 @@ export function buildSearchIndex(opts = {}) { // ── (3b) Territories — ADM0 countries (by ISO3 → display name) ────────────── // The tapestry ADM0 features carry ONLY props.iso3, so target.shapeName holds // the ISO3 and the fly-to predicate matches f.properties.iso3. The LABEL is the - // human name (live countryNameMap preferred, ISO3_NAME fallback) so a design note + // human name (live countryNameMap preferred, ISO3_NAME fallback) so a reader // typing "Nepal" finds NPL. De-dup: a name already covered as an ADM1 admin // (none collide today, but guard anyway) isn't re-added. const nameMap = countryNameMap || iso3Names; diff --git a/plugin-designs/my-upg-100-list/data/uncovered-proof.mjs b/plugin-designs/my-upg-100-list/data/uncovered-proof.mjs index a3c911d17..ef623f27f 100644 --- a/plugin-designs/my-upg-100-list/data/uncovered-proof.mjs +++ b/plugin-designs/my-upg-100-list/data/uncovered-proof.mjs @@ -53,7 +53,7 @@ const PLAIN_CACHE = '/tmp/upg-live-records.json'; // Swap-back baseline: dropping `uncovered_lists` and re-serialising must reproduce // the rest of clusters.json byte-for-byte — proving the 7 uncovered zones are the // ONLY thing this proof's edits touch. 09b-asia-contiguity-v2 re-cut `asia_lists` -// (the sanctioned design note re-partition: IN-A/B/C/D + NAS-B), so the baseline rolls +// (the sanctioned re-partition: IN-A/B/C/D + NAS-B), so the baseline rolls // from the pre-09b-5 snapshot (3aa10103, OLD India zones) to the post-v2 value // below. The uncovered_lists themselves are unchanged (nepal:34, himalaya:15, // sa-west:43, central-asia:6, mongolia:3, japan:6, scatter:8) — verified by the