Files
nimmerworld.eachpath.local/style/trait-palette.md
chrysalis 89b031799d v0.27: cross-reference cleanup of event-zones.md across domain papers
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.
2026-05-01 02:18:03 +02:00

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