"Arabic" is 23 ISO codes, not 22

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.
This commit is contained in:
Doxa Maps 2026-09-26 17:54:09 +00:00
parent e35a86253c
commit c58db47ac3
2 changed files with 2 additions and 2 deletions

View file

@ -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,

View file

@ -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