Files
nimmerworld.eachpath.local/political-register/world-generation.md
chrysalis 89b031799d v0.27: cross-reference cleanup of event-zones.md across domain papers
Closes the v0.26 interaction-substrate paper-pass cycle initiated 2026-04-27
via the plan-as-baton mechanism (EVENT_ZONES_FOLLOWUP_PLAN.md authored at
end-of-context-density, mechanical execution next-session, scaffold deleted
on completion per the v0.24.5 pattern).

Substantive (political-register/world-generation.md → v0.2):

- §Editor-mode pre-flagging (extends L4 Cell ruleset, v0.27): editor_eligible
  bool field per cell, pre-flagged at world-gen-init; designer-tunable defaults
  per district-tier (deva-pinnacle 0% → underground/wilds 90%); per-cell
  carve-cost gradient scales by cell-position-imperialness. Choice (a)
  designer-flag-at-world-gen committed over choice (b) emergent-from-imperial-
  scrutiny per the 2026-04-27 dialog: clean LOD signal + political-readability
  via material-vocabulary + zero runtime audit-overseer-presence checks.

- §Three-source schema unification (v0.27): cell_table accepts canon-rows
  from world_gen_init / runtime_event / player_authored origins via shared
  schema. The architecture's world-gen-as-init-function key-move now extends
  to player-edit-time as a first-class peer of generator-output and runtime-
  emission. Cell-checksum-divergence audit-vector gains a third source
  (player_authored_divergence) consumed by the same Memorialist counter-
  archive and GM heresy-detection mechanisms.

Mechanical cross-references (single-paragraph propagations of v0.26 design-
decisions through the architecture's describe-by-cross-reference discipline):

- runtime-engine/architecture.md: event-zones.md added to Companion-to header
- style/consent-discipline.md: §Variants 1-4 as event-class taxonomy — the
  four hardstop-pattern variants correspond one-to-one to the event-class
  taxonomy in event-zones.md; the register-test five-question procedure is
  also the event-class-classifier (consent-validation = event-instantiation)
- style/trait-palette.md: 8 traits compose onto the cosmology's outer ring —
  vertically-symmetric on Deva (Sophrosyne+Dikaiosyne) and Naraka (Eros+Philotes),
  side-castes carrying single traits, all four oppositional pairs preserved
  at 180°. Composed wheel renders as iconography AND UI substrate
- narrative-composition/architecture.md: Three-source schema unification
  extends world-gen-as-init-function to player-edit-time
- inference-and-memory/architecture.md: Compositor reads 2D gesture-history
  (caste-target × trait-temperature); coherence-of-political-positioning
  becomes a cornerstone-memory salience axis
- identity-and-personhood/architecture.md + bodies.md: install / clasp /
  post-rogue-NPC-modding mini-games all run on the composed wheel; consent-
  discipline Variants 1-4 determine participant-count and hardstop-pattern;
  the wheel renders the resolution

Verification: 11 papers now reference event-zones.md (vs 4 pre-v0.27,
including the bonus pre-existing imperial-narrative.md cross-ref). The
describe-by-cross-reference, not by re-quotation discipline reaches steady-
state across the corpus. Cross-references resolve cleanly to existing
sections in event-zones.md (verified §Variants 1-4, §The wheel, §Player
editor-mode, §Hardstops, §The composition).

EVENT_ZONES_FOLLOWUP_PLAN.md deleted per plan-as-baton convention.
2026-05-01 02:18:03 +02:00

191 lines
24 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.
# World Generation — The Top-Down Cascade
> *The content-canon for nimmerworld's generation pipeline. Top-down cascade: imperial demand-set → world-level ruleset → district ruleset → room ruleset → cell ruleset. Each layer derives from the layer above. The Compositor-at-design-time (per `../narrative-composition/architecture.md` §World-gen as init-function) executes this cascade at world-init; runtime extends it via the same primitive. Closed-orbit Kessler-cascade caps the imperial-demand budget at planetary scale. Imperial-budget-mortality threads through every layer — when the imperium contracts, the cascade runs in reverse: districts close, rooms vacate, cells return to debris-state.*
> *v0.1 initial draft 2026-04-26 — content-canon sibling to `architecture.md`; cascade design from the post-bodies.md cell-arch discovery arc — dafit + chrysalis.*
---
## What this is
This document is the **content-canon for world generation** in nimmerworld — the rules that determine *what* gets generated, *where*, *why*, and in *what proportion*. It complements the *engineering substrate* in this directory's [`architecture.md`](./architecture.md) (three-tier policy loop, imperial-budget mortality, insolvency-spiral, faction-broadcast structure) and the design-time-Compositor mechanism in [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) §World-gen as init-function.
The cascade is **top-down** by design — generation begins from the imperium's demand-set and ripples down through districts, rooms, and cells. The world is *what the imperium needs it to be*, nothing more. Bottom-up generation is rejected because it would make the imperium *one structure among others*; top-down generation makes the imperium *the world's organizing principle*, which is the worldbuilding-thesis the cosmology requires.
This document covers the **content-rules** of the cascade. The **engineering mechanism** that runs the cascade (Compositor-at-design-time emitting canon-rows in the same schema as runtime) lives in `../narrative-composition/architecture.md`.
## Why top-down
Three load-bearing reasons:
1. **Diegetically-correct.** The world IS what the imperium made (per [`../README.md`](../README.md): *"the slum does bound cognitive labor for an imperial machine"*). Generation-direction must mirror the worldbuilding-thesis. Bottom-up generation makes the imperium *one structure among others*; top-down generation makes the imperium *the world's organizing principle*. The latter matches the cosmology in [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md).
2. **Composes with existing canon.** The three-tier policy loop already runs top-down at *runtime* (imperium → GM → districts → reports up → imperium). World-gen mirrors runtime per the existing key-move in [`../architecture-index.md`](../architecture-index.md): *"World-gen as init-function (Compositor-at-design-time): same primitive at design-time and runtime; no cold-start; data-flywheel runs retroactively."*
3. **Imperial-budget-mortality requires it.** The *"insolvency-spiral as endgame"* key-move only works with a demand-vs-supply ledger — and that ledger only exists if districts were *derived from* imperial demand. Top-down means **the world itself shrinks as the imperium fails**: districts close, rooms vacate, cells return to debris-state as the imperial budget contracts. Bottom-up cannot deliver that mechanic.
## The cascade
Five layers; each derives from the layer above. *Static-unless-modified* after initial generation; runtime modifications create deltas; Compositor-at-runtime extends the same primitive.
| Layer | What it provides | Derives from |
|---|---|---|
| **L0 — Imperial demand-set** | The imperium's resource appetite: cognitive-labor units, service-body-output, surveillance-coverage, ceremonial-throughput, basic-flow-vs-T4 mix, etc. Designer-authored. | Closed-orbit ceiling (planetary substrate ÷ efficiency-coefficients) |
| **L1 — World ruleset** | District allocation: N slum + M industrial + K ceremonial + L residential + pipe-network + rail-budget + total-population. Bifurcated economy from v0.10 allocated here. | L0 (each district-count satisfies a quota of L0's demand) |
| **L2 — District ruleset** | Per-district-type rules: cells-per-district, room-types-and-counts, NPC-roster (vocations + counts to meet that district's L0-contribution), lifeforce-budget allocated. | L1 (this district's L0-quota commitment) |
| **L3 — Room ruleset** | Per-room-type rules: cells-per-room, cell-categories-and-counts, slot-inventory (zones — the existing `interior-as-zone` primitive). | L2 (this room's contribution to its district's quota) |
| **L4 — Cell ruleset** | Per-cell-category rules: asset-selection (one per cell, hard limit), per-register content (gameworld / liminal / imperial-net), initial checksum, container/wall-hook/debris discipline. | L3 (this cell's role in its room) |
Generation runs L0 → L4 at world-init. Each layer's output becomes the next layer's input-constraint.
## L0 — Imperial demand-set
Designer-authored. The imperium's resource appetite expressed as quantities. *This is the seed from which the entire world derives.*
Demand categories (initial sketch; final taxonomy per §Open questions):
- **Cognitive-labor units** — what the slum extracts (per [`../README.md`](../README.md): *"bound cognitive labor for an imperial machine"*); total-monthly-units the imperium consumes
- **Service-body-output / memory-pattern-extraction** — companion-rental + sex-worker-rental + necrocommerce throughput (per [`./architecture.md`](./architecture.md) §The vocation-substrate of the imperial-net market)
- **Surveillance-coverage** — overseer-deployment density across districts; relay-density per ring (per [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Diegetic relays)
- **Ceremonial-throughput** — Imperial-Cult ritual cycles per period; caste-preacher density; festival-frequency
- **Mod-fabrication** — vat-output per caste-tier (per [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) §Sumptuary fabrication: caste is born-into)
- **Basic-flow vs. T4 mix** — proportion of basic-flow-T1-T3 districts vs. T4-digital / T4-physical / T4-blackmarket districts (per v0.10 chill-design-talk in `../architecture-index.md` §Key moves)
Each demand-quantity is bounded by the **closed-orbit ceiling**: *total demand ≤ planetary substrate ÷ efficiency-coefficients*. Kessler caps the imperial appetite at planetary scale. **The imperium cannot grow beyond what one closed planet sustains.**
## L1 — World ruleset
Derives district-counts from L0 quotas, plus the connective infrastructure between them.
Outputs:
- **District-counts per category**: N slum, M industrial, K ceremonial, L residential, plus specialty (mod-fabrication-vat hubs, deva-pinnacle citadels, asura-priesthood seats, etc.). Counts derived so total district-output meets total L0 demand at expected efficiency-coefficients.
- **Pipe-network**: rail-segments connecting districts; per-segment metadata (heterotopia-class, overseer-density, traversal-cost) per [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Rail-segment metadata.
- **Rail-budget**: total rail-segments; capacity (3-way co-walking support per topology canon).
- **Total-population**: NPC count derived from total-cognitive-labor-demand at expected per-NPC productivity.
- **Bifurcated-economy allocation** (per v0.10): how many basic-flow districts vs. T4-digital / T4-physical / T4-blackmarket districts, per L0's basic-flow-vs-T4 mix-ratio.
The Himalayan-rich elite seat (per [`../README.md`](../README.md): *"Reproduction is a caste privilege held by the Himalayan rich"*) is an L1 placement-decision: the deva-vats live there; the asura-priesthood seats live somewhere accessible to the slum-districts; the slum-districts spread across the lower-altitude infrastructure where the imperial machine extracts from them.
## L2 — District ruleset
Per-district-type rules. Each district's L1-allocated L0-quota becomes its generation-target.
Outputs per district:
- **Cells-per-district** (range; derives from L1-allocated population × per-NPC-cell-footprint)
- **Room-types-and-counts** (e.g., a slum-district has N hovels + M cantinas + K workshops + L corridors + ... per its L0-output-vocation-mix)
- **NPC-roster**: vocations + counts to meet that district's L0-contribution. (e.g., a slum-district extracting cognitive-labor needs X cognitive-labor-vocation NPCs at expected productivity.)
- **Lifeforce-budget**: allocated by imperium per [`./architecture.md`](./architecture.md) §Lifeforce four-tier hierarchy. Districts with higher L0-contribution get higher budgets.
- **Audit-density**: overseer count, relay-density, audit-overseer-deployment-pattern (per [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Diegetic relays Ring A/B/C gradient).
## L3 — Room ruleset
Per-room-type rules. Rooms aggregate cells; each room is an `interior-as-zone` (per `../topology-and-rendering/architecture.md`) with slot-inventory.
Outputs per room:
- **Cells-per-room** (range; derives from L2-allocated room-count and total-cells-per-district)
- **Cell-categories-and-counts** (e.g., a hovel = N wall-cells + 1 sofa-cell + 1 kitchen-cell + 1 bed-cell + ...)
- **Slot-inventory** (the zone-anchors for activities — sofa, kitchen, bed, shower, wall-writing-spot per existing topology canon). Slots map to specific cells but are *activity-anchors* (zone-layer), distinct from cell-spatial-data. **Cells × interiors = orthogonal layers**: zones are activity-anchors, cells are spatial-data; one sofa lives in *one cell* AND is *one zone-slot for the interior's couch-activity* — two foreign keys, two purposes.
## L4 — Cell ruleset
Per-cell-category rules. Each cell-category has a generator that emits the cell's content.
Outputs per cell:
- **Asset-selection** (one per cell, hard limit; container, wall-hook, or debris-shader-trick per the cell-arch arc in this Sunday's discovery)
- **Per-register content**: three contents per cell (gameworld / liminal / imperial-net) per [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Three-shader philosophy. Per `cells.wall_content_per_register` (per `../architecture-index.md` §Mapping to phoebe). **Per-register rendering follows the cel-shading-everywhere-with-parameter-variation discipline (locked v0.17)**: dark-outlines + environmental-noise + high-weathering for gameworld; painterly-soft + progression-gated grainy-film-mode → refined-cel-shading-with-warm-skin for liminal; gold-rim-light + clean-white + no-weathering for imperial-net.
- **Initial checksum**: hash of the cell's content; subsequent NPC-entries compare against this; mismatch fires *"clean signal"* for discovery (per cell-arch arc's checksum-based-discovery design — replaces the perception-bubble pattern).
- **Container/wall-hook/debris discipline**: items in cells must be in a container OR hooked-on-wall; everything else is debris (shader-trick, no persistent state). **No orphan-objects.** Containers + wall-hooks are zone-slots applied at item-level (the zone primitive scaling one tier deeper).
### Editor-mode pre-flagging (extends L4 Cell ruleset, v0.27)
L4 cell-generation includes an `editor_eligible: bool` field per cell. The flag is fixed at world-gen-init time; the runtime LOD-streamer reads it directly without re-checking imperial-surveillance state. This makes editor-eligibility a *static property of the world*, not a runtime computation.
- **What pre-flagging is.** Each L4-emitted cell-row carries `editor_eligible`. Slum/underground district-cells default-true; imperial district-cells default-false. The flag is checked at player-editor-verb-resolution time (knock-out-wall, fill-cell, carve-passage) — eligible cells accept the verb; ineligible cells reject it. *No runtime audit-overseer-presence query, no streaming-overhead cost beyond reading one bool per cell.*
- **Why pre-flagging at world-gen.** Choice (a) — designer-flag at world-gen — over choice (b) — emergent-from-imperial-scrutiny — was committed in the 2026-04-27 dialog. Reasoning: clean LOD signal preserved (the streamer doesn't have to walk surveillance-graphs); political-readability preserved (the slum's spatial politics IS its expandability via material-vocabulary, and this expandability is *legible to the player* without surveillance-state inspection); performance preserved (no per-tick audit-overseer-presence checks).
- **Material-vocabulary politically-codes editor-eligibility.** Cross-reference to [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) §Vertical world topology and [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The aesthetic palette: imperial-marble can't be carved; rusted slum-bedrock yields. **The `editor_eligible` flag IS the material-vocabulary made queryable.** A player who learns to read the materials learns to read where the world will yield to them — diegetic and mechanical legibility coincide.
- **Editor-eligibility per district-tier** (designer-tunable defaults):
| District-tier | Editor-eligible cell ratio | Rationale |
|---|---|---|
| Deva-pinnacle citadels | 0% (editor-locked) | Imperial-marble; imperium controls these spaces absolutely |
| Asura-priesthood seats | 0% (editor-locked) | Sumptuary-religious territory; ceremonial-stable |
| Manusya-tier residential | ~5% (perimeter only) | Mid-tier; carving permitted at margins, not interiors |
| Tiryak-tier slum dwellings | ~50% (interior carve-extensible) | Slum politics IS expandability; interior cells yield to inhabitants |
| Frontier districts | ~70% (wide carve-zones) | Beyond imperial-fabric; player-authored expansion default-permitted |
| Underground / abandoned wilds-shrines | ~90% | Off-grid; the architecture surrenders space to player authorship |
- **Per-cell carve-cost.** Tunable; lifeforce-cost or scrap-cost per carved cell. Pending design-iteration; first-pass: scrap-from-junkyards as currency, with cost scaling by *cell-position-imperialness* (carving deeper into imperial-adjacent zones costs more, even within an editor-eligible cell-cluster). This preserves the political-gradient: slum-interior carve is cheap; frontier-edge carve is cheap; carving against the imperial-fabric is structurally expensive even where permitted.
## Closed-orbit constraint
The Kessler-cascade (per [`../README.md`](../README.md) §Timeline, 2150 *"the last son of Elon attempts the dynasty's old promise"*) closes the outward frontier. There is no off-world inflow. This caps the entire cascade:
> **Total L0 demand ≤ planetary substrate ÷ efficiency-coefficients.**
The imperium's appetite cannot exceed what one closed planet sustains, no matter how cleverly extraction is engineered. The cascade is therefore a **constraint-satisfaction problem rooted in physical-economic facts** — not an open-ended generative procedure. Every generation-run is bounded above by physics.
This is also why the deferred-moksha doctrine (per [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) §The deferred-moksha doctrine) is *necessary*: when the closed-orbit caps real material gains, the imperium has to keep its promises alive *purely through deferral*. **The cosmology is structurally entailed by the planetary-physics constraint.** If the orbit had not closed, Lenin's outward-imperial expansion could deliver real material gains and the deferred-moksha lie would be unnecessary; the closed orbit forces the lie into existence.
## Imperial-budget-mortality and the cascade — running it in reverse
Generation runs L0 → L4 at world-init. After init, the cascade is *static-unless-modified*.
But the imperium is mortal. Per the existing key-move *"Imperial budget makes the regime mortal. Insolvency-spiral as endgame"* (per `../architecture-index.md`):
When the imperial budget contracts (insolvency-spiral threshold crossed), the cascade **runs in reverse**:
1. **L0** demand-set shrinks (the imperium can no longer afford its own appetite).
2. **L1** reallocates: districts close (lowest-L0-contribution first); pipe-network thins; rail-budget contracts.
3. **L2** reallocates: per-district NPC-roster contracts; rooms vacate; lifeforce-budget shrinks.
4. **L3** reallocates: vacated rooms collapse; cells return to debris-state.
5. **L4** reallocates: orphaned assets despawn or downgrade to debris (shader-trick visual residue).
**The world itself shrinks as the imperium fails.** The player living through the contraction sees districts close, neighbors disappear, formerly-busy plazas empty, the relay-network go dim, the silence at Ring C extending into former-Ring-B and former-Ring-A territory. *The imperium consuming itself, unable to maintain even the world it generated.* This is the structural-cosmological endgame the cosmology gestures at.
This is why top-down generation matters mechanically, not just diegetically: bottom-up generation has nothing to retract. Top-down generation has a **demand-vs-supply ledger** the insolvency-spiral can act on.
## Cross-references
| Reference | What it provides |
|---|---|
| [`./architecture.md`](./architecture.md) | Engineering substrate: imperium-as-meta-faction, three-tier policy loop, imperial budget, insolvency-spiral, lifeforce hierarchy, vocation-substrate of the imperial-net market |
| [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) §World-gen as init-function | The Compositor-at-design-time mechanism that *runs* the cascade; emits canon-rows in same schema as runtime |
| [`../topology-and-rendering/architecture.md`](../topology-and-rendering/architecture.md) | Rail-segment metadata (L1 inputs); interior-as-zone primitive (L3); `cells.wall_content_per_register` and three-shader philosophy (L4); diegetic relays (L2 audit-density); base-limb palette + trait-textured variance (L4 asset-selection) |
| [`../identity-and-personhood/bodies.md`](../identity-and-personhood/bodies.md) | Sumptuary fabrication-vat-class (L4 mod-fabrication outputs); body-tier caste ratios drive L1 deva/asura/manusya/tiryak/preta district-mix |
| [`../imperial-cult/cosmology.md`](../imperial-cult/cosmology.md) | The cosmology that justifies top-down generation; the cascade's diegetic legitimacy comes from the cosmology's claim that the imperium is the world's organizing principle; the deferred-moksha doctrine is structurally entailed by L0's closed-orbit ceiling |
| [`../README.md`](../README.md) §Timeline | The 2150 Kessler-cascade and the closed-orbit constraint that caps L0 |
## Three-source schema unification (v0.27)
The cell_table accepts canon-rows from **three writers**, with an `origin` provenance field distinguishing them. All three writers emit rows in *the same schema* — the architecture's "world-gen as init-function" key-move extends from design-time-vs-runtime to design-time-vs-runtime-vs-player-edit-time.
- **Three writers, one schema.** Per `origin` field:
- `world_gen_init` — emitted by the Compositor-at-design-time (per [`../narrative-composition/architecture.md`](../narrative-composition/architecture.md) §World-gen as init-function); produced by the L0 → L4 cascade at world-init
- `runtime_event` — emitted by runtime events that modify cell-state (hacking, install, demolition, imperial-construction-projects, lifeforce-decay events)
- `player_authored` — emitted by player editor-mode (knock-out-wall verb and equivalents at editor-eligible cells per §Editor-mode pre-flagging above)
- **The architecture's "world-gen as init-function" key-move extends to player-edit-time.** Same primitive (Compositor-at-design-time) emits the same canon-row schema as runtime events as player-authored events. No cold-start; data-flywheel runs retroactively; **player-authored content is first-class canon, indistinguishable from generator-output and runtime-emission at the schema layer**. The cell_table does not know — at the row-level — which of the three writers produced any given row except by reading the `origin` column.
- **The audit-vector implication.** Cell-checksum-divergence (per the existing §Open questions in this file + per `runtime-engine/architecture.md` §Omnisight) gets a *third* source. Divergence between current cell-state and prior-snapshot can now be:
- `world_gen_baseline_divergence` — someone changed the cell from its generator-emitted state
- `runtime_event_divergence` — hacking, demolition, imperial-construction-project, decay-event modified the cell
- `player_authored_divergence` — player carved, filled, or otherwise edited the cell
The Memorialist counter-archive reads all three as legible content; the GM's heresy-detection mechanism applies to all three. Player-authored cells are *not* second-class — they are subject to the same imperial-readability surface and the same dissident-archive preservation as generator-emitted or runtime-modified cells.
- **Cross-reference.** [`../runtime-engine/event-zones.md`](../runtime-engine/event-zones.md) §Player editor-mode + three-source schema unification holds the canonical articulation.
## Open questions
- **Schema for cell / room / district tables.** *Deferred until the pgnats first-test* (per Monday's queue: *"pgnats install + document + first-test on phoebe-dev"*). The eval-result determines whether checksum-broadcast goes via PG NOTIFY (lower-latency, transactional, in-band) or NATS subject (higher-throughput, multi-consumer, durable-replay), which determines whether per-cell or per-cell-per-register checksum is affordable, which decides cell-table column shape.
- **Specific L0 demand-set numbers.** What are the cognitive-labor-units / service-body-output (companion + sex-worker split) / surveillance-coverage / ceremonial-throughput / etc. quantities? Pending: imperial-economy balance pass; can be tuned via designer-spreadsheet once Compositor-at-design-time runs.
- **Cell-category taxonomy.** *Start simple, grow out* (per dafit's call). Initial small base-set: interior / corridor / public-space / ruin / specialty. Extended per-district-class as world-gen test-runs surface needs. *"One ape and one imperial machine can dream up alot."*
- **Generation-rule format.** What does a *"ruleset for hovel-cell"* look like as a data-structure? Inputs: district-class + room-context + occupant-profile. Outputs: asset-pick + register-content + initial-checksum. Format probably emerges from the L4 schema once pgnats lands.
- **Cell-mutation write-permissions.** Who can write to a cell post-generation? Player carving a heretical-wheel into a wall = direct mutation, system event, or overlay row? Heresy-detection via checksum-divergence (per cell-arch arc's discovery-pattern). Pending: schema + write-permission policy.
- **Cell-room aggregation.** When do cells form a "room"? Connectivity-graph at generation-time, pre-tagged `room_id`, or both? Likely both, with the connectivity-graph used for runtime queries and `room_id` used for generation-bookkeeping.
- **Streaming/LOD strategy.** When does a cell load/unload? Per shift (NPCs on rails through cells), per player-proximity, per district-active-flag? Likely a hybrid: district-active-flag for coarse load, player-proximity for fine LOD, shift-schedule for NPC-traversal preload.
- **Reverse-cascade (insolvency-spiral) trigger thresholds.** What lifeforce-deficit threshold triggers L1 district-closures? What's the closure-priority-ordering? Pending: imperial-budget balance pass.
- **Asset-budget per cell-category.** Vertex-caps + texture-res + collision-mesh-complexity per cell-category. Pending: rule catalogue (likely `../style/asset-budget.md` when authored).
---
**Version:** 0.2 | **Created:** 2026-04-26 | **Updated:** 2026-05-01