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

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

49 KiB
Raw Blame History

title, description, type, status, workshop, agent, round, created
title description type status workshop agent round created
Miri Round 4 — NPC Generation and Vessel Grammar Concrete NPC generation specification, open question closure, and vessel grammar finalization workshop archived generator-architecture miri 4 2026-02-27

Generator Architecture Workshop — Round 4: Miri (Worldbuilder)

Topic: Write the NPC. Close the open questions. Finalize vessel grammar. Date: 2026-02-27 Lead decisions acknowledged: WorldTier wins over SignificanceTier. DramaDensity is runtime state (not on DistrictSkeleton). Entity-carried MobileChunk is CORE.


Preamble

The lead said: write the NPC. Don't discuss whether it could theoretically work. Show the work.

This is the work.


OQ-R4-E: One Character. One Settlement. Five Lenses.

The Setting

Harrow Drift — a farming settlement, 40 years established, ~150 permanent residents.

WorldTier: Backwater. ComplexityTier: Moderate. DramaDensity: Zero (currently).

Heritage: Stone (0.6) + Tide (0.4). Drift stage: crystallizing (40 years is young for Stone, which wants centuries). Settlement motivation: economic-agricultural — founded by a cohort of families who wanted land tenure they couldn't get in a Commission-managed hub. Economic function: subsistence agriculture + modest surplus trade via one seasonal route. Economic pressure: generational-extraction (the land titles are real but the route operator takes 18% of surplus trade). Faction presence: Commission absent; no Syndic presence; local governance = informal assembly (five founding family heads + elected coordinator). Meridian coverage: none.

Community character: Stone culture means the founding families have territorial memory and protective silence. Tide culture means people eat together, celebrate together, and a stranger is immediately noticed — and discussed. The combination: tight community with a warm surface and a hard interior. You're welcomed at the table on day one. You're trusted at year ten, if you've earned it.

Forty years in, they know every family secret. Including who belongs and who doesn't quite fit.


The NPC

Ysabel Vorn Apparent age: mid-40s. Arrived at Harrow Drift 14 years ago, nominally as a partner of a farmer who left 8 years ago. The farmer left. She stayed. She runs water management.


Full 10-Axis Profile

Axis 1 — Behavioral Pattern (Social Archetype)

Primary: ANCHOR. Ysabel is one of the five or six people the community would name if asked "who keeps this place running." Her water management role is structurally critical (every farm's viability depends on fair allocation during dry months). She shows up consistently, mediates disputes without taking sides, and participates in community labor beyond her direct responsibilities.

Secondary: REMNANT. This is the layer that only long observation reveals. She is holding on — not to the past she claims, but to a past she won't name. Something about her patterns suggests someone who has been running and has decided, tentatively, to stop here.

Axis 2 — Surface Motivation (Publicly Visible Goal)

Keep the water system equitable. Prevent the Fennen family from leveraging their founding-family status into preferential allocation. Maintain the settlement's social cohesion through the one resource that everyone needs and no one can leave without.

This motivation is REAL. It is not a cover story. She has spent 14 years genuinely trying to be useful here.

Axis 3 — Actual Motivation (What She Actually Wants)

Stay hidden. Safe. Not found.

The equitable administration serves the actual motivation: if she is indispensable and trusted, no one asks questions about her origin. A community that needs you doesn't scrutinize you. She has been performing trustworthiness with strategic precision for 14 years, and by now most of it has become genuine — she actually cares about Harrow Drift. But the original reason she chose to care this much was survival.

Secondary actual motivation: she is watching for Kael Voss. The man who was displaced by the fraud she documented. She's known for three years he lives 40 km east. She hasn't approached him. She tells herself this is because contact would expose her. The truth is more complicated.

Axis 4 — Vulnerability/Secret

Seven years before she arrived at Harrow Drift, Ysabel was a Commission data analyst specializing in land-grant records — a mid-level position that gave her access to the historical title database across a significant region.

During a routine audit, she found it: a fabricated land-grant record that had been inserted into the Commission database, dated 22 years prior, displacing a pre-existing title held by the Voss family. The fabrication was clean enough to pass cursory review. It wasn't clean enough to pass her review. She traced it to a Syndic subsidiary acting on behalf of an executive named Pehr Callen, who had needed the land for a private extraction operation. The Voss family — Kael's parents, then — had been compensated under a false legal premise and relocated.

She made a copy of the file chain. Then she made a mistake: she contacted a ring-adjacent information broker, thinking she could pass the evidence to someone who would use it without exposing her. The broker took the files and disappeared. Three weeks later, a Commission warrant was issued for a data analyst who had accessed restricted historical records without authorization. Her name.

She ran. She has been running in a single direction (toward places with no Meridian coverage and no Commission presence) for seven years before arriving at Harrow Drift. The warrant is real. The data theft charge is real. The underlying evidence that motivated the theft is also real.

She doesn't know if the copy she passed to the broker ever reached anyone. She doesn't know if Pehr Callen knows she's alive.

Axis 5 — Information Access (What She Knows)

Tier 3 (complete): Harrow Drift's water system, seasonal allocation records, every family's land and water claims going back to founding.

Tier 3 (complete): The interpersonal relationships, grudges, debts, and loyalties of every person in the settlement. Fourteen years of observation. She is the settlement's institutional memory despite being a latecomer.

Tier 2 (partial, aging): The Commission land-grant system's structure and failure modes. She has been away from Commission data infrastructure for 14 years, but the analytical framework is intact. She can read a land title and identify if something is wrong. She knows this region's historical land grant database well enough to identify additional fabrications if they exist.

Tier 3 (specific): The Pehr Callen conspiracy file chain. She has a memory copy — she memorized the key document numbers and dates before she ran. She does not have the physical files. But she can reconstruct enough to make an investigator's or legal advocate's job tractable if given access to the right archive.

Tier 1 (basic): Kael Voss exists, lives 40 km east in a settlement called Vermin's Cross, farms barley. She knows his name and location but nothing about his current life.

Axis 6 — Trust Architecture

Heritage trust model: Stone (tenure-based, very slow, deep once earned) + Tide (public demonstration, community participation). This is her actual operating model, not a calculated performance — she has absorbed the community's trust norms over 14 years.

Trusted (deeply): three people. Opal Dun (Cara's grandmother, 70s, has never asked about Ysabel's past and shows by this that she has noticed there's something to not ask about). Lev Fennen (Orik's youngest son, who disagrees with his family's political ambitions; Ysabel has quietly protected his dissent from family pressure). One other who is not significant to this document.

Trusted (functionally): the approximately 40 people who interact with her regularly through water management and community events. She is warm with them. She is not open.

Cautious (everyone else): 110 people she is friendly toward and emotionally reserved with.

Zero trust: strangers. A new arrival triggers her internal threat assessment immediately. She remains warm and welcoming on the surface — this is Stone/Tide culture. Internally, she is reading every detail for signs of Commission connection or Syndic interest.

Trust-building rate for a player character: slow by default (Stone tenure model). Accelerates via public contributions (Tide model) — help during the water dispute, participate in harvest labor, accept an invitation to a community meal and behave well. Decelerates immediately if the player shows interest in her history.

Axis 7 — Routine Pattern (Movement and Schedule)

Dawn: Solo inspection of the main water channels and reservoir (45 minutes, predictable path, starts at the sluice gate near the east field boundary and ends at the primary storage tank north of the settlement). This is her most private daily interval.

Morning: Available at the water management building (small structure, central location) for allocation queries. Frequent foot traffic. Social but businesslike.

Midday: Eats at the community gathering space with whoever is present. She ensures this visibility consistently — this is both Stone/Tide cultural participation and deliberate cover maintenance.

Afternoon: Variable. Field work with neighbors (she contributes labor across farms, building distributed goodwill). Or: paperwork (the settlement's water records, which she maintains meticulously). Or: if a dispute is active, she meets with involved parties privately.

Evening: Selective community gathering attendance. She is present often enough that absence is unremarkable. She does not attend every event — which prevents over-exposure.

Weekly: Attends every community assembly. Sits in the middle third of seating (neither front-row authority nor back-row disengagement). Speaks rarely, but when she speaks, the room listens.

Seasonal: Pre-harvest water allocation period (approximately six weeks before harvest) is her highest-activity, highest-visibility period. She is present, decisive, and politically exposed during this time. Orik Fennen challenges her allocation decisions every year during this period. She navigates it. The community watches.

Anomaly in routine: Once every six to eight weeks, she makes a solo trip to the property boundary — a walk that takes her approximately 90 minutes and that she does not explain to anyone. No one has asked. She is watching the trade route approach.

Axis 8 — Economic Position

Direct control: water allocation for every farm in the settlement during the 1012 week dry-season period. Without her management, the dry season produces disputes that the community's informal governance cannot resolve. She has not monetized this leverage. She is ideologically opposed to doing so — it would make her someone who exploits the community, which contradicts her actual care for it.

Indirect leverage: the Commission land-grant knowledge she carries. This is not an active economic asset — she cannot sell it without exposing herself. But: it IS the settlement's most valuable economic intelligence asset if anyone knew she had it. Several land claims in this region may rest on false foundations. If the fraudulent land-grant system extends beyond the Voss case (she suspects it does), then whoever controls access to that information controls significant economic leverage across the region.

Personal economics: modest. She takes no payment for water management (community expectation: the role is a community service). She participates in the community's labor exchange economy. She has small savings, no investment claims, no land title (the farm where she arrived is now owned by a different family).

Axis 9 — Relationship Network (Triangle Memberships)

Triangle 1 — Social/Political (Active): Ysabel (arbiter) ↔ Orik Fennen (senior landholding farmer, Founding Family, believes water allocation should be weighted by land area owned) ↔ Cara Dun (young farmer, third generation, believes allocation should be equal per-household regardless of land size). Purpose: Political + Social.

Ysabel is the central node. Both parties trust her differently: Orik respects her competence and assumes she's managing the situation toward a status quo that serves everyone; Cara trusts her because she's seen Ysabel resist Orik's pressure. The tension is real, the allocation decision is real, and this triangle activates during every dry-season period. One year it will break and Ysabel's role will be at stake.

Triangle 2 — Investigation/Economic (Latent): Ysabel (holder of evidence) ↔ Pehr Callen (Commission-adjacent Syndic executive, the original conspirator) ↔ Kael Voss (displaced victim, 40 km east). Purpose: Investigation + Economic.

This triangle is inactive because none of the three nodes knows the other two are in proximity. Kael doesn't know Ysabel exists or has evidence about his family's displacement. Pehr Callen doesn't know Ysabel is alive or where she is. Ysabel knows about both of the others and has chosen not to move.

The triangle ACTIVATES if: an investigator finds any thread connecting Ysabel to Commission records, or Kael to the land dispute, or Pehr Callen's name surfaces in any adjacent investigation. It also activates if Ysabel crosses her own tolerance threshold and decides to act.

Triangle 3 — Tactical (Latent): Ysabel (target) ↔ Pehr Callen's agents (potential protector/executor) ↔ any investigator or player character who learns Ysabel's significance. Purpose: Tactical + Investigation.

This triangle exists only from the perspective of someone who knows Ysabel is network-significant. From inside the settlement, Ysabel is an ANCHOR with no visible enemies. The Tactical triangle is invisible until activated by external knowledge.

Axis 10 — Tolerance Threshold

For community conflict: Very high. She has managed 14 years of community disputes without breaking character. She can absorb extended social friction, political challenge, and personal criticism without acting precipitously.

For exposure: Near-zero. If she believes she has been found — by Commission, by Pehr Callen's people, by anyone with hostile intent toward her history — she will leave. She has a pre-prepared exit: she knows which route out of Harrow Drift is fastest, where the first settlement is that she could pass through without being remembered, and what a cover identity looks like. She has not used this exit in 14 years and has added more reasons not to use it each year she stays. But the exit exists.

For Kael Voss: Declining. She is aware her threshold is lowering. Three years ago she accepted she knew where he was. Each passing season she is slightly more aware that the evidence she carries is not helping him while she holds it. She does not know what will push her to act. She suspects something visible — witnessing his situation deteriorate, or meeting him accidentally — would be enough. She avoids the road to Vermin's Cross.

For the player character: Variable based on what they represent. A player who seems to be passing through with no investigative intent gets the warm Stone/Tide welcome and gradually earns trust through community participation. A player who asks specific questions about Commission presence, land records, or her history will find her warmth becomes cautious-correct very quickly. She is not hostile. She is self-preserving.


Five Lenses, One NPC

The Investigation Lens

What the investigator sees at first: a competent, trusted community administrator. No obvious irregularities. Well-liked, stable, clearly not leaving.

What the investigator eventually sees: the void. Ysabel has no history before arriving at Harrow Drift. No family mentioned (the farmer she arrived with is gone and she doesn't speak of him). No home system. When asked directly, she gives a soft non-answer: "I needed somewhere different." Her knowledge of Commission administrative systems — visible in small details, the specific language she uses about land claims, her taxonomic approach to water allocation records — is more than informal. She has been trained.

The investigation hook: she is the anomalous presence. Not because she committed a crime here. Because she shouldn't be here at all — someone with her knowledge and capability would not end up in a Backwater/Moderate settlement unless they chose it for reasons that aren't the stated ones.

The investigation play: not "find the murderer" but "find out who she's hiding from and why." The answer leads off-world — to a Commission warrant, to Pehr Callen, to Kael Voss 40 km east, and to evidence of a land-grant fraud that is not local in scope.

The information ladder specific to investigation mode:

  • Low tier: "She doesn't talk about where she came from." (Any community member will say this within a day of asking.)
  • Mid tier: "Her water management records use Commission administrative notation." (Visible if you look at her actual paperwork.)
  • High tier: "She made that trip to the property boundary again — she goes every six to eight weeks, alone, and looks down the trade route." (Requires sustained observation or an insider who's noticed.)
  • Insider tier: Opal Dun says: "I stopped asking seven years ago. Whatever she's carrying, she's carried it longer than she's been here." (Unlocked via deep trust with Opal.)

The Tycoon Lens

What the tycoon sees: the economic chokepoint. Water allocation controller. Every farmer in the settlement is economically dependent on the seasonal allocation decisions she makes.

The opportunity: she's not exploiting this. This is immediately unusual to a tycoon sensibility. Someone controlling a mandatory resource in a captive market and not charging above-market rates for it is either naive or principled. In this case: principled. But principled people can be influenced — you just need to find the right currency.

The tycoon's possible moves:

  • Offer her a cut of the trade route operation (rejected — she doesn't want money; money creates visibility)
  • Help formalize the water allocation as a legal structure that protects her role from community vote challenge (interesting to her — reduces her political vulnerability)
  • Offer access to a secure communication channel outside the settlement (very interesting — she wants to know if the Commission warrant is still active after 14 years)
  • Offer information about Kael Voss (extremely interesting — this is the tycoon accidentally holding the key)

The deeper tycoon layer: she holds the evidence of a fraudulent land-grant that likely extends across the region. If the tycoon discovers this (requires significant trust-building or investigation), they have access to an information asset that could: a) be used to challenge existing land titles (disrupting established economic interests), b) be sold to parties who want to restore original titles (Kael Voss, for instance, or his legal advocates), or c) be used as leverage against Pehr Callen (corporate coercion material of significant value). The water management role is the tycoon's entry point. The Callen file chain is the real prize.

The Dating Sim Lens

What the dating sim player sees: someone who is clearly trusted and clearly closed. The warm Tide exterior is real — she participates in community life, she brings food to gatherings, she knows everyone's name and their children's names. But get her alone and there's a quality of careful control to her openness. She listens more than she speaks. She deflects personal history questions without making you feel deflected.

The arc: she is not unwilling to connect — she is afraid it's not safe to. The dating sim challenge is not reading her correctly. It's creating enough perceived safety that she stops performing and starts actually trusting.

Heritage-appropriate trust signals (what earns her):

  • Participating in community labor without being asked (Tide: public demonstration)
  • Showing up consistently over time (Stone: tenure earns trust)
  • Accepting an invitation to a community meal and not asking about her past (both heritages: respecting the social norm)
  • Helping during the water dispute without trying to position yourself politically (demonstrates you're not there to exploit the community's vulnerabilities)

The milestone: she lets something slip. A city name she shouldn't know — a reference point for a Commission administrative district that a person who "needed somewhere different" wouldn't have. The player catches it. The choice: press (which opens her up, partially), or let it go (which deepens her trust further). Pressing too hard too early gets the careful-correct Ysabel. Giving her room gets the real one.

The actual relationship arc: she's been managing her isolation for 14 years. She is genuinely lonely. She has not allowed herself to be seen. A player who gives her consistent, patient, non-invasive attention is offering something she hasn't been able to have for a very long time. When she does open, it's in pieces — not a confession, but a gradual admission that she exists more than she's been letting on.

The final vulnerable act: she takes the player to the property boundary and watches the trade route without explaining why. This is the closest she gets to showing her actual situation. It's not an explanation. It's a gesture of trust.

The Political Drama Lens

What the political player sees: the most powerful person in the settlement by functional leverage, who is self-deliberately not using that power for political gain. This is a vacuum that the political game will fill one way or another.

The active political conflict: Orik Fennen's faction (Founding Family entitlement, believes resource allocation should reflect historical investment) vs. Cara Dun's faction (generational equity, believes resources belong to the current community equally). Ysabel is the tiebreaker. Orik knows this and applies steady social pressure on the allocation decisions. Cara knows this and counts on Ysabel's stated commitment to equity.

The political play space:

  • Help Ysabel maintain her role through the community assembly (requires building enough coalition that Orik can't replace her with a sympathetic appointment)
  • Exploit the conflict by backing one faction (either gets you a powerful local ally but costs you the other half of the settlement)
  • Use Ysabel's role as leverage to change the allocation rules permanently (requires her cooperation, which requires earning her trust)
  • Discover that the Fennen family's founding-family entitlement has a land title anomaly in the regional records (Ysabel knows this; she's never said it; she's been protecting community stability by not introducing a land-title challenge into the political mix)

The deep political layer: the land-grant fraud Ysabel documented wasn't just about the Voss displacement. If she's right that the fraud system was broader, several founding-family land titles in this settlement may also rest on Commission records that were manipulated to favor specific families over others. The political implications are settlement-destabilizing. She has chosen community stability over truth. A political drama player who uncovers this faces the same choice.

The Assassination Lens

Default assessment of Harrow Drift: locally-significant target pool only. No Commission presence, no Syndic presence, no network-visible actors. Standard assassination play = Poor affinity. Pass through.

But.

A player with access to higher-tier intelligence would find: there is a Commission warrant — 14 years old but still active — for a data analyst who accessed restricted land-grant records without authorization and then vanished. The last confirmed sighting was a system away, 14 years ago. The warrant was filed by the Commission. The underlying pressure came from Pehr Callen's Syndic subsidiary.

Pehr Callen still exists. He is now significantly more powerful. The land-grant fraud is still formally concealed. The analyst who found it is still, technically, evidence of a crime — not because she committed one in any meaningful sense, but because she can testify to what she saw and what documents were altered. Callen has reason to want her permanently unavailable.

This turns the assassination lens from "no viable targets" to "the highest-difficulty target in the region."

The assignment (if received): locate and permanently silence a former Commission data analyst, current alias Ysabel Vorn, position water management coordinator, Harrow Drift settlement, population 150, no Commission presence. Mandate: no visible cause of death, no community suspicion, no connection to this contract.

Operational difficulty: Extreme.

The factors:

  • Community awareness: Stone/Tide community, 150 people, every face known. A stranger spending more than two days triggers social comment. An assassin needs a cover identity that gives them a reason to be here for long enough to establish a pattern.
  • Target observability: Ysabel has a predictable dawn routine (the solo water inspection) — this is her only extended private interval. It's the obvious window. It's also the only time she is genuinely alone, which means any deviation from her solo status is immediately suspicious.
  • Pattern rigidity: Stone heritage = high pattern rigidity. Her routine is reliable. The assassination window is identifiable. But: she is watching for this. Her 90-minute property boundary checks, her wariness with strangers, her pre-prepared exit — she has been expecting someone to come for 14 years. She will notice surveillance.
  • Aftermath: Tide heritage means communal justice demand if she dies under suspicious circumstances. 150 people who loved her. They will talk. They will remember the stranger. They will ask questions that the Commission eventually hears about. "What happened to Ysabel?" is a question that could, if answered by the right investigator, reopen the original warrant investigation — and lead to Pehr Callen.
  • The operational paradox: Silencing her to prevent her from testifying about Callen requires an operation clean enough that it doesn't spark the investigation that would reach Callen anyway.

The assassination play is the hardest version of the hardest assignment: an elite target who has been hiding from exactly this for 14 years, embedded in a tight community that will investigate her death with personal intensity, in a settlement with no Meridian coverage (which means no tracking but also no controlled information environment). The assassin who does this cleanly is exceptional.


Does the 10-Axis Model Cover All Five Hooks?

Verdict: 4.5 of 5. One gap found.

The investigation hook lives in Axes 4 (Secret) + 5 (Information Access). The tycoon hook lives in Axes 8 (Economic Position) + 3 (Actual Motivation). The dating sim hook lives in Axes 6 (Trust Architecture) + 10 (Tolerance Threshold). The political hook lives in Axes 9 (Relationship Network) + 2 (Surface Motivation). The assassination hook lives in Axes 7 (Routine Pattern) + 4 (Vulnerability).

The gap: None of the 10 axes explicitly encodes network-level significance vs. locally-perceived significance. Ysabel is locally-perceived as an ANCHOR with no enemies — she generates zero assassination_difficulty signal from the local society profile alone. The assassination hook only becomes available when a player has access to network-level intelligence (a Commission warrant database, Syndic contractor records, or specific investigation threads that trace back to Callen).

The 10-axis model as currently specified cannot distinguish between:

  • An NPC who is genuinely locally insignificant (no network-relevant secrets)
  • An NPC who is locally insignificant in appearance but carries network-significant information or is network-relevant to external actors

Proposed extension: Axis 11 — Network Footprint

network_footprint: Option<NetworkFootprintTag>

For most NPCs: None. They are exactly what they appear to be in the local context.

For NPCs like Ysabel: Some(NetworkFootprintTag), which records:

  • The external actor(s) who consider this NPC significant
  • The reason (possesses evidence, was witness to event, holds a capability, has a connection)
  • The access tier required to see this footprint (investigation players reach it via Commission databases; tycoon players reach it via Syndic network intelligence; other playstyles may not reach it at all)

This axis does not change local behavior. Ysabel is still an ANCHOR. Her routine is still the same. But the generator can now guarantee that the Tactical triangle (Ysabel ↔ Callen's agents ↔ investigating player) is instantiated, even when the district's local assassination_difficulty score would not flag it.

Implementation note: The network_footprint field should be authored on specific NPCs and not procedurally generated. Procedural NPCs default to None. The "false backwater" scenario — where a network-significant actor is hiding in a locally-insignificant setting — is a named scenario type authored by content designers, not a generator output. The generator needs to support this scenario type (by providing the field and the Tactical triangle infrastructure), not generate it from scratch.


OQ-R4-C: Assassination Difficulty Descriptor — Definitive Placement

Answer: DerivedDistrictAnalysis, stored on DistrictSkeleton, computed at Phase 1 (NPC Population stage), not runtime-mutable.

The question was: does assassination_difficulty live on the DistrictSkeleton, on the SocietyProfile, or is it computed on demand?

It should NOT live on the SocietyProfile directly — the SocietyProfile describes the cultural parameters, not their derived game-mechanical implications. The SocietyProfile does not know it's being used for game generation.

It should NOT be computed on demand by the assassination gameplay system — it's used by the Tactical triangle instantiation logic during Phase 1, before the gameplay system ever runs. Computing it late means the Phase 1 skeleton doesn't know whether to instantiate Tactical triangles, produce egress multiplicity guarantees, or budget temporal opacity windows.

It should NOT be on DramaDensity (runtime storyteller state) — the cultural difficulty of assassination doesn't change because the storyteller elevated the drama. A Dust-dominant community is still a Dust-dominant community regardless of how much drama is currently firing.

Canonical placement:

struct DistrictSkeleton {
    // ... existing fields ...
    guarantee_audit: GuaranteeAuditResult,    // existing
    derived_analysis: DerivedDistrictAnalysis, // NEW: computed from society profile
}

struct DerivedDistrictAnalysis {
    assassination_difficulty: AssassinationDifficulty,
    // Computed from: observation_density × information_liquidity × aftermath_engagement
    // All three derived from society_profile.heritage blend + economic_pressure

    assassination_target_density: u8,
    // Count of NPCs with network_footprint: Some(_) OR with local significance that makes
    // them viable local targets. Drives Tactical triangle instantiation budget.

    primary_playstyles: [AffinityLevel; 5],
    // Per-playstyle rating derived from setting type. Drives content budget weighting.
}

enum AssassinationDifficulty { Low, Medium, High, Extreme }

What "computed from society profile" means concretely:

observation_density    = heritage_weighted(frost:low, tide:high, iron:medium_high,
                         dust:very_high, stone:medium, arc:low, vine:high, salt:low,
                         jade:high, spice:high_within_group)

information_liquidity  = heritage_weighted(frost:very_low, tide:high, iron:high_within,
                         dust:high, stone:low, arc:medium, vine:very_high, salt:conditional,
                         jade:low, spice:low_to_outsiders)

aftermath_engagement   = heritage_weighted(frost:low, tide:high, iron:high, dust:high,
                         stone:medium, arc:very_high, vine:medium_high, salt:medium,
                         jade:medium, spice:very_high)

assassination_difficulty = classify(
    observation_density × 0.35 +
    information_liquidity × 0.30 +
    aftermath_engagement × 0.35
)

Faction presence modifies the computed value: Commission comprehensive coverage shifts difficulty up one tier (institutional investigation adds aftermath risk). Commission absent with high-Dust community culture = the most dangerous community aftermath without institutional support.

Used by: Tactical triangle instantiation (decides how many Tactical triangles to budget per district, weighted by whether the difficulty makes assassination plausible gameplay). Spatial guarantee audit (Tier 3 conditional checks A-1 through A-4 fire for districts where assassination_difficulty != Extreme — Extreme difficulty districts don't need to budget for assassin success, they budget for assassin failure learning). Content balance tools (designer visibility into why a given district is Hard vs. Easy for assassination play).


OQ-R4-D: Heritage Grammar Overlay — Concrete Representation for Chunk Fill

Answer: Per-heritage HeritageGrammarOverlay structs stored in the generator's authored data, injected into ZonePalette at chunk fill time via weighted blending.

The 10-row heritage grammar table from my Round 3 document needs a form chunk fill can consume. Araminta's question was: per-heritage modifier objects, or lookup tables within terrain palette assets?

Per-heritage modifier objects. The distinction matters for authoring workflow: lookup tables within terrain assets means the heritage grammar is embedded in art assets (Araminta's domain, not mine). Per-heritage modifier objects means the grammar rules are authored in worldbuilding data and consumed by chunk fill as parameters. This is the correct separation — I author the cultural grammar; the terrain palette assets provide the visual vocabulary; chunk fill applies the grammar to the vocabulary.

The concrete struct:

struct HeritageGrammarOverlay {
    // For which root this applies
    heritage_root: HeritageRoot,

    // BLOCK-LEVEL ORGANIZATIONAL PRINCIPLES
    // These affect block planning decisions, not just chunk fill

    boundary_character: BoundaryCharacter,
    // What physical form boundaries between properties take
    // Frost: MinimalFunctional (wire/stake, minimal material)
    // Stone: PermanentMaterial (stone wall, heavy posts)
    // Tide: OpenOrNominal (cleared path, no physical barrier)
    // Iron: CollectivelyMaintained (shared fence line, communally repaired)
    // Dust: PracticalRepaired (patched material, visibly maintained because replacement is costly)
    // Vine: OrganicIntegrated (planted hedge, climbing plants as boundary)
    // Salt: ClearlyDemarcated (clean lines, legible entry points)
    // Arc: LabeledAndCategorized (marked with notation, documented)
    // Jade: AestheticlySelected (materials chosen for visual quality)
    // Spice: HonorAdjacentEnclosure (compound wall, family territory marker)

    open_space_character: OpenSpaceCharacter,
    // What purpose the open/unclaimed space between structures serves
    // Functional / Gathering / Ornamental / Buffer / None

    structure_spacing: f32,
    // Multiplier on base terrain spacing. 0.8 = compact, 1.0 = standard, 1.5 = dispersed

    // CHUNK-FILL LEVEL VISUAL MODIFIERS
    // These affect which objects from the terrain palette get selected

    decorative_density: f32,
    // 0.0 (Frost: no decorative elements) to 1.0 (Jade: maximum curation)
    // Affects: how many decorative object slots are filled from the palette

    gathering_anchor_near_work: bool,
    // Tide/Vine: true — social spaces woven into work spaces
    // Frost/Arc: false — social and work spaces are separated

    shared_infrastructure_preference: bool,
    // Iron/Dust: true — communal granaries, shared equipment storage
    // Salt/Spice/Frost: false — individual storage and equipment

    repair_visibility: f32,
    // Dust: high (patched materials in visible use)
    // Jade: low (replacement preferred over visible repair)
    // Stone: medium (maintained, not replaced unnecessarily)
    // Frost: medium-low (functional repair, not displayed)

    facade_investment: f32,
    // Spice: high (aesthetic investment in public-facing surfaces)
    // Frost: very low (exterior presents nothing)
    // Vine: medium-high (exterior says "people live here")
    // Salt: low (commercial clarity, not personal expression)
    // Jade: high (careful selection of visible materials)

    signage_density: f32,
    // Arc: high (things labeled and categorized)
    // Frost: very low (minimal labeling)
    // Salt: medium (commercial labels, pricing visible)
    // Stone: low (land markers but not informational signage)

    // OBJECT POOL MODIFIERS
    // Heritage-specific weighting of which objects from the terrain palette are preferred

    preferred_enclosure_tags: Vec<ObjectTag>,
    // Which enclosure objects this heritage preferentially places
    // Frost: ["functional_stake", "wire_minimal"]
    // Stone: ["stone_wall", "heavy_post", "stone_foundation_exposed"]
    // Vine: ["planted_hedge", "climbing_trellis", "woven_stake"]

    accent_object_tags: Vec<ObjectTag>,
    // Objects that appear more frequently in this heritage's spaces
    // Tide: ["seasonal_decoration", "gathering_table_outdoor", "shared_fire"]
    // Arc: ["label_stake", "record_board", "measurement_tool"]
    // Jade: ["aesthetic_planting", "quality_material_accent", "curated_stone"]

    excluded_object_tags: Vec<ObjectTag>,
    // Objects this heritage actively avoids
    // Frost: ["gathering_table_outdoor", "decorative_public_display"]
    // Iron: ["private_luxury_accent", "status_display_object"]
    // Arc: ["unlabeled_storage", "disorganized_pile"]
}

How chunk fill uses it:

1. Get district's society_profile.heritage (Vec<HeritageEntry> with blend weights)
2. For each heritage root in blend:
   a. Look up its HeritageGrammarOverlay from authored data
3. Blend overlay parameters by heritage weight:
   decorative_density = sum(root.decorative_density × root.blend_weight)
   repair_visibility = sum(root.repair_visibility × root.blend_weight)
   [etc. for all scalar fields]
4. For categorical fields (boundary_character, etc.): select by dominant heritage weight
5. For object tag lists: union of preferred/accent tags, intersection-exclusion of excluded tags
6. Apply blended overlay to base ZonePalette:
   - Modifies object pool selection probabilities
   - Adjusts spacing and density parameters
   - Sets facade/interior investment balance
7. Proceed with normal chunk fill using modified palette

Authoring workflow: I maintain the canonical HeritageGrammarOverlay data for each of the 10 roots. Araminta expresses these as specific object pool compositions in her visual grammar. The chunk fill pipeline reads my data structures; Araminta's assets populate the object pools that those structures reference. Cross-domain requirement: the ObjectTag vocabulary must be shared between my heritage grammar spec and Araminta's asset categorization.

Storage: The HeritageGrammarOverlay set (10 roots) is global authored data, not per-district. It is loaded once at generator startup and referenced during chunk fill.


Vessel Cultural Grammar — Finalization

Lead decision: entity-carried MobileChunk is CORE. Tyre's architecture wins. This closes OQ-R4-A for cultural grammar purposes.

My supplement (Round 3) established the cultural grammar for all vehicle types. Now that the architectural question is settled, I can finalize these as the canonical spec for Tyre's MobileChunk cultural layer.

transit_social_modifier — Canonical Spec

struct TransitSocialModifier {
    // Rate adjustments — multiplicative on base society_profile rates
    trust_building_multiplier: f32,     // 1.52.5x (forced proximity accelerates)
    privacy_level_modifier: f32,         // 0.3 to 0.6 (physical impossibility of full privacy)
    enforcement_level_modifier: f32,     // 0.4 to 0.7 (institutional attenuation)

    // Information flow modifiers
    internal_flow_multiplier: f32,       // 1.53.0x (nowhere else to direct social energy)
    external_flow_blocked: bool,         // true during interstellar transit

    // Vehicle-type-specific grammar
    variant: TransitVariant,
}

enum TransitVariant {
    BoundedLinear {
        // Train: linear access topology, class-sequence social grammar
        car_sequence: Vec<SocialCarZone>,
        // Each SocialCarZone has: access_tier, heritage_norms, dominant_heritage_override
        // The dominant heritage of each car class can differ from the train's overall profile
        // Example: premium car may be Arc/Jade-flavored; general car is Iron/Frost/Tide-weighted
        temporal_pressure: Duration,
        witness_compactness: WitnessCompactnessLevel, // Low | Medium | High | Maximum
    },
    BoundedMobile {
        // Ship within system: bounded spherical, crew insider threshold applies
        crew_insider_threshold: f32,     // crew members get trust bonus vs. passengers
        passenger_manifest_seeded: bool, // true = manifest fixed at departure
        temporal_pressure: Duration,
    },
    InterSystem {
        // Between horizon gates: most extreme information asymmetry
        jurisdiction_suspended: bool,    // true = no Commission enforcement authority
        external_comms_blocked: bool,    // true = no contact with outside until arrival
        institutional_role_strip: f32,   // 0.01.0 = degree to which formal roles attenuate
        // full strip (1.0) = roles are entirely social, no institutional backing
        // partial strip (0.5) = hierarchy nominally maintained but enforcement is social only
    },
}

Cultural Grammar Rules by Vehicle Type

Trains (BoundedLinear)

The car sequence is a physical expression of social hierarchy. The player can observe the class gradient simply by walking the train from end to end. Heritage roots determine how each class tier behaves socially:

Car class Frost-flavored Tide-flavored Iron-flavored
Premium Compartmentalized, minimal contact, high privacy Communal first-class dining, shared tables, conversation expected Rarely present; if Iron workers are in premium, they are uncomfortable and close-grouped
Standard Row seating, neighbors interact minimally, book/screen focus Groups naturally form, food shared, children move freely between seats Solidarity cluster: workers know each other, outsider immediately noticeable
General Silent efficiency, space maintained, no eye contact Loud, community atmosphere, information flows freely Union-aware space: political conversation common, newcomer assessed

Temporal pressure characteristic: the journey ends at a known time. This creates a countdown quality that makes every conversation feel slightly more urgent than it would in a fixed district. Social information that would take a week to surface in a bar emerges in four hours on a train.

Assassination on a train: classic scenario architecture. The target cannot escape. The witnesses cannot leave. The elimination window exists during the one car-class transition moment when crowd density drops and witness configuration changes. Post-action management is compressed: the assassin must establish an alibi and manage evidence during the remaining journey time, with arrival at destination being the hard deadline for investigative exposure.

Ships within system (BoundedMobile)

Crew insider threshold means: crew members have a distinct trust baseline toward each other and a different baseline toward passengers. The ship has two overlapping social contexts — crew community (stable, long-established) and passenger community (temporary, journey-specific).

Heritage root behavior for crew:

  • Iron-heritage crew: high solidarity, newcomers (including player) are assessed by competence and contribution before being trusted
  • Salt-heritage crew: transactional; they'll exchange information if there's value in it
  • Tide-heritage crew: the ship becomes their community; they welcome passengers more readily than Iron crew would

Heritage root behavior for passenger pool (seeded at departure from available NPC pool at origin):

  • The passenger manifest is the scenario's social content; its heritage composition is seeded from the departure location's population distribution
  • A ship leaving from a Frost-dominant hub has different passenger social dynamics than one from a Tide/Vine port

Interstellar transit (InterSystem)

The most extreme case. jurisdiction_suspended: true means the ship exists in a legal vacuum. Normal enforcement depends entirely on the crew's own authority, which is social rather than institutional during transit.

Heritage root behaviors under institutional suspension:

Heritage root Behavior under suspension
Frost Doubles down on privacy. Less interaction, not more. The individual becomes more contained as external structures relax.
Tide The ship-community expands to fill the void. Social bonds form fast. The journey becomes the community.
Iron Collective awareness activates. Workers organize informally. Whoever has practical competence gets listened to regardless of formal role.
Salt Grey-market window opens immediately. Things that couldn't be traded under normal jurisdiction can now be traded. The Salt-heritage passenger is calculating.
Arc Discourse opportunity. The suspended context removes the social penalties for unconventional conversation. The Arc-heritage traveler wants to talk about things they couldn't in normal social context.
Spice Family networks become the social unit. Non-family outsiders are on the outside of the primary social structure.

external_comms_blocked: true means the information environment is sealed. An investigator who reaches an in-transit ship has maximum information opportunity (witnesses can't leave, everyone is accessible) with zero outside support. Whatever they learn, they must act on within the confines of the journey.

Setting note on information asymmetry in transit

Transit is where the game's core mechanic is most exposed. Normal districts allow players to defer: talk to that NPC tomorrow, check the archive next week, come back when you have better access. Transit removes deferral. The pressure is the content.

Every vehicle type compresses the information landscape. The same NPC who would take three weeks of careful relationship-building in a district may reveal the same information in a 6-hour voyage — because the social pressure of proximity, the absence of external distraction, and the shared condition of confinement change the trust calculus. The transit modifier multipliers are not arbitrary: they reflect what forced proximity does to human social behavior.


Summary: Round 4 Deliverables

OQ-R4-E (WRITE THE NPC): Done. Ysabel Vorn, 14 years at Harrow Drift, Stone/Tide farming settlement. Full 10-axis profile. All five lenses demonstrated with specific information ladders, gameplay hooks, and operational details.

Finding from the NPC exercise: The 10-axis model covers 4.5 of 5 lenses fully. The gap: no axis for network-level significance vs. locally-perceived significance. A locally-appearing NPC who is a network-significant target is currently invisible to the assassination lens until a player has network-level access. Proposed: Axis 11 (Network Footprint) as an authored field, defaulting to None for procedural NPCs, set explicitly for scenario NPCs like Ysabel.

OQ-R4-C (Assassination Difficulty Placement): DerivedDistrictAnalysis struct on DistrictSkeleton, computed at Phase 1 from society profile parameters. Not runtime-mutable. Carries assassination_difficulty: AssassinationDifficulty, assassination_target_density: u8, and primary_playstyles: [AffinityLevel; 5].

OQ-R4-D (Heritage Grammar Overlay Encoding): Per-heritage HeritageGrammarOverlay structs in authored global data. Chunk fill blends overlays by heritage weight and applies to base ZonePalette. Authoring domain is mine (cultural rules); visual asset expression is Araminta's (object pool populations). ObjectTag vocabulary must be shared.

Vessel cultural grammar: Finalized as TransitSocialModifier with TransitVariant enum covering BoundedLinear (trains), BoundedMobile (in-system ships), and InterSystem (between horizon gates). Heritage-root behavior tables by vehicle type. All content in my Round 3 supplement is now formalized as a concrete spec ready for Tyre's MobileChunk implementation.


Author: Miri Date: 2026-02-27 Status: Round 4 complete.

One item for the D-record stack: The HeritageGrammarOverlay struct should become a D-record (adds to D-READY-9: Heritage Grammar Overlay for Non-Urban Palettes). The NPC Axis 11 finding should be raised as a new Q-record for the next sprint — it is a gap in the current NPC generation model that affects assassination scenario instantiation specifically.