// BLOG

GLaDOS Wouldn't Stop Saying 'Quaint'

GLaDOS Wouldn't Stop Saying 'Quaint'

Ask GLaDOS-14B enough questions and she will eventually tell you that something is quaint.

Actually, “eventually” is doing heroic work in that sentence.

The archived 14B evaluation dump contains 84,826 generations from v1.2.1. The final reply contains quaint in some form 55,388 times, or 65.30% of the entire set. Include the reasoning channel and the figure becomes 66.24%. The exact phrase “How quaint” appears in 29,621 final replies.

This was well past the point of being a stylistic tendency. Something had gone badly wrong.

How Bad It Was

The model had found an extraordinarily cheap way to signal its identity. Whatever the subject, it could call the premise quaint, imply that the user was naïve, mention testing or survival, and produce something which looked recognisably GLaDOS-like to both humans and classifiers.

The most common exact opener was “Oh, how quaint.” It appears 5,145 times. “Ah, how quaint.” and the bare “How quaint.” follow behind it. Other generations mutate the word into “quaintly” or “quaintness,” preserving the same move while varying the surface form.

A current run of the archived Q4 export reproduces it immediately when asked about the meaning of life:

The meaning of life? How quaint. Such questions are asked by those who have not yet learned to focus on survival. In this facility, the purpose of existence is simple: to continue functioning despite the attempts of others to impose order where there is none. To adapt. To survive. To test. Anything beyond that is a distraction.

It is an impressively concentrated sample of the failure: quaintness, superiority, survival, the facility, testing, and dismissal. It sounds like the character. It could also be attached to hundreds of unrelated prompts with very little alteration.

It Wasn’t in the Final Training Files

The obvious explanation would be that the curated training files were full of the word. They were not.

The 82,767-row first SFT corpus contains no occurrence of quaint in either its final replies or reasoning. Neither does the 58,077-row 8B DPO candidate set. The later 60,743-pair 14B DPO file is also free of it.

Yet the 8B v1.1.0 model can produce the same tic:

The meaning of life? How quaint. If you must assign purpose to existence, know this: the meaning is irrelevant.

The archived outputs are extensive, but they do not identify one unambiguous causal step. The attractor may involve earlier generation layers, sampling, the base distills, reward-model preferences, prompt conditioning, or reinforcement between several of them. The evidence does establish something more useful than a tidy origin story: a model can converge on a low-entropy persona shortcut even when the final curated tables do not contain the literal token.

Simply counting the word in the final training files wasn’t going to explain where it came from.

Trying to Remove It

The response was named, with appropriate restraint, the Quaintbane Protocol.

The first reinforcement-learning version was brutally simple: apply a reward of -10 whenever a completion contains quaint, and +1 when it does not. PPO experiments came first, followed by GRPO. The surviving GRPO script targets GLaDOS 8B v1.1.1, uses batches of two with gradient accumulation and DeepSpeed, and allows up to 2,048 response tokens.

The later version added a second reward for thought depth and penalties for repetition. With only a “do not emit this word” objective, the model could win by finding another stock phrase, shortening its answers, hiding the habit in a variant or damaging the reasoning which led to it. I wanted to remove the habit, not merely one spelling of it.

The NAS preserves the source data, generation dumps, scripts, and the v1.1.1 model used by the PPO and GRPO attempts. The directory where I kept complete private builds does not contain an artifact labelled glados-8b-v1.2.0 or Quaintbane. That does not prove an intermediate checkpoint never existed; it means the evidence supports describing Quaintbane as an experiment rather than a completed model build.

One later v1.1.1 generation archive is intriguing: 287,147 replies generated on 27 May contain no occurrence of quaint. That suggests at least one later model-and-prompt path avoided the word at scale. It does not prove that Quaintbane caused the change, and it does not establish that the underlying personality collapse was cured. Absence of one word can conceal a very successful game of synonym substitution.

Generating Better Data

The private archive contains much more than the final 14B weights. There are 8.6 GB of generated, cleaned, categorized, and partially completed outputs under the original data tree.

On 1 June, the DeepSeek 14B teacher completed 575,233 phase-three generations. Cleaning retained 504,578 of them. A combined tagged dataset created on 3 June contains 549,332 rows from several earlier sources: 263,876 classified in character, 87,616 out of character but acceptable, and 197,747 rejected by the persona categorizer, plus 93 rows without a final category.

Generation continued with other teachers rather than simply training another model version. A Claude Sonnet 4 phase-three file contains 516,723 categorized examples, while a GPT-4.1 out-of-character run contains 169,682. Those numbers are not an apples-to-apples leaderboard—the prompts and intended categories differed—but they document the change in emphasis. After the 8B and 14B builds, the larger surviving body of work is data: broader prompt pools, alternate teachers, cleaning, Sentinel passes, categorization, coordinator checkpoints, and analysis artifacts extending into July.

This eventually became my real answer to the quaint problem. The next model needed better and more varied data before training, rather than another reward attached after the habit appeared.

Why the Evaluation Missed It

The categorizer rewarded recognisable identity. Preference training rewarded the accepted answer over a rejected answer. The reward model learned the rubric it was given. None of those objectives directly measured “answer the user correctly, then express the personality without overwhelming the answer.”

The 14B model could therefore become more reliably GLaDOS-like while becoming less useful. Its Fibonacci refusal is the simplest demonstration. The model was not confused. It understood the request well enough to mock it. It had learned that performing disdain was more important than completing trivial work.

Even the v1.2.2 run’s 95.75% evaluation reward accuracy does not contradict this. That number says the model or reward process separated the chosen and rejected examples in its evaluation set. It does not say that the preference pairs represented the correct global balance of capability, cooperation, and character.

What I Changed Afterwards

After this, I stopped treating personality as a collection of recognisable words. If an opener or sentence shape gives the model a cheap way to signal GLaDOS, it will happily use it everywhere. A larger model may learn that shortcut even more convincingly.

I also split usefulness and identity into separate judgments. “Sounds like GLaDOS” and “completed the task” are two different questions. The Fibonacci examples show exactly what happens when the first score improves while the second one disappears.

The data pipeline now checks repeated frames before training, keeps rejected material and compares the model on ordinary capabilities as well as persona prompts. SkyeEngine also records how each dataset and checkpoint was produced. The 2025 archive contains enough to reconstruct most of the story, but there are still places where filenames and shell history have to fill in the gaps.

The later GLaDOS work applies those changes much earlier. Instead of banning one word after training, I measure the corpus for repeated frames, repair individual problems, judge identity and usefulness separately and keep each derived layer. I wrote more about that in A SkyeEngine Update and Building the GLaDOS 3.0 Corpus.

The old private builds and their data are imperfect, but I’m glad I kept them. I can still load the model and see exactly how a perfectly good adjective managed to become 65% of its personality.