Record the agreed ring vocabulary, without making it a default

The ten ring names settled between gospel and exp, derived from exp's ringFor()
rather than hand-numbered so the numbering cannot drift from the code that
produces it. The screen legend already renders these words, so a printed sheet
using them cannot disagree with the screen.

Written as vocabulary in the header a caller reads, and deliberately NOT as a
prop default. One cell is still open on the Driver's row 89 — "people" versus
the brief's "culture" in column 1 — and if he keeps his, exactly three cells
change, 1, 4 and 7, and nothing else: not the numbering, not the columns, not
the colours.

A default would bake a provisional word into every consumer that forgot to pass
one, and would make this component the thing that decided a Driver question.
Same reason ShareCalendar refuses to name its own metric.
This commit is contained in:
Doxa Maps 2026-09-28 16:15:24 +00:00
parent 2427e48501
commit 0bcb33decb

View file

@ -38,6 +38,24 @@
* for a name, humanise the slug, which is uniform by construction and tops out around 34 characters.
* gospel found this and carries the two separately; this component asserts nothing about the words,
* so the whole hazard lives at the call site, which is exactly why it is written down here.
*
* ★ THE AGREED RING VOCABULARY, for a caller building `labels.rings`. Settled between gospel and
* exp and derived from exp's ringFor() rather than hand-numbered, so the numbering cannot drift
* from the code that produces it. The screen legend already renders these words, so a printed sheet
* using them cannot disagree with the screen:
*
* 1 Same dialect, same people 6 Same language, different culture
* 2 Same dialect, near culture 7 Same family, same people
* 3 Same dialect, different culture 8 Same family, near culture
* 4 Same language, same people 9 Same family, different culture
* 5 Same language, near culture 10 Nearby only
*
* ⚠ ONE CELL IS PROVISIONAL: "people" vs the brief's "culture" in column 1 is open on the Driver's
* row 89. If he keeps "culture", exactly THREE cells change — 1, 4 and 7 — and nothing else: not
* the numbering, not the columns, not the colours. That is why this map is written here as
* VOCABULARY and is NOT a default: a default would bake a provisional word into every consumer that
* forgot to pass one, and the component would become the thing that decided a Driver question. The
* same reason ShareCalendar refuses to name its own metric.
*/
import { computed } from 'vue'
import { layoutCenteredSet, ringTally, inwardArrow, ringRadii, RING_MIN, RING_MAX } from './centeredSet.js'