From 9947c95978fa132d1979250ade29df44f88ec41f Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Tue, 29 Sep 2026 03:09:34 +0000 Subject: [PATCH] check:help-reachable keeps a map whose own control explains it in scope, even with no entry in the help file --- internal/check-help-reachable.mjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/check-help-reachable.mjs b/internal/check-help-reachable.mjs index 8a5ee1855..420586b3c 100644 --- a/internal/check-help-reachable.mjs +++ b/internal/check-help-reachable.mjs @@ -93,7 +93,11 @@ function reachFails(id, sources, ownHelp = OWN_HELP) { if (own) return [`${id}: exempt as having its own help (${own.why}), but "${own.marker}" is gone from it`] return [`${id}: has explainer text in experimentalHelp.js but no hosted "?" (HelpButton hosted, or useHostedHelp) anywhere in its folder, so the text is unreachable`] } -const ids = Object.keys(EXPERIMENTAL_HELP.en || {}) +// The population is every map WITH TEXT in experimentalHelp.js AND every map exempted in OWN_HELP. A map +// whose own control is its explainer carries no entry in the help file (one source of truth per map), and +// deriving the population from that file alone would drop it from this check without a word: removing +// UPG Neighbor's redundant entry took the count from 8 to 7 and stopped checking its About button. +const ids = [...new Set([...Object.keys(EXPERIMENTAL_HELP.en || {}), ...Object.keys(OWN_HELP)])] const reached = [] for (const id of ids) { const srcs = filesUnder(join(ROOT, 'plugin-designs', id)).map((p) => readFileSync(p, 'utf8'))