--- title: "Workshop Outcomes" description: "Authoritative summary of all confirmed decisions, canonical data structures, and D-record inventory" type: workshop status: archived workshop: generator-architecture agent: "" round: 0 created: 2026-02-27 --- # Generator Architecture Workshop — Outcomes **Workshop:** Generator Architecture (#562) **Rounds:** 1 through 4 **Dates:** 2026-02-27 **Participants:** Gestalt, Tyre, Miri, Araminta, Nigel, Ozzie **Compiled by:** Qatux --- ## Purpose This document is the authoritative summary of the Generator Architecture workshop. It compiles all confirmed decisions, the canonical data structures, the D-record inventory, and the open questions remaining for sprint work. The source documents are the four round notes files: - `docs/workshops/generator-architecture/round-1-notes.md` - `docs/workshops/generator-architecture/round-2-notes.md` - `docs/workshops/generator-architecture/round-3-notes.md` - `docs/workshops/generator-architecture/round-4-notes.md` --- ## Lead Decisions These are decisions made or confirmed by the project lead (Jeroen) and are not subject to further team debate. | # | Decision | Round confirmed | |---|----------|-----------------| | L-1 | The generator uses a **two-phase** architecture: Phase 1 (DistrictSkeleton, async background) and Phase 2 (ChunkData on-demand per chunk). | R2 | | L-2 | Both **Grid and Organic** layout modes exist. The lead mandated "some blocks grid, some organic chaos." | R3 | | L-3 | **WorldTier** wins over SignificanceTier as the field name on DistrictSkeleton. | R4 | | L-4 | **Entity-carried MobileChunk** is core architecture. Vessels are persistent world entities with a Docked state. | R4 | | L-5 | **DramaDensity** is runtime storyteller state. It does NOT appear on DistrictSkeleton. | R4 | | L-6 | **Heritage grammar overlay** is base game content, not DLC. | R4 | | L-7 | **XOR reseeding for in-playthrough events is prohibited.** `DamageOverlay` is the correct approach for all player-witnessed structural events. | R4 (unanimously confirmed) | --- ## Confirmed Architecture — Summary ### The Three-Layer Model ``` GENERATOR STATE (immutable after Phase 1) ├── Phase 1: DistrictSkeleton │ ├── district_id: DistrictId (identity) │ ├── seed: u64 (deterministic generation) │ ├── district_type: DistrictType (classification) │ ├── context: DistrictContext (world context) │ ├── world_tier: WorldTier (simulation fidelity budget) │ ├── complexity_tier: ComplexityTier (content budget) │ ├── layout_mode: DistrictLayoutMode (Grid | Organic) │ ├── setting: SettingType (terrain + environment type) │ ├── blocks: [[BlockSkeleton; 4]; 4] (4×4 block grid) │ ├── reservations: Vec │ ├── corridors: Vec │ ├── z_levels: u8 │ ├── vertical_structure: VerticalStructure (source: multi-participant) │ ├── breach_only_zones: Vec (source: multi-participant) │ ├── social_sites: Vec │ ├── society_profile: SocietyProfileRef │ ├── zone_palette: Vec │ ├── boundaries: DistrictBoundaries │ ├── access_points: Vec (district entries/exits) │ ├── guarantee_audit: GuaranteeAuditResult │ └── derived_analysis: DerivedDistrictAnalysis (source: Miri/Gestalt; Phase 1 computed) └── Phase 2: PreparedDistrict (on-demand per chunk) ├── SocialSitePlacement (triangles with Vec) ├── NpcManifest (seeded from society_profile) ├── ZonePalette assignments (base + heritage modifiers) └── ChunkMutations pending SIMULATION STATE (runtime storyteller — NOT generator output) ├── DistrictRuntimeState.drama_density: DramaDensity ├── active_triangles: Vec ├── npc_pattern_weights: NpcPatternWeightSet └── assassination_difficulty on-demand computation DELTA LAYER (post-generation) ├── DamageOverlay (LocalOverlay for in-playthrough events) ├── NpcRemoved / NpcStateChanged ├── AccessTierChanged └── WorldStateDelta (composed from all active mutations) ``` ### Spatial Hierarchy (D-094) | Unit | Sim tiles | Visual tiles | Real meters | Purpose | |------|-----------|--------------|-------------|---------| | Chunk | 64×64 | 32×32 | 32m | Streaming unit | | Block | 128×128 | 64×64 | 64m | Generator planning unit (4 chunks) | | District | 512×512 | 256×256 | 256m | Simulation unit (4×4 blocks) | ### Phase 1 Generator Pipeline ``` Pre-Pipeline: system generation, WorldTier assignment, galaxy topology ↓ Phase 1: DistrictSkeleton Stage 1: Classification (WorldTier, ComplexityTier, SettingType) Stage 2: Block grid (DistrictLayoutMode, BlockSkeleton ×16) Stage 3: Reservation (skyscrapers, terminals, MultiBlockReservation) Stage 4: Social site + NPC (triangles, society profile, DerivedDistrictAnalysis) Stage 5: Guarantee audit (3-tier conditional check) ↓ Phase 2: ChunkData (on-demand per player approach) Heritage grammar applied at chunk fill time ↓ World State Layer: DamageOverlay + DeltaLayer overlay at render time ``` ### Layout Mode ```rust enum DistrictLayoutMode { Grid, Organic { placements: [[BlockPlacement; 4]; 4], }, } struct BlockPlacement { offset: (i16, i16), // ±16 sim tiles per axis rotation_steps: u8, // 0–3 (15° increments; hard cap at 45°) street_width_factor: f32, // 0.75–2.0 relative to standard } ``` Hard technical constraint: maximum rotation is ±45°. This is non-negotiable — beyond 45°, tile-based pathfinding produces unacceptable movement artifacts. Organic districts produce the visual impression of curved streets through angular jogs and irregular setbacks, not smooth curves. ### WorldTier and ComplexityTier ```rust enum WorldTier { Epicenter, // Hub system. Full simulation, high faction pressure. Regional, // Regional. 1–4 districts, partial full-budget. Backwater, // Small community. 1 district. Network-insignificant, NOT budget-capped. Passage, // Transit stop. Pass-through. Waypoint, // Not simulated until player approaches. } enum ComplexityTier { Full, // All spatial guarantees. Rich NPC population. Moderate, // Tier 1 + partial Tier 2 guarantees. Moderate NPCs. Minimal, // Tier 1 only. Sparse NPCs. Empty, // No social sites, no NPCs. Pure terrain. } ``` WorldTier → ComplexityTier ceiling: | WorldTier | ComplexityTier ceiling | |-----------|----------------------| | Epicenter | Full | | Regional | Full | | Backwater | Full (key insight: dense isolated community — network insignificance ≠ simulation budget cap) | | Passage | Moderate | | Waypoint | Minimal | ComplexityTier → DramaDensity ceiling: Full → any intensity; Moderate → Active max; Minimal → Quiescent max; Empty → Zero only (no storyteller activation possible). A `ComplexityTier::Empty` district has no social fabric; the storyteller cannot activate drama there. --- ## The 14 D-Ready Items These 14 items are confirmed D-records ready to be filed in `decisions/`. Each has been reviewed and signed off by all workshop participants. ### D-READY-1: DistrictLayoutMode — Grid and Organic Support Both layout modes coexist. Grid = power imposed (Commission-planned). Organic = power negotiated (pioneer settlements, organic growth). Organic mode uses `BlockPlacement` offsets and rotations to produce non-rectilinear street space as negative space between shifted/rotated blocks. 45° rotation is a hard technical ceiling. The proportion of Grid vs. Organic districts across a world must vary per seed to prevent predictable meta-level patterns. ### D-READY-2: Guarantee Tier System — Universal / Full-Only / Conditional **Tier 1 — Universal (all inhabited):** Social Hub, Informal Zone, Encounter Corridor. **Tier 2 — Full-complexity:** Traffic Chokepoint, Institutional Space, Insider Space, Economic Node, Horizon View Corridor (coastal), BreachOnly Zone (≥1), Rooftop Discovery Zone (tall structures). **Tier 3 — Conditional:** A-1 Elevated Vantage, A-2 Egress Multiplicity, A-3 Temporal Opacity Window, A-4 Non-Institutional Route, Economic Asymmetry Signal, Power Gradient Visibility. Audit runs all applicable checks. A Minimal farmstead gets ~3 checks. A Full-complexity coastal urban hub gets up to 13. Archetype placement must vary in **angular position** (not just distance from center) across seeds. The guarantee audit should fail if archetype positions cluster predictably across a test batch of N seeds. ### D-READY-3: TrianglePurpose Enum ```rust enum TrianglePurpose { Investigation, Economic, Social, Political, Tactical, // target + protector + informant/witness Mundane, } ``` Triangles carry `Vec`. Purpose tags are multi-playstyle accessibility features: they ensure the right drama is surfaced to the player whose lens is active. `Tactical` encodes the assassination contract in spatial form. ### D-READY-4: WallBackside / TileBehindState — Dual Classification Both enums are canonical. They serve complementary roles: - `WallBackside` (Tyre): structural — what is physically behind this wall tile (AdjacentSpace / StructuralFill / ServiceVoid / ChunkBoundary / Exterior) - `TileBehindState` (Gestalt): gameplay — what kind of space this represents (StructuralFill / HiddenRoom / Interstitial) Mapping: `WallBackside::ServiceVoid` → `TileBehindState::Interstitial`. `WallBackside::AdjacentSpace` → `TileBehindState::HiddenRoom` or `StructuralFill` depending on access tier. Era-tagged infrastructure cavity contents with standardized color codes: - Era 1: power conduit only (`#c8b840`) - Era 2: power + water/coolant (`#4888c8`) + comm lines (`#b8b8b8`) - Era 3: full bundle (all types, denser) Backside assignments within a template must have seed-driven variation — not fixed-template values. ### D-READY-5: Dynamic Modification via Overlay (Not Re-Generation) Generator output is immutable. All post-generation modifications are applied via overlay. **`DamageOverlay`:** ```rust struct DamageOverlay { overlay_type: DamageOverlayType, epicenter: ChunkLocalPos, radius: f32, intensity: f32, scatter_seed: u64, // variation within damage zone only } enum DamageOverlayType { GasExplosion, Fire, Structural { collapse_direction }, Flooding } ``` **`RegenerationStrategy`:** ```rust enum RegenerationStrategy { LocalOverlay(DamageParameters), // in-playthrough — MANDATORY SoftReseed { seed_modifier: u64 }, // scenario-boundary only FullReseed, // era-level discontinuity only } ``` Hard constraint: in-playthrough events are ALWAYS `LocalOverlay`. XOR reseeding for in-playthrough events is explicitly prohibited. Trauma event → visual stage mapping: - PhysicalDestruction/ViolenceEvent → Stage 2 (Fresh Aftermath), decays to Stage 3 - EconomicDisruption/PoliticalShock/MigrationShock → quarter fill modifier (not destruction stages) Full destruction stage sequence: | Stage | Name | Visual state | |-------|------|-------------| | 1 | Active | Event in progress; DamageOverlay rendering live | | 2 | Fresh Aftermath | Structure breached; scorch, rubble, debris tiles visible | | 3 | Stabilized | Debris cleared; structural state permanent | | 4 | Reconstruction | Scaffolding tiles, incomplete floor sections | | 5 | Healed Scar | Functional again; residual visual tells remain | Destruction palette constraint: corruption-only. No new colors are introduced by destruction. Existing zone palette tiles are darkened, desaturated, or replaced with structural-damage variants from the same palette family. Single exception: `#c8d8f0` (open-sky tile) appears at 100% intensity when a roofed structure has its roof removed — the only color destruction may introduce. Implementers must not create a separate destruction color set. Replayability: the modification history diverges per playthrough based on event decisions. Same-seed worlds share the same generator baseline; different event histories produce different delta layers. This is the replayability engine. ### D-READY-6: ZonePalette Modifier System ```rust struct ZonePalette { base: BasePalette, modifiers: Vec, } ``` 8 base terrain types (T1 temperate farmland [warm organic, natural lighting] / T2 industrial farmland [cool grey-green, artificial lighting] / T3 wilderness / T4 grassland / T5 coastal water [deep near-black blue, animated specular; referenced by D-READY-7 horizon corridor guarantee] / T6 beach/coastal margin [warm dark tan] / T7 mountain/high terrain [dark blue-grey stone, snow at elevation] / T8 desert/arid). T1 and T2 are the two farmland types, explicitly distinct. If wetland terrain is required, it must be specified as a new T9 type — it is not a replacement for any of the 8 canonical types. Modifier axes: A (heritage root → material character), B (economic tier → condition/density), C (era → material generation), plus faction overlay, climate, condition, season. Palette modifiers should influence NPC appearance as well as environment appearance. People dress like they're from here. ### D-READY-7: Horizon View Corridor as Coastal Guarantee A **negative-space** reservation: ≥8 visual tiles unobstructed view corridor from nearest public street to water's edge. No building, tree, or z=4 element may occupy this corridor. A low z=2 element (railing, bench, bollard) marks the waterfront point as a designed viewing location. Tier 2 Conditional guarantee for coastal districts. Position within the district must vary per seed — the Wow Moment of seeing the horizon must be discovered, not expected. ### D-READY-8: Assassin Lens Spatial Guarantees (A-1 through A-4) These are **derived properties of existing spatial configuration**, not assassin-tagged features. They add no generation cost; the audit validates existing output. - **A-1 Elevated Vantage** (Tier 3, Full-complexity): ≥1 position with clear LOS cone to Traffic Chokepoint. Generator ensures overhead-clear zone in LOS corridor during block planning. - **A-2 Egress Multiplicity** (Tier 3, Full-complexity): ≥2 exit routes to adjacent districts. - **A-3 Temporal Opacity Window** (Tier 3, Full-complexity): ≥1 time window (day-phase) where Social Hub has reduced ambient NPC coverage. - **A-4 Non-Institutional Access Route** (mandatory Full-complexity): ≥1 route to any Insider zone that does not pass through high-security institutional spaces. A-1/A-2/A-3 are Tier 3 Conditional (trigger on `complexity_tier == Full`). A-4 is mandatory Full-complexity for all playstyles. ### D-READY-9: Heritage Grammar Overlay for Non-Urban Palettes Data-driven `HeritageGrammarOverlay` structs (10 per heritage root). Loaded once at generator startup. Applied at Phase 2 chunk fill time by weighted blending. Blend rules: - Continuous fields (decorative_density, repair_visibility, etc.): weighted average - Categorical fields (boundary_character, open_space_character): dominant heritage weight wins - Object tag lists: union of preferred/accent tags; intersection-exclusion of excluded tags Phase 1 exception: `gathering_probability` evaluated at block planning for quarter pre-assignment. Authoring domain separation: - **Miri:** organizational principles, boundary character, spacing, social grammar (HeritageGrammarOverlay Rust struct / authored data) - **Araminta:** visual expression — object sets, arrangement algorithms, floor surface variants, overhead flora density and character, wall/structure material character, boundary material type, lighting temperature (TOML modifier files, one per heritage root) Shared requirement: `ObjectTag` vocabulary must be co-maintained. ### D-READY-10: Non-Urban Informal Zone Typology Informal zones are defined as spaces outside the community's social field — not defined by institutional absence but by the type of social permission governing them. Three types: - `social_permission`: normal zone palette; gathering infrastructure present; cover is about convention, not geography - `physical_distance`: sparse objects, unmaintained floor; isolation is the visual - `utilitarian_cover`: functional work objects; space reads as work space; unofficial use is invisible to casual observation Visual grammar per type in `docs/workshops/generator-architecture/araminta-round4.md`. Heritage root correlation: Frost/Stone → `physical_distance`; Tide/Vine/Dust → `social_permission`; Iron/Salt → `utilitarian_cover`. Location within terrain is seeded independently. (Dust = maximum communal observation, only privacy available is negotiated; Iron = labor function covers presence. Both confirmed Miri Round 5.) ### D-READY-11: Vertical Scale Architecture Four height tiers (S1–S4): - S1: 1–2 z-levels (surface + roof/mezzanine) - S2: 3–10 z-levels - S3: 11–30 z-levels - S4: 30+ z-levels Shadow length is the primary height signal in top-down view (2–40 visual tiles). Lazy z-level loading: `ZLevelLoadState: Loaded | Skeleton | Ungenerated`. Only current + adjacent z-levels filled by Phase 2. **Rooftop Bar Clause:** Every tall structure (z_band_count ≥ 3) must assign a `RooftopConfig: Restricted | PublicWithHiddenLayer`. The discovery layer is mandatory in both cases. Heritage root **weights the probability** between the two configs — it does not determine the outcome. A minority of buildings of any heritage root must be configurable as the non-dominant type. A Frost building with a rooftop bar must be possible; full determination kills the discovery moment. (Correction confirmed by Ozzie + Araminta, Round 5.) Z-band floor boundaries must have seed-variation within cultural ordering constraints. A corporate building has executive floors in the upper zone, but which exact floor begins is seeded. Vertical access routes are playthrough-history dependent: same building, different routes available based on player relationship and event history. ### D-READY-12: Trauma Events as EraModification Subtypes ```rust enum ModificationType { TraumaEvent { subtype: TraumaEventSubtype, cultural_aftermath: HeritageRootResponse, } } enum TraumaEventSubtype { PhysicalDestruction, EconomicDisruption, PoliticalShock, ViolenceEvent, MigrationShock, } ``` Trauma events that physically alter structures apply damage via `LocalOverlay`. The original_seed is preserved. Cultural aftermath decays toward baseline at heritage-root-dependent rates. Physical destruction and cultural aftermath are separate tracks: - Structural damage: `StructuralChange` in ChunkMutations - Cultural response: NPC weight distribution shift in `DistrictRuntimeState.npc_pattern_weights` Decay rate is seeded per-community with variation around heritage-root baseline (prevents perfect predictability from heritage root alone). `trauma_visual_decay_rate: slow | medium | fast` per heritage root. Default: medium. Design principle: **Trauma intensifies culture, it does not transform it.** A stressed community becomes a more concentrated version of itself — Frost communities close harder, Tide communities grief more publicly, Iron communities organize more collectively. Decay is toward the community's pre-trauma baseline, not toward a new equilibrium. Players who have learned a heritage root's trust model can predict community behavior in the aftermath. ### D-READY-13: MobileChunk Specification Entity-carried interior space attached to a mobile world entity. Not a district. Uses the same chunk fill primitives in a simpler flat structure (no Phase 1/Phase 2 split; no block grid; no zone negotiation). Key structs: `MobileChunk`, `MobileInterior`, `VesselClass`, `MobileMovementState` (Docked / InTransit / InterSystem / Idle), `TransitSocialModifier`, `MobileNpcSlot`, `NpcPersistence` (Crew / Passenger). Note: `Idle` = vessel parked at a location but not docked to infrastructure (anchored ship, grounded shuttle). Vessels are **persistent world entities**. In `Docked` state: present at dock_position, visible from dock as sprite overlay, boarding via gangway tile → MobileAccessPoint activation. Interior cache keyed by entity_id persists across voyages for crew state. **Departure schedules** are required as a generator output. The `Docked` struct must include `docked_since: SimTick` and `scheduled_departure: Option` — these fields were absent from Tyre's Round 4 canonical struct and must be added at implementation time. The generator must populate `scheduled_departure`. Vessels without departure schedules are an error state. Replayability requirements R-V-1 through R-V-6 (see round-4-notes.md §5, D-READY-13 section). Memory: ~0.5–4 KB metadata + up to 64 KB ChunkData per vessel. At 50 active entities: ~3 MB, paged by streaming model. **Cultural grammar:** `TransitSocialModifier` with `TransitVariant` (BoundedLinear / BoundedMobile / InterSystem). Heritage-root behavior tables by vehicle type. Miri's canonical spec at `docs/workshops/generator-architecture/miri-round4.md`. **Vessel visual grammar:** see `docs/workshops/generator-architecture/araminta-round4.md` §2. Five rules govern visual distinction of MobileChunk interiors from static zone spaces: (1) exterior hull uses vessel-identity material, not zone palette; (2) window tiles reveal exterior context (docked vs. in transit); (3) compression modifier tightens proportions throughout; (4) section transitions use vessel-identity threshold elements; (5) class stratification expressed through proportion, not palette change. ### D-READY-14: DamageOverlay / RegenerationStrategy See D-READY-5 for full specification. Filed separately as a D-record because it establishes the general modification strategy rather than only the overlay mechanics. The key distinction: this D-record establishes the **prohibition** of XOR reseeding for in-playthrough events and the **mandate** for `LocalOverlay`. All participants confirmed this unanimously in Round 4. --- ## NPC Model — The Ysabel Vorn Litmus Test The 10-axis NPC model was validated against a concrete NPC exercise (Miri, Round 4). Ysabel Vorn covers **4.5 of 5 playstyle hooks** on a Backwater/Moderate farming settlement. **The 10 axes:** 1. Behavioral Pattern (social archetype: ANCHOR, REMNANT, WITNESS, etc.) 2. Surface Motivation (publicly visible goal) 3. Actual Motivation (what they actually want) 4. Vulnerability/Secret 5. Information Access (tiered knowledge inventory) 6. Trust Architecture (heritage-based trust model + specific trust network) 7. Routine Pattern (daily/weekly/seasonal schedule) 8. Economic Position (control levers + hidden assets) 9. Relationship Network (triangle memberships — active and latent) 10. Tolerance Threshold (per-trigger tolerance levels) **The gap (Axis 11, proposed):** `network_footprint: Option` for NPCs who are locally insignificant in appearance but carry network-significant information or are relevant to external actors. Default `None` for procedural NPCs. Set explicitly for authored scenario NPCs. This axis is not yet in the confirmed model — it is raised as a Q-record for sprint work. **Minimum NPC count for intra-seed replayability:** 3 (one functional triangle). One NPC = maximum seed-to-seed variation, zero intra-seed emergence. Three NPCs = triangles, shifting alliances, cascade effects. Even Minimal-complexity insignificant districts need 3 NPCs. --- ## Key Tensions and Resolutions | Tension | Round | Resolution | |---------|-------|-----------| | Grid-only vs. organic streets | R1–R3 | Both. Grid = power imposed; Organic = power negotiated. Both modes coexist in the same world. | | SignificanceTier vs. WorldTier naming | R3–R4 | Lead: WorldTier. Canonical values: Epicenter/Regional/Backwater/Passage/Waypoint. | | MobileChunk (entity-carried) vs. instanced district (Nigel) | R3–R4 | Lead: entity-carried MobileChunk. Vessels are persistent world entities. | | DramaDensity on struct vs. runtime | R3–R4 | Lead: runtime only. DramaDensity lives in DistrictRuntimeState, not DistrictSkeleton. | | XOR reseeding vs. structured damage | R3–R4 | Unanimous: DamageOverlay. XOR prohibited for in-playthrough events. | | Assassination difficulty: computed-on-demand (Gestalt) vs. Phase 1 stored (Miri) | R4 | Minor tension. Recommended synthesis: stored cultural baseline (DerivedDistrictAnalysis on skeleton) + on-demand computation for player-facing assessment. See round-4-notes §2, OQ-R4-C. | --- ## Open Questions for Sprint Work | Q-ID | Question | Priority | Owner | |------|----------|----------|-------| | Q-NNN-a | Axis 11 (Network Footprint) — authored field for network-significant NPCs in locally-insignificant positions | High | Miri | | Q-NNN-b | Departure schedule model — departure windows as generator output for docked vessels (Ozzie requirement). **Note R5:** D-READY-13 resolves this — `scheduled_departure: Option` in Docked state is mandatory generator output. Recommend closing before sprint planning. | High | Tyre + Miri | | Q-NNN-c | Mobile environment social arc — structural representation of journey timeline (Ozzie requirement) | Medium | Miri + Gestalt | | Q-NNN-d | DramaDensity enum naming — Round 4 struct uses Quiescent/Active/Intense (3) vs. Round 3's Zero/Low/Medium/High/Flashpoint (5). Resolve before D-record. | Low | Tyre + Gestalt | | Q-NNN-e | ObjectTag vocabulary co-maintenance — shared between Miri's HeritageGrammarOverlay and Araminta's asset categorization | Medium | Miri + Araminta | | Q-NNN-f | Assassination difficulty synthesis — formal spec combining DerivedDistrictAnalysis baseline (Phase 1) with on-demand runtime computation (player-facing display only; game logic uses Phase 1 value) | Medium | Gestalt + Miri | --- ## Implementation Targets (From Participant Estimates) | Feature | Target version | Estimated effort | |---------|---------------|-----------------| | Phase 1 DistrictSkeleton (basic) | v0.3 | ~3 dev-days | | Phase 2 chunk fill with heritage grammar | v0.3 | ~4 dev-days | | MobileChunk (single-chunk vessels) | v0.3 | ~9.5 dev-days | | Vertical scale (z-bands, lazy loading) | v0.4 | ~7 dev-days | | DamageOverlay system | v0.4 | ~1.5 dev-days | | MobileChunk::Block (large ships) | v0.5 | Deferred | --- ## What This Generator Promises the Player From Ozzie's synthesis across all four rounds: > **The world is real and persistent.** Vessels exist when you're not on them. The crew you met last voyage is still there. The damage you caused is still there. > > **Every wall is a secret keeper.** WallBackside + BreachOnly means no tile is ever void. There's always something behind the wall. > > **Destruction has history.** DamageOverlay + trauma subtypes mean the aftermath of events is legible. You can arrive at a district and read what happened. > > **Height has meaning.** Vertical scale + view down from above. The building is itself a puzzle. Floor 30 has information floor 1 can't have, because floor 30 is harder to reach. > > **Every playstyle has guaranteed affordances.** The 3-tier guarantee system and the assassin lens guarantees mean the generator is making contracts it keeps. > > **The journey is content.** Mobile environments are social pressure cookers, not loading screens with chairs. > > **Insignificance is a lens, not a verdict.** A Minimal/Dormant district contains a complete small society. The playstyle is the starting assumption the world eventually corrects. --- *Workshop closes. Fourteen D-records ready for filing. Six Q-records raised for sprint work. The generator pipeline is locked.*