From c58db47ac3cd53f3c36ceb59410be9d7051d3570 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Sat, 26 Sep 2026 17:54:09 +0000 Subject: [PATCH] "Arabic" is 23 ISO codes, not 22 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rega counted 23 while measuring the language link, and was right. My 22 came from a cruder comma-split grouping of the labels; the language tier's actual rule has three arms — exact, "base," prefix, " base" suffix — and selects 23. Only the prose was ever wrong. Every computed number in the gate and in the product came from the real rule and has always been 23; these are two comments explaining it, in two files, one word each. I did not correct them at the time because the branch carrying them was already in studio's queue, and rewriting a branch somebody is landing is a worse habit than a stale comment. A comment that states a measurement is a claim like any other, and this is one a reader cannot check without redoing the measurement. --- plugin-designs/people-groups-grid/people-groups-grid.vue | 2 +- .../research-map-plus-grid/research-map-plus-grid.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin-designs/people-groups-grid/people-groups-grid.vue b/plugin-designs/people-groups-grid/people-groups-grid.vue index 2cd1158f4..0c4aa0dd3 100644 --- a/plugin-designs/people-groups-grid/people-groups-grid.vue +++ b/plugin-designs/people-groups-grid/people-groups-grid.vue @@ -582,7 +582,7 @@ const DERIVED_AXES = { const rowAxisValue = (u, field) => (DERIVED_AXES[field] ? DERIVED_AXES[field](u) : u[field]) // ★ A SELECTION MAY BE SEVERAL VALUES (SPEC-DASHBOARD-KIT D1), and this is the end of the wire // that makes the "Arabic" case a real narrowing instead of an honest abstention. The language tier -// "Arabic" covers 22 ISO codes, so no single value expresses it; until now the composite had to +// "Arabic" covers 23 ISO codes, so no single value expresses it; until now the composite had to // send nothing and leave the axis unfiltered rather than show a fraction of the selection or an // empty grid. A comma-separated list is accepted here and matched as OR-within-the-axis, which is // exactly what the bus's facetMatches() does at the other end — one rule, two implementations, diff --git a/plugin-designs/research-map-plus-grid/research-map-plus-grid.vue b/plugin-designs/research-map-plus-grid/research-map-plus-grid.vue index c2961d5de..305eebad5 100644 --- a/plugin-designs/research-map-plus-grid/research-map-plus-grid.vue +++ b/plugin-designs/research-map-plus-grid/research-map-plus-grid.vue @@ -371,7 +371,7 @@ function onMapFiltered(ev) { function gridLanguage() { const codes = Array.isArray(linked.language.codes) ? linked.language.codes : [] // ★ THE ABSTENTION IS OVER (SPEC-DASHBOARD-KIT D1). When the map reported a language TIER — - // "Arabic", 22 ISO codes — there was no single value that meant it, so this left the axis + // "Arabic", 23 ISO codes — there was no single value that meant it, so this left the axis // unfiltered: honest, and visibly incomplete, because the map narrowed and the grid did not. // The grid's valueMatches() now takes a LIST and matches OR-within-the-axis, so the whole // selection crosses as the codes it actually is. Still codes and never the tier NAME: the name