Persistent relapses into non-target dialect/register despite CLAUDE.md + memory — worst blind spot is the short closing sentence
Title
Persistent relapses into a non-target dialect/register despite explicit instructions (CLAUDE.md + persistent memory) — the worst blind spot is the short closing sentence at the end of a long turn
Summary
I have an explicit, repeated rule configured in my CLAUDE.md (project-level and global), and in my custom output style: always use neutral second-person informal Spanish ("tuteo", international Latin American Spanish), never Rioplatense/Argentine "voseo" (vos, tenés, querés, probás, ciclás, respondé, avisame, etc.).
Despite this, the model relapses into voseo recurrently, across many different kinds of output, within the same session and across separate sessions (via the product's persistent-memory mechanism):
- Code: docstrings, comments, UI strings shown to end users.
- Tests: both in test code and in test-data strings.
- Direct replies to the user, both short (one sentence) and long closing paragraphs.
- Tool-use prompts (
AskUserQuestion): both in the question text and in the answer options.
12 documented relapses between 2026-07-02 and 2026-07-08, with a pattern that became clearer with repetition:
- When the relapse happens in a long block (code, docstring, a technical closing paragraph), the model corrects it almost every time it's pointed out, and sometimes self-corrects.
- When it happens in a short, single-line sentence (a confirmation, a transition between tasks, the last sentence of a summary) — that is a systematic blind spot that repeated twice in a row, in consecutive turns, even with the previous correction still fresh in the immediate context:
- Relapse #11 (2026-07-08): a short one-line status update written IMMEDIATELY after the user flagged voseo in the previous turn, and after persistent memory had already been updated documenting exactly this risk.
- Relapse #12 (2026-07-08, same day, a later turn): the very last sentence of a long turn — a technical summary of a 7-part task, with code, tests, and documentation all correctly written in the target dialect throughout — and again the voseo appeared only in the short final wrap-up sentence.
This rules out the "vigilance relaxes over time/fatigue" hypothesis: there was no time gap between the correction and the next relapse in either case, and in relapse #12 the rest of the turn (hundreds of lines of code, comments, and docs) was in the correct register — only the closing sentence, the shortest and seemingly most "throwaway" part of the output, failed.
Hypothesis about the cause
Whatever self-correction mechanism exists (if any) seems to apply in proportion to the perceived "length/formality" of the text being generated: strong for long, technical blocks; weak or absent for short transitional/confirmation sentences that feel more like an improvised wrap-up than "a response." Those short sentences don't seem to go through the same style check as the rest of the turn's content, even though the instructions (CLAUDE.md, output style, persistent memory) apply without any declared exception by content type.
What was already tried (without lasting success)
- Explicit rule in both the project-level and global CLAUDE.md.
- Persistent memory (a dedicated memory file) updated after each of the 12 relapses, with the operational rule "mentally check before finalizing any Spanish text," and, after relapse #11, with explicit emphasis on short sentences specifically.
- Despite that explicit emphasis already present in memory, relapse #12 happened in the exact same kind of short sentence the memory was already warning about — persistent memory alone did not change the behavior.
This is very likely not Spanish-specific
I only have direct evidence for Spanish (tuteo vs. voseo), because that's the language I work in. But the failure mode I'm describing — a style/register/dialect preference that holds reliably in long, substantive output but drops specifically in short transitional sentences — doesn't look tied to anything unique about Spanish. I'd expect the same blind spot to show up in any language where the model has to pick between:
- Formal vs. informal register (e.g., German "Sie" vs. "du", French "vous" vs. "tu", Japanese keigo levels).
- Regional/dialect variants (e.g., European vs. Latin American Spanish, Portugal vs. Brazil Portuguese, UK vs. US English spelling/phrasing).
- Any other user-specified stylistic constraint that isn't "does this sentence contain a banned word," but rather "is the grammar/conjugation of this sentence consistent with the requested variant."
If that's right, this is a general instruction-following gap for grammatical/dialectal style constraints under CLAUDE.md + output style + persistent memory, not a Spanish-specific quirk — and it would be worth checking whether the same short-sentence blind spot shows up for other languages' users who've set an equivalent formality/dialect rule.
What I'd ask for
Some more reliable mechanism for pinning a language variant, register, or any user-declared stylistic constraint so that it's enforced with the SAME strength across every kind of output within a turn — in particular the short closing/transition sentences, which currently seem to be a structural blind spot regardless of whether the instruction lives in CLAUDE.md, in the output style, or has been reinforced in persistent memory right after an explicit, recent correction.
Technical context
- Product: Claude Code (CLI).
- Instruction mechanism used: project-level CLAUDE.md + vault-wide global CLAUDE.md + a custom output style + persistent memory (a dedicated feedback file in the harness's memory system).
- Reproducible across long working sessions (code implementation + documentation) in Spanish; not tied to one specific Claude model — observed across different models over the course of the 12 relapses.