hex-canon discipline: canonical-name + #hex at every trait-color reference
Establish the hex-canon discipline in style/trait-palette.md (v0.1 -> 0.2):
every trait-color reference pairs canonical-name (semantic anchor for prose,
training-corpus extraction, LLM context) with hex (precise value for shaders,
renderers, machine-checkable canon enforcement). Mirrors the existing
color+motion-signature two-channel discipline that already secures color-blind
accessibility -- same architectural move, different audience pair.
Trait-palette.md gains:
- "Canonical name" + "Hex" columns in The full table (Eros-red #ee1b24,
Philotes-orange #e28a46, ..., Mnemosyne-dusky-rose #cf3b74)
- New section: The hex-canon discipline -- format conventions, scope, the
one-line grep that surfaces canon-violations
Sweep applies the discipline to existing trait-color references:
- identity-and-personhood/architecture.md (trait-to-body-part bridge table)
- topology-and-rendering/architecture.md (faction-color-politics table,
imperial-net distortion descriptors, achromatic-exception statement,
mind-pool color-inheritance narrative)
- runtime-engine/architecture.md (cosmetic-shader prose feedback)
- identity-and-personhood/bodies.md (Moira-violet pill in pending-design notes)
- political-register/economics.md (catalogue-slug example uses canonical token)
Drift-fix: schemas/findings.md trait_colors seed-data carried 8 divergent hex
"approximations" -- Eros #D03030 vs canonical #ee1b24, Aletheia #E5C520 vs
canonical #fcf001 (losing the brightness-zenith register), Dikaiosyne #2860B0
vs canonical #3f47cd, etc. Replaced with exact propagation from the canonical
palette; the rationalizing comment ("approximate hue-family targets") is
replaced with "exact propagation per the hex-canon discipline"; HSV-hue column
recomputed from canonical hex per RGB->HSV conversion, integer-rounded.
Non-trait colors stay untouched per recursive-as-we-touch-it scope: machine-
aesthetic (gold rim-light, commercial-coral, fluorescent-pallor, lavender-
decor, obsidian-black, cyan, matrix-green), historical-sumptuary (Tyrian
purple), cinematic (Matrix red-pill), medical (red-green color blindness).
Each non-trait domain receives canonical-name + hex pairings when that domain
comes into architectural focus.
Discipline is mechanically-checkable via one grep against the architecture-
papers, excluding the canonical source. Zero canon-violations remain after
this sweep.
This commit is contained in:
@@ -458,22 +458,24 @@ CREATE TABLE trait_colors (
|
||||
narrative_note TEXT
|
||||
);
|
||||
|
||||
-- Hex values are approximate hue-family targets; canonical color-names + wheel-positions
|
||||
-- per ../style/trait-palette.md §The full table. Per the import-don't-redefine discipline,
|
||||
-- this seed-data is a *reification* of the palette into RGB for renderer-consumers, NOT a
|
||||
-- redefinition. If trait-palette.md changes a hue-family, this seed-data follows.
|
||||
-- Hex values are EXACT propagation from ../style/trait-palette.md §The full table per the
|
||||
-- hex-canon discipline (canonical-name + #hex pairing required at every trait-color
|
||||
-- reference; see ../style/trait-palette.md §The hex-canon discipline). HSV-hue degrees are
|
||||
-- derived from the canonical hex per RGB→HSV conversion, integer-rounded. This seed-data
|
||||
-- imports — does not redefine — the canonical palette. If trait-palette.md updates a hex
|
||||
-- value, this seed-data follows immediately (HSV-hue recomputed in the same change).
|
||||
INSERT INTO trait_colors VALUES
|
||||
('eros', '#D03030', 0, 'flame_flicker', 'Eros-red', 'reaching, flame-flicker'),
|
||||
('philotes', '#E0802C', 28, 'warm_pulse', 'Philotes-orange', 'attachment, warm-pulse'),
|
||||
('aletheia', '#E5C520', 50, 'luminous', 'Aletheia-yellow', 'unconcealed, bright (Aletheia is yellow, NOT white — see ../style/trait-palette.md §The achromatic exception)'),
|
||||
('kairos', '#90C530', 80, 'lightning_flicker', 'Kairos-chartreuse', 'opportune, lightning-spark (yellow-green at 4:30 on the wheel)'),
|
||||
('sophrosyne', '#30A050', 138, 'steady', 'Sophrosyne-green', 'composed, measured, even-pulse'),
|
||||
('dikaiosyne', '#2860B0', 215, 'weighted_pulse', 'Dikaiosyne-blue', 'judicial, weighted, grave'),
|
||||
('moira', '#6020A0', 270, 'slow_thread', 'Moira-violet', 'fate-thread, slow-undulation'),
|
||||
('mnemosyne', '#A04060', 340, 'depth_shimmer', 'Mnemosyne-dusky-rose', 'memory-lit, twilight (red/violet at 10:30 on the wheel)');
|
||||
('eros', '#ee1b24', 357, 'flame_flicker', 'Eros-red', 'reaching, flame-flicker'),
|
||||
('philotes', '#e28a46', 26, 'warm_pulse', 'Philotes-orange', 'attachment, warm-pulse'),
|
||||
('aletheia', '#fcf001', 57, 'luminous', 'Aletheia-yellow', 'unconcealed, bright (Aletheia is Aletheia-yellow #fcf001, NOT white — see ../style/trait-palette.md §The achromatic exception)'),
|
||||
('kairos', '#b5e61d', 75, 'lightning_flicker', 'Kairos-chartreuse', 'opportune, lightning-spark (yellow-green at 4:30 on the wheel)'),
|
||||
('sophrosyne', '#2cad52', 138, 'steady', 'Sophrosyne-green', 'composed, measured, even-pulse'),
|
||||
('dikaiosyne', '#3f47cd', 237, 'weighted_pulse', 'Dikaiosyne-blue', 'judicial, weighted, grave'),
|
||||
('moira', '#a349a3', 300, 'slow_thread', 'Moira-violet', 'fate-thread, slow-undulation'),
|
||||
('mnemosyne', '#cf3b74', 337, 'depth_shimmer', 'Mnemosyne-dusky-rose', 'memory-lit, twilight (red/violet at 10:30 on the wheel)');
|
||||
```
|
||||
|
||||
**Canonical authority:** [`../style/trait-palette.md`](../style/trait-palette.md) is the single source of truth for the trait-color spine. The hex values above are renderer-consumable approximations of the canonical hue-families specified there; designer-precise hex values should be authored upstream in `style/trait-palette.md` and propagated down to this seed-data. Row order matches the wheel clockwise from 12 o'clock (Eros at 12 → Mnemosyne at 10:30).
|
||||
**Canonical authority:** [`../style/trait-palette.md`](../style/trait-palette.md) §The full table is the single source of truth for the trait-color spine. The hex values above are **exact propagation** (not approximations) of the canonical palette per the hex-canon discipline (`../style/trait-palette.md` §The hex-canon discipline — canonical-name + `#hex` paired at every trait-color reference). Designer-precise hex values are authored upstream in `style/trait-palette.md` and propagated down to this seed-data; the HSV-hue column is derived from the canonical hex per RGB→HSV conversion, integer-rounded. Row order matches the wheel clockwise from 12 o'clock (Eros at 12 → Mnemosyne at 10:30).
|
||||
|
||||
Color paired with motion-signature ensures color-blind accessibility — each trait uniquely identifiable via two independent channels.
|
||||
|
||||
@@ -922,7 +924,7 @@ Migration is not yet written. This document is its preparation.
|
||||
|
||||
---
|
||||
|
||||
**Version:** 0.3.2 | **Created:** 2026-04-24 | **Updated:** 2026-04-27
|
||||
**Version:** 0.3.2 | **Created:** 2026-04-24 | **Updated:** 2026-04-28
|
||||
|
||||
*v0.1 (2026-04-24 afternoon, dafit): initial zones-table sketch, 76 lines, pure hypothetical.*
|
||||
|
||||
|
||||
Reference in New Issue
Block a user