From 59c2f4bb6bd9c5449afa3f3bf31989ce476d179e Mon Sep 17 00:00:00 2001 From: Brummel Date: Sun, 31 May 2026 14:46:14 +0200 Subject: [PATCH] =?UTF-8?q?audit(glossary):=20close=20cycle=20=E2=80=94=20?= =?UTF-8?q?glossary=20is=20SoT=20for=20nomenclature?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cycle-close tidy for the glossary-integration cycle (fc0e1d0..HEAD). Architect drift review (sole gate — repo ships no .claude/dev-cycle-profile.yml, so commands.regression is empty and the regression step is a documented no-op): - [medium] FIXED. docs/glossary.md Avoid-lists `release`/`epic` while profile-schema.md § vocabulary offered the same words as example slot renamings — opposite verdicts on the same words in two in-repo docs, with neither stating its scope, reading as contradiction. Resolution (per the user's steer: the glossary is the new source of truth for nomenclature): state that authority once, where the glossary's role is owned. glossary-convention.md now declares the set glossary the SoT for a project's nomenclature and that its canonical entry + Avoid list win over any colliding vocabulary example; profile-schema.md's vocabulary note defers to it with a pointer rather than restating the rule, keeping the single-sourcing the architect flagged as clean. The glossary itself is unchanged — it is the SoT and was already correct. - [low] CARRY-ON. glossary-convention.md mandates an `**Avoid:** —` line for synonym-free terms, but no dogfood entry in glossary.md exercises that arm (all five terms have real synonyms). Accepted as low-severity documented debt: the rule is unambiguous prose, and coining a synonym-free term solely to exercise a formatting arm would be gold-plating. Revisit if a genuinely synonym-free canonical term enters the dogfood. What holds: wiring semantics single-sourced at the paths.glossary row; convention/instance split clean; boss named as the only autonomous glossary writer; all six spec acceptance criteria landed. Cycle is drift-clean. Not a milestone close (no milestone fieldtest run; see docs/pipeline.md § Milestone-close gate). Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/glossary-convention.md | 7 +++++++ docs/profile-schema.md | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/docs/glossary-convention.md b/docs/glossary-convention.md index 9163ef8..6ae78f6 100644 --- a/docs/glossary-convention.md +++ b/docs/glossary-convention.md @@ -15,6 +15,13 @@ When the slot is set, the file it names is standing reading for every role — no separate `standing_reading.always` entry is required. When the slot is unset, the whole feature is a documented no-op. +A set glossary is the source of truth for the project's nomenclature. +Where any other document names a concept differently — including the +example renamings in `profile-schema.md` § `vocabulary` — the +glossary's canonical entry, and its **Avoid** list, win. A +`vocabulary.*` slot only sets which term the glossary then pins as +canonical; it does not override the glossary. + ## Format The glossary is a flat list of per-term blocks (not a table), so an diff --git a/docs/profile-schema.md b/docs/profile-schema.md index 9ddf3fd..26797c3 100644 --- a/docs/profile-schema.md +++ b/docs/profile-schema.md @@ -137,6 +137,13 @@ Skills use these names in their generated artefacts and prose. Picking accurate vocabulary keeps prose readable; the underlying mechanics are identical regardless of name. +The renamings shown as examples above illustrate the slot only; they +are not nomenclature for any particular project. When a project sets +`paths.glossary`, that glossary is the source of truth for its +nomenclature and overrides these examples where they collide — a word +offered here may sit under **Avoid** in a given project's glossary +(see `glossary-convention.md`). + ## `standing_reading` | Key | Type | Default | Description |