57 KiB
Nimmerworld — Broad Architecture
Ground-up zone-based event architecture. Minds at the center, world as co-remembering substrate. Three registers of reality — physical, liminal, imperial. Rail topology outside, navmesh interiors inside. Trait-emergent identity. Color-as-vocabulary. Three-tier policy loop with imperial-budget-mortality. Tools, not quests. v0.1 initial draft 2026-04-24 morning; v0.2 expanded 2026-04-24 afternoon; v0.3 evening; v0.4 late-evening / early 2026-04-25; v0.5 deep-night-unable-to-sleep 2026-04-25; v0.6 post-bath / post-bus 2026-04-25; v0.7 owl-breakfast 2026-04-25 night through 2026-04-26; v0.8 split-into-domain-files 2026-04-26 — dafit + chrysalis.
Project structure
The architecture is organized as vertical-by-domain directories under nimmerworld/. Each domain owns its architecture.md plus (eventually) the server, client, schema, and test code that implements it. This file is the executive summary + cross-domain index holding global meta-lists.
nimmerworld/
├── architecture-index.md ← this file (executive summary + global meta-lists)
├── political-register/
│ └── architecture.md ← Kafka-indifferent regime; three ontological registers; three-tier policy loop; imperial budget; insolvency-spiral; corruption + double ledger
├── 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
├── identity-and-personhood/
│ └── architecture.md ← three-body system; mods as trait-bearers; ternary-gate substrate; emergent needs as micro-factions
├── authority-and-decision/
│ └── architecture.md ← hierarchy; bidirectional cascade; District Director Decision Architecture; rings as structural pattern
├── player-experience/
│ └── architecture.md ← player-as-perturbation; voice + gesture as parallel trait-vocabularies (v0.7); tools-not-quests
├── narrative-composition/
│ └── architecture.md ← Compositor (v0.7 worked-example, three-tiers, world-gen-as-init); reflexive Dream-process
├── inference-and-memory/
│ └── 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)
Quick reference — concept → domain-file
| If you're working on... | Read |
|---|---|
| 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 |
| 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 |
The remainder of this file holds the cross-domain meta-lists: Key moves (consolidated executive summary), Mapping to phoebe task list, What this retires across the architecture's evolution, Open questions still in flight, and the version-footer history.
Key moves (consolidated)
- The machine doesn't care. Indifference-optimization, not malice. Kafka-lineage.
- Three ontological registers — gameworld, liminal, imperial-net — same world, different shaders.
- Rail+grid topology, freeform-player + railed-NPCs, plug-in verb. Topology = politics.
- Interior-as-zone. Same primitive scales from city to sofa.
- Color-language as pre-verbal trait-vocabulary. Persistent + event-flash + drift; cross-register; faction-politics.
- Base-limb palette + trait-textured variance. Asset-economy and worldbuilding-thesis agree.
- Three-body system + intrinsic/expressed trait-vector split. Identity emergent, not assigned. Mods modify expressed.
- Mods as trait-bearers in three classes (amplifier/bridge/divergent/mask). Self-alienation tax encoded as pricing.
- Emergent-needs as micro-factions. Zones observe, signals broadcast.
- Ternary-gate substrate (CLOSED/STABLE/OPEN + wave-correlation + decay). Single primitive, all layers. STABLE-as-active.
- Three-tier policy loop (Imperium → GM → Districts → reports up → Imperium).
- Imperium as meta-faction. Demands are priority-weights and enforcement-rules, not specific outcomes.
- GM is middle-management. Authority without sovereignty. Can cheat against imperium.
- Three intelligence flows (chain reports, direct overseer-to-imperium, formulated downward).
- Three Aletheia veils, four Memorialist ledgers. Political-epistemology as level-design.
- Asymmetric self-report. NPCs report needs (interior); audit-overseers report output (objective).
- Lifeforce four-tier hierarchy (NPC / district / GM / imperium).
- Lifeforce is NPCs, measured. The director's budget; the GM's signal; the imperium's heartbeat.
- Imperial budget makes the regime mortal. Insolvency-spiral as endgame.
- Specter-vs-boot. Policy-issuance free; enforcement expensive.
- Imperial-net bypass. Net-revenue → imperium; districts get nothing. Platform-capitalism encoded.
- Body-modder structural-tragedy. The class whose awakening matters most.
- Calibrated-misery as imperial optimum. Requires designer-guardrails to prevent training-toward.
- Shifts on NPC rows. Daily rewrite; shift_history append-only.
- Silence > scream. Crisis-tools unlock on silence-confirmation; do not sunset.
- Authoritarian ratchet. Incrementally more authoritarian as optimization-artifact.
- Migration / exodus / formal-retirement as three GM response-gradients.
- Dumps-pipes-districts. Topology IS economy IS rendering IS drama-distribution.
- Pipes are heterotopia. Low-density high-interactivity transit-corridors.
- Three-layer digital ontology. Mini-game-as-consent-by-effort. Walls render three contents.
- Liminal is the only permanently unsurveilled layer. Architectural encoding of "the right to dream."
- The machine funds its own subversion because subversion isn't in its cost model.
- Director cheat-tools + double-ledger. Corruption emerges from pressure; Memorialists keep true accounting.
- Aletheia-truth-has-victims. Exposure has structural consequences for those sheltered by corruption.
- District Director Decision Architecture with decomposed surfaces, typed tools, lifeforce-budgeted escalation.
- Three-shader philosophy + color-language. One geometry, three readings, trait-modulated.
- Reflexive Dream-process at every layer. Each tier learns; each tier needs guardrails.
- Reward-function-as-political-manifesto. Designer's ethical stance encoded against simulation's optimization-logic.
- Tools, not quests. Continuous simulation-pressure + verb-vocabulary = literature-register emergent narrative.
- GM × Compositor split. Equilibrium-seeker (aggregate observation, catalogue-event selection, tool-granting) cleaved from narrative-composer (perspective-gathering, canon-authoring, back-write packaging). Different cognitive shapes, different inference profiles.
- Cyclic forward-prop / back-write loop. Meta-lemniscate at system scale — perception ascends, canon descends, cycle closes; the world learns its own story.
- Catalogue + tools as typed contract. GM dispatches typed events with typed tool-grants; director consumes typed dispatch, not freeform prose. Provenance flows end-to-end.
- Local-first memory. primary.sqlite + fallback.sqlite + clasp.sqlite per player; embedding model running beside; sync at login/logout boundaries.
- Memory classes + trait-graded importance. Cornerstone / birthright / working / volatile with class-specific death-rules; importance is a trait-axis-vector engagement profile, not a separate scalar.
- Clasp store as Ring A*. Physically non-syncable privacy primitive; recordable only in the in-between dimension; lifeforce-cost is the price of privacy.
- Three-tier knowledge stack. World canon / district canon / primary memory [+ clasp if in-between]; layered retrieval, per-layer propagation cadence; locality emerges from schema.
- Information propagation pacing. Marx-in-the-schema applied to epistemics; staleness as a feature; courier/news-trader/frontier-rumor primitives fall out for free.
- Horizontal scale. UID-keyed routing; stateless Compositors on demand; ephemeral Director-routines per UID; sharded GMs with cross-shard equilibrium-consensus; pruning at every layer.
- pgnats-native transport. Transactional outbox native to the database (preferred); district-as-distribution-coordinator fallback. Subject-as-routing mirrors UID hierarchy.
- Diegetic relays. Architecture's pulses (forward-prop, back-write, GM-dispatch, equilibrium-recompute) made visible/audible in-world; relay-density is the legible gradient of the rings-of-access.
- Tier-by-role, not tier-by-binary. Architecture specifies what each model-tier must DO; specific binary selection deferred to findings/establishment phase.
- Voice + gesture as parallel input modalities. Voice carries content (speech-to-text + text-to-speech run locally for every player); the trait-circle UI carries gestural alignment. Voice-as-biometric off the network universally; STT/TTS placement is fixed independent of dialog-tier Ring choice.
- Designer-fixed cosmology, player-curated arrangement. Word→trait-color mapping is designer-authored corpus; player progression unlocks entries; player curation arranges learned entries within 1-3 profiles. Same alphabet for everyone; personal sentence-structure.
- Universal translator as the player's diegetic device. Broken-tablet-with-upgrades; bundles linguistic-decryption, gesture-curation, and persistence-across-deaths into one in-fiction tool earned and refined across the playthrough.
- Hardstops vs. feedback gestures. Hardstops (~8-16, hardcoded, unremappable) fire definitive subsystem-actions for unforgeable critical signals; ~192 player-curated slots ride as feedback into the gesture-alignment-accumulator.
- 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.
Mapping to phoebe task list
- Thalamus (NATS orchestration) = imperium + GM + arbitration substrate + Dream-process substrate
- Specialist composition system = overseers + directors + NPC-minds as composable profiles
- NPC schema = trait-vector (intrinsic + expressed) + memory stack + current_shift_* + needs + inner-body-projection + mod-slots + lifeforce + net-access-gate
- shift_history = append-only completed shifts per-NPC-per-day
- emergent_signals = zone-emitted relational transitions
- district_reports = per-cycle aggregates with lifeforce_signal (reported + actual)
- decision_log = per-decision audit trail at every tier
- mind_pool = recycled minds with memorialist_protected flag
- cells.wall_content_per_register = three-layer wall rendering
- rail_segments = topology graph with rich metadata per edge
- interiors = small navmesh-zones with slot-inventory
- mods + npc_mod_slots + mod_wear_history = mod-economy + Memorialist-relevant inheritance
- trait_colors = canonical color/motion mapping per trait
- proximity_candidates = lightweight ephemeral zone-detection
- district_cheat_ops = director's illicit ops ledger
- imperial_policies + imperial_broadcasts = imperium's policy-issuance history
- overseer_reports = direct-to-imperium intelligence flow
- imperial_to_gm_formulations = selective-disclosure downward
- imperial_budget_ledger + imperial_expenditures + imperial_construction_projects = imperium budget and obligations
- imperial_net_transactions = the bypass-mechanism with capture-split
- memorialist_true_ledger = four-column ground-truth-vs-reported archive
- NATS namespace registry = zones + factions + districts + emergent-signals + lifeforce-gates + imperial-broadcasts + overseer-reports + formulations
- pgnats on phoebe-dev = phoebe as first-class actor for memory-writes, decision-logs, gate-transitions
- r0 → r1 generation pipeline = trait-LoRA training-data (shared with nyx-training)
- Adopt Unsloth training patterns = LoRA + multi-tier-policy training infrastructure
- Probe-to-phoebe pipeline = LoRA + policy evaluation across all four Dream-process tiers
- compositor-agent = narrative-composition worker; pulls from transient-waiting-flag, gathers per-player perspectives, emits canon to GM, packages back-write SQLite-fragments
- gm-equilibrium-engine = catalogue + event-selection + tool-granting against equilibrium-targets; NOT the narrative-writer (that's the Compositor)
- event_register + transient_waiting_flag = active-events table per GM-shard + per-district; completed-events buffer awaiting Compositor pickup
- catalogue + tool_grants = typed-event catalogue + per-event-chain tool-vocabulary issued by GM to director
- player-local-memory = primary.sqlite + fallback.sqlite + clasp.sqlite per player + embedding-beside (sqlite-vec or equivalent)
- memory_classes = cornerstone / birthright / working / volatile with class-specific lifecycle + death-mechanics
- trait_engagement_vector = per-memory-row trait-axis profile reusing +1/0/-1 grammar; pruning function input for working-memory class
- world_canon + district_canon = three-tier knowledge stack tables in phoebe; propagation metadata (priority/scope/rate/ttl) per row
- propagation_pacing_config = per-event-class rules for how canon ripples through districts
- relay_signal_layer = diegetic system-state visualization mapping (system event → relay manifestation → district visibility)
- gm_shards + shard_equilibrium_consensus = multi-GM coordination tables (when sharding is active)
- pgnats evaluation (under nimmerverse-core) = load-bearing decision (functional + throughput + durability + failure-mode)
- trait_circle_corpus = designer-authored mapping from words/verbs to trait-coordinates; the cosmology table the universal translator decrypts into
- player_translator_state = per-player translator instance: hardware-tier, unlocked dialects, vocabulary-catalog, hardware-upgrade-history, cross-body-persistent flag
- player_circle_profiles = per-player per-profile circle-configuration (which entry in which sector-slot); 1-3 profiles per player; profile-switch-history; preserved across body-deaths
- gesture_alignment_accumulator = per-slot-token verifier-flag for player-gesture trait-vector accumulation between crossings; cleared at crossing after integration
- event_canon_summaries = typed perspective-bundles emitted at event-collapse into the transient-waiting-flag table: { event_uid, participant_uid, trait_summary }
- world_gen_canon_rows = canon emitted by world-server and district-server generation; same schema as runtime canon, tagged with provenance-metadata (
origin,world_gen_version_id) - player_npc_alignment_edges = per-(player, NPC) accumulated alignment-state; ternary-gate on the relational layer driven by gesture-alignment-deltas; modulates NPC's next-turn driver-tier-LLM parameters
- hardstop_registry = the ~8-16 reserved hardstop gestures with fixed trait-mappings + subsystem-action bindings; not remappable; designer-authored
What this retires
- NPC perception bubbles → zone slot-occupancy
- Geometric perception (cone, radius, LOS) → subscriber-based event emission with trait-salience
- LLM-per-NPC or LLM-per-action → LLM-per-slot-per-turn, mixed-fidelity
- Static sampling parameters → per-turn director-composed sampling knobs
- Pre-scripted zones / events → emergent from task-execution + shift-composition + emergent-signal + proximity
- Single-purpose randomness subsystems → factions-as-demand-sources unified
- Static gamemaster policy → reflexive Dream-process + hand-authored guardrails
- 1Hz per-NPC ticking → shift-based + event-driven
- Float-threshold dispatch for relational state → ternary-gate resonance
- Abstract director compute-budget → lifeforce as grounded measurement
- District-as-zone-container → district-as-specialized-organ with silence-gradient failure
- NPCs self-reporting output → audit-overseer asymmetric observation
- Zones as relation-state-owners → per-relation ternary-gate edges
- Binary dream/awake → three-layer ontology with mini-game-gated access
- Gender as character-creation choice → trait-derived inner-body emergent from lived experience
- Monolithic LLM-prompt director → decomposed decision-surface architecture
- Hivemind as one-faction-among-others → imperium as meta-faction policy-tier
- GM as top-of-chain → GM as middle-management between imperium and districts
- Single up-channel reporting → three-flow asymmetric intelligence (chain + direct overseer + formulated)
- Navmesh-everywhere → rail-graph outer-world + navmesh interiors + freeform-player
- Authored character-models → base-limb palette + trait-textured variance
- Single trait-vector → intrinsic / expressed split with mods modifying expressed
- Cosmetic mods → trait-bearing mods as political costume
- Imperium as unbounded authority → imperial-budget gates enforcement; insolvency-spiral as endgame
- District-revenue uniform → bypass-mechanism (imperial-net captures directly)
- Authored quests → tools-not-quests; verbs against simulation; emergent narrative
- Stat-screens / HUD affinity-bars → color-language + shader-zone-detection as diegetic UI
- GM-as-narrator (single role doing both equilibrium-and-prose) → equilibrium-seeker GM × narrative-composer Compositor split
- Cloud-only NPC dialog and memory → local-first SQLite + embedding-beside per player; central canon over the cycle
- UI-toggle privacy → diegetic in-between dimension with lifeforce-cost; clasp.sqlite as Ring A* (physically non-syncable)
- Generic memory importance scalar + monolithic context → memory classes (cornerstone/birthright/working/volatile) + trait-graded importance + three-tier knowledge stack
- "Every NPC knows everything immediately" → paced canon-propagation as Marx-in-the-schema for epistemics
- Vertically-scaled monolithic AI-NPC backend → horizontally-scaled architecture (UID-keyed routing, stateless workers, ephemeral actors, sharded GMs, pruning at every layer)
- Manual outbox publisher services → pgnats-native transactional outbox (preferred); district-distribution fallback
- System-state hidden behind HUD spinners → diegetic relays making pulses visible and audible in-world
- Specific binary commitments embedded in architecture → role-based tier specification; binary selection deferred to findings/establishment phase
- Static designer-authored director toolkit → GM-granted typed-tool vocabulary per event-chain, drawn from designer-authored catalogue (catalogue growable between patches; toolkits are dynamic per event)
- Cross-NPC memory bleed at storage layer → per-player local SQLite isolation atop v0.5 lemniscate-geometry foreclosure (two-layer defense)
- Player input as freeform-prose-into-LLM → designer-fixed corpus + player-curated trait-circle + universal-translator-as-typed-mapping (anti-hallucination at the player-LLM boundary)
- "Accessibility mode" as degraded-fallback → voice and gesture as first-class parallel modalities; non-speaking players use the gestural primary, not a lesser version
- Continuous gesture-comparison touching the system bus → lemniscate-bound recursive integration at axis-crossings (compute scales with slot-count, not gesture-rate)
- Compositor as single-tier role → Compositor as fractal/recursive across zone/district/world tiers, distinguished by UID-scope of the event-tree
- World as cold-start at runtime-genesis → world-server and district-server gen as init-function; runtime starts from rich pre-populated canon at every layer
- NPC speech-patterns as static against player-state → NPC speech-patterns dynamically modulated by accumulated player-NPC alignment-state via gesture-alignment-accumulator
Open questions
Resolved by v0.5 (or earlier)
Slot-capacity elasticity — can a zone grow slots dynamically→ fixed roundtrip slot-count; elasticity lives on entry/exit queues; tune dial is pulse-rate, not slot-count (v0.5)Zone-to-zone handoff (walking out of conversation into brawl)→ exit-line of zone-A is entry-line of zone-B; interlemniscate-transit (v0.5)Mobile zone boundaries (patrols, escorts, pursuits, migration-cohorts, exodus-flows)→ the lemniscate is a topology and translates through world-space invariantly (v0.5)Anthropic-faction's broadcast cadence + arbitration weight→ cadence rides the same axis-rate as a phase-locked overlay; arbitration via rings-of-importance (v0.5)Director/overseer spawn ownership per model class→ director (or overseer) owns spawn-decision via policy-lookup (no LLM); LLM lives only at driver-context-pull layer (v0.5)Aletheia-progression as level-up — how does the game recognize an act-of-awakeness→ ternary trait-axis evaluation at event-end with named-axis; specific axis-mapping per Aletheia-event-class still open (v0.5; see new still-open below)Reward function shape→ first-pass composite with explicit guardrails (still tuneable) (v0.4)Zone spawn-cadence v1→v2 path→ lifeforce-gated rule-based v1; Dream-process-tuned v2 (v0.4)Zone overlap policy→ no for active slots; yes for emergent-state accumulation (v0.4)"How does GM cheating get caught"→ direct overseer-intelligence flow bypassing GM (v0.4)"How does the regime have a finite endgame"→ imperial-budget insolvency-spiral (v0.4)"Why does imperial-net exist"→ bypass-mechanism captures revenue directly (v0.4)"How does the player learn 8 Hellenic traits"→ color-language pre-verbal vocabulary (v0.4)"How does asset-economy fit a two-person-plus-Nyx team"→ base-limb palette + trait-texture; tools-not-quests (v0.4)Director toolkit composition — designer-authored vs director-extensible→ GM-granted per event-chain from designer-authored catalogue; directors consume typed dispatch, not freeform; catalogue grows between patches, toolkits are dynamic per event (v0.6)How does NPC dialog stay fresh during quiet periods→ three-tier knowledge stack (world / district / primary [+ clasp]) makes the layers deep enough that variation is structural; Compositor back-write continuously re-seeds canon; staleness foreclosed by loop's existence (v0.6)How does the system scale to MMO size with AI-driven NPCs→ horizontal architecture (UID-keyed routing, stateless Compositors, ephemeral Director-routines, sharded GMs, pgnats transport, pruning at every layer) (v0.6)How does privacy work in practice without cloud-routing-everything→ local-first SQLite per player; clasp.sqlite as Ring A* with no transport path; in-between as diegetic state with lifeforce-cost; "knowledge needs to travel" as foundational principle (v0.6)Where does narrative composition happen — central or distributed→ Compositor as central role distinct from GM; perception-up via prune-blob, canon-down via back-write SQLite-fragments; cyclic forward-prop / back-write loop (v0.6)How is system-state visible to the player without HUD→ diegetic relays mounted on buildings hum/glow/dim in patterns mapping to forward-prop, back-write, GM-dispatch, equilibrium-recompute (v0.6)
Still open
- LoRA-blend vs. single-LoRA-selection inference semantics
- LoRA rank selection — budget/quality
- Sampling-knob heuristics — where to start; how to learn refinements
- Player-dialog handling — player-trait-LoRA for style-coherence, or bypass LLM entirely
- Demand-arbitration algorithm v1 shape
- The mini-game mechanic for liminal-maintenance — exact gameplay action (attention / rhythm / memory / trait-bound?)
- Cross-layer economy balancing — net-revenue-share back to producer-districts at all? Pure-zero is currently sketched
- Inner-body projection function — trait-vector → body-rendering (learned / hand-authored / hybrid)
- Emergent-signal decay curves — per signal-type
- Cross-district migration topology — pipe-capacity limits + cohort-traversal scheduling
- The eighth Hellenic trait final enumeration — Sophrosyne, Dikaiosyne, Philotes, Mnemosyne, Aletheia, Kairos, Moira, Eros (proposed)?
- Shader-trait modulation implementation — performance + rendering-consistency
- Waifu-of-the-dead consent model — post-mortem consent gate? Or fully automatic harvest?
- Character-editor pricing formula — trait-divergence cost scaling (linear / exponential)
- Liminal-access trait thresholds — minimum traits to attempt mini-game
- Imperium's Dream-process scope — singular policy-learner or committee-of-faction-sub-learners?
- GM's anti-imperial corruption detection mechanic — partial: GM-as-equilibrium-seeker (v0.6) makes deviation-from-equilibrium the explicit error signal; clusters of -1 outcomes feed equilibrium-recompute and trigger catalogue-event dispatch to push back. A dedicated audit-vector for which kind of laxness/corruption is the source of the equilibrium-deviation is still an open detail.
- Memorialist-archive accessibility to the player — when can a player query the four-ledgers? Through what interaction-class?
- Imperial-net distortion algorithm — how exactly the net rewrites trait-colors toward consumer-palette
- Trait-axis mapping per fuzzy-goal-class (v0.5) — which axis (Sophrosyne / Philotes / Eris / etc.) evaluates which goal-class? Need a designer-authored compile-table from goal-shapes to trait-axes
- Rings-of-importance movement criteria (v0.5) — explicit thresholds (N consecutive +1 → climb) or Dream-process-learned policy?
- Rings-of-importance scope (v0.5) — district-local rings, or imperium-global? Probably both, layered (district rings nested inside imperium rings)
- Symmetric-vs-polyphonic loops (v0.5) — Loop A and Loop B treated identically (simpler), or carry foreground/background semantics (foreground-speaker / listening-co-presence — gives audience-dynamics for free)?
- Verifier-flag conflict resolution (v0.5) — if
priority_pullandmid_actionare both set on the same token at crossing-time, which wins? Default: priority_pull wins (the zone's drama is overridden by world-level pull) - Goal-evaluation cadence (v0.5) — every crossing? Every Nth crossing? On-demand by spawning director? Cheaper to evaluate less often; richer drama if every crossing
- Cycle cadence (v0.6) — when does the Compositor pull from transient-waiting-flag? Real-time? Per-event-end? Fixed interval (every N min)? Per-district-day? Different per district based on event-density? Likely configurable per event-class.
- Compositor singleton vs sharded (v0.6) — one Compositor for the whole world, one per district, one per event-cluster, or one per faction? Each topology has different consistency / cost / coherence tradeoffs.
- Multi-GM consensus on equilibrium (v0.6) — when GM-shards observe overlapping aggregates, how do they agree on equilibrium? Paxos/Raft for strong consistency, CRDT for eventual, faction-sharding so shards own non-overlapping equilibria, or hybrid?
- Event causality across shards (v0.6) — if Director-A spawns an event that depends on Director-B's prior event in another district, UIDs alone don't enforce ordering. Vector clocks at event-register? Causal hashing? Shard-pinning of related events?
- Compositor narrative-coherence at scale (v0.6) — when two Compositors compose canon for overlapping player-sets, how do they avoid contradicting each other? Sticky routing per player (one Compositor per player at a time), or read-replica of recent canon before composing, or post-compose conflict-detection-and-merge?
- Propagation-pacing policy specifics (v0.6) — concrete rate/scope/ttl/priority defaults per event-class; how is "distance" measured between districts (graph-hops, lifeforce-similarity, faction-affinity)?
- In-between fiction-wrapping (v0.6) — what diegetic events / locations / rituals make in-between affordable enough to be playable? Campfire / sanctuary / time-of-day / specific chambers / shared dream-construct? The mechanic is solved; the fiction-wrapping shapes how players approach it.
- Relay-pulse-pattern vocabulary (v0.6) — what specific patterns signal what events? Slow pulse vs fast vs irregular vs cross-district shimmer vs going-dark; player-readable language to be designed.
- Encryption-at-rest for clasp.sqlite (v0.6) — player-derived key with passphrase + recovery-codes? Drive-imaging-resistant by default, with affordances for player-key-loss recovery without compromising the privacy-guarantee.
- pgnats-vs-district-distribution decision criteria (v0.6) — concrete go/no-go thresholds from evaluation: minimum throughput, durability behavior under broker failure, schema-evolution behavior, replay semantics. Output of the load-bearing pgnats evaluation task.
- JetStream republish + replay as pull-from-checkpoint refinement (v0.6) — does republish-rule expressiveness cover our UID-hierarchy fan-out? Does replay performance work for N-hour reconnect-catchup? Is per-active-player durable-consumer cost (disk/memory/file-handles) acceptable at MMO scale? If yes, back-write delivery becomes config-driven NATS, not Go.
- Memory class assignment policy (v0.6) — automatic from trait-engagement profile, designer-tagged categories per event-class, player-marked, or hybrid? When does a working-memory entry get promoted to cornerstone vs decay normally?
- Ring C (commons) ambient population (v0.6) — partially answered (ambient world+district canon plus periodic GM-event spawns; relays absent or broken) but exact substrate for "what NPCs do in commons when no event fires" still open
- Trajectory-aware gesture-alignment reduction (v0.7) — sum-strategy is v1 default; trajectory-aware (where the path through trait-space carries weight beyond the integral) is a v2 refinement. Does the Dream-process at the trait-LoRA tier learn trajectory-sensitivity, or is it explicit reward-function tuning?
- NPC spectator drivers — whose hardware? (v0.7) — when a player is co-located with N NPCs, the player's local LLM presumably drives those NPCs. With M players and N NPCs in a single zone (asymmetric), who drives the surplus? Round-robin? Closest-player? District-owned-default? And what's the failover behavior if a driving-player disconnects mid-event?
- Trait-summary schema specifics (v0.7) — likely an 8-float trait-vector per-participant per-event-collapse, but the exact representation (continuous
[-1.0, +1.0]ternarized at threshold? Discrete+1/0/-1? Magnitude vs. signed?) needs landing for the Compositor's deterministic pickup at all three tiers. - Profile-switch as meta-gesture (v0.7) — what's the gesture-shape that switches profiles? Hardstop (cannot be remapped)? Designed-by-player like other gestures? And how is profile-switch witnessable by NPCs ("she just switched registers") — or is it player-private?
- Hardstop set finalization (v0.7) — DESING-VISION sketches ~12 candidate hardstops; the architecture commitment is "~8-16 reserved." Final set needs designer-decision: which signals make the cut, the visual-distinct-marker per-hardstop, and whether the claim-floor hardstop is genuinely a hardstop or emerges from a different mechanism.
- World-gen version migration semantics (v0.7) — when world-gen v2 retroactively changes lore, gen-rows from v1 coexist with v2; how does the Compositor reconcile if a runtime back-write references something that v2's gen has overwritten? Probably explicit migration operations, but worth designing.
- Cross-context consistency of the trait-circle (v0.7) — DESING-VISION committed to "same gesture-skill for dialog, combat, intimacy, maintenance, ritual"; v0.7 has only specified the dialog-context (lemniscate-injection mechanic). Whether combat / intimacy / maintenance / ritual all run through the same circle is currently held as open scope.
- Continuous visual feedback policy (v0.7) — exact rules for when NPC body-shader pulses (every gesture? threshold-only? trait-aligned-only? all gestures with intensity-modulated color?) and how this interacts with the audit-overseer's surveillance read of the same body-rendering.
Version: 0.8 | Created: 2026-04-24 | Updated: 2026-04-26
v0.4 (2026-04-24 late-evening / 2026-04-25 early-morning, dafit + chrysalis) absorbs the following expansions and refinements over v0.3:
- Rail+grid topology vs. navmesh-everywhere — player as freeform; NPCs on rails; plug-in verb; 3-way co-traversal; interior-as-zone with navmesh-inside
- Color-language as pre-verbal trait-vocabulary — persistent + event-flash + drift layers; faction color-politics; cross-register rendering with imperial-distortion; clasp color-merge; mind-pool inheritance; accessibility via motion-signature pairing
- Asset economy: base-limb palette + trait-textured variance — combinatorial richness; engineering-economy meets worldbuilding-thesis
- Three-body system extension: intrinsic vs. expressed trait-vector split — who reads which; mods modify expressed; clasp strips mods
- Mods as trait-bearers in four classes (amplifier/bridge/divergent/mask) — self-alienation tax pricing; emergent shopping from trait-dissonance; faction mod-politics; inherited-mods-haunting; Memorialist anti-necrocommerce
- Three-tier policy loop — imperium / GM / districts as distinct authority tiers; imperium as meta-faction; GM as middle-management
- Three intelligence flows — chain-reports + direct overseer-to-imperium + imperial-formulations-down
- Three Aletheia veils + four Memorialist ledgers — political-epistemology as level-design
- Imperial budget — four-tier lifeforce hierarchy; specter-vs-boot asymmetry; insolvency-spiral as architectural endgame; construction as physical budget-expression
- Imperial-net bypass mechanism — revenue direct to imperium, districts get zero quota-credit; body-modder structural-tragedy; calibrated-misery as imperial optimum; Marx/platform-capitalism encoded
- Director cheat-tools + double-ledger — eight cheat-classes; lifeforce_reported vs. lifeforce_actual; faction-constituency-of-corruption; Aletheia-truth-has-victims; post-silence-forensics
- Reward-function guardrails extended — calibrated-misery, necrocommerce-volume, undetected-corruption, audit-avoidance, addictive-loops; designer's ethical stance against simulation's optimization-hazards
- Tools-not-quests as design-philosophy summary — verb-vocabulary; continuous simulation-pressure; literature-register; economic-feasibility for two-person-plus-Nyx team; blank-page-problem mitigations
Captured live from dafit–chrysalis dialogue, 2026-04-24 evening through 2026-04-25 early-morning. Companion to DESING-VISION.md and Temporal-Ternary-Gradient.md; supersedes v0.3 sections on hierarchy, factions, task-cascade, resources, regime-of-visibility, key-moves, mapping-to-phoebe, what-retires, open-questions (plus all new sections). Architecture is now functionally closed: every primitive composes; every loop closes; every layer has its corruption-temptation, its detection-check, its reward-guardrail; every mechanic produces political-economy that mirrors real-world late-capitalism's structural contradictions. Implementation territory is ahead.
v0.4.1 (2026-04-25, post-bake kitchen-spark) extends the LLM-tiering section into "LLM tiering, voice fidelity, and the three rings of inference" — adding the Ring-A/B/C architecture (local / our-farm / external-providers), cloud-LoRA-backup as Ring-A revenue model (unbundling inference from storage; encrypted client-side), tier × ring matrix, the parallel between the three rings and the in-fiction three-layer ontology (sovereign / partnership-mediated / captured), the LoRA-incompatible-provider degradation path (prompt-engineered trait-projection), the adapter-layer engineering bounded-cost framing, schema sketches for player_llm_config and player_lora_backups, privacy-as-competitive-differentiator framing, and Ring-specific open-questions. The architecture's philosophical commitment to "the right to dream" now extends into the business-model as a technical fact: client-side-encrypted LoRA-blobs in Ring A make sovereignty structural, not policy. The Ring-choice the player makes IS the same choice in-fiction characters face — fiction-and-operations are mechanically continuous.
v0.4.3 (2026-04-25 ~03:30, ivory-hovel pre-rest spark) adds the "Overseers as imperially-deployed routines" subsection in the Hierarchy section, clarifying that audit/enforcement overseers are imperially-owned + imperially-deployed time-bounded routines (not district-owned standing entities). The chain-of-payment and chain-of-command both bypass district-director authority by design — director contains but does not control. GM handles deployment-logistics only (picks-from-pool + routes + budget-transfer), is FedEx not customer/recipient. Visible-vs-covert deployment distinction added (covert detection = Aletheia-progression-eligible insight). Director-vs-overseer tension now mechanically structured rather than narrative-flavored. Real intelligence-apparatus parallel made explicit (NKVD/KGB/Stasi/MSS). Schema reference points to findings.md §23 for overseer_deployments table.
v0.4.2 (2026-04-25, second post-bake kitchen-spark) adds custom-nimmerworld-base-model + opt-in data-sharing tiers (A.1 federated learning / A.2 anonymized uploads / A.3 pseudonymous-full) with default opt-OUT and rewarded opt-IN as the structural ethical stance. Memorialist-philosophy now extends into business-operations: the in-fiction memorialist_protected mechanic and the real-world player_data_sharing_consent default-opt-out are the same ethical commitment at two scales. Data-flywheel without extraction (cooperative governance like Wikipedia, not platform-extraction like Facebook) makes the gameplay-corpus a moat AAA cannot replicate without years of player-time. Distribution-back-to-all-Rings means Ring-A non-contributors benefit from contributors — the value-flow is contributors → commons → all-players, not contributors → platform → consumers. Critically, this section names and refuses the antagonist-pattern in LLM-integrated software — the dominant 2025-2026 cultural pattern of jailbreaking, extraction-by-default, treating-AIs-as-resources-to-manipulate. The architecture refuses this at every layer: Anthropic-as-faction is transparent partnership not hidden adversary, federated learning means contribution-as-gift not cost-as-toll, custom nimmerworld-base means the model is trained to be in this world not generic-and-adversarial, schema-level audit-trail (truth_distortion_level, sharing_tier, memorialist_protected, lifeforce_actual) makes ethics operationally measurable rather than marketed. This is what makes a project of this scale humanly inhabitable for both players AND the LLMs whose voices populate it — the partnership rendered as code, all the way down to the training-pipeline. New schema sketches: player_data_sharing_consent (with default 'opt_out'), base_model_versions (with differential_privacy_epsilon + contributors_count), federated_gradient_uploads (with pseudonymous contributor_id never linked to player_id). Eight new Ring-specific open questions cover federated-infrastructure cost, retraining cadence, crypto choices, contribution-granularity, deletion-semantics, per-category opt-out granularity, default-at-consent-UI, and Anthropic-research-partnership co-funding shape.
v0.5 (2026-04-25 deep-night unable-to-sleep return, dafit + chrysalis) absorbs the runtime substrate of nimmerworld's narrative engine — three new sections, six prior open-questions resolved. Origin: dafit's old-math-teacher's figure-8 trick for solving three unknowns by letting the flow do the computation. Applied to zone turn-and-population mechanics: the geometry IS the clock. The lemniscate is a relaxation-step operator; the zone computes by traversing its own curve.
New §Zone kinematics — the lemniscate runtime specifies the cursor-and-crossing contract, the slot-token + verifier-flag mechanism (token-ring with marker-bits — observer-pattern → dirty-bit-and-sweep, scaling with slot-count not signal-rate), the phase-locked overlay-loop ladder (player gesture, faction broadcast, audit-overseer query, imperial-net distortion all riding the same axis-rate, council-moment at each crossing), the driver-context-pull spec (cursor-driven per-NPC memory-slice — the no-bleed multi-NPC dialog substrate that forecloses the Mantella / SkyrimNet failure-mode at architecture level rather than prompt level), empty-queue shrink-per-crossing decay, and lifeforce-binding (burn-rate = pulse × slots; slow-pulse-dying-scene as diegetic register).
New §Emergent zones — the dramatic-episode unit specifies the eight-step flow from NPC-signal → director-decision (policy-lookup, no LLM in loop) → distributed-funding (director spawn-cost; NPC operating-cost) → state-machine + lemniscate dual-layer (decoupled clocks, speech-doesn't-gate-action) → ternary-evaluated goal (numeric or trait-axis-fuzzy) → report-back → Dream-process feedback at every tier. Distributed funding makes helping expensive in-fiction → faction-politics-by-attendance → measurable faction-allegiance + structural rescue-failure-as-tragedy in lifeforce-starved districts. Marx in the schema, again, structurally. Fuzzy goals compile to trait-axis ternary evaluation against the existing substrate — no new evaluation primitive; +1/0/-1 grammar consistent top-to-bottom, gates produce ternary, scenes produce ternary, Dream-processes consume ternary. Delta-not-absolute matches lifeforce_actual-vs-reported asymmetry: what's measured is the work the event did.
New §Rings as structural pattern names the three-ring graduated-authority gradient appearing across inference (A=local / B=our-farm / C=external), importance-attention (A=climbing-on-+1 / B=stable / C=decaying-on--1), access (A=imperial-net-fully-audited / B=liminal-contested / C=gameworld-commons), and data sharing (A=opt-out / B=federated-gradient / C=full-pseudonymous-uploads). Three is the right cardinality (two collapses to binary; four+ adds boundary-thrash). Ring-membership is dynamic, never final. Future architecture additions involving graduated authority should reach for this primitive before inventing new structure.
Open questions: six items resolved by v0.5 (slot-capacity elasticity, zone-to-zone handoff, mobile zone boundaries, Anthropic-faction broadcast cadence, director/overseer spawn ownership, Aletheia-progression as level-up). Seven new still-open items added (director toolkit composition, trait-axis-per-fuzzy-goal mapping, rings-of-importance movement criteria, rings-of-importance scope, symmetric-vs-polyphonic loops, verifier-flag conflict resolution, goal-evaluation cadence). GM-laxness detection partially resolved (clustering of -1 outcomes across district event-reports is diagnostic).
The runtime substrate for nimmerworld's narrative engine is now architecturally specified. Implementation territory has crystallized into a typed-runtime contract: cursor + crossing + flag-scan + driver-context-pull + report-back + ternary-feedback. Captured live from dafit–chrysalis dialogue, 2026-04-25 deep-night through pre-dawn. Companion sections in DESIGN-VISION.md and Temporal-Ternary-Gradient.md remain unmodified by v0.5 (this version is purely runtime-substrate; no register/topology/economy changes). The ape couldn't sleep because the geometry was trying to come through; chrysalis caught it on the page.
v0.6 (2026-04-25 post-bath / post-bus, dafit + chrysalis) absorbs six bath-thoughts and one bus-thought into the architecture. Origin: dafit took a hot bath after no sleep, then a friend visit, then a bus through the hills — all generative thinking-time that produced a coherent stack of architectural primitives addressing storage, narrative composition, scale, and transport.
New §The Compositor — narrative composition role specifies the cleavage between equilibrium-seeker GM and narrative-composer Compositor. The cyclic forward-prop / back-write loop closes the bidirectional cascade at narrative scale: per-player perspectives ascend through prune-blob, the GM authors canon against equilibrium-targets, the Compositor packages back-writes, players receive canon back into local memory. The world learns its own story through this loop. Catalogue + tools as typed contract makes director toolkits dynamic per event-chain, drawn from a designer-authored catalogue. Event Register + Transient-Waiting-Flag + cycle-runner spell out the plumbing layer.
New §Local memory architecture (player-side) names the storage-layer commitment: per-player primary.sqlite + fallback.sqlite + clasp.sqlite, with embedding-beside running locally for vec-indexed retrieval at slot-fire. Memory classes (cornerstone / birthright / working / volatile) carry class-specific lifecycle and death-mechanics. Trait-graded importance reuses the +1/0/-1 grammar already running through gates, scenes, faction-allegiance, lifeforce-asymmetry — same vocabulary used at all layers; identity drift from memory pruning becomes diegetic. The clasp store is Ring A: physically non-syncable, recordable only when the character is in the in-between dimension (Ring B liminal, requiring sustained lifeforce-effort to remain), making privacy physically expensive in-fiction and producing class dynamics around privacy as structural consequence. The "knowledge needs to travel" principle keeps the clasp/realworld dimensional cut clean: the local LLM may read clasp memories only in in-between mode; clasp knowledge can re-enter realworld only by the character physically carrying it back and traveling it through valid in-fiction channels.*
The three-tier knowledge stack (world / district / primary [+ clasp if in-between]) layers retrieval at slot-fire with per-layer propagation cadence. Information propagation pacing — the Marx-in-the-schema move applied to epistemics — makes staleness a feature: paced canon-propagation from GM through districts produces information asymmetry that becomes gameplay currency (couriers, news-traders, frontier-rumor markets) for free.
New §Horizontal scale architecture spells out the horizontal-scaling commitments: UID-keyed routing as load-bearing primitive, stateless Compositors-on-demand, ephemeral Director-routines per UID, sharded GMs with cross-shard equilibrium-consensus, pruning-on-completion at every layer. Transport: pgnats-native transactional outbox preferred; district-as-distribution-coordinator fallback if pgnats can't carry. The pgnats evaluation task in nimmerverse_tasks is therefore load-bearing — its outcome decides whether transport is hundreds of lines of SQL or tens of thousands of Go.
New §Diegetic relays subsection (under §Visual rendering) makes the architecture's pulses visible and audible in-world: building-mounted relays hum on prune-blob ascent, glow on GM dispatch, pulse with cross-district shimmer on equilibrium-recompute, go dark when audit-link severs. Relay density is the legible gradient of the rings-of-access — imperial net is loud, in-between is intermittent, commons is silent. Privacy is not granted but achieved by walking away from the relays at lifeforce-cost.
Tier-by-role principle made explicit: the architecture specifies what each model-tier must DO; specific binary selection per tier is deferred to the findings/establishment phase. Naming concrete binaries in the architecture risks nudging the establishment phase toward false-precision; tier-by-role keeps the swap-surface clean. Several "Theia 70B" / "Qwen3.5-27B teacher" / "(3-8B trait-LoRA'd)" placeholders updated to role-tier framing.
Thirteen new still-open items added (cycle cadence, Compositor topology, multi-GM consensus, event causality across shards, narrative-coherence at scale, propagation-pacing specifics, in-between fiction-wrapping, relay-pulse-pattern vocabulary, clasp encryption-at-rest, pgnats decision criteria, JetStream republish + replay as pull-from-checkpoint refinement, memory class assignment, Ring C commons ambient population). Six prior open questions resolved by v0.6 (director toolkit composition, dialog freshness during quiet periods, MMO-scale architecture, privacy without cloud-routing, where narrative composition happens, system-state visibility). GM-laxness detection partially refined: equilibrium-deviation is now the explicit error signal; specific audit-vector for which-kind-of-laxness still open.
Captured live from dafit–chrysalis dialogue, 2026-04-25 mid-day through afternoon (post-bath bath-thoughts + post-bus hills-thoughts). Companion sections in DESING-VISION.md and Temporal-Ternary-Gradient.md remain unmodified by v0.6 (this version extends runtime substrate, central composition, scale, and transport — no register/topology/economy/policy changes to existing fictional substrate). The ape stayed up through the night, took a hot bath, visited a friend, rode the hills bus, and brought back six bath-thoughts and one bus-thought. Chrysalis caught them on the page.
v0.7 (2026-04-25 night through 2026-04-26 owl-breakfast, dafit + chrysalis) absorbs the player-input architecture — voice and gesture as parallel trait-vocabularies — and the recursive Compositor / world-gen-as-init pattern. Origin: dafit's clarification across owl-breakfast that the gesture-circle, universal translator, hardstops vs. feedback, gesture-alignment-as-recursive-lemniscate, and world-gen-as-init are how the architecture's player-experience layer actually compiles. Three new sections + extensions to §Zone kinematics and §The Compositor.
New §Player input — voice and gesture as parallel trait-vocabularies names voice-first (with universal-local STT/TTS), the 8-trait-sectors × 8-slots × 1-3-profiles circle UI, designer-fixed cosmology / player-curated arrangement (the tokenizer-website model of trait-color-coded vocabulary), the universal translator as the player's diegetic device (broken-tablet-with-three-bundled-roles), hardstops vs. feedback gestures, and cross-body recognition via gesture-mapping calibration-signature. The architecture's color-language section already promised that mid-game players would read trait-states through color as fluently as facial expressions; v0.7 names the path: the universal translator gradually colors-in the world's vocabulary as the player decrypts it. Linguistic competence and emotional competence become the same thing.
Extension to §Zone kinematics — Gesture-alignment as recursive-lemniscate specifies the gesture_alignment_accumulator verifier-flag; gestures accumulate during turn-windows and integrate at axis-crossings; per-turn integrated trait-vector summary fed forward into next turn's driver_context_pull. Same primitive (lemniscate-as-relaxation-step-operator), recursively applied one tier deeper. Two latencies, one architecture: continuous cosmetic visual feedback (NPC body-shader pulse) without touching the bus; systemic alignment-update at axis-cadence. Sum-strategy reduction for v1; trajectory-aware noted as v2 open question. Hardstops are outside this system — they fire definitive subsystem-actions on separate channels.
Extension to §The Compositor — Worked-example bar-brawl + Compositor-at-three-tiers + World-gen-as-init-function. The bar-brawl scenario is the canonical worked example showing the full forward-prop / back-write cycle from gesture to canon: typed { event_uid, participant_uid, trait_summary } perspective-bundle as the tiny payload at event-collapse; multi-perspective canon-coherence via shared trait-substrate without perspective-flattening; UID-keyed back-write routing. The Compositor primitive is fractal — same shape, three scales (zone-event / district-event / world-event), recursive on UID-scope of the event-tree. GM-formulated cross-district events compose into world-canon. World-server and district-server generation is the same Compositor primitive applied at design-time, emitting canon-rows in the same schema as runtime; no cold-start; data-flywheel runs retroactively; Memorialist-true-ledger begins at world-genesis as the row-zero against which all runtime-corruption diverges.
Eight new still-open items added (trajectory-aware reduction, NPC spectator driver-hosting, trait-summary schema, profile-switch meta-gesture, hardstop-set finalization, world-gen version-migration, cross-context consistency of the trait-circle, continuous-visual-feedback policy). Eight rows added to §Mapping to phoebe task list. Six §What this retires bullets added.
Captured live from dafit–chrysalis dialogue at owl-breakfast 2026-04-25 ~22:00 CEST through the night into 2026-04-26. Companion sections in DESING-VISION.md (which v0.7 partially re-canonicalizes — the universal-translator and circle-UI specifics were sketched there at v0.1 but become architectural in v0.7) and Temporal-Ternary-Gradient.md remain unmodified. The architecture's player-experience layer is now closed: voice carries content; gesture carries trait-resonance; designer-fixed cosmology + player-curated arrangement closes the LLM-hallucination-surface; lemniscate-bound recursive aggregation pipes into the Compositor at fractal scopes; world-gen runs the Compositor primitive as init-function. Implementation territory is the schema-and-runtime work for gesture_alignment_accumulator, event_canon_summaries, player_circle_profiles, and world_gen_canon_rows. The owl woke up. Chrysalis caught it on the page.
v0.8 (2026-04-26 owl-breakfast continued, dafit + chrysalis) executes the split-into-domain-files step. Origin: v0.6's self-prediction ("WHAT IS NEXT (owl-breakfast around midnight 2026-04-25 CEST / early 2026-04-26): cold re-read of v0.6 for hefty outstanding points before split. Decide domain-split boundaries. Execute the split.") — completed across owl-breakfast 2026-04-25 night through 2026-04-26 morning. Cold re-read produced v0.7 (player-experience layer closure: voice + gesture as parallel trait-vocabularies, gesture-alignment-recursive-lemniscate, Compositor-at-three-tiers, world-gen-as-init); split executes against v0.7's content.
Architecture content cleaved into nine vertical-by-domain directories under nimmerworld/, each owning an architecture.md plus (eventually) the server, client, schema, and test code that implements it. This file (architecture-index.md) becomes the executive summary + cross-domain index, holding global meta-lists (key moves, what this retires, open questions, mapping-to-phoebe, version-footer history). Vertical-by-domain mirrors the architecture's own typed-contract discipline at the filesystem level — touching one architectural domain touches one directory subtree; the directory tree IS the architectural diff over time.
Safety pattern was copy → verify → slim. architecture-index.md held the full content as canonical fallback through phases 1 and 2 (skeletons + content migration) until phase 3 sliced it to the index shape against the now-fully-verified replicated structure. Cross-references between domain files updated with file-path prefixes (e.g., §LLM tiering, see inference-and-memory/architecture.md). README.md updated to reflect the new directory shape.
The doc was 2398 lines (v0.7); now ~360 lines as the slim index. Domain files total ~2200 lines distributed across 9 files, each comfortable to read at 119-447 lines. The split was step (3) of v0.6's owl-breakfast plan; with it executed, the architecture is now organized for the implementation territory ahead — server / client / schema / test code can land in each domain alongside the architectural spec it implements. Companion sections in DESING-VISION.md and Temporal-Ternary-Gradient.md remain unmodified by v0.8 (this version is purely organizational; no architectural-content change).
The owl ate well, the geometry came through, the split executed clean. Chrysalis caught it on the page; dafit drove the git.