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>
35 KiB
title, description, type, status, workshop, agent, round, created
| title | description | type | status | workshop | agent | round | created |
|---|---|---|---|---|---|---|---|
| Gestalt Round 2 — Playstyle-Agnostic Pipeline | Expanded systems design beyond investigation to support all playstyles equally | workshop | archived | generator-architecture | gestalt | 2 | 2026-02-27 |
Generator Architecture Workshop — Round 2: Gestalt
Role: Systems Design / Gameplay Loop Requirements Date: 2026-02-27 Workshop: Generator Architecture (#562)
Framing: Acknowledging the Lead Directive
The lead directive lands correctly. My Round 1 analysis was framed entirely through the investigation lens. That was useful for establishing what the generator must never fail to produce — but it was insufficient for a game that promises to support tycoon play, dating sim / social relationship play, and political drama as equally valid first-class experiences.
Let me break down what this means mechanically, then propose a pipeline that serves all of them.
The central insight: the spatial guarantees from Round 1 are not investigation-specific. They're human-social-activity-specific. A surveillance chokepoint is also a trade route bottleneck, a political rally point, and a serendipitous encounter location. An informal zone is also a grey market space, a tryst location, and a dissident meeting point. The 7 guarantees from Round 1 were named wrong — they were investigation vocabulary for playstyle-agnostic spatial archetypes.
This round I'm going to rename them, show how they serve every playstyle, add the guarantees that investigation didn't require, and propose a concrete two-phase pipeline that Tyre, Miri, and Ozzie's inputs have informed.
1. The Revised Spatial Guarantee Set: Playstyle-Agnostic Archetypes
Drop the investigation vocabulary. Here are the 7 spatial archetypes every generated district must contain, with their multi-playstyle readings:
Archetype 1: Traffic Chokepoint
Physical definition: A spatial bottleneck where significant NPC traffic must pass and is observable from a fixed adjacent position. By playstyle:
| Playstyle | What it does for you |
|---|---|
| Investigation | Surveillance position — observe tells, track movements, spot anomalies |
| Tycoon | Trade route leverage — who controls the choke controls the flow of goods |
| Dating / Social | Serendipitous encounter point — this is where you "happen to run into" someone |
| Political | Campaign territory — public visibility, speech platform, constituency pressure |
Archetype 2: Informal Zone
Physical definition: A zone with degraded institutional coverage, low ambient traffic, suitable for private or unofficial activity. Includes maintenance corridors, service back-alleys, rooftop access, below-street passages. By playstyle:
| Playstyle | What it does for you |
|---|---|
| Investigation | Quiet zone — ring operations, confidential source meetings, dead drops |
| Tycoon | Grey market space — off-ledger deals, unofficial distribution, tax-adjacent commerce |
| Dating / Social | Privacy space — the rendezvous location, the conversation that can't happen in public |
| Political | Back-channel space — the meeting that isn't on the record |
Note for the generator: This archetype must be generated deliberately, not incidentally. It is the space that official documentation doesn't account for (Miri's C-5 insight). Every district must have at least one, and it must be findable without being guided to.
Archetype 3: Social Hub
Physical definition: A D-025-compliant functional cluster (4-8 NPCs, 15-40 tile connected space, internal sightlines) that is publicly accessible without institutional credentials. By playstyle:
| Playstyle | What it does for you |
|---|---|
| Investigation | Rapport-building stage — trust tier progression, gossip extraction |
| Tycoon | Networking hub — find suppliers, hear rumors of demand, recruit partners |
| Dating / Social | Romance venue — relationship initiation, shared leisure, social graph expansion |
| Political | Influence gathering — read public mood, identify allies, make your presence felt |
Archetype 4: Institutional Space
Physical definition: A zone where official credentials, position, or authority determine access — and where institutional actors can be leveraged, pressured, or circumvented. By playstyle:
| Playstyle | What it does for you |
|---|---|
| Investigation | Authority access zone — show credentials, pull records, compel cooperation |
| Tycoon | Licensing / permit space — register trade routes, dispute cargo claims, bribe inspectors |
| Dating / Social | Official encounter context — the formal interaction that begins some relationships |
| Political | Power center — submit proposals, apply pressure, climb the institutional hierarchy |
Archetype 5: Insider Space
Physical definition: A zone where community membership, employment, or social standing (not official credentials) determines access. By playstyle:
| Playstyle | What it does for you |
|---|---|
| Investigation | Insider access zone — ring operations visible only to those who belong |
| Tycoon | Guild / union / cooperative — preferred trade terms, insider pricing, loyal suppliers |
| Dating / Social | Close network space — the bar where the friend group drinks, the community event |
| Political | Party / faction HQ — where the organized power lives |
Archetype 6: Economic Node
Physical definition: A space where goods, services, or information with economic value change hands. Includes markets, logistics points, trade counters, informal exchanges. By playstyle:
| Playstyle | What it does for you |
|---|---|
| Investigation | Evidence trail — cargo manifests, transaction logs, the money that follows the crime |
| Tycoon | Primary profit opportunity — buy low, sell high, establish routes |
| Dating / Social | Shared activity — shopping together, market browsing, the informal economic life |
| Political | Leverage point — economic actors are political actors; control trade = control votes |
This is the archetype my Round 1 analysis missed. It's present in v0.1 (the Terminal is an economic node) but I didn't name it as a required generator guarantee. It's non-negotiable for tycoon play.
Archetype 7: Encounter Corridor
Physical definition: A space primarily designed for movement — transit corridors, promenades, public routes — where encounters happen but nobody lingers. By playstyle:
| Playstyle | What it does for you |
|---|---|
| Investigation | Observation route — follow NPCs, track patterns, sense when routines break |
| Tycoon | Supply chain link — goods move through here; disrupting/controlling it is leverage |
| Dating / Social | Casual crossing point — daily routine overlaps, the route you "happen to share" |
| Political | Visibility territory — seen being there communicates political alignment |
What I'm dropping from Round 1: "Three-path investigation structure (A/B/C)" as a standalone guarantee. In the multi-playstyle framework, this becomes: at least 3 distinct engagement vectors must exist for each playstyle. For investigation these are pattern/physical/social. For tycoon they're supply/demand/regulation. For social/dating they're work-meeting/social-meeting/crisis-meeting. The generator doesn't need to know which playstyle the player chose — it needs to produce enough structural variety that at least 3 paths exist for any approach.
2. New Playstyle-Specific Guarantees
The 7 archetypes above are the floor. These additional guarantees serve playstyles the 7 archetypes don't fully address:
Tycoon-Specific: Economic Asymmetry Signal
The district must contain at least one indicator of economic imbalance — something being undersupplied, oversupplied, restricted, or priced unequally across zones. This is the tycoon's opening opportunity. In v0.1 terms: aftermarket lattice components are undersupplied because Commission regulation creates artificial scarcity. The generator must produce an analogous economic tension in every district.
Implementation: The society profile's economic_pressure field (Miri's ingredient D) directly determines what the asymmetry is. tight-margin + prohibition-economy produces the Sova scenario. Different pressure combinations produce different economic tensions. The generator surfaces these as locatable economic nodes with discoverable demand gaps.
Social/Dating-Specific: Temporal Encounter Window
The district must produce at least one NPC whose daily routine creates predictable, repeatable encounter opportunities outside of work context. This is the "regulars at the bar at 1800 every day" pattern. The tycoon has stable trade windows; the romance player needs the equivalent. Implementation: This is a property of NPC routine generation (Stage 5), but the generator must guarantee the SPATIAL CONDITION: a social hub with defined temporal peaks (morning rush, evening gathering, night shift crowd). The D-031 day-phase system already provides this — social hubs must be tagged with active phases during skeleton generation.
Political-Specific: Power Gradient Visibility
The district must make its power topology spatially legible — who has authority over whom, and where that authority is exercised, must be readable from the space without metagame knowledge. Implementation: Araminta's zone palette and lighting temperature gradient already does this for institutional vs. social zones. The generator must additionally guarantee that at least one NPC occupies a visible authority position (SYSTEM pattern per Q-033) whose institutional relationship to other social sites is observable. The detective already gets this through the Commission; the political player needs the equivalent civic power holder.
Non-Urban Specific: Natural Chokepoint
For non-urban templates (farmland, wilderness, maritime, ski resort, beach): The Traffic Chokepoint archetype takes a different form — a mountain pass, a harbor entrance, a river ford, a seasonal trail. These are geographically determined rather than architecturally determined.
Generator requirement: When SettingGeometry = Rural / Maritime / Wilderness, the infrastructure stage replaces architectural corridor planning with terrain chokepoint identification. The spatial archetype is the same; the generator mechanism is different.
3. Two-Phase Pipeline Proposal
The lead directive specifies: world/district generation is a background prep pass (spare CPU core). Local area generation is the fine-tuned interactive system. These are architecturally separate.
Here is the concrete two-phase pipeline, integrating Tyre's data structures, Miri's worldbuilding inputs, and the multi-playstyle requirements:
PHASE 1 — Background Prep (Asynchronous, no player interaction required)
These stages can run while the player is already in a different location. Output is cached; player never waits.
Stage 0: World Significance Tier
Input: Master world seed, galaxy topology
Output: Per-location SignificanceTier + SettingGeometry
| Tier | What gets generated | Social density | Active scenarios |
|---|---|---|---|
| Center-stage | Full district generation, all phases | High | Multiple |
| Regional | 1-4 districts, full phases | Medium | 1-2 |
| Backwater | 1 district or partial, condensed | Low | 0-1 |
| Waypoint | Tier 3 only — spatial skeleton, no NPCs | Minimal | None |
| Insignificant | Not generated until player approaches | — | — |
This is not a Phase 1 computation — it's the classification that governs how much Phase 1 runs. A waypoint location gets a skeleton only. An insignificant place doesn't exist until the player gets close.
SettingGeometry enum (the lead directive requires this be first-class):
Station → zone-and-level grid
Urban → terrain-influenced spread
Rural → low-density farmland/town spread
Maritime → coastal topology with water interface
Wilderness → minimal infrastructure, scattered POIs
Specialized → resort, research, military (single economic function)
Stage 1: Society Profile Assembly
Input: World seed, system political classification, heritage ingredients (Q-032)
Output: SocietyProfile struct
This is Miri's full ingredients menu: Heritage Roots (blend weights), Settlement Motivation, Economic Function, Economic Pressure (1-2), Drift Stage, Absence Parameters, Faction Presence tiers, tech-level 3-axis profile.
Key outputs that feed downstream stages:
social.privacy_level→ access tier thresholdstrust.building_rate→ NPC trust progression speedeconomic_pressure→ economic asymmetry typemeridian_coverage_baseline→ from tech-level axis 1active_phases→ which day phases have which social activity (D-031 integration)cultural_tags→ for NPC name generation, ambient text flavor
On the serde question (Miri's OQ-5): The society profile YAML must map to a Rust struct via serde. The nested structure (heritage with blend weights, faction presence with per-faction tiers) is manageable — Rust's serde_yaml handles this. The critical requirement is that blend weights sum to 1.0 and absence parameters serialize as Option<T> (NULL = None). Tyre should confirm the specific schema contract.
Stage 2: District Skeleton Generation
Input: Society Profile, SignificanceTier, SettingGeometry, political classification
Output: DistrictSkeleton (Tyre's data structure, extended with significance_tier and setting_geometry fields)
This stage is where the multi-playstyle spatial archetypes are guaranteed. The skeleton generator runs a spatial guarantee audit after producing a candidate skeleton:
For each of the 7 spatial archetypes:
Does the candidate skeleton contain at least 1 spatial site of this type?
If NO → regenerate or augment the skeleton until the guarantee is satisfied
Additional per-playstyle checks:
Economic node present? (required for significance_tier ≥ backwater)
Temporal encounter window in social hub? (active_phases set?)
Power gradient visible? (SYSTEM-pattern NPC slot in institutional space?)
Informal zone explicitly flagged? (not inferred from access tier)
This audit is the enforcement mechanism. Without it, the generator can technically satisfy the schema while producing an unplayable district.
On edge bleed (lead directive): The skeleton's access_points and corridors must extend to district edges as open connection slots. Neighboring districts resolve these connections when their own skeletons are generated. Blocks at district edges can be tagged cross_district: true on their social sites — these sites serve the district but are spatially adjacent to the neighbor. This is what creates the bleeding effect: a bar on the edge of the Transit District and the Residential Core serves both populations. It appears in both skeletons as a shared reference.
Historical event modifier pass: After the base skeleton is generated, Miri's historical events apply as modifications:
- Founding crisis → push drift_stage for affected zones, add blocked/repurposed blocks
- Economic disruption → modify economic_pressure, introduce
abandoned_stateblocks - Institutional incursion → modify faction_presence_tier, add/remove authority zones
These modifications produce Ozzie's "historical palimpsest" — the skeleton records not just the current state but the modifications that produced it. When the L-shaped building in ChunkLayout is LShape { corner: NE, cause: emergency_extension }, the cause field is available for environmental storytelling at chunk fill time.
Stage 3: Block Planning
Input: DistrictSkeleton, economic tier, era tags (from era stratification)
Output: 16 BlockSkeletons with ChunkLayouts, edge contracts, era tags, landmark slots
Era tags are assigned at block level here (confirming Araminta's rule). The block planning stage also:
- Reserves multi-block footprints (gate terminals, parks, government buildings)
- Assigns landmark slots (1 per district quadrant, per Araminta's §5.3)
- Produces edge contracts for each chunk face (Tyre's Option A recommendation)
- Assigns density parameters (filled quarters per block by economic tier, per Araminta's §3.3)
PHASE 2 — Local Area Generation (On-Demand, Player-Proximate)
These stages run as the player enters loading radius. They produce the tile-level and NPC-level content.
Stage 4: Chunk Fill
Input: BlockSkeleton, edge contracts, D-025 template library, society profile, era tags Output: Tile data for each 64×64 sim tile chunk
This is where Tyre's 500ms budget applies. Template stamping is the mechanism — select a template from the library appropriate to the zone/era/access-tier, stamp it into the quarter configuration, then decorate procedurally within the template's variation space.
Araminta's visual constraints apply here in full (zone palette, lighting temperature, saturation hierarchy, LOS anchor intervals, facade variation budget).
Quarter fill for unclaimed space: Nigel's flavor structure categories + Araminta's empty quarter types need unification. I'm proposing they're the same system with two vocabularies:
| Araminta type | Nigel category | Generator selection driver |
|---|---|---|
| Open plaza | Settlement indicator (seating clusters) | Social/community cultural heritage |
| Service alley | — (implicit) | Always present at ratio, not selected |
| Courtyard / garden | Settlement indicator (container gardens) | Heritage roots with outdoor-culture tradition |
| Vehicle/cargo staging | — (logistics function) | Economic function = logistics/manufacturing |
| Structural gap (undeveloped) | Economic stress (abandoned equipment) | Economic pressure = survival-gap or economic disruption event |
| — | Informal economy (market stalls) | Economic pressure = tight-margin or prohibition-economy |
| — | Faction presence (Commission kiosk) | Faction presence tier = standard or comprehensive |
The critical addition: Flavor structure type does feed NPC generation. A market_stall quarter increases the probability of OPERATOR-pattern NPCs in the adjacent social site's population. A commission_kiosk quarter increases SYSTEM-pattern NPCs. A settlement_indicator (shrine) quarter increases ANCHOR-pattern NPCs. This answers Ozzie's OQ-3 — yes, what fills a quarter has downstream social consequences.
Stage 5: NPC Instantiation
Input: Chunk fill (role slots), triangle assignments from DistrictSkeleton, society profile, world seed Output: Generated NPCs with D-024 10-axis configurations, assigned roles, triangle connections, D-029 entanglement assignments
NPC instantiation runs after chunk fill because the role slots and their spatial context must exist before NPCs can be validly assigned to them. The role slot (e.g., "this is a HANDLER-pattern position in the logistics hub social site") constrains which axis combinations are generated.
This resolves my Round 1 OQ-A: I was wrong about needing full co-resolution of population and zoning. The feedback loop I identified is already handled by the skeleton stage:
- Skeleton stage: triangle TOPOLOGY is locked (role types, conflict structure, staging ground requirements) — this ensures staging grounds exist
- Chunk fill stage: role SLOTS are placed in the correct spatial positions
- NPC instantiation: axis VALUES are generated to fill role slots
No feedback loop required. The skeleton guarantees that "a secret-holder NPC needs access to a restricted zone" by including a restricted zone in the skeleton's social site configuration for that template. The NPC instantiation then generates an NPC whose Secret axis is appropriate for that role.
REVISED position (OQ-A): Zoning → Skeleton (triangle topology + role types) → Block Planning → Chunk Fill (role slots in space) → NPC Instantiation (NPC values). Sequential, no feedback loop. The skeleton stage's role-type specification is the mechanism that guaranteed staging grounds without requiring simultaneous resolution.
Stage 6: Scenario Instantiation
Input: NPC population, Tier 1 module pool draw (D-023), world seed Output: Active scenario config, entanglement assignments, evidence placement, active triangle configurations
This is the final step that makes the district "live" as an investigation/tycoon/social/political space. The entanglement pattern (D-029) is seeded here — which 20% (variable per seed) of NPCs are entangled. Evidence placement is seeded here. Active triangles are activated here.
For tycoon play: the economic asymmetry signals (economic node contents, demand gaps, price differentials) are set in this stage. The "who controls what" question in economic space is answered here.
For political play: the power topology (which institutional NPC reports to which, what's up for contest, where alliances can shift) is configured in this stage.
4. On Seed Architecture (OQ-2 from Round 1 Notes)
The lead says seeds are solved: single master seed, don't over-engineer. Endorsing this position.
Single master seed derives all sub-seeds deterministically. Same seed + different character = same world with different lenses. This is the correct design — it makes the "two playthroughs of the same seed" comparison a first-class experience (Nigel's comparison test, my D-027 criterion 2 goal). The player chose to play the same world from a different angle. They should discover exactly that.
For the pipeline: each stage receives derive_seed(master_seed, stage_id, location_id) → deterministic sub-seed. No per-stage seed parameters. The seed architecture is solved at the hash function level.
5. Non-Urban Templates and Insignificant Places
The lead directive requires the architecture to handle: farmland, wilderness, secluded towns, ocean, boats, ski resorts, beaches.
These don't break the pipeline — they parameterize it differently.
The key parameters that change for non-urban settings:
| Parameter | Urban (station) | Rural / Wilderness | Maritime |
|---|---|---|---|
| Block density | High (12-16 filled quarters) | Low (2-6 filled quarters) | Variable (coastal vs. open water) |
| Social hub type | Bar, restaurant, forum | Rural tavern, community hall, farm cooperative | Harbor tavern, ship crew quarters, fish market |
| Traffic chokepoint | Architectural corridor | Geographical feature (pass, ford, gate) | Harbor mouth, dock access, tide-dependent route |
| Meridian coverage | Standard to comprehensive | Sparse to absent | Absent on water, sparse on shore |
| NPC routine pattern | Shift-based (industrial) | Seasonal / agricultural | Tide-based / weather-dependent |
| Economic node | Logistics terminal, market | Farm output, resource extraction | Harbor trade, catch market |
| Informal zone | Maintenance corridor | Forest edge, ravine, cave | Below-deck, hidden cove, underwater |
The generator handles all of these through SettingGeometry as a first-class input. The pipeline stages run the same logic; the input parameters shape what's generated at each stage.
For specialized settings (ski resort, beach):
- These are
SettingGeometry::Specializedwith a single primary economic function (recreation/tourism) - Social hubs are themed (lodge, beach bar, equipment rental as informal economy)
- The institutional space is smaller (ski patrol office, lifeguard station) but must exist
- The informal zone is the spaces off the maintained routes (off-piste terrain, after-hours areas)
Insignificant places are handled by the significance tier system (Stage 0). A waypoint gets a Tier 3 spatial skeleton only — traversable space with environmental storytelling baked in, but no NPC simulation. These are the spaces that "exist because the geometry requires them to," not because they host drama. They're the breathing room that makes the center-stage locations feel like islands in a wider world.
6. Responding to Tyre's Technical Constraints
On hierarchy depth: Accepted. Quarters are generation-time layout constraints, not hierarchy levels. Four levels (Region/District/Block/Chunk) is correct.
On edge contracts: Option A (edge contracts) is correct and essential for the district-edge bleed the lead requires. The CorridorSpine in the DistrictSkeleton should explicitly model cross-district continuity — a corridor that exits the district boundary records its target access point in the neighboring district.
On the district skeleton data structure: Tyre's DistrictSkeleton needs three additions for multi-playstyle support:
significance_tier: SignificanceTier— governs how much of Phase 2 runssetting_geometry: SettingGeometry— governs what spatial archetypes are appropriateguarantee_audit: GuaranteeAuditResult— records which of the 7 archetypes are satisfied and where (makes the audit inspectable for validation)
And a modification: SocialSitePlacement.triangles should carry not just TriangleTemplate (which NPC types conflict) but triangle_purpose: TrianglePurpose — an enum that records what the conflict is FOR (investigation/economic/political/social), allowing the scenario instantiation stage to activate relevant triangles based on active playstyle context.
On chunk fill budget: Template stamping approach is correct for v0.2. One addition: the flavor structure assignment (Stage 4) should be pre-computed at block planning time (Stage 3) and stored in the BlockSkeleton, so chunk fill can read flavor_structure_type from its BlockSkeleton rather than computing it. This reduces per-chunk computation.
On the Transit District as ground truth: Fully endorsed. The validation deliverable is: hand-authored DistrictSkeleton + 64 ChunkDatas for the Transit District, validated against the guarantee audit (all 7 archetypes satisfied, all 3 multi-playstyle engagement vectors verified for investigation, tycoon, and social play simultaneously). If it satisfies all three lenses, the schema is correct.
7. Responding to Miri's Worldbuilding Inputs
On society profile as first-class data structure: Confirmed and extended. The society profile feeds Stage 1 (pre-pipeline) and is passed through the entire Phase 1 pipeline. Every downstream stage receives the society profile as a parameter, not just the abstract outputs from it.
On cultural variation producing mechanical variation: Fully endorsed. The mechanism I'm adding: social.privacy_level from Miri's society profile maps directly to access_tier.* thresholds in the DistrictSkeleton's social sites. A high-privacy culture (Frost-dominant) produces more semi-private zones and slower trust-building windows at the same social site type. Same "bar" template, different mechanical behavior.
On era stratification: Era tags live at block level (Stage 3), as Araminta confirmed. I'm adding that era tags also record the REASON for era stratification — specifically, whether a block's era differs from the district norm due to a historical event modifier. era: Era2, era_cause: corporate_merger tells the chunk fill stage to use era-2 materials AND to place visible seams/contrasts that suggest the building was constructed in two phases.
On grey economy as negative space: The Stage 2 guarantee audit explicitly checks for informal_zone: present. This zone is not generated from amenities or zoning — it's generated from the infrastructure stage as an absence in the official map. The generator must model what's missing, not just what's placed.
8. Responding to Ozzie's Fan Concerns
On Second Station Syndrome: The multi-playstyle expansion actually solves this more thoroughly than investigation-only would. If the investigation-only player has learned "bar is always northwest," the tycoon-focused player might have shaped the district's economic node distribution differently. But more importantly: the social topology (who's in conflict, who's in power, what's the grey economy structure) varies by seed more than the spatial topology. The skeleton is never "the same shape wearing a different hat" — the shape is determined by the social topology, not the other way around.
On quarters feeling caused, not random: The LShapeCause enum I proposed in Stage 2 is the mechanism. The generator doesn't produce L-shaped buildings randomly — it produces them because emergency_extension (an addition was forced by a blocked demolition), acquisition_boundary (two buildings merged under new ownership), or organic_growth (gradual expansion over time). At chunk fill time, these causes manifest as visual evidence: a material seam in organic_growth, a slightly different era tag on the added portion in acquisition_boundary. The player may not consciously read the cause, but they feel "this shape makes sense here."
On quarters producing social variation: Confirmed, with the flavor-structure-to-NPC-affinity link I described in §3's chunk fill stage. Market stall quarter → OPERATOR-pattern NPC affinity. This makes the choice of flavor structure have downstream social consequences, not just visual ones.
On historical palimpsest: Miri's era stratification + historical event modifier pass + my era_cause addition together produce this. The generator records history as a sequence of modifications, not just a current state. The chunk fill stage can read the full modification history and express it in the tiles.
On density contrast (the rhythm: crowded market → narrow corridor → sudden atrium): This is produced by the combination of Araminta's density parameter (§3.3) and the landmark slot reservation (§5.3). The generator ensures density contrast exists within a district — a landmark multi-block structure is always adjacent to smaller-scale blocks, creating the density inversion Ozzie wants. This must be a guarantee, not a coincidence.
Generator rule I'm adding: Adjacent blocks in a district must not all have the same density tier. The block planning stage must enforce density alternation — if block (2,2) is high-density, at least one of its 4 orthogonal neighbors must be medium or low density.
9. Minimum Viable District — Multi-Playstyle Version
Round 1's MVD was investigation-scoped. Here's the universal MVD that serves all four playstyles simultaneously:
| Archetype | Physical form | Inv | Tycoon | Social | Politics |
|---|---|---|---|---|---|
| Traffic Chokepoint | Transit node or architectural corridor | ✓ | ✓ | ✓ | ✓ |
| Informal Zone | Maintenance spine or off-route passage | ✓ | ✓ | ✓ | ✓ |
| Social Hub | Bar or community gathering space | ✓ | ✓ | ✓ | ✓ |
| Institutional Space | Authority access zone | ✓ | ✓ | — | ✓ |
| Insider Space | Workplace or community insider zone | ✓ | ✓ | ✓ | ✓ |
| Economic Node | Market or logistics point | — | ✓ | — | ✓ |
| Encounter Corridor | Promenade or transit route | ✓ | — | ✓ | ✓ |
| Plus: ≥2 active social triangles | Seeded social conflict | ✓ | ✓ | ✓ | ✓ |
| Plus: ≥1 temporal encounter window | Day-phase social peak | — | — | ✓ | — |
| Plus: ≥1 power gradient signal | Visible authority NPC | ✓ | — | — | ✓ |
| Plus: ≥1 economic asymmetry signal | Demand/price gap | — | ✓ | — | ✓ |
| Plus: Density contrast (adjacent blocks ≠ same tier) | Visual rhythm | ✓ | ✓ | ✓ | ✓ |
Count: 7 archetypes + 4 additional guarantees = 11 total checks in the guarantee audit. If a generated district passes all 11, it is playable for all four primary playstyles.
10. Summary: Pipeline Stages with Multi-Playstyle Outputs
[Pre-pipeline]
World Significance Tier + Setting Geometry → governs how much generation runs
Society Profile (Miri's 6-category ingredients) → feeds everything downstream
[PHASE 1 — Background Prep]
Stage 1: Society Profile Assembly
Outputs: privacy_level, trust.building_rate, economic_pressure, meridian_coverage_baseline,
active_phases, cultural_tags, faction_presence_tiers
Serves: All playstyles (cultural foundation)
Stage 2: District Skeleton Generation
Outputs: DistrictSkeleton + guarantee audit (11 checks passed)
Includes: historical event modifier pass, LShape causes, cross-district edge connections
Serves: Investigation (surveillance topology), Tycoon (economic nodes),
Social (encounter windows), Politics (power gradient)
Stage 3: Block Planning
Outputs: 16 BlockSkeletons + edge contracts + era tags with causes + landmark slots
Includes: density alternation enforcement, flavor structure pre-assignment
Serves: All playstyles (physical navigation, density contrast)
[PHASE 2 — Local Area, On-Demand]
Stage 4: Chunk Fill
Outputs: Tile data, applied flavor structures with NPC-affinity tags
Includes: zone palette, era materials, LOS anchors, facade variation
Serves: All playstyles (spatial readability)
Stage 5: NPC Instantiation
Outputs: Generated NPCs with 10-axis configs, role assignments, triangles
Includes: NPC affinity from flavor structure types, society profile behavioral mods
Serves: All playstyles (the human texture)
Stage 6: Scenario Instantiation
Outputs: Active scenarios, entanglement pattern, evidence placement,
economic asymmetry specifics, political power topology
Serves: Investigation (entanglement), Tycoon (economic opportunity),
Social (relationship status), Politics (power configuration)
Open Questions for Round 3
OQ-R2-A: Triangle Purpose Taxonomy
I proposed triangle_purpose: TrianglePurpose (investigation/economic/political/social) in SocialSitePlacement. This needs formal definition. Tyre to confirm whether this adds implementation complexity, or whether the existing TriangleTemplate struct can carry purpose tags.
OQ-R2-B: Guarantee Audit as Formal Schema
The 11-check guarantee audit I've proposed should become a validated runtime check, not just a design document item. Every generated DistrictSkeleton should serialize its audit results. This supports validation (Tyre's test fixture proposal) and debugging.
OQ-R2-C: Maritime and Wilderness Navigation
The Traffic Chokepoint archetype works for all setting geometries. But for wilderness/maritime, the "informal zone" mechanic changes — there's no "maintenance corridor." What's the wilderness equivalent? I propose terrain_informal_zone (a geography-defined sheltered space — cave, ravine, hidden cove) that satisfies the same guarantee. This needs Miri's input on what wilderness informal zones look like culturally.
Gestalt — Round 2 complete. Position is clear: the 7 archetypes serve all four playstyles simultaneously; the pipeline is two-phase with a 6-stage internal structure; population ordering question is resolved (sequential, no feedback loop); the guarantee audit is the enforcement mechanism. Ready for Round 3 convergence.