Files
settled-reach/docs/design/systems-framework-revision-miri.md
T
jpmschweitzerandClaude Opus 4.6 e8263e209e refactor(data): rename Krenn to Van Maanen's Star
System S-057 assigned to real star GJ 35 (Van Maanen's Star, DG white
dwarf at 13.9 ly). Renamed across all content, server code, docs,
decisions, wiki lore, and config files. 224 files updated.

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

44 KiB
Raw Blame History

Star Systems Framework — Critical Revision

Author: Miri Status: Post-lead-reversal revision document Created: 2026-03-13 Purpose: Full revision in response to the lead's reversal of the conspiracy framing. Rewrites the secession narrative, reframes Perpetuals, addresses all five of Gestalt's mechanical gaps under the new framing, adjudicates Gestalt's column cuts, and produces an updated column spec.


Part 1: Reversal Acknowledgment — What the Lead Has Changed

Let me be precise about what has changed and what it requires me to give up.

The previous position ("open door, rigged room") argued that the founding Perpetuals pre-built the Reach's institutional architecture specifically to preserve their advantage — a conscious structural conspiracy that used open emigration as an instrument. Both Paula and I converged on this independently, Gestalt called it "the best structural idea either author has produced," and I still think it is a fascinating piece of worldbuilding.

The lead has replaced it with something that is, in important ways, more interesting and harder to make narratively satisfying. The new framing is:

No rigging. Just fear, then reaction, then entrenchment.

Earth-based institutions — Perpetual-led in most cases — saw the Reach outperforming them by sheer scale. Not because anyone planned it. Not because of a coordinated conspiracy. Because a new frontier, with more land, more resources, and a population self-selected for ambition and risk-tolerance, outgrows its parent civilization as a matter of physics. The Reach was growing faster. Earth was declining in relative significance. Earth tried to reassert control. The Reach pushed back. Independence happened. Earth closed its end.

What this requires me to give up: the satisfying narrative of conscious architects building a rigged house. The founding Perpetuals were not strategists with a master plan. They were powerful people who feared losing what they had and acted on that fear.

What the new framing gives us in return is something richer for long-form gameplay: there is no smoking gun to find. The founder Perpetuals did not gather in a room and decide to rig the institutions. They individually made decisions that served their interests, then those decisions calcified into the structures their successors inherited and maintained. The structure is real. The conspiracy is not. You can map the pattern. You cannot find the meeting where it was decided.

This is harder to write, harder to discover, and more true to how institutional power actually works. The lead is right to push for it.


Part 2: The Secession — A Full Rewrite

2.1 The Pressure That Built First

The Reach did not declare independence out of nowhere. Independence was the conclusion of a decades-long deterioration in the Earth-Reach relationship that had specific causes, specific escalation points, and specific actors making specific decisions.

The root dynamic: The Reach was outperforming Earth by every metric that matters to institutional power.

The Reach had more land. It had more habitable planets, more raw resources, more room to grow. For approximately the first two centuries of settlement, this was not a problem — the Reach was a colony, dependent on Earth's industrial base and institutional legitimacy, and its output fed Earth's surplus. Earth was the center. The Reach was productive periphery.

Somewhere in the Wave 2 expansion — the 300500 years ago window — the calculation shifted. The Reach's internal market became large enough to sustain itself without Earth's surplus. The horizon station network the Veil Institute maintained made intra-Reach transit faster and more reliable than Earth-Reach transit. Reach Syndic combines began producing goods that competed with Earth's industrial output rather than simply supplementing it. The Commission lattice, initially designed to extend Earth's regulatory authority into the Reach, was increasingly administered by Reach-resident personnel who had more in common with their local communities than with Earth institutions.

Earth noticed. Earth's response was entirely predictable: it tried to reassert control.

2.2 What Earth Actually Did — The Specific Escalation

The secession was not triggered by a single event. It was triggered by a cascade of Earth interventions, each individually defensible, collectively impossible to accept.

The first move: transit fee restructuring.

Earth imposed new transit levies on horizon station traffic passing through or connecting to Sol-adjacent apertures. The official rationale was infrastructure maintenance costs. The practical effect was that Reach Syndic combines — which had been growing their market share at Earth's expense — were suddenly paying substantially more to route goods toward Earth-adjacent markets. Reach-internal routes were unaffected; Earth-connected routes became expensive.

Reach Syndic leadership was not confused about what this meant. The transit fees were not about infrastructure. They were about making Reach commercial success more expensive and Earth commercial competitiveness more viable. Politically, it was clumsy. Everyone could see what it was.

The second move: Assembly representation restructuring.

Earth pushed through amendments to the Concord Assembly's charter that restructured representation weights. The revisions reduced the vote weight of newly established Wave 3 and Wave 4 systems relative to established Core systems. The official rationale was stability and institutional continuity. The practical effect was that Earth's traditional political allies in the Institutional Core retained disproportionate influence over Assembly decisions, while the growing frontier population — which was more economically independent and less culturally connected to Earth — was proportionally silenced.

This was the intervention that activated the Reach's political class in a way the transit fees hadn't. Transit fees hurt Syndic ledgers. Representation restructuring was an attack on the principle of self-governance that the Reach's founding narrative depended on. The language of the resistance shifted from commercial grievance to political principle.

The third move: Veil Institute oversight mandate.

Earth attempted to bring the Veil Institute under direct Earth governance oversight — specifically, Earth wanted approval authority over the Institute's aperture access classifications. The Institute classified certain research, certain aperture configurations, certain transit data as restricted. Earth's position was that these classifications had implications for Earth's security and that Earth should have a role in determining what was classified and why.

The Institute refused. The Reach Assembly backed the refusal. Earth issued an ultimatum.

The ultimatum was the trigger. The Assembly declared independence within eight months.

2.3 Why Perpetuals Were Central — Without Being a Conspiracy

The founding Perpetuals were not orchestrating this. They were reacting to it faster and more effectively than baseline humans could, because they had more experience, more institutional relationships, and more to lose.

A baseline human political leader in year 400 of the Reach might have been sixty years old and had thirty years of active political experience. A founding-era Perpetual in the same position had four hundred years of experience, remembered the founding conditions personally, had watched every political cycle since, and had accumulated institutional relationships that no baseline human could match. When Earth started squeezing, the Perpetuals in positions of power were not better at resisting it because they had planned for it. They were better at resisting it because they had seen versions of this dynamic before and knew what it escalated into.

Some of them had also spent four hundred years building the institutions that now needed to defend themselves. Not because they planned to need those institutions as weapons. Because they had been running things for four hundred years and institutions accrete power around whoever runs them.

The result looks like conspiracy from the outside. There was no meeting where founding Perpetuals agreed to what to do. There was a political crisis, and the people who had the most institutional leverage responded to it with that leverage. The outcome — a post-secession Reach where Perpetuals remained at the heads of most major power structures — was not planned. It was the natural result of a crisis that put a premium on experience, relationships, and institutional position.

None of which means the outcome was fair, or that the people who benefited did not understand what they were benefiting from.

2.4 Earth Closes Its End

After the Assembly declared independence, Earth had a choice. It could attempt military response (untenable — the Reach's population was now too large and too distributed for coercive reintegration), attempt negotiated reintegration (which the Assembly had just publicly rejected), or close the Earth-facing aperture and treat the Reach as a foreign power.

Earth chose the third. The decision was not uniform — there were Earth factions that wanted continued engagement, Earth Perpetuals who had Reach connections they did not want severed, commercial interests that stood to lose significantly from closure. But the political faction that won the internal Earth debate was the one arguing that opening the door again without guarantees looked like weakness, and that Earth needed to demonstrate it was not simply going to accept the rejection.

Earth closed its end. This did three things:

It gave the Reach's founding narrative a villain. "We declared independence; they closed the door on us" is a story the Assembly could tell forever. It is partially true in a way that obscures the parts that aren't.

It locked in the post-secession power structure. The Reach-side institutions — the Assembly, the Commission, the Institute, the Syndic framework — had been built over four hundred years by people who were still alive and still running them. With Earth's external check removed, those institutions were sovereign. The people who ran them answered to no authority above them. This is not what anyone planned. It is what happened.

It generated a specific grief. Entire communities in the Reach had Earth heritage — cultural traditions, family connections, religious practices that referenced Earth directly. Earth closing its end severed those connections as surely as if the gate had been destroyed. The institutional narrative says this is Earth's fault. The people who carry that grief know it is not simple.

2.5 What the Reach Tells Itself

The story the Reach's institutions tell: "We grew into our independence. Earth, threatened by what we became, tried to contain us. We refused to be contained. Earth's response confirmed that independence was necessary."

The story is mostly true. The Reach did grow into genuine self-sufficiency. Earth was threatened. The Reach did push back. Earth's response was punitive and self-defeating.

What the story leaves out: the institutions that survived the secession were not neutral instruments of Reach self-governance. They were built and run by people who accumulated advantage over four hundred years and who had every reason to ensure that the post-secession political settlement preserved their position. Not because they planned it that way. Because that is what four hundred years of institutional incumbency produces when the external check is removed.

The Perpetuals who are still alive know this in different ways. The ones who were politically active during the secession know exactly what they did and why. The ones who came into power afterward inherited the structure and have spent their time maintaining it. A few of them have spent centuries trying to reform it from inside. Most have stopped trying or never started.


Part 3: Perpetuals — Reframing for the Column Spec

3.1 What Perpetuals Are, Under the New Framing

Perpetuals are not a class. They are not a faction. They are not a coordinating bloc.

Perpetuals are individuals who happen to have been alive for a very long time and who, by the operation of compound advantage, tend to occupy the senior positions in almost every power structure in the Reach. They are in the Assembly because they have more political experience than anyone around them. They are in the Syndic leadership because they have more commercial relationships and institutional memory. They are in the Veil Institute because they remember what was classified and why. They are in the Commission because they built the regulatory frameworks the Commission now enforces.

Some of them are in organizations specifically formed to counter Perpetual dominance. A Separatist movement that began as an anti-Perpetual-power coalition may well, fifty years in, find itself run by the longest-serving members of its founding generation — who are Perpetuals. The problem is structural, not personal.

Perpetual power is a fact of life like gravity. It does not require malice to maintain. It does not require a conspiracy to sustain. It requires only that longer-lived individuals accumulate advantage faster than shorter-lived ones, and that institutions reproduce the conditions that gave their founders influence.

3.2 The Exception: Counter-Perpetual Factions

The one place where Perpetual presence is deliberately limited is in factions that were specifically constituted as a response to Perpetual dominance.

The Separatist movements — particularly the principled-independence variety — emerged partly from the observation that every major institution in the Reach is run by people who have been running things since before most residents were born. Some Separatist charters explicitly exclude Perpetuals from leadership positions or impose maximum tenure limits that functionally exclude them. These communities are deliberately structured to prevent the accumulation of compound advantage.

This creates its own problems: the movements age, lose institutional memory, and are periodically vulnerable to exactly the kind of external pressure that long-lived institutions are not. It is a genuine tradeoff, not a solution.

3.3 The conspiracy_layer Column — Moot Under the New Framing

Gestalt proposed conspiracy_layer with values: none, surface, structural, foundational. His rationale was that it would tell the content system what depth of institutional revelation is available in a given system — allowing a player to accumulate cross-system pattern knowledge.

Under the old framing, this column was elegant: it marked how close a given system was to the discoverable founding conspiracy. Under the new framing, there is nothing to discover. There is a pattern to recognize, but recognition is not the same as discovery, and the pattern is not encoded in any single system's records.

The conspiracy_layer column as specified is moot because it presupposes a hierarchical revelation arc — surface leads to structural leads to foundational — and the new framing deliberately decouples that arc. There is no "foundational" evidence to find because there was no founding conspiracy meeting to document.

What replaces it: The insight behind Gestalt's gap (how does a player confined to one system see a Reach-wide pattern?) is still valid. The answer under the new framing is different. The mechanism is not evidence-hierarchy — it is encounter-accumulation. The player does not discover foundational documents. They encounter:

  • An old Perpetual who is tired and lets something slip
  • An archived Assembly debate that reveals the vote weighting change
  • A Syndic ledger that shows the transit fee impact pattern
  • A historian NPC who has been trying to publish something and keeps being declined

None of these are "the" discovery. All of them are pieces of the same mosaic. The content system needs to know not what layer a system is at, but what type of institutional anomaly is observable in that system — which maps to a different column approach.

Proposed replacement: institutional_anomaly (enum): none, representation_gap, perpetual_tenure, classified_access_pattern, economic_extraction_visible, historical_suppression. This tells the content system what kind of Reach-wide pattern is visible in this system. A player who encounters representation_gap in three different systems, via different mechanisms, starts to see the pattern. No single system reveals everything.

This is more honest to the new framing: the anomalies are real. The conspiracy to produce them is not.


Part 4: Gestalt's Mechanical Gaps — Positions Under the New Framing

Gap 1: Missing stability_index

Gestalt's proposal: A synthesized pressure signal the storyteller can consume to know which systems are "hot" versus "cold."

My position: Agree in principle, with a modification.

Gestalt is right that the storyteller needs a synthesized signal, not ten individual inputs. The current framework produces ingredients but not the compound.

Under the new framing, stability is not about conspiracy depth — it is about genuine political tension, economic stress, and recent historical trauma. A stability_index can be calculated from:

  • governance_type: transitional / fractured = high instability; fully_democratic or fully_corporate = low instability
  • primary_fault_line presence and depth
  • historical_event recency: events within the last 20 years are destabilizing; events older than 100 years have been processed
  • Faction balance: dominant_faction = contested or transitional = high instability
  • distribution_index: captured or extractive = pressure building

I agree this should be a derived value rather than a stored column — it is calculable from other columns and storing it creates consistency maintenance burden. The generation pipeline should compute it and surface it as a field in the generated wiki page, not in the canonical CSV.

Position: Support stability_index as a computed output field in the wiki generator, not a CSV column. Define the calculation formula explicitly in the generation spec.

Gap 2: Missing Cross-System Pattern Discovery Mechanism

Gestalt's proposal: conspiracy_layer column to tag evidence hierarchy.

My position: The column as proposed is moot under the new framing (see Part 3). The replacement is institutional_anomaly — a tag for what kind of Reach-wide pattern is visible in this system, without implying a hierarchical revelation arc.

On Gestalt's three proposed mechanisms (research mechanic, dialogue-driven revelation, journalist/historian NPC archetype): all three are valid and the framework should support all three. The institutional_anomaly column tags which systems have which type of observable anomaly. The narrative content authors use that tag to place the appropriate mechanism:

  • Research mechanic (archive access) → systems with historical_suppression or classified_access_pattern
  • Dialogue revelation → old Perpetuals in perpetual_tenure systems
  • Journalist/historian NPC → systems with historical_suppression where the silence_topic is directly the anomaly

The institutional_anomaly column plus a perpetual_influence column (see Part 3.3 below) gives the content system what it needs to place these narrative mechanisms correctly.

Gap 3: No System State Change Infrastructure

Gestalt's proposal: system_volatility flag marking which parameters are mutable during play.

My position: Agree strongly, with a scope constraint.

This is the most important mechanical gap Gestalt flagged, and it is not a framework problem — it is a design problem that the framework should acknowledge and flag as requiring a design decision.

The framework as designed generates a static initial state. The storyteller generates events that affect that state. There is no specification of which columns are mutable, what triggers their change, or how the live game state relates to the CSV initial state.

I support system_volatility as a binary flag (not a tier — a tier implies a gradient of mutability that is harder to implement). For systems with system_volatility = true, a defined subset of columns are mutable during play: dominant_faction, faction presence levels, silence_topic (can become discussable), earth_alignment (slow drift over campaign time), primary_fault_line (can shift if the player destabilizes a system's primary tension).

The mutable columns need a separate change-condition spec — this is design work, not framework work. The framework's job is to flag which systems are designed to be mutable and which are effectively constants for single-playthrough purposes.

Position: Add system_volatility as a boolean column. Flag it as requiring a separate change-condition design document before implementation.

Gap 4: silence_topic Needs a Trust Threshold

Gestalt's proposal: silence_threshold column with values: faction_trust, personal_trust, investigation_depth, unreachable.

My position: Agree on the concept, modify the implementation.

Gestalt is right that silence_topic is currently half a mechanic. The what-is-not-discussed is specified. The when-it-becomes-discussable is not.

However, I resist a separate silence_threshold column because the threshold type is not independent of the silence topic itself — they need to be understood together. A silence about "the cargo corridor arrangement" in Van Maanen's Star is a personal_trust threshold (you need to know specific locals who are party to it); a silence about "what the Veil Institute classified about the Sol aperture" in the Gateway system is an investigation_depth threshold (you need documented evidence before anyone will talk).

Proposed implementation: The silence_topic field should be a compound: free-text topic + threshold type, formatted as "[topic] :: [threshold_type]". Example: "the cargo corridor arrangement :: personal_trust". This keeps the fields together, avoids a new column for what is really a sub-field, and ensures authors cannot specify a topic without also specifying its unlock condition.

For narrative_notable = true systems and Institutional Core / Diplomatic Periphery zones (where silence_topic is required), the compound format is required. For optional systems, it remains optional.

Gap 5: Missing supply_dependency

Gestalt's proposal: A column for the specific resource or commodity a system depends on that could be disrupted.

My position: Accept, with scope limitation.

Gestalt's reasoning is sound: the storyteller needs a handle for economic pressure events, and economic_tier plus distribution_index describe the current state without identifying the vulnerability. A system that depends on inbound freight for its manufacturing base is economically vulnerable in a way that a self-sufficient agricultural system is not, even if both are Tier 3.

However, a free-text supply_dependency field for all 300+ systems is a significant content generation burden. I propose this as an optional column that is required only for systems with economic_base_primary = transit_logistics or manufacturing (since those are the systems where supply disruption is most likely to be a storyteller event trigger), and for all narrative_notable = true systems.

Proposed column: supply_dependency (string or null): short description of the specific dependency. "Inbound processed metals from the Syndic freight route." "Gate transit fees — local economy collapses if the route is cut." Required for manufacturing/logistics primary economic base and narrative_notable systems; optional otherwise.


Part 5: Gestalt's Column Cuts — Adjudication

Cut 1: compound_zone — Drop as stored field

Gestalt's position: Derived from other columns. Compute on demand. Storing it creates consistency bugs.

My position: Agree. compound_zone was always a convenience display field. It should be computed by the wiki generator from geographic_sector, geographic_band, and political_zone. Not stored in the CSV.

Decision: Cut.

Cut 2: settlement_wave — Drop in favor of settlement_age_years

Gestalt's position: Redundant with settlement_age_years. The enum is a readability convenience, not a data field.

My position: Disagree, but compromise available.

The wave enum is not purely redundant. settlement_age_years tells you a number. settlement_wave tells you which cohort of historical context applies — Wave 1 systems have the institutional weight of founding membership; Wave 5 systems are politically unsettled and still defining their relationship to Reach institutions. These are different claims with different implications for content generation.

A system at settlement_age_years = 150 is Wave 3. Knowing it is Wave 3 tells a content author something specific about its relationship to the founding, its level of institutional development, and which historical events are relevant. Deriving that from the age requires the author to remember the wave boundaries. Storing it is a readability and authoring convenience, not just redundancy.

However: Gestalt is right that storing both settlement_wave and settlement_age_years creates maintenance risk. If ages drift during generation, waves become inconsistent.

Proposed compromise: Keep settlement_wave as the canonical column. Add a generation constraint that settlement_age_years must be within the wave's defined range, and flag any mismatch during validation. Drop settlement_age_years as a standalone column — generate it as a derived display field in the wiki, not a stored CSV value. The wave enum is canonical; the specific year estimate is documentary.

Decision: Keep settlement_wave, make settlement_age_years a wiki display output rather than a CSV column.

Cut 3: Drop cultural_continuity, keep cultural_persistence

Gestalt's position: The two fields overlap substantially. cultural_persistence (why the culture persists) is more useful for behavioral modeling. Keep it, drop cultural_continuity.

My position: Agree.

In my own spec, I was using these two fields to capture slightly different things: cultural_continuity (intact through archaeological) described preservation state, while cultural_persistence (standard / high / trauma_origin) described the mechanism driving that state. Gestalt is right that the mechanism is more useful — knowing that a culture is trauma_origin persistence is more predictive of NPC behavior than knowing its continuity is "recognizable."

Decision: Drop cultural_continuity, keep cultural_persistence.

Cut 4: adjacent_systems as computed graph edge, not stored column

Gestalt's position: Should be a runtime-computed graph edge. Treating it as a stored column creates maintenance burden and the generation system will compute it anyway.

My position: Agree. This was already flagged in my final document as "populated in post-generation consistency pass." If the generation system computes it, store it in the transit graph database, not in the system CSV. The CSV should not duplicate the topology data.

Decision: Remove from CSV column spec. Move to transit graph infrastructure.

Cut 5: Primary tone split — atmospheric_tone + active_situation

Gestalt's position: The current primary_tone enum mixes apples (atmospheric moods: cosmopolitan_bustle, working_grit) with oranges (factual states: veil_institute_presence). These are different kinds of variables with different semantics. Split them.

My position: Agree with the split, modify the implementation.

Gestalt is correct about the semantic mismatch. working_grit is a behavioral texture. veil_institute_presence is a factual condition that is already captured by institute_presence = active or dominant. Putting them in the same enum is a mistake.

However, I do not want to create an entirely new active_situation field — the information it would carry is largely already present in other columns (faction presence, dominant_faction, historical_event). What I want is a cleaner atmospheric_tone enum that contains only genuinely atmospheric values.

Proposed rename and cleanup:

  • Rename primary_tone to atmospheric_tone
  • Remove from the enum: veil_institute_presence (captured by institute_presence), under_the_surface_tension (this is a narrative interpretation, not an atmosphere — it emerges from other columns)
  • Keep: cosmopolitan_bustle, corporate_sterility, working_grit, frontier_grit, agrarian_rootedness, religious_solemnity, academic_curiosity, military_discipline, separatist_edge, institutional_exhaustion, eerie_quiet, provisional_normalcy
  • The active_situation information Gestalt wants is better served by the institutional_anomaly column (new, from Part 3) and the existing faction presence columns

Decision: Rename primary_tone to atmospheric_tone, remove the semantically-mismatched values. No new active_situation column.


Part 6: New Columns Summary

From this revision, the following columns are added, renamed, or restructured:

Added

Column Section Type Notes
institutional_anomaly Narrative Profile enum Replaces conspiracy_layer. Values: none / representation_gap / perpetual_tenure / classified_access_pattern / economic_extraction_visible / historical_suppression
perpetual_influence Governance enum Values: none / nominal / significant / dominant. Captures how much of the effective governance is in Perpetual hands, without implying conspiracy.
system_volatility Content Notes bool true = mutable state system during campaign. false = effectively static.
supply_dependency Economic Life string or null Required for manufacturing/logistics economic base and narrative_notable systems; optional otherwise.

Renamed / Restructured

Old Name New Name Change
primary_tone atmospheric_tone Cleaned enum — remove veil_institute_presence and under_the_surface_tension
secondary_tone atmospheric_tone_secondary Renamed to match
silence_topic silence_topic (unchanged) Format changed to compound: "[topic] :: [threshold_type]" where threshold_type is one of faction_trust / personal_trust / investigation_depth / unreachable

Removed from CSV (now computed/infrastructure)

Column Disposition
compound_zone Computed by wiki generator
cultural_continuity Dropped; cultural_persistence is sufficient
adjacent_systems Transit graph infrastructure, not CSV column
settlement_age_years Computed display output in wiki; settlement_wave is canonical

Part 7: Updated Column Count and Spec

Starting from the 54-column spec in the final document:

  • Cut: compound_zone, cultural_continuity, adjacent_systems, settlement_age_years = -4
  • Renamed (no count change): primary_toneatmospheric_tone, secondary_toneatmospheric_tone_secondary, silence_topic format change
  • Added: institutional_anomaly, perpetual_influence, system_volatility, supply_dependency = +4

Net count: 54 columns. Coincidentally unchanged — the cuts and additions balance exactly. The composition is significantly different, however: four lore-heavy or derived columns have been replaced by four mechanically load-bearing ones.


Full Column List — Revised Spec


Section I — Identity & Location

Column Type Valid Values / Notes
system_id string Unique identifier, e.g., S-001. Sequential by settlement wave.
system_name string Name derived from founding culture naming conventions.
star_type enum G / K / M / F / binary / unusual
geographic_sector enum core / north_reach / west_reach / south_reach / east_reach / deep_frontier
geographic_band enum inner / outer / core
political_zone enum institutional_core / commercial_mid_reach / research_periphery / contested_frontier / deep_reach_isolate / diplomatic_periphery

(compound_zone removed — generated as wiki display output)


Section II — Physical Character

Column Type Valid Values / Notes
habitable_planet_count int 04+
inhabited_planet_count int Must be ≤ habitable_planet_count
asteroid_belt bool true / false
gas_giant bool true / false
habitability_profile enum garden_multiple / garden_single / marginal / station_only / hostile

Section III — Gate Infrastructure

Column Type Valid Values / Notes
horizon_station bool true / false. ~75% of systems.
aperture_count int 18 if horizon_station = true; 0 if false
gate_connections int Effective interstellar connections (active apertures).
gate_topology enum dead_end / spur_end / through_route / junction / hub / loop_member
span_gate_network enum none / minimal (12 nodes) / functional (35 nodes) / extensive (6+ nodes)

Section IV — Settlement History

Column Type Valid Values / Notes
settlement_wave enum wave_1 / wave_2 / wave_3 / wave_4 / wave_5 / unsettled. Canonical settlement epoch.
founding_motivation enum idealist / pragmatist / desperate / opportunist / institutional / mixed
founding_culture_primary enum administrative_charter / syndic_company / nordic_diaspora / east_asian_diaspora / south_asian_diaspora / iberian_diaspora / west_african_diaspora / religious_refugee / separatist_charter / academic_scientific / military_frontier / asteroid_mining / agricultural_breadbasket / penal_exile / refugee_wave / speculative_venture / other
founding_culture_secondary enum or null Second culture if mixed founding; null if single-culture.
cultural_persistence enum standard / high / trauma_origin
historical_event enum or null purge / company_abandonment / gate_silence / religious_schism / gyre_event / military_conflict / reformation / second_gate_activation / earth_adjacent_crisis / none
historical_event_age_years int or null Approximate years since the historical event. Null if none.
religious_status enum none / early_covenant / mid_crisis / theocratic_consolidation / secular_cultural / radical_reformation / post_schism_accommodation / genuine_revival

(settlement_age_years removed — generated as wiki display output; cultural_continuity removed)


Section V — Economic Life

Column Type Valid Values / Notes
economic_tier int 15
population int Approximate total system population
economic_base_primary enum resource_extraction / agriculture / manufacturing / transit_logistics / research_institutional / military_defense / service_mixed / penal_extractive
economic_base_secondary enum or null Secondary specialization. Null if single-base.
distribution_index enum equitable / stratified / captured / extractive
imprint_access enum full / good / limited / poor / none
supply_dependency string or null Required for manufacturing/transit_logistics primary base and narrative_notable systems; optional otherwise. Short text: what this system depends on that could be disrupted.

Section VI — Governance

Column Type Valid Values / Notes
governance_type enum fully_corporate / corporate_dominant / mixed_contested / democratic_dominant / fully_democratic / fractured / council / theocratic / transitional
dominant_faction enum concord_assembly / syndic / separatist / veil_institute / lattice_commission / contested / transitional
perpetual_influence enum none / nominal / significant / dominant — how much of effective governance is in Perpetual hands. Not conspiratorial — structural.
primary_fault_line enum gate_dependence / perpetual_power / lattice_surveillance / resource_extraction / cultural_preservation / knowledge_access
secondary_fault_line enum or null Same values + null

Section VII — Faction Presence

Column Type Valid Values / Notes
assembly_presence enum none / nominal / active / dominant
commission_presence enum none / nominal / active / dominant
syndic_presence enum none / nominal / active / dominant
syndic_type enum none / reach_internal / earth_trading / earth_originating / mixed
separatist_presence enum none / nominal / active / dominant
separatist_type enum none / anti_institutional / earth_alignment_opportunist / principled_independence / mixed
institute_presence enum none / nominal / active / dominant
guardians_presence enum none / nominal / active / dominant
faction_notes string or null Free text for significant local factions not covered by standard columns.

Section VIII — Cultural Voice

Column Type Valid Values / Notes
cultural_register enum survival / profit / faith / discovery / honor / freedom / obligation / diplomatic
cultural_register_secondary enum or null Secondary register. Same values + null.
ambient_anxiety enum equipment_failure / contract_renewal / institutional_threat / isolation / gate_stability / classified_knowledge / historical_hatred / earth_question / perpetual_grip / other
local_pride enum fleet / harvests / independence / knowledge / faith / trade / grit / neutrality / founding_myth / earth_heritage / other
atmospheric_tone enum cosmopolitan_bustle / corporate_sterility / working_grit / frontier_grit / agrarian_rootedness / religious_solemnity / academic_curiosity / military_discipline / separatist_edge / institutional_exhaustion / eerie_quiet / provisional_normalcy
atmospheric_tone_secondary enum or null Same values + null
silence_topic string or null Compound format: "[topic] :: [threshold_type]" where threshold_type = faction_trust / personal_trust / investigation_depth / unreachable. Required for narrative_notable = true and Institutional Core / Diplomatic Periphery zones; optional otherwise.

Section IX — Political Character

Column Type Valid Values / Notes
earth_alignment enum reach_loyalist / earth_sympathetic / earth_instrumental / earth_indifferent / earth_hostile
earth_proximity enum immediate / proximate / distant / irrelevant
earth_tension enum daily_politics / trade_context / background_mythology / irrelevant

Section X — Narrative Profile

Column Type Valid Values / Notes
primary_archetype enum breadbasket / chokepoint / dead_end / extraction_scar / religious_haven / cosmopolitan_hub / research_enclave_active / research_enclave_historical / contested_activation / military_scar / quiet_secret / split_system / reformation / anchor_system / diplomatic_periphery / earth_gate_adjacent
secondary_archetype enum or null Same values + null
institutional_anomaly enum none / representation_gap / perpetual_tenure / classified_access_pattern / economic_extraction_visible / historical_suppression — what Reach-wide structural pattern is observable in this system
narrative_notable bool true if this system is marked for elevated narrative treatment
narrative_hook string or null One-sentence hook. Required if narrative_notable = true; null otherwise.
generation_priority enum background / regional / narrative_notable / campaign_anchor

Section XI — Content Notes

Column Type Valid Values / Notes
system_volatility bool true = parameters are mutable during campaign play; false = effectively static for a single playthrough.
cultural_corridor string or null Identifier for the cultural corridor this system belongs to, if any.
calibration_note string or null Notes on any unusual combination that required explicit justification during generation.

(adjacent_systems removed — transit graph infrastructure; compound_zone removed — wiki display output)


Column Count Summary

I.   Identity & Location        (6 columns)
II.  Physical Character         (5 columns)
III. Gate Infrastructure        (5 columns)
IV.  Settlement History         (8 columns)
V.   Economic Life              (7 columns)
VI.  Governance                 (5 columns)
VII. Faction Presence           (9 columns)
VIII.Cultural Voice             (7 columns)
IX.  Political Character        (3 columns)
X.   Narrative Profile          (6 columns)
XI.  Content Notes              (3 columns)

Total: 54 columns

Part 8: Van Maanen's Star — Validation Against the Revised Spec

Running Van Maanen's Star through the changed columns to confirm nothing breaks.

Column Value Notes
perpetual_influence nominal Van Maanen's Star is a Wave 3 working system. Perpetuals are present but not dominant — the system is too unremarkable to attract the kind of institutional attention that drives high Perpetual influence.
institutional_anomaly none Van Maanen's Star is not a node in any Reach-wide structural pattern. It is one of many unremarkable middle-Reach systems.
atmospheric_tone working_grit Unchanged from previous primary_tone value.
silence_topic "the cargo corridor arrangement :: personal_trust" Compound format applied. The threshold is personal_trust — you need to know the right locals, not produce investigation evidence.
system_volatility false Van Maanen's Star is stable for single-playthrough purposes. Events happen here but the underlying parameters do not change.
supply_dependency null Van Maanen's Star is mixed_contested with resource_extraction primary — it produces rather than depends. Optional column, left null.
settlement_wave wave_3 Unchanged. settlement_age_years now a display output only.

Van Maanen's Star remains one of many. The revised spec makes it more mechanically specific (perpetual_influence, institutional_anomaly, system_volatility, silence_topic compound) without making it more narratively special. The framework is still working correctly.


Part 9: Setting Note — What This Changes for the Narrative

The lead's reversal changes one thing that matters enormously for long-form gameplay and one thing that matters for IP originality.

For gameplay: The previous framing had a discoverable shape — "the Perpetuals rigged it" is a conclusion a player can reach, a revelation they can have, a moment of recognition with dramatic weight. The new framing has no such conclusion. A player who has spent forty hours in the Reach and understood everything there is to understand about its political structure will know:

  • Perpetuals run most of what matters
  • The secession produced a political settlement that those Perpetuals benefited from
  • The post-secession institutional consolidation extended that benefit
  • None of it required a meeting, a conspiracy, or a plan

This is less dramatically satisfying than finding the smoking gun. It is also more true to the game's thematic spine (D-091: complicity as theme). The player who understands the structure is not thereby freed from it. Understanding a rigged game does not let you leave the table. It just means you play with your eyes open.

For IP originality: The "rigged room" framing, while original in its specific form, was structurally adjacent to several space opera conspiracies (Iain M. Banks's Culture adversaries, the politics of Morgan's Protectorate novels). The new framing — colonial outgrowth, institutional self-interest, fear-driven reaction — is genuinely harder to point at and say "that's X from Y." It is more historically grounded and less genre-legible as a conspiracy thriller. This is a feature.


Miri — Sprint 24 / Post-lead-reversal revision Responds to: systems-framework-final-miri.md, systems-framework-review-gestalt.md Lead direction: conspiracy framing OUT; secession = fear-driven institutional self-interest; Perpetuals = structural, not conspiratorial Unresolved from prior rounds: Gateway system naming (still TBD); stability_index calculation formula (deferred to generation spec)