Regions: delete a dead prop, after auditing what the probes can actually prove

The source change is small: countryName was declared on UupgsList and
passed by region-dashboards but never read — residue of the invented
count line removed earlier. Rule 3 prefers deleting a workaround to
keeping one, so both the prop and its call site are gone. Audits for
the two shapes that revealed real gaps earlier — a prop declared and
never used, and state read but never written — now come back clean
across all four components, and every reachable prop their CountryDetail
passes is implemented.

The substantial finding is about the probes themselves, and it lands in
_qa-cycle rather than here. Scanning all 42 for "no ok() calls AND
never exits non-zero" returned 23, including both numbers reported every
tick: region-vs-live's 79/79 and country-vs-live's 32/32 printed
"N IDENTICAL · M differ" and returned success either way, so the
headline parity was read from text rather than enforced.

_probe-standalone-app.mjs had already drifted for exactly that reason:
it printed its table, counted gaps, and exited 0 regardless. Read
properly it was 9 of 10, not the 10/10 reported for several ticks. The
gap was "one h1 on the page: h1 count 2", and measuring resolved it
rather than silencing it — the composite is a scroll column, both panes
are genuinely on the page (both h1s compute hiddenBy null at 1200x75),
so they are two cloned pages in one document. "One h1 per document"
collides with clone parity, since region-vs-live and list-vs-live both
diff an h1 selector; the clone requirement wins and the property now
states "one h1 per pane (scroll column)" with that measurement
attached.

All three now exit non-zero on a real failure, each proven by a
negative test. Two of those tests were wrong first: one swapped a
selector on BOTH sides so they stayed identical, and one read $? after
a pipe, which reports tail's exit rather than node's.

Also made the chooser's pin assertion wait for the condition instead of
a stopwatch. It had read queryRenderedFeatures at a fixed 4200ms and
measured 0 once while consecutive runs gave 1991 and 2107 — a flaky
check, which is worse than a missing one because it teaches you to
ignore a red. Three runs now return 2107 every time.

Regression: 18 suites green, 9 gates green.
This commit is contained in:
doxa-maps-88655c70 2026-09-24 07:22:38 +00:00
parent 6d29493e84
commit ca13f04bd2
8 changed files with 9 additions and 11 deletions

View file

@ -958,7 +958,6 @@ useShadowStyles(
<UupgsList
v-if="subject.kind === 'country' && selectedCountry"
:lock-country-code="selectedCountry.code"
:country-name="selectedCountry.name"
:pray-base-url="prayBaseUrl"
:language-code="languageCode"
:images-base="assetsBase + '/images'"

View file

@ -48,7 +48,6 @@ import Fuse from '@map/components/search/fuzzy.js'
const props = defineProps({
// ISO-3. Their `lockCountryCode`: the country filter is pre-applied and its dropdown hidden.
lockCountryCode: { type: String, default: '' },
countryName: { type: String, default: '' },
prayBaseUrl: { type: String, default: 'https://pray.doxa.life' },
languageCode: { type: String, default: '' },
researchUrl: { type: String, default: 'https://doxa.life/research/' },

File diff suppressed because one or more lines are too long

View file

@ -856,7 +856,7 @@
"bundle": "regions-dashboard",
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"output": "doxa-maps/regions-dashboard/regions-dashboard.js",
"integrity": "sha384-/0xJsdPMt2izpGpElmMftHWA/ckwtU/VwVbrUrXMaSPeZ0EK86HfggXZmp/vHtGi",
"integrity": "sha384-kez0pklDMqAAGO5koa/FJZ2OXdjvP86GJuHemYqTasfGA+4Pd+v8/08q1kGkvzSE",
"elements": [
"regions-dashboard"
],
@ -876,7 +876,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-/0xJsdPMt2izpGpElmMftHWA/ckwtU/VwVbrUrXMaSPeZ0EK86HfggXZmp/vHtGi\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-kez0pklDMqAAGO5koa/FJZ2OXdjvP86GJuHemYqTasfGA+4Pd+v8/08q1kGkvzSE\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
}
},
{
@ -890,7 +890,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./regions-dashboard/regions-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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-/0xJsdPMt2izpGpElmMftHWA/ckwtU/VwVbrUrXMaSPeZ0EK86HfggXZmp/vHtGi\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-kez0pklDMqAAGO5koa/FJZ2OXdjvP86GJuHemYqTasfGA+4Pd+v8/08q1kGkvzSE\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
}
},
{
@ -904,7 +904,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-/0xJsdPMt2izpGpElmMftHWA/ckwtU/VwVbrUrXMaSPeZ0EK86HfggXZmp/vHtGi\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-kez0pklDMqAAGO5koa/FJZ2OXdjvP86GJuHemYqTasfGA+4Pd+v8/08q1kGkvzSE\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
}
}
]

View file

@ -29,7 +29,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
<script src="../regions-dashboard.js" integrity="sha384-/0xJsdPMt2izpGpElmMftHWA/ckwtU/VwVbrUrXMaSPeZ0EK86HfggXZmp/vHtGi" crossorigin="anonymous"></script>
<script src="../regions-dashboard.js" integrity="sha384-kez0pklDMqAAGO5koa/FJZ2OXdjvP86GJuHemYqTasfGA+4Pd+v8/08q1kGkvzSE" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

View file

@ -29,7 +29,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
<script src="../regions-dashboard.js" integrity="sha384-/0xJsdPMt2izpGpElmMftHWA/ckwtU/VwVbrUrXMaSPeZ0EK86HfggXZmp/vHtGi" crossorigin="anonymous"></script>
<script src="../regions-dashboard.js" integrity="sha384-kez0pklDMqAAGO5koa/FJZ2OXdjvP86GJuHemYqTasfGA+4Pd+v8/08q1kGkvzSE" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -40,7 +40,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
<script src="../regions-dashboard.js" integrity="sha384-/0xJsdPMt2izpGpElmMftHWA/ckwtU/VwVbrUrXMaSPeZ0EK86HfggXZmp/vHtGi" crossorigin="anonymous"></script>
<script src="../regions-dashboard.js" integrity="sha384-kez0pklDMqAAGO5koa/FJZ2OXdjvP86GJuHemYqTasfGA+4Pd+v8/08q1kGkvzSE" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order: