data(content): populate global enums and entity attributes (#387, #388)

Populate 9 enum YAML files (situations, topics, moods, triggers,
access-tiers, trust-tiers, activities, patterns, motivations) from
D-035 taxonomy and 16 canonical entity attribute keys from D-024
with A7 workshop updates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-13 01:19:02 +01:00
co-authored by Claude Opus 4.6
parent e309f66c99
commit b0fec9af09
10 changed files with 646 additions and 9 deletions
+41 -1
View File
@@ -1 +1,41 @@
# Access tiers: public, insider, authority, peer, hostile
# 5 access tier values (D-035, D-028 Layer 1)
# Hard filter on every dialogue line — determines who can hear what
name: access-tiers
decision_ref: D-035
description: >
Access tiers control which dialogue lines are available to the player based
on their current social standing at the NPC's social site. This is a hard
filter — lines are invisible if access doesn't match. A line can be eligible
for multiple access tiers (access is a list). The detective's institutional
Commission lattice registers as 'authority'; the smuggler's ring membership
provides 'insider' access.
values:
- value: public
description: >
Available to anyone. Surface-level conversation, safe topics, the social
wallpaper that everyone hears. Greetings, weather, the local complaint.
- value: insider
description: >
Available to people who belong. Ring members, established regulars, anyone
the NPC considers part of their social group. The smuggler starts here at
the logistics hub.
- value: authority
description: >
Available to institutional figures. Commission agents, station security,
anyone with formal investigative standing. The detective's default tier.
NPCs are more careful, more formal, less revealing.
- value: peer
description: >
Available to social equals who have earned personal trust. Not institutional,
not group membership — individual relationship. Requires repeated positive
interactions. The tier where real conversation happens.
- value: hostile
description: >
Available when the relationship has broken down. Accusations, threats,
defensive responses. Activates when trust drops below threshold or after
a confrontation event.
+55
View File
@@ -0,0 +1,55 @@
# NPC activity types for routine scheduling
# Derived from Gestalt routine format + Miri cultural patterns (Sova Transit District)
name: activities
decision_ref: D-024
description: >
Activity categories for NPC routine entries. Each routine schedule entry has a
phase (morning/afternoon/evening/night) and an activity describing what the NPC
is doing. Activities are used by the observation event generator to determine
what the player sees when observing an NPC, and by the situation activation
system to set dialogue context.
values:
- value: working
description: On-shift job duties — processing cargo, inspecting manifests, operating equipment
- value: supervising
description: Overseeing others' work — shift supervisor role, checking quality, giving orders
- value: maintaining
description: Maintenance and repair tasks — fixing equipment, cleaning, infrastructure upkeep
- value: patrolling
description: Security rounds — checking access points, monitoring areas, enforcement presence
- value: socializing
description: Casual social interaction — chatting at the bar, break room conversation, gossip
- value: drinking
description: At The Last Shift or similar — consuming drinks, unwinding after shift
- value: eating
description: Meal time — food vendors, break room, bar food
- value: resting
description: Off-shift downtime — in quarters, low activity, recuperating
- value: commuting
description: Moving between locations — corridor transit, shift change movement
- value: gambling
description: Card game at the bar — the regular social ritual, information exchange venue
- value: trading
description: Legitimate commerce — buying, selling, negotiating, market activity
- value: operating
description: >
Ring operations — contraband handling, manifest doctoring, coordination.
Only visible to characters with sufficient knowledge or direct observation.
- value: waiting
description: Idle between activities — lingering, watching, killing time
- value: meeting
description: Arranged or coincidental encounter with specific NPCs — planned conversation
+36 -1
View File
@@ -1 +1,36 @@
# 8 mood values
# 8 mood values (D-035, D-028 Layer 4)
# Mood tags for weighted dialogue selection
name: moods
decision_ref: D-035
description: >
NPC mood tags for Layer 4 weighted selection. The engine matches NPC current
mood state against line mood tags to weight selection. NPC mood changes based
on simulation events (triangle pressure, time of day, recent interactions).
Lines can be appropriate for multiple moods.
values:
- value: fond
description: Warm, affectionate. Genuine positive feeling toward the listener.
- value: comfortable
description: At ease, relaxed. Default positive-neutral state.
- value: worried
description: Anxious about something specific. Distracted, checking surroundings.
- value: suspicious
description: Guarded, measuring words. Something feels off to this NPC.
- value: analytical
description: Thoughtful, assessing. Processing information rather than emoting.
- value: conflicted
description: >
Torn between competing impulses. Loyalty vs. self-preservation, duty vs.
friendship. The mood of someone who hasn't decided what to do yet.
- value: concerned
description: Worried about someone else's wellbeing. Empathetic distress.
- value: relieved
description: Tension has eased. Something feared didn't happen, or a burden lifted.
+41 -1
View File
@@ -1 +1,41 @@
# 6 functional motivations (System B)
# 6 functional motivations System B (D-050)
# NPC functional role in the conspiracy/investigation structure
name: motivations
decision_ref: D-050
description: >
Functional motivations (System B) define an NPC's role relative to the
conspiracy and investigation structure. Combined with thematic patterns
(System A) to produce the full NPC generation model. Motivations are
uppercase enum values referenced by npc-profile.schema.json.
values:
- value: HANDLER
description: >
Manages or coordinates others within the ring structure. Has authority
over ring operations and knowledge of the network. Devra-type.
- value: WITNESS
description: >
Has seen or knows something significant, possibly without realizing it.
Their testimony or observations are valuable to the investigation.
- value: TURNCOAT
description: >
Wavering loyalty. Could flip sides given the right pressure or
incentive. The uncertain element in any conspiracy.
- value: CIVILIAN
description: >
Genuinely uninvolved. Their mundane concerns and daily life provide
the substrate that makes the conspiracy invisible. The honest majority.
- value: OPERATOR
description: >
Active participant in ring operations. Handles logistics, moves product,
takes direct action. Kael, Renn — the workers of the conspiracy.
- value: SKEPTIC
description: >
Questions the status quo — institutional, criminal, or both. May be
suspicious of the ring, critical of the Commission, or both. Asks
uncomfortable questions.
+57 -1
View File
@@ -1 +1,57 @@
# 9 thematic patterns (System A)
# 9 thematic patterns System A (D-050)
# NPC archetype patterns for character generation and narrative role
name: patterns
decision_ref: D-050
description: >
Thematic patterns (System A) define an NPC's narrative archetype — their
structural role in the story. Combined with functional motivations (System B)
to produce the full NPC generation model. Patterns are uppercase enum values
referenced by npc-profile.schema.json.
values:
- value: FRIEND
description: >
Production-level complex NPC bonded to a playable character (D-034).
Full 10-axis depth, contradiction arc, multi-phase relationship.
One per playable character in v0.1.
- value: MIRROR
description: >
Reflects the player character's situation from a different angle.
What the player could become, or what they might have been.
- value: ANCHOR
description: >
Stabilizing presence in the community. The person everyone knows,
who provides continuity and normalcy. The bar owner, the shift lead.
- value: GHOST
description: >
Absent or barely-present figure whose influence is felt through
others. Referenced in dialogue, effects visible, person rarely seen.
- value: CATALYST
description: >
Triggers change in others. Their actions or arrival destabilize
existing equilibria. The new hire, the returning contact.
- value: THRESHOLD
description: >
Gatekeeper between social worlds. Controls access to information,
spaces, or people. Their cooperation or opposition shapes player options.
- value: REMNANT
description: >
Carries the past. Remembers how things were before the current
situation. Provides historical context and perspective.
- value: SYSTEM
description: >
Represents institutional power. Their actions reflect organizational
priorities, not personal ones. The Commission agent, the inspector.
- value: NOBODY
description: >
Deliberately flat. Social wallpaper with one memorable trait.
Part of the 30% truly flat population (D-029). Provides the noise
floor that makes investigation signal meaningful.
+53 -1
View File
@@ -1 +1,53 @@
# 13 situation values (D-035)
# 13 situation values (D-035, D-028 Layer 2)
# Situation context for dialogue line eligibility — engine-state-to-situation mapping
name: situations
decision_ref: D-035
description: >
Dialogue situation tags. The engine activates situations based on simulation
state (time of day, interaction history, NPC routine state, triangle pressure).
Content authors tag lines with situations; the engine decides which situations
are currently active for a given NPC encounter.
values:
- value: arrival
description: Player has just arrived at this location (first visit this game-day)
- value: shift_start
description: NPC is beginning their work shift — settling in, task-focused
- value: shift_end
description: NPC is wrapping up their work shift — tired, ready to leave
- value: shift_transition
description: >
The gap between shifts when oversight is thinnest. Key operational window
for the ring. People are moving, handoffs happening, attention divided.
- value: bar_evening
description: Social hours at The Last Shift — off-duty, relaxed, drinks flowing
- value: night_shift
description: Late hours, skeleton crew. Quieter, more intimate conversations.
- value: investigation
description: Player is actively asking pointed or probing questions
- value: confrontation
description: >
Triangle tension has escalated past the pressure threshold. NPCs are
agitated, defensive, or aggressive. Activated by triangle pressure system.
- value: social
description: NPC is in a social activity — bar, break room, casual conversation
- value: alone
description: NPC is by themselves, no other NPCs nearby
- value: emergency
description: An urgent event is occurring — alarm, accident, security incident
- value: routine
description: Normal daily activity, nothing notable happening
- value: observation
description: Player is watching from a distance, not directly interacting
+44 -1
View File
@@ -1 +1,44 @@
# 9 topic values
# 9 topic values (D-035, D-028 Layer 4)
# Topic tags for weighted dialogue selection
name: topics
decision_ref: D-035
description: >
Dialogue topic tags for Layer 4 weighted selection. The engine matches NPC
current concern topics against line topic tags to weight selection. Lines can
cover multiple topics. Note: 'crime' is deliberately excluded — NPCs think
of smuggling as 'cargo' or 'money', not crime. The dual-lens interpretation
is what makes those topics crime-adjacent for the detective.
values:
- value: colleague
description: Talk about coworkers, workplace relationships, team dynamics
- value: routine
description: Daily schedules, habits, shift patterns, the rhythm of station life
- value: cargo
description: >
Freight, manifests, shipments — setting-specific. For ring members,
this covers contraband discussion without calling it that.
- value: money
description: Finances, costs, wages, spending. The economic squeeze.
- value: trust
description: Reliability, loyalty, who can be counted on, who's changed
- value: danger
description: Threats, risks, things to watch out for, security concerns
- value: institution
description: >
The Commission, station administration, regulations, official procedures.
How institutional power affects daily life.
- value: personal
description: Family, health, aspirations, feelings — non-work life
- value: investigation
description: >
Direct references to the detective's work, evidence, suspicions.
Typically only surfaces at higher trust levels or under pressure.
+56 -1
View File
@@ -1 +1,56 @@
# 9 monologue trigger types
# 9 monologue trigger types (D-035, D-032)
# What causes an internal monologue line to fire
name: triggers
decision_ref: D-035
description: >
Monologue trigger types. The observation event generator detects simulation
events and fires triggers consumed by the monologue system. Each trigger type
selects from character-specific pools (D-032 hard partition) and applies
prerequisite knowledge gates before selection.
values:
- value: enter_location
description: >
Player enters a new area. First impressions, atmosphere, spatial awareness.
"The Last Shift. Lera's already got my usual poured."
- value: observe_npc
description: >
Player sees an NPC doing something notable — an activity, a posture, a
tell. "Kael's at the corner booth. He looks rough tonight."
- value: hear_sound
description: >
Sound event from fog edge — voices through walls, footsteps in corridors,
machinery changes. The player interprets what they can't see.
- value: observe_anomaly
description: >
NPC deviates from known routine. The character notices something out of
place. "That's not where they usually go." Requires prerequisite knowledge
of the NPC's normal pattern.
- value: post_conversation
description: >
After dialogue ends. The character reflects on what was said, what wasn't
said, what felt off. Processing and interpretation.
- value: discover_evidence
description: >
Player examines an informational object — a manifest, a terminal, a
personal item. The character interprets what they find.
- value: witness_interaction
description: >
Player sees two NPCs interacting with each other. The character reads the
body language, the tone, the context. Social observation.
- value: time_idle
description: >
Player hasn't acted for a while. The character's mind wanders — ambient
thoughts, rumination, noticing background details.
- value: return_visit
description: >
Player returns to a previously visited area. Changed perspective, new
details noticed, comparison to last time. "Something's different."
+28 -1
View File
@@ -1 +1,28 @@
# Trust tiers: surface, real, secret
# 3 trust tier values (D-035, D-028 Layer 3)
# Hard filter for trust-gated gossip disclosure
name: trust-tiers
decision_ref: D-035
description: >
Trust tiers control information disclosure depth. Each NPC tracks trust
progression per player character, starting at surface. Trust advances
through repeated positive interactions. This is a hard filter — lines at
'real' or 'secret' trust are invisible until the player earns that level.
values:
- value: surface
description: >
Default tier. Safe, non-committal responses. What the NPC tells
strangers and acquaintances. The public face.
- value: real
description: >
Earned through repeated positive interactions. The NPC shares genuine
opinions, workplace complaints, personal concerns. What they tell
people they trust.
- value: secret
description: >
Highest tier. The NPC reveals information they'd normally hide —
involvement in the ring, knowledge of the smuggling operation,
fears and vulnerabilities. Reaching this tier with THE FRIEND is
where the contradiction arc becomes explicit.
+235 -1
View File
@@ -1 +1,235 @@
# Entity attributes — 16 canonical EntityKnowledge keys (D-055)
# Entity Knowledge Attributes — 16 canonical keys
# Source: D-024 (10-axis model), wiki-review workshop A7, v01-content-scoping workshop
# All keys are observer->target, stored in EntityKnowledge.known_attributes BTreeMap<String, String>
# Reference: docs/wiki/knowledge/entity-attributes.md
# Categories: identity (4), social (2), behavioral (2), leverage (2), investigation (2), role-perspective (4)
# History: 14 original keys + 4 new role-perspective keys + 2 renames (secret_held -> leverage_held, secret_confidence -> leverage_confidence)
attributes:
# --- Identity Attributes (4) ---
- key: name
category: identity
value_type: freeform
description: >
Full name as known to the observer. If absent or generic,
monologue and dialogue use role descriptor instead.
examples:
- "Kael Davan"
- "Kael"
- "the dock worker"
- key: role
category: identity
value_type: freeform
description: >
Occupational or social role. Default descriptor when name is unknown.
Used in access tier calculation.
examples:
- "dock worker"
- "shift supervisor"
- "bartender"
- "ring coordinator"
- key: faction
category: identity
value_type: freeform
description: >
Institutional or organizational allegiance. Commission-tagged individuals
trigger different NPC behavior. Used for authority/peer dialogue filtering.
examples:
- "Commission"
- "civilian"
- "ring member"
- "unknown"
- key: species
category: identity
value_type: freeform
description: >
Species identifier. Not load-bearing in v0.1 (all human).
Placeholder for future non-human NPCs.
examples:
- "human"
# --- Social Attributes (2) ---
- key: relationship_type
category: social
value_type: freeform
description: >
Relationship category from observer's perspective.
Drives RelationshipState calculation and monologue emotional tone.
examples:
- "colleague"
- "friend"
- "authority figure"
- "suspect"
- "partner"
- "stranger"
- key: trust_level
category: social
value_type: enum
values:
- trusted
- reliable
- uncertain
- suspicious
- compromised
description: >
Trust assessment — observer's subjective judgment. Encompasses both the
read action and the state. No separate trust_read key. Gates trust-tier
dialogue (surface/real/secret).
# --- Behavioral Attributes (2) ---
- key: routine_pattern
category: behavioral
value_type: freeform
description: >
Observed routine description. Deviation detection triggers monologue
when current behavior doesn't match known pattern.
examples:
- "morning shift 06:00-14:00, bar after shift"
- "arrives 06:00, break 10:30, departs 14:00"
- "irregular schedule, seen at odd hours"
- key: behavior_flags
category: behavioral
value_type: freeform
description: >
Comma-separated behavioral observations. Multiple flags accumulate
as evidence. Detective's analytical lattice auto-flags some behaviors.
examples:
- "nervous,lattice_checking"
- "avoidance_pattern,evasive"
- "spending_beyond_means"
- "reliable,punctual"
# --- Leverage Attributes (2) ---
# Renamed from secret_held/secret_confidence per workshop A7
- key: leverage_held
category: leverage
value_type: freeform
renamed_from: secret_held
description: >
What the observer believes gives them power over this entity.
Covers secrets, debts, promises, obligations, and compromising positions.
Drives PersonOfInterest state. Gates confrontation dialogue.
examples:
- "ring membership"
- "unreported evidence"
- "gambling debt"
- "exit attempt"
- "owes favor to Voss"
- key: leverage_confidence
category: leverage
value_type: enum
renamed_from: secret_confidence
values:
- suspected
- likely
- confirmed
description: >
How certain the observer is about the leverage. Suspected allows
fishing questions; confirmed enables direct confrontation.
# --- Investigation Attributes (2) ---
- key: tell_observed
category: investigation
value_type: freeform
description: >
Specific tell noted by observer. Captures the observer's interpretive
conclusion about behavior. Accumulated tells build case strength.
Monologue references specific tells when they recur.
examples:
- "looks left when lying"
- "leaves when Torek arrives"
- "checks lattice before answering"
- "forced casualness after shift supervisor passes"
implementation_note: >
Server may track tells via behavior_flags internally. tell_observed is
retained as a content-authoring key for its distinct narrative purpose.
- key: contradiction_flagged
category: investigation
value_type: freeform
description: >
Boolean-ish flag — presence of value means contradiction detected.
THE FRIEND arc trigger. When set, monologue tone shifts, dialogue
options change, RelationshipState moves toward PersonOfInterest.
examples:
- "meeting_unknown_contact"
- "avoidance_inconsistency"
- "manifest_access_mismatch"
implementation_note: >
Server may track via behavior_flags with contradiction: prefix.
Retained as documented key for arc transition gating.
# --- Role-Perspective Attributes (4 new per workshop A7) ---
# Same enums across all archetypes; interpretation is archetype-dependent.
# Smuggler reads "risk" as operational exposure; detective reads it as
# threat to investigation. See wiki entity-attributes.md for full mapping.
- key: risk_assessment
category: role-perspective
value_type: enum
values:
- none
- low
- moderate
- high
- critical
description: >
Observer's assessment of how much danger this entity poses or attracts.
Gates operational monologue. High-risk triggers cautionary dialogue.
Nature of "risk" depends on observer archetype.
- key: loyalty_assessment
category: role-perspective
value_type: enum
values:
- solid
- dependable
- uncertain
- wavering
- hostile
description: >
Observer's assessment of this entity's reliability and loyalty.
Determines how much the observer relies on or confides in the target.
Wavering triggers monitoring; hostile triggers defensive posture.
- key: position_integrity
category: role-perspective
value_type: enum
values:
- solid
- thin
- cracking
- blown
- "N/A"
description: >
Observer's assessment of this entity's cover, position stability,
or facade status. When degraded, monologue reflects increasing anxiety
or strategic recalculation. N/A when cover concept does not apply.
- key: moral_weight
category: role-perspective
value_type: enum
values:
- innocent
- peripheral
- complicit
- compromised
- willing
description: >
Observer's assessment of this entity's moral involvement. Shapes the
observer's moral arc and internal conflict. Smuggler assesses complicity
in ring operations; detective assesses culpability in the crime.
Same scale, different lens.