Files
nimmerworld.eachpath.local/architecture-index.md
dafit 5f216aaf5f v0.8 + v0.9 — intimate-architecture absorbed, driver-tier locked,
style-spine created, DESING retired, schemas relocated

  The owl-breakfast architectural arc from 2026-04-25 night through
  2026-04-26 morning. Two version-bumps landing as one commit because
  they share the working-tree state and complete a coherent design-window.

  v0.8 — intimate-architecture, driver-tier lock, style-spine:

    * Three-tier intimacy structure (standard-rental, premium-waifu-
      with-traitor-marker-and-pruning, in-between clasp) — same v0.7
      machinery, opposite value-flows. Premium-net technical excellence
      makes the moral-weight-of-pruning land as informed-consent ethics.

    * Deletion-as-spectacle: in-net minds as pure compute; imperial
      broadcasts execution-as-content; Memorialist counter-archive as
      in-fiction protest against deletion-spectacle commerce.

    * EVE-principle vocation-substrate of the imperial-net market: every
      product produced by NPC labor; no silent feeding; body-modder
      structural-tragedy generalizes to all imperial-net-feeding vocations.
      World-gen Phase-2 ruleset must handle vocation-distribution.

    * Clasp endgame (Phase A-E): mini-game entry → body-mod progression
      → exit-chassis → human-mesh-visible-to-pair → clasp = two-bodies-
      two-meshes → dual-body-dual-mind-dual-shift cascade → automatic
      hunt-pressure. Identity-as-trait-emergent made felt rather than
      just structural.

    * waifu.sqlite as third local store (audited counterpart to
      clasp.sqlite; manual-prune mechanism with explicit-implications
      consent UI as moral-gravity discipline).

    * Intimacy-as-recursive-lemniscate: same machinery as dialog
      (slot-tokens, cursor at axis-crossing, alignment-accumulator,
      sum-strategy reduction); sex-positions as designer-fixed catalog
      entries; body-parts as visible expression of trait-state.
      Cross-context-consistency operationalized.

    * Driver-tier locked to Gemma 4 E4B (Apache 2.0, 4.5B effective,
      128K context, speech-capable) under new "tier-by-role binary-
      deferred" discipline: locking requires prototype-criticality +
      irreplaceable license/capability combination. Optional Ring-A
      upgrade: 26B-A4B MoE for upper-consumer GPUs, single-LoRA-on-
      routed-experts. Resolves 4 prior open questions (LoRA-blend →
      single-LoRA-per-turn-selection driven by gesture_alignment_
      accumulator; LoRA rank → benchmark-resolvable; sampling-knobs →
      benchmark-resolvable; 8 Hellenic trait enumeration → canonical
      wheel-mapping in style/trait-palette.md).

    * style/ directory introduced: style-index.md (skeleton + spine-
      rule: "trait-palette is exclusively chromatic; achromatic
      reserved for UI/environment so diegetic text rendering can skip
      the textbox") + style/trait-palette.md (canonical 8 traits as 4
      oppositional pairs at 180° on the artist's color wheel:
      Eros↔Sophrosyne, Philotes↔Dikaiosyne, Aletheia↔Moira,
      Mnemosyne↔Kairos. Schoolchild-simple descriptions paired with
      each Greek canonical name).

  v0.9 — directory cleanup completing the arc:

    * DESING-VISION.md (1899 lines, v0.1 first-pass narrative-design
      doc) retired — most content absorbed across v0.4-v0.8; bare-
      minimum extracts (Tonal Register + Tragic-Romantic Register +
      Authorial Politics + Reference Lineage table) now live in README
      so the project's identity anchor stays visible at the entry
      point. Full DESING-VISION content preserved in git history.

    * findings.md moved to schemas/findings.md — new top-level peer to
      architecture-index.md and style/. ~20 tables of DDL drafts as
      reference material; will get reviewed and progressively split
      per-domain as implementation begins.

    * Cross-references swept across 5 files (README,
      architecture-index, authority-and-decision, runtime-engine,
      style/trait-palette).

    * architecture-index.md trimmed: version-footer paragraphs removed
      per "git-is-changelog" discipline. From 374 → 287 lines; every
      remaining line load-bearing.

  The architecture is now organized for the implementation territory
  ahead. Each domain a typed-contract surface; cross-references
  explicit; filesystem mirrors the architecture's own typed-contract
  discipline at the directory layer.
2026-04-26 04:31:13 +02:00

288 lines
36 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 + intimate-architecture absorbed 2026-04-26; v0.9 DESING-VISION retired + style-skeleton + schemas relocation + driver-tier locked Gemma 4 E4B 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)
### Resolved by v0.8
- ~~LoRA-blend vs. single-LoRA-selection inference semantics~~ → single-LoRA-per-turn-selection driven by the player's `gesture_alignment_accumulator`: the dominant trait at each axis-crossing selects which trait-LoRA fires for the NPC's next-turn driver-context-pull. Personality emerges from selection-pattern across time, not from continuous blend at a moment. Driver-tier locked to Gemma 4 E4B (Apache 2.0, 4.5B effective, 128K context, speech-capable). v1 design item: hysteresis on selection to prevent personality-thrash. (v0.8; see `inference-and-memory/architecture.md` §LLM tiering)
- ~~LoRA rank selection — budget/quality~~ → resolvable against E4B benchmark; concrete benchmark task in command-center, no longer architecturally open (v0.8)
- ~~Sampling-knob heuristics — where to start; how to learn refinements~~ → resolvable against E4B benchmark; concrete benchmark task in command-center (v0.8)
- ~~The eighth Hellenic trait final enumeration~~ → 8 traits canonical: Sophrosyne, Dikaiosyne, Philotes, Mnemosyne, Aletheia, Kairos, Moira, Eros — mapped to the artist's 12-segment color wheel as 4 oppositional pairs at 180° (Eros↔Sophrosyne, Philotes↔Dikaiosyne, Aletheia↔Moira, Mnemosyne↔Kairos). Each trait carries a Greek canonical name + schoolchild-simple description + canonical wheel-position + motion-signature. Canonical reference: `style/trait-palette.md` (v0.8)
### Still open
- 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** (v0.5; refined v0.8) — exact gameplay action deferred pending design-research survey. Architecture commits to the role-contract (gates in-between entry; time-limited; lifeforce-cost; repeatable; muted-melancholic register; trait-circle-compatible; extensible to body-mod-progression Phase-B arc per `identity-and-personhood/architecture.md` §The clasp endgame); specific mechanic (juggling / rhythm / attention / gestural / decision-cascade / observation / hybrid) selected after surveying 20-year history of outstanding mini-interaction principles. **Same "by-role, binary-deferred" discipline as LLM tiering** — generalizes from sub-system selection to mini-game selection
- **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
- **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_pull` and `mid_action` are 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) — the v0.1 design-vision (retired in v0.9; preserved in git history) sketched ~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) — the v0.1 design-vision (retired in v0.9) committed to "*same gesture-skill for dialog, combat, intimacy, maintenance, ritual*"; v0.7 specified the dialog-context (lemniscate-injection mechanic) and v0.8 specified the intimate-gameplay-context. Whether combat / 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.9 | **Created:** 2026-04-24 | **Updated:** 2026-04-26