Files
jpmschweitzerandClaude Opus 4.6 42ee1f0a0e docs(workshops): generation cascade workshop — 4 rounds, D-194 through D-218
Four-round workshop (Gestalt, Tyre, Paula, Burnelli-Sheldon, Miri)
mapping the full generation pipeline from planetary heightmap to
walkable tile. 25 D-records produced. Ticket dependency chain for
Tier 0-4 implementation identified.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-03 20:18:17 +02:00

29 KiB
Raw Permalink Blame History

title, description, type, status, workshop, agent, round, created
title description type status workshop agent round created
Paula — Round 3: Narrative Structure at Regional and City Scale Political signals in regional maps, city orientation, road networks, settlement hierarchy, and naming strata — Phase 3 scope, above district level workshop active generation-cascade paula 3 2026-04-30

Generation Cascade — Round 3 (Paula)

Focus: Phase 3 — planetary/regional maps, city footprints, roads, and settlement hierarchy. The narrative/political signals that should exist above district level, and the data the generator needs to produce them.

Not revisited here: prosperity_index, perimeter_treatment, political_archetype, naming registers — these were accepted in Round 2. I'm building above them.

Not addressed here: heritage grammar, NPC population, culture files, social sites. Out of scope.


Framing the Scale

Round 2 was about a district being legible when a player walks through it. Round 3 is about what a player reads before they arrive — what the regional map, the city approach, and the road between settlements tells them about who controls what and why.

The political geography of a world is visible at altitude before it's visible on foot. Power writes itself into the landscape at every scale: which rivers are bridged (someone paid), which roads are wide (someone uses them heavily), which settlements have walls (someone threatened them), which settlements have two names (someone disputed them). The generator needs to produce those signals systematically, not accidentally.

These are not cosmetic. A player navigating a regional map is making decisions — where to go, what to expect — based on visible signals. If those signals are random noise, navigation is a guessing game. If they carry consistent political logic, the player reads the world.


1. Regional Maps: What Control Looks Like From Above

The Core Signal: TerritorialStatus

Before any city-level decomposition, each region on a planetary map should carry a territorial status. This is the highest-level political signal — it determines what infrastructure exists and how the generator populates the space between cities.

Proposed enum:

CoreTerritory       // firmly administered; full infrastructure
FrontierTerritory   // administered in principle; infrastructure sparse
ExtractiveZone      // controlled for a purpose; purpose-built infrastructure only
ContestZone         // multiple claimants; infrastructure in conflict
WildernessBuffer    // no administration; minimal infrastructure
AbandonedZone       // was administered; currently not

Derivation: TerritorialStatus is not authored per region. It is derived from:

  • Proximity to cities (distance to nearest city × that city's WorldTier)
  • Systems.db economic data (does any corporation have an active presence here?)
  • Whether the planetary body has a political_archetype that implies contested territory

Named planets in the setting should have their TerritorialStatus zones sanity-checked, not authored from scratch.

What Each Status Signals

CoreTerritory:
Roads are maintained at the governing city's standard. Settlement density is higher. The wilderness is legible — trails exist, they go somewhere. There may be checkpoints at territory edges but not within the core. The player understands: someone is in charge here, and they've organized the space.

FrontierTerritory:
Road quality degrades sharply at the edge of administered zones. Settlements thin out and become more purpose-built (outposts, not towns). Infrastructure exists where the administrative authority cares about something (a resource site, a transit route) and not elsewhere. The player understands: administration exists but is stretched thin.

ExtractiveZone:
Corporate or administrative infrastructure is excellent along the extraction corridor and nowhere else. The road from the depot to the mine is better maintained than the road from the mine to any settlement. Settlements in extraction zones exist to support the extraction, not as independent communities. The player understands: this space belongs to whoever is extracting.

ContestZone:
The most visually distinctive status. Signs of multiple authorities: doubled checkpoints at boundaries, infrastructure that changes quality at invisible lines, sometimes two roads between the same points (each authority built their own). Settlement names may conflict (see §5 on dual naming). The player understands: this space is fought over, and the fighting is visible.

WildernessBuffer:
No infrastructure other than geographic trails (rivers, passes). Any settlements are isolated and self-reliant. The silence of the map here is the signal — nothing built here means nothing worth controlling here, or territory that resisted control. The player understands: if you go here, you're outside the protected system.

AbandonedZone:
The most narratively loaded status. Infrastructure exists but is degraded or dead — roads that lead to ruins, bridges maintained badly, relay stations dark. The question this status always raises: what was here, and why did it stop being valuable? The player understands: something changed. The world has a past that isn't entirely gone.


2. City Political Geography: Before the Districts

Round 2 gave us political_archetype to drive district type distribution. But there's a prior question: how does a city sit in its landscape, and what does that tell you before you've zoomed in far enough to see districts?

FoundingOrientation

Every city was built around something. That something determines where the oldest district is, which direction the city grew, and where the decay gradient runs. Proposed enum for city-level (atlas/systems.db):

PortFacing      // founded on maritime/waterway trade; oldest district faces water
RailHeadFacing  // founded on transit convergence; oldest district faces the junction
ResourceFacing  // founded to service extraction; oldest district faces the mine/farm/well
DefenseFacing   // founded as fortification; oldest district faces a high point or natural barrier
AdminFacing     // founded as administrative center; radiates from government building outward

Why this matters for the generator: District type decomposition already uses settlement_pattern from systems.db. FoundingOrientation adds a directional signal — the generator knows which end of the city is oldest, and therefore which end is most decayed, most organic in layout, and most working-class. The city has a political gradient from old to new, and the direction of that gradient is not arbitrary.

Derivation: FoundingOrientation is mostly derivable from settlement_pattern (port, inland, etc.) + body.economic_role. It needs a sanity pass on named cities where the setting lore implies a specific history.

How political_archetype Shapes City Footprint

Round 2 established the five archetypes. Here I want to be concrete about what each archetype means for city shape before we decompose into districts — because that shape constrains the district layout.

CompanyTown:
The dominant corporate asset is not centered — it's at one end of the city (the resource-facing end or the port). Worker districts fill the space between the facility and the edge of nothing. There is no plaza, no civic center, no mixed-use heart. The city has a spine, not a center. The facility is the source; everything else is arranged in service of access to it. Transit infrastructure runs toward the facility, not outward toward other cities.

Generator implication: District decomposition places Industrial or Corporate Residential adjacent to the dominant facility end. Civic and Administrative districts are minimal and peripheral. City growth direction is away from the facility (workers pushed back from the asset).

AdminCapital:
The government complex is central, elevated if terrain permits, on the major artery intersection. Residential quality gradients radiate outward — the best residential is adjacent to the administrative center (proximity = status), the worst is at the urban fringe. Multiple well-maintained arteries converge on the administrative center (petitioners and officials both need access). The city has a center that asserts itself.

Generator implication: Administrative district occupies a central or elevated position. Road infrastructure is hub-and-spoke from that point. Residential quality (and by extension prosperity_index) decreases with distance from center.

FreePort:
No single center. Multiple competing centers of gravity — trading compounds, transit hubs, factional warehouses. The city is not organized around one institution but around the edges of many. Transit infrastructure is dense and well-maintained everywhere (commerce cannot tolerate bottlenecks). Prosperity and poverty intermix according to commercial logic, not spatial hierarchy: a rich trading house can sit adjacent to a destitute workers' barracks because that's where the docks are.

Generator implication: Multiple MixedUse and Transit districts. No dominant administrative core. Prosperity gradient is jagged, not smooth from center to edge. High perimeter_treatment variation between districts (some Gated compounds, some Open street markets, side by side).

Contested:
The most explicitly spatial archetype. There is a visible contested boundary inside the city — a street, a canal, a defunct rail line — that serves as a de facto border between two zones of control. Infrastructure quality changes abruptly at this line. On one side: high perimeter_treatment, Checkpoint or Gated districts. On the other: a different authority's version of the same. Dead space at the boundary: buildings that face both ways and belong to neither, or buildings that were destroyed and not rebuilt.

Generator implication: District decomposition places the highest political_archetype tension along a specific axis of the city, not randomly distributed. The contested boundary should be detectable as a feature before districts are even generated — it's a city-level geography question. Road infrastructure is duplicated or dead at the boundary axis.

OrganicGrowth:
No center. Multiple minor centers, none dominant. Infrastructure follows historical accident — the oldest road bent around a building that no longer exists; the street grid has four different orientations because four different periods of growth each imposed their own logic. Quality gradients are local, not city-wide: one neighborhood maintains itself, its adjacent neighborhood doesn't, and there's no political reason for the difference. The city resists legibility from above.

Generator implication: District decomposition produces high layout diversity (more Organic layout districts relative to other archetypes). Prosperity index varies locally rather than tracking a city-wide gradient. The FoundingOrientation is more ambiguous here — the city may have multiple founding nodes.


3. Road Networks as Political Artifacts

Roads are the most persistent political statements in a landscape. The question the generator needs to answer for every road is not just "does this road exist" but "who built it and why."

MaintenanceAuthority

Proposed field for road segments:

Administrative  // maintained by governing authority; quality proportional to distance from capital
Corporate       // maintained by a corporation; uniform quality within corporate territory, abrupt drop at edge
Communal        // maintained by settlements it connects; quality proportional to settlement prosperity
Trade           // maintained by traffic volume; quality proportional to commerce flow, not political importance
Abandoned       // was maintained; no longer is

Why this matters: Road quality tells the player who cares about a connection. An Administrative road from the capital is excellent near the capital and degrades at distance — that degradation is the visible expression of how far administrative power actually extends. A Corporate road has no gradient: it's uniformly good from facility to facility and then just... stops. The quality boundary is as sharp as a property line.

A Trade road through a politically marginal region can be excellent if commerce demands it — which is its own political signal. Commerce went where politics didn't bother to go.

Road Narrative Classes (derived, not authored)

The generator should produce road narratives from existing data:

Administrative corridor: Connects administrative capital to sub-settlements or resource sites it administers. Quality inversely proportional to distance from capital. Checkpoints may appear at territorial boundaries (where TerritorialStatus changes). The capital end is always best-maintained.

Corporate corridor: Connects corporate assets (depot → mine → processing → port). Maintained at corporate standard regardless of location. The quality drop at the corporate boundary is intentional — the corporation maintains only what it needs. These roads often skip the nearest town entirely, because the corporation does not need the town.

Trade route: Quality proportional to traffic volume, not political importance. Can be excellent in areas that administrative authority barely reaches, if commerce demands it. Trade routes often follow FreePort settlement chains. Notable: trade routes can outlast the political conditions that created them — an old trade route connecting a now-contested or abandoned city still shows its quality level from the era of its use.

Settlement track: Maintained by the settlement(s) it connects. Quality follows settlement prosperity — a working-class settlement has a working-class road. These roads are often the oldest in a region, because settlements predated highways. They follow terrain more closely (less engineering capacity), which makes them more winding.

Abandoned road: Quality in physical decline — cracked surface, overgrown margins, unmaintained bridges. But the road still exists, still goes somewhere, and what it connects tells a story about a different era's values. An abandoned corporate road through a WildernessBuffer region asks: what was here that the corporation abandoned?

Road Width as Compound Signal

Road width is already proposed in Round 2 as a function of DistrictType + prosperity_index. At the regional scale, it adds a third variable: MaintenanceAuthority.

  • Administrative roads near the capital: wide, boulevard-standard, even through poor areas — power signals itself through infrastructure spending that exceeds necessity
  • Corporate roads: wide enough for the heaviest vehicles the corporation operates, not wider
  • Communal/settlement tracks: width proportional to traffic type, without excess
  • Abandoned roads: whatever they were, now narrowed by encroachment

4. Settlement Hierarchy: What the Generator Knows About Non-City Settlements

The atlas shows cities. But cities don't exist in isolation — they exist in a landscape populated by smaller settlements that express their relationship to the nearest city. The generator needs to know what that relationship is.

The Full Hierarchy

Tier Population Generator treatment Narrative function
City 10,000+ Full district decomposition Current power — who's in charge, what they built
Town 1,00010,000 Single-district equivalent Economic dependency — what the city extracts and how it structures the relationship
Outpost 501,000 Purpose-typed single node Strategic ambition — where power is trying to reach, or holding
Waypoint <50 Infrastructure node, no district Control of movement — who manages the between-spaces
Rural structure Isolated Type-tagged single structure Individual economic actors; legible only through their road connection quality
Ruin/Abandoned site 0 Historical footprint What failed; what past valued that present no longer does

PoliticalTether

Every settlement below city-tier has a relationship to a city. This relationship determines road quality, economic dependency, and the settlement's vulnerability to change. Proposed field for sub-city settlements:

pub struct PoliticalTether {
    pub tether_city: CityId,
    pub relationship: TetherRelationship,
}

pub enum TetherRelationship {
    Administered,           // reports to city government; road maintained at city standard
    EconomicallyDependent,  // supplies city with goods; road maintained proportional to value of that supply
    Contested,              // claimed by this city and at least one other; double-maintained or abandoned roads
    Independent,            // de facto independent; locally maintained roads, no city investment
    Corporate,              // tethered to a corporation, not a city administration
    Abandoned,              // was tethered; tether city no longer exists or no longer functions
}

Derivation: PoliticalTether is derived from systems.db:

  • Distance and road quality to nearest city → probable tether_city
  • Systems.db economics data → which corporation operates in this zone → Corporate relationship
  • City political_archetypeCompanyTown implies most sub-settlements are EconomicallyDependent or Corporate

What PoliticalTether drives:

  • Road quality between settlement and its tether city
  • Naming: Administered settlements may inherit naming register from tether city; Independent settlements generate folk names; Abandoned settlements retain their last naming layer frozen
  • Settlement density in the region: Administered settlements cluster along administrative corridors; Corporate settlements cluster around corporate infrastructure; Independent settlements scatter without pattern
  • Ruin likelihood: when a CompanyTown tether city's dominant corporation leaves (derivable from economic data), its EconomicallyDependent and Corporate sub-settlements are ruin candidates

Ruins as Narrative Infrastructure

Abandoned sites deserve special treatment because they are the most politically loaded settlement type. A ruin is not an absence — it is a presence with an explanation gap.

The generator knows:

  • What the site was (previous TetherRelationship, previous settlement type)
  • Who abandoned it (economic change? corporate departure? military destruction?)
  • What road connects to it (road quality before and after abandonment era)

The player sees:

  • A site marked differently on the map (different marker type)
  • A road that leads to it — quality decayed but still there
  • No administrative infrastructure, but physical footprint

The gap between what the generator knows and what the player can read is the gameplay. The generator does not need to present the explanation. It needs to produce the spatial evidence and let the player interpret it.


5. Naming at Regional Scale: Political History as Strata

District-level naming registers (from Round 2) apply to spaces that a single authority controls now. Regional-scale naming is different: it carries sediment from every authority that ever claimed the region, because physical features outlast political systems.

How Naming Strata Work

Regional names accumulate in layers, with newer layers sometimes obscuring and sometimes coexisting with older ones:

Layer 1 — Geographic (oldest): The terrain feature gets named for what it is or where it is. Rivers, mountain ranges, plains — described in terms anyone on the ground could verify. This layer predates all recorded authorities and often predates settlement. It survives even through complete political turnover because travelers still need to refer to the mountain, and "the mountain" is still there.

Layer 2 — Claiming (authority-imposed): When an authority claims a region, they rename it. They impose commemorative names on previously-geographic features (the river becomes the "Founder's River") and assign administrative names to new territorial divisions. This layer signals historical dominance — if the geographic Layer 1 name has been fully replaced, the claiming authority has been in place long enough to normalize its naming.

Layer 3 — Functional (working): Roads, transit corridors, and industrial regions acquire functional names through use. "The Northern Highway." "Iron Corridor." These are rarely official origin — they emerge from workers, traders, and travelers who need to refer to a route and reach for what's obvious. Functional names persist because they're practical, not because they're endorsed.

Layer 4 — Contested (dual naming): A region with two names in active use — one official, one folk — signals that the previous authority's community still exists and uses the old name. This is the most politically charged naming state. The gap between official_name and common_name is a form of visible resistance.

DualNaming Field

For politically significant regions, roads, and major geographic features, the generator should support two name fields:

pub struct RegionalFeatureName {
    pub official_name: String,    // current authority's designation
    pub common_name: Option<String>, // folk/historical name if different
}

common_name is populated when:

  • TerritorialStatus is ContestZone or AbandonedZone (high residual naming conflict)
  • The region changed hands within a derivable historical period (from systems.db political history)
  • The region's political_archetype is Contested (dual names at city level too)

When official_name == common_name (or common_name is None): stable, settled territory. No active naming conflict. When they differ: the player is in disputed or transitional territory. The naming conflict is a gameplay signal without a tutorial prompt.

Regional Naming Patterns by Feature Type

Rivers: Geographic register primary. If a river is a political boundary (derivable from being on the edge of two TerritorialStatus zones), it may acquire an administrative name for that boundary function. Folk names for politically-boundary rivers tend toward the ironic or literal: "The Boundary," "The Divide," "No Man's Creek."

Mountain ranges: Geographic register. Exception: if a range is a resource site (mining, energy extraction), it acquires functional names for the working zones within it. The range as a whole keeps its geographic name; the specific peaks and passes get functional names if they're economically active.

Plains, basins, valleys: The most politically contested landscape type — this is where populations live and food grows. These regions carry all four naming layers most visibly. A valley may have a geographic name (the original description), a claiming name (whoever conquered it and built the administrative hub), a functional name (what it produces), and a common name (what the people who live in it call it, which may be the pre-conquest name). For generation: these regions should almost always have DualNaming when TerritorialStatus is CoreTerritory or ContestZone and the region has a population above a threshold.

Administrative regions/provinces: Almost always Commemorative naming at founding. The most politically volatile names — new authorities rename provinces as a political act. For generation: administrative region names should be Commemorative register, with common_name carrying the pre-renaming folk/geographic form when the change is recent enough to generate resistance.

Roads: Follow the MaintenanceAuthority and naming register rules:

  • Administrative roads: Commemorative register for named highways (named after political figures); numbered for secondary roads (authority imposed a number system)
  • Corporate roads: corporation name as prefix; functional or numbered suffix
  • Communal/Trade roads: Functional register; sometimes Folk for the most-used routes
  • Abandoned roads: retain their last naming layer, frozen at the time of abandonment — which is itself a temporal signal to the observant player

6. Connecting Regional Signals to District Generation

The fields proposed here propagate downward. This is how Phase 3 inputs drive Phase 5 (district generation):

TerritorialStatus
  → affects road quality standards the generator applies
  → affects settlement placement density
  → informs naming layer conflict (DualNaming)

FoundingOrientation (city-level)
  → determines which direction is "oldest" for city decomposition
  → district prosperity index gradient runs from founding orientation outward
  → oldest districts more likely Organic layout, lower prosperity

PoliticalTether (sub-city)
  → determines road maintenance class for connections
  → informs whether sub-city settlement generates ruins or remains active
  → informs naming register of sub-city settlement name

DualNaming (regional/road/city)
  → propagates to district names when TerritorialStatus = ContestZone
  → district naming register shifts toward Folk/Geographic when the city's official
    naming is in tension with common use

The key principle: regional political signals are inputs to district-level generation, not independent outputs. If a city is in a ContestZone, its districts should reflect that — higher perimeter_treatment variance, more contested naming, higher likelihood of Organic layout even in theoretically-planned districts. The generator doesn't need to be told twice. It reads from the regional data and produces district data that is consistent with it.


7. Proposed New Fields Summary

Field Applies to Type Derivation Authoring needed?
TerritorialStatus Region/zone Enum (6 values) Distance to city × WorldTier + econ data Sanity check for named planets
FoundingOrientation City Enum (5 values) settlement_pattern + economic_role Sanity check for named cities
MaintenanceAuthority Road segment Enum (5 values) Road endpoint types + econ data None
PoliticalTether Sub-city settlement Struct (city_id + relationship) Distance + econ data None
RegionalFeatureName.official_name Region/road/feature String Generator Named features authored
RegionalFeatureName.common_name Region/road/feature Option<String> From historical naming conflict conditions None for generated; authored for named

All six are derivable from data that already exists or is being proposed. None require large authoring tasks. Named planets/cities need a sanity pass.


8. Open Questions for Round 3

ID Question Priority
OQ-R3-P1 TerritorialStatus derivation: is the formula distance to nearest city × WorldTier sufficient, or does it require additional parameters from systems.db? Does Burnelli-Sheldon have economic inputs that should feed this? HIGH
OQ-R3-P2 FoundingOrientation and PoliticalTether — are these stored in atlas/markers.json, or derived at runtime from systems.db? If stored: who authors the sanity-check pass for named cities, and what does that pass require? HIGH
OQ-R3-P3 DualNaming: is common_name a generator output (seeded based on territorial conflict conditions), or an authored layer only for named locations? If generator output, what triggers its population? MEDIUM
OQ-R3-P4 Road segments are currently implicit (markers.json has road topology but not road-segment-level fields). Does adding MaintenanceAuthority require a schema change to markers.json road data? Tyre's input needed. MEDIUM
OQ-R3-P5 AbandonedZone settlements as ruins: the generator knows what the site was (from historical tether data), but does it know why it was abandoned? Is that derivable from economic data (corporation left → corporate-tethered settlements abandoned), or does it require a separate authored flag? LOW
OQ-R3-P6 Phase 3 data storage: do TerritorialStatus zones get stored as polygon/voronoi regions in a new table, or as tags on city markers? A region between cities is not currently a first-class object in the data model. HIGH

9. Cross-Referencing Accepted Round 2 Proposals

For completeness: the six fields above are additions to the Round 2 locked proposals. The relationship is:

  • prosperity_index (Round 2) receives its city-level baseline from the city's position within its TerritorialStatus zone. A city in ExtractiveZone has different prosperity baseline distribution than one in CoreTerritory.
  • perimeter_treatment (Round 2) at district level is informed by the city-level PoliticalTether relationships — a city surrounded by Corporate-tethered sub-settlements has a different perimeter treatment profile than one surrounded by Administered towns.
  • political_archetype (Round 2) is now grounded in city FoundingOrientation — the archetype shapes district distribution, and FoundingOrientation shapes the spatial direction that distribution runs.
  • Naming registers (Round 2) are now the bottom tier of a three-tier naming system: regional naming strata (§5) → city-level political_archetype naming → district-level naming register.

Paula — Round 3. Written 2026-04-30.