diff --git a/internal/check-gospel-rtl-shaping.mjs b/internal/check-gospel-rtl-shaping.mjs
index 63986853d..c2e359b99 100644
--- a/internal/check-gospel-rtl-shaping.mjs
+++ b/internal/check-gospel-rtl-shaping.mjs
@@ -32,6 +32,7 @@
*/
import { chromium } from 'playwright'
import { serveReaped } from './_serve-reaped.mjs'
+import { TREE_NAME } from './_tree-name.mjs'
import { resolve, dirname } from 'node:path'
import { fileURLToPath } from 'node:url'
@@ -46,7 +47,7 @@ const POISON = process.argv.includes('--poison')
const leafArg = process.argv.indexOf('--leaf')
const LEAF = (leafArg > -1 && process.argv[leafArg + 1])
|| process.env.RTL_SHAPE_LEAF
- || 'doxa-maps/gospel-resources/resources-map/index.html'
+ || `${TREE_NAME}/gospel-resources/resources-map/index.html`
/* Arabia: the densest concentration of rendered Arabic on the basemap. */
const RTL_VIEW = { center: [39.2, 24.5], zoom: 5 }
diff --git a/internal/check-leaf-english-leaks.mjs b/internal/check-leaf-english-leaks.mjs
index ecab93236..658c37bc5 100644
--- a/internal/check-leaf-english-leaks.mjs
+++ b/internal/check-leaf-english-leaks.mjs
@@ -38,6 +38,7 @@ import { readFileSync, readdirSync, existsSync } from 'node:fs'
import { resolve, dirname, join } from 'node:path'
import { fileURLToPath } from 'node:url'
import { servesThisTree } from './_serves-this-tree.mjs'
+import { TREE_NAME } from './_tree-name.mjs'
const HERE = dirname(fileURLToPath(import.meta.url))
const REPO = resolve(HERE, '..')
@@ -82,7 +83,7 @@ const catalogue = (lc) => {
}
let reachable = false
-try { const r = await fetch(`${BASE}/doxa-maps/manifest.json`, { signal: AbortSignal.timeout(4000) }); reachable = r.ok } catch { /* precondition */ }
+try { const r = await fetch(`${BASE}/${TREE_NAME}/manifest.json`, { signal: AbortSignal.timeout(4000) }); reachable = r.ok } catch { /* precondition */ }
if (!reachable) { console.log(`LEAF-ENGLISH-LEAKS: SKIP — nothing served at ${BASE}.`); process.exit(0) }
const treeCheck = await servesThisTree(BASE, REPO)
if (!treeCheck.ok) { console.error(`LEAF-ENGLISH-LEAKS: NOT MEASURED — ${treeCheck.why}`); process.exit(2) }
@@ -106,7 +107,7 @@ for (const t of TARGETS) {
page.on('pageerror', (e) => errs.push(String(e).slice(0, 110)))
let labels = []
try {
- const res = await page.goto(`${BASE}/doxa-maps/${t.path}/index.html?lang=${lc}`,
+ const res = await page.goto(`${BASE}/${TREE_NAME}/${t.path}/index.html?lang=${lc}`,
{ waitUntil: 'load', timeout: 60000 })
if (!res || !res.ok()) { rows.push({ t: t.path, lc, skipped: `HTTP ${res ? res.status() : '?'}` }); await page.close(); continue }
await page.waitForTimeout(16000)
diff --git a/internal/check-poster-card-fits.mjs b/internal/check-poster-card-fits.mjs
index a4c546151..7282403cf 100644
--- a/internal/check-poster-card-fits.mjs
+++ b/internal/check-poster-card-fits.mjs
@@ -78,8 +78,10 @@ if (!reachable) {
// ⚠ NOT MEASURED, NOT SKIP, and the distinction is the point. A SKIP reads as "nothing to check
// here"; this is "I could not attribute what I saw", which is a different and louder fact. Exit 2
// so a caller can tell it apart from both a pass (0) and a real failure (1).
-// The helper wants the tree's BASE, not a leaf URL — it fetches /doxa-maps/manifest.json.
-// LEAF is `/doxa-maps///index.html`, so cut at the /doxa-maps/ segment.
+// The helper wants the tree's BASE, not a leaf URL — it fetches //manifest.json.
+// LEAF is `////index.html`, so cut at that segment. The name is
+// a config knob (_tree-name.mjs), and a hardcoded 'doxa-maps' here is how a rename silently makes
+// a gate measure a folder that no longer exists — which cost me a whole tick of false readings.
const TREE_BASE = LEAF.split(`/${TREE_NAME}/`)[0]
const treeCheck = await servesThisTree(TREE_BASE, ROOT)
if (!treeCheck.ok) {