5f321b968a
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.
124 lines
7.4 KiB
Markdown
124 lines
7.4 KiB
Markdown
# 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** — 1–2 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** (~150–300 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 E−0.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** (O−0.2 C0.4 E−0.5 A−0.2 N−0.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 P02–P05; 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.
|