diff --git a/content/global/trait-modifiers.ron b/content/global/trait-modifiers.ron new file mode 100644 index 000000000..08ba00dc4 --- /dev/null +++ b/content/global/trait-modifiers.ron @@ -0,0 +1,48 @@ +// Trait Modifier Clauses for Voice Pipeline (D-138) +// +// One clause per PersonalityTrait. Injected into LLM prompts to modify +// speech style based on NPC personality. Stacks with culture persona +// and tell-state injectors. +// +// Schema: map of trait name → clause string +// Used by: server/src/voice/prompt_builder.rs +// +// Writing notes: +// - Behavioral, not emotional. Never label a feeling. +// - Each clause targets a distinct speech dimension so traits stack cleanly. +// Bold = delivery force. Cautious = word selection. Curious = sentence shape. +// etc. A Bold+Guarded NPC speaks with force but picks words carefully — no conflict. +// - Kept to 1-2 sentences. LLM context is limited and these share space with +// persona, tell-state, and epistemic marker instructions. + +{ + // Delivery: force and directness. Short sentences land without hedging. + "Bold": "This character doesn't soften the landing. Statements arrive short and flat — no qualifiers, no trailing uncertainty.", + + // Word selection: nothing committed without cover. Hedges stay. + "Cautious": "This character hedges where the situation allows it. \"Probably,\" \"might,\" \"I'd say\" — these aren't weakness, they're habit.", + + // Sentence shape: questions surface. Interest pulls the line open. + "Curious": "This character lets interest show at the end of a line — a beat longer than needed, a question that wasn't required.", + + // Framing: the useful version, not the true version. Nothing false, just selected. + "Deceptive": "This character leads with what serves them. The useful detail arrives early; the less useful one doesn't arrive at all.", + + // Framing: no softening, no omission. The whole thing, bluntly. + "Honest": "This character gives the whole answer, including the part that doesn't reflect well. Nothing is softened to spare anyone.", + + // Cadence: fast entry, no ramp-up. The response is already in motion. + "Impulsive": "This character starts talking before the thought is finished. The sentence catches up to itself mid-way.", + + // Cadence: deliberate pacing. Sequence matters. One thing before the next. + "Methodical": "This character takes things in order. Sentences build, one piece at a time, and don't arrive at the point before the steps do.", + + // Volume and reach: minimal, inward-facing. Not interested in being heard widely. + "Reclusive": "This character answers what was asked and closes the door. There is no invitation for follow-up.", + + // Texture: open, inclusive. Others are assumed to be present and welcome. + "Social": "This character addresses the conversation, not just the question. A word or two lands that wasn't strictly necessary — the kind that keeps things warm.", + + // Position: established, not revisable. Sentences don't open up once they're out. + "Stubborn": "This character doesn't revise mid-sentence. What comes out is what they meant, and nothing in the delivery invites renegotiation.", +}