Player-experience layer closed (voice+gesture, universal translator, gesture-alignment-recursive-lemniscate, Compositor-at-three-tiers, world-gen-as-init)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# 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 — dafit + chrysalis.*
|
||||
> *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 — dafit + chrysalis.*
|
||||
|
||||
---
|
||||
|
||||
@@ -161,6 +161,40 @@ The crossing is a **council moment** — every overlay channel may fire on the s
|
||||
|
||||
**This is the answer to player-agency in multi-NPC scenes.** The player is *off-stage but always potentially-on*. Each crossing is "your moment if you want it." The flash is perceived as one event by all active NPCs, not as a sequence of one-on-one addresses — color-language shows it as a pulse across the ring.
|
||||
|
||||
### Gesture-alignment as recursive-lemniscate
|
||||
|
||||
The player-gesture overlay (above) is the broadcast-channel by which player gestures reach active slots; gesture-alignment-as-relational-state is the **recursive application of the lemniscate-as-relaxation-step-operator one tier deeper**. Gestures accumulate during the NPC's turn-window between axis-crossings; at the crossing, the player's slot-token verifier-flag `gesture_alignment_accumulator` is integrated into a single typed trait-vector summary; that summary is carried forward into the next-cursor-NPC's `driver_context_pull` payload as part of the room's affective state-read.
|
||||
|
||||
| Tier | What accumulates between crossings | What integrates at the crossing |
|
||||
|---|---|---|
|
||||
| **Zone-level** (existing) | NPC slot-token verifier-flags (`exit_eligible`, `mid_action`, `goal_satisfied`, `priority_pull`, etc.) | Cursor advance, gate evaluation, population maintenance |
|
||||
| **Player-input-level** (this) | `gesture_alignment_accumulator` on player's slot-token; per-gesture trait-coordinate vs. NPC's currently-active-trait-vector | Integrated alignment-delta carried into next turn's LLM context |
|
||||
|
||||
**Same primitive, recursively applied.** The lemniscate's geometry is the sampling-and-integration boundary at both tiers. No new compute-cadence introduced; no new bus-event introduced. **Compute scales with slot-count, not gesture-rate** — the architecture's commitment from observer-pattern → dirty-bit-and-sweep extends one level deeper.
|
||||
|
||||
**Two latencies, one architecture:**
|
||||
|
||||
- *Cosmetic visual feedback runs continuously.* NPC body-shader pulses warm-rose when the player gestures Philotes, cool-blue when they gesture Sophrosyne — 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.
|
||||
|
||||
**Sum-strategy reduction (v1).** Per-gesture trait-coordinates are accumulated as a **trait-vector sum** across the turn-window. At the crossing, the sum is reduced into a single 8-dimensional alignment-vector compared against the NPC's currently-active trait-state. The result is the alignment-delta fed forward into next turn's `driver_context_pull` payload AND drives the relational ternary-gate transition on the (player, NPC) edge (§Ternary-gate substrate, Relational layer). The sum captures the player's **overall posture** during the speech rather than peak-moment or trajectory; trajectory-aware refinement is noted as a still-open item.
|
||||
|
||||
**Hardstops are outside this system.** Hardstops fire definitive subsystem-actions regardless of alignment-state — clasp-invitation triggers the clasp-subsystem; definitive-refusal closes the conversation; surrender ends combat; claim-floor sets `priority_pull` for the next axis-crossing. Hardstops do not contribute alignment-deltas to the accumulator; they are *separate channels* with deterministic effect.
|
||||
|
||||
**What this resolves:**
|
||||
|
||||
- *Player-NPC relational-gate-driver* — the v0.4 vague "*zone-participation waves between participants*" now has its concrete wave-source named: the gesture-alignment-delta integrated at each axis-crossing.
|
||||
- *How NPC speech-patterns adapt to the player over time* — accumulated alignment-state modulates the NPC's next-turn driver-tier-LLM emphasis (which trait-LoRAs are weighted, which sampling-knobs are applied, what register the speech is in). Aligned NPCs open up; misaligned NPCs stay guarded.
|
||||
- *Player-input-as-typed-contract* — gesture-press → fixed corpus mapping → typed trait-coordinate → integrated trait-vector summary. No freeform-prose at the player-LLM boundary; the hallucination-surface is closed by the cosmology's typed-ness, not by post-hoc filtering.
|
||||
|
||||
**What this retires:**
|
||||
|
||||
- *Continuous gesture-comparison touching the system bus* → lemniscate-bound integration at crossings (compute-discipline preserved across the recursion)
|
||||
- *Per-gesture compute* → per-slot compute (O(N_slots), unchanged from existing zone-tick discipline)
|
||||
- *NPC speech-patterns as static against player-state* → NPC speech-patterns dynamically modulated by accumulated player-NPC alignment-state
|
||||
|
||||
### Driver-context-pull (LLM dialog substrate)
|
||||
|
||||
The cursor's position at each crossing makes context-construction for the dialog-driver a pure function of cursor-state:
|
||||
@@ -733,6 +767,89 @@ This means:
|
||||
- **The director's typed-tool vocabulary becomes dynamic and per-event** — the toolkit *for this event* is what the GM granted *for this event*. Closes the v0.5 open question on director-toolkit-composition.
|
||||
- **Marx-in-the-schema, executed at the highest level of authority.** Even the GM's policy-output is typed; even the highest tier produces audit-able artifacts. No tier of the system runs on freeform prose.
|
||||
|
||||
### Worked example — the bar brawl: full cycle from gesture to canon
|
||||
|
||||
A bar brawl illustrates the full forward-prop / back-write cycle made concrete. Two NPC fighters, three players in spectator slots, four NPC spectators, all on the same lemniscate. Each participant has a UID; each fires at axis-rate; each player's local LLM narrates the moment to them in their own register.
|
||||
|
||||
```
|
||||
LEMNISCATE OPENS
|
||||
slots: [F1, F2, P1, P2, P3, N1, N2, N3, N4]
|
||||
brawl_event_uid issued at GM dispatch
|
||||
│
|
||||
▼
|
||||
DURING TURNS (each axis-crossing)
|
||||
• each player's local LLM narrates the moment to them
|
||||
(3 different flavor-stories — each player's gesture-alignment-state
|
||||
colors their LLM's narration register)
|
||||
• each NPC's driver fires at slot-fire (driver-tier LLM)
|
||||
• players gesture continuously during the spectacle
|
||||
• gesture_alignment_accumulator on each player's slot-token integrates at crossing
|
||||
• per-player trait-vector summary carried forward into next turn's context
|
||||
│
|
||||
▼
|
||||
EVENT-LOOP COLLAPSES (brawl ends)
|
||||
per-participant typed summary emitted to district-level transient-waiting-flag:
|
||||
{ event_uid, participant_uid, trait_summary }
|
||||
— players' summaries: gesture-derived
|
||||
— NPCs' summaries: LLM-trait-activation-derived
|
||||
— payload size: bytes per participant, not megabytes
|
||||
│
|
||||
▼
|
||||
COMPOSITOR PICKUP at next cycle-tick
|
||||
pulls UIDs matching event_uid; receives N typed perspectives
|
||||
composes ONE canonical narrative respecting ALL trait-evidence
|
||||
per-participant back-write fragment authored
|
||||
│
|
||||
▼
|
||||
BACK-WRITE ROUTED VIA UID
|
||||
only participants whose (player_uid, event_uid) matches receive the canon-fragment
|
||||
non-participants receive nothing — cross-event memory bleed structurally foreclosed
|
||||
│
|
||||
▼
|
||||
LOCAL primary.sqlite RECEIVES
|
||||
matched canon-fragment merges under event_uid
|
||||
local LLM gains fresh material for future turns
|
||||
```
|
||||
|
||||
**Multi-perspective canon-coherence without perspective-flattening.** Player1's local LLM may have told them "Kalypso lashed out in despair when she saw who Anaximander was"; Player2's, "the fight broke out over an old grievance about the missing modshop"; Player3's, "Anaximander finally stopped letting Kalypso humiliate him". *All three readings can be true simultaneously* because they are flavor-narrations against the same trait-substrate (Kalypso's despair-Mnemosyne-Eros mix; Anaximander's restrained-Sophrosyne-finally-snapping). The Compositor receives the trait-evidence from all perspectives and authors canon that respects all readings. **The flavor is local; the canon is shared; the trait-grammar is universal.**
|
||||
|
||||
### The Compositor at three tiers — same primitive, recursive scope
|
||||
|
||||
The forward-prop / back-write cycle is **fractal**. The same Compositor primitive composes canon at the tier matching the event's UID-scope:
|
||||
|
||||
| Tier | Compositor pulls | Composes | Distributes back via UID |
|
||||
|---|---|---|---|
|
||||
| **Zone-event** (bar brawl, conversation, ritual) | Per-participant trait-summaries from one lemniscate | Local-event canon | Only to participants whose `(player_uid, event_uid)` matches |
|
||||
| **District-event** (district-wide consequences, cheat-discovery, silence-confirmation) | Per-zone canon-rollups within one district | District-canon | All NPCs/players within district scope |
|
||||
| **World-event** (migration, faction-uprising, regime-action, eventual imperial-collapse) | Per-district canon-rollups across many districts | World-canon | World-wide via paced canon-propagation (§Information propagation pacing) |
|
||||
|
||||
GM-formulated events / event-chains carry their own GM-level event_uid; sub_uids are issued at district-level adoption (`gm_event_uid > district_uid > scene_sub_uid > slot_id` per §Horizontal scale architecture). Cross-district summaries tagged with the parent event_uid are pulled together by the Compositor at the GM-tier, producing world-canon from cross-district perspectives.
|
||||
|
||||
**This is how the architecture's Tolstoyan promise compiles.** *"Tolstoy doesn't author Anna's path; he authors the world she moves through."* — recursive Compositor on UID-event-trees IS what makes that promise mechanically true. Authored-quest-arcs are out; UID-rooted-event-tree-compositions are in. **One primitive. Three scales. Whole world, nothing authored at story-level.** The eventual imperial-collapse — the architectural-endgame the insolvency-spiral promises (§Imperial budget) — is itself a world-level Compositor pass that gathers every district's silence-confirmations + every faction's-broadcast + every player's witness-perspective into the canonical fall-of-empire narrative.
|
||||
|
||||
### World-gen as init-function — the Compositor at design-time
|
||||
|
||||
The cyclic forward-prop / back-write loop is the runtime canon-production mechanism. **World-server and district-server generation are the same primitive applied at design-time** — emitting canon-rows in the same schema the runtime Compositor produces, differing only in provenance-metadata (`origin: world_gen` vs. `origin: compositor_run_N`).
|
||||
|
||||
| World-gen / district-gen produces | Goes into | Layer of three-tier knowledge stack |
|
||||
|---|---|---|
|
||||
| World-canon rows (universal truths: empire-fell-three-years-ago; salt-mines-failed-last-winter; faction-foundation-stories) | `world_canon` | Layer 1 (universal) |
|
||||
| District-canon rows (regional truths: bridge-to-Vorhall-closed; brothel-quarter-pays-most-quota) | `district_canon` | Layer 2 (regional) |
|
||||
| Per-NPC bootstrap memories (cornerstone-class entries defining starting trait-vectors and identities) | `primary.sqlite` cornerstone-class | Layer 3 (personal) |
|
||||
| Initial relational ternary-gate states (which NPCs already-know-each-other; which factions are-already-at-war) | Relational ternary-gate edges | (relational substrate) |
|
||||
| Imperial-budget initial state | `imperial_budget_ledger` + `imperial_construction_projects` | (regime substrate) |
|
||||
| Memorialist initial true-ledger | `memorialist_true_ledger` | (epistemological substrate) |
|
||||
|
||||
**Three properties this gives for free:**
|
||||
|
||||
1. **No cold-start problem.** A player walking into a fresh district at hour-zero finds local LLMs immediately supplied with rich district-canon. NPCs aren't generic; they're emergent from district-canon they were initialized with. *Hour-zero gameplay feels like hour-fifty gameplay because the data-density is comparable.*
|
||||
|
||||
2. **The data-flywheel runs retroactively.** Each successive world-gen iteration draws on prior runtime-derived canon (gameplay-accrued trait-LoRAs + opt-in player-data tiers per §LLM tiering). World-gen gets richer over time because it trains itself on the worlds it has already produced. *Wikipedia-shaped, not Facebook-shaped.*
|
||||
|
||||
3. **The Memorialist promise becomes mechanically true at world-genesis.** The `memorialist_true_ledger` is initialized with the world's *actual* genesis-state. Subsequent runtime divergence from it (corruption, regime-formulation-distortions, audit-overseer-tampering) is what the Memorialists *literally have evidence of*. The dissident-historian project starts at row-zero of the true-ledger and accumulates discrepancy from there.
|
||||
|
||||
**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.
|
||||
|
||||
### What this resolves
|
||||
|
||||
- **Director toolkit composition** (v0.5 open) → catalogue-grant from GM defines the typed-tool vocabulary per event-chain; designer-authored catalogue, growable between patches.
|
||||
@@ -1160,6 +1277,57 @@ Time helping others = own tasks fail = own quotas missed = own enforcement-press
|
||||
|
||||
Player's first entry into liminal is **the Matrix red-pill moment as mechanic.** They walk the city the first time in gameworld-register. They eventually learn the mini-game, enter liminal, return to the same walls, find *"she was here"* waiting. **The world was speaking to them the whole time; they just couldn't read it.**
|
||||
|
||||
## Player input — voice and gesture as parallel trait-vocabularies
|
||||
|
||||
The player participates in the simulation through **two parallel modalities** that both compile into the same designer-fixed trait-cosmology: **voice** (spoken dialog, transcribed locally, persisted as transcript-rows in `primary.sqlite`) and **gesture** (the trait-circle UI, an in-fiction tool the player builds across their playthrough). Neither modality routes input through a chat-window or HUD field — the world is interacted with through speech-and-gesture, both rendered diegetically. Voice carries the *content* of what the player says; gesture carries the *trait-resonance* of how the player attends.
|
||||
|
||||
### Voice-first as primary speech modality
|
||||
|
||||
Speech-to-text and text-to-speech run **locally on the player's machine for every player**, independent of dialog-tier Ring choice (§LLM tiering). The Ring-A/B/C choice is about where the *cognition* lives (driver-tier LLM, trait-LoRAs, sampling-knob composition); voice infrastructure is fixed at the player's machine. This single placement decision keeps voice-as-biometric off the network universally, sidesteps per-provider STT/TTS compatibility in Ring-C, and sets a tractable minimum hardware floor for v1: STT/TTS-capable on CPU.
|
||||
|
||||
Transcripts are the persistence layer. A player utterance becomes a row in `primary.sqlite` (or `clasp.sqlite` if in-between mode), tagged with witnessing-NPCs, audit-overseer-detection-eligible, faction-resonance-eligible — the same shape as any NPC speech-act-row. **Disclosure of clasp-content into realworld happens only by the player re-uttering it aloud while in realworld mode** — which writes a fresh realworld-speech-act-row with full provenance. The clasp-store remains sealed; clasp-content can only re-enter realworld through new in-fiction utterance. The *knowledge-needs-to-travel* principle (§Local memory architecture) is mechanically enforced because speech-is-the-only-output-channel.
|
||||
|
||||
Accessibility-mode for non-speaking players is *diegetically wrapped* (writing on slate / handheld pad / in-fiction text-comm); accessibility-mode utterances persist through the same transcript-row mechanism. The witness-list, audit-overseer-detection, and faction-resonance machinery are modality-agnostic. **Non-speaking players are not getting a degraded-fallback — they are using the gestural primary modality, voice optional.**
|
||||
|
||||
### The trait-circle as gestural primary modality
|
||||
|
||||
The gestural input geometry: **8 trait-sectors × 8 player-curated slots = 64 active gesture-positions**, organized in a circle whose 8 sectors map 1:1 to the 8 Hellenic traits (§Color-language). Each player has **1 to 3 named profiles** stored in their universal translator, hot-swappable on-ring via a profile-switch meta-gesture; total callable positions across profiles approach 200 while the cognitive-load ceiling at any single moment stays at the 64 of the active profile.
|
||||
|
||||
A reserved subset of ~8-16 positions across the circle are **hardstops** — hardcoded ritual gestures that fire definitive subsystem-actions: definitive-farewell, definitive-refusal, surrender, clasp-invitation, clasp-refusal, help / pain / danger, faction-recognition signals (Clasp-Underground, Aletheia-Waker), memorial-witnessing, claim-floor (the priority-pull turn-claim into a running lemniscate). Hardstops are visually distinct (gold-border / inner-ring / white-on-color), **player-callable but not player-remappable**, and exist precisely because the consent / clasp / faction-recognition / survival-signal claims the architecture makes elsewhere require *unforgeable critical signals*. The remaining ~192 player-curated slots **ride as feedback during conversation** — see §Gesture-alignment as recursive-lemniscate (under §Zone kinematics).
|
||||
|
||||
### Designer-fixed cosmology, player-curated arrangement
|
||||
|
||||
The corpus of words/verbs and their trait-coordinate-mappings is **designer-authored, fixed, universal**. Same word → same trait-color → same response-semantics for every player and every NPC and every LLM-context. *The cosmology is the typed contract that closes the player-LLM hallucination-surface.*
|
||||
|
||||
The player's role is **translation, then arrangement**: encountering words in the world, decrypting them via the universal translator, gradually *coloring-in* the world's vocabulary in trait-colors (the *tokenizer-website* visualization — words you have fully translated render in their trait-color; untranslated words are fragmentary or opaque), and choosing where on the circle to place known entries within the 1-3 profiles.
|
||||
|
||||
| Layer | Who decides | Why |
|
||||
|---|---|---|
|
||||
| Word/verb → trait-color mapping | Designer-authored corpus | Universal cosmology; LLM and NPC and player share one vocabulary; anti-hallucination |
|
||||
| Which entries a player has translated/learned | Player progression | Earned via decryption-minigames, hacking, scavenging, faction-unlock, gifts from NPCs |
|
||||
| Where on the circle a known entry goes | Player curation | Personal organization within the universal cosmology — the *self-portrait*, built from a fixed alphabet |
|
||||
| Combos (path-traversals through the circle) | Player authoring | Sequences of sector-slot selections; meaning-emerges-from-traversal; refined over use; preserved across body-deaths |
|
||||
|
||||
**Linguistic competence and emotional competence are the same thing in this system.** What the player can resonate with is bounded by what they have translated. A player who has not decrypted Aletheia-vocabulary cannot resonate with an Aletheia-Waker NPC's truth-register; a player whose Memorialist-Old-Tongue catalog is incomplete cannot fully participate in Memorialist-witnessing rituals. The translator is the player's *aperture* into trait-alignment-fluency.
|
||||
|
||||
### The universal translator as the player's diegetic device
|
||||
|
||||
The universal translator is the player's in-fiction tool, not a system-architecture primitive. As an in-fiction device it is **broken / scavenged starter gear** (battered tablet, cracked screen) that the player upgrades over the playthrough via better chips from higher-tier junk. It serves three bundled roles:
|
||||
|
||||
| Role | What it does | What persists across body-deaths |
|
||||
|---|---|---|
|
||||
| **Linguistic decryption** | Decrypts foreign dialects (Machine-Newspeak, Slum-patois, Memorialist-Old-Tongue, Aletheia-Waker-code, Clasp-Underground-signals, Scavenger-technical, Caste-preacher-formal); some concepts (notably Aletheia) are untranslatable by machine-tech and must be *learned from intimacy, not machine* | Vocabulary catalog; mappings |
|
||||
| **Curation / authoring workspace** | Curator workspace (which entries occupy which sector-slots across profiles); combo-authoring workspace (chain entries into meaningful sequences); meaning-mapping workspace (assign embeddings); feedback-log workspace (review past combos' reception, iterate) | Player's complete circle-configuration across all 1-3 profiles; combo-library |
|
||||
| **Persistence anchor** | Preserved as part of consciousness-archive; hardware may be lost with body, learned vocabulary survives | All of the above |
|
||||
|
||||
**Misunderstanding is a first-class feature.** The translator is *broken*; words have multiple meanings; dialects collide; a caste-preacher's sermon has benign surface-meaning and sinister subtext; a beloved's whispered word has three plausible meanings the player carries simultaneously for hours. Content sources are diegetically political — hacking corporate archives (risky), scavenging old-world fragments (exploration), Memorialist caches and Aletheia-Waker codices (lost prophecies), gifts from NPCs (beloveds teach, mentors give), faction-unlock (joining unlocks dialect catalogs).
|
||||
|
||||
Decryption minigames (fragment-matching, contextual-inference, root-identification, pattern-cracking) make linguistic competence a **life-project across cycles**, not an item knocked out per playthrough. *200-hour players have dramatically richer linguistic competence than 50-hour players.* **Aletheia is untranslatable by machine-tech** — some concepts must be learned from intimacy, surfacing as Aletheia-Waker progression: *the machine's tools cannot speak truth*.
|
||||
|
||||
### Cross-body recognition via gesture-mapping calibration-signature
|
||||
|
||||
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 she performs a gesture, if her mapping aligns with yours in a *specific, idiosyncratic way that only your shared history would produce*, you recognize her. **Content-addressable consciousness — recognition via calibration-signature, not face-match.** A high-Mnemosyne player's marriage-vocabulary survives the cycle.
|
||||
|
||||
## District Director: Decision Architecture
|
||||
|
||||
**Industry default ("wall-of-text LLM prompt → prose decision parsed downstream") is rejected.** Reasons: cost-per-decision-constant, latency-catastrophic, opacity-kills-training, prompt-injection-vulnerable, philosophically-wrong-for-the-fiction.
|
||||
@@ -1833,6 +2001,13 @@ The architecture already prevents blank-page-paralysis: shift-system gives every
|
||||
- **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.
|
||||
|
||||
## Compute allocation
|
||||
|
||||
@@ -2022,6 +2197,14 @@ If `republish + replay` carries the load, the back-write transport is *substanti
|
||||
- **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
|
||||
|
||||
@@ -2063,6 +2246,12 @@ If `republish + replay` carries the load, the back-write transport is *substanti
|
||||
- **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
|
||||
|
||||
@@ -2129,10 +2318,18 @@ If `republish + replay` carries the load, the back-write transport is *substanti
|
||||
- **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.6 | **Created:** 2026-04-24 | **Updated:** 2026-04-25
|
||||
**Version:** 0.7 | **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:*
|
||||
|
||||
@@ -2187,3 +2384,15 @@ If `republish + replay` carries the load, the back-write transport is *substanti
|
||||
*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.*
|
||||
|
||||
Reference in New Issue
Block a user