Closes the v0.26 interaction-substrate paper-pass cycle initiated 2026-04-27 via the plan-as-baton mechanism (EVENT_ZONES_FOLLOWUP_PLAN.md authored at end-of-context-density, mechanical execution next-session, scaffold deleted on completion per the v0.24.5 pattern). Substantive (political-register/world-generation.md → v0.2): - §Editor-mode pre-flagging (extends L4 Cell ruleset, v0.27): editor_eligible bool field per cell, pre-flagged at world-gen-init; designer-tunable defaults per district-tier (deva-pinnacle 0% → underground/wilds 90%); per-cell carve-cost gradient scales by cell-position-imperialness. Choice (a) designer-flag-at-world-gen committed over choice (b) emergent-from-imperial- scrutiny per the 2026-04-27 dialog: clean LOD signal + political-readability via material-vocabulary + zero runtime audit-overseer-presence checks. - §Three-source schema unification (v0.27): cell_table accepts canon-rows from world_gen_init / runtime_event / player_authored origins via shared schema. The architecture's world-gen-as-init-function key-move now extends to player-edit-time as a first-class peer of generator-output and runtime- emission. Cell-checksum-divergence audit-vector gains a third source (player_authored_divergence) consumed by the same Memorialist counter- archive and GM heresy-detection mechanisms. Mechanical cross-references (single-paragraph propagations of v0.26 design- decisions through the architecture's describe-by-cross-reference discipline): - runtime-engine/architecture.md: event-zones.md added to Companion-to header - style/consent-discipline.md: §Variants 1-4 as event-class taxonomy — the four hardstop-pattern variants correspond one-to-one to the event-class taxonomy in event-zones.md; the register-test five-question procedure is also the event-class-classifier (consent-validation = event-instantiation) - style/trait-palette.md: 8 traits compose onto the cosmology's outer ring — vertically-symmetric on Deva (Sophrosyne+Dikaiosyne) and Naraka (Eros+Philotes), side-castes carrying single traits, all four oppositional pairs preserved at 180°. Composed wheel renders as iconography AND UI substrate - narrative-composition/architecture.md: Three-source schema unification extends world-gen-as-init-function to player-edit-time - inference-and-memory/architecture.md: Compositor reads 2D gesture-history (caste-target × trait-temperature); coherence-of-political-positioning becomes a cornerstone-memory salience axis - identity-and-personhood/architecture.md + bodies.md: install / clasp / post-rogue-NPC-modding mini-games all run on the composed wheel; consent- discipline Variants 1-4 determine participant-count and hardstop-pattern; the wheel renders the resolution Verification: 11 papers now reference event-zones.md (vs 4 pre-v0.27, including the bonus pre-existing imperial-narrative.md cross-ref). The describe-by-cross-reference, not by re-quotation discipline reaches steady- state across the corpus. Cross-references resolve cleanly to existing sections in event-zones.md (verified §Variants 1-4, §The wheel, §Player editor-mode, §Hardstops, §The composition). EVENT_ZONES_FOLLOWUP_PLAN.md deleted per plan-as-baton convention.
13 KiB
Nimmerworld — Trait Palette
The 8 personal traits, their canonical Greek names, schoolchild-simple descriptions, color-wheel positions, and motion-signatures. The trait-palette is the spine of the entire visual / linguistic / cognitive system — everything in nimmerworld either preserves the spine or violates it.
Companion to:
style-index.md,../architecture-index.md. Cross-referenced from every architecture domain file because the trait-vocabulary is what those files all run on.
The 8 traits — Greek canonical names + schoolchild descriptions
The architecture has been using Hellenic personality-virtues as the trait-cosmology since v0.4. The names are kept for their literary depth and faction-naming use. The descriptions are written at schoolchild-level so they travel through subtitles, NPC speech, tutorial text, and the universal-translator tokenizer-view without ever needing a glossary.
| Greek name | Schoolchild description |
|---|---|
| Sophrosyne | holding back when I want to act |
| Dikaiosyne | standing for what's fair |
| Philotes | loving and staying close |
| Mnemosyne | remembering what mattered |
| Aletheia | seeing what's hidden |
| Kairos | catching the right moment |
| Moira | reading what's coming |
| Eros | reaching for what I want |
Players read the descriptions in everyday play; the Greek names live in faction-naming, deep-lore, scholar-NPC speech, and Memorialist-archive context. A player can complete the entire game without ever consciously learning the Greek names — the trait-vocabulary travels through colors and descriptions. Players who lean into the depth discover the classical-philosophical lineage as a deeper-tier reward (Souls-game discipline applied to vocabulary).
The wheel — 4 oppositional pairs at 180°
The traits form 4 natural oppositional pairs. The 12-segment artist's color wheel renders these as direct complementary pairs (180° apart on the wheel) — visual contrast carries the philosophical opposition.
| Pair | The opposition | Wheel positions (180° apart) |
|---|---|---|
| Eros ↔ Sophrosyne | reaching for ↔ holding back | Red ↔ Green |
| Philotes ↔ Dikaiosyne | loving close ↔ standing fair (partial ↔ impartial) | Orange ↔ Blue |
| Aletheia ↔ Moira | seeing what's hidden ↔ reading what's coming (past-revealed ↔ future-fated) | Yellow ↔ Violet |
| Mnemosyne ↔ Kairos | remembering what mattered ↔ catching the right moment (past-dwelling ↔ present-piercing) | Red/Violet ↔ Yellow/Green |
Why this is the right move. Complementary pairs maximize perceptual contrast (Red and Green can never be confused at a glance) AND carry the trait-system's philosophical structure (the trait-pair is the moral/dramatic axis the simulation is built around). When two NPCs in conversation pulse with complementary colors, the opposition is felt — Red-Eros longing pressing against Green-Sophrosyne restraint becomes a chromatic conflict the player reads pre-verbally. The color wheel does the dramaturgy for free.
Each pair is a real philosophical axis the architecture has been quietly relying on:
- Reaching ↔ Holding — the structural tension the clasp-mechanic lives inside (you reach toward your beloved; you hold back to stay disciplined for your shift)
- Partial ↔ Impartial — the eternal classical tension of justice-vs-love (Antigone, Lear). Architecturally: love-the-bonded vs serve-the-fair
- Past-revealed ↔ Future-fated — Aletheia uncovers what was buried; Moira reads what was always coming. Time-axis bookends
- Past-dwelling ↔ Present-piercing — Memorialist-honor-the-dead vs Kairic-strike-now. Two ways of being-in-time the regime tries to police separately
The full table — canonical-name + hex + motion-signature + description per trait
| Greek | Description | Hue | Canonical name | Hex | Wheel position | Motion-signature |
|---|---|---|---|---|---|---|
| Eros | reaching for what I want | Red | Eros-red |
#ee1b24 |
12:00 | uneven flame-flicker |
| Philotes | loving and staying close | Orange | Philotes-orange |
#e28a46 |
1:30 | breath-rate warm pulse |
| Aletheia | seeing what's hidden | Yellow | Aletheia-yellow |
#fcf001 |
3:00 | clear, no pulse — still and bright |
| Kairos | catching the right moment | Yellow/Green (chartreuse) | Kairos-chartreuse |
#b5e61d |
4:30 | lightning-flicker |
| Sophrosyne | holding back when I want to act | Green | Sophrosyne-green |
#2cad52 |
6:00 | steady, even pulse |
| Dikaiosyne | standing for what's fair | Blue | Dikaiosyne-blue |
#3f47cd |
7:30 | weighted slow pulse |
| Moira | reading what's coming | Violet | Moira-violet |
#a349a3 |
9:00 | slow-thread undulation |
| Mnemosyne | remembering what mattered | Red/Violet (dusky-rose) | Mnemosyne-dusky-rose |
#cf3b74 |
10:30 | depth-shimmer |
Motion-signature paired with color provides color-blind accessibility — every trait is uniquely identifiable via two independent channels. A player with red-green color blindness still distinguishes Eros (uneven flame-flicker) from Sophrosyne (steady, even pulse) by motion alone.
Canonical-name + hex paired provides cross-pipeline identifiability — every trait-color reference carries two independent channels, semantic (canonical-name for prose, training-corpus extraction, scholar-NPC speech, faction-naming, LLM context) and precise (hex for shaders, renderers, color-pickers, machine-checkable canon enforcement). See §The hex-canon discipline below.
Wheel layout (clockwise from 12 o'clock)
Eros
#ee1b24
╔═════════════╗
Mnemosyne Philotes
#cf3b74 #e28a46
│ │
Moira ────────●──── Aletheia
#a349a3 #fcf001
│ │
Dikaiosyne Kairos
#3f47cd #b5e61d
╚═════════════╝
Sophrosyne
#2cad52
The wheel's natural temperature-axis aligns with the architecture's dramatic structure. Warm side (Eros, Mnemosyne, Philotes, Aletheia, Kairos) carries outward / present-active / engaged registers; cool side (Sophrosyne, Dikaiosyne, Moira) carries inward / withholding / contemplative registers. Aletheia at 3:00 sits at the brightness-zenith; Sophrosyne at 6:00 sits at the cool-balance-base; Eros at 12:00 sits at the heat-apex.
The achromatic exception — Aletheia is not white
In earlier drafts (the v0.1 design-vision doc, retired in v0.9 — preserved in git history), Aletheia was rendered as luminous-white (off-the-wheel, achromatic). v0.1 of this trait-palette places Aletheia on Yellow — the brightest chromatic hue. The metaphor of truth as illumination is preserved (Yellow is the brightest color the eye can read), and white is freed up for its proper job: rendering text and pure-light UI overlay (per style-index.md §Spine rule).
This is a deliberate constraint — the trait-palette is exclusively chromatic so that achromatic colors (white, black, grey, brown) remain reserved for non-trait roles. Aletheia is bright, not transcendent; the brightness IS the truth-revealing register.
The hex-canon discipline — canonical-name + #hex at every trait-color reference
Every trait-color reference in the architecture pairs canonical-name with hex value. The canonical-name pattern is {Trait}-{hue} lowercase — Eros-red, Philotes-orange, Aletheia-yellow, Kairos-chartreuse, Sophrosyne-green, Dikaiosyne-blue, Moira-violet, Mnemosyne-dusky-rose. The two channels serve two audiences:
- Canonical-name — semantic anchor for prose, training-corpus extraction, scholar-NPC speech, faction-naming, and any LLM context where the trait-color binding must survive tokenization
- Hex — designer/tooling precise value for shaders, renderers, color-pickers, and machine-checkable canon enforcement
Format conventions.
| Context | Form | Example |
|---|---|---|
| Trait is the subject | **Trait** (canonical-name #hex, …) |
**Eros** (Eros-red #ee1b24, 12:00) |
| Color/hue is the subject | canonical-name (#hex) |
"shader pulses with Philotes-orange (#e28a46)" |
| Schema/data row | both columns or token+value | ('eros', '#ee1b24', …, 'Eros-red', …) |
Scope (current). The hex-canon discipline applies to trait-color references only. Non-trait colors (machine-aesthetic palette: gold rim-light, commercial-coral, fluorescent-pallor, lavender-decor, obsidian-black, cyan, matrix-green; historical-sumptuary references: Tyrian purple; cinematic references: Matrix red-pill) carry their existing prose-form names. Each non-trait design domain receives canonical-name + hex pairings recursively, at the moment that domain comes into architectural focus — names follow design-attention, not the other way around.
Mechanically-checkable. Canon-violations are a single grep against the architecture-papers, excluding this canonical source:
grep -rEn --include='*.md' '\b(red|orange|yellow|green|blue|violet|purple|chartreuse)\b' \
--exclude=trait-palette.md \
| grep -v '#[0-9a-fA-F]\{6\}'
Any hit that isn't paired with a hex code on the same line is either (a) a trait-color reference missing its hex pairing (canon-violation, fix), (b) a non-trait color reference (machine-aesthetic, narrative-shorthand, historical-sumptuary — currently exempt, will be canonicalized when its design domain comes into focus), or (c) a medical/cinematic/historical compound-term ("red-green color blindness", "Matrix red-pill", "Tyrian purple"). The discipline becomes a typed contract rather than a stylistic suggestion.
Where this is applied today. The trait-table in ../identity-and-personhood/architecture.md §The trait-to-body-part bridge; the faction-uniform table in ../topology-and-rendering/architecture.md §Faction color-politics; the trait-color seed-data in ../schemas/findings.md §trait_colors; cosmetic-shader prose in ../runtime-engine/architecture.md. Future expansions (cosmology-aesthetic, machine-aesthetic, faction-accent, drug-pill chromatics) will join recursively as they're authored.
Designer-fixed corpus — words to colors
Every word in the universal-translator's vocabulary corpus is mapped to one (or a primary + secondary) trait-coordinate. The mapping is designer-authored, fixed, universal — the same word means the same trait-color for every player and every NPC and every LLM-context.
When a player encounters a word in the world, the universal-translator's tokenizer-view renders that word in its trait-color (or fragmentary / opaque if untranslated). Over hundreds of hours of play the player learns the trait-cosmology through observation, not glossary. The corpus is the typed contract that closes the player-LLM hallucination-surface (per ../player-experience/architecture.md §Designer-fixed cosmology, player-curated arrangement).
Cross-domain rendering — where trait-colors appear
The trait-palette is rendered across many surfaces. Each surface gets specific style-rules in the relevant sub-guide:
| Surface | Sub-guide |
|---|---|
| NPC chassis pipe-flow + accents | body-feedback.md |
| Gesture-circle UI sectors | ui-elements.md |
| Universal-translator tokenizer-view word-coloring | ui-elements.md |
| Mod cosmetic accents (within trait-bearer rules) | asset-aesthetic.md |
| Diegetic relay pulses | relays.md |
| Faction heraldry | asset-aesthetic.md |
| Liminal / imperial-net shader transformations of the palette | shaders-by-register.md |
The trait-palette defined here is the canonical reference. All sub-guides import these definitions; none redefine them.
The 8 traits compose onto the cosmology's outer ring. Per ../imperial-cult/cosmology.md §The composed wheel, the 8 Hellenic traits form the outer ring of the cosmology's composed wheel, vertically-symmetric on Deva (top, cool-side: Sophrosyne + Dikaiosyne) and Naraka (bottom, warm-side: Eros + Philotes), with side-castes carrying single traits (Asura: Mnemosyne; Tiryak: Aletheia; Preta: Kairos; Manusya: Moira). All four oppositional pairs preserved at 180°. The composed wheel renders both as in-fiction iconography AND as the player's UI substrate (per ../runtime-engine/event-zones.md §The wheel — universal mini-game-surface and ../player-experience/architecture.md §The wheel — composed-iconography UI).
Version: 0.2 | Created: 2026-04-26 | Updated: 2026-05-01