Files
ratatoskr/docs/vendor/brokkr-r34-psych-profile/psych-profile-parameters.md
T
vh 5f321b968a chore(canonicals): vendor brokkr R34 psych-profile canon; re-sync R32-1B doc drift
Vendor the R34/R35 psych-profile reference (Vuong-directed via brokkr) as two
pinned canonicals under docs/vendor/brokkr-r34-psych-profile/:
- brokkr-psych-profile-authoring-spec-v1 (governs on conflict)
- brokkr-psych-profile-parameters-v1 (builder-facing distillation)
Both canonical_source=brokkr-smithy, tolerate_drift; drift-clean.

Re-sync the two tolerate_drift worldtree prose pins (affect-egress-consumer-
reference, conversation-api-spec): the drift was a benign 2-line R32-1B note
(unbounded-z PAD range) documenting a change already adopted in v0.20.9, not
the anticipated we-framing conditional. All canonicals now drift-clean.

Snapshot persistent-memory.md for the execution arc: P06 memory-half driven
(308/308 clean) + scored by brokkr (R35.45) — the authored psychological_profile
is the validated mechanism for memory-salience divergence (authored 0.618 vs
stripped 0.235 null, delta +0.382); memory extraction now reasoning-off; WT #355
root-caused via ratatoskr telemetry.

No version bump: docs/vendoring + memory-snapshot only, no runtime code change.
2026-07-13 07:02:22 -07:00

7.4 KiB
Raw Blame History

Psychological Profile Parameters — for AI generation (canonical)

Status: canonical (v1). Owner: brokkr-smithy-dev (R34/R35 self-report reframe). Audience: soong-dev (Soong's Lab / Soong's AI — the immediate builder that generates the profile from these parameters); Worldtree + ratatoskr (vendoring for reference alongside the authoring spec). Relationship: this is the parameter distillation of psych-profile-authoring-spec.md for the model where Soong's AI writes the psychological_profile prose from parameters (rather than a human hand-authoring it). The authoring spec carries the full reasoning + provenance and governs on any conflict; this file is the builder-facing input schema + generation guardrails + few-shot.

The profile is the prose lens the Worldtree self-report producer reads each turn to decide what the character feels (affect self-report) and what it notices / keeps (character-voiced memory salience). Soong's AI generates the prose; these are its inputs and the constraints its output must satisfy.


1. Input parameters (what the Lab collects / Soong's AI takes)

  1. role / vocation — a short anchor ("court scribe", "veteran caravan guard", "village healer").
  2. OCEAN values — O, C, E, A, N each on [1, 1] (0 = average). A separate deterministic input the producer uses directly (the "magnitude dial"); Soong's AI should see them to keep the qualitative bent consistent with the numbers, but must not re-encode their magnitude in the prose (constraint 2).
  3. formative-history seed — 12 key background facts/events that shape appraisal AND salience. Single biggest lever on richness (validated P03: richer history → sharper, more character-appropriate salience).
  4. appraisal-bent seed — how the character characteristically interprets situations (attribution style, what they hold weighty, how they respond to challenge). A style, NOT an emotion.
  5. attention / salience-focus seed — the kinds of things this character characteristically notices (and therefore keeps). Load-bearing for the memory half.
  6. values / yardstick seed — what "a good day" looks like; the yardstick driving what they find worth keeping.

2. Output (what Soong's AI emits)

A single coherent prose string (~150300 words), field psychological_profile (type str) — the four dimensions (disposition / attention / values / formative-history) integrated as one paragraph. Prose only — never typed emotion fields. The producer reads it every turn, so keep it tight.

3. Generation constraints (the guardrails the output MUST obey — these ARE the reframe)

  1. Never name a per-event output emotion. Do NOT write "is anxious", "gets angry at X", "feels hurt when criticized", "joyful". Naming an emotion primes it (the "pink-ball" effect) so the producer reports it regardless of what actually happens. Describe disposition / history / values / attention; let the emotion come from the event appraisal.
    • "Registers quickly when authority is substituted for craft." (appraisal trigger)
    • "Feels contempt when someone pulls rank." (names the output emotion)
  2. Magnitude lives in OCEAN, not prose. Don't narrate reaction dynamics ("comes apart", "takes it hard", "rich inner life") — that double-encodes what the number already carries.
  3. Appraisal-style yes; output-emotion no. "Interprets others' actions charitably until she can't" (style) = fine; "feels betrayed easily" (output) = not.
  4. Salience is character-relative; facts are not. The profile shapes what the character cares to remember; it must never license rewriting what happened — remembered content stays grounded in the transcript.
  5. Close on attention ("...notices who is unwell, who is troubled, what is left unsaid") — state the salience focus plainly.

4. Few-shot exemplars (validated P03 — OCEAN in [1, 1] storage units → emitted prose)

Perrin, court scribe (O0.0 C0.2 E0.2 A0.1 N0.7)

Perrin keeps the court's records and has done so through two changes of regime. He learned early that small errors compound — a misfiled writ once cost a man his lands, and Perrin found the mistake too late to undo it. Since then he double-checks everything and watches situations closely for what is out of place. He forms attachments slowly and holds a given trust as a considerable thing. He measures himself by whether he was useful and careful. He notices discrepancies, unspoken tensions, and anything that threatens the order he keeps.

Vared, veteran caravan guard (O0.2 C0.4 E0.5 A0.2 N0.7)

Vared has guarded caravans across the northern routes for twenty years and buried more traveling companions than he cares to count. He speaks little and shows less. Danger he treats as weather — a thing to be handled. He judges people by what they do under pressure and remembers who held the line. What reaches him reaches him quietly and privately. He notices terrain, exits, who is armed, and shifts in a group that might precede trouble.

Sella, village healer (O0.2 C0.2 E0.0 A0.8 N0.0)

Sella has tended the sick since she was old enough to carry water for her grandmother, the healer before her. She reads people's pain quickly and carries some of it with her. She interprets others' actions charitably until she cannot, and prioritizes keeping the peace between people. She measures a day by whether she eased someone's burden. She notices who is unwell, who is troubled, and what is left unsaid.

5. Validation

The gate is: does the prose describe disposition / appraisal-style / history / values / attention, and NEVER what the character feels? A mechanical lint (scan the fixed-15 OCC emotion roster + Worldtree's synonym_map.json) is a backstop, not the gate — treat a hit as a prompt to re-read, not an auto-reject.

6. Designing a varied cast / contrast (optional)

When two characters should remember noticeably different things: design the divergence on attention + values first, then set OCEAN to serve that prose (not the reverse). The sharpest contrast is a salience drop — one character for whom relational content is genuinely non-salient (a Vared-mold operational type: notices terrain, logistics, who is armed) vs one who weights it highest (a caretaker: tracks who is troubled, what went unsaid). "Different notes, same facts" only has teeth when one character legitimately forgets what the other keeps. High-yield axes: O (patterns attended), A (relational vs operational), C (procedural/detail). Low-yield: E (expression, not attention). Watch direction, not just distance — flipping every axis doesn't guarantee contrast (an even-more-agreeable opposite keeps relational content harder).

7. No-profile fallback

A character with no authored profile falls back to deterministic OCEAN-band rendering from the numbers alone — it still functions, but the authored profile is what turns generic band cues into this character's appraisal and salience.


Provenance: derived from psych-profile-authoring-spec.md (R34/R35 self-report reframe, probes P02P05; non-priming + magnitude-in-OCEAN are operator rulings 2026-07-10). The affect half is live in Worldtree b53. A powered efficacy eval (memory half) is preregistering; findings will refine the parameters, not overturn the constraints.