diff --git a/library/components/charts/CenteredSetTarget.vue b/library/components/charts/CenteredSetTarget.vue index 83490c6f5..18052ca56 100644 --- a/library/components/charts/CenteredSetTarget.vue +++ b/library/components/charts/CenteredSetTarget.vue @@ -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'