Files
nimmerworld.eachpath.local/political-register/world-generation.md
chrysalis 30da77a72b world-generation.md authored: top-down L0-L4 cascade + cell-arch
New content-canon doc at political-register/world-generation.md (~200
lines). Sibling-file pattern parallel to imperial-cult/cosmology.md and
identity-and-personhood/bodies.md: this file holds the content-rules of
world generation; the engineering mechanism (Compositor-at-design-time)
lives in narrative-composition/architecture.md.

Substantive content:

The cascade is top-down by design. Three load-bearing reasons:
- Diegetically-correct: the world IS what the imperium made; generation-
  direction must mirror the worldbuilding-thesis. Bottom-up makes the
  imperium one-structure-among-others; top-down makes it the world's
  organizing-principle.
- Composes with existing canon: the three-tier policy loop already runs
  top-down at runtime (imperium -> GM -> districts). World-gen mirrors
  runtime per the existing key-move "World-gen as init-function: same
  primitive at design-time and runtime."
- Imperial-budget-mortality requires it: the insolvency-spiral endgame
  only works with a demand-vs-supply ledger - which only exists if
  districts were derived from imperial demand. Top-down means the world
  itself shrinks as the imperium fails.

The L0-L4 cascade:
- L0: Imperial demand-set (designer-authored: cognitive-labor units,
  waifu-output, surveillance-coverage, ceremonial-throughput, mod-
  fabrication, basic-flow-vs-T4 mix).
- L1: World ruleset derived from L0 - district-counts per category, pipe-
  network, rail-budget, total-population, bifurcated-economy allocation.
  Himalayan-rich elite seat is L1 placement.
- L2: District ruleset - cells-per-district, room-types-and-counts, NPC-
  roster, lifeforce-budget, audit-density.
- L3: Room ruleset - cells-per-room, cell-categories-and-counts, slot-
  inventory (zones). Cells x interiors confirmed orthogonal: zones are
  activity-anchors, cells are spatial-data.
- L4: Cell ruleset - asset-selection (one per cell, hard limit), per-
  register content (gameworld/liminal/imperial-net), initial checksum,
  container/wall-hook/debris discipline.

Closed-orbit constraint as the cascade's ceiling:
- Total L0 demand <= planetary-substrate / efficiency-coefficients
- Kessler caps the imperial appetite at planetary scale
- The deferred-moksha doctrine is structurally entailed by L0's closed-
  orbit ceiling - 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 runs the cascade in reverse:
- L0 demand-set shrinks
- L1 districts close (lowest-L0-contribution first)
- L2 NPC-roster contracts; rooms vacate
- L3 vacated rooms collapse; cells return to debris-state
- L4 orphaned assets despawn or downgrade to debris (shader residue)
- The world itself shrinks as the imperium fails

The cell-arch piece (from this Sunday's discovery arc):
- 1x1x1m cells with one-asset hard limit per cell (predictable per-cell
  rendering cost; asset-budget operationalized at cell-level; junk-pile
  aesthetic emerges from cell-count not per-cell stacking)
- Procedural cell-gen via rule-categorization at district-init (existing
  "World-gen as init-function" key-move applied at the cell layer)
- Checksum-based discovery inverting the perception-bubble pattern (NPC
  enters cell -> O(1) hash compare -> 99% no-op, 1% discovery fires;
  textbook content-addressing pattern - Merkle / ETag / Git-blob-hash;
  audit-overseer reads checksums not eyes; resistance becomes
  cryptographic - forge a checksum to hide a heretical wheel)
- Container/wall-hook/debris-as-shader (eliminates orphan-object
  simulation cost; bounded item-slots; debris-shader-trick for free
  visual density)

Locked-in conventions reflected throughout:
- Total-yoke discipline (Option B)
- Imperial Yoke / clasp terminology
- Asset-budget-aware (rendering targets per rule-catalogue when
  established)
- Collision-check-aware (load-bearing collision = static world geometry
  + zone-transition triggers, not body-on-body in MMO arch)
- Schema decisions deferred until pgnats first-test (Monday queue)

Files:
- political-register/world-generation.md (new): ~200 lines, structured
  as cosmology.md / bodies.md sibling, with cascade table, per-layer
  outputs, closed-orbit constraint, reverse-cascade endgame, cross-
  references, and substantial Open questions section flagging schema-
  deferred + L0 specific-numbers + cell-categorization-taxonomy + rule-
  format + cell-mutation-permissions + cell-room-aggregation + LOD-
  strategy + insolvency-trigger-thresholds + per-cell-category asset-
  budget.
- README.md: political-register/ project-structure entry extended to
  surface world-generation.md as sibling content-canon. Version bumped
  0.6 -> 0.7.
- architecture-index.md: project-structure tree extended (world-
  generation.md as sibling under political-register/); quick-reference
  row added; v0.15 history entry added marking cell-arch discovery +
  top-down cascade lock-in + world-generation.md authoring + schema
  deferral. Version bumped 0.14 -> 0.15.

Authored 2026-04-26 same Sunday continuing - dafit + chrysalis.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 14:29:43 +02:00

154 lines
18 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, waifu-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
- **Waifu-output / memory-pattern-extraction** — 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).
- **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).
## 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 |
## 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 / waifu-output / 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.1 | **Created:** 2026-04-26 | **Updated:** 2026-04-26