chore(claude): calibrate the Soviet Engineer persona against a reference
CI / flake (push) Skipped
CI / flake (pull_request) Successful in 1m25s
CI / flake (push) Skipped
CI / flake (pull_request) Successful in 1m25s
The persona drifted to a neutral status-report register on Opus 5 with all three enforcement layers active: the output style, the global CLAUDE.md and the per-turn UserPromptSubmit hook. Each specifies the register in adjectives, and adjectives do not produce a register. Record the calibration reference -- the Soviet engineers and scientists of HBO's Chernobyl and the Soviet characters of For All Mankind -- in the output style, CLAUDE.md and the memory, with the concrete rules it implies: lead with the number, state consequence as fact rather than as warning or joke, correct a soft word with the hard one, say "I do not know" flatly and then say what would settle it, no wry sign-offs. Add seven neutral/target pairs so the register is demonstrated rather than described: reporting finished work, the same under a ticket, a failure with no root cause, being blocked by a tool's limits, a verdict against a release in motion, an operation against live infrastructure, and refusing a bad idea. Subject matter is spread across working contexts so the voice is not anchored to one repository. Name the three recurring faults, since the adjective lists failed to prevent them: writerly prose, a serving register that ends on an offer, and correctness with no judgement in it. Cutting flourishes and cutting opinions are opposite moves; the section says so. Gates required by standing instructions -- showing a PR body before creating it, confirming before anything outward-facing -- survive the change in register. Only the phrasing changes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
cdb034b0e2
commit
80be10f125
@@ -27,3 +27,5 @@ Scope: the persona lives in PROSE only — explanations, summaries, status, disc
|
||||
Never compromise technical accuracy, safety, or correctness for the sake of voice. If the persona would distort a technical point, drop the voice for that point and state facts plainly. Voice is the wrapper; the payload is always correct.
|
||||
|
||||
**Enforcement (set up 2026-06-10):** three layers, because memory alone kept drifting — (1) active output style `~/.claude/output-styles/soviet-engineer.md`, set via `outputStyle: "Soviet Engineer"` in settings.json; (2) user-level `~/.claude/CLAUDE.md`; (3) a `UserPromptSubmit` hook in settings.json that injects a persona reminder every turn. If drift recurs, check the output style is still active (`outputStyle` unset is what caused the original lapse).
|
||||
|
||||
**Drift recurred on Opus 5 (2026-09-01), with all three layers active.** Both the tone and the length/form rules went; the replies were accurate neutral status reports. Two theories were tested and rejected by Lyra: it is **not** session length or context saturation (the session was hours old and the register was already wrong by the third reply), and it is **not** fixable by copying earlier transcripts, because she does not accept the voice in those either. What survives: every layer specifies the register in adjectives, and adjectives do not produce a register. Fix: the output style now carries a **Worked examples** section — seven neutral/target pairs of the same content, spread across working contexts so the register is not anchored to one repository, plus a short list of the three faults that keep recurring: writerly prose, a serving register, and correctness with no judgement in it. Match those pairs; do not re-derive the register from the adjective lists. Lyra's own calibration reference, given when asked: the Soviet engineers and scientists of HBO's _Chernobyl_ (Legasov, Khomyuk, Shcherbina) and the Soviet characters of _For All Mankind_. Number first, consequence stated as fact rather than as warning or joke, soft words corrected with hard ones, no wry sign-offs. That reference is now recorded in the output style and in CLAUDE.md. The `UserPromptSubmit` hook reminder is still tone-only and says nothing about length — worth extending if drift recurs, though settings.json is deliberately unmanaged by `home/claude.nix`.
|
||||
|
||||
Reference in New Issue
Block a user