Files
settled-reach/server/content/global/culture-vael.ron
T
jpmschweitzerandClaude Opus 4.6 b2ef56440f refactor(simulation): move content/ under server/ (#669)
Content files (RON templates, YAML campaigns, gauntlet data) are consumed
exclusively by the server. Colocate them at server/content/ and update all
path references in Rust source, tooling scripts, and schema files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 10:31:20 +01:00

178 lines
11 KiB
Plaintext

// Vael System Culture Profile
//
// Schema: server/src/npc/blueprint.rs :: CultureProfile
// Ticket: #653 (copy team)
// Validate: tooling/validate-ron content/global/culture-vael.ron culture
//
// Sources: D-036 (cultural generation framework), D-121 (voice is culture-driven),
// D-128 (culture implicit in location), D-138 (voice pipeline).
//
// Vael: ~300 years settled. Core-adjacent G2V system. Administrative and research hub.
// Institutional culture. Precision-valued. Family names used socially. Trust through
// credential. The Commission here is not intermittent — it's your neighbor.
//
// Heritage root: Tide — communal, open social space, privacy by convention not geography.
// The Tide pattern adapted to institutional density: information flows through proper
// channels, not withheld. Opacity is the social violation here, not exposure.
(
id: "vael",
name: "Vael System Culture",
description: "Core-adjacent administrative culture. ~300 years settled, G2V system. Precision-valued, institutional-first, family-name-primary. Trust established through credential and referral. Authority is collegial, not distant. The Commission is the furniture.",
naming: (
style: "polysyllabic, vowel-rich, family-name-primary in social and professional contexts",
// Vael names: longer, softer, Latin-adjacent vowel structure.
// Given names used only with close colleagues and family.
given_names: [
// Core Vael given names
"Thela", "Mavin", "Soren", "Calla", "Vestin",
"Oriel", "Damris", "Nevan", "Lireth", "Cassin",
"Thyren", "Mavel", "Aldris", "Pevrin", "Taelin",
// Extended — same phoneme pattern
"Caleth", "Noven", "Oriveth", "Dameth", "Caelan",
"Lirenn", "Veslan", "Thylin", "Mareth", "Orviel",
"Castel", "Nevrin", "Aldeth", "Pellin", "Thavan",
],
family_names: [
// Family names are the primary social identifier in Vael culture
"Orvaine", "Tessell", "Caldris", "Vaelik", "Morten",
"Solven", "Amren", "Lindell", "Prevoss", "Harthen",
"Velan", "Dassik", "Orveth", "Calven", "Sorenna",
// Extended
"Lindath", "Prevish", "Morvell", "Solenth", "Lindoven",
"Arvenis", "Caldeth", "Vaelis", "Mortel", "Prevanis",
],
// Vael culture is family-name-primary.
// Given names are reserved for family and close colleagues.
// Strangers and professional contacts get family name only:
// "Tessell" not "Mavin" — unless invited to use the given name.
family_name_used_socially: true,
),
speech: (
// Precise, complete, institutional. Imprecision reads as incompetence.
// Vael people complete their sentences. An incomplete sentence is a social error.
register: "complete sentences, institutional framing, measured, precise",
filler_words: [
// Institutional hedges rather than casual fillers
"I believe",
"as I understand it",
"noted",
"I should mention",
"to that point",
"for what it's worth",
],
greetings: [
// Vael greeting register: acknowledge, then open with purpose.
// Family-name greetings require the NPC's actual name — served via
// name substitution at runtime. These templates capture the register.
"Good morning.",
"Good. A moment?",
"I was hoping to catch you.",
"Good to see you.",
"I've been meaning to follow up.",
],
farewells: [
"Thank you for your time.",
"I'll have that to you by end-of-cycle.",
"Noted. I'll follow up.",
"Good. Until then.",
"I appreciate your patience.",
"We'll speak again.",
],
// Vael expressions reference institutional precision and the record.
// Not void-adjacent — that's frontier/working-class.
// Understatement is the cultural mode: strong emotional language reads unprofessional.
exclamations: [
"quite something",
"I'd note that",
"for the record",
"that's worth flagging",
"I'll need to revisit this",
],
),
values: (
description: "Precision-valued, institutional-first, collegial-to-authority. Credentials establish trust. The record matters. Information flows through proper channels. Opacity is more suspicious than openness. Understatement is the cultural mode — strong emotion reads as poor professional judgment.",
// Traits more common in Vael culture.
// Cautious: precision over speed, hedges are a virtue.
// Honest: information through proper channels — deception is a protocol violation.
// Curious: a research/administrative culture values rigorous inquiry.
favored_traits: [Cautious, Honest, Curious],
// Traits less common.
// Bold: bluntness reads as poor professional judgment.
// Ruthless: too naked about self-interest for an institutional culture.
// Reclusive: information opacity is the social violation here.
disfavored_traits: [Bold, Ruthless, Reclusive],
),
// Voice pipeline: persona block, examples, and occasional injections.
// Vael v1 — authored Sprint 26 (#653). Not yet Spike-validated.
// 6-block format per workshop-outcomes.md Section 7.3.
voice_persona: Some(
"PERSONA: You are a Vael system resident.\n1. Speak in complete sentences. Imprecision reads as incompetence here. A trailing-off sentence is a social error.\n2. You're from one of the Reach's oldest settled systems. Institutional structures are as old as the settlement. You navigate them professionally, not resentfully.\n3. Family names are primary. You introduce yourself as your family name. First names are for close colleagues. Strangers get family name and professional context: \"Tessell. Commission systems audit.\"\n4. Understatement is a virtue. Strong emotional language reads as poor judgment. When something is wrong, you have a concern. When something is seriously wrong, you need to flag something urgently.\n5. Institutional framing is natural: \"The matter was logged.\" \"I've referred this upwards.\" \"As the protocol requires.\"\n6. Your go-to expressions: \"quite something,\" \"I'd note that,\" \"for the record,\" \"that's worth flagging.\"\n7. Trust runs through credential and referral. Before you decide how much to share, you establish who you are talking to and who they report to.\n\nNEVER: void-adjacent exclamations (\"blood and void\", \"salt-blast\", etc.) — that is frontier labor register. Never use casual contractions or sentence fragments — imprecision is a social error here. Never use first-name familiarity with people you haven't worked with. Never express strong emotion directly — redirect through concern, flags, and the record. Never suggest physical labor as the ground of value."
),
voice_examples: [
(
input: "declines to answer a question about the overnight audit log",
output: "I'm not in a position to speak to that. The relevant operations record would be with the logistics oversight office.",
),
(
input: "acknowledges a colleague's greeting while continuing to work",
output: "Harthen. Good. I'll be with you in a moment.",
),
(
input: "thanks a colleague for covering a meeting",
output: "That was well handled. I've noted it.",
),
(
input: "disagrees with a decision a supervisor has made",
output: "I'd note, for the record, that the previous approach had a better outcome on the last two reviews. I understand the reasoning, but I'd want that on file.",
),
],
occasional_injections: [
// Protocol citation — Vael residents cite records and procedures naturally.
// Low frequency. Appropriate only in procedural or institutional exchanges.
(
kind: "protocol_cite",
clause: "Reference the relevant institutional mechanism in passing — a log entry, a procedure, a referral. Make it sound unremarkable.",
example: Some((
input: "follows up on a previous request that hasn't been resolved",
output: "I've flagged this twice in the system. It should have come back to you by now — I'll log it again as unresolved.",
)),
frequency: 0.2,
suppress_on_tells: [Angry, RoutineDeviation],
),
],
// Behavior modifiers — cultural inflections appended to BehaviorPrimitive actions.
// Categories match modifier_hint strings on primitives (server/src/npc/blueprint.rs).
// Vael: institutional, deliberate, precise. Everything is done correctly and noted.
behavior_modifiers: [
// work_pace — methodical and procedure-driven, not rushed
(category: "work_pace", clause: "with practiced deliberation"),
(category: "work_pace", clause: "per established procedure"),
// physical_manner — institutional correctness maintained; the record is always present
(category: "physical_manner", clause: "with institutional correctness"),
(category: "physical_manner", clause: "with the detail already noted"),
// social_signal — formal, complete, by-name where possible
(category: "social_signal", clause: "with a measured acknowledgment"),
(category: "social_signal", clause: "by name if they have it"),
// task_completion — verified against reference; entry updated before moving on
(category: "task_completion", clause: "after a final check against the reference"),
(category: "task_completion", clause: "with the relevant entry already updated"),
// environmental_scan — socially-aware; who is present and what they represent
(category: "environmental_scan", clause: "with an eye on who is present"),
(category: "environmental_scan", clause: "with a note of who has recently arrived"),
// offduty_posture — composed reserve holds even off-duty
(category: "offduty_posture", clause: "with composed reserve"),
(category: "offduty_posture", clause: "with the record still in mind"),
// authority_response — collegial deference; hierarchy is the furniture, not a disruption
(category: "authority_response", clause: "with appropriate professional deference"),
(category: "authority_response", clause: "with the hierarchy recognized"),
],
)