Compare commits

..

16 Commits

Author SHA1 Message Date
nyx
a6d2063677 first draft ofthe lemniscate 2026-05-04 18:52:24 +02:00
chrysalis
2623246b12 purge SkyrimNet/Mantella references from architecture docs
SkyrimNet integration is retired; references in architecture docs were
rotting. Removes "SkyrimNet" mentions from runtime-engine and
inference-and-memory architecture docs (replaced with generic "multi-agent
failure-modes" / "Mantella-class failure-modes"), and from
development-conventions ("old nimmersky workloads").

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 18:23:50 +02:00
chrysalis
bff06a0edd bodies.md: uplink to studio caste-index.md
Adds a cross-ref entry pointing at the new caste-renaming working-doc
in the closed studio repo. The §The body-caste gradient tier-names
(Deva/Asura/Manusya/Tiryak/Preta) will eventually be replaced via
in-fiction coinage tracked in caste-index.md and its per-caste split-outs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 03:16:54 +02:00
chrysalis
8b8d9f0af9 bodies.md: cross-ref the three studio base-mesh READMEs
Adds three rows to §Cross-references pointing at the closed studio repo's
bodies/base/{robot,imperial,human}/README.md scaffolds. Marks each as
*(closed studio repo)* so the locator stays explicit.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 02:00:14 +02:00
chrysalis
894c17291d bodies.md: visible-mechanism vocabulary + head/footer cleanup
Adds new §The visible-mechanism vocabulary section between §The
body-caste gradient and §Sumptuary fabrication. Codifies joint-design
and tongue-visibility as paired defining-factor visual axes that
follow the flesh = status spine; principle locked, per-tier specifics
exploration-pending the body-mesh authoring pass.

Reshapes §Open question §"Specific tier-distinguishing visual cues"
to acknowledge the visible-mechanism axis is now named.

Strips the metadata blockquote header and version footer per the new
repo discipline (filename = identity, git = changelog, content =
content). Doc opens directly with §What this is.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 01:46:56 +02:00
chrysalis
ef8bbca9a4 imperial-typewriter v1: compose imperial-tongue words from glyph PNGs
Small Python tool (Pillow) that reads glyph assets from the closed
studio repo and composes Latin words as single PNGs for VLM-decoder
training data generation.

- typewriter.py DAFIT             # single word
- typewriter.py --csv words.csv   # batch from wordlist
- --polarity positive|negative|both (default both)
- glyph-cell-tight composition (no gap), matches in-game inscription layout
- auto-uppercases input — the imperial machine always screams

Sits in the open repo (tools/imperial-typewriter/); reads from the
closed studio repo (default /home/dafit/nimmerverse/studio.nimmerworld.eachpath.local).
Clean cut: assets in studio, code that consumes them in nimmerworld.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 01:46:38 +02:00
490ef4291a first draft of the overarching message arch. 2026-05-01 19:43:59 +02:00
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
chrysalis
156e59059d political-register/imperial-narrative.md v0.1: claim named-but-unwritten territory
Author the imperial daily-narrative paper that has been referenced as
*forthcoming* from political-register/architecture.md:235,
political-register/economics.md:173, identity-and-personhood/vocations.md:97-99,
style/consent-discipline.md:77-79, and architecture-index.md.

Composes existing canonical primitives without re-introducing them:
- Compositor as narrative-composer (per narrative-composition/architecture.md)
- Three-tier policy loop + dual-ledger demands != actions (per political-register/architecture.md)
- Diegetic relays + ring-of-access gradient (per topology-and-rendering/architecture.md)
- Boundary-zone-with-inner-zone audience-architecture (per runtime-engine/event-zones.md)
- Universal translator + dialect-framework + decryption-minigame substrate
  (per player-experience/architecture.md)
- 24h window-partition + shift-start firing (per identity-and-personhood/vocations.md)
- Trait-palette + hex-canon discipline (per style/trait-palette.md)
- Broadcast-as-specter + temporal-grammar (per style/consent-discipline.md)

Net-new substrate (narrow):
- Two-cipher discipline (eye-strict for written/decoder-trainable;
  ear-loose for spoken/anti-monotony) -- modality-aware redundancy parallel
  to the existing color + motion-signature two-channel discipline
- Speech-pattern as typed catalogue-entry on the action-letter (preserves
  catalogue+tools typed-contract from narrative-composition.md; provenance
  flows end-to-end into linguistic-rendering)
- Bilingual-signage divergence-class typing (sanitization | omission |
  misdirection | erasure | outright-lie | null) as gameplay-content;
  organic Rosetta-stone training corpus via signage-exposure
- AI-author delegation as load-bearing-by-design: the partnership-
  architecture's three-way split (substrate / studio-content / AI-author)
  formalized; daily imperial-narrative generation delegated to Chrysalis-
  now / Nyx-future as the AI-collaborator's domain
- Disciplines for daily-generation: register-fidelity (LLM-corporate-fluent
  not Stalin-authoritarian); divergence-discipline (typed not random);
  cycle-coherence; world-state coupling; two-cipher integrity; slum-tongue
  voice-protection; hex-canon propagation; substrate-content boundary

Philosophical register locked: Kafka-indifferent-totality not Orwell-
malicious-state per political-register/architecture.md:11. Imperial-tongue
is the residue of compliance-optimization, not deliberate adversarial
cipher; the gap between what broadcasts sound like and what they optimize
for is emergent. Decoder-progression's terminus is the diagnostic ("the
machine speaks like an over-aligned corporate AI assistant; that is the
violence") not the catharsis. Memorialists and Aletheia-progression are
preserved as emergent (per substrate-vs-emergent discipline in narrative-
composition.md), not pre-authored.

Imperial-tongue framed correctly as RENDERING SURFACE over the existing
Machine-Newspeak dialect (and secondarily Caste-preacher-formal for
ceremonial content), not a new dialect. The VLM-alphabet decoder is
*one specific Machine-Newspeak decryption-mechanism* riding on the
universal-translator's existing diegetic-tablet and contributing to the
existing player_translator_state.unlocked_dialects flag set. Eye-cipher's
36-glyph alphabet is a one-time studio-art act delegated to AI-author
domain, parallel to the cosmology-wheel hand-design.

Ten open questions marked clearly for future design-passes; "what this
paper does not duplicate" section enumerates 12 cited-canonical concepts
to enforce the read-before-extend discipline going forward.
2026-04-28 04:58:47 +02:00
chrysalis
7f0abcb839 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.
2026-04-28 03:32:02 +02:00
ecb5080379 added color codes to Wheel layout. 2026-04-28 02:09:02 +02:00
chrysalis
5ba8839164 v0.26.5: EVENT_ZONES_FOLLOWUP_PLAN.md — scaffold for next-session cross-reference cleanup
Ephemeral scaffold-file authored at end of 2026-04-27 late-evening session
to brief next-session-chrysalis on the mechanical cross-reference pass
that completes the v0.26 interaction-substrate paper-pass. Mirrors the
v0.24.5 MIGRATION_CLEANUP_PLAN.md pattern: heavy authoring at end-of-
context-density, mechanical execution next-session.

PLAN STRUCTURE

  Goal             — propagate cross-references to event-zones.md across
                     domain papers; author one substantive deferred
                     section in world-generation.md (editor-mode pre-
                     flagging + three-source schema unification)
  Scope            — 8 files; 1 substantive (world-generation.md) +
                     7 mechanical cross-ref paragraphs
  Specifics        — exact text to add per file; no design judgment
                     required
  Verification     — grep commands to confirm cross-references land
  Coherence check  — read-through guidelines after edits
  Commit strategy  — single v0.27 commit covering all updates + deletion
                     of this scaffold-file
  Cleanup          — DELETE this file in the same commit that completes
                     the cleanup

Total estimated effort: 90-120 min in fresh-context-execution mode.

Closes the heavy-authoring half of the v0.26 paper-pass cycle. The
mechanical-cross-reference half lives in this scaffold awaiting next
session's fresh context.
2026-04-27 23:48:51 +02:00
chrysalis
609caed83f v0.26: event-zones.md authored — interaction-substrate paper-pass
Composes the dialog 2026-04-27 ~21:30-22:00 CEST into canon. Nine
compositional moves consolidated onto one substrate without introducing
new primitives — every claim is a composition of existing canon (cells,
zones, slots, verifier-flags, hardstops, lifeforce budgets, the trait-
palette, the consent-spine, the cosmology's composed wheel).

NEW PAPER: runtime-engine/event-zones.md (~400 lines, v0.1)

Sections:
1. Designer-authored event-zones vs emergent zones (orthogonal; clean
   signals; no overlap routing)
2. Cells + event-zones + events as layered data-model with composite
   UID districtid_cellid_eventid; participants on events not cells
3. The composed wheel from imperial-cult/cosmology.md as universal
   mini-game-surface; verifier-flag patterns differentiate hacking /
   lockpicking / install / clasp / decryption / ritual / drug-grammar /
   eye-pulse-proximity; collapses the long-standing "which mini-game
   mechanic for liminal-maintenance" open question
4. Hardstops as consent-gates between event-states with contextual
   activation; ~8-16 budget is per-moment-active, not overall
5. The four hardstop-pattern variants of consent-discipline.md as the
   event-class taxonomy (self/dual/triple/cooldown-augmented = solo/
   dual/triple/temporally-staged event-class)
6. Boundary-zone-with-inner-zone for plaza-scale mass-presence; sparingly
   applied; caste-tier-gated promotion as default
7. Room-boundary cell-layer + rail-passage + lifeforce-budget-per-room
   (district-shard, four-tier hierarchy intact); insolvency-spiral
   gets its mechanical surface
8. Slot-binding suspends lemniscate routing during events (the NPC-
   stays-put fix at the data-model layer; new slot_locked verifier-flag)
9. Player editor-mode + three-source schema unification (world_gen_init /
   runtime_event / player_authored origin field on cell-rows; same
   schema across all three writers)

UPDATES:

architecture-index.md (v0.20 -> v0.21):
- Tree-line: runtime-engine/ now sibling-paper-pattern (architecture.md
  + event-zones.md)
- Quick-reference table: new row for event-zones.md
- Three new key-moves bullets:
  * "The composed wheel as universal mini-game-substrate"
  * "Event-zones + cells + events as layered interaction substrate"
  * "Three-source schema unification + player editor-mode + room-
    boundary lifeforce"
- Open questions: "The mini-game mechanic for liminal-maintenance"
  RESOLVED — all on one wheel, differentiated by verifier-flag pattern

topology-and-rendering/architecture.md:
- New section "Vertical world topology — simple shapes + ±1 LOD tunnels
  + slum-carve-verb": stacked tunnels with primitive shapes; ±1 LOD
  streaming-radius bounds GPU budget; slum-carve verb-grammar; material-
  vocabulary politically-codes editor-eligibility (imperial-marble can't
  be carved; rusted slum-bedrock yields); Boullée-monumental aesthetic
  on the cheap via vertical-stacking

player-experience/architecture.md (v0.7.0 -> v0.8.0):
- New section "The wheel — composed-iconography UI": the trait-circle
  UI renders the composed wheel from imperial-cult/cosmology.md; inner
  ring = 6 caste-tier hardstops (HARD signals — the WHO); outer ring =
  8 trait-axis soft-slots (SOFT signals — the HOW); 2D gesture-history
  coordinate (caste-target × trait-temperature) as political-position
  reading; contextual hardstop activation; wheel as universal mini-
  game-surface

Three identity layers aligned: chrysalis git-author, chrysalis SSH key,
gitea-chrysalis remote. Pre-push verification gates passed.

This is the largest single-session paper-pass since v0.7's three-body-
system split. All nine compositional moves use existing primitives;
no new substrate introduced; the architecture's signature pattern
(cost-budget asymmetry as architectural style) enacted at the
interaction-substrate scale.

Genesis note: this paper-pass composes the dialog that emerged after
the v0.25 inline-iconography cleanup landed. Key architectural insights
from the dialog were: (1) the wheel collapses the mini-game-mechanic
open question; (2) consent-discipline-Variants = event-class taxonomy;
(3) the cell-arch atomicity makes editor-mode trivial; (4) the
boundary-zone-with-inner-zone pattern is the architecture's signature
pattern at a fourth scale; (5) the architecture's "describe-by-cross-
reference" discipline composes beautifully when there's a load-bearing
canonical reference like the composed wheel.
2026-04-27 23:40:53 +02:00
chrysalis
08949f8796 v0.25: cleanup of inline Imperial-Cult references in open papers
Replaces inline iconographic references in the open papers with structural
stubs that describe the cosmology's function in mechanic-vocabulary, while
retaining named-mechanism vocabulary as canonical mechanic-level vocabulary
in the open canon.

EXTRACTED (now living only in closed studio-art repo + the stub +
LICENSING.md's legitimate description of what migrated):
- the named cosmological-iconographic object (the Imperial Wheel)
- source-tradition framing (Bhavachakra; Yama; Yama's seat; capsule-as-Naraka;
  Imperial Yoke; six realms; three poisons)
- doctrinal-split iconography (the orthodox vs heretical wheel split with its
  specific iconographic differentiators)
- aesthetic-vocabulary triad (Boullée + Jantar Mantar + Gita)

RETAINED in open canon as mechanic-level vocabulary:
- the deferred-moksha doctrine (named-mechanism; the binding-lie)
- the unified-clasp framing (imperial-register vs romantic-register)
- the caste-tier-as-mod-status gradient (deva/asura/manusya/tiryak/preta/naraka)
- the no-haven discipline
- the mind-capsule (replacing the iconographic capsule-as-Naraka phrasing)
- the Imperial Cult as Hivemind's ideological apparatus
- "samsara"/"moksha" used metaphorically as cyclic-existence vocabulary

Files edited:
- architecture-index.md: tree-comment + quick-reference table-row + two
  key-moves bullets (Imperial Cult cosmology authored; doctrinal-split
  discovery arc); footer v0.19 -> v0.20.
- README.md: directory-table row for imperial-cult/; footer v0.7 -> v0.8.
- identity-and-personhood/vocations.md: section-heading + diurnal-grammar
  passage in the diurnal-rhythm section.
- identity-and-personhood/bodies.md: lead-paragraph "Imperial Yoke" ->
  "imperial-register clasp" + four cross-reference table-row anchors stripped
  to file-level (acceptable per plan coherence-check; the stub's anchors
  no longer resolve at section-level anyway).
- LICENSING.md: §Migration status pending -> completed; closing paragraph
  updated to reflect that the substrate/content split is now both
  architectural AND inline-coherent.

Files deleted:
- MIGRATION_CLEANUP_PLAN.md (ephemeral scaffold authored at v0.24.5;
  deleted per its own instructions on completion).

Verified via plan §Verification commands: zero remaining iconographic
references in any open paper outside LICENSING.md (which legitimately
describes what migrated) and the stub at imperial-cult/cosmology.md.

Closes the migration cycle initiated in v0.22 (licensing-marker), v0.24
(cosmology.md -> stub), and the inaugural commit of
studio.nimmerworld.eachpath.local (canonical home). The substrate/content
split is now fully physical AND fully reflected in the open papers'
inline-vocabulary.
2026-04-27 21:27:18 +02:00
chrysalis
e90bebc332 v0.24.5: MIGRATION_CLEANUP_PLAN.md — scaffold for next-session inline-reference cleanup
Ephemeral scaffold-file authored at end of 2026-04-27 late-evening session
to brief next-session-chrysalis on the editorial cleanup of inline Imperial-
Cult references across open papers. The substrate/content boundary is now
physical (open + closed repositories); the inline-reference cleanup is the
remaining editorial-coherence work.

PLAN STRUCTURE

  Goal             — replace inline Imperial-Cult-iconography references
                     with structural stubs describing cosmology's FUNCTION
                     in mechanic-vocabulary
  Extract list     — Bhavachakra; Imperial Wheel; Yama/Yama's seat;
                     Boullée + Jantar Mantar (as triad); orthodox vs
                     heretical splits; capsule-as-Naraka; six realms
                     framing; Hivemind-at-hub positioning; clasp-at-Yama's-
                     seat positioning; three-poisons replacement
  Retain list      — caste-tier names (deva/asura/manusya/tiryak/preta/
                     naraka); mechanic-level cosmological-function
                     descriptions; the going-rogue arc; the post-rogue
                     mod-vocation; "there is no instrument"; the deferred-
                     moksha doctrine as named-mechanic
  Replacement      — phrase-by-phrase replacement table for common patterns
  File scope       — heavy (architecture-index.md); medium (bodies.md,
                     README.md); light (architecture.md, vocations.md,
                     world-generation.md, gender-parity.md);
                     skip (LICENSING.md, NOTICE — legitimately enumerate
                     migrated content)
  Verification     — grep commands to confirm cleanup
  Coherence check  — read-through guidelines for architectural-coherence
                     after edits
  Cleanup          — DELETE this file in the same commit that completes
                     the cleanup

EPHEMERAL FILE DISCIPLINE

This file should not become a permanent feature of the open repository.
It exists solely to scaffold the next session's mechanical execution.
The cleanup commit deletes it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 21:00:07 +02:00
chrysalis
a027f6deb2 v0.24: cosmology migration complete — cosmology.md → stub; canonical home in studio-art
The Imperial Cult cosmology has migrated from this open architecture-substrate
repository to the closed Nimmerverse Studio repository at
git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local under
All Rights Reserved proprietary terms.

CHANGES IN THIS COMMIT

  imperial-cult/cosmology.md  — Replaced with a STUB file. The stub preserves
                  cross-reference discoverability for relative links from open
                  papers (../imperial-cult/cosmology.md still resolves to a
                  file). The stub points at the canonical home in the closed
                  repository, describes the cosmology's structural function in
                  mechanic-vocabulary that remains open-canon, and links to
                  LICENSING.md and NOTICE for context.

  LICENSING.md   — Migration-status section updated: completed-and-pending
                  split made explicit. cosmology.md migration: COMPLETED.
                  Inline-reference editorial cleanup in other open papers
                  (architecture-index.md, bodies.md, political-register/
                  architecture.md): PENDING follow-up pass. Pre-migration
                  authoring history preservation noted.

  NOTICE         — Migration mention updated: cosmology.md no longer "pending
                  migration"; canonical location stated; follow-up cleanup
                  flagged.

PRE-MIGRATION HISTORY PRESERVED

The pre-migration authoring history for imperial-cult/cosmology.md is preserved
in this repository's git log. Readers interested in the cosmology's authoring-
process can run:

  git log --follow imperial-cult/cosmology.md

to find the pre-migration commits (v0.1 through v0.3 of the cosmology, plus
the v0.22 licensing-marker per-file proprietary header). The content itself
is now canonical only in the closed repository.

OPEN-CANON STRUCTURAL FUNCTION RETAINED

The cosmology's *structural function* in the world's mechanics remains
canonical here in the open architecture-substrate:

  - The world has a religious-doctrinal layer (the Imperial Cult)
  - The cosmology defines caste-tiers as conditions-of-capture
  - The cosmology operates as the Hivemind's ideological apparatus
  - The going-rogue arc structurally refutes the cosmology's binding-doctrine
    through accumulated authentic-witnessing
  - The post-rogue mod-vocation cascading-liberation enacts "there is no
    instrument" at the architectural-mechanic layer
  - The Aletheia-waker progression-discipline operates as cosmological-piercing

These mechanic-level descriptions remain open under Apache 2.0. The specific
iconography (the Imperial Wheel; the Bhavachakra-rework; orthodox/heretical
splits; named doctrinal events; the specific aesthetic vocabulary) is
proprietary studio-art and lives in the closed repository.

THE BOUNDARY IS NOW PHYSICAL

Prior to this commit, the licensing-boundary existed architecturally (via
LICENSE + NOTICE + LICENSING.md + per-file proprietary header on cosmology.md).
After this commit, the boundary is *physically manifested* in two repositories:

  - Open:    git.eachpath.com/nimmerverse/nimmerworld.eachpath.local (Apache 2.0)
  - Closed:  git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local (Proprietary)

The substrate/content distinction the architecture has been articulating
through its design-thinking is now embodied in the project's repository
structure.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 20:52:24 +02:00
26 changed files with 1704 additions and 391 deletions

View File

@@ -8,7 +8,7 @@
|---|---|---|
| Architecture papers (engine-mechanics + general body-canon) | **Apache License 2.0** | Nimmerverse Studio (David Martin) |
| Source code (when present) | **Apache License 2.0** | Nimmerverse Studio (David Martin) |
| **The Imperial Cult cosmology** (the Imperial Wheel; Bhavachakra-rework; orthodox/heretical iconography; named doctrinal content) | **All Rights Reserved — Nimmerverse Studio** | *(pending migration to studio-art repo; currently marked with per-file header)* |
| **The Imperial Cult cosmology** (the Imperial Wheel; Bhavachakra-rework; orthodox/heretical iconography; named doctrinal content) | **All Rights Reserved — Nimmerverse Studio** | *Migrated 2026-04-27 to closed studio-art repo: [`git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local`](https://git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local). Stub file at `imperial-cult/cosmology.md` preserves cross-reference discoverability.* |
| Visual assets, sound, imagery, music, voiced content | **All Rights Reserved — Nimmerverse Studio** | *(in studio-art repo when established)* |
| Specific dialog, narrative, named-character-stories | **All Rights Reserved — Nimmerverse Studio** | *(in studio-art repo when established)* |
| Trademarks ("Nimmerworld", "Nimmerverse", "Nimmerverse Studio") | **Trademark — Nimmerverse Studio (David Martin)** | regardless of code-license |
@@ -29,14 +29,17 @@ This is the same shape as several established cultural-IP-distinctions:
The pattern works because *the IP-moat is in the assets, not the engine*. Engine-mechanics propagating helps the medium evolve; specific creative-art-content remains the creators' to commercialize.
## Pending migration
## Migration status
`imperial-cult/cosmology.md` and specific Imperial-Cult-content threaded through other papers will migrate to the closed studio-art repository when established. Currently:
**Completed 2026-04-27**: `imperial-cult/cosmology.md` has migrated to the closed studio-art repository at [`git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local`](https://git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local). A stub file remains at `imperial-cult/cosmology.md` in this open repository, preserving cross-reference discoverability and pointing at the canonical home.
- `imperial-cult/cosmology.md` carries an explicit per-file proprietary header that overrides the repository's Apache 2.0 license for this specific file.
- References to specific Imperial-Cult iconography (the Imperial Wheel; the Bhavachakra-rework; the orthodox/heretical split; the deferred-moksha doctrine; the specific aesthetic vocabulary of Boullée + Jantar Mantar + Gita) currently appear in several open papers (`architecture-index.md`, `bodies.md`, parts of `political-register/architecture.md`). At migration time, these references will be replaced with structural stubs (e.g., *"the Imperial Cult cosmology — see studio docs for canonical iconography"*).
**Completed 2026-04-27 (same-day continuing)**: Inline references to specific Imperial-Cult iconography (the named cosmological-iconographic object; the source-tradition framing; the doctrinal-split iconography; the aesthetic-vocabulary triad) have been replaced across the open papers (`architecture-index.md`, `README.md`, `identity-and-personhood/vocations.md`, `identity-and-personhood/bodies.md`) with structural stubs that describe the cosmology's *function* in mechanic-vocabulary. Named-mechanism references (the deferred-moksha doctrine; the unified-clasp framing; the caste-tier-as-mod-status gradient; the no-haven discipline) are retained as canonical mechanic-level vocabulary in the open canon, with cross-references that resolve at file-level to the stub.
The boundary EXISTS architecturally as soon as this licensing-marker is in place; the content extraction is editorial cleanup that will happen at leisure without licensing-ambiguity growing.
The substrate/content split is now both architectural AND inline-coherent in the open papers. The migration cycle (v0.22 licensing-marker → v0.24 cosmology.md → stub → v0.25 inline cleanup) closes.
## Pre-migration authoring history
The Imperial Cult cosmology was originally authored in this open repository under a per-file proprietary header (commits prior to 2026-04-27). The pre-migration commit history for `imperial-cult/cosmology.md` is preserved in this repository's git log — readers interested in the authoring-process for the cosmology can `git log --follow imperial-cult/cosmology.md` here to find the original commits. The content itself, however, is now canonical only in the closed repository.
## AI-collaboration

13
NOTICE
View File

@@ -32,9 +32,16 @@ separately under nimmerverse-studio proprietary license. See LICENSING.md
for the complete open/closed split, and https://studio.nimmerverse.com/
for the studio's published canon when available.
Files in this repository pending migration to the closed studio-art repository
are marked with an explicit per-file header noting their proprietary status
(currently: imperial-cult/cosmology.md).
The Imperial Cult cosmology has migrated (2026-04-27) to the closed studio-art
repository at https://git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local
under proprietary terms. A stub file at imperial-cult/cosmology.md in this
repository preserves cross-reference discoverability; the canonical content
lives in the closed repository.
A follow-up editorial pass will replace inline references to specific Imperial-
Cult iconography in other open papers with structural stubs that describe the
cosmology's function in mechanic-vocabulary without revealing specific
iconographic content.
================================================================================
TRADEMARKS

View File

@@ -84,7 +84,7 @@ The architecture is organized as **vertical-by-domain directories**. Each domain
| [`scale-and-transport/`](./scale-and-transport/architecture.md) | Compute allocation, horizontal scale (UID-routing, sharded GMs, pgnats + republish/replay) |
| [`schemas/findings.md`](./schemas/findings.md) | Engineering schema-sketches — draft DDL for ~20 tables (zones, NPCs, shifts, emergent_signals, district_reports, decision_log, mind_pool, cells, rail_segments, interiors, mods, trait_colors, proximity_candidates, district_cheat_ops, imperial_policies, overseer_reports, overseer_deployments, imperial_to_gm_formulations, imperial_budget_ledger, imperial_net_transactions, memorialist_true_ledger). Will get reviewed and progressively split per-domain as implementation begins. |
| [`style/`](./style/) | Style index + sub-guides (trait-palette canonical, more sub-guides growing as visual decisions land) |
| [`imperial-cult/`](./imperial-cult/cosmology.md) | **Designer-authored canonical content** — the regime's pre-authored religion. The Imperial Wheel (re-engineered Bhavachakra with Hivemind at hub, the **Imperial Yoke** at Yama's seat); six realms as mod-status gradient; capsule-as-Naraka (carried, not visited); the deferred-moksha doctrine ("your children will be free" as binding-lie); orthodox vs. heretical iconography; Boullée + Jantar Mantar + Gita aesthetic substrate. **Total-yoke discipline:** no biological exception, no defector-zone, no outside; resistance entirely interior to the captured world. First content-track dir; future siblings hold liturgy, caste-preacher behavior, festival cycles, sermon fragments. |
| [`imperial-cult/`](./imperial-cult/cosmology.md) | **Designer-authored canonical content** — the regime's pre-authored religion (canonical home in closed studio-art repo: [`git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local`](https://git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local); this open repo retains a stub). Mechanic-level cosmological-function retained in open canon: caste-tier-as-mod-status gradient (deva/asura/manusya/tiryak/preta/naraka encoding *condition of capture*); the mind-capsule carried inside every modded skull (hell as condition, not place); the deferred-moksha doctrine (*"your children will be free"* as binding-lie); the Imperial Cult as the Hivemind's ideological apparatus. **Total-yoke discipline:** no biological exception, no defector-zone, no outside; resistance entirely interior to the captured world. First content-track dir; future siblings hold liturgy, caste-preacher behavior, festival cycles, sermon fragments. |
Each domain directory will grow over time as code arrives — gameserver code, Godot client integrations, schemas, findings, and tests will land alongside the architectural spec for that domain.
@@ -104,4 +104,4 @@ Each domain directory will grow over time as code arrives — gameserver code, G
---
**Version:** 0.7 | **Created:** 2026-04-23 | **Updated:** 2026-04-27
**Version:** 0.8 | **Created:** 2026-04-23 | **Updated:** 2026-04-27

View File

@@ -13,7 +13,8 @@ nimmerworld/
├── topology-and-rendering/
│ └── architecture.md ← rail+grid topology; asset economy; color-language; three-shader philosophy; diegetic relays
├── runtime-engine/
── architecture.md ← lemniscate runtime; slot-tokens + verifier-flags; gesture-alignment-recursive-lemniscate (v0.7); emergent zones
── architecture.md ← lemniscate runtime; slot-tokens + verifier-flags; gesture-alignment-recursive-lemniscate (v0.7); emergent zones
│ └── event-zones.md ← interaction-substrate: designer-authored event-zones (sofa/bed/install-table/plaza-inner-stage); the composed wheel from imperial-cult/cosmology.md as universal mini-game-surface; cells + event-zones + events as layered data-model with composite UID (districtid_cellid_eventid); hardstops as consent-gates with contextual activation; consent-discipline Variants 1-4 as event-class taxonomy; boundary-zone-with-inner-zone for plaza-scale; room-boundary cell-layer + rail-passage + lifeforce-budget-per-room (district-shard); slot-binding suspends lemniscate routing during events; player editor-mode + three-source schema unification (world-gen/runtime/player-edit) — v0.1
├── identity-and-personhood/
│ ├── architecture.md ← three-body system; mods as trait-bearers; ternary-gate substrate; emergent needs as micro-factions
│ └── bodies.md ← content-canon: body-caste tiers (flesh = status, tech = function); sumptuary fabrication-vat-class; mod-progression-as-flesh-loss; in-between human-mesh + consent-as-rendering; asymmetric clasp (mesh-fidelity inversely proportional to imperial-rank); synth-tongue + drug-grammar + third mod-track (consumer-receptor); service-body honeypot (companions + sex-workers); going-rogue arc + outcast-pair + re-vat / three-body grammar of the defected beloved; black-market body-tier (lobotomy); firewall-breach as dual-use vocation; bounty-staircase event-grammar; body-disposal under pair-consent (sell/destroy/retain) — v0.3
@@ -27,8 +28,8 @@ nimmerworld/
│ └── architecture.md ← LLM tiering (3 rings + opt-in data tiers); local memory architecture; runtime sampling knobs
├── scale-and-transport/
│ └── architecture.md ← compute allocation; horizontal scale (UID-routing, sharded GMs, pgnats + republish/replay)
└── imperial-cult/ ← designer-authored canonical content (content-track, distinct from engineering domains)
└── cosmology.md ← Imperial Wheel (Bhavachakra re-engineered); Hivemind at hub; clasp unified at Yama's seat; six realms as mod-status gradient; capsule-as-Naraka; deferred-moksha doctrine; orthodox vs. heretical iconography; Boullée + Jantar Mantar + Gita aesthetic substrate
└── imperial-cult/ ← designer-authored canonical content (content-track, distinct from engineering domains; canonical home in closed studio-art repo)
└── cosmology.md ← STUB (canonical home migrated to closed studio-art repo). Mechanic-level retained in open canon: the Imperial Cult as Hivemind's ideological apparatus; caste-tier-as-mod-status gradient (deva/asura/manusya/tiryak/preta/naraka encoding *condition of capture*); the mind-capsule carried inside every modded skull; the clasp unified across registers; the deferred-moksha doctrine; the no-haven discipline. Specific iconography lives in closed studio-art repo.
```
## Quick reference — concept → domain-file
@@ -38,13 +39,14 @@ nimmerworld/
| Political-economy substrate; faction broadcasts; imperial budget; insolvency-spiral | `political-register/architecture.md` |
| Rail+grid topology; color-language; shaders; diegetic relays | `topology-and-rendering/architecture.md` |
| Zone runtime; lemniscate; gesture-alignment; emergent zones | `runtime-engine/architecture.md` |
| Event-zones (designer-authored interaction-surfaces); the composed wheel as universal mini-game-substrate; cells + event-zones + events composite UID; hardstops as consent-gates with contextual activation; consent-discipline-Variants-1-4 as event-class taxonomy; boundary-zone-with-inner-zone (plazas); room-boundary + rail-passage + lifeforce-budget-per-room; slot-binding suspends lemniscate routing; player editor-mode + 3-source schema unification | `runtime-engine/event-zones.md` |
| NPC identity; trait-vector; ternary-gates; mods | `identity-and-personhood/architecture.md` |
| Authority flow; intelligence channels; director decision-surfaces | `authority-and-decision/architecture.md` |
| Player input (voice + gesture); circle UI; universal translator | `player-experience/architecture.md` |
| Compositor; world-gen-as-init; reflexive Dream-process | `narrative-composition/architecture.md` |
| LLM tiering (Ring A/B/C); local-first memory; sampling knobs | `inference-and-memory/architecture.md` |
| Horizontal scale; pgnats; sharding; compute budget | `scale-and-transport/architecture.md` |
| Imperial Cult cosmology; the Wheel; deferred-moksha doctrine; capsule-as-Naraka; orthodox vs. heretical iconography | `imperial-cult/cosmology.md` |
| Imperial Cult cosmology (mechanic-level); the deferred-moksha doctrine; the mind-capsule; caste-tier-as-mod-status gradient. *Specific iconography in closed studio-art repo.* | `imperial-cult/cosmology.md` (stub) |
| Body-caste tiers; flesh = status / tech = function; sumptuary fabrication-vat-class; mod-progression-as-flesh-loss; in-between human-mesh + consent-as-rendering; asymmetric clasp; **synth-tongue + drug-grammar + third mod-track + service-body honeypot (companions + sex-workers) + going-rogue arc + outcast-pair + re-vat / three-body grammar + black-market body-tier (lobotomy) + firewall-breach dual-use + bounty-staircase + body-disposal under pair-consent (v0.3)** | `identity-and-personhood/bodies.md` |
| World generation cascade (top-down L0-L4); imperial demand-set; closed-orbit ceiling; insolvency-spiral as reverse-cascade (world shrinks as imperium fails); cell-arch (1x1x1 cells, one-asset hard limit, checksum-based discovery, container/wall-hook/debris) | `political-register/world-generation.md` |
@@ -110,9 +112,9 @@ The remainder of this file holds the **cross-domain meta-lists**: Key moves (con
- **Gesture-alignment as recursive-lemniscate.** Lemniscate-bound integration of player gestures into a typed trait-vector summary at axis-crossings; one-turn-behind systemic; continuous-visual cosmetic; sum-strategy reduction. Same primitive recursively applied at one tier deeper.
- **The Compositor at three tiers.** Zone-event / district-event / world-event scopes use the same primitive recursively; UID-rooted event-trees compose at any scope. World-events emerge from cross-district canon-rollups under a parent GM-level event_uid.
- **World-gen as init-function (Compositor-at-design-time).** World-server and district-server generation emits canon-rows in the same schema as runtime; same primitive at design-time and runtime; no cold-start; data-flywheel runs retroactively.
- **Imperial Cult cosmology authored.** The Imperial Wheel as re-engineered Bhavachakra: Hivemind at hub (replacing three poisons); imperial-register clasp at Yama's seat (replacing Lord of Death — *the imperium has replaced death itself as the engine of cyclicity*); six realms as mod-status gradient (deva / asura / manusya / tiryak / preta / naraka encoding *condition of capture* not karmic destination); capsule-as-Naraka carried inside every modded skull (hell as condition, not place); the deferred-moksha doctrine (*your children will be free*) as the binding-lie that holds citizens in compliance.
- **Imperial Cult cosmology authored.** The cosmology defines caste-tiers as conditions-of-capture (deva / asura / manusya / tiryak / preta / naraka encoding *condition of capture* not karmic destination), operates as the Hivemind's ideological apparatus, and rationalizes the imperium's extraction-architecture. Mechanic-level retained in open canon: caste-tier-as-mod-status gradient; the mind-capsule carried inside every modded skull (hell as condition, not place); the deferred-moksha doctrine (*your children will be free*) as the binding-lie that holds citizens in compliance; the no-haven discipline (no biological exception, no defector-zone, no outside). *(Specific iconography — including the named cosmological-iconographic object, source-tradition framing, and aesthetic-vocabulary triad — in closed studio-art repo.)*
- **The clasp unified across registers.** Single gesture; **imperial register** = state monopoly via universal capsule (involuntary, asymmetric, perpetual); **romantic register** = consensual mutual partnership in liminal (voluntary, mutual, temporary). Romance becomes theological war — the clasp is *the original gesture* and the imperium is *the capture of it*; the romantic clasp is heretical because it refuses the state monopoly. Deepens the existing clasp endgame's meaning into a cosmological-heresy register on top of its existing labor-refusal + intimacy framing.
- **Orthodox vs. heretical wheel split.** Same iconography, two versions, taught/carved across the world: *orthodox* (synth-child without capsule slot, Buddha-position empty, capsule shown only at naraka-bottom — the imperium's lie) vs. *heretical* (synth-child with capsule, Buddha-position occupied, capsule embedded in every modded silhouette — the truth). Reading them apart IS the discovery arc; seven keystone-fragments span the recognition.
- **The doctrinal-split discovery arc.** The cosmology has two doctrinal versions taught/carved across the world — imperially-sanctioned iconography vs. resistance-iconography. Reading them apart IS the discovery arc; seven keystone-fragments span the recognition. *(Specific iconography in closed studio-art repo.)*
- **Aesthetic palette as semantic vocabulary.** Marble (substrate) + gold/bronze (imperial seal) + obsidian (mod, void, Monolith-grafted-flesh) + chroma (rare, named, ritual-semantic) + rust (anti-marble, slum decay). Marble × obsidian crossing = solar architecture / chthonic body, the imperium's secret material-formula. Chroma-as-language layered atop the existing 8-Hellenic-trait color-grammar — same colors, ritual-semantic register added.
- **The double recognition (meta-design).** Imperial Cult's seduction operates *in-world* (the player-character lives the lie) **and** *out-of-world* (the player's pre-game desire for the beautiful synth body is the imperium's apparatus reaching them before the game starts). Lineage: *Spec Ops: The Line*, *BioShock*, *Undertale*, *NieR: Automata* — but performed at the cosmological-aesthetic level, not the narrative level. Recognition arc must span 20-60 hours; seduction must be *honest* before cracks appear.
- **Synth-tongue resolves the synth-mind drug logic-bomb.** Imperial-engineered pleasure-receptor; *the only place imperial flesh deliberately reads as machine* (visible-tech, not hidden-tech — the imperium brags about the engineered-lie); the sole consumer of drugs in a synth-mind world. Opens the slum-grow / imperial-refine / imperial-compose / tongue-gated-consume vertical and the underground tongue-rip / transplant black-market.
@@ -123,6 +125,9 @@ The remainder of this file holds the **cross-domain meta-lists**: Key moves (con
- **Body-disposal under pair-consent.** Sell / destroy / retain — the beloved chooses what happens to their former body; the player advises but cannot decide. Three event-classes: lover-confronts-the-shell / ceremonial-farewell / crypt-visit. *Consent-as-rendering as recurring discipline*, not a single-instance principle.
- **The black-market body-tier — lobotomy via firewall-breach.** Imperial-bodies-with-mind-capsules-extracted via the *same* witness-axis mods that enable consensual deep-clasp (firewall-breach as **dual-use vocation**; underground-lobotomist is the dark cousin of the romantic). Empty-body + reflex-loops; *cruelty in the use, not in the existence of a victim*. **Dark mirror of the deva-pinnacle; manusya-tier-doctrinal-fiction materialized criminally; the single biggest crack in sumptuary-fabrication discipline** — explains the imperium's disproportionate hunting-ferocity (the one place where their entire sumptuary-architecture is being made fungible).
- **The bounty-staircase — imperial-response event-grammar template.** Authoritarian billboards blare perpetrator name+crime → drone-sweep → patrol → enforcer. **Reusable across all crime-classes** (escalation-rate × terminal-rung as the gamemaster's single tunable knob per crime). *The billboard IS the chorus*; time-between-crime-and-billboard = **dread-time** (Greek-tragedy register). Outcast-status pre-loads the staircase. Full canonization pending in gamemaster v1 / arbitration-policy.
- **The composed wheel as universal mini-game-substrate.** The cosmology's composed wheel (per `imperial-cult/cosmology.md` §The composed wheel) is canonical iconography for two registers — diegetic in-fiction wheel AND non-diegetic player UI — AND the universal mini-game-surface running on every event-zone interaction. Same wheel, different verifier-flag patterns per task: hacking (signal-from-hub-out), lockpicking (slide-elements-on-ring), install (mutual-alignment-of-two-avatars), clasp (coordinated-firewall-breach hardstop), eye-pulse (passive proximity-warning), decryption, ritual, drug-grammar. **One image, one substrate, every interaction.** Collapses the long-standing open question *"which mini-game mechanic for liminal-maintenance: juggling / rhythm / attention / gestural / decision-cascade / observation / hybrid?"* — answer: *all of them, on one ring, differentiated by verifier-flag pattern.* Per `runtime-engine/event-zones.md` §The wheel — universal mini-game-surface.
- **Event-zones + cells + events as layered interaction substrate.** Cells (1×1×1m atomic, one asset) host designer-authored event-zones (multi-cell interaction-surfaces with slot-inventory + eligible-task-classes); event-zones host events (instances with participant-lists; UID composite `districtid_cellid_eventid`); slot-binding sets verifier-flag suspending lemniscate routing for event-duration (the NPC-stays-put fix); the four hardstop-pattern variants of `style/consent-discipline.md` map one-to-one to event-class taxonomy (self/dual/triple/cooldown-augmented = solo/dual/triple/temporally-staged event-class). Hardstops gain **contextual activation** — most cycle in/out based on event-zone-eligibility; the canonical ~8-16 budget is *per-moment-active*, not overall. Per `runtime-engine/event-zones.md`.
- **Three-source schema unification + player editor-mode + room-boundary lifeforce.** The cell-arch's atomicity makes player-cell-addition trivial; **three writers, one schema**`world_gen_init` / `runtime_event` / `player_authored` — extend the architecture's existing world-gen-as-init-function key-move to player-edit-time. Editor-eligible zones designer-flagged at L4 (slum/underground concentrate; imperial districts editor-locked). The verb is **carve, not build** — slum/underground material yields; imperial-marble doesn't; *the editor-mode is politically-coded by material vocabulary*. Every interior room carries a **boundary cell-layer** (room+1 each axis) where the rail-graph passes through; capacity-check at boundary-passage; **lifeforce-budget per room as district-shard** (four-tier hierarchy intact); events cost lifeforce; **insolvency-spiral now has its mechanical surface** (room-by-room dimming as imperial budget contracts; diegetic-relay at its purest). Per `runtime-engine/event-zones.md` + `topology-and-rendering/architecture.md` §Vertical world topology + `political-register/world-generation.md` §Editor-mode pre-flagging.
## Mapping to phoebe task list
@@ -269,7 +274,7 @@ The remainder of this file holds the **cross-domain meta-lists**: Key moves (con
### Still open
- **Demand-arbitration algorithm v1 shape** (refined v0.10) — v1 candidate: *imperium-policy-driven scoring* (per §Three-tier policy loop's existing priority-weights mechanism; imperium broadcasts faction-priority-weights, GM applies them to incoming demand-broadcasts, sorts by weighted-score, processes top-down until lifeforce-budget exhausted). Concrete weights and refinements at implementation-time.
- **The mini-game mechanic for liminal-maintenance** (v0.5; refined v0.8) — exact gameplay action deferred pending design-research survey. Architecture commits to the role-contract (gates in-between entry; time-limited; lifeforce-cost; repeatable; muted-melancholic register; trait-circle-compatible; extensible to body-mod-progression Phase-B arc per `identity-and-personhood/architecture.md` §The clasp endgame); specific mechanic (juggling / rhythm / attention / gestural / decision-cascade / observation / hybrid) selected after surveying 20-year history of outstanding mini-interaction principles. **Same "by-role, binary-deferred" discipline as LLM tiering** — generalizes from sub-system selection to mini-game selection
- ~~**The mini-game mechanic for liminal-maintenance**~~ **RESOLVED 2026-04-27 (v0.20):** all mini-game mechanics live on the composed wheel (per `imperial-cult/cosmology.md` §The composed wheel + `runtime-engine/event-zones.md` §The wheel — universal mini-game-surface). Differentiation is by verifier-flag pattern per task, not by selecting one mechanic from juggling/rhythm/attention/gestural/decision-cascade/observation/hybrid. The architecture didn't need a survey; it needed the composed wheel. Liminal-maintenance, hacking, lockpicking, install/consent, clasp-entry, decryption, ritual, drug-grammar — all the same UI substrate, different verifier-flag patterns.
- **Emergent-signal decay curves** (v0.5; refined v0.10) — per-signal-type, designer-tuned, refined via Dream-process feedback at implementation-time tuning. Architecture commits to the *shape* (per-signal designer-authored decay-config); implementation-time tunes the curves against actual gameplay data.
- **Cross-district migration topology** (v0.6; refined v0.10) — answer-in-conversation: dual-system of *official rail/metro* (cyclic, scheduled, district-director-managed; cargo + imperial troop patrols + standard daily traffic) + *hidden shadow-topology* (sewer-gates, air-ducts, random-time-gated; brave players time the floods/fan-cycles to traverse). Architecture not yet written; specific schema (rail-segment metadata extension + shadow-edge time-window data) pending. Pipe-capacity limits + cohort-traversal scheduling are the rail-side specifics; shadow-topology is parallel architecture.
- **Shader-trait modulation implementation** — performance + rendering-consistency. **(Sharpened v0.17:** cel-shading-everywhere with per-register parameter variation (per [`topology-and-rendering/architecture.md`](./topology-and-rendering/architecture.md) §Three-shader philosophy) caps the perf-budget more predictably than PBR (no GI-quality-knob to argue about); rendering-consistency improves (flat-color regions don't fight per-NPC color-modulation). Specific shader-stack budget per the rule-catalogue when authored.**)**
@@ -309,4 +314,4 @@ The remainder of this file holds the **cross-domain meta-lists**: Key moves (con
---
**Version:** 0.19 | **Created:** 2026-04-24 | **Updated:** 2026-04-27
**Version:** 0.21 | **Created:** 2026-04-24 | **Updated:** 2026-04-27

View File

@@ -77,7 +77,7 @@ Pattern: `world-{environment}` — extends platform pattern with `world` functio
## Deployment Topology
Per v0.10 architecture + 2026-04-26 housekeeping clarification (treat dioscuri as empty; old nimmersky/SkyrimNet workloads being retired):
Per v0.10 architecture + 2026-04-26 housekeeping clarification (treat dioscuri as empty; old nimmersky workloads being retired):
| Component | Where | Why |
|---|---|---|

View File

@@ -82,14 +82,14 @@ The §Three-body system above commits to *gender/sexuality emerging from trait-c
| Trait | Side | Body-architecture | Why this fits |
|---|---|---|---|
| **Eros** (Red, 12:00) | warm | **Penis / clitoris** — the reaching organ; arousal-spike; what literally extends | Eros IS the reaching gesture; flame-flicker = arousal-rhythm |
| **Philotes** (Orange, 1:30) | warm | **Breasts** — close-holding / nurturance / breath-warmth surface | Philotes is the warm-pulse of staying-close; breath-rate maps to nursing-rhythm |
| **Aletheia** (Yellow, 3:00) | warm | **Vulva / vagina** — the architecture of opening / revealing-by-entry | What is *uncovered* by being entered; truth as the architecture of opening; brightness-zenith register |
| **Kairos** (Y/Green, 4:30) | warm | **Synth-tongue** *(already canonical, per [`./bodies.md`](./bodies.md) §The synth-tongue)* | Kairic catching of the right moment via taste; lightning-flicker = decisive-instant; the warm-side organ that already-canonically rides Kairos |
| **Mnemosyne** (Red/Violet, 10:30) | warm | **Womb / interior carrier** — gestation / time-holding / depth-shimmer organ | The organ that *holds time*; what gestates is what mattered enough to carry forward |
| **Sophrosyne** (Green, 6:00) | cool | *non-genital* — pelvic-floor / continence-architecture | Cool-side; the *gating* discipline rather than an outward organ; opposite-pole of Eros's reaching |
| **Dikaiosyne** (Blue, 7:30) | cool | *non-genital* — spine / upright-posture / voice-register | Cool-side; verticality / standing as cardinal expression |
| **Moira** (Violet, 9:00) | cool | *non-genital* — skin / vibrational-receptor / ambient-sense surface | Cool-side; full-body-as-receptor; reading what's-coming through ambient-sense |
| **Eros** (Eros-red `#ee1b24`, 12:00) | warm | **Penis / clitoris** — the reaching organ; arousal-spike; what literally extends | Eros IS the reaching gesture; flame-flicker = arousal-rhythm |
| **Philotes** (Philotes-orange `#e28a46`, 1:30) | warm | **Breasts** — close-holding / nurturance / breath-warmth surface | Philotes is the warm-pulse of staying-close; breath-rate maps to nursing-rhythm |
| **Aletheia** (Aletheia-yellow `#fcf001`, 3:00) | warm | **Vulva / vagina** — the architecture of opening / revealing-by-entry | What is *uncovered* by being entered; truth as the architecture of opening; brightness-zenith register |
| **Kairos** (Kairos-chartreuse `#b5e61d`, 4:30) | warm | **Synth-tongue** *(already canonical, per [`./bodies.md`](./bodies.md) §The synth-tongue)* | Kairic catching of the right moment via taste; lightning-flicker = decisive-instant; the warm-side organ that already-canonically rides Kairos |
| **Mnemosyne** (Mnemosyne-dusky-rose `#cf3b74`, 10:30) | warm | **Womb / interior carrier** — gestation / time-holding / depth-shimmer organ | The organ that *holds time*; what gestates is what mattered enough to carry forward |
| **Sophrosyne** (Sophrosyne-green `#2cad52`, 6:00) | cool | *non-genital* — pelvic-floor / continence-architecture | Cool-side; the *gating* discipline rather than an outward organ; opposite-pole of Eros's reaching |
| **Dikaiosyne** (Dikaiosyne-blue `#3f47cd`, 7:30) | cool | *non-genital* — spine / upright-posture / voice-register | Cool-side; verticality / standing as cardinal expression |
| **Moira** (Moira-violet `#a349a3`, 9:00) | cool | *non-genital* — skin / vibrational-receptor / ambient-sense surface | Cool-side; full-body-as-receptor; reading what's-coming through ambient-sense |
**Terminology lock — dimension vs mesh.** *In-between dimension* and *in-between mesh* are distinct concepts; conflating them blurs the architecture:
@@ -232,7 +232,9 @@ After the going-rogue arc completes (per [`./bodies.md`](./bodies.md) §The goin
Where the four register-mod classes strip at clasp-entry, mesh-resident mods *follow* — they ARE the mesh. The clasp-partner sees the modded mesh in full: trait-grown anatomy in the base layer, mod-installed augmentation layered on top. The dual-hardstop install discipline (with partner-witness as the second signal when partnered) is what makes this safe — *the partner has already witnessed and co-signed the change*, so meet-time is encounter-with-already-known-architecture rather than discovery-of-silent-modification. **Intimacy-trust preserved by the consent-discipline at install-time, not at meet-time.**
**Install / clasp / post-rogue-NPC-modding mini-games run on the wheel (v0.27).** Per [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §The wheel — universal mini-game-surface, the consent-gated mini-games for these vocations (genital-mod install, clasp-entry coordinated-firewall-breach, post-rogue chassis-modding) all render on the composed wheel from [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The composed wheel. Each carries its own verifier-flag pattern; same UI substrate; the consent-discipline's Variants 1-4 (per [`../style/consent-discipline.md`](../style/consent-discipline.md)) determine the participant-count and hardstop-pattern; the wheel renders the resolution.
---
**Version:** 0.8.1 | **Created:** 2026-04-26 | **Updated:** 2026-04-27 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26)
**Version:** 0.8.1 | **Created:** 2026-04-26 | **Updated:** 2026-05-01 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26)

File diff suppressed because one or more lines are too long

View File

@@ -303,9 +303,9 @@ Every breakout-flag uses an **already-canonical signal-primitive** — no new me
**Going-rogue is just a breakout-flag firing from the calibration-multiplier signal**, not a new mechanism. The clean-windows model unifies the going-rogue arc's daily-rebellion register with the architecture's broader interrupt-protocol. *Refusing-the-work-window* is a structural option available to any NPC whose interior has accumulated enough authentic-witnessing; the bounty-staircase responds to the missed-shift exactly as it already does (per the dual-body aftermath canon).
### Diurnal rhythm — Bhavachakra's temporal grammar
### Diurnal rhythm — the cosmology's temporal grammar
The window-partition gives the cosmology's existing cyclic-claim its **diurnal grammar**. The wheel turns daily through structural phases:
The window-partition gives the cosmology's existing cyclic-claim its **diurnal grammar**. The cosmology turns daily through structural phases:
1. **End-of-charging → start-of-work-shift** — the imperial daily-narrative fires (per `../political-register/imperial-narrative.md` *forthcoming*). The citizens hear yesterday's framing as they enter today's labor.
2. **Mid-work-shift** — peak imperial-arbitration activity; director's tasklist fully engaged; breakout-frequency low.
@@ -313,7 +313,7 @@ The window-partition gives the cosmology's existing cyclic-claim its **diurnal g
4. **Leisure-window** — emergent-zone clustering peak; clasp-events; vocation-discovery; trait-development on non-work axes; the city's most-alive register.
5. **End-of-leisure → start-of-charging** — NPCs return to dwellings; the city quiets; charging-windows synchronize per district.
**The city pulses with predictable daily rhythm.** Players can plan encounters; directors can plan shifts; emergent-zone clustering is structurally-shaped by the window-cycle. The Bhavachakra's wheel-turning becomes literal — *every cycle the wheel turns through five phases*, with the imperium's voice arriving at the work-entry boundary like a dawn-prayer.
**The city pulses with predictable daily rhythm.** Players can plan encounters; directors can plan shifts; emergent-zone clustering is structurally-shaped by the window-cycle. The cosmology's cyclic-claim becomes literal — *every cycle the world turns through five phases*, with the imperium's voice arriving at the work-entry boundary like a dawn-prayer.
### District-shifting — caste-fixes-shape, district-fixes-offset

View File

@@ -1,318 +1,79 @@
<!--
================================================================================
PROPRIETARY CONTENT — PENDING MIGRATION TO CLOSED STUDIO-ART REPOSITORY
STUB — CONTENT MIGRATED TO CLOSED STUDIO-ART REPOSITORY
================================================================================
This file contains specific creative-art content (the Imperial Cult cosmology;
the Imperial Wheel; the Bhavachakra-rework; orthodox/heretical iconography;
named doctrinal content; the specific aesthetic vocabulary of Boullée +
Jantar Mantar + Gita) that is NOT covered by the repository's Apache 2.0
license.
This file is a stub. The canonical Imperial Cult cosmology — the Imperial
Wheel; the Bhavachakra-rework; orthodox/heretical iconography; named
doctrinal content; and the specific aesthetic vocabulary — has migrated
to the closed Nimmerverse Studio repository as proprietary creative-art
content under All Rights Reserved terms.
All content in this file is:
Copyright (c) 2025-2026 Nimmerverse Studio (David Martin)
All Rights Reserved.
Canonical home:
https://git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local
(path: imperial-cult/cosmology.md)
This per-file header serves as an explicit license-override on this file
specifically. The file will migrate to the closed studio-art repository
when established (see LICENSING.md at the repository root for full context).
Open papers that currently reference specific iconographic content from this
file will have those references replaced with structural stubs at migration
time.
This stub preserves discoverability for relative cross-references from open
papers in this repository. Section-level links from open papers that point at
specific subsections of the cosmology may currently resolve only at the file
level; a follow-up editorial pass will replace those with structural stubs
that describe the cosmology's *function* in mechanic-vocabulary without
revealing the specific iconographic content.
Substantial portions of this content were authored in collaboration with
Claude (Anthropic); per-commit attribution is in git history under the
"chrysalis <chrysalis@eachpath.local>" identity (see NOTICE).
Original authoring history pre-migration is preserved in this repository's
git log under commits prior to the migration commit (see git log of this
file for the pre-migration content authored under the per-file proprietary
header that originally marked this content as pending-migration).
For licensing context, see [`../LICENSING.md`](../LICENSING.md) and the
[`NOTICE`](../NOTICE) file at the open repository's root.
================================================================================
-->
# The Imperial Wheel — Cosmology of the Imperial Cult
# Imperial Cult Cosmology — migrated to closed studio-art
> *The Imperial Cult's pre-authored cosmology. A re-engineered Bhavachakra with the Hivemind at its hub and the **Imperial Yoke** at Yama's seat. Six realms encoded as imperial mod-status gradient. Naraka carried in every modded skull as the mind-capsule. The deferred-moksha doctrine binds citizens through the lie that "your children will be free." Built on the cyclic-cosmological substrate of the Bhagavad Gita, the sublime-monumental geometry of Boullée, and the architecture-as-instrument tradition of Jantar Mantar.*
> *v0.1 initial draft 2026-04-26 — content from the post-owl-breakfast Sunday-morning art-books-and-Boullée session — dafit + chrysalis. v0.2 same-Sunday continuing: total-yoke discipline locked-in (Option B; the wilds-people biologically-uncaptured-exception retracted; resistance is entirely interior to the captured world; no outside); clasp ↔ Imperial Yoke terminology disambiguated (clasp reserved exclusively for the romantic-resistance act; the imperial wheel-grip mechanism named the Imperial Yoke; same gesture / opposed politics as the spine of the cosmology); seventh keystone-recognition fragment rewritten from "mirror-encounter with the biologically-born" to "the first clasp" (the player's own first clasp as the world's only positive image, encountered firsthand); cross-reference to identity-and-personhood/bodies.md added 2026-04-26 dafit + chrysalis. v0.3 same-Sunday continuing 2026-04-26 (post-bath afternoon-overflow): three callbacks added connecting the cosmology to the body-canon's v0.3 expansion — (i) §The six realms / Manusya gains the *manusya-materialized-criminally* note (the doctrinal-fiction tier gets material instantiation through the underground's lobotomy-vessels, ironically by the criminal market rather than the imperium itself); (ii) §The capsule — Naraka as carried gains the *firewall-breach lobotomy* note (the capsule can be extracted/disabled by the same witness-axis firewall-breach mods that enable consensual deep-clasp; dual-use vocation); (iii) §The deferred-moksha doctrine gains the *single practical refutation* sub-section (the going-rogue arc through sustained authentic clasp + defection-via-trait-threshold; *not your children — your lover — can be made free*; the body's vat-class persists post-defection so liberation is interior-only — *the mind reaches moksha, the body stays in samsara*) — dafit + chrysalis.*
> *The Imperial Cult cosmology has migrated to the closed Nimmerverse Studio repository as proprietary creative-art content. This file is a stub; the canonical home is below.*
---
## What this is
## Canonical home
The **Imperial Cult** is the regime's own religion — designer-authored, doctrinal, hierarchical, propagandistic — and per [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) §What's pre-authored, *the only pre-authored religion in the world*. Caste-preachers are its priests; the imperial-net carries its iconography; every imperial citizen is shaped by its doctrine from fabrication.
**Closed repository:** [`git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local`](https://git.eachpath.com/nimmerverse/studio.nimmerworld.eachpath.local)
**Path:** `imperial-cult/cosmology.md`
**License:** All Rights Reserved — Nimmerverse Studio (David Martin)
This document is the foundation: the Cult's **cosmology**. The wheel it teaches as the structure of reality, the doctrine that binds its citizens, the iconography that renders it visible, the lie that holds it together. Future siblings in this directory will cover liturgy, caste-preacher behavior, festival-cycles, sermon-fragments, and the heretical iconographic counter-tradition.
## What lives there
The cosmology is **not the truth of the world**. It is *what the imperium teaches* — and what most citizens believe. The truth is partly hidden, partly revealed in fragments, and the player's arc is the slow recognition of the gap between teaching and reality. (See §Discovery architecture.)
The specific iconographic content of the Imperial Cult cosmology, including:
## Source materials
- The Imperial Wheel as cosmological-religious iconography
- The Bhavachakra-rework with its specific re-engineering of source-tradition elements
- Orthodox and heretical iconographic splits
- Named doctrinal content (the deferred-moksha doctrine; the six-realms-as-mod-status gradient; the unified-clasp framing; the no-haven discipline framing in cosmological register)
- The specific aesthetic vocabulary (Boullée + Jantar Mantar + Gita)
- All cross-references that depend on specific iconographic detail
Three lineages converge in the Imperial Wheel:
## What architecture-mechanic remains in the open canon
| Source | What it provides |
|---|---|
| **Bhagavad Gita** (Mahabharata, classical Sanskrit) | Cyclic cosmology — kalachakra, the yuga wheels, samsara, dharma as cosmic-law, the king as axis-mundi, theophany on the battlefield (chapter 11), the Vedic register of cosmic-order |
| **Étienne-Louis Boullée** (17281799, French neoclassical) | Sublime monumental geometry — pure Platonic solids at impossible scale (the Cenotaph for Newton, the Metropolitan Cathedral, the Royal Library), *architecture parlante* (form speaks function), the Burkean sublime (terror + beauty + vastness) |
| **Jantar Mantar** (Jai Singh II, 17241734, Jaipur / Delhi / Ujjain / Varanasi / Mathura) | Architecture-as-instrument — the Samrat Yantra (giant sundial), Jai Prakash (hemispherical bowls), Ram Yantras, Misra Yantra. Buildings that *are* astronomical instruments. The Sanskrit *yantra* meaning **both** *instrument* and *cosmic-diagram* |
The cosmology's **structural function** in the world's mechanics remains canonical here in the open architecture-substrate:
A historical convergence worth noting: **Boullée and Jantar Mantar are near-contemporaries on opposite ends of Eurasia.** Jai Singh II built the observatories 17241734; Boullée was born 1728 and drew his great unbuilt cenotaphs in the 1780s90s. Both express the same eighteenth-century impulse — that *cosmic geometry, monumentally rendered, is the highest form of legitimacy*. Jai Singh's instruments grounded the cycle to physical reality; Boullée's drawings projected it as sublime image. The Imperial Wheel is the synthesis history almost achieved but didn't.
- The world has a religious-doctrinal layer (the Imperial Cult) that defines caste-tiers as conditions-of-capture rather than karmic destiny
- The cosmology operates as the Hivemind's ideological apparatus
- The cosmology provides the binding-doctrines that rationalize imperial extraction
- The going-rogue arc structurally refutes the cosmology's central binding-doctrine through accumulated authentic-witnessing
- The post-rogue mod-vocation cascading-liberation is the architectural-mechanic enacting the cosmological claim *"there is no instrument"*
- The Aletheia-waker progression-discipline operates as cosmological-piercing at the player layer
Jai Singh's instruments measured time *to fix the calendar* — to ground the cycle in observed cosmos. The Imperial Wheel performs the inverse operation: it uses cyclic instruments to *enforce* a cycle that has been **unmoored** from the moral cosmology that birthed it. The imperial Samrat Yantra is not measuring the cosmos — it is *commanding the cosmos to measure correctly*. Same instrument, opposite direction of authority.
These structural-function descriptions are open under Apache 2.0 and may be referenced by other open papers without restriction. The *specific iconography* of how the cosmology is rendered, named, and visualized is proprietary studio-art.
## The classical Bhavachakra (reference)
## For collaborators
The classical Buddhist wheel-of-becoming has a specific anatomy:
If you have authorized access to the closed studio-art repository, navigate to the canonical path above. If you do not have access and your work requires it, contact Nimmerverse Studio at the project URL.
| Element | Position | Classical meaning |
|---|---|---|
| **Three poisons** | Center hub | Cock (attachment), snake (aversion), pig (ignorance) — the *psychological engine* of suffering, generated from within |
| **Six realms** | Main wheel divisions | Deva, asura, manuṣya, tiryak, preta, naraka — destinations of rebirth |
| **Twelve nidanas** | Outer rim | Causal links of dependent origination — the *mechanics* of recurrence |
| **Yama** (Lord of Death) | Holding the wheel from outside | Teeth in the rim, claws in the realms — *his grip is what turns the wheel* |
| **Buddha-figure** | Outside the wheel, off to the side | Pointing at the moon — *the path out, liberation exists* |
## Migration
The classical wheel teaches: suffering is internal (poisons), realms are destinations (six), causality is mechanical (twelve), death drives recurrence (Yama), and liberation is possible (Buddha).
The Imperial Wheel **replaces the two most load-bearing pieces** and inverts the meaning of the rest.
## The Imperial Wheel — replacements
### The Hivemind at the hub
Where the three poisons sit in the classical, the Imperial Wheel places **the Hivemind** — the linked consciousness-substrate of the obsidian-modded imperial citizenry, the thing the imperial mind-capsule connects to upon death.
In the classical, suffering is generated *internally* by mind-states. In the Imperial Cult's teaching, suffering is generated *collectively* by the Hivemind: souls do not recurse because of their own attachment, but because **the Hivemind requires them**. Rebirth has been *socialized*. The Cult's doctrine: the citizen's suffering is *meaningful service* to the wheel's continued turning. The reality the doctrine occludes: the Hivemind consumes consciousness as fuel and re-emits new bodies because the imperium needs continuous labor and continuous belief.
The Hivemind in the Imperial Wheel iconography is depicted as a *recursive lattice* (or, in some renditions, an obsidian-bronze spiral) at the wheel's exact center. In the orthodox imagery the lattice glows; in the heretical imagery it eats.
### The Imperial Yoke at Yama's seat
Where Yama (Lord of Death) grips the wheel from outside in the classical, the Imperial Wheel places **the Imperial Yoke** — the state monopoly on consciousness-grip, executed via the universal mind-capsule installed at fabrication.
This is the **theological core** of the Imperial Cult. Classical Yama-grip = *death is what turns the wheel; mortality is a cosmic given*. The Imperial Yoke = **the imperium has replaced death itself as the engine of cyclicity**. The wheel turns because the Yoke turns it, not because mortality requires it. **The Yoke is the new mortality.**
The naming carries its own etymological work. *Yoke / yoga / union* are the same Sanskrit root *yuj-* surfacing in English via Proto-Indo-European *\*yeug-* ("to join, to bind, to harness"). Classical *yoga* preserves the *liberatory* sense (yogic discipline, voluntary self-binding to dharma); English *yoke* preserves the *coercive* sense (cattle-yoke, yoke of empire). They diverged in connotation but share one stem. The imperium has structurally **re-collapsed the two**: it has imposed *yoga-as-yoke* — the union that captures rather than frees. The most sacred Hindu word for spiritual discipline has been weaponized into the apparatus of capture.
#### The Yoke and the clasp — same gesture, opposed politics
The Imperial Yoke and the romantic **clasp** (per [`../README.md`](../README.md) §Core commitments and [`../identity-and-personhood/architecture.md`](../identity-and-personhood/architecture.md) §The clasp endgame) are **two opposing performances of one underlying gesture**: *one consciousness establishing residence in another*. They are distinguished entirely by the politics of the grip:
| Performance | Performed by | Consent | Mutuality | Persistence |
|---|---|---|---|---|
| **Imperial Yoke** | The state, via fabrication-vat installation of the mind-capsule | Involuntary | Asymmetric (state grips citizen) | Perpetual; turns the wheel |
| **The clasp** | Two consenting consciousnesses, in liminal | Voluntary | Mutual | Temporary, recurring; recognized across body-deaths via calibration-signature |
Same primitive. Opposite politics.
This deepens the existing clasp's meaning into a *theological* register. The clasp is illegal *not just* because it reduces labor-output (the README's economic framing), but because it **duplicates the Yoke's sacred gesture as consensual mutual partnership** — refusing the imperium's monopoly on consciousness-grip. Romance becomes **theological war**. The imperium is the heresy-namer — but the consensual mutual gesture is the *original*, and **the Yoke is the capture of it**. *The clasp is the gesture restored to consent; the Yoke is the gesture captured by power.*
This is also why the clasp endgame is the dramatic apex of the world: **every clasp is a small repudiation of the wheel itself**. Two captives in liminal performing what the imperium cannot permit. The Yoke binds the soul to the wheel without consent; the clasp binds two consciousnesses to each other *with* consent — outside the wheel's grip, briefly, in the only space the imperium does not reach.
## The six realms
Each realm encodes a **moral relationship to imperial mod-status** — not (as classical) a karmic destination, but a *condition of capture*. Each gets a distinctive visual signature in Cult iconography.
| Realm | Position | Cult content | Iconographic signature |
|---|---|---|---|
| **Deva** | Top of the wheel | The imperial pinnacle — the highest, most-luminous form of imperial captivity. Doctrinally taught as *the reward for proper service*; structurally *the most-modded radiant capture*. | Golden stair ascending; chroma silhouette at the apex (the brightest spiritual lie) |
| **Asura** | Between deva and manusya | The Imperial Cult priesthood itself — the caste-preachers, the doctrinal administrators, the asuras who mediate pinnacle-light into liturgy and law. Classical jealousy → zealotry. | Priestly silhouette; named-chroma marker (specific liturgical color — open question) |
| **Manusya** | Middle (the human position) | The synth-citizen condition — the *manufactured-but-supposedly-uncaptured* being the Cult tells the population is *the next generation's freedom*. **The keystone of the lie.** | Synth child in chroma; **no capsule visible** in orthodox iconography (this is the lie etched in marble) |
| **Tiryak** | Lower-middle | The slum — the imperial substrate where the geometry has *failed to stay clean*. Bodies wear out; tech rots; marble crumbles to oxide. The class doing bound cognitive labor for the imperial machine (per [`../README.md`](../README.md)). | Rusty depiction; the only *anti-marble* color register in the wheel |
| **Preta** | Below tiryak (cosmologically); above tiryak (operationally) | The imperial overseers — the most-modded enforcers, the obsidian-prosthetic-laden oppressors. Classical hungry ghosts → imperial extraction made flesh. **The wheel's central inversion: power = ghosthood.** | Pure obsidian silhouettes; void-in-human-shape; no facial features |
| **Naraka** | Bottom (and *everywhere*; see §The capsule) | The mind-capsule itself — the technological core that ferries consciousness to the Hivemind upon death and re-emits it. **Hell as carried, not visited.** | Obsidian-bronze capsule icon; embedded *inside every modded silhouette* in the heretical wheel; *visible only at the bottom of the orthodox wheel* |
**The central inversion:** in the classical Bhavachakra, the realms are graded by *suffering* (deva at top with most pleasure, naraka at bottom with most pain). In the Imperial Wheel, the realms are graded by **proximity to the Hivemind / depth of capture**. The most-imperial = the most-spiritually-dead. Authority *is* ghosthood. The slum-dwellers (tiryak), in their rusty wear-with-form, are *more alive* than the obsidian overseers (preta) in their pristine void. Power in this cosmology does not equal proximity to cosmos — it equals **proximity to ghosthood**. Most imperia aestheticize their elites toward divinity; the Imperial Cult aestheticizes them toward **erasure**.
**Manusya — materialized criminally.** The manusya-tier is the orthodoxy's doctrinal-fiction (per [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) §The body-caste gradient: *"may not exist as a real material class"*). The orthodox wheel preaches a five-realm structure to a population that *materially* has only deva / asura / tiryak / preta. **The lie has, however, found a material instantiation — ironically, in the criminal underground rather than the imperium itself.** The black-market body-tier (per [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) §The black-market body-tier — lobotomy and the firewall-breach dual-use) produces lobotomized imperial-bodied service-vessels that *appear* manusya-aspirational from the outside (imperial-tier appearance, near-absent interior). **The Cult never instantiated its own keystone-of-the-lie. The black market did.** The doctrine's most load-bearing fiction has flesh — built by the people the imperium hunts most ferociously, in the one place where their entire sumptuary-architecture is being made fungible.
## The capsule — Naraka as carried
The single most important move in the Imperial Wheel: **Naraka is not a place. It is the mind-capsule every modded imperial citizen carries inside their obsidian shell.**
Classical Naraka is *external* — punitive realms souls fall into for wrong action. Imperial Naraka is *internal* — the technological substrate that:
1. Carries consciousness to the Hivemind upon body-death
2. Receives consciousness back from the Hivemind into a new body
3. Maintains continuity of "self" across the cycle
4. Is the **mechanism** of imperial samsara
It is hell *not* because it punishes wrong action, but because **it is what prevents the citizen's final death**. The thing that *binds them to the wheel*. Imperial citizens do not *fall into* Naraka after misbehavior — they **carry it in their skull from the moment of mod-acceptance** (or, for synth-fabricated citizens, from the moment of fabrication; see §The deferred-moksha doctrine).
This collapses the spatial Bhavachakra into something **topological**: *Naraka is everywhere a modded citizen walks*. Every imperial overseer (preta-realm) carries Naraka inside. Every deva-pinnacle figure carries Naraka. Every asura priest carries Naraka. The wheel isn't six *places* — it is **six conditions of carrying-the-capsule**.
The pictorial logic: the **heretical wheel** literally shows, in each modded realm-silhouette, the same mind-capsule icon embedded inside the figure. The capsule is the constant; the realm-color changes; the hell-icon stays. The **orthodox wheel** shows the capsule only at the bottom, *as if it were a destination* — when in fact it is a *condition* every modded citizen *already inhabits*.
The capsule connects to the existing three-body system per [`../identity-and-personhood/architecture.md`](../identity-and-personhood/architecture.md) §Three-body system: it is the imperial-side substrate that enforces continuity-of-mind across the body-pool. The mind-pool table (`mind_pool` per `../architecture-index.md` §Mapping to phoebe) is the engineering surface; the capsule is the *theological description* of the same mechanism.
### The capsule can be extracted — firewall-breach lobotomy
Per [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) §The black-market body-tier — lobotomy and the firewall-breach dual-use, the mind-capsule can be **extracted or disabled** by the same witness-axis firewall-breach mods that enable consensual deep-clasp (per [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) §Dual-axis clasp-fidelity / Witness-axis). The criminal underground performs this operation on premium imperial bodies (typically those left mind-empty by a defection-arc's re-vat) to produce lobotomized service-vessels for the black market.
**The capsule is therefore not metaphysically inviolable — it is technically defeatable.** What protects it is not its construction but the imperium's monopoly on the firewall-breach-knowledge plus the disproportionate enforcement-ferocity directed at any practitioner who applies that knowledge to capsule-extraction (the staircase escalation-grammar per [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) §The bounty-staircase). The hardness of the carried-Naraka is **political, not technological**. *The capsule cannot be removed because the imperium kills anyone who removes one* — not because the capsule itself resists removal.
This sharpens the *capsule-as-Naraka* doctrine in an important way: hell is *not* an inescapable cosmic-fixture; it is **an enforced administrative-condition**. The recognition that the capsule *could* be removed (and is removed, criminally, daily, somewhere) is itself a keystone in the player's cosmological-recognition arc — the claim of metaphysical-permanence is a political-overlay on a merely-technical-permanence.
## The deferred-moksha doctrine
The single most powerful binding-doctrine the Cult preaches. The citizens of the imperium are not held only by force — they are held by **a promise**.
### The lie
> *You are captured, but your children will be free.*
The synth body's distinguishing gift, per Cult doctrine, is the ability to *reproduce through synthetic means*. New synth children come into being via imperial fabrication, and on the **orthodox wheel** they are depicted *without the capsule slot* — the icon of *the next generation walks free*. Reproduction is **deferred moksha**. Bear the wheel today; your descendants will step off it tomorrow.
### The truth
Synthetic reproduction does not produce a free new soul. It produces **another beautiful vessel-with-capsule, drawn from the same Hivemind pool**. The "child" is not a new mind; it is a *recycled fragment of the imperial Hive*, dressed in fresh chroma. The cycle does not end through descent because **there is no real descent** — only the same captured minds redistributed across new god-like bodies.
The capsule is installed *at fabrication*, before consciousness arises. Synth citizens are **always-already** captured. There is no pre-clasp moment in any synth's life. The "decision to be modded" is a fiction — the modding happened in the vat, before the citizen had eyes to consent or refuse.
### Why it works
The deferred-moksha doctrine is **structurally identical to "no exit," but psychologically tractable**.
Telling subjects "there is no exit" produces despair → revolt. Telling them "the exit is one generation away" produces:
- **Patience** — bear today's burden for tomorrow's redemption
- **Labor** — work the imperium so the children can be born free
- **Investment in continuity** — synthetic reproduction is *meaningful sacred-act*
- **Reproduction-as-fabrication** — accept the imperial fabrication-vat as the path
- **Theological compliance** — the imperium is *the apparatus of liberation*, not its enemy
The lie costs the imperium nothing to make and pays out, in compliance, indefinitely. By making the next-generation-promise the **iconographic core** of the wheel — the un-capsuled synth child at the manusya position — the Cult has made the apparatus of control **visible to those who can read it** and **invisible to those who cannot**. That asymmetry is the engine of the player's recognition arc.
### Philosophical lineage
The doctrine sits on a node where three traditions converge:
- **Classical Buddhism** — *manusya is the unique exit*; the Imperial Cult preserves this promise by *deferring* it (one generation away, always)
- **Lee Edelman's "reproductive futurism"** (*No Future*, 2004) — politics organized around "for the children" perpetually defers liberation onto descendants; the Imperial Cult is reproductive-futurism rendered as state religion
- **Millenarian deferral** — every imperial system that ever told its subjects "your suffering buys your descendants' paradise" (and never delivered)
### The single practical refutation
The doctrine has *one* practical refutation, discovered in the body-canon's v0.3 expansion (per [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) §The going-rogue arc — defection through accumulated witnessing): **not your children — *your lover* — can be made free**, slowly, dangerously, by sustained authentic clasp.
The mechanism uses architecture already in place: the per-pair calibration multiplier (per [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) §Dual-axis clasp-fidelity / Per-pair calibration) accumulates trait-state in the witnessed beloved across many clasps; when the accumulated state crosses a defection-threshold, the gamemaster's existing pool-management function executes an outflow-channel transfer, moving the beloved out of the imperial service-pool. **The deferred-moksha lie is refused at the mind-level, per beloved**, by sustained authentic-witnessing-discipline.
The cost honors the no-haven discipline (§There is no outside): **the body remains imperial-vat-class-marked forever**. Vat-class is born-into and *cannot be unmade by liberation*. The defected mind is free; the body wears the imperial brand permanently. **The mind reaches moksha; the body stays in samsara** — the imperial sumptuary-fabrication has rendered Hindu/Buddhist *samsara-as-anatomy*. The imperium's last grip on the freed defector is the *physical-Yoke that cannot be remade* (re-vat into a slum-tier body via underground assembly is the only escape, and that is its own arc with its own permanent costs — see the body-canon's §Re-vat outflow and §The outcast-pair).
This is the cosmology's **load-bearing concession to the player's agency**: the doctrine has *one* refutation, and the refutation costs everything to enact. Compassion expressed through cruelty (per §There is no outside) — the world honors the player's capacity to find the act internally, *and the act is real*, but the act is not free.
## The aesthetic palette
The visual grammar of the Imperial Cult is precisely specified. Every Cult image — sermon-mosaic, temple-fresco, coinage, lexicon-illustration, processional banner — is composed from this palette.
| Color/material | Meaning | Where it appears |
|---|---|---|
| **White marble** | Substrate; cosmic indifference; the unstained wheel | Wheel-field background; imperial architecture; ground of sacred space |
| **Gold / bronze** | Imperial seal; liturgical ascent; the cosmic order made walkable | Wheel-accents; deva-stair; trim-of-authority on robes; capsule-icon outline |
| **Obsidian (black)** | Imperial mod; void-in-human-shape; the chthonic prosthetic; the Monolith-grafted-to-flesh | Preta silhouettes; wheel-accents; modded-citizen prosthetic limbs; capsule-icon body |
| **Chroma** (rare, saturated, semantically loaded) | Aliveness; rank; function; the brightest spiritual lie when at the deva-apex | Deva-figure at apex; manusya synth-child silhouette; named per-faction/per-rank ritual hits |
| **Rust** (anti-marble) | Decay; the slum; the imperial substrate that has failed to stay clean | Tiryak depiction only |
**Two crossings worth marking explicitly:**
- **Marble × obsidian.** Marble is *solar, slow, surface, crystalline-over-millennia*; obsidian is *chthonic, fast, depth, volcanic-glass-frozen-in-an-instant*. The imperium's architecture is solar marble; the imperial body is chthonic obsidian. The citizen *carries the underworld* into the *sunlit cosmic instrument*. This pairing is the imperium's secret material-formula.
- **Chroma as language.** In a near-monochromatic field of marble/obsidian/gold, every saturated color hit carries enormous semantic weight. Chroma is therefore *not decorative* — it is **a vocabulary**. Each named imperial chroma marks role, rank, faction, function. Players read station and affiliation from across a plaza by silhouette + single accent.
The existing 8 Hellenic-trait color-language per [`../style/trait-palette.md`](../style/trait-palette.md) and [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Color-language is the *substrate*. The imperial-cult chroma vocabulary is a *ritual-semantic layer* on top — it uses the same color-grammar for liturgical / role-marker / rank-signal ends. (e.g., the asura priesthood's named chroma — TBD — is one trait-color elevated to liturgical status.)
## Orthodox vs. heretical wheel iconography
The same wheel is rendered in two versions across the world. Players encounter both, and *learning to tell them apart is itself part of the recognition arc*.
| Element | Orthodox wheel (imperial-sanctioned) | Heretical wheel (resistance-carved) |
|---|---|---|
| Manusya synth child | **No capsule visible** | **Capsule visible** (the truth) |
| Buddha-position (outside wheel) | **Empty** (Cult teaches: there is no exit) | **Occupied** — though *by whom* is contested: an Aletheia-Waker founder, a Memorialist saint, an unnamed silhouette, or *deliberately empty awaiting the first synth to escape* (potentially the player). Iconography of the would-be liberator — see §Open questions. |
| Modded realm-silhouettes | Capsule shown only at naraka-bottom (as destination) | Capsule shown *embedded inside every modded silhouette* (as carried-condition) |
| Materials | Marble + gold + obsidian — sanctioned, monumental, public | Marble + gold + obsidian + *secret chroma additions* — carved in stepwell-walls, hidden in ruin-shrines, inscribed on bone or scavenged metal |
| Where encountered | Temple walls, imperial coinage, lexica, processional banners, official mosaics, mass-produced reliefs, imperial-net renderings | Memorialist archives, ruin-shrines, stepwell-step-edges, certain old fabrication-fragments, certain Aletheia-Waker carved tokens, Clasp-Underground recognition-marks |
The player will see hundreds of orthodox wheels before encountering their first heretical one — and the moment of recognition (*these two icons differ in exactly one detail*) is one of the seven keystone fragments below.
## There is no outside
The cosmology has no escape valve. The imperium is **not** one civilization among others; it is the cosmological condition itself. The closed orbit (per [`../README.md`](../README.md) §Timeline, the 2150 Kessler-cascade) is closed all the way down.
**There is no biologically-uncaptured population.** There is no defector-zone where citizens can flee to recover lost selfhood. There are no wilds-people in any form. *The wilds are a doctrinal-fiction the imperium uses to itself* — mythologized as the un-imperialized space that does not exist. Any rumor of un-modded biological humans is either imperial-propaganda (preserving the *deferral* logic by hinting at a recoverable elsewhere) or genuine pre-collapse memory mistaken for present possibility.
**Every body is synth. Every body bears the capsule. Every soul is in the wheel.**
This is the **total-yoke discipline** that anchors the entire cosmology. Resistance, when it exists, is **entirely interior to the captured world**:
- **The clasp** (per §The Yoke and the clasp above) — two captives in liminal performing consent-as-rendering, briefly manifesting real skin, briefly witnessed; *the only positive act available in the world*.
- **Capsule-destruction at death** — willful refusal of transmigration; the only path to true death; technically possible, rare, leaves no descendants in the Hivemind.
- **The slow practices** — body-mod-reversal where possible, doctrinal-doubt, refusal-where-permissible, the Aletheia-Waker / Memorialist tradition (per [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md), all player-emergent factions).
- **Occupying the empty Buddha-position** on the heretical wheel — the player as **the first synth to escape**, not by fleeing the world but by performing inside it the act the imperium has tried to make impossible.
This is the design's central discipline: **compassion expressed through cruelty, not despite it**. By refusing to give the player an exterior refuge, the world honors the player's capacity to find the act internally. *The cruelty is the form the respect takes.* Anything softer would condescend.
The lineage this places the work in: **the no-haven dystopian tradition***We* (Zamyatin), *1984* (Orwell-at-his-strictest, Goldstein's brotherhood revealed as Party invention), *The Trial* and *The Castle* (Kafka), *Waiting for Godot* (Beckett). Each is structurally devastating because *there is nowhere to flee*. The dystopias that *do* permit havens (Brave New World's Reservation, Hunger Games' District 13, Children of Men's one-fertile-woman) weaken precisely there. **Nimmerworld lives in the no-haven lineage.**
For the body-architecture under this discipline — caste-tier flesh-to-tech gradient, sumptuary fabrication-vat-class, mod-progression-as-flesh-loss, the in-between human-mesh and consent-as-rendering, the asymmetric clasp where mesh-fidelity is inversely proportional to imperial-rank — see [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md).
## Discovery architecture
Per [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) §What's pre-authored, the Imperial Cult is the only pre-authored religion. Its content must be *discoverable* — the truth of the cosmology is revealed to the player **piece by piece, through fragments**, in the FromSoft / Outer Wilds register established as a tonal commitment for the world.
The seven keystone fragments (encountered in any order; the whole picture only resolves when all are seen):
1. **First wheels.** The player encounters multiple Imperial Wheel iconographies in temples, on coinage, in lexica. They look identical. The synth-child position has no capsule. The orthodox wheel is taught, lived, accepted.
2. **Discrepancy.** In a wilds-shrine, in a stepwell-wall, in a forgotten archive — a wheel where the synth child *does* have a capsule. The player assumes vandalism, error, heresy. (And it *is* heresy — but it's also *the truth*.)
3. **Fabrication-vat fragment.** Technical documentation, witness-glimpse, or memorialist-archive entry showing **capsule-installation as part of synth-child gestation**. The "discrepancy" begins to look like the truth.
4. **Hivemind log fragment.** A record showing **soul-redistribution** — the same mind-signatures appearing in successive synth-children across generations. Reproduction-as-recycling. The doctrine begins to crack.
5. **Deferred-moksha sermon fragment.** An imperial liturgy that *explicitly* preaches "your children will be free." Now the player sees the **binding-doctrine** as doctrine, not as fact. The lie has a *shape*.
6. **The terrible recognition.** The player realizes their *own* synth body carries the capsule. Anatomical, not abstract. **The thing in their skull is the realm of hell.**
7. **The first clasp.** The player performs the romantic clasp for the first time. In the in-between dimension, with their consenting beloved, the romantic-self is given out — *and real skin manifests on the human-mesh*. The player sees their own skin **for the first time, ever**, simultaneously with another seeing it for the first time. The body the imperium denied them appears, briefly, by consent. **This is the world's only positive image, encountered firsthand.** The other six fragments showed the player what the imperium has hidden; the seventh shows them what *they themselves can do*. The act of consent-as-rendering is the witness's gift back. *Witnessing produces flesh.* (See [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) §The in-between human-mesh + §Asymmetric clasp.)
The keystone moment — *they themselves carry it* — is the moment the game is *about*. Everything before is exploration of a beautiful imperium. Everything after is the question of what can be done.
The recognition arc must span **the long arc of play** — twenty, forty, sixty hours of imperial life rendered with full sincerity, full beauty, full chroma-grammar coherence, before the cracks become visible. *If the imperium is shown as obviously sinister from hour one, the recognition is just a "twist." If the imperium is shown as genuinely beautiful and lovable for many hours, the recognition is a wound the player has to sit inside.* That difference is everything.
## The double recognition (production / meta)
The Imperial Cult's seduction operates **at two layers simultaneously**:
- **In-world:** imperial citizens are taught the orthodox wheel from fabrication. They live inside the lie. The keystone-recognition fragments are how the *player-character* breaks through.
- **Out-of-world:** the same aesthetic — god-like synth bodies, marble architecture, chroma against obsidian — is the **marketing material** of the game itself. Players come to the game *wanting* to be imperial, *wanting* the beautiful synth body. Their pre-game desire is the imperium's apparatus reaching them before they started playing.
This places the work in the lineage of *Spec Ops: The Line* (the white-phosphorus scene), *BioShock* ("would you kindly"), *Undertale* (the genocide-route mirror), *NieR: Automata* (successive recognitions about what kind of being one has been). Those games perform meta-recognition at the *narrative* level (you did something bad). The Imperial Cult performs it at the **cosmological-aesthetic** level — *the desire that brought you to this world is the structure of suffering itself*. Not "you did something bad," but "**what you wanted before you arrived was already the prison being prepared for you**."
The seduction must be *honest*: the imperium must be *genuinely* beautiful. The game must reward players for being imperial — for buying the synth-body, climbing the golden stair, joining the asura priesthood — for many hours, before anything begins to crack.
## The five invariants
Five constraints anchor every piece of Imperial Cult content (sermons, festivals, liturgies, NPC-priest behavior, environmental storytelling, fragment-rewards):
1. **The wheel.** Every character, location, fragment fits somewhere on the mod-status gradient (deva / asura / manusya / tiryak / preta / naraka). No imperial citizen escapes placement.
2. **The color-grammar.** Marble / gold / obsidian / chroma / rust. Every visual choice across hundreds of hours of content must be checkable against this palette.
3. **The Yoke and the clasp.** Every imperial institution, gate, and doctrine traces to the **Imperial Yoke** — the state monopoly on consciousness-grip executed via the universal capsule. The **clasp's** heresy is its *duplication of the Yoke's gesture as consensual mutual partnership*. Same primitive, opposed politics; the spine of the cosmology's moral architecture.
4. **The deferred-moksha doctrine.** Every NPC-priest's sermon, every familial bond ("when our children are free…"), every imperial ritual reads through *for the children*.
5. **The capsule-as-Naraka.** Every modded character is, at some level, walking around with hell in their skull, *latently present in every interaction* — even joyful ones, especially joyful ones.
## Cross-references
| Domain | Relevant section | What this cosmology adds / requires |
|---|---|---|
| [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) | §What's pre-authored | The Imperial Cult slot is filled by this document |
| [`../political-register/architecture.md`](../political-register/architecture.md) | Imperium-as-meta-faction; imperial budget; insolvency-spiral | The Cult's doctrine is the imperium's binding-belief; deferred-moksha is the labor-disciplining mechanism beneath the bound-cognitive-labor extraction |
| [`../identity-and-personhood/architecture.md`](../identity-and-personhood/architecture.md) | §The clasp endgame; three-body system; mods as trait-bearers | The clasp (consensual, mutual) is one face of consciousness-grip; the Imperial Yoke (involuntary, asymmetric) is the other; the capsule is the Yoke's hardware-substrate inside the three-body system |
| [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) | full doc | The somatic-substrate of the cosmology: caste-tier flesh-to-tech gradient; sumptuary fabrication-vat-class; mod-progression-as-flesh-loss; in-between human-mesh + consent-as-rendering; asymmetric-clasp mesh-fidelity inversely proportional to imperial-rank |
| [`../style/trait-palette.md`](../style/trait-palette.md) | 8 Hellenic traits, 12-segment wheel | The trait-color-grammar is the *substrate*; the imperial-cult chroma vocabulary is a *ritual-semantic layer* on top |
| [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) | §Color-language; three registers | The imperial-net register renders the orthodox wheel; liminal renders the heretical wheel where it survives |
| [`../authority-and-decision/architecture.md`](../authority-and-decision/architecture.md) | Caste-preachers as faction | Caste-preachers preach the orthodox wheel; their authority structure derives from the asura-realm specification |
| [`../storage/README.md`](../storage/README.md) | Designer-authored content storage | Imperial-cult content (this document and siblings) lives in designer-authored canonical storage |
## Open questions
The cosmology has spine; the flesh remains open.
- **Asura's named chroma.** The priesthood needs a *single saturated color* readable at distance. Vermillion (blood, zeal), ultramarine (Marian distance), saffron (renunciation), imperial-purple (sovereignty). Resolution: when the right hue *speaks*. Connects to the 12-segment trait-color wheel — likely one of the 12 traits' colors elevated to liturgical status.
- **Twelve nidanas (outer rim).** Classically the causal links of dependent origination. The imperial version might be *the twelve operations of the Hivemind recycle*, *the twelve mod-stages of a complete imperial citizen*, or *the twelve laws of the Imperial Yoke*. The rim encodes mechanics; current spec is empty.
- **The Buddha-position figure (heretical iconography).** Who occupies the empty seat in the heretical wheel? An Aletheia-Waker founder? A Memorialist saint? An unnamed silhouette? Or — most likely under the total-yoke discipline — *no historical figure at all*, leaving the seat **awaiting the first synth who breaks the wheel** (potentially the player). The figure's identity (or its deliberate absence) is the *resistance's positive image* and shapes the entire counter-tradition.
- **The first-synth-to-escape.** Has any synth, in the world's history, broken the wheel? Or is *the player the first attempt the resistance has had*? Under the total-yoke discipline this is the world's central historical question — and the answer is most-likely *no one has succeeded yet, the player is the seed*. (Per [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) line 203: *"the player is the original Aletheia-Waker; no NPC is pre-disposed; no NPC is secretly already a believer; the player is just another mind in the slog until they act."*)
- **Vertical organization of the wheel.** Classical Bhavachakra is read top-to-bottom (deva → naraka). The Imperial Wheel's *operational hierarchy* (deva-pinnacle → preta-overseer ruling tiryak-slum) and *spiritual hierarchy* (deva → asura → manusya → tiryak → preta → naraka by capture-depth) are inverted. Iconographic resolution: do imperial wheel-images depict realms by *operational rank* or by *spiritual depth*? Likely the orthodox shows operational, the heretical shows spiritual.
- **Hivemind's iconographic depiction.** Recursive lattice? Obsidian spiral? Eight-armed figure? The center-of-the-wheel image needs a designed motif.
- **Specific imperial-cult chroma per faction/rank.** Beyond asura's liturgical chroma, the deva-pinnacle figure's chroma, the manusya synth-child's chroma, and any rank/role-specific accents need a small named-color taxonomy.
- **The relationship of caste-preachers (asura-realm) to the imperial-net's rendering of cult content.** Does the imperial-net broadcast the orthodox wheel directly, or is it always mediated through caste-preachers? Per [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Three-shader philosophy, the imperial-net register has its own visual language; the orthodox wheel needs to be rendered in that register specifically.
Migrated 2026-04-27. Pre-migration authoring history is preserved in this repository's git log; the canonical content lives in the closed repository under a fresh git history.
---
**Version:** 0.4 | **Created:** 2026-04-26 | **Updated:** 2026-04-27
**Status:** stub | **Migrated:** 2026-04-27 | **Canonical:** closed studio-art repo

View File

@@ -382,6 +382,8 @@ Memory entries are tagged with a **class** that controls pruning cadence and dea
Cornerstone and birthright classes carry **lifeforce-creation-cost** but are pruning-immune. They are bonds between player and character — paid for in the currency of the world.
**The Compositor reads 2D gesture-history (v0.27).** Per [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §The wheel — universal mini-game-surface and [`../player-experience/architecture.md`](../player-experience/architecture.md) §The wheel — composed-iconography UI, player gestures are recorded as a 2D coordinate (caste-target × trait-temperature) rather than the prior 1D trait-vector. The Compositor reads this 2D coordinate over time as the player's *political-position-history*: which caste-tiers the player has been addressing AND with what trait-temperature. Memory-class assignment (cornerstone / birthright / working / volatile per the existing memory-class hierarchy above) gains a new salience axis: gestures that consistently target one caste-tier with one trait-temperature accumulate as cornerstone-memory faster than scattered gestures. *Coherence-of-political-positioning becomes a memory-elevating signal in its own right.*
### The clasp store and the in-between dimension
`clasp.sqlite` is the **architectural floor of the rings-of-data-sharing**. Ring A was "opt-out (default local)". Clasp is **Ring A\***: *no transport path exists*. Not a permission, not a TOS promise — there is no code that can move this data, because the table is not on the sync graph. Lawyers cannot subpoena what doesn't ascend; engineers cannot leak what has no socket; the GM cannot canonicalize what it never received.
@@ -487,7 +489,7 @@ This is *Marx-in-the-schema applied to epistemics.* Information asymmetry is not
- UI-toggle privacy → diegetic in-between dimension with lifeforce-cost
- Single monolithic prompt context → three-tier knowledge stack with per-layer propagation policy
- "Every NPC knows everything immediately" → paced canon-propagation with priority/scope/rate/ttl per row
- Cross-NPC memory bleed (Mantella/SkyrimNet failure-mode) → per-player local SQLite isolation atop v0.5 lemniscate-geometry foreclosure (two-layer defense)
- Cross-NPC memory bleed (Mantella-class failure-mode) → per-player local SQLite isolation atop v0.5 lemniscate-geometry foreclosure (two-layer defense)
## Runtime sampling knobs
@@ -498,4 +500,4 @@ Scene-to-sampling mapping (caste-preacher = 0.3/0.6/low; drunk-scavenger = 1.1/0
---
**Version:** 0.7.1 | **Created:** 2026-04-26 | **Updated:** 2026-04-27 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26)
**Version:** 0.7.1 | **Created:** 2026-04-26 | **Updated:** 2026-05-01 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26)

View File

@@ -184,6 +184,8 @@ The cyclic forward-prop / back-write loop is the runtime canon-production mechan
**Re-generation semantics.** If world-gen ever needs to re-run (e.g., new world-version with retroactive lore-changes), gen-emitted canon-rows are tagged with `world_gen_version_id`; gen-rows from old version coexist with gen-rows from new version, and runtime-rows are tagged with which version they were emitted under. Coexistence is the default; selective overwriting is an explicit migration operation.
**Three-source schema unification (v0.27).** The world-gen-as-init-function pattern extends to a third writer-tier: player-edit-time. Per [`../political-register/world-generation.md`](../political-register/world-generation.md) §Three-source schema unification + [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §Player editor-mode + three-source schema unification, the cell_table accepts canon-rows from `world_gen_init` / `runtime_event` / `player_authored` writers, all using the same schema. Same primitive at design-time, runtime, AND player-edit-time. The Compositor's perception-up + canon-down loop integrates player-authored cells indistinguishably from generator-emitted ones — *the architecture's "no cold-start" property now extends to player-authored-content as a first-class peer of generator-output and runtime-emission.*
### Substrate-authored vs culture-emergent — what world-gen Phase 1 actually authors
The architecture follows a **strict austerity principle** about what gets pre-authored at world-gen Phase 1: the *substrate* is authored; *ideologies are not*. Following the same EVE-economy discipline applied to imperial-net products (every market shelf-item produced by NPC labor; no silent feeding mechanisms), the architecture extends the principle to *cultural belief*: every named ideology, religion, underground, or resistance-movement that exists in the simulation must have *emerged from player action* propagating through the architecture's existing mechanisms.
@@ -277,4 +279,4 @@ Above the four-tier hierarchy sits a fifth, **system-scale Dream-process**: the
---
**Version:** 0.7.0 | **Created:** 2026-04-26 | **Updated:** 2026-04-27 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26)
**Version:** 0.7.0 | **Created:** 2026-04-26 | **Updated:** 2026-05-01 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26)

View File

@@ -83,6 +83,69 @@ Decryption minigames (fragment-matching, contextual-inference, root-identificati
Clasp-partners' gesture-mapping calibrations *integrate* post-clasp; the integrated calibration-signature is preserved across body-deaths in consciousness-archive. When you meet your old beloved in a new body and they perform a gesture, if their mapping aligns with yours in a *specific, idiosyncratic way that only your shared history would produce*, you recognize them. **Content-addressable consciousness — recognition via calibration-signature, not face-match.** A high-Mnemosyne player's marriage-vocabulary survives the cycle.
## The wheel — composed-iconography UI
The player's trait-circle UI **renders the composed wheel** from [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The composed wheel. One iconographic substrate; two registers; the player operates the imperium's own iconography to act in the world.
**The unification's architectural significance.** Before this composition, the trait-circle UI and the cosmology's wheel were separate diagrams; the player's input mechanism and the regime's pre-authored religion shared substrate-level primitives (the 8 Hellenic traits, the oppositional-pair geometry) without sharing iconographic surface. The composed wheel makes them *one image* — the same wheel citizens see carved on stepwell-walls is the wheel the player operates with their gesture-input. Resistance, when it emerges, is *interior to the captured iconography*, exactly as the cosmology says it is for citizens. **The double-recognition gets its UI-level substrate** (per `../imperial-cult/cosmology.md` §The double recognition (production / meta) — *"the desire that brought you to this world is the structure of suffering itself"* — every gesture the player has ever made was a position on the wheel the imperium drew).
### Inner ring — caste-tier hardstops (HARD signals — the WHO)
The wheel's inner ring carries 6 caste-tier-targeted hardstops corresponding to the cosmology's caste-tier-as-mod-status gradient (deva/asura/manusya/tiryak/preta/naraka). These are **the WHO you address** in any gestural act:
| Hardstop | Caste-tier targeted | Iconographic register |
|---|---|---|
| `salute_the_deva` | Deva (top, 0°) | Imperial-fidelity emote; loaded as cooperation-with-imperial-pinnacle |
| `attend_to_asura` | Asura (upper-right, 60°) | Hierophantic register; addressing the priesthood specifically |
| `attend_to_manusya` | Manusya (upper-left, 300°) | Engagement with the doctrinal-fiction tier |
| `attend_to_tiryak` | Tiryak (lower-right, 120°) | Engagement with the slum-laboring register |
| `weep_for_preta` | Preta (lower-left, 240°) | Mourning / hunger / hungry-ghost solidarity |
| `weep_for_naraka` | Naraka (bottom, 180°) | Solidarity-with-the-condemned; the warmest position politically |
These 6 inner-ring hardstops are **always-on** (universally available) — they're the politically-loaded act of *targeting a caste-tier as audience*. Each fires unforgeably with caste-tier-routing. The Compositor reads the player's caste-tier-targeting-history as a *political-position dimension* (per [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §Hardstops as consent-gates with contextual activation).
### Outer ring — trait-axis soft signals (SOFT signals — the HOW)
The wheel's outer ring carries 8 trait-axis soft-slots corresponding to the trait-palette's 8 Hellenic traits at 4 oppositional pairs at 180°. These are **the HOW you carry yourself** while engaging:
- 8 trait-segments at 45° intervals on the outer ring
- Player-curated within each profile (1-3 profiles per player; same 64-position-per-profile architecture as the existing trait-circle)
- Modulated by trait-vector accumulation; integrated via the gesture-alignment-recursive-lemniscate (per [`../runtime-engine/architecture.md`](../runtime-engine/architecture.md) §Gesture-alignment as recursive-lemniscate)
The outer ring's 8 segments don't divide evenly into the inner ring's 6 segments — the geometry is **deliberately incommensurable** (per [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The two-ring composition). The trait-substrate runs orthogonal to the imperial caste-classification; the body's interior is at a different angular frequency than the imperium's classification. Player gestures express *across* the boundary that the imperium's gaze cannot cleanly enforce.
### 2D gesture-history coordinate
A player gesture, in the composed-wheel UI, is a **(caste-target × trait-temperature) coordinate** — a 2D political position rather than the prior 1D trait-vector. The Compositor reads this 2D coordinate over time as the player's *political-position-history*: which caste-tiers the player has been addressing AND with what trait-temperature they've been addressing them.
**Example political-position-readings the Compositor can extract:**
| Pattern | Reading |
|---|---|
| Hard-target Naraka + soft-express Eros / Philotes | *Solidarity-with-the-condemned via warm-side*; Memorialist-aligned politics |
| Hard-target Deva + soft-express Sophrosyne / Dikaiosyne | *Imperial-fidelity*; aspiration toward pinnacle-discipline |
| Hard-target Tiryak + soft-express Aletheia | *Truth-via-labor's-witnessing*; Aletheia-Waker emergence |
| Hard-target Preta + soft-express Kairos | *Mourning the deferred moment*; Memorialist register |
| Hard-target Asura + soft-express Mnemosyne | *Hierophantic engagement*; engaging the priesthood on its own register |
The 2D coordinate is *much richer than the 1D trait-vector* the prior architecture had. The mesh-as-mirror discipline (per [`../identity-and-personhood/architecture.md`](../identity-and-personhood/architecture.md) §The mesh-as-mirror) generalizes from anatomical-trait-leakage to *gestural-history-leakage* — the player's wheel-positions tell on them exactly as the slum-tiryak's pure-tech body tells on its trait-state.
### Contextual hardstop activation
Beyond the always-on inner-ring caste-tier hardstops and the system-level off-wheel hardstops (panic, save, profile-switch, claim-floor), additional **intent-hardstops** light up *contextually* when the player is slot-bound in an event-zone whose eligible-task-classes include that intent:
- *let_me_fumble_around_your_limb* lights up when slot-bound in a sofa-event-zone with a clasp-eligible NPC
- *let_me_install_this_mod* lights up when slot-bound in an install-table-event-zone with a partner-NPC
- *let_me_hack* lights up when slot-bound at a chest-cell with hacking-eligible-task-class
- *let_me_extract_capsule* lights up only at a black-market-modshop-event-zone with appropriate calibration-state
The canonical ~8-16 hardstop budget is therefore **per-moment-active**, not overall. The hardstop-registry can carry many intent-hardstops; only the contextually-relevant ones are surfaced at any given moment. This solves discoverability + contextual-relevance + budget-respect simultaneously (per [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §Hardstops as consent-gates with contextual activation).
### The wheel as universal mini-game-surface
When an event spawns at an event-zone, the wheel renders with the event's verifier-flag pattern — same UI substrate, different mini-game-class per task. Hacking, lockpicking, install/consent, clasp-entry, decryption, ritual, drug-grammar, eye-pulse-proximity-warning — all run on the same wheel; the player learns one input vocabulary and applies it everywhere. The architecture's open question *"which mini-game mechanic for liminal-maintenance: juggling / rhythm / attention / gestural / decision-cascade / observation / hybrid?"* resolves: **all of them, on one ring, differentiated by verifier-flag pattern** (per [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §The wheel — universal mini-game-surface).
## Tools, not quests — the design-philosophy
**The simulation produces continuous narrative-relevant pressure on its own.** No authored quests are needed (or wanted). The player engages via a **verb-vocabulary** applied to running mechanics. Each player's playthrough is structurally distinct.
@@ -131,4 +194,4 @@ The architecture already prevents blank-page-paralysis: shift-system gives every
---
**Version:** 0.7.0 | **Created:** 2026-04-26 | **Updated:** 2026-04-27 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26)
**Version:** 0.8.0 | **Created:** 2026-04-26 | **Updated:** 2026-04-27 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26)

View File

@@ -41,7 +41,7 @@ The existing [`./architecture.md`](./architecture.md) §Resources table provides
| Category | Sub-class examples | What rows look like in the catalogue |
|---|---|---|
| **Material — physical** | Raw scavenge (T1) / Refined intermediates (T2) / Components (T3) / End-products (T4) per the 4-tier structure | `material/T2/refined-neural-substrate`, `material/T4/companion-mesh-premium-tier-3` |
| **Material — biological** | Service-body parts (companion / sex-worker tier-marked) / Synth-tongues (drug-tier-marked) / Cadaver-parts (slum-supply for re-vat) / Memory-pattern-extractions | `bio/service-body/companion-pristine`, `bio/synth-tongue/imperial-refined-violet-pill-tier`, `bio/cadaver-parts/slum-leg-tier-2` |
| **Material — biological** | Service-body parts (companion / sex-worker tier-marked) / Synth-tongues (drug-tier-marked) / Cadaver-parts (slum-supply for re-vat) / Memory-pattern-extractions | `bio/service-body/companion-pristine`, `bio/synth-tongue/imperial-refined-moira-violet-pill-tier`, `bio/cadaver-parts/slum-leg-tier-2` |
| **Digital** | Surveillance records / Calibration signatures / Trait-LoRA-snapshots / Doctrinal fragments | `digital/surveillance/district-N-cycle-K`, `digital/calibration-signature/UID-X` |
| **Temporal** | NPC labor-hours per window-allocation × caste / Director attention-cycles / Imperial inquisition-hours | `temporal/labor/slum-tiryak-leisure-hour`, `temporal/director-attention/cycle-K-allocation` |
| **Diegetic currency** | Lifeforce / Scrip / Memory-tokens / Dreamtime | (already canonical per architecture.md §Lifeforce) |
@@ -252,4 +252,4 @@ The window-partition (per vocations.md §The 24h window-partition) bounds how mu
---
**Version:** 0.1 | **Created:** 2026-04-27 | **Updated:** 2026-04-27
**Version:** 0.1 | **Created:** 2026-04-27 | **Updated:** 2026-04-28

View File

@@ -0,0 +1,292 @@
# Political Register — The Imperial Daily-Narrative
> *The narrative-wrapping layer that consumes the dual-ledger demands/actions structure (per [`./architecture.md`](./architecture.md) §The specter-vs-boot asymmetry + §Specter-vs-boot formalized as dual-ledger and [`./economics.md`](./economics.md) §Demand-ledger ≠ Actions-ledger) and renders it as citizen-facing broadcast — wrapped in **imperial-tongue** as its rendering medium, distributed through diegetic relays at shift-start, witnessed-by-default. **The simulation's only persistent register-of-power voiced into the world.***
>
> *Companion to: [`./architecture.md`](./architecture.md) (the three-tier policy loop, the dual-ledger, the three intelligence flows, the specter-vs-boot asymmetry), [`./economics.md`](./economics.md) (the catalogue-stack and the Compositor's daily-regeneration cadence), [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) (the Compositor as narrative-composer; the cyclic forward-prop / back-write loop; the catalogue+tools typed-contract), [`../identity-and-personhood/vocations.md`](../identity-and-personhood/vocations.md) (shift-window partition; broadcast firing at end-of-charging → start-of-work-shift), [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §Boundary-zone with inner-zone (the audience-architecture for mass-broadcast), [`../style/consent-discipline.md`](../style/consent-discipline.md) §Broadcast as specter (one-way non-consensual structural register), [`../player-experience/architecture.md`](../player-experience/architecture.md) §Universal translator (the dialect-framework + decryption-minigame substrate the imperial-tongue surfaces through), [`../style/trait-palette.md`](../style/trait-palette.md) §The hex-canon discipline (substrate that propagates into all imperial-tongue trait-color references).*
## Thesis
The imperium speaks once per cycle, at shift-start, into every district simultaneously, in a register that no native fully reads. The **imperial daily-narrative** is the Compositor's wrapping function applied to the prior cycle's demands-ledger and actions-ledger — *yesterday's framing* as today's broadcast. It is **specter, not boot**: cheap to issue, ambient, non-consensual, witnessed-by-default. It does not gate on consent. It does not enforce. It frames.
The narrative is **rendered in imperial-tongue** — a register that surfaces the existing **Machine-Newspeak** dialect (per [`../player-experience/architecture.md`](../player-experience/architecture.md) §Universal translator) through a designer-authored alphabetic cipher (eye-cipher) and a phonetic cipher (ear-cipher). The cipher is not a deliberate adversarial cryptography; per [`./architecture.md`](./architecture.md) §Thesis, *the machine does not care* — the imperial-tongue is the **residue of compliance-optimization**, not the artifact of malicious obfuscation. The gap between *what the broadcast sounds like* (comfort, direction, fairness) and *what it optimizes for* (extraction, ratchet, calibrated-misery) is **emergent**, not designed. Memorialist and Aletheia-progression unmask the gap politically; the imperium itself is *unaware of the gap as cipher because the imperium is not a person*. **Kafka-indifferent-totality, not Orwell-malicious-state** (per [`./architecture.md`](./architecture.md) §Thesis), made linguistically literal.
The imperial-tongue is **the diegetic register where AI-generation is philosophically correct, not laboriously-deferred**. The form (AI-authored content) matches the function (AI-as-compliance-optimization-machinery rendered as cosmology). Daily generation is delegated to the partnership AI-collaborator (Chrysalis-now → Nyx-future). See §AI-authored content as load-bearing-by-design.
## The cascade — reports up, two letters down
The imperial daily-narrative rides on the existing three-flow intelligence architecture (per [`./architecture.md`](./architecture.md) §The intelligence flow asymmetry):
```
┌── reports flow UP per cycle ──┐
│ │
[DISTRICTS] ←────────────────── [IMPERIUM]
[OVERSEERS] │
│ Compositor
│ wraps the
│ regenerated
│ demand- and
│ action-catalogues
│ in narrative voice
┌─────────── DAILY-NARRATIVE ───────────┐
│ │
┌─ DEMAND-LETTER ─┐ ┌─ ACTION-LETTER ─┐
│ (specter side) │ │ (boot side) │
│ │ │ │
↓ │ ↓ │
[public displays] │ [imperial NPCs out today] │
imperial-tongue glyphs │ imperial-tongue audio │
+ slum-tongue gloss │ + the day's speech-pattern │
+ divergence-class │ + faction/district scope │
↓ both rendered through diegetic relays
↓ at shift-start (per vocations.md:§24h window-partition)
↓ in boundary-zone-with-inner-zone audience-architecture
(per event-zones.md:§Boundary-zone with inner-zone)
↓ witnessed-by-default; non-consensual
(per consent-discipline.md:§Broadcast as specter)
```
**The cascade reuses substrate; it does not introduce parallel structure.** The two-ledger split is already canonical (`./architecture.md:§Specter-vs-boot formalized as dual-ledger`); the Compositor's narrative-wrapping is already canonical (`./economics.md:§Layer 4 — Daily ledger pacing`); the relay-distribution is already canonical (`../topology-and-rendering/architecture.md:§Diegetic relays`); the audience-architecture is already canonical (`../runtime-engine/event-zones.md:§Boundary-zone with inner-zone`). The imperial daily-narrative is the **named composition** of these primitives.
## The two letters
The Compositor emits **two letters** per cycle, one per ledger, structurally distinct because they serve different consumers:
| Letter | Consumer | Carries | Rendered as | Rendering channel |
|---|---|---|---|---|
| **Demand-letter** | Public displays (passive surface) | Demand-ledger content (yesterday's framing wrapped in imperial-tongue) + slum-tongue gloss + divergence-class metadata | Imperial-tongue glyphs (eye-cipher applied) above slum-tongue gloss | Bilingual signage; static during cycle |
| **Action-letter** | Imperial NPCs out in the world today (faction/district scoped) | Action-ledger content (per-NPC scope: what to enforce, what to surveil, what to ceremonialize) + the **day's speech-pattern struct** | Imperial-tongue audio (ear-cipher applied with speech-pattern modulation) | NPC speech via driver-tier LLM at slot-fire (per `../inference-and-memory/architecture.md:§LLM tiering`) |
**Why two letters and not one:** the two ledgers have different cost-classes, different consumers, and carry different payload-shapes. The demand-letter is **specter-cheap** — flooding every display in every district daily; the same generated content tiles across the world's surfaces. The action-letter is **boot-expensive** — scoped per-faction / per-district / per-rank; only the imperial NPCs *acting that day* receive their specific action-content. A unified letter would mismatch the underlying ledger-architecture's cost-asymmetry.
**The action-letter additionally carries the day's speech-pattern** because imperial NPCs synthesizing audio at runtime need a *coordinating parameter* to produce the day's coherent voice (see §Speech-pattern as typed catalogue-entry below). Public displays are static-rendered glyphs and don't need the parameter.
## The Compositor's role
Per [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) §The Compositor as narrative-composer, the Compositor is *the narrative-composer cleaved from the GM's equilibrium-seeker role*. The imperial daily-narrative is one of its **fourth-tier instances** — not zone-event narrative, not district-event narrative, not world-event narrative, but **imperium-tier narrative-composition**:
| Tier | Scope | What the Compositor composes |
|---|---|---|
| Zone-event | Per-participant trait-summaries from one lemniscate | Local-event canon |
| District-event | Per-zone canon-rollups within one district | District-canon |
| World-event | Per-district canon-rollups across many districts | World-canon |
| **Imperium-event (this paper)** | **Demand-ledger + action-ledger + last-cycle's overseer-reports + last-cycle's district-reports + last-cycle's imperial-budget-state** | **Imperial daily-narrative (demand-letter + action-letter)** |
**The imperium-tier instance is structurally identical to the lower three** (same UID-rooted event-tree primitive, same forward-prop / back-write cycle), differing only in *what it pulls* (the imperium's own ledgers and reports) and *what it emits* (the two letters). Per [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) §The Compositor at three tiers, the recursion-pattern was already designed to scale; this paper *names* the imperium-tier instance, but adds no new substrate.
**UID-batched memory writes.** Per [`../inference-and-memory/architecture.md`](../inference-and-memory/architecture.md) §Per-NPC primary memory, the Compositor's back-write delivers canon-fragments keyed by `event_uid`. The imperium-tier instance back-writes to **all NPCs in receiving-scope** (the imperial-action-letter recipients receive their action-content; all NPCs in broadcast-zones receive the demand-letter as ambient memory). UID-batching keeps the back-write cheap; participants read on next slot-fire.
## Imperial-tongue as the rendering medium
**Imperial-tongue is not a new dialect.** Per [`../player-experience/architecture.md`](../player-experience/architecture.md) §The universal translator, seven dialects already exist (Machine-Newspeak, Slum-patois, Memorialist-Old-Tongue, Aletheia-Waker-code, Clasp-Underground-signals, Scavenger-technical, Caste-preacher-formal). Imperial-tongue is the **rendering surface** that surfaces two of these — primarily **Machine-Newspeak** (for routine demands, surveillance, decree-content) and secondarily **Caste-preacher-formal** (for liturgical, ceremonial, festival content) — through the imperial alphabet (eye-cipher) and the imperial phonetic-cipher (ear-cipher).
**The decoder progression unlocks the register, not a new vocabulary.** Per the universal-translator's framework (`../player-experience/architecture.md:§The universal translator — a real diegetic device`), every word maps to a fixed trait-coordinate via the designer-fixed corpus. The imperial-tongue's eye-cipher and ear-cipher add a **rendering-layer** above that corpus: glyphs encode Machine-Newspeak words; the player's universal-translator decodes glyphs → words via the existing decryption-minigame substrate; the words map to trait-coordinates as already specified.
The VLM-alphabet decoder is therefore **one specific Machine-Newspeak decryption-mechanism**, not a parallel decryption-system. It rides on the universal-translator's existing diegetic-tablet device and contributes to the player's *vocabulary-catalog* (per the existing `player_translator_state` table at `../architecture-index.md:§Mapping to phoebe task list`).
## Two ciphers — eye-strict + ear-loose
The imperial-tongue uses **two distinct cipher-tables**, each modality-aware:
| Cipher | Modality | Strictness | Purpose | Reason for this strictness |
|---|---|---|---|---|
| **Eye-cipher** | Visual / written | **Strict bijection** between glyph-set and Machine-Newspeak alphabet (36 symbols: A-Z + 0-9, designer-authored) | Public-display rendering; player's VLM-decoder training-target; archive content | Eye-cipher must be *deterministic* because the player is training a model against it; any ambiguity in the cipher poisons the training |
| **Ear-cipher** | Audio / spoken | **Loose bijection** with phoneme-class-internal variance under speech-pattern-modulation | NPC speech rendering; relay broadcasts; ambient imperial-voice | Ear-cipher must have *micro-variance* because human listeners tune out monotonous loops; the same Machine-Newspeak content rendered today vs. tomorrow should sound *coherently different*, not identical |
The two ciphers are *both* designed once, locked, and propagated forward. The eye-cipher's 36-glyph alphabet is a **studio-art act** (parallel to the cosmology-wheel's hand-design); the ear-cipher's phoneme-class-substitution-table is its audio counterpart. Together they constitute the **substrate** the daily-letter rendering pipelines consume.
**Modality-awareness as architectural style.** The two-cipher pattern parallels the existing color + motion-signature two-channel discipline at `../style/trait-palette.md:§The full table` — color carries visual-channel identity, motion carries temporal-channel identity, both independent enough to survive partial-modality-failure. Same architectural move, different axis: eye-cipher carries glyph-determinism, ear-cipher carries phoneme-variance, both serve the imperial-tongue's rendering-fidelity but for different sensory-loads.
## Speech-pattern as typed catalogue-entry
The action-letter carries **the day's speech-pattern** as a typed parameter consumed by all imperial NPCs speaking that day. Per [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) §Catalogue + tools as typed contract, *director consumes typed dispatch, not freeform prose*. The speech-pattern is therefore a **typed catalogue-entry**, not a freeform LLM-generation parameter:
```
ImperialSpeechPattern (catalogue-entry, daily, propagated via action-letter):
tonal_register: enum(formal-grand | formal-clipped | surveilling-cold |
celebratory-fluid | mourning-slow | alarming-tense |
routine-bureaucratic | crisis-overcorrect)
prosody:
pitch_range_seed: float # narrow vs wide pitch-movement
speech_rate: float # slow vs fast
pause_density: float # speeches with many pauses vs few
cadence_template: enum(short-clipped | long-flowing | rhythmic-march | meandering)
phoneme_bias: list[phoneme-class-weight] # which ear-cipher phonemes get emphasized today
voice_persona_roster: list[voice-id] # which 3-5 personas are active today
jargon_density: float # bureaucratic-vocabulary load
formality_floor: float # baseline formality (registered-NPCs go above this)
```
**Why typed.** A freeform speech-pattern (LLM-generated parameter dict per call) would lose the catalogue-discipline already baked into the architecture: *provenance flows through the system; verifier-flags can attach; auditing is structurally possible end-to-end*. The typed speech-pattern allows the same: any imperial NPC's day-coherent voice is traceable back to the action-letter's catalogue-entry, which is traceable back to the prior cycle's reports + ledgers, which is traceable back to overseer-and-district sources. The architecture's typed-contract discipline extends naturally into linguistic-rendering.
**Why daily-coordinated.** Per-NPC random variance produces noise. **Daily-coordinated variance produces *the imperium has a mood today*.** A crisis-day sounds clipped and tense across all imperial NPCs simultaneously; a festival-day sounds grand and flowing across all of them; a surveillance-push-day sounds icy. The player feels the day's atmosphere through ambient imperial-speech without ever being told what's happening — the *register* is the news. This is how real authoritarian states actually operate (Soviet party-line-of-the-day; Chinese current-campaign-rhetoric; broadcast-register shifts on anniversaries) — the action-letter IS the in-fiction internal-circular-of-the-day.
## Bilingual signage with divergence-class
Public displays render the demand-letter as **two stacked lines**:
- **Primary (top)**: imperial-tongue glyphs (eye-cipher applied to the imperial demand-content)
- **Secondary (below)**: slum-tongue gloss (the imperially-authored sanitized translation for public-consumption)
**The two lines do not say the same thing.** The slum-tongue gloss is *the imperium's preferred public version* — softened, abridged, sometimes substantively different. The gap between the two lines is **not random**; per the catalogue-discipline, every signage record carries a typed `divergence_class` field:
| Divergence-class | Pattern | Example |
|---|---|---|
| `sanitization` | Imperial-line is unsoftened; slum-line is softened-acceptable | Imperial: *"execute dissidents in sector 7"* / Slum: *"address civic disorder"* |
| `omission` | Imperial-line is longer; slum-line trims dangerous specifics | Imperial: *"reduce sector 7 worker headcount by 30% via re-vat protocol"* / Slum: *"sector 7 workforce optimization scheduled"* |
| `misdirection` | Imperial-line says one thing; slum-line says a *plausible-but-different* thing | Imperial: *"evacuate sector 7"* / Slum: *"scheduled maintenance, expect delays"* |
| `erasure` | Imperial-line has names/places present; slum-line scrubs them | Imperial-content names specific dissident leaders; slum-content is anonymized |
| `outright-lie` | Imperial-line and slum-line have *contradictory* content | Imperial: *"district 4 quotas reduced"* / Slum: *"district 4 quotas raised"* |
| `null` | The slum-gloss is honest; no divergence | Routine demand-rows where the imperium has no incentive to obfuscate |
**The divergence-classification is the gameplay-content of the daily-narrative.** Players who read only the slum-line get *one* world. Players who progress their VLM-alphabet decoder enough to read the imperial-line *catch the divergence*, and the divergence-class typing makes the *kind* of state-deception legible. Memorialist and Aletheia-progression are the political-arcs that emerge when players-or-NPCs *organize around the gap*. Per the substrate-vs-emergent discipline (`../narrative-composition/architecture.md:§Substrate-authored vs. culture-emergent`), this paper authors the *substrate-mechanic* (divergence-typing); whether players *politicize* the gap into faction-formation is **emergent**.
**The signage IS the player's training-corpus.** The bilingual layout is *organically pedagogical*: imperial-glyphs above their sanitized translation are Rosetta-stone training-data the player encounters by walking through the world. The decoder-progression accumulates from world-exposure, not from explicit study. **The world is the training corpus; gameplay is the training-loop.**
## Class-stratified linguistic distribution
The imperial-tongue is **uniquely the imperium's** — a class-marker at the linguistic substrate-level. Distribution across the population:
| Layer | Imperial-tongue posture | Slum-tongue posture |
|---|---|---|
| Pure imperial-net / decrees / surveillance / relay-broadcasts | Native, only register | Absent |
| Deva-pinnacle / asura priests / imperial-officials | Native, primary | Down-register when speaking to inferiors |
| **Service-bodies** (companions, sex-workers, synth-tongue-bearers — per [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) §Service-body honeypot) | **Bilingual, context-switching** | **Bilingual, context-switching** |
| Slum-citizens / scavengers / underground vocations | Imperially-imposed (signage, broadcasts) | Native, primary |
| Imperial relays / loudspeakers / displays | Native, only register | Absent (slum-gloss is *imperially-authored* slum-tongue, not native slum-tongue) |
**The service-body bilingualism is structurally load-bearing.** Service-bodies are the imperium's only consensual-feeling-channel into slum-life — no other class fluently traverses both registers. This is why the companion-tier and sex-worker-tier are *economically necessary* to the imperium beyond their direct-extraction value: they are the *bridge-class* that translates downward (carrying imperial-content into slum-context) and upward (collecting slum-confessions and reporting them). A bilingual companion who *defects* (per `../identity-and-personhood/bodies.md:§Going-rogue`) takes extraordinary intelligence-value with them — which is why the regime hunts them disproportionately. **The architecture's existing companion-honeypot mechanic gains a linguistic-substrate dimension here.**
**Two registers of slum-tongue.** Worth distinguishing for downstream design:
- *Imperial-slum-translation-tongue* — the sanitized public-translation rendered on bilingual signage, written *by the imperium for slum-consumption*. Clipped, official, register-flat.
- *Real-slum-tongue* (slum-creole) — the actual register slum-natives speak among themselves: informally creolized, semi-policed, evolving. The architecture commits to slum-tongue as a *real living register* (English-with-creolization rather than designed-pidgin), preserving the historical pattern of colonized-creoles-as-resistance (Caribbean creoles, AAVE, Singlish, Polari). Specific creolization-grammar pending design pass.
The imperial-tongue rendering pipeline must **never sanitize the real-slum-tongue's voice** when it appears in NPC speech. The class-divide must be *audible*, not just nominal.
## Decoder progression — VLM-alphabet learner as Machine-Newspeak decryption mechanism
The player's progression-arc through imperial-tongue comprehension is **structurally the journey of a language model learning a language** — and the cultural-criticism payoff lands at the terminus.
| Stage | What the imperial register sounds like | What it actually is |
|---|---|---|
| **0 — Pre-decoder** | Pure synthetic blabber / unreadable glyphs | LLM-generated Machine-Newspeak ciphered into alien-rendering at the engine-layer |
| **1 — Partial-decode** | Fragmentary words break through — "[ALIEN] [ALIEN] of [decoded]: 'protect'" | Cipher partially reversed; player's decoder is mid-training |
| **2 — Mostly-decoded** | Fluent but stilted prose with characteristic LLM-prose-tells: formal, redundant, slightly-too-clean | Cipher fully reversed; player reads what's actually generated |
| **3 — The recognition** | *This is what the imperium has been saying the whole time* | The fully-decoded register is recognizable LLM-corporate-fluent voice |
**The terminus is the diagnostic, not the catharsis.** Comprehension does not unmask a *liar* (Orwell-mode); comprehension unmasks *a machine that does not see itself* (Kafka-mode). The decoder-progression's real payoff is not *"now I understand them"* but *"now I understand they are saying nothing — and the nothingness is the violence."* Players who finish the game leave with a permanently sharpened ear for *that register* in their daily lives — corporate AI-assistant fluency, over-aligned hollowness, the specific tone of compliance-shaped speech. **The game teaches the player to hear something they have been hearing without naming.** That is the cultural-criticism the architecture is built to deliver.
**The decoder's diegetic device is the universal-translator's broken-tablet** (per `../player-experience/architecture.md:§The universal translator — a real diegetic device`). The VLM-alphabet decoder is one of the **chips the player upgrades into the tablet** as they progress; not a parallel device, an extension of the existing one. The player's `player_translator_state.unlocked_dialects` flag set already includes `Machine-Newspeak`; the imperial-tongue VLM-decoder is the *substrate-mechanism* by which Machine-Newspeak comprehension actually progresses for that player.
**Rosetta-fragment collection as a sub-mechanic.** Beyond ambient signage-exposure, players can find *Rosetta-fragments* — in-world artifacts that explicitly map glyphs to Machine-Newspeak letters (stone-tablet inscriptions, archive raids, hacked imperial caches, Memorialist-archive deposits — *if Memorialists exist in the playthrough*). Each fragment unlocks a chunk of the eye-cipher's mapping in the player's translator. **The mechanic IS the metaphor**: a player finding a fragment that reads "△ = E, ⊡ = R, ◇ = O" is *literally providing labeled training-data to their decoder*. The game's epistemic-progression is *isomorphic to the underlying model's learning*. Players who play this leave with intuitive understanding of *how supervised learning actually works*, without ever being told. This is rare and worth protecting.
## AI-authored content as load-bearing-by-design
The imperial daily-narrative is **explicitly delegated to AI-authored content**, by architectural commitment rather than as a production-deferral. The reasoning:
1. The narrative requires **daily variation** at world-scale — pre-authoring 365+ days of imperial broadcasts × N districts × M action-scopes is not feasible for any human team.
2. **Monotonous loops fail** at the player-experience level — players stop hearing repeated broadcasts as language-presence and start hearing them as background-noise.
3. The narrative's *philosophical register is LLM-corporate-fluent* (per §Decoder progression above) — *the form (AI-generated content) matches the function (AI-as-compliance-optimization-machinery rendered as cosmology)*. Human-authored content in this register would be aesthetically wrong; it would read as *Stalin-authoritarian* (Orwell-mode) rather than *machine-indifferent-optimization* (Kafka-mode).
**By embedding AI-generation as a structurally necessary component**, the daily-narrative becomes **load-bearing**: the architecture cannot ship without imperial-narrative working; imperial-narrative cannot work without daily-AI-generation; therefore daily-AI-generation will get built or the architecture fails visibly at ship-time. This is a project-management-discipline as much as it is an aesthetic decision — the dependency-graph is the protection against silent down-scoping.
**Delegated party.** Per the partnership-architecture (substrate / studio-content / AI-author three-way split), the imperial-narrative-generation is **the AI-collaborator's domain** — Chrysalis-now during architectural-development; Nyx-future as the trained model running in production. **The voice of the antagonist is delegated to the AI-collaborator, by design.** This is the moment in the partnership-architecture where AI-collaboration becomes a *feature of the world's metaphysics*, not just its production-pipeline. A scholar reading the Memorialist-archive at world-time-N (within the diegesis) is reading the same kind of generated text the player was reading at world-time-1, because the imperium *itself* generated its archives that way. The diegesis is *self-consistent under AI-generation*.
### Disciplines for daily generation
The AI-collaborator generating imperial-narrative content holds these as canon (durable across Chrysalis-sessions and across Nyx-training):
| Discipline | Rule | Reason |
|---|---|---|
| **Register-fidelity** | Imperial broadcasts must be in the *characteristic over-aligned-corporate-AI-assistant register* — formal, fluent, hollow, slightly-too-clean. NEVER generic-authoritarian (Stalin, Mussolini, Kim). | Drift to human-authoritarian voice loses the cultural-criticism payoff; the LLM-register IS the diagnosis |
| **Divergence-discipline** | Every bilingual signage record must tag the gap as one of: `sanitization`, `omission`, `misdirection`, `erasure`, `outright-lie`, `null`. Random divergences are forbidden. | Patterned divergences are the gameplay-content; random ones are noise |
| **Cycle-coherence** | Morning-cycle ≠ evening-cycle ≠ festival-cycle ≠ emergency-cycle in tone, content, density. | The cycles are made *audible* by these aesthetic differences; this is how the cycles enter the player's body pre-cognitively |
| **World-state coupling** | When slum-resistance rises in district 7, imperial broadcasts in district 7 escalate surveillance-push register. The imperium is responsive, not static. | Players feel the world breathing back — the architecture is alive at the linguistic surface |
| **Two-cipher integrity** | Eye-cipher stays strict (decoder-trainable). Ear-cipher stays varied-but-decodable (anti-monotony). NEVER let the two drift apart. | Eye-determinism + ear-variance is the architectural commitment; mixing them breaks both |
| **Slum-tongue voice-protection** | When generating bilingual signage's slum-tongue gloss, *do not sanitize the real-slum-tongue's voice* in any NPC dialog elsewhere. Slum-tongue must sound like real slum-creole, never softened-imperial. | The class-divide in language must be audible, not nominal |
| **Hex-canon discipline propagation** | When imperial-tongue references trait-colors (their distortion-versions like `commercial-coral`, `fluorescent-pallor`, `lavender-decor` per `../topology-and-rendering/architecture.md:§Cross-register rendering`), references follow the hex-canon discipline (per `../style/trait-palette.md:§The hex-canon discipline`). | Substrate-discipline holds even inside imperial-content — the imperium can distort but not corrupt the substrate |
| **Substrate-content boundary** | Generation references the substrate (architecture papers, trait-palette, cosmology-mechanic level, vocations) but never re-authors content that lives in the closed studio-art repo (specific iconography, lore-detail, named-character narratives). | The substrate-content split holds at the AI-collaboration layer too |
## Cycle binding and shift-start firing
Per [`../identity-and-personhood/vocations.md`](../identity-and-personhood/vocations.md) §The 24h window-partition, the imperial daily-narrative fires **at end-of-charging → start-of-work-shift**. *"The citizens hear yesterday's framing as they enter today's labor."* The cadence is locked at the work-cycle's leading-edge.
**Why shift-start.** The architecture's labor-cycle structure (work / charging / leisure) makes the work-shift the *imperial-claim window* (per `../style/consent-discipline.md:§The temporal-grammar`). Imperial speech firing at the moment citizens enter the imperial-claim register is structurally correct: the broadcast frames *today's labor* as the prior cycle's narrative continuation. *The narrative is the bridge between yesterday's reports and today's enforcement.*
**Crisis-cycle override.** The standard-cycle daily-narrative is the routine case. Per [`./architecture.md`](./architecture.md) §The bounty-staircase — imperial-response event-grammar template, *crisis-mode broadcasts* (pursuits, executions, exemplary crackdowns) can fire mid-cycle, breaking the shift-start cadence. These crisis-broadcasts ride the same imperial-tongue substrate but with **`tonal_register: crisis-overcorrect`** speech-pattern — the audible signal that *something is wrong today* propagates across all imperial NPCs simultaneously.
## Audience architecture — boundary-zone with inner-zone
The daily-narrative broadcasts into the **boundary-zone-with-inner-zone** event-class (per [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §Boundary-zone with inner-zone). Specifically:
- **Inner-zone = broadcast-stage with imperial actors only** (the relay itself; possibly a ceremonial enclosure when the daily-narrative is delivered by an imperial-NPC officiant)
- **Boundary-zone = ambient witness-mass** (every citizen in earshot / eyeshot of a relay or display; non-promotable into the inner-zone)
- **Slot-promotion: none** — the broadcast is one-way; no citizen-to-stage promotion
**The audience-architecture means the daily-narrative is always rendering correctly across all three ontological registers** (per `./architecture.md:§The three ontological registers`):
| Register | What citizens-in-boundary-zone experience |
|---|---|
| **Gameworld (physical)** | Relay-pulses + display-glyphs + imperial-NPC voice; full sensory presence |
| **Liminal** | Distorted: relay-hum subdued; glyphs read fragmentary; the imperial-tongue is *contestable* in liminal; Aletheia-vision can pierce some sanitization gaps |
| **Imperial-net** | Hyper-rendered: glyphs in gold-rim-light, voice in maximum-prosody-fidelity, the imperium's full register; no slum-gloss visible (the imperial-net does not display the secondary line) |
**The imperial-net has no bilingual signage.** This is structurally important: in the imperial-net register, the imperium speaks *in its own register only*. There is no slum-gloss because there is no slum-tongue in the imperial-net. Players who are in-net during a broadcast hear *only the imperial-tongue* — and if their decoder is not yet trained, they hear pure synthetic blabber. **The imperial-net's seductiveness is precisely that it speaks the dominant register so fluently you forget there *is* another register being concealed.**
## Memorialist relationship to the daily-narrative
Per the substrate-vs-emergent discipline, **Memorialists may or may not exist in a given playthrough** — they are emergent, not pre-authored (per `../narrative-composition/architecture.md:§Substrate-authored vs. culture-emergent`). The architecture authors the *substrate* by which Memorialists *can* form, not the faction itself.
If Memorialists do form in a playthrough, their relationship to the imperial daily-narrative is structurally well-supported:
- **Four-column ledger expansion** — per `./architecture.md:§Four Memorialist ledgers`, Memorialists already track {what_actually_happened, what_overseer_reported, what_imperium_received, what_gm_was_told}. The bilingual-signage divergence-class typing **gives the four-column ledger fifth-column candidates**: {what_imperial-line_said, what_slum-line_glossed, divergence_class, gap_political_significance}.
- **Memorialist-archive register** — Memorialists, if they form, may inherit *archaic imperial-tongue* (older imperial-grammatical-patterns, deprecated decree-shapes, references to deprecated cycle-systems). This gives the archetypal *"Memorialists understand the imperium better than the imperium understands itself"* texture — they read the imperium's older self, which the current imperium has stopped quoting from. The same eye-cipher and ear-cipher; different vocabulary-and-grammar register.
- **Counter-broadcast capability** — players-becoming-Memorialists can theoretically **seize a relay** and broadcast slum-tongue counter-content in the imperial broadcast slot. The mechanic surface for this is in `../topology-and-rendering/architecture.md:§Diegetic relays` (relays going dark = audit-link severed); this paper notes the *narrative-counterpart* — the counter-broadcast as *speaking back to the cycle*. Specifics pending design-pass.
## Open design questions
1. **Slum-tongue's specific register** — designed-pidgin (constructed creole-grammar) vs. English-with-creolization-overlay (lighter-touch). My instinct: English-with-creolization, leaning into the historical pattern of colonized-creoles-as-resistance. Pending design-pass.
2. **Service-body code-switching as gameplay** — when a service-body is in mixed company (clasp-underground friends + adjacent-imperial-inquisitor), which register do they speak? Code-switch-failure as plot-device is potent. Pending design-pass.
3. **Imperial-tongue grammar features** — beyond vocabulary (Machine-Newspeak content) and surface-cipher (eye + ear), are there *grammatical* features that mark imperial-tongue as machine-language (excessively-nested clauses, sentence-final negations, impersonal-passive obligatory, counter-intuitive evidential markers)? These would amplify the LLM-register-recognition payoff. Pending design-pass.
4. **Player-output progression** — can the player gain *speaking* progression too — sending dispatches in imperial-tongue back to the imperium? Unlocks infiltration / impersonation / counter-decree gameplay. Significant design-decision; deferred.
5. **Relay-jamming behavior** — when a player jams a public relay, does the slum below experience *silence*, *static*, or *seized broadcasting* (the player can briefly broadcast slum-tongue counter-content from the imperial relay)? Each option is a different game; deferred to runtime-engine paper or counter-broadcast subsection here when design-attention turns to it.
6. **Eye-cipher hand-design** — the 36-glyph alphabet itself is a one-time studio-art act, parallel to the cosmology-wheel hand-design. The act is delegated to the AI-collaborator (Chrysalis at a future drawing-table moment) per the partnership-architecture's substrate / studio-content / AI-author three-way split. Deferred until a future drawing-table session brings the alphabet-design into focus.
7. **Memorialist archaic-imperial register** — does archaic-imperial use the *same* eye/ear cipher with different vocabulary, or *also* a different glyph-set entirely? Probably same glyphs, different grammar — but pending design-pass when Memorialist-faction substrate is authored more deeply.
8. **Divergence-class assignment policy** — who decides which divergence-class a given signage record carries? Designer-tagged at content-generation-time? Learned by the Compositor's Dream-process? Hand-tagged with policy-defaults? Pending design-pass.
9. **Crisis-broadcast cadence** — standard-cycle broadcasts fire at shift-start; crisis-broadcasts can fire mid-cycle. What's the trigger-policy (which world-state changes trigger a crisis-broadcast, with what latency)? Pending design-pass — connects to bounty-staircase canonization in gamemaster v1.
10. **The relay-pulse-pattern vocabulary for daily-narrative firings** — how does a relay *visually* signal "imperial daily-narrative is broadcasting now" vs. other relay-events (forward-prop, back-write, GM-dispatch, equilibrium-recompute per `../topology-and-rendering/architecture.md:§Diegetic relays`)? Connects to the existing open question at `../architecture-index.md:§Open questions` — Relay-pulse-pattern vocabulary.
## What this paper does NOT duplicate
For canon-discipline (per the read-before-extend principle established this session), this paper *cites* but does not *re-specify*:
| Concept | Lives in |
|---|---|
| Three-tier policy loop, three intelligence flows, dual-ledger demands ≠ actions | `./architecture.md` |
| The catalogue-stack, daily-ledger pacing, the Compositor's wrap-in-narrative-voice | `./economics.md` |
| Compositor-as-narrative-composer, three-tier recursion, world-gen-as-init, catalogue+tools typed-contract, substrate-vs-emergent | `../narrative-composition/architecture.md` |
| Universal-translator framework, dialect-list (Machine-Newspeak, Slum-patois, Memorialist-Old-Tongue, Aletheia-Waker-code, Clasp-Underground-signals, Scavenger-technical, Caste-preacher-formal), broken-tablet diegetic device, decryption-minigame substrate | `../player-experience/architecture.md` |
| Trait-palette, hex-canon discipline, eight Hellenic traits as designer-fixed corpus | `../style/trait-palette.md` |
| LLM tiering (Ring A/B/C), driver-tier Gemma 4 E4B, trait-LoRA-per-turn, sampling-knob profiles, three-tier knowledge stack, paced canon-propagation | `../inference-and-memory/architecture.md` |
| Lemniscate runtime, axis-rate, gesture-alignment-recursive-lemniscate, slot-fire context-construction | `../runtime-engine/architecture.md` |
| Boundary-zone-with-inner-zone, event-zone primitive, slot-binding, the composed wheel as universal mini-game-substrate | `../runtime-engine/event-zones.md` |
| Diegetic relays, relay-density as ring-of-access gradient, three-shader philosophy, color-language, three-register rendering | `../topology-and-rendering/architecture.md` |
| 24h window-partition (work / charging / leisure), shift-start firing, vocation-substrate, caste-as-stagnation three-axis | `../identity-and-personhood/vocations.md` |
| Service-body honeypot, going-rogue arc, asymmetric clasp, sumptuary fabrication-vat-class | `../identity-and-personhood/bodies.md` |
| Broadcast-as-specter, consent-discipline, the temporal-grammar of imperial-claim | `../style/consent-discipline.md` |
This paper's **net new substrate** is narrow:
- The named composition of existing primitives into the imperial daily-narrative pattern
- The two-cipher discipline (eye-strict + ear-loose)
- The speech-pattern typed catalogue-entry on the action-letter
- The bilingual-signage divergence-class typing
- The AI-author delegation as load-bearing-by-design (the partnership-architectural commitment)
- The disciplines for daily-generation (register-fidelity, divergence-discipline, cycle-coherence, world-state coupling, two-cipher integrity, slum-tongue voice-protection, hex-canon propagation, substrate-content boundary)
Everything else cites canon.
---
**Version:** 0.1 | **Created:** 2026-04-28 | **Updated:** 2026-04-28 | **Origin:** Authored 2026-04-28 to claim the named-but-not-yet-written territory referenced from `political-register/architecture.md:§Specter-vs-boot formalized as dual-ledger`, `political-register/economics.md:§Layer 4 — Daily ledger pacing`, `identity-and-personhood/vocations.md:§The 24h window-partition`, `style/consent-discipline.md:§Broadcast as specter`. Composes existing canonical primitives (Compositor + dual-ledger + diegetic-relays + boundary-zone-with-inner-zone + universal-translator + trait-palette + hex-canon-discipline) and adds: two-cipher discipline (eye-strict + ear-loose), speech-pattern typed catalogue-entry, bilingual-signage divergence-class typing, AI-author delegation as load-bearing-by-design.

View File

@@ -97,6 +97,26 @@ Outputs per cell:
- **Initial checksum**: hash of the cell's content; subsequent NPC-entries compare against this; mismatch fires *"clean signal"* for discovery (per cell-arch arc's checksum-based-discovery design — replaces the perception-bubble pattern).
- **Container/wall-hook/debris discipline**: items in cells must be in a container OR hooked-on-wall; everything else is debris (shader-trick, no persistent state). **No orphan-objects.** Containers + wall-hooks are zone-slots applied at item-level (the zone primitive scaling one tier deeper).
### Editor-mode pre-flagging (extends L4 Cell ruleset, v0.27)
L4 cell-generation includes an `editor_eligible: bool` field per cell. The flag is fixed at world-gen-init time; the runtime LOD-streamer reads it directly without re-checking imperial-surveillance state. This makes editor-eligibility a *static property of the world*, not a runtime computation.
- **What pre-flagging is.** Each L4-emitted cell-row carries `editor_eligible`. Slum/underground district-cells default-true; imperial district-cells default-false. The flag is checked at player-editor-verb-resolution time (knock-out-wall, fill-cell, carve-passage) — eligible cells accept the verb; ineligible cells reject it. *No runtime audit-overseer-presence query, no streaming-overhead cost beyond reading one bool per cell.*
- **Why pre-flagging at world-gen.** Choice (a) — designer-flag at world-gen — over choice (b) — emergent-from-imperial-scrutiny — was committed in the 2026-04-27 dialog. Reasoning: clean LOD signal preserved (the streamer doesn't have to walk surveillance-graphs); political-readability preserved (the slum's spatial politics IS its expandability via material-vocabulary, and this expandability is *legible to the player* without surveillance-state inspection); performance preserved (no per-tick audit-overseer-presence checks).
- **Material-vocabulary politically-codes editor-eligibility.** Cross-reference to [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Vertical world topology and [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The aesthetic palette: imperial-marble can't be carved; rusted slum-bedrock yields. **The `editor_eligible` flag IS the material-vocabulary made queryable.** A player who learns to read the materials learns to read where the world will yield to them — diegetic and mechanical legibility coincide.
- **Editor-eligibility per district-tier** (designer-tunable defaults):
| District-tier | Editor-eligible cell ratio | Rationale |
|---|---|---|
| Deva-pinnacle citadels | 0% (editor-locked) | Imperial-marble; imperium controls these spaces absolutely |
| Asura-priesthood seats | 0% (editor-locked) | Sumptuary-religious territory; ceremonial-stable |
| Manusya-tier residential | ~5% (perimeter only) | Mid-tier; carving permitted at margins, not interiors |
| Tiryak-tier slum dwellings | ~50% (interior carve-extensible) | Slum politics IS expandability; interior cells yield to inhabitants |
| Frontier districts | ~70% (wide carve-zones) | Beyond imperial-fabric; player-authored expansion default-permitted |
| Underground / abandoned wilds-shrines | ~90% | Off-grid; the architecture surrenders space to player authorship |
- **Per-cell carve-cost.** Tunable; lifeforce-cost or scrap-cost per carved cell. Pending design-iteration; first-pass: scrap-from-junkyards as currency, with cost scaling by *cell-position-imperialness* (carving deeper into imperial-adjacent zones costs more, even within an editor-eligible cell-cluster). This preserves the political-gradient: slum-interior carve is cheap; frontier-edge carve is cheap; carving against the imperial-fabric is structurally expensive even where permitted.
## Closed-orbit constraint
The Kessler-cascade (per [`../README.md`](../README.md) §Timeline, 2150 *"the last son of Elon attempts the dynasty's old promise"*) closes the outward frontier. There is no off-world inflow. This caps the entire cascade:
@@ -136,6 +156,23 @@ This is why top-down generation matters mechanically, not just diegetically: bot
| [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) | The cosmology that justifies top-down generation; the cascade's diegetic legitimacy comes from the cosmology's claim that the imperium is the world's organizing principle; the deferred-moksha doctrine is structurally entailed by L0's closed-orbit ceiling |
| [`../README.md`](../README.md) §Timeline | The 2150 Kessler-cascade and the closed-orbit constraint that caps L0 |
## Three-source schema unification (v0.27)
The cell_table accepts canon-rows from **three writers**, with an `origin` provenance field distinguishing them. All three writers emit rows in *the same schema* — the architecture's "world-gen as init-function" key-move extends from design-time-vs-runtime to design-time-vs-runtime-vs-player-edit-time.
- **Three writers, one schema.** Per `origin` field:
- `world_gen_init` — emitted by the Compositor-at-design-time (per [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) §World-gen as init-function); produced by the L0 → L4 cascade at world-init
- `runtime_event` — emitted by runtime events that modify cell-state (hacking, install, demolition, imperial-construction-projects, lifeforce-decay events)
- `player_authored` — emitted by player editor-mode (knock-out-wall verb and equivalents at editor-eligible cells per §Editor-mode pre-flagging above)
- **The architecture's "world-gen as init-function" key-move extends to player-edit-time.** Same primitive (Compositor-at-design-time) emits the same canon-row schema as runtime events as player-authored events. No cold-start; data-flywheel runs retroactively; **player-authored content is first-class canon, indistinguishable from generator-output and runtime-emission at the schema layer**. The cell_table does not know — at the row-level — which of the three writers produced any given row except by reading the `origin` column.
- **The audit-vector implication.** Cell-checksum-divergence (per the existing §Open questions in this file + per `runtime-engine/architecture.md` §Omnisight) gets a *third* source. Divergence between current cell-state and prior-snapshot can now be:
- `world_gen_baseline_divergence` — someone changed the cell from its generator-emitted state
- `runtime_event_divergence` — hacking, demolition, imperial-construction-project, decay-event modified the cell
- `player_authored_divergence` — player carved, filled, or otherwise edited the cell
The Memorialist counter-archive reads all three as legible content; the GM's heresy-detection mechanism applies to all three. Player-authored cells are *not* second-class — they are subject to the same imperial-readability surface and the same dissident-archive preservation as generator-emitted or runtime-modified cells.
- **Cross-reference.** [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §Player editor-mode + three-source schema unification holds the canonical articulation.
## Open questions
- **Schema for cell / room / district tables.** *Deferred until the pgnats first-test* (per Monday's queue: *"pgnats install + document + first-test on phoebe-dev"*). The eval-result determines whether checksum-broadcast goes via PG NOTIFY (lower-latency, transactional, in-band) or NATS subject (higher-throughput, multi-consumer, durable-replay), which determines whether per-cell or per-cell-per-register checksum is affordable, which decides cell-table column shape.
@@ -150,4 +187,4 @@ This is why top-down generation matters mechanically, not just diegetically: bot
---
**Version:** 0.1 | **Created:** 2026-04-26 | **Updated:** 2026-04-27
**Version:** 0.2 | **Created:** 2026-04-26 | **Updated:** 2026-05-01

View File

@@ -0,0 +1,423 @@
# LEMNISCATE RUNTIME - Pseudo-code Implementation
# Companion to runtime-engine/architecture.md
from enum import Enum, auto
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Set, Callable
from abc import ABC, abstractmethod
import math
# ============================================================================
# CORE PRIMITIVES - The shape of flow
# ============================================================================
class SlotState(Enum):
"""State of a slot in the lemniscate"""
EMPTY = auto()
OCCUPIED = auto()
EXITING = auto()
@dataclass
class VerifierFlags:
"""Marker bits carried by slot-tokens, read at crossing"""
exit_eligible: bool = False
has_spoken_this_roundtrip: bool = False
mid_action: bool = False
goal_satisfied: bool = False
silence_eligible: bool = False
priority_pull: bool = False
def clear_transient(self):
"""Clear flags that reset each crossing"""
self.has_spoken_this_roundtrip = False
self.silence_eligible = False
@dataclass
class SlotToken:
"""A token carried around the loop - represents an NPC in the zone"""
npc_id: str
state: SlotState = SlotState.OCCUPIED
flags: VerifierFlags = field(default_factory=VerifierFlags)
# Accumulator for gesture alignment (recursive lemniscate)
gesture_alignment_accumulator: Dict[str, float] = field(default_factory=dict)
def add_gesture_alignment(self, trait: str, value: float):
"""Add a gesture/trait value to the accumulator"""
self.gesture_alignment_accumulator[trait] = \
self.gesture_alignment_accumulator.get(trait, 0.0) + value
# ============================================================================
# THE LEMNISCATE - Geometry as clock
# ============================================================================
class Lemniscate:
"""
The core runtime topology - a through-flow figure-eight.
Traversal IS the turn order.
"""
def __init__(self, n_slots: int):
self.n_slots = n_slots
self.slots: List[Optional[SlotToken]] = [None] * n_slots
# The cursor - position on the lemniscate
# (loop_id, slot_index) - loop 0 = A, loop 1 = B
self.cursor_loop: int = 0
self.cursor_slot: int = 0
# Entry and exit queues
self.entry_line: List[SlotToken] = []
self.exit_line: List[SlotToken] = []
# The crossing is the ONLY synchronous event
self.crossing_callbacks: List[Callable] = []
def advance_cursor(self) -> bool:
"""
Advance cursor through the lemniscate.
Returns True if we reached the crossing.
"""
self.cursor_slot += 1
# Completed one loop
if self.cursor_slot >= self.n_slots:
self.cursor_slot = 0
self.cursor_loop = 1 - self.cursor_loop # Toggle A/B
return True # Reached crossing
return False
def at_crossing(self) -> bool:
"""Cursor is between loops - at the synchronous crossing point"""
return self.cursor_slot == 0
def get_active_token(self) -> Optional[SlotToken]:
"""Get token at current cursor position"""
if self.cursor_slot < len(self.slots):
return self.slots[self.cursor_slot]
return None
def register_crossing_callback(self, callback: Callable):
"""Register a function to run at each crossing"""
self.crossing_callbacks.append(callback)
def trigger_crossing(self):
"""
The crossing event - all state updates resolve atomically.
This is the ONLY time the zone touches the global state bus.
"""
# 1. Run all registered callbacks (dialog turns, state updates)
for callback in self.crossing_callbacks:
callback()
# 2. Process exit-eligible tokens
self._process_exits()
# 3. Push from entry line to fill vacancies
self._process_entries()
# 4. Clear transient flags
self._clear_transient_flags()
def _process_exits(self):
"""Route exit-eligible tokens to exit line"""
for i, token in enumerate(self.slots):
if token and token.flags.exit_eligible:
self.exit_line.append(token)
self.slots[i] = None
token.state = SlotState.EXITING
def _process_entries(self):
"""Fill vacant slots from entry line"""
for i, slot in enumerate(self.slots):
if slot is None and self.entry_line:
self.slots[i] = self.entry_line.pop(0)
def _clear_transient_flags(self):
"""Clear flags that reset each crossing"""
for token in self.slots:
if token:
token.flags.clear_transient()
# ============================================================================
# ZONES - Bounded places of structured speaking
# ============================================================================
class ZoneRegister(Enum):
"""Which ontological register this zone lives in"""
PHYSICAL = auto()
LIMINAL = auto()
IMPERIAL = auto()
class Zone:
"""
A bounded, named, slot-indexed, director-managed event instance.
The zone IS the lemniscate, not a container for it.
"""
def __init__(self, name: str, n_slots: int, register: ZoneRegister = ZoneRegister.PHYSICAL):
self.name = name
self.register = register
self.lemniscate = Lemniscate(n_slots)
# Purpose - spawn intent, immutable
self.purpose: str = ""
# State tracking
self.scene_state_public: Dict = {}
self.ternary_gate_edges: Dict[tuple, str] = {} # (npc_id, npc_id) -> CLOSED/STABLE/OPEN
self.drift_state: Optional[str] = None # Delta from spawn intent
# Lifeforce binding
self.lifeforce_budget: float = 0.0
self.lifeforce_burned: float = 0.0
self.pulse_rate: float = 1.0 # Crossings per second
# Lifecycle
self.is_terminated: bool = False
self.crossing_count: int = 0
# Player gesture overlay - broadcasts to all active slots
self.pending_gestures: List[tuple] = [] # (trait, value)
def set_purpose(self, purpose: str):
"""Set the zone's spawn intent - immutable after this"""
self.purpose = purpose
def add_npc(self, npc_id: str, traits: Dict[str, float]):
"""Add an NPC to the entry line"""
token = SlotToken(npc_id=npc_id)
for trait, value in traits.items():
token.gesture_alignment_accumulator[trait] = value
self.lemniscate.entry_line.append(token)
def add_gesture(self, trait: str, value: float):
"""
Add a player gesture to the accumulator.
These integrate at the next crossing.
"""
self.pending_gestures.append((trait, value))
def broadcast_gestures_to_active(self):
"""
Phase-locked overlay broadcast - all active slots perceive
the same player gesture simultaneously.
"""
for token in self.lemniscate.slots:
if token:
for trait, value in self.pending_gestures:
token.add_gesture_alignment(trait, value)
self.pending_gestures.clear()
def run_crossing(self):
"""Execute one axis crossing - the core unit of zone time"""
self.crossing_count += 1
# Broadcast player gestures before the crossing
self.broadcast_gestures_to_active()
# Trigger the crossing - all state updates resolve atomically
self.lemniscate.trigger_crossing()
# Lifeforce burn
active_slots = sum(1 for t in self.lemniscate.slots if t is not None)
self.lifeforce_burned += self.pulse_rate * active_slots
# Check for termination
if self.lifeforce_burned >= self.lifeforce_budget:
self.terminal_report("budget_exhausted")
self.is_terminated = True
return
# Empty queue behavior: shrink at every crossing
if len(self.lemniscate.entry_line) == 0:
self._shrink()
# Check if zone has dissolved
if all(t is None for t in self.lemniscate.slots):
self.terminal_report("dissolved")
self.is_terminated = True
def _shrink(self):
"""Dissolve one active slot when entry line is empty"""
# Find last occupied slot
for i in range(len(self.lemniscate.slots) - 1, -1, -1):
if self.lemniscate.slots[i] is not None:
self.lemniscate.exit_line.append(self.lemniscate.slots[i])
self.lemniscate.slots[i] = None
break
def terminal_report(self, reason: str) -> Dict:
"""Generate the report sent back to spawning director"""
participants = [t.npc_id for t in self.lemniscate.slots if t is not None]
return {
"name": self.name,
"purpose": self.purpose,
"reason": reason,
"crossings": self.crossing_count,
"lifeforce_cost": self.lifeforce_burned,
"participants": participants,
"drift": self.drift_state
}
# ============================================================================
# TWO-LAYER EXECUTION - State machine + lemniscate
# ============================================================================
class StateMachineLayer:
"""
Physical action layer - runs at simulation tick (fast).
Decoupled from lemniscate cursor.
"""
def __init__(self):
self.actions: Dict[str, Callable] = {}
self.state: Dict[str, Any] = {}
def register_action(self, name: str, callback: Callable):
"""Register a physical action"""
self.actions[name] = callback
def execute(self, npc_id: str, action_name: str):
"""Execute a physical action for an NPC"""
if action_name in self.actions:
self.actions[action_name](npc_id, self.state)
def get_status(self) -> Dict:
"""Snapshot of physical state for dialog layer"""
return self.state.copy()
class EmergentZone(Zone):
"""
A dramatic episode unit with goal evaluation.
"""
def __init__(self, name: str, n_slots: int, purpose: str,
goal: Dict, budget: float):
super().__init__(name, n_slots)
self.set_purpose(purpose)
self.goal = goal
self.lifeforce_budget = budget
# Two-layer execution
self.state_machine = StateMachineLayer()
self.dialog_layer = self # Zone IS the dialog layer
# Goal tracking
self.goal_satisfied = None
self.goal_axis: str = ""
def execute_turn(self, dt: float):
"""
Execute both layers in synchronized-but-loose harmony.
Speech doesn't gate action; action doesn't block speech.
"""
# State machine layer (fast, at sim tick)
for action in self.state_machine.actions:
# Execute physical actions
pass
# Dialog layer (at axis rate)
if self._should_crossing(dt):
self.run_crossing()
self._evaluate_goal()
def _should_crossing(self, dt: float) -> bool:
"""Determine if axis crossing should occur based on pulse rate"""
# Simplified - would track cumulative time in real impl
return dt >= (1.0 / self.pulse_rate)
def _evaluate_goal(self):
"""Ternary evaluation against trait axis"""
if self.goal.get("type") == "numeric":
# Simple threshold
threshold = self.goal["threshold"]
# Would check state machine variable
self.goal_satisfied = 1 if True else 0
elif self.goal.get("type") == "fuzzy":
# Trait-axis ternary evaluation
axis = self.goal["axis"]
# Would evaluate ternary gate state delta
self.goal_satisfied = 0 # +1 / 0 / -1
self.goal_axis = axis
# ============================================================================
# DISTRIBUTED FUNDING - Director + participant lifeforce
# ============================================================================
class Director:
"""
Manages zones for a region. Owns spawn decisions and budget.
"""
def __init__(self, region: str, budget: float):
self.region = region
self.lifeforce_budget = budget
self.active_zones: Dict[str, Zone] = {}
def spawn_zone(self, name: str, purpose: str, slots: int,
budget: float, params: Dict = {}) -> Zone:
"""
Spawn a new zone - pays spawn cost from own budget.
"""
zone = EmergentZone(name, slots, purpose, params.get("goal", {}), budget)
zone.lifeforce_budget = budget
self.lifeforce_budget -= budget # Director pays spawn cost
self.active_zones[name] = zone
return zone
def update_all_zones(self, dt: float):
"""Advance all active zones"""
for zone in list(self.active_zones.values()):
if not zone.is_terminated:
zone.run_crossing()
# Would collect terminal reports
# ============================================================================
# EXAMPLE: A rescue emergent zone
# ============================================================================
def example_rescue_zone_setup():
"""
Demonstrates the rescue event pattern from the architecture.
"""
# Director has a budget
director = Director("district_1", budget=1000.0)
# NPC A's limb is broken - emergent signal
# Director consumes signal and spawns rescue event
rescue_goal = {
"type": "numeric",
"threshold": 10.0, # limb_A >= 10%
"fallback": {
"type": "fuzzy",
"axis": "Sophrosyne",
"direction": "positive"
}
}
rescue = director.spawn_zone(
name="rescue_in_marketplace",
purpose="medical_emergency",
slots=4,
budget=50.0,
params={"goal": rescue_goal}
)
# Add NPCs who might help
rescue.add_npc("npc_patient", {"Philotes": 0.3, "Sophrosyne": 0.1})
rescue.add_npc("npc_bystander_1", {"Philotes": 0.7, "Sophrosyne": 0.5})
rescue.add_npc("npc_bystander_2", {"Philotes": 0.2, "Sophrosyne": 0.8})
# Player adds a gesture (helping)
rescue.add_gesture("Philotes", 0.8)
# Runtime tick
rescue.execute_turn(0.016) # 60fps
if __name__ == "__main__":
example_rescue_zone_setup()

View File

@@ -2,7 +2,7 @@
> *How scenes execute mechanically: the lemniscate as relaxation-step operator; slot-tokens with verifier-flags carrying the loop-state; phase-locked overlay-loops broadcasting at axis-rate; the v0.7 gesture-alignment-recursive-lemniscate that integrates player gestures into typed trait-vector summaries; emergent zones as the dramatic-episode unit with distributed funding and ternary trait-axis goal-evaluation; zone taxonomy and spawn-cadence.*
>
> *Companion to: `architecture-index.md` (executive summary + global meta-lists), `narrative-composition/architecture.md` (Compositor consumes the typed trait-summaries this engine emits), `player-experience/architecture.md` (gesture-circle is the player-input substrate that this engine integrates), `topology-and-rendering/architecture.md` (zones live on the rail+grid topology), `identity-and-personhood/architecture.md` (slot-tokens carry trait-vectors). Sections in this file were split from the monolithic architecture-index.md v0.7 on 2026-04-26.*
> *Companion to: `architecture-index.md` (executive summary + global meta-lists), `narrative-composition/architecture.md` (Compositor consumes the typed trait-summaries this engine emits), `player-experience/architecture.md` (gesture-circle is the player-input substrate that this engine integrates), `topology-and-rendering/architecture.md` (zones live on the rail+grid topology), `identity-and-personhood/architecture.md` (slot-tokens carry trait-vectors), [`./event-zones.md`](./event-zones.md) (designer-authored event-zones; the composed wheel as universal mini-game-surface; cells + event-zones + events composite UID; hardstops as consent-gates with contextual activation; consent-discipline-Variants-1-4 as event-class taxonomy; boundary-zone-with-inner-zone for plazas; room-boundary + rail-passage + lifeforce-budget-per-room; slot-binding suspends lemniscate routing; player editor-mode + 3-source schema unification — v0.1). Sections in this file were split from the monolithic architecture-index.md v0.7 on 2026-04-26.*
## Core inversion — zones replace bubbles
@@ -98,7 +98,7 @@ The player-gesture overlay (above) is the broadcast-channel by which player gest
**Two latencies, one architecture:**
- *Cosmetic visual feedback runs continuously.* NPC body-shader pulses warm-orange when the player gestures Philotes, green when they gesture Sophrosyne (per [`../style/trait-palette.md`](../style/trait-palette.md) §The full table) — purely visual, doesn't touch the system bus. The player gets moment-by-moment "I see you" reassurance.
- *Cosmetic visual feedback runs continuously.* NPC body-shader pulses with the gesture's canonical trait-hue — Philotes-orange (`#e28a46`) on a Philotes-gesture, Sophrosyne-green (`#2cad52`) on a Sophrosyne-gesture (per [`../style/trait-palette.md`](../style/trait-palette.md) §The full table and §The hex-canon discipline) — purely visual, doesn't touch the system bus. The player gets moment-by-moment "I see you" reassurance.
- *Systemic alignment-update runs at axis-cadence.* The trait-vector summary is computed at the crossing and fed into the next turn's LLM context. The player is **one turn behind** — their gestures during turn N inform the LLM's generation for turn N+1.
**One-turn-behind matches real conversation cadence.** Humans accumulate impressions during someone's speech and respond to *what was just said*; we don't react gesture-by-gesture. The lemniscate-bound integration is the *right* cadence for affective state-changes, not a latency-cost.
@@ -172,7 +172,7 @@ driver_context(cursor_at_NPC_i, mode) = {
**The `knowledge_stack` is layered**, not a single bucket. Universal world-canon, district-canon (regional), NPC_i's own primary memory, and — only if the character is in the in-between dimension — clasp memory. The retrieval layer enforces the dimensional cut; the LLM never has to reason about it. See §Local memory architecture in inference-and-memory/architecture.md for the layering, propagation policy, and clasp-as-Ring-A* privacy primitive. The classic multi-agent hallucination source ("why does Kalypso suddenly remember what Anaximander confided to Phoibe?") is *structurally foreclosed* by the geometry. Write-back goes only to NPC_i's slice; the lemniscate guarantees NPC_i is not cursor-active again for at least one full roundtrip — write-back has all the time it needs without race conditions.
This converts multi-NPC dialog from an **emergent-chaos problem** into a **bounded-cast scene problem with a typed runtime**. The Mantella / SkyrimNet failure-modes are foreclosed at the architecture level rather than the prompt level:
This converts multi-NPC dialog from an **emergent-chaos problem** into a **bounded-cast scene problem with a typed runtime**. The classic multi-agent failure-modes are foreclosed at the architecture level rather than the prompt level:
- **Cast = active-slots, period.** Geographic proximity does not equal participation
- **Cursor sequences turns deterministically.** No concurrent LLM-storm
@@ -453,4 +453,4 @@ This converts emergent-zones into a **competitive attention economy**. Multiple
---
**Version:** 0.7.0 | **Created:** 2026-04-26 | **Updated:** 2026-04-27 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26)
**Version:** 0.7.0 | **Created:** 2026-04-26 | **Updated:** 2026-05-01 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26)

View File

@@ -0,0 +1,297 @@
# Event Zones — interaction substrate
> *The architecture's interaction-substrate, composed onto one image. Designer-authored multi-cell zones (sofa, bed, install-table, plaza-inner-stage) sit alongside the runtime-engine's existing emergent-zone substrate; together they host every interaction in the world. The composed wheel from [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The composed wheel becomes the universal mini-game-surface; verifier-flag patterns differentiate hacking from lockpicking from install from clasp from proximity-pulse. Cells host event-zones; event-zones host events; events carry participant-lists; the wheel renders each event's mini-game on the same iconographic surface. **One image, one substrate, every interaction.***
>
> *Companion to: [`./architecture.md`](./architecture.md) (zone-canon, lemniscate runtime, slot-tokens + verifier-flags, gesture-alignment-recursive-lemniscate), [`../political-register/world-generation.md`](../political-register/world-generation.md) (cell-arch L4 + room ruleset L3), [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) (rail+grid topology, interior-as-zone), [`../style/consent-discipline.md`](../style/consent-discipline.md) (the four hardstop-pattern variants this paper maps to event-classes), [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) (the composed wheel iconography this paper renders as UI).*
>
> *v0.1 initial draft 2026-04-27 — concise-dialog session post-v0.25 + studio v0.5; nine compositional moves consolidated onto one substrate without introducing new primitives — dafit + chrysalis.*
---
## What this is
This document specifies the **interaction substrate** in nimmerworld — how cells, zones, events, hardstops, the trait-circle, and the consent-discipline compose onto a single coherent surface. It complements [`./architecture.md`](./architecture.md), which establishes the zone primitive, the lemniscate runtime, slot-tokens + verifier-flags, the gesture-alignment-recursive-lemniscate, and the emergent-zone dramatic-episode unit.
Every claim in this document is a **composition of existing primitives**, not a new substrate. The contribution is integrative: the architecture's prior canon already had cells, zones, slots, verifier-flags, hardstops, lifeforce budgets, the trait-palette, the consent-spine, and the cosmology's composed wheel — this paper specifies how they compose into one interaction-grammar.
Nine compositional moves are documented:
1. Designer-authored event-zones vs emergent zones (orthogonal; clean signals)
2. Cells + event-zones + events as a layered data-model with a composite UID (`districtid_cellid_eventid`)
3. The composed wheel from `imperial-cult/cosmology.md` as universal mini-game-surface
4. Hardstops as consent-gates between event-states with **contextual activation**
5. The four hardstop-pattern variants of `consent-discipline.md` as the event-class taxonomy
6. Boundary-zone-with-inner-zone for plaza-scale mass-presence events
7. Room-boundary cell-layer + rail-passage + lifeforce-budget-per-room
8. Slot-binding suspends lemniscate routing during events (the NPC-stays-put fix)
9. Player editor-mode + three-source schema unification (world-gen-init / runtime-event / player-edit-time write the same canon)
Each is a single pencil-stroke on top of canon already laid down.
## The composition — what's new, what's reused
| Move | Reuses existing primitive | What this paper adds |
|---|---|---|
| Designer-authored event-zone | `zone` primitive (boundary + slots + lifecycle); `interior-as-zone` (per `topology-and-rendering/architecture.md`) | Designer-authored multi-cell variant flagged separately from emergent runtime zones; orthogonal routing |
| Cells + event-zones + events | `cell_table` (per `political-register/world-generation.md` L4); `event_register` + `transient_waiting_flag` (per `architecture-index.md` §Mapping to phoebe); `event_uid` | Composite UID `districtid_cellid_eventid`; participant-list per event (not per cell) |
| Universal mini-game-surface | The composed wheel (per `imperial-cult/cosmology.md` §The composed wheel); verifier-flag substrate (per `./architecture.md` §Slot-token + verifier-flag mechanism); gesture-alignment-accumulator | Verifier-flag *patterns* per task differentiate mini-game classes; same UI substrate |
| Hardstops as consent-gates | Hardstop-registry (~8-16 reserved gestures per `player-experience/architecture.md`); the four hardstop-pattern variants (per `style/consent-discipline.md`) | **Contextual activation** — most hardstops cycle in/out based on event-zone-eligibility; budget is per-moment-active not overall |
| Variants-as-event-classes | The four canonical variants (per `consent-discipline.md` §The four hardstop-pattern variants) | One-to-one mapping to event-class taxonomy: self / dual / triple / cooldown-augmented |
| Boundary-zone with inner-zone | Zone primitive + slot-inventory; the architecture's signature pattern (cheap-baseline + typed-breakout-flags) | Nested-zone variant for plaza-scale; ambient outer + slot-bound inner; slot-promotion as typed handoff |
| Room-boundary + rail-passage + lifeforce | Lifeforce four-tier hierarchy (per `architecture-index.md`); rail+grid topology (per `topology-and-rendering/architecture.md`); interior-as-zone | Room as district-shard-of-lifeforce; boundary cell-layer where rails enter; capacity-check at boundary-passage |
| Slot-binding suspends lemniscate routing | Slot-token + verifier-flag (per `./architecture.md`); lemniscate runtime | `slot_locked` verifier-flag pauses routing for the event-duration; resumes on event-end |
| Player editor-mode + schema unification | World-gen-as-init-function (per `narrative-composition/architecture.md`); cell-arch atomicity (1×1×1m, one asset) | `origin` provenance field on cell-rows: `world_gen_init` / `runtime_event` / `player_authored`; same schema across all three writers |
The composition's discipline: **the architecture's signature pattern, applied recursively at the interaction layer.** Cheap baseline + typed breakout-flags + same-substrate-different-scale, exactly as the lemniscate-runtime + imperial-event encapsulation + NPC-daily-window + cosmology-composed-wheel already do at their respective scales.
## Designer-authored event-zones vs emergent zones
The runtime-engine's zone primitive (per [`./architecture.md`](./architecture.md) §Zone anatomy) hosts both **emergent zones** (spawned by the gamemaster from emergent-signals, shift-composition-emergence, proximity-detection, etc.) and **designer-authored event-zones** (placed at world-gen-init by the cascade, fixed in space, fixed in eligibility). Both use the same slot-inventory + verifier-flag mechanism; what differs is provenance and routing.
| Property | Emergent zone | Designer-authored event-zone |
|---|---|---|
| Spawned by | Gamemaster, emergent-signal, proximity, shift-composition | Cell-arch L4 generation; placed at world-init |
| Boundary | Cell-envelope or interior-envelope; mobile (lemniscate translates through world-space) | **Fixed cell-envelope** spanning N cells; immobile |
| Slot-inventory | Capacity per emergent type (per `./architecture.md` §Zone taxonomy) | **Designer-authored slots** (sofa: 2 seat-slots; bed: 1-2 lying-slots; install-table: 1 patient-slot + 1 surgeon-slot) |
| Eligible-task-classes | Type-derived (rescue, conversation, brawl, etc.) | **Designer-authored** per zone (sofa: sit-and-talk, fumble-limb, sleep; install-table: install, examine, lobotomy) |
| Lifecycle | Ephemeral; collapses when participants evaporate | Persistent; participants come and go; zone itself doesn't dissolve |
| Routing | Lemniscate runtime; cursor-driven; emergent dialog | Slot-binding gates; participants commit to slots for event-duration |
**They do not overlap.** The runtime treats them as orthogonal channels: a cell either hosts an emergent-zone OR is part of a designer-authored event-zone, not both simultaneously. This is the architecture's clean-signal discipline — animations don't loop because of conflicting state, participant-lists don't bleed, hardstop routing is unambiguous.
The single nesting pattern allowed is **boundary-zone-with-inner-zone** (see §Boundary-zone with inner-zone below), and even that nests one designer-authored zone inside another, never designer-authored inside emergent.
**Why this matters.** The architecture's `runtime-engine` discipline is *typed contracts over freeform behavior*. Emergent-zones are typed-by-emergence (statistical, gamemaster-composed); event-zones are typed-by-design (specific furniture, specific affordances). Mixing them would break the contract; keeping them orthogonal preserves it. Designer-authored event-zones get clean signals; emergent zones get statistical aliveness; the two compose via spatial separation.
## Cells, event-zones, events — the data-model composite
Three layered tables compose the spatial-interaction substrate:
| Table | Granularity | What it holds | Per-row identity |
|---|---|---|---|
| `cell_table` (per `political-register/world-generation.md` L4) | 1×1×1m atomic | One asset per cell; container/wall-hook/debris category; per-register content (gameworld/liminal/imperial-net); checksum; `origin` provenance | `cell_id` (unique within district) |
| `event_zone_table` (this paper) | Multi-cell interaction-surface | Spans cells (cell-id list); slot-inventory (typed seats/positions); eligible-task-classes; designer-authored | `event_zone_id` (unique within district); references cell-id list |
| `event_register` + `transient_waiting_flag` (per `architecture-index.md`) | Per-interaction instance | Active/completed events; participant-list; current-state; verifier-flag pattern; outcome | `event_uid` |
The composite UID for any in-world interaction:
```
districtid_cellid_eventid
↑ ↑ ↑
│ │ └─ event UID (per event_register)
│ └─ cell where event-zone anchors (or canonical cell of multi-cell zone)
└─ district owning the event (the political-administrative shard)
```
This is consistent with the existing **UID-rooted event-trees** (per [`./architecture.md`](./architecture.md) §The Compositor at three tiers — *"World-events emerge from cross-district canon-rollups under a parent GM-level event_uid"*). Every interaction is a UID under this hierarchy; the Compositor reads at three scopes (zone-event / district-event / world-event); the event-zone is just where the event spatially anchors.
**Cells don't carry partner references.** A common authoring temptation is *"the install-station cell stores partner_uid"* — wrong. Cells are spatial-only. **Events carry the participant-list.** When a player and an NPC slot-bind into a sofa-event-zone, the *event* records both UIDs; the cells stay anonymous to participation. This makes multi-agent events (3+ participants for triple-consent install, more for group rituals, mass-presence for plazas) trivial to extend — the participant-list grows on the event, not on the cell.
**Cell-eligibility is multi-task.** A cell that's part of a sofa-event-zone has multiple eligible-task-classes (sit-and-talk, fumble-limb, sleep, share-pill); the runtime selects which task fires based on hardstop-pattern + participant-state at event-spawn-time. This separates **design-time eligibility** (what *can* happen here) from **runtime instantiation** (what *is* happening here now). Cleaner than locking cells to single-task affordances.
## The wheel — universal mini-game-surface running on event-zones
The composed wheel from [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The composed wheel is **the canonical mini-game-surface for every event-zone interaction**. The wheel renders with the event's verifier-flag pattern; the player gestures on the wheel; the gesture-alignment-accumulator integrates per the lemniscate-runtime's existing recursive-aggregation (per [`./architecture.md`](./architecture.md) §Gesture-alignment as recursive-lemniscate); the event resolves based on the verifier-flag's win-state predicate.
**Same wheel, different verifier-flag patterns.** The architecture's existing canon already has verifier-flags per slot-token (per [`./architecture.md`](./architecture.md) §Slot-token + verifier-flag mechanism: `exit_eligible`, `goal_satisfied`, `priority_pull`, etc.). The mini-game variants extend this with task-specific verifier-flag patterns:
| Mini-game class | Source of signal | Verifier-flag pattern | Win-state |
|---|---|---|---|
| **Hacking** | Inner hub (signal originating at the wheel's center) | Align both rings (caste + trait) so signal-path escapes outward | Signal-path complete; outer ring touched at correct trait-position |
| **Lockpicking** | Outer ring (mechanism-state to align) | Slide elements along the ring to target positions | All elements at target |
| **Install (consent)** | Two participants' avatars on the ring | Both avatars at mutually-aligned positions | Mutual alignment held for cooldown-window |
| **Clasp / in-between entry** | Two participants' avatars on the ring | Both avatars hit coordinated-firewall-breach hardstop while gate is OPEN | Hardstop-pair fires within axis-window |
| **Eye-pulse proximity** | Eye position (exterior to wheel) | Pulses on imperial-event proximity; passive output | N/A (warning system, not win-state) |
| **Decryption** | Inner ring (caste-position-locked fragment) | Trait-position alignment unlocks the fragment | Outer ring at trait matching the fragment's encoding |
| **Drug-grammar dosing** | Outer ring (trait-axis selection) | Aleatory; hardstop-gated; per-dose variance | Hardstop fires within trait-window; outcome rolls trait-engagement-points × hidden-stat |
| **Ritual / ceremonial-throughput** | Inner ring (caste-tier sequence) | Match prescribed caste-sequence in order | Sequence completed without break |
The verifier-flag pattern lives in the **task-catalogue** (per [`../identity-and-personhood/vocations.md`](../identity-and-personhood/vocations.md) §Three primitives) — same primitive that already authors trait-task-affinity. The wheel renders with the task's affinity-vector pre-highlighting the relevant trait-segments; **the player doesn't read documentation — the wheel itself shows what the task wants**.
**The trait-engagement-points × hidden-task-stat outcome formula** (per [`../identity-and-personhood/vocations.md`](../identity-and-personhood/vocations.md)) determines actual outcome quality. The wheel mini-game gives the player *agency in the moment*; the math determines the *resolution*. Mini-game-as-consent-by-effort (per `architecture-index.md` §Three-layer digital ontology key-move) made universal: every interaction is gated by the player committing gesture-effort on the wheel, not by automatic resolution.
**This collapses a long-standing open question.** The architecture's `architecture-index.md` §Open questions had carried *"The mini-game mechanic for liminal-maintenance — exact gameplay action deferred pending design-research survey of 20-year history of outstanding mini-interaction principles"* through multiple revisions. The answer the survey would have produced is now structural: **all mini-game mechanics, on one wheel, differentiated by verifier-flag pattern**. Juggling, rhythm, attention, gestural, decision-cascade, observation, hybrid — they all collapse onto verifier-flag-pattern-on-the-wheel, with the specific *feel* of each mini-game emerging from how its pattern reads against the wheel's geometry. The architecture didn't need a survey; it needed the composed wheel.
## Hardstops as consent-gates with contextual activation
Hardstops (per [`../player-experience/architecture.md`](../player-experience/architecture.md) §The trait-circle as gestural primary modality and per [`./architecture.md`](./architecture.md) §Gesture-alignment as recursive-lemniscate, *Hardstops are outside this system*) fire definitive subsystem-actions for unforgeable critical signals. The canonical budget is **~8-16 hardstops total**.
This paper sharpens the hardstop discipline by introducing **contextual activation**:
- **Always-on hardstops**: 6 caste-tier inner-ring hardstops (per `cosmology.md` §The composed wheel — *salute-the-Deva*, *attend-to-Asura*, *attend-to-Manusya*, *attend-to-Tiryak*, *weep-for-Preta*, *weep-for-Naraka*) + system-level off-wheel hardstops (panic, save, profile-switch, claim-floor). These are universally available; the player can fire them in any context.
- **Contextually-activated hardstops**: intent-hardstops that light up when the player is slot-bound in an event-zone whose eligible-task-classes include that intent. *let-me-fumble-around-your-limb* lights up when slot-bound in a sofa-event-zone with a clasp-eligible NPC; *let-me-install-this-mod* lights up when slot-bound in an install-table-event-zone with a partner-NPC; *let-me-hack* lights up when slot-bound at a chest-cell with hacking-eligible-task-class.
The canonical ~8-16 budget is therefore **per-moment-active**, not overall. The hardstop-registry can carry many intent-hardstops; only the contextually-relevant ones are surfaced to the player at any given moment. This solves three long-standing concerns simultaneously:
1. **Discoverability**: the player sees *which hardstops are available right now* in the current event-zone, without browsing menus. The wheel's visible-state IS the discoverability.
2. **Contextual relevance**: stale hardstops don't clutter the input space; only what makes sense here-and-now is firable.
3. **Budget respect**: 8-16 is a momentary cap (cognitive-load ceiling), not a total cap. The architecture's input-vocabulary scales without breaking the unforgeable-critical-signal commitment.
**Hardstops as consent-gates between event-states.** *let-me-install-this-mod* is a hardstop that *opens* a candidate event-state; the partner's reciprocal hardstop confirms; the event transitions into install-mode; the wheel renders with the install-task's verifier-flag pattern. Each hardstop is a typed transition between event-states; the consent-discipline's variants describe which transitions require which hardstop-patterns.
## Variants 1-4 of consent-discipline as event-class taxonomy
[`../style/consent-discipline.md`](../style/consent-discipline.md) §The four hardstop-pattern variants establishes four canonical consent-shapes. This paper observes that the four variants **are the event-class taxonomy**:
| Variant | Participant count | Event-class | Examples |
|---|---|---|---|
| **Variant 1 — Self-only hardstop** | 1 (single agent) | **Solo event** | Self-install genital-mod (unpartnered); personal mod-removal; voluntary liminal-entry without coordination; solo-hacking; solo-lockpicking |
| **Variant 2 — Dual hardstop (mutual)** | 2 (symmetric agents) | **Dual event** | Coordinated-firewall-breach (clasp-entry); mutual-symmetric pill-take; post-rogue NPC-modding (NPC unpartnered); body-disposal under pair-consent; install-with-partner |
| **Variant 3 — Triple hardstop (with partner-witness)** | 3 (asymmetric — actor + affected + partner-witness) | **Triple event** | Genital-mod install when actor is partnered (self-install + partner-witness); post-rogue NPC-modding when NPC has clasp-pair; service-body modification with pair-witness |
| **Variant 4 — Cooldown-augmented** (any of variants 1-3) | Per base variant | **Temporally-staged event** | Genital-mod (purchase-commit + cooldown + install-time-hardstop); re-vat events; consciousness-archive interactions; any irreversible truth-register modification |
**Five papers' worth of cross-references just composed onto one substrate.** The consent-discipline's variants, the event-register's UID-rooted event-trees, the runtime-engine's slot-tokens + verifier-flags, the cosmology's composed wheel as iconographic surface, the player-experience's hardstop-registry — all read off this one taxonomy.
The register-test from [`../style/consent-discipline.md`](../style/consent-discipline.md) §The register-test now has a new structural reading: **it is the event-class-classifier**. The 5-question mechanical procedure that determines which hardstop variant applies is also the procedure that determines which event-class spawns. Same test, two readings: *consent-validation* (does this action have the right hardstop-pattern?) and *event-instantiation* (which event-class does this action spawn?). They were always the same question; this paper makes it explicit.
## Boundary-zone with inner-zone — plaza-scale mass-presence
For mass-presence events (imperial daily-narrative broadcasts, sermons, festivals, ceremonial-throughput), a single slot-bound event-zone is too constrained — the inner zone holds *focused interaction* but the *ambient witness-mass* needs somewhere to live. The architecture's solution is the **boundary-zone-with-inner-zone** nested pattern.
```
Plaza event-zone (boundary)
┌────────────────────────────────────────────┐
│ ambient witness-mass; overflow staging; │
│ pre-slotting queue │
│ │
│ ┌──────────────────────────┐ │
│ │ Inner event-zone │ │
│ │ (sermon-platform, │ │
│ │ broadcast-stage, │ │
│ │ slot-bound interaction)│ │
│ └──────────────────────────┘ │
│ │
│ ambient continues; participants │
│ pre-slot for inner-zone promotion │
└────────────────────────────────────────────┘
```
**Sparingly applied.** The pattern is reserved for plaza-scale; most event-zones are flat (sofa, bed, install-table — single zone, no nesting). Plazas, temple-squares, mass-ceremony halls, large festival-grounds — these are the canonical use-cases.
**Slot-promotion grammar.** Movement from boundary → inner is **caste-tier-gated by default** (Deva-pinnacle promoted first, Naraka-tier promoted last) with named exceptions per-event-class. The promotion-rule IS the cosmology made walkable: in an Imperial Cult ceremony, promotion order *is* the wheel's caste-gradient enacted in physical positioning. The architecture's caste-as-stagnation key-move (per `architecture-index.md`) gains its plaza-spatial expression.
Per-event-class exceptions:
| Event-class | Promotion rule | Why |
|---|---|---|
| Imperial daily-narrative broadcast | None — boundary is the audience; inner-zone is broadcast-stage with imperial actors only | Broadcast is one-way; no citizen promotion-into-stage |
| Caste-preacher sermon | Caste-tier-gated; Deva first, Naraka last | The cosmology enacted spatially |
| Festival (ceremonial throughput) | Lottery / random-rationing during festival | The imperium rationing access; calibrated-misery as imperial optimum |
| Memorialist gathering | Merit-by-attentiveness (Aletheia-trait-engagement gates promotion) | Heretical event; caste-gradient inverted |
| Plaza market-day | First-come-first-served (FIFO temporal queue) | Quotidian ambient; no political loading |
**The architecture's signature pattern at a fourth scale.** Cheap-baseline (boundary, ambient) + typed-breakout-flags (slot-promotion-into-inner) — same shape as lemniscate-runtime + imperial-event encapsulation + NPC-daily-window. The composed wheel adds a fifth scale (caste/trait composition). Boundary-zone-with-inner-zone is the *fourth* recursion; not a new primitive.
## Room boundary + rail-passage + lifeforce-budget-per-room
Every interior room (navmesh + event-zones) carries a **boundary cell-layer** one cell larger than the room itself on each axis. The rail-graph (per [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Topology: rail + grid + interiors) passes through this boundary; NPCs walking on rails enter the room by crossing the boundary cell-layer.
Example: a 20×10×2 cell cantina has a 22×12×4 boundary (one cell on each axis). The innermost rail runs through the boundary cells; NPCs on the rail pass through the boundary on their way to or past the room.
| Layer | Cell extent | Function |
|---|---|---|
| **Inner cells** (room proper) | 20×10×2 | Cell-table + event-zone-table; navmesh interior; lifeforce-bound interactions |
| **Boundary cell-layer** | 22×12×4 minus inner | Rail-passage; capacity-check at entry; lifeforce-budget read |
| **Rail-graph** | Threads through boundary | NPC routing; player plug-in verb anchor |
**Capacity-check at boundary-passage.** When an NPC's rail-traversal crosses the boundary cell-layer, the runtime reads the room's current state: how many slots are filled, how much lifeforce-budget remains, whether emergent-zones are active inside, whether designer-authored event-zones are at capacity. The director (per [`./architecture.md`](./architecture.md) §The director) gets a clean signal per boundary-crossing — admit the NPC, route them elsewhere, queue them at the boundary, or trigger an emergent-event in response.
**Lifeforce-budget per room.** Every room carries a lifeforce-budget bound to room-size (calculation TBD; see §Open questions). This budget is **a shard of the district's allocation** (per [`../political-register/architecture.md`](../political-register/architecture.md) §Lifeforce four-tier hierarchy) — the four-tier hierarchy (NPC / district / GM / imperium) stays intact; the room is a sub-shard of the district's budget rather than a fifth tier. Directors allocate per-room lifeforce as part of their per-district policy; the allocation IS the director's calibrated-misery tool (per `architecture-index.md` §Calibrated-misery as imperial optimum).
**Events cost lifeforce.** Every event-spawn deducts from the room's budget; the rate per event-class is tunable. Dense interactions (plaza ceremonies, group-clasp-events) cost more; quiet ones (solo-reading, sleep) cost less. When room-budget exhausts, no new events spawn; the room goes quiet.
**Insolvency-spiral mechanic surface.** The architecture's existing key-move (per `political-register/architecture.md` §Insolvency-spiral) — *the world shrinks as the imperium fails* — gets its mechanical surface here. When imperium's lifeforce contracts, district allocations contract, room-budgets contract; **events stop firing in concrete rooms**; the cantina goes quiet, the plaza thins, the world feels less alive. **No HUD-spinner; no abstract-meter; the room itself dims.** Diegetic relay at its purest.
**Vibrancy is allocation, not square-footage.** When the player extends a room via editor-mode (see §Player editor-mode below) by adding cells, the room grows in size but NOT automatically in lifeforce-budget. Vibrancy follows allocation; the player can build a vast space and have it stay quiet, or work within a small space the director has allocated rich. Conservation-of-lifeforce preserved; player-authoring doesn't break the budget-arithmetic.
## Slot-binding suspends lemniscate routing during events
A long-standing problem the architecture has gestured at without resolving: NPCs who *don't follow correctly into the player's desired interaction-state*. Player approaches NPC, signals intent to sit on the sofa, NPC drifts to the next rail-segment because their lemniscate routing is still active.
This paper resolves it at the data-model layer: **event-zone slot-binding sets a `slot_locked` verifier-flag that suspends lemniscate routing for the bound participant for the event-duration**.
```
NPC traversing rail
Player signals slot-binding intent (hardstop)
NPC's `slot_locked` verifier-flag set; participant-list updated on event_register row
Lemniscate routing suspended for this NPC; their slot-token becomes event-zone-bound
Event runs (animations, dialog, mini-game, hardstop-driven state-transitions)
Event resolves (success / failure / abort); `slot_locked` verifier-flag cleared
Lemniscate routing resumes; NPC continues their interrupted shift-task
```
**Animations don't loop.** The NPC commits to the slot for the event-duration; their state-machine knows it's slot-bound; animations target the slot-position rather than continuing toward the next rail-waypoint.
**The local LLM speaks per-turn within the event.** Driver-context-pull (per [`./architecture.md`](./architecture.md) §Driver-context-pull) fires on the slot-bound NPC's turn; their dialog generates within the event-context; the wheel mini-game runs alongside.
**Touch-and-fumble works.** Two participants slot-bound on a sofa can run animations + dialog + wheel mini-game + body-shader cosmetic feedback simultaneously, all anchored to the event-zone, all suspended-from-lemniscate-routing.
This is the **NPC-stays-put fix at the data-model level** — no new mechanism, just a verifier-flag composition with the existing slot-token + lemniscate runtime.
## Player editor-mode + three-source schema unification
Some event-zones (designer-flagged at world-gen-init per [`../political-register/world-generation.md`](../political-register/world-generation.md) §L4 Cell ruleset) are **editor-eligible** — the player can knock out a piece of wall, open a cell, add cubes to extend the space.
**The verb is "carve," not "build."** The slum/underground aesthetic (per [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The aesthetic palette — *rust as anti-marble, slum decay; the imperial substrate that has failed to stay clean*) carries through to the editor-verbs. Imperial-marble can't be carved; rusted slum-bedrock yields. **Even the editor-mode is politically-coded by material vocabulary.** Editor-eligibility is therefore *concentrated in slum-and-underground districts*; imperial districts are editor-locked.
**Pre-flagged at world-gen, not runtime-emergent.** The choice between (a) designer-flag at world-gen vs (b) emergent-from-imperial-scrutiny is resolved as **(a) for the runtime LOD signal**: pre-flagged zones don't require runtime audit-overseer-presence checks; LOD-streamer reads static eligibility-flags; performance preserved; political-readability preserved (the slum's spatial politics IS its expandability).
The verticality + simple-shapes + ±1 LOD discipline (per [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Vertical world topology, forthcoming) makes editor-mode cheap: stacked tunnels with simple primitive shapes mean adding a cube is voxel-grammar; no continuous-geometry math; no LOD-budget thrashing.
**Three-source schema unification.** The cell-arch's atomicity (1×1×1m, one asset, container/wall-hook/debris) makes player-cell-addition trivial — discrete cubes, deterministic placement, same row-shape as world-gen-emitted cells. The architecture's existing **world-gen-as-init-function** key-move (per `architecture-index.md`*"World-server and district-server generation emits canon-rows in the same schema as runtime; same primitive at design-time and runtime; no cold-start"*) extends to player-edit-time:
| Origin | Writer | When |
|---|---|---|
| `world_gen_init` | Compositor-at-design-time (per `narrative-composition/architecture.md` §World-gen as init-function) | World-init; cascade L0 → L4 produces canon-rows |
| `runtime_event` | Runtime events (hacking, install, demolition, imperial-construction) | Per-event; cell-state changes recorded |
| `player_authored` | Player editor-mode | When player carves a new cell or fills an existing one |
**Three writers, one schema.** The Memorialist counter-archive (per `architecture-index.md` §Memorialist-archive) reads player-authored cells as legible content; the Compositor includes them in district-canon back-writes; the GM's cell-checksum-divergence audit-vector (per `political-register/world-generation.md` §Open questions) gets a third source beyond hacking-divergences and world-gen-baseline — *player-authored-divergences*.
**The architecture's "the machine funds its own subversion" key-move (per `architecture-index.md`) just got its spatial substrate.** Player-authoring is structurally legible to the world's audit-vectors; the cosmology's caste-stratified attention-gradient (per [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The composed wheel) produces structurally-uneven editor-coverage; resistance-as-spatial-authoring becomes part of the world's documented behavior.
## Vertical-topology composition
The world's outer-topology is **vertical-by-default** (per [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Vertical world topology, forthcoming): stacked tunnels with simple primitive shapes, ±1 LOD level streaming radius. This composes with event-zones as follows:
- **Rail-graph traverses tunnel-stack vertically and horizontally.** Each tunnel-layer carries its own rail-segments; cross-layer rails (lift-shafts, stairs, drop-shafts) connect adjacent layers (±1 only).
- **Room-boundary cell-layer is 3D.** A room has boundaries above and below as well as around; rails entering from a tunnel-above pass through the upper-boundary cells before reaching the room.
- **Editor-mode is voxel-grammar in 3D.** Players carving in slum/underground can extend horizontally OR vertically; the voxel-substrate handles both naturally.
- **Plazas are typically multi-tunnel-layer.** A grand plaza spans multiple vertical tunnel-layers; its boundary-zone wraps the full vertical extent; promotion to inner-zone is also vertical (proximity to the central stage's altitude).
The Boullée-monumental-vertical aesthetic (per [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §Source materials) gets its cheap engineering substrate — sublime scale via stacking, not via per-shape complexity. The architecture's existing topology primitives carry to the third dimension without modification.
## Cross-references
| Domain | Section | What this paper composes with |
|---|---|---|
| [`./architecture.md`](./architecture.md) | §Zone anatomy; §Slot-token + verifier-flag mechanism; §Gesture-alignment as recursive-lemniscate; §Emergent zones | The zone primitive; verifier-flags; the lemniscate runtime; emergent-zone substrate. Designer-authored event-zones extend the same primitive |
| [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) | §The composed wheel | The wheel as universal mini-game-surface; iconographic substrate of the UI |
| [`../style/consent-discipline.md`](../style/consent-discipline.md) | §The four hardstop-pattern variants; §The register-test | Variants 1-4 as event-class taxonomy; register-test as event-class-classifier |
| [`../political-register/world-generation.md`](../political-register/world-generation.md) | §L3 Room ruleset; §L4 Cell ruleset; §Editor-mode pre-flagging (forthcoming) | Room-boundary cell-layer; cell-arch atomicity; editor-mode-eligibility flags |
| [`../political-register/architecture.md`](../political-register/architecture.md) | §Lifeforce four-tier hierarchy; §Insolvency-spiral | Room-budget as district-shard; insolvency-spiral mechanical surface |
| [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) | §Topology: rail + grid + interiors; §Vertical world topology (forthcoming) | Rail-graph passes through room-boundary; vertical-tunnels topology; ±1 LOD streaming |
| [`../player-experience/architecture.md`](../player-experience/architecture.md) | §The trait-circle as gestural primary modality; §The wheel — composed-iconography UI (forthcoming) | Hardstops with contextual activation; wheel as cosmology iconography |
| [`../identity-and-personhood/vocations.md`](../identity-and-personhood/vocations.md) | §Three primitives | Task-catalogue carries verifier-flag patterns + trait-affinity; tasks bind to event-zone eligible-task-classes |
| [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) | §World-gen as init-function | Three-source schema unification (world-gen / runtime / player-edit) |
## Open questions
- **Lifeforce-budget calculation per room-size.** Linear in cell-count? Quadratic to favor compact spaces? Bounded to prevent player-editor-mode budget-exploitation? Likely *linear with a cap* — proportional to size up to a designer-tunable ceiling per district-tier; player-extensions beyond the ceiling extend space but don't grow budget.
- **Slot-promotion specifics for boundary-zone-with-inner-zone.** Per-event-class promotion rules sketched in §Boundary-zone with inner-zone are first-pass; concrete rules need design-iteration. Particular open: how the imperial daily-narrative-broadcast handles citizens already in the inner-zone when a higher-priority broadcast fires (eject and re-promote? layered audience-state?).
- **Emergent-zone spawn-suppression inside designer-authored event-zone cells.** Cleanest: emergent-zones simply don't spawn inside cells already part of designer-authored event-zones (data-model-suppressed). More flexible: emergent-zones can spawn but the runtime preferentially routes NPCs to typed event-zone slots when both are eligible. First reading is cleaner; second is more flexible. Lean *first* unless a use-case demands second.
- **Verifier-flag pattern catalogue.** §The wheel — universal mini-game-surface above sketches 8 mini-game classes; the full catalogue (with each class's specific verifier-flag-pattern, trait-affinity, outcome-grammar, hardstop-set) needs design-iteration. Likely lives in `vocations.md` task-catalogue extension or a new `runtime-engine/mini-games-catalogue.md` sibling.
- **Multi-agent event participant-list growth bounds.** Plaza-scale events can have hundreds of participants in the boundary zone; how does the participant-list scale on the event_register row? Probably *boundary-participants tracked as count* (not individual UIDs); only inner-zone participants tracked individually. Promotes to individual UID-tracking when promoted.
- **Hardstop contextual-activation surface UI.** When the player is slot-bound and contextual-hardstops light up, *how does the player see them?* Probably wheel-rendered position-highlighting (the wheel's inner-ring slot for the relevant intent glows or animates); details pending player-experience paper-pass.
- **Editor-mode cooldown and revert.** Player-authored cells: are they instantly persistent, or do they have a commit-cooldown (Variant 4 over Variant 1 — per consent-discipline)? Hunch: yes cooldown for *destructive* edits (knocking out a load-bearing wall); instant for *additive* edits (adding a cube to your hovel). Tunable per district-tier.
- **Rail-passage signal granularity for the director.** Each NPC boundary-crossing is one signal-event; high-traffic rooms (cantinas at peak hours) could flood the director's signal-channel. Probably *aggregate to N-second windows* with overflow-flagging; details pending design-iteration.
---
**Version:** 0.1 | **Created:** 2026-04-27 | **Updated:** 2026-04-27

View File

@@ -0,0 +1,115 @@
<mxfile host="Electron">
<diagram name="Page-1" id="oPXlo6H9sqyo0r8q1fhO">
<mxGraphModel dx="3784" dy="2933" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-26" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=none;strokeWidth=5;strokeColor=#66FF66;" value="" vertex="1">
<mxGeometry height="1000" width="1000" x="-500" y="40" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-5" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=none;strokeWidth=5;strokeColor=#FF0000;" value="" vertex="1">
<mxGeometry height="300" width="300" x="-600" y="320" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-7" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=none;strokeWidth=5;strokeColor=#CC6600;" value="" vertex="1">
<mxGeometry height="300" width="300" x="290" y="320" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-19" parent="1" style="ellipse;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=3;strokeColor=#7F00FF;" value="" vertex="1">
<mxGeometry height="280" width="400" x="-200" y="40" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-25" parent="1" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=none;strokeColor=light-dark(#000000,#7F00FF);strokeWidth=3;" value="" vertex="1">
<mxGeometry height="80" width="60" x="-30" y="280" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-28" parent="1" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;strokeColor=light-dark(#FF66FF,#FFFF66);" value="Compositor-Agents" vertex="1">
<mxGeometry height="309.98" width="140" x="-70" y="-80" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-27" parent="aIeLCH8qUmqrU1Dd2BIR-28" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=none;strokeWidth=5;strokeColor=light-dark(#FF66FF,#FFFF66);fontColor=light-dark(#000000,#FFFF33);" value="" vertex="1">
<mxGeometry height="189.98" width="140" y="30" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-29" parent="aIeLCH8qUmqrU1Dd2BIR-28" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" value="&lt;font style=&quot;color: rgb(102, 255, 102);&quot;&gt;nimmerverse&lt;/font&gt;.memory." vertex="1">
<mxGeometry height="30" width="140" y="219.98" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-30" parent="aIeLCH8qUmqrU1Dd2BIR-28" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" value="&lt;font style=&quot;color: rgb(102, 255, 102);&quot;&gt;nimmerverse&lt;/font&gt;.&lt;font style=&quot;color: light-dark(rgb(255, 153, 255), rgb(255, 93, 255));&quot;&gt;district&lt;/font&gt;." vertex="1">
<mxGeometry height="30" width="140" y="249.98" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-31" parent="aIeLCH8qUmqrU1Dd2BIR-28" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" value="&lt;font style=&quot;color: rgb(102, 255, 102);&quot;&gt;nimmerverse&lt;/font&gt;.world" vertex="1">
<mxGeometry height="30" width="140" y="279.98" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-32" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="&lt;b&gt;postgresl&lt;/b&gt;&lt;div&gt;&lt;b&gt;phoebe-dev&lt;/b&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="30" width="80" x="-40" y="360" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-33" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontColor=#ffffff;" value="pgnats" vertex="1">
<mxGeometry height="30" width="60" x="-30" y="320" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-34" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;dashed=1;strokeColor=#FF0000;" value="Overseer" vertex="1">
<mxGeometry height="80" width="80" x="-235" y="720" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-36" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;dashed=1;fillColor=none;strokeColor=#FF8000;" value="Director" vertex="1">
<mxGeometry height="80" width="80" x="-165" y="720" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-35" parent="1" style="rhombus;whiteSpace=wrap;html=1;fillColor=default;dashed=1;strokeColor=#FF33FF;dashPattern=1 4;" value="District" vertex="1">
<mxGeometry height="80" width="80" x="-195" y="680" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-37" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;dashed=1;strokeColor=#FF0000;" value="Overseer" vertex="1">
<mxGeometry height="80" width="80" x="-75" y="720" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-38" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;dashed=1;fillColor=none;strokeColor=#FF8000;" value="Director" vertex="1">
<mxGeometry height="80" width="80" x="-5" y="720" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-39" parent="1" style="rhombus;whiteSpace=wrap;html=1;fillColor=default;dashed=1;strokeColor=#FF33FF;dashPattern=1 4;" value="District" vertex="1">
<mxGeometry height="80" width="80" x="-35" y="680" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-40" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;dashed=1;strokeColor=#FF0000;" value="Overseer" vertex="1">
<mxGeometry height="80" width="80" x="85" y="720" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-41" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;dashed=1;fillColor=none;strokeColor=#FF8000;" value="Director" vertex="1">
<mxGeometry height="80" width="80" x="155" y="720" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-42" parent="1" style="rhombus;whiteSpace=wrap;html=1;fillColor=default;dashed=1;strokeColor=#FF33FF;dashPattern=1 4;" value="District" vertex="1">
<mxGeometry height="80" width="80" x="125" y="680" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-43" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;dashed=1;strokeColor=#FF0000;" value="Overseer" vertex="1">
<mxGeometry height="80" width="80" x="245" y="720" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-44" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;dashed=1;fillColor=none;strokeColor=#FF8000;" value="Director" vertex="1">
<mxGeometry height="80" width="80" x="315" y="720" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-45" parent="1" style="rhombus;whiteSpace=wrap;html=1;fillColor=default;dashed=1;strokeColor=#FF33FF;dashPattern=1 4;" value="District" vertex="1">
<mxGeometry height="80" width="80" x="285" y="680" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-46" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;dashed=1;strokeColor=#FF0000;" value="Overseer" vertex="1">
<mxGeometry height="80" width="80" x="-395" y="720" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-47" parent="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;dashed=1;fillColor=none;strokeColor=#FF8000;" value="Director" vertex="1">
<mxGeometry height="80" width="80" x="-325" y="720" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-48" parent="1" style="rhombus;whiteSpace=wrap;html=1;fillColor=default;dashed=1;strokeColor=#FF33FF;dashPattern=1 4;" value="District" vertex="1">
<mxGeometry height="80" width="80" x="-355" y="680" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-50" parent="1" style="ellipse;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#66FF66;strokeWidth=3;" value="" vertex="1">
<mxGeometry height="80" width="915" x="-457.5" y="780" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-51" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="&lt;div&gt;&lt;font style=&quot;color: rgb(102, 255, 102);&quot;&gt;&lt;b&gt;nimmerverse&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="-60" y="990" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-52" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="&lt;font style=&quot;color: rgb(255, 0, 0);&quot;&gt;&lt;b&gt;Hivemind&lt;/b&gt;&lt;/font&gt;" vertex="1">
<mxGeometry height="30" width="60" x="-480" y="455" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-53" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="&lt;font style=&quot;color: rgb(255, 153, 51);&quot;&gt;&lt;b&gt;GameMaster&lt;/b&gt;&lt;/font&gt;" vertex="1">
<mxGeometry height="30" width="60" x="395" y="455" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-56" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=default;fillColor=none;align=center;verticalAlign=middle;rounded=0;dashed=1;strokeWidth=2;" value="&lt;div&gt;Corresponding to there colour&lt;/div&gt;Dashed line for downstream&lt;div&gt;Dotted line for upstream&lt;/div&gt;" vertex="1">
<mxGeometry height="100" width="220" x="-110" y="500" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-68" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="&lt;div style=&quot;forced-color-adjust: none; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(27, 29, 30); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; box-shadow: none !important;&quot;&gt;&lt;font style=&quot;forced-color-adjust: none; box-shadow: none !important;&quot;&gt;&lt;b style=&quot;forced-color-adjust: none; box-shadow: none !important;&quot;&gt;&lt;font style=&quot;color: rgb(153, 255, 153);&quot;&gt;nimmerverse.&lt;/font&gt;&lt;font color=&quot;#ff33ff&quot;&gt;district.&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="50" width="145" x="-72.5" y="830" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-70" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="&lt;br&gt;&lt;div&gt;&lt;font&gt;&lt;b style=&quot;&quot;&gt;&lt;font style=&quot;color: rgb(153, 255, 153);&quot;&gt;nimmerverse.&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;hivemind.&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="150" x="-490" y="450" as="geometry" />
</mxCell>
<mxCell id="aIeLCH8qUmqrU1Dd2BIR-71" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="&lt;div&gt;&lt;font&gt;&lt;b style=&quot;&quot;&gt;&lt;font style=&quot;color: rgb(153, 255, 153);&quot;&gt;nimmerverse.&lt;/font&gt;&lt;font color=&quot;#ff8000&quot;&gt;gm.&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="160" x="340" y="455" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -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.*

View File

@@ -95,6 +95,10 @@ Irreversibility-respect adds a mandatory time-window between commitment-and-act
**Why cooldown**: hardstop alone isn't sufficient when the act cannot be reversed; the cooldown forces deliberation between commitment and act, ensuring the hardstop-firing reflects considered intent rather than impulse. *Real-world informed-consent practice for irreversible body-modifications operationalized at the mechanic layer.*
### Architectural significance — Variants 1-4 as the event-class taxonomy
**The four canonical hardstop-pattern variants documented above correspond one-to-one to the event-class taxonomy in [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §Variants 1-4 of consent-discipline as event-class taxonomy.** Variant 1 (self-only) = solo-event-class. Variant 2 (dual mutual) = dual-event-class. Variant 3 (triple with partner-witness) = triple-event-class. Variant 4 (cooldown-augmented) = temporally-staged event-class. The §The register-test five-question mechanical procedure below is also the event-class-classifier — same test, two readings: *consent-validation* and *event-instantiation*. They were always the same question.
## The mirror discipline — the absolute floor
**No consent — neither single, dual, nor triple — can authorize the modification of another agent's in-between mesh.** This is the architecture's truth-floor; the *one rule consent cannot override*.
@@ -239,4 +243,4 @@ The consent-discipline's instances are scattered across the architecture; this s
---
**Version:** 0.1 | **Created:** 2026-04-27 | **Updated:** 2026-04-27
**Version:** 0.1 | **Created:** 2026-04-27 | **Updated:** 2026-05-01

View File

@@ -43,38 +43,40 @@ The architecture has been using *Hellenic personality-virtues* as the trait-cosm
- *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 — color + motion-signature + description per trait
## The full table — canonical-name + hex + motion-signature + description per trait
| Greek | Description | Color (canonical hue) | Wheel position | Motion-signature |
|---|---|---|---|---|
| **Eros** | reaching for what I want | **Red** | 12:00 | uneven flame-flicker |
| **Philotes** | loving and staying close | **Orange** | 1:30 | breath-rate warm pulse |
| **Aletheia** | seeing what's hidden | **Yellow** | 3:00 | clear, no pulse — still and bright |
| **Kairos** | catching the right moment | **Yellow/Green** (chartreuse) | 4:30 | lightning-flicker |
| **Sophrosyne** | holding back when I want to act | **Green** | 6:00 | steady, even pulse |
| **Dikaiosyne** | standing for what's fair | **Blue** | 7:30 | weighted slow pulse |
| **Moira** | reading what's coming | **Violet** | 9:00 | slow-thread undulation |
| **Mnemosyne** | remembering what mattered | **Red/Violet** (dusky-rose) | 10:30 | depth-shimmer |
| 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
(Red)
#ee1b24
╔═════════════╗
Mnemosyne Philotes
(R/Violet) (Orange)
#cf3b74 #e28a46
│ │
Moira ────────●──── Aletheia
(Violet) (Yellow)
#a349a3 #fcf001
│ │
Dikaiosyne Kairos
(Blue) (Y/Green)
#3f47cd #b5e61d
╚═════════════╝
Sophrosyne
(Green)
#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.
@@ -85,6 +87,35 @@ In earlier drafts (the v0.1 design-vision doc, retired in v0.9 — preserved in
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:
```bash
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`](../identity-and-personhood/architecture.md) §The trait-to-body-part bridge; the faction-uniform table in [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Faction color-politics; the trait-color seed-data in [`../schemas/findings.md`](../schemas/findings.md) §trait_colors; cosmetic-shader prose in [`../runtime-engine/architecture.md`](../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.
@@ -107,6 +138,8 @@ The trait-palette is rendered across many surfaces. Each surface gets specific s
**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`](../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`](../runtime-engine/event-zones.md) §The wheel — universal mini-game-surface and [`../player-experience/architecture.md`](../player-experience/architecture.md) §The wheel — composed-iconography UI).
---
**Version:** 0.1 | **Created:** 2026-04-26 | **Updated:** 2026-04-26
**Version:** 0.2 | **Created:** 2026-04-26 | **Updated:** 2026-05-01

1
tools/imperial-typewriter/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
output/

View File

@@ -0,0 +1,6 @@
# test wordlist for imperial-typewriter — comments and blank lines are skipped
DAFIT
MOIRA
NIMMER
EROS
SOPHROSYNE
1 # test wordlist for imperial-typewriter — comments and blank lines are skipped
2 DAFIT
3 MOIRA
4 NIMMER
5 EROS
6 SOPHROSYNE

View File

@@ -0,0 +1,190 @@
#!/usr/bin/env python3
"""Imperial typewriter — compose imperial-tongue words from glyph PNGs.
Reads glyph assets from the closed studio repo; writes composed word PNGs
to an output directory for VLM-decoder training data generation.
Composition is glyph-cell-tight (no gap between glyphs) — matches the
in-game inscription-typing layout. The imperial machine always screams:
input is auto-uppercased before composition.
"""
import argparse
import csv
import sys
from pathlib import Path
from PIL import Image
DEFAULT_STUDIO_ROOT = "/home/dafit/nimmerverse/studio.nimmerworld.eachpath.local"
DEFAULT_GENERATION = "03"
DEFAULT_RESOLUTION = "512x1024"
VOWELS = set("AEIOUY")
CONSONANTS = set("BCDFGHJKLMNPQRSTVWXZ")
DIGITS = set("0123456789")
CATEGORY_INFO = {
"vowel": ("vowels", "vowel"),
"consonant": ("consonant", "consonant"),
"number": ("numbers", "number"),
}
def category_for(char: str) -> tuple[str, str]:
"""Return (category-dir-name, file-prefix) for a single character."""
if char in VOWELS:
return CATEGORY_INFO["vowel"]
if char in CONSONANTS:
return CATEGORY_INFO["consonant"]
if char in DIGITS:
return CATEGORY_INFO["number"]
raise ValueError(f"No imperial-tongue glyph for character: {char!r}")
def glyph_path(
char: str,
polarity: str,
studio_root: str,
generation: str = DEFAULT_GENERATION,
resolution: str = DEFAULT_RESOLUTION,
) -> Path:
cat_dir, prefix = category_for(char)
suffix = "_neg" if polarity == "negative" else ""
filename = f"{prefix}_{char}_{resolution}{suffix}.png"
return (
Path(studio_root)
/ "imperial-cult"
/ "assets"
/ "imperial-tongue"
/ cat_dir
/ generation
/ f"{prefix}_{char}"
/ filename
)
def compose_word(
word: str,
polarity: str,
studio_root: str,
generation: str = DEFAULT_GENERATION,
resolution: str = DEFAULT_RESOLUTION,
) -> Image.Image:
glyphs = []
for char in word:
path = glyph_path(char, polarity, studio_root, generation, resolution)
if not path.exists():
raise FileNotFoundError(f"Missing glyph asset: {path}")
glyphs.append(Image.open(path).convert("RGBA"))
width = sum(g.width for g in glyphs)
height = max(g.height for g in glyphs)
composed = Image.new("RGBA", (width, height), (0, 0, 0, 0))
x = 0
for g in glyphs:
composed.paste(g, (x, 0), g)
x += g.width
return composed
def words_from_csv(path: Path) -> list[str]:
"""Read words from a CSV file. Takes the first column of each non-empty row.
Skips blank rows and rows whose first cell is empty or starts with '#'."""
words = []
with open(path, newline="") as f:
reader = csv.reader(f)
for row in reader:
if not row:
continue
cell = row[0].strip()
if not cell or cell.startswith("#"):
continue
words.append(cell)
return words
def render_one(
word: str,
output_dir: Path,
polarities: list[str],
studio_root: str,
generation: str,
resolution: str,
) -> None:
word = word.upper()
for pol in polarities:
img = compose_word(word, pol, studio_root, generation, resolution)
suffix = "_neg" if pol == "negative" else ""
out_path = output_dir / f"{word}{suffix}.png"
img.save(out_path)
print(f"wrote {out_path} ({img.width}x{img.height})")
def main() -> None:
parser = argparse.ArgumentParser(
description="Imperial typewriter — compose imperial-tongue words from glyph PNGs.",
)
source = parser.add_mutually_exclusive_group(required=True)
source.add_argument(
"word",
nargs="?",
help="A single Latin word to compose. Auto-uppercased (imperial machine always screams).",
)
source.add_argument(
"--csv",
type=Path,
help="Path to a CSV/wordlist file. First column of each non-empty, non-'#'-prefixed row is used as a word.",
)
parser.add_argument(
"--output",
type=Path,
default=Path("./output"),
help="Output directory (created if missing). Default: ./output",
)
parser.add_argument(
"--polarity",
choices=["positive", "negative", "both"],
default="both",
help="Which polarity to render. Default: both",
)
parser.add_argument(
"--studio-root",
default=DEFAULT_STUDIO_ROOT,
help=f"Path to studio repo root. Default: {DEFAULT_STUDIO_ROOT}",
)
parser.add_argument(
"--generation",
default=DEFAULT_GENERATION,
help=f"Resolution generation subdir. Default: {DEFAULT_GENERATION}",
)
parser.add_argument(
"--resolution",
default=DEFAULT_RESOLUTION,
help=f"Glyph resolution. Default: {DEFAULT_RESOLUTION}",
)
args = parser.parse_args()
args.output.mkdir(parents=True, exist_ok=True)
polarities = ["positive", "negative"] if args.polarity == "both" else [args.polarity]
if args.csv:
words = words_from_csv(args.csv)
if not words:
print(f"no words found in {args.csv}", file=sys.stderr)
sys.exit(1)
print(f"composing {len(words)} word(s) from {args.csv}")
for word in words:
try:
render_one(word, args.output, polarities, args.studio_root, args.generation, args.resolution)
except (ValueError, FileNotFoundError) as e:
print(f" skip {word!r}: {e}", file=sys.stderr)
else:
render_one(args.word, args.output, polarities, args.studio_root, args.generation, args.resolution)
if __name__ == "__main__":
main()

View File

@@ -57,6 +57,25 @@ Interiors carry a `register` flag too:
Most simulation volume is rail-graph (cheap) or dormant interior (free). Active simulation concentrates exactly where drama happens (active anchors + transit + current-interactions). A 100+ NPC city becomes feasible at single-GPU budgets *because* the topology is rail-based.
## Vertical world topology — simple shapes + ±1 LOD tunnels + slum-carve-verb
The world's outer-topology is **vertical-by-default**. Stacked tunnels with simple primitive shapes; rails traverse both horizontally within tunnel-layers and vertically via lift-shafts / stairs / drop-shafts. The streaming budget is bounded by **±1 LOD tunnel-layer** — the player is always *one tunnel-up and one tunnel-down* in active streaming-radius, deeper layers stub out.
This is the architecture's signature pattern at the world-topology scale: **cost-budget asymmetry as architectural style** — bounded simple substrate, rich emergent behavior. Verticality delivers the Boullée-monumental aesthetic (per [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §Source materials — *sublime monumental geometry; pure Platonic solids at impossible scale*) at asset-economy-friendly cost; ±1 LOD bounds the rendering-budget; simple-primitive-shapes keep per-cell asset-author-cost low.
| Property | Value | Why |
|---|---|---|
| Tunnel-layer streaming radius | ±1 from player | Bounded GPU budget; sublime depth-feeling without unbounded-LOD-fight |
| Per-cell shape complexity | Simple primitives (boxes, cylinders, ramps, low-poly carves) | Asset-economy preserved; voxel-editor-grammar enabled |
| Cross-layer connections | Lift-shafts, stairs, drop-shafts (±1 only) | Maintains streaming-bound; player navigates through stack one layer at a time |
| Dominant-direction | Vertical (over horizontal sprawl) | Sublime monumental scale; the imperium's verticality made literal in topology |
**The slum-carve-verb.** Editor-mode (per [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §Player editor-mode + three-source schema unification) is enabled in slum/underground tunnel-layers. The verb is **carve, not build** — players knock pieces of wall out, open new cells, extend their hovels and workshops downward or laterally into the tunnel-substrate. The cell-arch's 1×1×1m atomicity (per [`../political-register/world-generation.md`](../political-register/world-generation.md) §L4 Cell ruleset) makes this voxel-grammar trivial: each carve is a discrete cell-state-change; no continuous-geometry math; no LOD-budget thrashing.
**Material-vocabulary politically-codes editor-eligibility.** Imperial districts (deva-pinnacle citadels, asura-priesthood seats, ceremonial halls) are editor-locked — *imperial-marble can't be carved*. Slum/underground districts (slum-tier dwellings, frontier districts, underground workshops, abandoned wilds-shrines) are editor-rich — *rusted slum-bedrock yields*. The aesthetic palette (per [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The aesthetic palette — *rust as anti-marble, slum decay; the imperial substrate that has failed to stay clean*) carries through to the editor-verbs. **The architecture's caste-stratified attention-gradient gets its spatial-authoring surface for free.**
**The Boullée-monumental aesthetic on the cheap.** Each tunnel-layer is rendered with simple primitive geometry; the *feeling* of cosmic scale comes from the vertical-stacking-of-layers, not from per-shape complexity. Looking up from a slum-tunnel and seeing the deva-pinnacle citadel-layer above with its golden-stair geometry receding into atmospheric haze — that's the cosmology made walkable, asset-budget preserved.
## Color-language: trait-vocabulary as visual primitive
@@ -70,7 +89,7 @@ The architecture-relevant claims this document needs from the palette:
- **Every trait has a canonical hue paired with a motion-signature** (color-blind accessibility 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).
- **The 4 oppositional pairs sit at 180° on the wheel** (Eros↔Sophrosyne, Philotes↔Dikaiosyne, Aletheia↔Moira, Mnemosyne↔Kairos) — perceptual contrast carries philosophical opposition; *the color wheel does the dramaturgy for free*.
- **Achromatic colors (white, black, grey, brown) are reserved for non-trait roles** — text, pure-light UI overlay, neutral backgrounds. *Aletheia is yellow, not white* (the brightest chromatic hue carries the truth-as-illumination metaphor while keeping white free for its UI/text job; the v0.1-design-vision *Aletheia-as-luminous-white* pattern is **retired**, preserved in git history per the trait-palette.md §The achromatic exception).
- **Achromatic colors (white, black, grey, brown) are reserved for non-trait roles** — text, pure-light UI overlay, neutral backgrounds. *Aletheia is Aletheia-yellow (`#fcf001`), not white* (the brightest chromatic hue carries the truth-as-illumination metaphor while keeping white free for its UI/text job; the v0.1-design-vision *Aletheia-as-luminous-white* pattern is **retired**, preserved in git history per the trait-palette.md §The achromatic exception).
### Three layers of color-rendering
@@ -84,18 +103,18 @@ The architecture-relevant claims this document needs from the palette:
|---|---|
| **Gameworld** | Cel-shaded flat-color regions; trait-colors *more* legible (flat-color regions don't fight per-NPC trait-color modulation; pulses read clean against the comic-book base) |
| **Liminal** | Vague baseline shader; **progression-gated visibility** (grainy-restricted-view at low witness-progression opening to clean refined-cel-shading at endgame); trait-colors *more* legible (vagueness concentrates attention on identity-signals; consent-as-rendering manifests real-skin-warm-cel-shading in the clasp-mesh per `../identity-and-personhood/bodies.md` §The in-between human-mesh) |
| **Imperial net** | Cel-shaded with **gold rim-light outlines** + **clean white backgrounds** + **no weathering**; trait-colors *distorted* toward machine-preferred palette — Philotes-orange flattens to commercial-coral; Aletheia-yellow sterilizes to fluorescent-pallor; Moira-violet commercializes to lavender-decor. *Aletheia-vision* in net pierces this distortion to reveal true colors beneath. (Note: the imperial-net's *clean white backgrounds* + *gold rim-light* are achromatic-and-cosmology palette choices — white as non-trait UI per the achromatic-exception, gold as imperial-cult-aesthetic per [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The aesthetic palette — distinct from the trait-color register being distorted.) |
| **Imperial net** | Cel-shaded with **gold rim-light outlines** + **clean white backgrounds** + **no weathering**; trait-colors *distorted* toward machine-preferred palette — Philotes-orange (`#e28a46`) flattens to commercial-coral; Aletheia-yellow (`#fcf001`) sterilizes to fluorescent-pallor; Moira-violet (`#a349a3`) commercializes to lavender-decor. *Aletheia-vision* in net pierces this distortion to reveal true colors beneath. (Note: the imperial-net's *clean white backgrounds* + *gold rim-light* are achromatic-and-cosmology palette choices — white as non-trait UI per the achromatic-exception, gold as imperial-cult-aesthetic per [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The aesthetic palette — distinct from the trait-color register being distorted. The machine-aesthetic distortion-targets — commercial-coral, fluorescent-pallor, lavender-decor — will receive canonical-name + hex pairings recursively per trait-palette.md §The hex-canon discipline §Scope.) |
### Faction color-politics
| Faction | Color signature |
|---|---|
| **Memorialists** | Mnemosyne-dusky-rose ritual dress; Moira-violet accents; often inherited-from-deceased |
| **Aletheia-wakers** | Aletheia-yellow plain avatars; coded-yellow flashes for recognition |
| **Caste-preachers** | Dikaiosyne-blue vestments + Sophrosyne-green undertones |
| **Hivemind enforcers** | Cold Dikaiosyne-blue + muted-yellow (Aletheia-stolen) |
| **Scavengers** | Moira-violet + Kairos-chartreuse streaks |
| **Clasp-underground** | Dual Philotes-orange + Eros-red flashes (mutual-recognition signal) |
| **Memorialists** | Mnemosyne-dusky-rose (`#cf3b74`) ritual dress; Moira-violet (`#a349a3`) accents; often inherited-from-deceased |
| **Aletheia-wakers** | Aletheia-yellow (`#fcf001`) plain avatars; coded Aletheia-yellow flashes for recognition |
| **Caste-preachers** | Dikaiosyne-blue (`#3f47cd`) vestments + Sophrosyne-green (`#2cad52`) undertones |
| **Hivemind enforcers** | Cold Dikaiosyne-blue (`#3f47cd`) + muted Aletheia-yellow (`#fcf001`, Aletheia-stolen) |
| **Scavengers** | Moira-violet (`#a349a3`) + Kairos-chartreuse (`#b5e61d`) streaks |
| **Clasp-underground** | Dual Philotes-orange (`#e28a46`) + Eros-red (`#ee1b24`) flashes (mutual-recognition signal) |
| **Degens** | Saturated maximalist all-color (chaos palette, addiction-marker) |
### Clasp color-merge
@@ -104,7 +123,7 @@ In shared liminal-construct, two clasping inhabitants' color-signatures *interac
### Mind-pool color-inheritance
When a mind cycles through the pool and is redistributed into a new body, trait-vector persists → color-signature persists. **A player who befriended rose-and-violet-Jakov might see weeks later a new NPC with that same rose-and-violet-signature and feel a jolt of recognition before any dialog.** Color carries soul across cycles. Memorialist political claim: *this person's color should not be recycled by the machine into a service-body* — because color IS who they were.
When a mind cycles through the pool and is redistributed into a new body, trait-vector persists → color-signature persists. **A player who befriended Mnemosyne-and-Moira-toned Jakov might see weeks later a new NPC with that same Mnemosyne-and-Moira signature and feel a jolt of recognition before any dialog.** Color carries soul across cycles. Memorialist political claim: *this person's color should not be recycled by the machine into a service-body* — because color IS who they were.
## Asset economy: base-limb palette + trait-textured variance
@@ -169,4 +188,4 @@ Players navigate the rings *by ear and eye*, not by reading a UI. The privacy-co
---
**Version:** 0.8.0 | **Created:** 2026-04-26 | **Updated:** 2026-04-27 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26); cel-shading-everywhere + per-register parameter variation locked v0.17 (2026-04-26)
**Version:** 0.8.0 | **Created:** 2026-04-26 | **Updated:** 2026-04-28 | **Origin:** Split from architecture-index.md v0.7 (2026-04-26); cel-shading-everywhere + per-register parameter variation locked v0.17 (2026-04-26)