doxa-maps/plugin-designs/research-map-plus-grid/scripts
Doxa Maps be3ee1cdde Kit 4d-1: the shared search is declared once, which landing 4a meant to do and did not finish
Landing 4a extracted buildSearchAccessors / makeSearchMatcher / filterRowsBySearch into
library/composables/useDashboardSearch.js. It left them DEFINED in useDashboardShell.js as well —
4.3KB of code-identical copies, including the Fuse.js matcher. I compared all three function bodies
with comments and whitespace stripped: identical, byte for byte.

Nothing had diverged, so nothing failed, and that is exactly why it survived: the facet rail ran the
library copy while the shell's KPIs and three panels ran the shell's. The comment that used to sit
above those definitions said the point of ONE declaration is that "the searchable text can never
drift from what the panels show" — and there were two. This tree has already paid for that shape once,
at Jaccard 0.82, with useNeighborT and usePplrT.

The shell now imports them like every other consumer, and DashboardChartsRail, DashboardDataTable and
DashboardMapPanel read '@map/composables/useDashboardSearch.js' instead of reaching through the shell.
No re-export shim: all four consumers are repointed in this commit, so there is nothing for a shim to
serve, and an unretired shim is how three older ones sat in the tree unnoticed until this afternoon.

check:filter-multivalue grows arm E, deliberately beside arm B. Arm B exists because a copied FILTER
predicate lets one panel disagree with the others about what is on screen; a copied SEARCH is the same
hazard with a different name. Arm E asserts the library module declares all three, that the shell
declares none of them, and that no file anywhere imports them from the shell. Its importer sweep walks
plugin-designs and library rather than a hardcoded list, because a hardcoded list of "files that might
import this" is the assumption that let 4a's copies survive.

Groundwork for 4d-4: this removes 4.3KB from the file that has to be split into a generic kernel and a
research composition root, and it removes three exports from the surface that split has to preserve.

Source only. research-dashboard and dashboard-plus-grid need a rebuild.
2026-09-27 06:04:09 +00:00
..
check-composite-locale-leaks.mjs Five more gate scripts read the tree's name from the build config 2026-09-25 16:25:22 +00:00
check-filter-multivalue.mjs Kit 4d-1: the shared search is declared once, which landing 4a meant to do and did not finish 2026-09-27 06:04:09 +00:00
check-hover-channel.mjs D3: the bus can point at a record without choosing it 2026-09-27 02:17:35 +00:00
check-i18n-keys-exist.mjs check:i18n-keys-exist was blind to a translator that arrives from a composable 2026-09-27 04:14:14 +00:00
check-linked-vocabulary.mjs Three browser gates stop passing hollow or racing (rega's gates:post run at ded4b3c1) 2026-09-26 13:35:57 +00:00
check-no-free-identifiers.mjs A gate for the mistake I shipped: a name used but never bound 2026-09-26 03:29:51 +00:00
check-ui-strings-have-keys.mjs A gate for English typed into a template, so the ground we have won stays won 2026-09-26 13:04:15 +00:00
ui-strings-baseline.json ui-strings baseline: gospel's resources-map types the pin note's first sentence, which now has a key 2026-09-26 13:04:16 +00:00