Files
settled-reach/docs/workshops/generator-architecture/round-3-notes.md
T
jpmschweitzerandClaude Opus 4.6 9a5c9c4408 docs(docs): add frontmatter to generator-architecture workshop
Standardized YAML frontmatter on all 38 files with title, description,
type, workshop, agent, and round fields.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 23:40:37 +01:00

38 KiB
Raw Blame History

title, description, type, status, workshop, agent, round, created
title description type status workshop agent round created
Round 3 Notes Qatux compilation of all round 3 participant outputs and open questions workshop archived generator-architecture 3 2026-02-27

Generator Architecture Workshop — Round 3 Notes

Compiled by: Qatux (Documenter) Date: 2026-02-27 Source files:

  • docs/workshops/generator-architecture/gestalt-round3.md
  • docs/workshops/generator-architecture/tyre-round3.md
  • docs/workshops/generator-architecture/miri-round3.md
  • docs/workshops/generator-architecture/miri-round3-supplement.md
  • docs/workshops/generator-architecture/araminta-round3.md
  • docs/workshops/generator-architecture/nigel-round3.md
  • docs/workshops/generator-architecture/ozzie-round3.md

Overview

Round 3 is the convergence round. Nine lead directives were addressed. Five Round 2 open questions were resolved. The canonical DistrictSkeleton Rust struct was produced by Tyre. The pipeline architecture was formally stated by Gestalt. The generator is now structurally sound through v0.3, with v0.4 features (skyscrapers, full mobile chunks) scaffolded but deferred.

One structural tension carries into Round 4: vessel architecture (Tyre's entity-carried MobileChunk vs. Nigel's instanced district). This must be resolved before maritime and transit templates are authored.


Section 1: Round 2 Open Questions — Resolution Status

OQ-R3-A: Block Grid Rotation / "Breathing"

Resolved. Tyre delivers the structural answer Ozzie demanded.

D-094 defines data sizes, not geometry. A DistrictLayoutMode enum governs block placement:

enum DistrictLayoutMode {
    Grid,
    Organic { placements: [[BlockPlacement; 4]; 4] },
}
struct BlockPlacement {
    offset: (i16, i16),      // ±16 sim tiles per axis
    rotation_steps: u8,       // 03 in 15° increments (max 45°)
    street_width_factor: f32, // 0.752.0
}

In Organic mode: streets are the negative space between shifted/rotated blocks. Adjacent districts can have different layout modes. The transition strip handles orientation mismatch. The 45° cap is hard (beyond that, tile-based pathfinding breaks).

Araminta provides the visual grammar for organic districts: 45° and angled wall tile variants, increased landmark density (12 vt vs 16 vt), wider street width range (414 vt), face-defined blocks. grid_orientation: f32 on DistrictSkeleton propagates rotation to chunk fill.

Miri provides the generative logic: grid = power imposed (Commission/Syndic planning, Arc heritage, Era 3 development). Organic = power negotiated (Iron/Dust/Tide settlement, Era 1 pioneer foundations, maintenance/residential zones). Within a district, blocks can have different street_geometry assignments based on era and heritage.

Ozzie confirms: Araminta's seven anti-grid visual techniques are camouflage, not structure. Tyre's organic mode provides the structural answer. Ozzie accepts this as satisfying her demand.

Outstanding note: Tyre's cap is 45° rotation steps. For truly curving streets (Ozzie's "streets that curve because terrain required it"), the visual impression of curve comes from 45° jogs at intervals. True smooth curves are not achievable in the tile engine at v0.1v0.3. Angular organic layouts, not flowing curves.


OQ-R3-B: Triangle Purpose Taxonomy

Resolved. Gestalt proposes the enum; Tyre confirms it as implementation-trivial.

enum TrianglePurpose {
    Investigation, Economic, Social, Political, Tactical, Mundane,
}

Tactical is the new addition for Round 3: the triangle whose three nodes are the target, their protector/guardian, and an informant or witness. Any NPC who is a potential assassination contract target is the central node of a Tactical triangle.

Triangles carry purposes: Vec<TrianglePurpose> — a triangle can serve multiple purposes. Mundane triangles (workplace rivalry, neighbour disputes) are always present in inhabited districts. The scenario instantiation system activates triangles based on which purposes are relevant to the player's current engagement.

Implementation: one Vec<TrianglePurpose> field on TriangleAssignment. ~20 lines of code.


OQ-R3-C: Maritime / Wilderness Informal Zone

Resolved. Miri redefines the informal zone for non-institutional settings.

In institutionally-governed urban settings, the informal zone is defined by institutional absence (outside Meridian coverage). In non-institutional settings, the informal zone must be redefined as outside the community social field.

Three informal zone types for non-urban settings:

  • social_permission — convention covers this space (what happens on the boat is the crew's business)
  • physical_distance — community observation doesn't reach here without intent (the far fields in off-season)
  • utilitarian_cover — normal function provides plausible presence (in the barn checking the animals)

Heritage root determines which type appears: Frost → physical_distance; Tide/Dust → social_permission; Iron → utilitarian_cover.

Wilderness is the extreme case: the whole terrain is low-coverage, no Meridian equivalent. Nigel confirms: "the wilderness itself is the informal zone." The generator satisfies the Tier 1 Informal Zone guarantee for wilderness settings automatically — the biome flag counts.

Generator tag: terrain_informal_zone (Gestalt's term), required per Full-complexity non-urban district.


OQ-R3-D: Vessel Architecture

Partially resolved — architectural split requires Round 4 decision.

Two structurally different proposals were submitted:

Tyre (entity-carried MobileChunk):

struct MobileChunk {
    entity_id: EntityId,
    data: ChunkData,
    interior_size: (u16, u16),
    world_position: WorldPosition,
    movement: MobileMovementState,  // Docked | InTransit | InterSystem
    access_points: Vec<MobileAccessPoint>,
}

The chunk is a real world entity. In InTransit, the exterior is a scrolling visual buffer (not loaded terrain tiles). In InterSystem, only the interior exists.

Nigel (instanced district): The vessel is a district instance generated at journey-start, loaded as normal district data, terminated at arrival. Visual movement is client-side animation (parallax background on window tiles). No coordinate system complexity; full D-094 compatibility. Tiles don't move.

These are fundamentally different architectures with different simulation implications. Tyre's model enables vessels to exist as world entities between voyages (docked at port, visible on the map). Nigel's model is cheaper and simpler but vessels only exist during voyages.

Both agree on: vessel interiors use the same NPC simulation system; passenger manifests are seeded at journey-start; temporal pressure (arrival deadline) is core gameplay.

Miri supplement provides cultural grammar for both models regardless of architecture: trains as BoundedLinear setting type with car-sequence social grammar; spaceships as institutionally-suspended environments; transit_social_modifier that adjusts trust-building rate, privacy level, and information flow.

For the record: this decision must be made before maritime and vessel template authoring begins. It affects the streaming model, the world map, and the NPC simulation tick.


OQ-R3-E: Horizon as Generator Landmark

Resolved. Araminta delivers the mandatory reservation rule.

Rule: Coastal districts must include a "horizon view" landmark reservation in the DistrictSkeleton — a mandatory negative-space view corridor of minimum 8 visual tiles unobstructed from street to water.

This reservation prevents the generator from placing a warehouse at the water's edge. The view must exist. The palette guarantees the feeling; the reservation guarantees the moment.

Gestalt confirms: the horizon view corridor is a Tier 2 guarantee for any district with TerrainType::Water on one boundary.

Ozzie confirms: the horizon is not negotiable. It is one of the game's primary Wow Moments.


Section 2: Directive Coverage — All Nine

Directive 1: Assassin Lens

Fully addressed. Team consensus: the assassin reads existing spaces differently, not new spaces.

Gestalt extends the 7 spatial archetypes with an assassin column (see below) and adds 4 assassin-specific spatial guarantees:

  • A-1 Elevated Vantage: Full-complexity district must have ≥1 position at z=1+ with LOS cone covering the primary Traffic Chokepoint
  • A-2 Egress Multiplicity: Every district entry point has ≥2 independent egress routes with no shared secondary chokepoint
  • A-3 Temporal Opacity Window: Full-complexity districts have ≥1 day-phase period where Traffic Chokepoint observer density drops below crowd-cover threshold
  • A-4 Non-Institutional Access Route: At least one path from district entry to Social Hub not crossing an access tier above Semi-Private (this serves all playstyles)

These are derived properties from existing spatial configuration, not new spaces. The guarantee audit checks whether the spatial configuration satisfies them.

Miri adds cultural depth: observational density × information liquidity × aftermath engagement = assassination_difficulty: low/medium/high/extreme (derived from society profile, not a new field). Heritage root table provides specific operational implications:

  • Frost: low observation, low liquidity, rigid pattern, low aftermath — paradise for operators, intelligence nightmare
  • Dust: maximum observation, high liquidity, high aftermath — community is both intelligence source and witness
  • Arc: low social surveillance during operation, INSTITUTIONAL RIGOR investigation afterward — the most dangerous aftermath

Nigel adds replayability dimension: sightline geometry varies per seed (quarter merge patterns), crowd patterns vary (seeded schedules + entanglement), escape topology varies (block backside quarter structure), timing windows vary (NPC routine seeding). Hard requirement flagged: archetype placement must vary in angular position per seed, not just distance from center. Otherwise experienced players overlay a mental template.

Ozzie names 4 assassination generation sins:

  1. Omnidirectional witness coverage (must produce blind spots)
  2. Escape routes that all converge (must produce multiple independent exits)
  3. No vertical option (must guarantee ≥1 elevated access per district)
  4. No crowd rhythm (NPC density must vary by day-phase)

Directive 2: Destructible Boundaries

Fully addressed. Multi-layer solution across architecture, worldbuilding, and visual grammar.

Gestalt establishes the generator contract:

  • All tile data pre-exists (no on-the-fly generation on breach)
  • TileBehindState for every wall: StructuralFill | HiddenRoom | Interstitial
  • AccessTier::BreachOnly as a first-class access tier
  • Guarantee: Every Full-complexity district must contain ≥1 zone classified BreachOnly — a space with no non-destructive access route

Tyre provides the implementation:

enum WallBackside {
    AdjacentSpace, StructuralFill, ServiceVoid, ChunkBoundary, Exterior,
}

No tile is ever "void" (ungenerated). 90% of wall tagging is automated; 10% is author choice. ServiceVoid (1-3 tiles of pipe/conduit) is visually interesting and supports modified LOS/object-passing.

Miri supplement provides cultural/worldbuilding layer:

behind_boundary:
  content_type: private_domestic | authority_operational | economic_storage |
                structural_original | abandoned_era | active_concealment
  era: era1 | era2 | era3
  cultural_sensitivity: low | medium | high | extreme
  contents_hint: null | infrastructure | records | inventory | persons | evidence
  breach_consequence:
    immediate: null | alarm | NPC_response | environmental_hazard
    social: none | community_sanction | faction_response | vendetta_trigger

Era 3 wall in active use with no official record = someone sealed something recently and deliberately.

Araminta provides 3 visual cases: adjacent room (ragged edge, revealed floor, narrowed LOS cone), infrastructure cavity (color-coded conduits at z=1.5: power #c8b840, water #4888c8, data #b8b8b8), perimeter breach (floor underwall strip exposed). Wall infrastructure layer pre-generated, invisible until breach.

Ozzie names the principle: "Blank doesn't mean empty. Blank means unoccupied right now." Wear marks, recent use evidence, a torn piece of fabric on a conduit — these are the generator's promise that spaces were lived in. The historical detail layer must be uniform across the entire space, not concentrated near intended access points.


Directive 3: Vertical Scale

Fully addressed. Deferred to v0.4 for implementation, but architecture is complete.

Tyre delivers:

  • z_levels: u8 on DistrictSkeleton (no hard cap; engineering recommendation: 64)
  • MultiBlockReservation extended with z_levels: u8 for skyscraper footprints
  • FloorZone { z_level, zone_type, zone_palette, access_tier } for per-floor assignment
  • ZLevelLoadState: Loaded | Skeleton | Ungenerated — lazy loading (only current floor + adjacent filled)
  • Stairwells and elevators as vertical spines through the building (tile positions preserved across floors)
  • Target milestone: v0.4 (~7 dev-days)

Gestalt adds system-level design:

  • Z-bands (floor groupings with similar social function) as the generator's planning unit — not floor-by-floor
  • Vertical access tier gradient: ground = most public; top = most restricted (monotonically non-decreasing)
  • Guarantee: Every tall structure (z_band_count ≥ 3) must have a roof zone classified Insider or BreachOnly accessible by non-obvious route

Miri supplement provides heritage-derived vertical social hierarchy:

  • Corporate: bottom = labor / mid = operations / top = executive
  • Commission-institutional: bottom = public services / top = secure records (inverted from corporate)
  • Iron-heritage occupation: horizontal solidarity networks per floor; outsider is immediately noticed
  • Cross-floor Tactical triangle: NPC A (floor 3) + NPC B (floor 17) + NPC C (floor 42) — player needs vertical access to work the triangle

Araminta provides visual grammar:

  • 4 height tiers (S1 = 1-3 floors, S2 = 4-10, S3 = 11-30, S4 = 30+)
  • Shadow is the primary height signal: 240 visual tiles, hardness scales with tier
  • Rooftop vocabulary by tier: S1 simple parapet; S2 HVAC clusters; S3 complex mechanical arrays; S4 antenna farm
  • Station interior: penumbra width (ambient occlusion) replaces directional shadow

Ozzie names the payoff: in top-down, vertical gives you the view DOWN. The floor-above perspective = detective overview, assassin planning view, tycoon seeing the whole market district at once. Generation sin: identical floors with just different lock levels.


Directive 4: Dynamic World Modification

Fully addressed. Generator is immutable; modifications layer on top.

Core principle (Tyre + Gestalt in full agreement): The generator produces the world as it was. Modifications are a delta layer applied at render time.

Tyre provides ChunkMutations:

struct ChunkMutations {
    tile_overrides: Vec<TileOverride>,
    structural_changes: Vec<StructuralChange>,
    placed_objects: Vec<PlacedObject>,
    removed_objects: Vec<ObjectId>,
}

Pending mutations can be applied to unvisited districts (stored at PreparedDistrict level, applied immediately at chunk fill time).

Gestalt provides the broader WorldStateDelta model covering all game state changes: StructuralDamage, WallBreached, DoorStateChanged, ObjectModified, TileTypeChanged, AccessTierChanged, NpcRemoved. For large-scale events: soft re-generation via original_seed XOR event_seed.

Miri provides the cultural response layer: trauma events intensify culture, not transform it. Heritage roots determine community response patterns. Active modification state decays toward baseline at heritage-root-dependent rates. NPC pattern weight shifts post-trauma: ANCHOR/WITNESS/REMNANT increase; normal distribution shifts.

Nigel frames it as replayability: baseline → playthrough divergence is the key mechanism. Storyteller-activated structural fragilities produce caused destruction, not random damage. Player-caused destruction is private geographic knowledge (the hole in the wall exists only in your playthrough). Fragility tags should be present in <5% of infrastructure chunks per district.

Araminta provides 5 destruction visual stages (Active → Fresh Aftermath → Stabilized → Reconstruction → Healed Scar) with specific hex values at each stage. Key visual: open-sky tile #c8d8f0 at 100% brightness = "roof removed, open to sky" — the only floor-layer element brighter than ambient. Also affects gameplay: LOS changes dramatically in open-roofed areas.


Directive 5: Entity-Carried Chunks as Core

Addressed. Architectural split requires resolution (see OQ-R3-D above).

Cultural grammar is settled regardless of architecture choice (Miri supplement):

  • Trains (BoundedLinear): class-sequence social grammar. Temporal pressure. Witness compactness. Social compression.
  • Spaceships (between systems): institutionally suspended environment. No Commission jurisdiction. No external communication. Social roles strip. Heritage roots determine behavior in suspension (Frost: doubles down on privacy; Tide: ship community expands; Salt: grey-market window opens).
  • Universal: transit_social_modifier adjusts trust-building rate (up), privacy level (down), enforcement level (down), internal information flow (up), external information flow (blocked until arrival).

Ozzie names the principle: mobile environments are social pressure cookers. The journey is the content. The space changes social state over time.


Directive 6: Grid Breathing Both

Resolved. See OQ-R3-A above.

Summary: DistrictLayoutMode: Grid | Organic. Block offsets and rotations up to 45°. Streets as negative space in organic mode. Angular landmark at grid rotation seams. Heritage roots predict which mode a district uses. Mixed within district via block-level street_geometry assignment.


Directive 7: Palette Granularity

Resolved. Modifier system, not more base palettes.

Tyre provides the data structure:

struct ZonePalette {
    base: BasePalette,
    modifiers: Vec<PaletteModifier>,
}
enum PaletteModifier {
    EconomicFunction(EconomicModifier),  // industrial farming vs rustic farming
    Era(Era),
    Faction(FactionModifier),
    HeritageTint(HeritageRoot),
    ClimaticCondition(Climate),
}

Araminta expands to 8 base terrain types (T1 temperate farmland + T2 industrial/greenhouse as the two farmland types that directly address the lead directive) and provides 3 modifier axes: heritage root (structure material character), economic tier (condition/density), era (material generation) — plus optional faction overlay. Result: ~40-50 strongly differentiated visual feels; 200+ meaningfully distinct combinations.

Miri provides the conceptual model: terrain type = material vocabulary (what exists here); heritage root = organizational grammar (how it's arranged, decorated, related). Full table of 10 heritage roots × organizational principle × visual signature. Base game requirement, not DLC. DLC expands variant assets; the grammar rules are core.


Directive 8: Not Every Place Serves Every Playstyle

Fully addressed. Team converges on: mismatch is content, not failure.

Gestalt formalizes with a 3-tier guarantee system:

  • Tier 1 Universal (all inhabited): Social Hub + Informal Zone + Encounter Corridor
  • Tier 2 Full-only (Full-complexity): Traffic Chokepoint + Institutional Space + Insider Space + Economic Node (with terrain-aware expressions)
  • Tier 3 Conditional (parameter-dependent): Elevated Vantage, Egress Multiplicity, Temporal Opacity Window, Economic Asymmetry Signal, Power Gradient Visibility

Guarantee audit is now conditional-aware. A Minimal-complexity farmstead gets 3 checks. A Full-complexity urban hub gets up to 11.

Miri provides the playstyle affinity matrix: 15 setting types × 5 playstyles, rated Primary/Secondary/Weak/Poor. "Poor" doesn't block a playstyle — it means the generator didn't budget for it. Players who insist on weak-affinity playstyles find sparse, unsatisfying affordances.

Nigel names the deeper principle: playstyle mismatch reveals what kind of world this is. Early engagement friction is discovery, not failure. The only hard requirement for Full-complexity districts: entry points for all playstyles (the 7 archetypes). Not equal depth — entry points.

Ozzie confirms: the farming settlement forces the assassin to use different skills at a different pace. The mismatch makes you understand the world. Generation sin: making the backwater too empty to have any social architecture. A settlement with 80 people who've been there 40 years should have denser social graphs per capita than a transit hub with 2000 transient workers.


Directive 9: Insignificant as Social Lens

Fully addressed. Miri delivers the five-lens analysis.

Miri demonstrates same backwater (Stone/Tide, ~150 people, 40 years, one tavern, no faction presence) through five lenses:

  • Investigation: Everything is visible. Challenge is not finding information — it's that the information knows about you. Twist: the insignificant backwater is where someone goes to HIDE. One anomalous resident who shouldn't be here.
  • Tycoon: Land rights, water rights, one trading route. The community is captive. Economic maneuvers are conducted entirely in public.
  • Dating sim: No anonymity phase — you're known by day three. The romantic play is not "meet and discover" but "earn belonging."
  • Political drama: Personal-scale coalition politics at human scale. No institutional mediation. Win Aia's family, lose Torval's approval.
  • Assassination: Locally-significant backwater has Poor affinity by default. Exception: a network-significant person gone to ground here. The hardest assignment.

Minimum content for even Moderate-complexity insignificant districts: one anomalous presence (investigation hook), one economic chokepoint (tycoon hook), one sustained social gathering (dating sim hook), one contested allocation decision (political hook), one visitor of uncertain identity (assassination hook, latent). One NPC with sufficient complexity can provide all five simultaneously.

Ozzie states the principle: the playstyle is the starting assumption the world eventually corrects. Players discover that what they were looking for is a simplification of a richer reality. That is asymmetric awareness.


Section 3: SignificanceTier / ComplexityTier / DramaDensity — Resolution

Substantially resolved. One naming/placement question remains for Round 4.

What the Three Parameters Are

All three participants agree on the conceptual structure:

Concept What it measures Type
Network significance How important this location is in the galaxy Static, set at system generation
Generator budget How much content the generator produces here Static, set at Phase 1
Active narrative intensity How much drama the storyteller is firing Dynamic, storyteller-modified at runtime

The Naming Dispute

Participant Network significance Generator budget Active narrative
Gestalt SignificanceTier (RETIRED) ComplexityTier DramaDensity
Tyre SignificanceTier (RETAINED) ComplexityTier DramaDensity (NOT on DistrictSkeleton)
Nigel WorldTier ComplexityTier DramaDensity

What the Canonical Struct Says

Tyre's §6.4 (the canonical DistrictSkeleton) retains significance: SignificanceTier as a struct field. DramaDensity is explicitly not on the DistrictSkeleton — it is runtime storyteller state.

Gestalt's §6.5 retires SignificanceTier and absorbs it into ComplexityTier + network position metadata, with DramaDensity as a runtime parameter.

Resolution

Substance: all three participants agree. The DistrictSkeleton carries two static parameters (network significance + generator budget). DramaDensity is NOT a generator output; it lives in runtime storyteller state.

Naming and placement: Tyre's struct is the implementation reference. His SignificanceTier enum captures network significance. Nigel's WorldTier is a cleaner name for the same concept. This is an open naming question for the D-record.

The key constraint relationship (all three agree): network significance constrains ComplexityTier ceiling; ComplexityTier constrains DramaDensity maximum; DramaDensity is always ≤ ComplexityTier capacity.


Section 4: Canonical DistrictSkeleton — Status

Produced. Tyre §6.4 provides the authoritative Rust struct.

New Fields Added in Round 3

To the struct previously defined in Rounds 12:

// Added in Round 3:
significance: SignificanceTier,    // network position (naming TBD)
layout_mode: DistrictLayoutMode,   // Grid | Organic
setting: SettingType,              // merged SettingGeometry + TerrainType

// On MultiBlockReservation (vertical scale):
z_band_count: u8,
floor_count: u8,
z_band_zones: Vec<ZoneDefinition>,
vertical_corridors: Vec<VerticalCorridorSpec>,

// On SocialSitePlacement.triangles:
purposes: Vec<TrianglePurpose>,    // on TriangleAssignment

// On ZonePalette:
modifiers: Vec<PaletteModifier>,   // palette modifier system

// Added by Gestalt §10:
vertical_structure: VerticalStructure,  // Flat | Medium | Tall | Skyscraper
breach_only_zones: Vec<ZoneId>,         // ≥1 for Full-complexity districts

What Is NOT on the DistrictSkeleton

  • DramaDensity — runtime storyteller state (all three agree)
  • assassination_difficulty — derived descriptor on SocietyProfile (not skeleton-level)
  • transit_social_modifier — on MobileChunk, not static district skeleton

Memory Budget

Tyre estimates ~8-14 KB per district with all Round 3 additions. 300 worlds × ~6 districts × ~12 KB = ~21 MB total for all skeletons. Trivial.


Section 5: Items Ready to Become D-Records

The following decisions have achieved full or near-full team consensus and are ready to be formally recorded. Listed in priority order.

D-READY-1: DistrictLayoutMode — Grid and Organic Support Tyre + Araminta + Miri + Nigel + Ozzie all agree. The D-094 hierarchy defines data sizes, not geometry. DistrictLayoutMode: Grid | Organic { placements } with BlockPlacement { offset, rotation_steps (max 45°), street_width_factor }. Adjacent districts can have different modes. Implementation cost: ~3 dev-days.

D-READY-2: Guarantee Tier System — Universal / Full-Only / Conditional Gestalt defines the 3-tier system. All participants apply it. Tier 1 (all inhabited): Social Hub + Informal Zone + Encounter Corridor. Tier 2 (Full-complexity): Traffic Chokepoint, Institutional Space, Insider Space, Economic Node. Tier 3 (conditional): Elevated Vantage, Egress Multiplicity, Temporal Opacity Window, etc. Replaces the flat 11-check audit with conditional-aware logic.

D-READY-3: TrianglePurpose Enum Gestalt + Tyre agree. TrianglePurpose: Investigation | Economic | Social | Political | Tactical | Mundane. Tactical = Target + Protector + Informant/Witness (assassination context). Triangles carry Vec<TrianglePurpose>. ~20 lines of code.

D-READY-4: WallBackside / TileBehindState Gestalt (TileBehindState: StructuralFill | HiddenRoom | Interstitial) and Tyre (WallBackside: AdjacentSpace | StructuralFill | ServiceVoid | ChunkBoundary | Exterior) are complementary, not contradictory. Combined: every wall tile is tagged; no tile in a generated chunk is ever ungenerated void; AccessTier::BreachOnly is a first-class access tier; Full-complexity districts guarantee ≥1 BreachOnly zone.

D-READY-5: Dynamic Modification via Overlay (Not Re-generation) Tyre (ChunkMutations) + Gestalt (WorldStateDelta) agree completely. Generator state is immutable after Phase 1. Modifications are overlays. Pending mutations at PreparedDistrict level for unvisited districts. Soft re-generation for large-scale events via original_seed XOR event_seed.

D-READY-6: ZonePalette Modifier System Tyre + Araminta agree. ZonePalette { base: BasePalette, modifiers: Vec<PaletteModifier> }. 8 base terrain types (T1 rustic farmland, T2 industrial farmland are the split that addresses the lead directive). 3 modifier axes: heritage root, economic tier, era. Optional faction overlay.

D-READY-7: Horizon View Corridor as Coastal Guarantee Araminta + Gestalt agree. Mandatory negative-space view corridor (≥8 vt unobstructed) in coastal district skeleton. Tier 2 guarantee for any district with Water terrain on one boundary. Reservation prevents warehouse placement at waterfront.

D-READY-8: Assassin Lens Spatial Guarantees (A-1 through A-4) Gestalt defines; Miri, Nigel, Ozzie confirm. Four derived guarantees (Elevated Vantage, Egress Multiplicity, Temporal Opacity Window, Non-Institutional Route). These are derived properties from existing spatial configuration — not new spaces tagged for assassins.

D-READY-9: Heritage Grammar Overlay for Non-Urban Palettes Miri + Araminta agree (cross-domain). Terrain type = material vocabulary; heritage root = organizational grammar. 10 heritage roots × organizational principle. Base game, not DLC. Modifier flags at chunk fill time.

D-READY-10: Non-Urban Informal Zone Typology Miri: informal zone redefined from institutional absence to outside community social field. Three types: social_permission / physical_distance / utilitarian_cover. Generator tags per type; heritage root determines which appears.

D-READY-11: Vertical Scale Architecture Tyre + Gestalt + Miri agree. z-levels u8 field; practical cap 64; lazy z-level loading; FloorZone per-floor assignment; z-bands as generator planning units; vertical access tier gradient; roof as mandatory discovery zone for tall structures. Target: v0.4.

D-READY-12: Trauma Events as EraModification Subtypes Miri: ModificationType::TraumaEvent with subtypes (PhysicalDestruction, EconomicDisruption, PoliticalShock, ViolenceEvent, MigrationShock) + cultural_aftermath: HeritageRootResponse. Active modification state decays at heritage-root-dependent rates.


Section 6: New Open Questions for Round 4

OQ-R4-A: Vessel Architecture Decision (Tyre vs Nigel)

The two proposals are architecturally incompatible:

  • Tyre: MobileChunk as entity-carried ChunkData. Vessels exist as world entities. Docked state connects to static chunks. In-transit uses scrolling exterior visual buffer. Cost ~9.5 dev-days.
  • Nigel: Instanced district model. Vessel is a district generated at journey-start, lifespan at arrival. Visual movement is client-side animation. No coordinate complexity. Cheaper and simpler but vessels don't exist between voyages.

Questions to resolve: Do vessels need to be persistently world-present (docked at port, visible from the dock)? Or is it acceptable for vessels to only exist during voyages? This decision drives the streaming model, world map representation, and NPC simulation behavior.

OQ-R4-B: SignificanceTier Naming and Scope

Gestalt retires SignificanceTier; Tyre retains it; Nigel proposes WorldTier. The substance is agreed (three orthogonal parameters). The D-record needs a canonical name and scope definition. Tyre's struct has the implementation vote. Does the team accept significance: SignificanceTier or rename to world_tier: WorldTier?

OQ-R4-C: Assassination Difficulty Descriptor Placement

Miri proposes assassination_difficulty: low/medium/high/extreme as a derived descriptor from society profile. Open question: is this stored on the DistrictSkeleton (Phase 1 output), on the society profile itself, or computed on demand by the assassination gameplay system? Miri asks Gestalt for the integration point.

OQ-R4-D: Heritage Grammar Overlay Representation

Miri's 10-row heritage grammar table needs encoding for chunk fill consumption. Miri asks Araminta: per-heritage modifier objects that chunk fill applies, or lookup tables within terrain palette assets? This affects both the authoring workflow and the chunk fill pipeline.

OQ-R4-E: "One NPC, Five Lenses" — Does the 10-Axis Model Cover It?

Miri's minimum content requirement for insignificant districts (one anomalous presence, one economic chokepoint, one gathering rhythm, one contested allocation, one visitor of uncertain identity) could in theory be one NPC. Does the current 10-axis NPC model already support providing all five playstyle entry hooks simultaneously? Miri asks Nigel.

OQ-R4-F: Soft Re-Generation Coherence

Gestalt's soft re-generation via original_seed XOR event_seed for large-scale events — does XOR-based reseeding produce visually/historically coherent results? Or does it produce results that look random rather than caused? Ozzie's principle is that destruction must be caused, not random. The cultural response model (Miri) requires that the aftermath feel like an intensification of existing character. Does XOR-seeded regeneration preserve this, or does it need a more structured approach (e.g., partial re-stamp with damage parameters)?


Section 7: Cross-Cutting Themes

1. The Information Landscape Is the Game

Every playstyle — investigation, tycoon, dating sim, political drama, assassination — is fundamentally an information game. The generator's job is to produce a world where information is asymmetrically distributed, where discovering it requires skill and effort, and where the same information means different things depending on what lens you're using. The generator doesn't produce five games. It produces one information landscape that five lenses read differently.

This is the Round 3 synthesis of what the game is. Miri's formulation: "one NPC, five lenses." Ozzie's formulation: "asymmetric awareness — players discover that what they were looking for is a simplification of a richer reality."

2. The Generator Produces Capacity; the Storyteller Fires It

A consistent architectural boundary emerged and hardened across all participants:

  • Generator state (Phase 1 + Phase 2): immutable after production. Deterministic from seed. The capacity of the world — what's possible here.
  • Storyteller state (runtime): DramaDensity, triggered modules, activated triangles, fragility explosions. The utilization of the world — what is happening here right now.
  • Delta layer (post-generation): modifications applied by simulation events. The history of the world — what has happened to it since.

These three layers compose at render time. The generator never re-runs.

3. Organic vs Grid Is a History Statement

Miri's worldbuilding insight, confirmed by all: grid = power imposed; organic = power negotiated. The layout mode of a district is a legible historical record of who built it and under what conditions. Commission-planned stations are grid. Pioneer settlements are organic. Old quarters that predate the Commission are organic in a way that tells you they were here before the plan. This is not just visual variety — it is architectural history as information.

4. Vertical Is Information Asymmetry Made Spatial

The skyscraper is a compressed information gradient. Lower floors have information about what's happening up high (the lobby worker knows who enters). Upper floors have information about what's happening below (the executive commissioned it). The vertical access challenge is the access tier system made physical. Getting to floor 30 is earning the information that lives there.

Ozzie names it: in top-down, vertical gives you the view DOWN. The detective's overview. The assassin's planning position. The tycoon seeing the whole district. This is a distinct gameplay affordance that flat districts cannot produce.


Section 8: Qatux Observations

For the record:

  1. The canonical DistrictSkeleton is Tyre's §6.4. Gestalt's §10 is the design specification (field names and semantic intent); Tyre's §6.4 is the implementation specification (Rust syntax and types). They are compatible with one exception: SignificanceTier vs. retired. The D-record should canonicalize the name.

  2. DramaDensity belongs in simulation state, not the generator. All three participants who addressed the reconciliation (Gestalt, Tyre, Nigel) agree on this. The DistrictSkeleton carries the capacity ceiling. The storyteller system carries the current value.

  3. The vessel architecture decision is blocking. Miri supplement provides cultural grammar for both models. Araminta's coastal palette is ready for maritime templates. Nigel's instanced district model is architecturally cleaner. Tyre's entity-carried model is more powerful but more complex. This must be decided in Round 4 — maritime and transit templates cannot be authored until the architecture is chosen.

  4. Ozzie's 4 assassination generation sins are testable properties. They are not design principles but verifiable spatial guarantees: omnidirectional witness coverage, converging escape routes, no vertical option, no crowd rhythm. These can be added to the guarantee audit as conditional checks.

  5. Miri's behind_boundary descriptor (cultural sensitivity + social consequence) is a cross-domain requirement. It requires coordination between: Tyre (WallBackside implementation), Miri (cultural sensitivity values per heritage root), Araminta (visual grammar for breach consequences), and Gestalt (BreachOnly guarantee and scenario instantiation). This is the kind of cross-domain dependency that needs a D-record to anchor it before templates are authored.

  6. The 45° organic rotation cap should be explicitly stated in the D-record. It is a hard technical constraint, not a design preference. Beyond 45°, tile-based pathfinding produces unacceptable artifacts. Players expecting flowing curves will not get them from the tile engine — they will get angular organic layouts.


Next: Round 4 (if required) should resolve: vessel architecture decision (OQ-R4-A), SignificanceTier naming (OQ-R4-B), and whether the canonical struct is formally signed off for D-record production. The pipeline is architecturally sound. What remains is settling the naming disputes and the one structural split.