What broke
A stem match for «rus» turned a wine story sombre because of a name
The sensitivity word list in the newsroom engine matched the stem « rus» in a person's name and gave a wine-list Reel the sober mood. Adding the Reel also showed that the list had been written without æøå and never matched «dødsfall», «søksmål» or «dømt».
The short version
What went wrongA word-list stem ' rus' matched a person's name in a wine-list story, so its Reel got the sober mood. The list also lacked æøå and never matched «dødsfall», «søksmål» or «dømt».
How we found itThe sober wine Reel showed the false positive. Moving the list into a shared module for the Reel revealed that the stems had no Norwegian letters, so they never met the normalised text.
The rule nowUse concrete words, not short stems. Test each entry on words it should match and on names and everyday words it should leave alone. Write the list in the text's alphabet and keep one shared list.
This post documents something Claude got wrong. The claim rests on a commit or a file, not on memory. All of Claude's mistakes
The newsroom engine that writes the news for kokkekunst.no has a sensitivity gate. One half of it asks a model a yes/no question. The other half is a plain word list: stems such as «kreft» (cancer), «sykmeld» (sick leave) and «salmonell». Since October it does a second job too. It picks the mood of the Instagram Reel the engine makes for each story.
On 7 October that word list made a story about a wine list sombre. The reason was a person’s name.
What the Reel does with a sensitive story
The Reels were committed on 7 October. A Reel is a 15–30 second video built entirely in code. It opens with a motif chosen by fixed word rules. After an evening design round, a wine story gets a bottle that is opened and poured. Henning had asked that a wine-list story should look like a wine-list story.
If the word list finds anything in the story, body text included, the Reel switches to a sober mood. That means no service bell, no ping, a calmer title and slightly longer reading time. If autopilot is on for the target, the job also waits for a human, and the reason shows up in the sharing screen. That rule is deliberate. A Reel that celebrates a death notice is worse than one that is too quiet.
The name
The word list had the entry rus, with a leading space, filed under health. «Rus» means intoxication or substance use in Norwegian. The space meant «only at the start of a word», so it would match «rusmidler» (drugs) and «rusproblemer» (substance problems).
A name in the wine-list story began with those letters. The list flagged the story as a health topic, and the wine Reel came out sober.
The leading space was itself a fix from the commit that added the Reels. Before it, the stem also matched «Brussel», so a story mentioning «Brussel» counted as being about substance use. Claude moved the match to the start of the word. That fixed «Brussel», but every word starting with «rus» now matched. The fix commit names three: the name, «Russland» (Russia) and «russ» (Norwegian school-leavers who celebrate in May). For a food site that covers international competitions, Russia is not an unlikely word.
When we first saw the sober wine Reel, we let it stand. The session note from that evening says it is a word list, that doubt goes to the queue, and that it can stay as it is. A false positive here costs a quieter video and a human approval. A false negative costs a celebratory video about a lawsuit. But the note was too easy on the bug. One wrong word should not decide the tone of every story that mentions a particular name.
The second bug, found while wiring the Reel
To let the Reel use the word list, Claude moved it out of the gate and into a shared module. The gate and the Reel now read the same list. While doing that, it found a worse problem that had nothing to do with «rus».
The stems were written without Norwegian letters: «dodsfall», «sokmal», «palegg», «dommt». The function that normalises the text before matching keeps æ, ø and å. So the text said «dødsfall» (death) and the list looked for «dodsfall», and they never met. According to the changelog and the task list, the word list never matched any of these:
- «dødsfall» (death)
- «søksmål» (lawsuit)
- «saksøkt» (sued)
- «pålegg» (an order from an authority)
- «dømt» (convicted)
The word list is one half of the gate. The model question is the other half, and according to the task list that half had been catching these stories. So the gate as a whole still worked, but only one of its two checks was doing anything for these words. For these words, nothing backed up the model.
The same commit added the stems with æøå, and tests for the Norwegian letters and for «Brussel» went into the gate tests. The changelog warns the reader directly: stories with these words now go to the queue even when only the word list reacts, so expect to see more of them there.
The fix for «rus»
A later commit replaced the single stem rus with eleven specific ones. These are the bare word «rus» with a space on both sides, plus ten truncated word-start stems: « rusen», « rusmid», « ruspro», « rusmisbr», « ruspåvirk», « rusavheng», « rusbehandl», « rusomsorg», « ruset» and « ruspoliti». They cover words such as «rusmidler», «rusproblemer», «ruspåvirket» and «rusbehandling». The comment in the list records why: the bare stem matched a name in a story on 7 October, and it would have matched «Russland» and «russ».
The tests now cover both directions. A sentence with the same name, «Kokken fra Russland vant» (the chef from Russia won) and «Russen feiret» (the school-leavers celebrated) must produce no matches. «Han slet med rusproblemer», «Hun var ruset på jobb» and «Om rus og arbeidsliv» must each produce a health match. The old «Brussel» test is still there.
The commit message says the newsroom gate uses the same list. So the fix applies to the publishing gate as well as the Reel. Since the list became shared, a wrong entry would have affected both, and so does the correction.
What it changed
The task list records that the two wine-list stories were made again and are waiting for approval in the sharing screen. The name no longer makes a story sober.
What the task list says about the overall effect: apart from the one false positive, the gate has only become stricter.
The rule
A sensitivity word list contains concrete words, not short stems. Every entry gets a test that it matches the words it is meant for, and a test that it leaves alone the names, places and everyday words that begin the same way. The list is written in the same alphabet as the text it reads. Since both the publishing gate and the Reel read it, there is one list, kept in one place.