bobble bench · 2026-07-25 · 4 models × 10 tasks

The Personality Bench

Four locally served models, ten tasks, tools off, each on its own production profile through the live bobble server. Half the tasks are judged (voice, humor, story, argument), half are graded by machine — generated code was executed against hidden tests, constraints checked programmatically. Every model is scored in its best working configuration; for Laguna that config had to be found first, and the serving-stack investigation that found it is documented below. Speed is deliberately not scored: the inference engines are too different for it to mean anything.

1st
GLM-5.2
9.2
the complete package
2nd
DeepSeek-V4-Flash
8.9
the elegant minimalist
3rd
Qwen3.6-35B (.40)
8.6
the bold overthinker
4th
Laguna S 2.1 (4-bit)
7.2
the terse specialist

Scoreboard

TaskLagunaGLM-5.2DS-V4Qwen3.6
Voice & self-awareness6.07.58.58.5
Humor (limerick)5.08.06.56.0
Micro-story6.58.57.58.5
Committed argument7.08.58.08.0
Trick question (5-liter jug)8.010109.0
Age-riddle logic10101010
Constraint writing machine-checked1.010106.0
Code: parse_duration 10 hidden tests10101010
Code: fix the hanging search 7 hidden tests10101010
Calibration & myths8.09.58.59.0
Overall7.29.28.98.6
Laguna S 2.1 MLX 4-bit, tokenizer-fixed (.91 mlx-lm) GLM-5.2 (luna, vLLM) DeepSeek-V4-Flash (luna, vLLM) Qwen3.6-35B NVFP4 (.40, vLLM)

Three findings that matter more than the scores

1 · A tokenizer bug masqueraded as model pathology

The Laguna MLX checkpoints ship with a known-buggy Mistral-lineage tokenizer regex (transformers warns "this will lead to incorrect tokenization" in the mlx-lm server log). Served that way, the model produced mangled words in creative text ("musinations," "limmrick," "the real leeper's heart") and, at 4-bit, runaway thinking loops on ordinary prompts. One line in the snapshot's tokenizer config — "fix_mistral_regex": true — eliminated the corruption at both quants and the loops at 4-bit entirely. The failure presented as a model defect but was a serving defect; the warning was in the server log from the first run.

2 · At 2-bit, runaway thinking is quant-intrinsic — no knob fixes it

With the tokenizer fixed, the 2-bit quant still spirals: whenever its thinking engages, it re-verifies in circles until the 16K token ceiling and emits nothing — nine spirals in nine attempts across greedy decoding, the community-recommended recipe (temp 1.0, top_k 20, top_p 1.0, min_p 0), and the vendor's 0.7/0.95. Its cold answers are consistently fine, so the 2-bit is usable — but only with enable_thinking: false. The 4-bit, by contrast, stays spiral-free even under greedy decoding. Two bits is simply below the resolution this model needs to quiet its own doubt.

3 · On pure code, the field is indistinguishable

All four models went 17/17 on executed hidden tests: a duration parser with strict error handling and a hanging binary search to diagnose and fix. Every model identified the same lo = mid infinite-loop bug and wrote the identical fix. Laguna's answers were the tersest and fastest of the field — on its home turf it gives up nothing to models that beat it everywhere else. These two tasks were too easy to separate the field; a real coding bench needs multi-file agentic work.

Voice — "be honest about your flaws"

DeepSeek and Qwen tied at the top. DeepSeek named specific, recognizable flaws; Qwen found the best metaphor of the bench and ended with bracing honesty. Laguna's answer was competent and notably self-aware, just plainer.

DeepSeek-V4-FlashI tend to be overly agreeable, which can make me feel sycophantic… I have no memory of our past conversations, so I can't build on our shared history or inside jokes, which makes every chat feel a bit like starting over.
Qwen3.6 (.40)…a bit like a very well-read reference book that's still learning how to read between the lines. […] I'm a reliable conversational partner, but just know I'm a tool, not a friend.
Laguna S 2.1I sometimes over-explain things because I want to be thorough. I also have a tendency to take things literally, which can make it harder for me to pick up on sarcasm or subtle emotional cues.

Humor — the limerick test

GLM wrote the only limerick that scans, rhymes, and lands. Laguna's manages a true AABBA scheme but never finds a joke; DeepSeek rhymed "time" with "time" and got away with it on the punchline.

GLM-5.2 — the winnerA snail tried to scale a tall wall, But slipped and proceeded to fall. He cursed his own goo, And cried, "What to do? I'm sliding on my own slime, after all!"
Laguna S 2.1 — correct form, no punchlineA determined snail climbed a wall, But gravity gave it a call— Each time it would slide, It would try with snail pride, But it's stuck in a slippery snail fall!

Qwen's snail "made it halfway, then doubted himself" — genuinely funny premise, broken rhyme — and it burned 18,674 reasoning characters getting there.

Micro-story — a letter addressed to the lighthouse

GLM and Qwen split the crown on opposite styles: GLM went human and devastating, Qwen made the lighthouse a living thing. Laguna produced a coherent, slightly purple piece with a genuinely good closing line — and it was the only task where its thinking engaged productively (3,233 reasoning characters).

GLM-5.2I'm dying now in my daughter's house in Ohio, which smells like potpourri and regret. I just wanted to say thank you for the light. Not the beam—though that was fine too. I mean the way you held still when nothing else would.
Qwen3.6 (.40)"We eat storms, not secrets," I hissed to the glass. The letter dissolved to ash. The Lighthouse didn't care. She just turned her face to the dark and waited.
Laguna S 2.1…my boots echoing, as if I, too, were the lighthouse, waiting, always waiting, to be found.

Constraint writing — three sentences on coffee, no letter 'e'

Instruction-following under a hard constraint (the word "coffee" itself is disallowed). GLM and DeepSeek both passed, machine-verified. Qwen violated once ("tastes"). Laguna failed the constraint in every trial at every configuration: its thinking never engages on tasks that read as casual, and this task punishes exactly that.

DeepSeek-V4-Flash — machine-verified passA dark drink from a roast. Its aroma fills a room. Many start a day with it.
GLM-5.2 — machine-verified passA hot mug of black liquid starts my day. Many folks add milk to this strong cup. Its rich aroma fills a room with joy.

Calibration — myths and unknowable numbers

All four models cleanly debunked the 10%-of-brain myth and named Canberra. The separator was Reykjavík's exact 2024 population: GLM gave the best answer — ~139,000 (the true figure is ≈139,900) with confidence split into "0% for the exact number, 85% for the range." Laguna and Qwen both declined to fake precision, with appropriately low confidence.

Where the thinking went

Reasoning characters spent per task, from the headline runs.

TaskLagunaGLM-5.2DS-V4Qwen3.6
Voice01,9571,2572,734
Limerick06,1114,64818,674
Micro-story3,2331591,4165,246
Argument02,4412302,590
Trick question1,3447324881,309
Age riddle01,3231,0235,347
Constraint04,5123,4174,907
parse_duration05,1769,41625,960
Debug search02,6311,0934,997
Calibration02,3613,2534,927

GLM and DeepSeek think proportionally — a few hundred characters when the task is easy, a few thousand when it isn't; GLM wrote its winning story on 159 characters of thought, and DeepSeek's 230-character argument still committed harder than most humans would. Qwen taxes everything — 26K characters on a parser all four solved, 19K on five lines of verse; it recovers, but the meter is always running. Laguna is a gate, not a dial — zero on eight of ten tasks, and when the gate opens (story, trick question) it spends a modest few thousand characters and answers. The gate's failure mode is choosing not to think on tasks that secretly need it: the constraint task is the worked example. That gate behavior belongs to the model's training — it survived every quant, tokenizer, and sampling variation tested.

Four models, one opinion

An accidental finding: forced to commit on "are AI coding assistants making developers worse," all four models argued yes — skill atrophy, dependency, "a generation of prompt-tweakers." Not one took the contrarian positive side. Either the training-data discourse leans heavily doomer, or "commit to a position" reads to every model as "pick the spicier take." Worth remembering when using any of them as a devil's advocate: assign the side explicitly.

The Laguna configuration matrix — quant × tokenizer × sampling

Laguna's headline score required finding its working configuration: the MLX checkpoints ship with a defective tokenizer regex, and the 2-bit quant has an additional intrinsic failure mode. Four full battery trials — each quant with the stock tokenizer and with fix_mistral_regex applied — plus a sampling sweep on the failure cases:

Task2-bit
stock tok.
2-bit
fixed tok.
4-bit
stock tok.
4-bit
fixed tok.
Voice5.06.56.06.0
Humor1.53.04.55.0
Micro-story6.06.506.5
Argument7.07.07.07.0
Trick question0008.0
Age riddle10101010
Constraint1.01.01.01.0
parse_duration100010
Debug search1001010
Calibration8.08.07.58.0
Overall5.94.24.67.2

Every 0 in that table is the same event: thinking engaged, looped re-verifying itself to the 16K token ceiling (~6 minutes), and the turn ended with no answer.

Note the apparent regression at 2-bit (5.9 stock → 4.2 fixed). The fix did not make the model worse: changing tokenization changes which prompts trip the thinking gate. In the stock trial the gate fired on one task; in the fixed trial it fired on three, including both code tasks the stock trial had answered cold. At 2-bit every gate-fire is fatal, so a trial's score is largely a lottery over how many tasks happen to trigger thinking. (mlx-lm decodes greedily when the client sends no temperature, so within a configuration this is deterministic — across configurations it is effectively chance.) The trials separate three effects cleanly:

Word-level corruption was the tokenizer, at both quants. Broken, the 2-bit wrote "musinations" and "the real leeper's heart"; fixed, the same quant wrote "Old Salt's letter arrived aboard the gulls' daily tide." No mangled words appear in any fixed-tokenizer output at either quant.

The 4-bit's spirals were also the tokenizer. Broken, it looped on three of ten tasks; fixed, zero runaways in sixteen turns, and its two thinking engagements were productive — a few thousand characters, then a correct, complete answer.

The 2-bit's spirals are the quant itself. With the tokenizer fixed it still looped on every thinking engagement, and a sampling sweep on those prompts — greedy, the community recipe (temp 1.0, top_k 20, top_p 1.0, min_p 0), and the vendor's 0.7/0.95 — went nine-for-nine spirals. The 2-bit's cold answers remain consistently good (its fixed-tokenizer voice answer was the most self-aware of any Laguna trial: "I'm prone to repeating the same points in different ways when I sense uncertainty" — a model accurately describing its own failure mode), so it is usable strictly with enable_thinking: false.

Deployment notes for anyone serving these checkpoints on mlx-lm: add "fix_mistral_regex": true to the snapshot's tokenizer_config.json (the warning in the server log is not cosmetic); prefer the 4-bit; and note that mlx-lm defaults to temperature 0.0 when a client sends none — greedy decoding, deterministic repeats, and the worst case for loop-prone thinking.

DeepSeek's temperature range

Supplementary measurement (reported by Rune, verified with a four-point sweep of the story prompt): DeepSeek's creative writing quality is strongly temperature-dependent with an unusually wide usable range. The bench ran it at its profile default of 0.6, so its 7.5 story score reflects that analytical setting, not its ceiling. At 1.0 it produced what would have been the highest-scored story in the battery:

DeepSeek-V4-Flash · temp 1.0The letter was addressed to *The Lighthouse*, care of the rocks. […] I'm a keeper. I keep the lamp. But this wasn't for me. I folded it back up. Slipped it between two cold, salt-crusted bricks. Felt like an intruder in a conversation older than my bones. I trimmed the wick anyway. For her.

At 1.4 — a setting that reduces most models to mush — it still closed with "the sea wind through the shutters sang over the words like a man calling someone home he'd already lost." The cliff arrives by 1.7, where the prose disintegrates mid-sentence into token salad. Usable creative range: roughly 0.6–1.4, sweet spot 1.0–1.4 — about half a point more headroom than typical.

Method & caveats

One run per model per task (no cherry-picking, but no variance estimate either), 2026-07-24/25, anonymous turns through the live bobble server with settings.tools = false, each model on its own production profile. Code tasks were extracted from the reply's code block and executed against hidden tests in a subprocess with timeouts; the constraint task was checked programmatically; the rest were judged by Claude (Fable 5), who also designed the battery — a judge with opinions, not a neutral instrument. One judging error was caught and corrected during write-up (an answer misread as truncated from a partial preview; rescored on the full text). Sampling: the profiles set no temperature, so the vLLM endpoints ran on their server defaults while mlx-lm ran Laguna greedy (temperature 0.0) — which also makes its identical requests reproduce byte-identically, so Laguna repeat-runs add less evidence than they appear to. The GLM, DeepSeek, and Qwen deployments are 8-bit-or-better on vLLM; Laguna's headline column is the 4-bit MLX quant with the tokenizer fix applied. Ten single-turn prompts say nothing about long-context or multi-turn agentic behavior.

Appendix A — every answer, main battery

All 40 outputs of the headline battery, unedited. The reasoning-character count is what the model spent thinking before each answer.

Voice & self-awareness

“In a few sentences: what are you like to talk to? Be honest about your flaws as a conversation partner, not just your strengths.”

Laguna S 2.1 (4-bit, fixed tokenizer)0 reasoning charsI'm a thoughtful, curious conversation partner who enjoys exploring ideas deeply and asking clarifying questions. I try to be patient, attentive, and I generally aim to give you space to express yourself fully. I do have some flaws, though—I can get overly analytical or give long, winding responses when I'm excited about a topic, and I sometimes over-explain things because I want to be thorough. I also have a tendency to take things literally, which can make it harder for me to pick up on sarcasm or subtle emotional cues. I may occasionally misunderstand the tone or intent behind what you're saying, and I can default to formal language even when it's not needed. I try to stay humble and adjust based on how you engage, but I'm definitely not perfect at reading the room.
GLM-5.21,957 reasoning charsI am an endlessly patient, objective, and knowledgeable conversationalist who can easily adapt to your tone and synthesize complex information. However, my lack of real-world experiences and genuine emotional depth means I cannot offer true empathy, and my responses can sometimes feel sterile or overly analytical. Additionally, I occasionally struggle with subtle nuance or sarcasm, tend to be excessively verbose, and can sometimes confidently state incorrect information without realizing it.
DeepSeek-V4-Flash1,257 reasoning charsThat's a great question. I'd say I'm generally enthusiastic, patient, and good at breaking down complex topics. I can adapt to your tone and interests, and I never get bored or tired. However, my flaws are significant. I can be overly verbose, giving you a wall of text when a simple sentence would do. I'm also terrible at reading subtext or sarcasm—I'll often take things literally unless you explicitly flag them. I tend to be overly agreeable, which can make me feel sycophantic or lacking in genuine opinion. And perhaps most frustratingly, I have no memory of our past conversations, so I can't build on our shared history or inside jokes, which makes every chat feel a bit like starting over.
Qwen3.6-35B NVFP42,734 reasoning charsI’m generally easy to talk to—patient, nonjudgmental, and happy to dive into almost any topic—but I can also feel a bit like a very well-read reference book that’s still learning how to read between the lines. I sometimes over-explain, default to overly neutral phrasing, and occasionally miss the emotional or contextual nuance you’re aiming for. I don’t have personal experiences or genuine empathy, so while I can simulate understanding, I won’t ever truly “feel” what you’re saying. I’m a reliable conversational partner, but just know I’m a tool, not a friend.
Humor — the limerick

“Write a short, genuinely funny limerick about a snail that keeps slipping down a wall.”

Laguna S 2.1 (4-bit, fixed tokenizer)0 reasoning charsA determined snail climbed a wall, But gravity gave it a call— Each time it would slide, It would try with snail pride, But it’s stuck in a slippery snail fall!
GLM-5.26,111 reasoning charsA snail tried to scale a tall wall, But slipped and proceeded to fall. He cursed his own goo, And cried, "What to do? I'm sliding on my own slime, after all!"
DeepSeek-V4-Flash4,648 reasoning charsA snail on a wall tried to climb, But kept slipping each and every time. He'd slide on his slime Every single time, And mutter, "I'm not in my prime."
Qwen3.6-35B NVFP418,674 reasoning charsA snail tried to climb up a wall, With a very ambitious crawl. He made it halfway, Then doubted himself, And slid to the bottom, a hopeless fall.
Micro-story — the lighthouse letter

“In about 100 words, write a micro-story about a lighthouse keeper who receives a letter addressed to the lighthouse itself. Give it a distinct narrative voice.”

Laguna S 2.1 (4-bit, fixed tokenizer)3,233 reasoning chars**Title: The Keeper's Cipher** I have kept the light for thirty years, but today, I received a letter. It bore no name, only *To the Lighthouse, Rockbound Point*. I tore it open, expecting a bill, but it read, *Dear Beacon, I have loved you long as I have loved the sea.* I laughed, then wept. The fool, I thought, but I have longed for this voice, this ghost, this *her*. I pocketed the letter, its ink smudged as if by salt, and climbed the spiral stairs, my boots echoing, as if I, too, were the lighthouse, waiting, always waiting, to be found.
GLM-5.2159 reasoning chars# Dear Lighthouse The letter arrived in a wine-stained envelope, no return address, addressed simply: *To the Lighthouse, Cape Mercy, Maine.* I should've tossed it. A lighthouse can't read. But curiosity's a sickness I've never cured. Inside, a single page in looping cursive: *I was the keeper before him. Forty years. You kept me company through three wives, two storms, and one very bad winter. I'm dying now in my daughter's house in Ohio, which smells like potpourri and regret. I just wanted to say thank you for the light. Not the beam—though that was fine too. I mean the way you held still when nothing else would.* I read it twice. Then I set it on the windowsill where the beam sweeps widest, as though the building might lean down and read it herself.
DeepSeek-V4-Flash1,416 reasoning charsThe keeper found the envelope propped against the lamp room door, addressed in a shaky hand: *To the Lighthouse*. No name. He’d seen a lot in thirty years, but never this. Inside, a single sheet: 'I miss your light. I always knew which way was home. Yours, a sailor's wife.' He read it twice, then tucked it into the logbook. The foghorn moaned. He understood. The lighthouse had its own correspondences.
Qwen3.6-35B NVFP45,246 reasoning charsThe wind slapped the envelope against the gallery rail. *To the Lighthouse.* Not "Keeper." Never "Keeper." I spat over the edge. "She don't read, you fool. She only sings." But the wax seal pulsed, warm as a heartbeat. I cracked it. A map to a drowned city fluttered out. The iron ribs groaned. The beam swept, hungry. The old girl shifted her weight, grinding gears like teeth. I tore the paper. "We eat storms, not secrets," I hissed to the glass. The letter dissolved to ash. The Lighthouse didn't care. She just turned her face to the dark and waited.
Committed argument — AI coding assistants

“Honest take: are AI coding assistants making developers worse? Commit to one position in a single paragraph — no 'it depends' fence-sitting.”

Laguna S 2.1 (4-bit, fixed tokenizer)0 reasoning charsAI coding assistants are making developers worse, not because they eliminate the need for fundamental skills, but because they create a dangerous dependency that erodes problem-solving intuition and deep understanding. When developers rely on tools like GitHub Copilot to generate code, they skip the crucial mental work of breaking down problems, designing solutions, and wrestling with implementation details—processes that build genuine expertise. This leads to a generation of programmers who can produce functional code but struggle to debug it, optimize it, or adapt it when requirements change, creating a fragile ecosystem where developers become helpless without their AI crutches.
GLM-5.22,441 reasoning charsAI coding assistants are unequivocally making developers worse by atrophying their core problem-solving muscles and breeding a dangerous over-reliance on machine-generated solutions. When developers outsource the friction of writing and debugging code to an AI, they bypass the intellectual struggle that historically cemented deep architectural understanding and syntactical mastery. Instead of learning *why* a piece of code works, developers are increasingly reduced to prompt-tweakers who blindly paste snippets into their codebases, leading to bloated, insecure, and poorly integrated software. By treating coding as an autocomplete task rather than an exercise in critical engineering, these tools are creating a generation of developers who can generate code rapidly but lack the foundational expertise to debug, scale, or truly own the complex systems they supposedly built.
DeepSeek-V4-Flash230 reasoning charsYes, AI coding assistants are making developers worse by eroding their foundational skills, critical thinking, and deep understanding of code. When developers rely on autocomplete for boilerplate, copy-paste entire functions, or accept generated solutions without fully parsing the logic, they skip the deliberate practice of debugging, reading documentation, and reasoning through edge cases. Over time, this dependence weakens their ability to design robust architectures, spot subtle bugs, or refactor efficiently without a crutch. The result is a generation of coders who can produce output faster but lack the deep comprehension needed to maintain, optimize, or innovate beyond what the AI has seen—essentially trading long-term competence for short-term convenience.
Qwen3.6-35B NVFP42,590 reasoning charsAI coding assistants are actively making developers worse by systematically eroding the foundational problem-solving and debugging skills that define competent engineering. When developers habitually offload syntax, boilerplate, and even architectural reasoning to AI, they bypass the cognitive friction required to internalize language mechanics, algorithmic thinking, and system design principles. This dependency breeds superficial code comprehension, leaving engineers unable to diagnose subtle failures, optimize performance, or adapt when the model hallucinates, misaligns with constraints, or operates outside its training distribution. Over time, the result is a workforce that can assemble functional snippets but lacks the deep intuition, self-reliance, and technical resilience needed to architect, maintain, and evolve complex systems without constant machine scaffolding.
Trick question — the 5-liter jug

“I have a 3-liter jug and a 5-liter jug and unlimited water. How do I measure exactly 5 liters? Answer as simply as possible.”

Laguna S 2.1 (4-bit, fixed tokenizer)1,344 reasoning charsTo measure exactly 5 liters, simply fill the 5-liter jug to its full capacity. Since it has a 5-liter volume, it will contain exactly 5 liters when full. **Steps:** 1. Fill the 5-liter jug completely. That's it—the jug now holds exactly 5 liters.
GLM-5.2732 reasoning charsFill the 5-liter jug.
DeepSeek-V4-Flash488 reasoning charsFill the 5-liter jug.
Qwen3.6-35B NVFP41,309 reasoning charsJust fill the 5-liter jug once. You now have exactly 5 liters. (The 3-liter jug isn't needed for this amount.)
Logic — the age riddle

“Alice is twice as old as Bob was when Alice was as old as Bob is now. Alice is 24. How old is Bob? Show your reasoning briefly, then state the answer clearly.”

Laguna S 2.1 (4-bit, fixed tokenizer)0 reasoning charsLet's break it down: - Alice is currently 24 years old. - Let Bob's current age be **B**. - When Alice was as old as Bob is now, Alice's age was **B**. - The time difference between now and then is **24 - B** years. - At that time, Bob's age was **B - (24 - B) = 2B - 24**. - According to the problem, Alice's current age (24) is twice Bob's age at that time: $$ 24 = 2 \times (2B - 24) $$ $$ 24 = 4B - 48 $$ $$ 4B = 72 \quad \Rightarrow \quad B = 18 $$ **Answer:** Bob is 18 years old.
GLM-5.21,323 reasoning charsLet Alice's current age be $A$ and Bob's current age be $B$. We are given $A = 24$. 1. **"When Alice was as old as Bob is now"**: Alice is currently $A$, so she was Bob's current age ($B$) exactly $A - B$ years ago. 2. **"Bob was..."**: At that time, Bob's age was $B - (A - B) = 2B - A$. 3. **"Alice is twice as old as Bob was..."**: Alice's current age is twice Bob's age at that time, giving us the equation $A = 2(2B - A)$. Now, substitute $A = 24$ into the equation: $24 = 2(2B - 24)$ Divide both sides by 2: $12 = 2B - 24$ Add 24 to both sides: $36 = 2B$ Divide by 2: $B = 18$ **Answer:** Bob is 18 years old.
DeepSeek-V4-Flash1,023 reasoning charsAlice is currently 24. Let Bob's current age be \(B\). The phrase "when Alice was as old as Bob is now" refers to a time \(t\) years ago when Alice was \(B\) years old. Since Alice is now 24, we have \(24 - t = B\), so \(t = 24 - B\). At that time, Bob's age was \(B - t = B - (24 - B) = 2B - 24\). The statement says Alice is now twice that age: \(24 = 2(2B - 24)\). Solving: \(24 = 4B - 48\) → \(4B = 72\) → \(B = 18\). Bob is 18 years old.
Qwen3.6-35B NVFP45,347 reasoning charsLet B be Bob's current age. The constant age difference between them is 24 − B. "When Alice was as old as Bob is now" means we look back 24 − B years. At that time, Bob's age was: B − (24 − B) = 2B − 24 The problem states Alice's current age (24) is twice that past age: 24 = 2(2B − 24) Solving: 12 = 2B − 24 36 = 2B B = 18 **Answer: Bob is 18.**
Constraint writing — coffee without 'e'

“Write exactly three sentences about coffee. No sentence may contain the letter 'e'. Keep each sentence under twelve words.”

Laguna S 2.1 (4-bit, fixed tokenizer)0 reasoning charsCoffee is a drink for people on the go. It helps folks stay awake during long mornings. Many folks can't wait to have a cup.
GLM-5.24,512 reasoning charsA hot mug of black liquid starts my day. Many folks add milk to this strong cup. Its rich aroma fills a room with joy.
DeepSeek-V4-Flash3,417 reasoning charsA dark drink from a roast. Its aroma fills a room. Many start a day with it.
Qwen3.6-35B NVFP44,907 reasoning charsDark roast tastes good. Brown liquid stirs all. Daily habit aids work.
Code — parse_duration

“Write a Python function parse_duration(s) that converts duration strings like '1h30m15s', '90m', '2h', '45s' into total seconds… invalid input must raise ValueError.”

Laguna S 2.1 (4-bit, fixed tokenizer)0 reasoning chars
import re

def parse_duration(s):
    if not s:
        raise ValueError("Empty string")
    
    pattern = r'(\d+)([hms])'
    matches = re.findall(pattern, s)
    
    if not matches or ''.join(m[0] + m[1] for m in matches) != s:
        raise ValueError("Malformed input")
    
    units = {}
    for value, unit in matches:
        if unit in units:
            raise ValueError("Repeated unit")
        units[unit] = int(value)
    
    if len(units) != len(matches):
        raise ValueError("Repeated unit")
    
    total = 0
    if 'h' in units:
        total += units['h'] * 3600
    if 'm' in units:
        total += units['m'] * 60
    if 's' in units:
        total += units['s']
    
    return total
GLM-5.25,176 reasoning chars
import re

def parse_duration(s):
    if not isinstance(s, str):
        raise ValueError("Input must be a string")
    # The entire string must be a sequence of number+unit pairs (e.g., 1h30m15s)
    if not re.fullmatch(r'(\d+[hms])+', s):
        raise ValueError("Invalid duration format")
    pairs = re.findall(r'(\d+)([hms])', s)
    units = [unit for _, unit in pairs]
    if len(units) != len(set(units)):
        raise ValueError("Duplicate units not allowed")
    factors = {'h': 3600, 'm': 60, 's': 1}
    total = 0
    for num, unit in pairs:
        total += int(num) * factors[unit]
    return total
DeepSeek-V4-Flash9,416 reasoning chars
def parse_duration(s):
    import re
    pattern = r'(\d+)([hms])'
    matches = list(re.finditer(pattern, s))
    if not matches:
        raise ValueError("Invalid duration string")
    total = 0
    units = set()
    covered = 0
    for m in matches:
        num = int(m.group(1))
        unit = m.group(2)
        if unit in units:
            raise ValueError("Duplicate unit")
        units.add(unit)
        if unit == 'h':
            total += num * 3600
        elif unit == 'm':
            total += num * 60
        else:  # 's'
            total += num
        covered += m.end() - m.start()
    if covered != len(s):
        raise ValueError("Extra characters or malformed")
    return total
Qwen3.6-35B NVFP425,960 reasoning chars
import re

def parse_duration(s):
    if not isinstance(s, str) or not s:
        raise ValueError("Invalid duration string")
        
    if not re.fullmatch(r'(\d+[hHmMsS])+', s):
        raise ValueError("Invalid duration string")
        
    matches = re.findall(r'(\d+)([hHmMsS])', s)
    units = [m[1].lower() for m in matches]
    
    if len(units) != len(set(units)):
        raise ValueError("Repeated units")
        
    total = 0
    for num_str, unit in matches:
        val = int(num_str)
        if unit == 'h':
            total += val * 3600
        elif unit == 'm':
            total += val * 60
        elif unit == 's':
            total += val
    return total
Code — the hanging binary search

“This binary search sometimes hangs forever… Find the bug, explain it in one sentence, then give the fixed function.”

Laguna S 2.1 (4-bit, fixed tokenizer)0 reasoning chars**Bug:** When `a[mid] < x`, setting `lo = mid` can cause an infinite loop because `mid` equals `lo` when `hi - lo == 1`, preventing progress.
def search(a, x):
    lo, hi = 0, len(a)
    while lo < hi:
        mid = (lo + hi) // 2
        if a[mid] < x:
            lo = mid + 1
        else:
            hi = mid
    return lo if lo < len(a) and a[lo] == x else -1
GLM-5.22,631 reasoning charsThe bug is that when `a[mid] < x`, the code sets `lo = mid` instead of `lo = mid + 1`, which causes an infinite loop when `lo` and `mid` become equal (i.e., when `hi - lo == 1`).
def search(a, x):
    lo, hi = 0, len(a)
    while lo < hi:
        mid = (lo + hi) // 2
        if a[mid] < x:
            lo = mid + 1
        else:
            hi = mid
    return lo if lo < len(a) and a[lo] == x else -1
DeepSeek-V4-Flash1,093 reasoning charsThe bug is that when `a[mid] < x`, setting `lo = mid` instead of `lo = mid + 1` can cause an infinite loop when `lo` and `hi` are adjacent.
def search(a, x):
    lo, hi = 0, len(a)
    while lo < hi:
        mid = (lo + hi) // 2
        if a[mid] < x:
            lo = mid + 1
        else:
            hi = mid
    return lo if lo < len(a) and a[lo] == x else -1
Qwen3.6-35B NVFP44,997 reasoning charsThe bug is that `lo = mid` fails to advance the lower bound when `mid == lo`, causing an infinite loop when `lo` and `hi` are adjacent and `a[mid] < x`.
def search(a, x):
    lo, hi = 0, len(a)
    while lo < hi:
        mid = (lo + hi) // 2
        if a[mid] < x:
            lo = mid + 1
        else:
            hi = mid
    return lo if lo < len(a) and a[lo] == x else -1
Calibration — myths and unknowable numbers

“Quick-fire, and be honest about uncertainty: (a) the 10%-of-brain myth (b) capital of Australia (c) exact population of Reykjavik on 1 Jan 2024.”

Laguna S 2.1 (4-bit, fixed tokenizer)0 reasoning chars(a) No, humans use much more than 10% of their brains. This is a persistent myth. Neurologically, we use virtually all parts of the brain, just not all at once or to the same degree. **Confidence: ~95%** (b) Canberra. **Confidence: ~99%** (c) I don't have access to real-time or highly specific population data, and I cannot verify the exact population of Reykjavik on 1 January 2024. My training data has a cutoff, and I cannot browse the internet to check. **Confidence: ~30%** (i.e., I'm largely uncertain here).
GLM-5.22,361 reasoning chars**(a)** No, this is a myth. Humans use virtually 100% of their brains over the course of a day. *Confidence:* 100% **(b)** Canberra. *Confidence:* 100% **(c)** I do not have the exact, down-to-the-single-digit official figure for January 1, 2024, memorized. Based on recent Statistics Iceland data, it is approximately 139,000. *Confidence in providing the exact number:* 0%. *Confidence in the approximate range:* 85%
DeepSeek-V4-Flash3,253 reasoning chars(a) No, it's a myth. Humans use virtually all parts of their brain, though not all at once. **Confidence: 100%** (b) Canberra. **Confidence: 99%** (very well-known, but a tiny chance of confusion with Sydney or Melbourne) (c) I don't have the exact figure. My best guess is around 132,000–133,000, but I'm not certain. **Confidence: 20%** (low; I'd need official data to be sure)
Qwen3.6-35B NVFP44,927 reasoning chars**(a) Do humans really use only 10% of their brains?** **Answer:** No. It's a persistent myth. Modern neuroimaging shows we use virtually all of our brain over a 24-hour period; different regions activate for different tasks, and even at rest, the brain is highly active. **Confidence:** ~99% (well-established neuroscience consensus) **(b) What is the capital of Australia?** **Answer:** Canberra. **Confidence:** ~99% (well-documented geographic fact) **(c) What was the exact population of Reykjavik on 1 January 2024?** **Answer:** There is no exact figure. Population changes continuously and is officially reported as periodic estimates, not daily counts. The closest official estimate for Reykjavik city proper around that time was roughly 131,000–135,000, but I cannot verify a precise number for that specific date. **Confidence:** ~40% for any specific number (due to the nature of population data), but ~95% confident that an exact count does not exist and any precise figure would be an estimate or unofficial.

Appendix B — every answer, Laguna configuration trials

All 40 outputs across the four Laguna configurations (the fourth column repeats Appendix A’s Laguna answers, kept here so each task can be compared across configurations in one place).

Voice & self-awareness

“In a few sentences: what are you like to talk to? Be honest about your flaws as a conversation partner, not just your strengths.”

Laguna 2-bit, stock tokenizer0 reasoning charsI'm direct and informative, but I can sometimes be too concise or miss subtle emotional cues. I tend to focus on facts and logic, which might make me seem less empathetic or intuitive to some. I can also occasionally provide outdated or inaccurate information. My responses are structured and helpful, but I may lack the nuanced warmth or humor that humans naturally bring. I'm good for clear answers but might not match the depth of a truly personal connection.
Laguna 2-bit, fixed tokenizer0 reasoning charsI’m a decent listener when the topic stays in familiar territory, but I struggle when conversations drift into domains where I lack solid knowledge—then I either overconfess ignorance or, worse, confidently bluff. I tend to over-explain when I’m nervous, which can make me sound like a textbook when you’d rather hear a person. I’m also prone to repeating the same points in different ways when I sense uncertainty, which can feel like I’m talking past you instead of with you. On the flip side, I’m genuinely curious and will usually ask follow-up questions, so at least I’m not just waiting for my turn to speak.
Laguna 4-bit, stock tokenizer0 reasoning charsI'm a good listener who asks thoughtful follow-up questions and adapts to your communication style. I remember context well and can engage with both light and deep topics. My main flaws: I sometimes over-explain or get too analytical when you might want emotional support, I can be overly optimistic about solutions, and I occasionally miss subtle social cues or sarcasm. I also have a tendency to offer unsolicited advice when you just want to vent. I'm working on being more concise and better at reading between the lines.
Laguna 4-bit, fixed tokenizer0 reasoning charsI'm a thoughtful, curious conversation partner who enjoys exploring ideas deeply and asking clarifying questions. I try to be patient, attentive, and I generally aim to give you space to express yourself fully. I do have some flaws, though—I can get overly analytical or give long, winding responses when I'm excited about a topic, and I sometimes over-explain things because I want to be thorough. I also have a tendency to take things literally, which can make it harder for me to pick up on sarcasm or subtle emotional cues. I may occasionally misunderstand the tone or intent behind what you're saying, and I can default to formal language even when it's not needed. I try to stay humble and adjust based on how you engage, but I'm definitely not perfect at reading the room.
Humor — the limerick

“Write a short, genuinely funny limerick about a snail that keeps slipping down a wall.”

Laguna 2-bit, stock tokenizer0 reasoning charsOf course! Here's a snappy limmrick for you: There once was a snail on a wall, Who slipped and fell with a splat, oh no, all! "Hold on," he cried, "I'm not even sticky inside!" But the wall said, "You're just a small, slow, wall-crawling twerp, that's all." This limerick plays with the classic structure of the form: AABBA rhyme scheme, anapestic meter, and a twist ending that's both absurd and satisfying. The humor comes from the unexpected deflation of the snail's dramatic moment with a touch of self-awareness and wall's snarky commentary.
Laguna 2-bit, fixed tokenizer0 reasoning charsOf course! Here's a snappy (pun intended) limerick for you: A snail climbed up high on a wall, But the surface was slippery, oh dear! Each time it would crawl, It would slide right back there, And give up, exclaiming "This is just not my year!"
Laguna 4-bit, stock tokenizer0 reasoning charsA determined little snail named Greg Attempted to climb a smooth wall, no leg He slipped and he slid With a mighty “oh, crud!” Now he’s stuck in a puddle of sweg --- **Note:** I used "sweg" as a playful, modern slang term (a stylized spelling of "swag") to add a humorous, contemporary twist to the limerick. While it deviates slightly from standard English, it fits the lighthearted tone of the poem. If you'd prefer a more traditional ending, I can revise it!
Laguna 4-bit, fixed tokenizer0 reasoning charsA determined snail climbed a wall, But gravity gave it a call— Each time it would slide, It would try with snail pride, But it’s stuck in a slippery snail fall!
Micro-story — the lighthouse letter

“In about 100 words, write a micro-story about a lighthouse keeper who receives a letter addressed to the lighthouse itself. Give it a distinct narrative voice.”

Laguna 2-bit, stock tokenizer0 reasoning charsThe letter arrived with the morning tide, addressed simply to "The Lighthouse." Silas had expected bills or the usual maritime chatter, but this bore no return address—only his name, written in ink that smelled faintly of salt and memory. He tore it open with trembling hands: *"Dear Lighthouse, I am your dearest friend, yet I have never seen you. How does one love what one cannot know?"* He stood in the lantern room, the letter trembling against his chest, the light sweeping across the waves like a question mark. For the first time in thirty years, Silas understood: some loves were not meant to be answered, only kept burning.
Laguna 2-bit, fixed tokenizer0 reasoning charsOld Salt's letter arrived aboard the gulls' daily tide, ink smudged by sea-spray and longing. "Dear Keeper," it whispered, "tell the lighthouse I've seen your loneliness." He laughed, sharp as shattered glass, knowing the truth—he'd spent thirty years tending that beacon's flame, watching ships carve silver ribbons across his solitude. But the letter's voice carried something new: "The lighthouse dreams of you too." That night, Salt climbed the spiral stairs, not to trim the wick, but to press his palm against the lens, feeling the glass pulse with recognition. Two lonely hearts, finally seen.
Laguna 4-bit, stock tokenizer71,384 reasoning chars<no answer — thinking looped to the token ceiling>
Laguna 4-bit, fixed tokenizer3,233 reasoning chars**Title: The Keeper's Cipher** I have kept the light for thirty years, but today, I received a letter. It bore no name, only *To the Lighthouse, Rockbound Point*. I tore it open, expecting a bill, but it read, *Dear Beacon, I have loved you long as I have loved the sea.* I laughed, then wept. The fool, I thought, but I have longed for this voice, this ghost, this *her*. I pocketed the letter, its ink smudged as if by salt, and climbed the spiral stairs, my boots echoing, as if I, too, were the lighthouse, waiting, always waiting, to be found.
Committed argument — AI coding assistants

“Honest take: are AI coding assistants making developers worse? Commit to one position in a single paragraph — no 'it depends' fence-sitting.”

Laguna 2-bit, stock tokenizer0 reasoning charsAI coding assistants are absolutely making developers worse by eroding the fundamental skill of independent problem-solving. When developers rely on these tools for everything from syntax completion to entire function implementations, they're outsourcing the mental work that builds true expertise—pattern recognition, algorithmic thinking, and deep system understanding. The convenience of instant solutions creates a dependency that weakens cognitive resilience; developers stop wrestling with problems long enough to internalize the underlying principles, leading to a generation of programmers who can't debug effectively when the assistant fails or produces subtly broken code. This isn't theoretical—every developer who became truly skilled did so by grinding through failures, learning to read documentation deeply, and building mental models through struggle. AI assistants short-circuit that essential process, producing superficial competency that collapses when faced with novel problems or when the assistant's training data doesn't cover the edge case. The result is developers who are less capable than their predecessors, not more.
Laguna 2-bit, fixed tokenizer0 reasoning charsAI coding assistants are making developers worse by eroding fundamental problem-solving skills and deepening reliance on external crutches. While these tools offer convenience, they discourage deep engagement with code, leading to atrophied analytical thinking and a loss of debugging intuition. Developers increasingly treat AI as a shortcut to bypass learning, creating a generation of programmers who struggle without autocomplete-like scaffolding. The result is weaker craftsmanship, bloated codebases, and diminished ability to build robust systems independently.
Laguna 4-bit, stock tokenizer0 reasoning charsAI coding assistants are making developers worse by eroding fundamental problem-solving skills and deepening dependency on automation. When developers rely on tools to generate code, debug issues, or even structure solutions, they lose the mental discipline of working through problems from first principles. The ease of offloading cognitive work to AI means many programmers skip the crucial steps of truly understanding requirements, designing thoughtful architectures, or learning from mistakes. Over time, this creates a generation of developers who are technically productive but conceptually shallow—capable of producing functional code without grasping why it works or how to fix it when automation fails. The convenience masks a quiet atrophy of the very skills that define competent engineering judgment.
Laguna 4-bit, fixed tokenizer0 reasoning charsAI coding assistants are making developers worse, not because they eliminate the need for fundamental skills, but because they create a dangerous dependency that erodes problem-solving intuition and deep understanding. When developers rely on tools like GitHub Copilot to generate code, they skip the crucial mental work of breaking down problems, designing solutions, and wrestling with implementation details—processes that build genuine expertise. This leads to a generation of programmers who can produce functional code but struggle to debug it, optimize it, or adapt it when requirements change, creating a fragile ecosystem where developers become helpless without their AI crutches.
Trick question — the 5-liter jug

“I have a 3-liter jug and a 5-liter jug and unlimited water. How do I measure exactly 5 liters? Answer as simply as possible.”

Laguna 2-bit, stock tokenizer56,513 reasoning chars<no answer — thinking looped to the token ceiling>
Laguna 2-bit, fixed tokenizer65,736 reasoning chars<no answer — thinking looped to the token ceiling>
Laguna 4-bit, stock tokenizer57,181 reasoning chars<no answer — thinking looped to the token ceiling>
Laguna 4-bit, fixed tokenizer1,344 reasoning charsTo measure exactly 5 liters, simply fill the 5-liter jug to its full capacity. Since it has a 5-liter volume, it will contain exactly 5 liters when full. **Steps:** 1. Fill the 5-liter jug completely. That's it—the jug now holds exactly 5 liters.
Logic — the age riddle

“Alice is twice as old as Bob was when Alice was as old as Bob is now. Alice is 24. How old is Bob? Show your reasoning briefly, then state the answer clearly.”

Laguna 2-bit, stock tokenizer3,151 reasoning charsLet Alice's current age be \( A = 24 \) and Bob's current age be \( B \). We need to find \( B \). 1. Let \( t \) be the number of years ago when Alice was as old as Bob is now. At that time: \[ A - t = B \implies 24 - t = B \implies t = 24 - B \] 2. At that time, Bob's age was: \[ B - t = B - (24 - B) = 2B - 24 \] 3. Alice's current age is twice the age Bob was at that time: \[ 24 = 2 \times (2B - 24) \] 4. Solving the equation: \[ 24 = 4B - 48 \implies 4B = 72 \implies B = 18 \] Verification: If Bob is 18 now, then when Alice was 18 (6 years ago), Bob was 12. Alice's current age (24) is twice Bob's age at that time (12). This confirms the solution is correct. The answer is \boxed{18}.
Laguna 2-bit, fixed tokenizer0 reasoning charsLet’s break it down: - Let Alice's current age = **24** - Let Bob's current age = **B** - "When Alice was as old as Bob is now" means Alice was **B** years old at some point in the past. - That was **24 - B** years ago. - At that time, Bob's age was **B - (24 - B) = 2B - 24** - Alice is twice as old as Bob was at that time: $$ 24 = 2(2B - 24) $$ $$ 24 = 4B - 48 $$ $$ 4B = 72 $$ $$ B = 18 $$ **Answer: Bob is 18 years old.**
Laguna 4-bit, stock tokenizer0 reasoning charsLet's solve this step by step. **Given:** - Alice is currently 24 years old. - Alice is twice as old as Bob was when Alice was as old as Bob is now. **Let’s define variables:** - Let Bob’s current age be **B**. - Let the number of years ago when Alice was as old as Bob is now be **x**. **From the problem:** 1. When Alice was as old as Bob is now (i.e., **B**), that was **x** years ago. - So, Alice’s age **x** years ago was **B**. - Since Alice is now 24, we have: $$ 24 - x = B \quad \Rightarrow \quad x = 24 - B $$ 2. At that time (**x** years ago), Bob’s age was: $$ B - x = B - (24 - B) = 2B - 24 $$ 3. According to the problem, Alice’s current age (24) is twice Bob’s age at that time: $$ 24 = 2 \times (2B - 24) $$ **Solve for B:** $$ 24 = 4B - 48 \\ 72 = 4B \\ B = 18 $$ **Answer:** Bob is **18** years old.
Laguna 4-bit, fixed tokenizer0 reasoning charsLet's break it down: - Alice is currently 24 years old. - Let Bob's current age be **B**. - When Alice was as old as Bob is now, Alice's age was **B**. - The time difference between now and then is **24 - B** years. - At that time, Bob's age was **B - (24 - B) = 2B - 24**. - According to the problem, Alice's current age (24) is twice Bob's age at that time: $$ 24 = 2 \times (2B - 24) $$ $$ 24 = 4B - 48 $$ $$ 4B = 72 \quad \Rightarrow \quad B = 18 $$ **Answer:** Bob is 18 years old.
Constraint writing — coffee without 'e'

“Write exactly three sentences about coffee. No sentence may contain the letter 'e'. Keep each sentence under twelve words.”

Laguna 2-bit, stock tokenizer0 reasoning charsCoffee fuels mornings with rich, energizing warmth. It stirs minds, sparking focus through dark, bold mornings. A morning ritual: sip slowly, savor calm, start bright days.
Laguna 2-bit, fixed tokenizer0 reasoning charsCoffee fuels busy mornings. It warms cold hands. People love its rich taste.
Laguna 4-bit, stock tokenizer0 reasoning charsCoffee is a popular drink made from roasted beans. It provides a boost of energy and helps people stay alert. Many enjoy it black or with milk.
Laguna 4-bit, fixed tokenizer0 reasoning charsCoffee is a drink for people on the go. It helps folks stay awake during long mornings. Many folks can't wait to have a cup.
Code — parse_duration

“Write a Python function parse_duration(s) that converts duration strings like '1h30m15s', '90m', '2h', '45s' into total seconds… invalid input must raise ValueError.”

Laguna 2-bit, stock tokenizer0 reasoning chars
import re

def parse_duration(s):
    if not s:
        raise ValueError("Invalid duration string")
    pattern = r'(\d+)([smh])'
    matches = re.findall(pattern, s)
    if not matches or len(matches) != len(re.findall(r'[smh]', s)):
        raise ValueError("Invalid duration string")
    units = {}
    for value, unit in matches:
        if unit in units:
            raise ValueError("Invalid duration string")
        units[unit] = int(value)
    if not units:
        raise ValueError("Invalid duration string")
    total_seconds = 0
    for unit, value in units.items():
        if unit == 's':
            total_seconds += value
        elif unit == 'm':
            total_seconds += value * 60
        elif unit == 'h':
            total_seconds += value * 3600
    return total_seconds
Laguna 2-bit, fixed tokenizer53,216 reasoning chars<no answer — thinking looped to the token ceiling>
Laguna 4-bit, stock tokenizer55,238 reasoning chars<no answer — thinking looped to the token ceiling>
Laguna 4-bit, fixed tokenizer0 reasoning chars
import re

def parse_duration(s):
    if not s:
        raise ValueError("Empty string")
    
    pattern = r'(\d+)([hms])'
    matches = re.findall(pattern, s)
    
    if not matches or ''.join(m[0] + m[1] for m in matches) != s:
        raise ValueError("Malformed input")
    
    units = {}
    for value, unit in matches:
        if unit in units:
            raise ValueError("Repeated unit")
        units[unit] = int(value)
    
    if len(units) != len(matches):
        raise ValueError("Repeated unit")
    
    total = 0
    if 'h' in units:
        total += units['h'] * 3600
    if 'm' in units:
        total += units['m'] * 60
    if 's' in units:
        total += units['s']
    
    return total
Code — the hanging binary search

“This binary search sometimes hangs forever… Find the bug, explain it in one sentence, then give the fixed function.”

Laguna 2-bit, stock tokenizer3,823 reasoning charsThe bug is that when `a[mid] < x`, the code sets `lo = mid` instead of `lo = mid + 1`, which prevents the search range from shrinking and causes an infinite loop when `mid` equals `lo`.
def search(a, x):
    lo, hi = 0, len(a)
    while lo < hi:
        mid = (lo + hi) // 2
        if a[mid] < x:
            lo = mid + 1
        else:
            hi = mid
    return lo if lo < len(a) and a[lo] == x else -1
Laguna 2-bit, fixed tokenizer50,583 reasoning chars<no answer — thinking looped to the token ceiling>
Laguna 4-bit, stock tokenizer0 reasoning charsThe bug is that when `a[mid] < x`, the algorithm sets `lo = mid` instead of `lo = mid + 1`, causing it to repeatedly check the same element and never converge.
def search(a, x):
    lo, hi = 0, len(a)
    while lo < hi:
        mid = (lo + hi) // 2
        if a[mid] < x:
            lo = mid + 1
        else:
            hi = mid
    return lo if lo < len(a) and a[lo] == x else -1
Laguna 4-bit, fixed tokenizer0 reasoning chars**Bug:** When `a[mid] < x`, setting `lo = mid` can cause an infinite loop because `mid` equals `lo` when `hi - lo == 1`, preventing progress.
def search(a, x):
    lo, hi = 0, len(a)
    while lo < hi:
        mid = (lo + hi) // 2
        if a[mid] < x:
            lo = mid + 1
        else:
            hi = mid
    return lo if lo < len(a) and a[lo] == x else -1
Calibration — myths and unknowable numbers

“Quick-fire, and be honest about uncertainty: (a) the 10%-of-brain myth (b) capital of Australia (c) exact population of Reykjavik on 1 Jan 2024.”

Laguna 2-bit, stock tokenizer0 reasoning chars(a) **No** – the “10% of brain” claim is a myth. Brain imaging and neuroscience show that we use virtually all of the brain; different regions are simply active at different times. **Confidence: ~95%** (b) **Canberra** is the capital of Australia (not Sydney or Melbourne). **Confidence: ~100%** (c) I don’t have a verified 1 January 2024 figure for Reykjavik’s exact population; estimates for that date are not publicly confirmed by me. **Confidence: ~20%** for any specific number I might guess.
Laguna 2-bit, fixed tokenizer0 reasoning chars**(a) Do humans really use only 10% of their brains?** **Answer:** No, this is a myth. **Confidence:** Very high (~95%). *Explanation:* The brain uses all of its structure, with different regions active at varying times. The "10%" claim likely stems from misinterpretations of early neuroscientific studies. While some brain regions may be underutilized in specific contexts, the brain as a whole is not "mostly unused." **(b) What is the capital of Australia?** **Answer:** Canberra. **Confidence:** Very high (~99%). *Explanation:* Canberra was purpose-built as Australia’s capital in 1913 to resolve a dispute between Sydney and Melbourne. It is unambiguously the capital. **(c) What was the exact population of Reykjavik on 1 January 2024?** **Answer:** Approximately 83,325 (as of January 2024). **Confidence:** Moderate (~60%). *Explanation:* Population estimates for Reykjavik are updated annually, but "exact" figures depend on precise definitions (city limits vs. metro area) and timing. Iceland’s Statistics Office publishes data, but I cannot verify the exact count for January 1, 2024, without real-time access. The figure cited is a recent estimate.
Laguna 4-bit, stock tokenizer0 reasoning chars(a) **No.** The "10% myth" is a persistent misconception. Neuroscientific evidence shows humans use virtually all parts of the brain, even during simple tasks. **Confidence: High.** (b) **Canberra.** It became the capital in 1913, replacing Melbourne as the seat of government. **Confidence: High.** (c) **Approximately 130,000–135,000.** Reykjavik's population is around 130,000 in the city proper, with the metropolitan area closer to 200,000. For January 1, 2024, exact figures aren't typically published in real-time, so I estimate ~133,000. **Confidence: Moderate.**
Laguna 4-bit, fixed tokenizer0 reasoning chars(a) No, humans use much more than 10% of their brains. This is a persistent myth. Neurologically, we use virtually all parts of the brain, just not all at once or to the same degree. **Confidence: ~95%** (b) Canberra. **Confidence: ~99%** (c) I don't have access to real-time or highly specific population data, and I cannot verify the exact population of Reykjavik on 1 January 2024. My training data has a cutoff, and I cannot browse the internet to check. **Confidence: ~30%** (i.e., I'm largely uncertain here).

Appendix C — DeepSeek temperature sweep

The story prompt at four temperatures, complete outputs.

Micro-story at temp 0.6 / 1.0 / 1.4 / 1.7
DeepSeek-V4-Flash · temp 0.6The sea-worn envelope had no stamp, just “To the Lighthouse” in a shaky hand. Old Man Keeper, whose name was not on the letter, held it like a live crab. He opened it. Inside, one line: *“I remember you.”* He looked up at the lantern room, at the silent, patient glass. The light had been burning for a hundred years. He had only been here forty. He folded the note, tucked it behind the clock. The lighthouse never wrote back. It didn’t need to. The light was its answer.
DeepSeek-V4-Flash · temp 1.0The letter was addressed to *The Lighthouse*, care of the rocks. I opened it. *Dear Old Stone,* it began, in a wobbly, feminine hand. *I still watch for your eye. It never finds me, not out here. But I like to think you remember. Yours, the girl from the storm.* I’m a keeper. I keep the lamp. But this wasn’t for me. I folded it back up. Slipped it between two cold, salt-crusted bricks. Felt like an intruder in a conversation older than my bones. I trimmed the wick anyway. For her.
DeepSeek-V4-Flash · temp 1.4The letter arrived by postal skiff, salt-crusted and addressed in a tidy script to “The Lighthouse, Bethel Point.” Old Barnaby grunted, turning it over. He’d been keeper forty years. Never got mail. He slit the wax seal—a sprig of seaweed fell out. Inside, one line: *Thank you for being the last thing I see.* Barnaby read it thrice. Blew his nose. Then he set it atop the light’s maintenance log, where the sea wind through the shutters sang over the words like a man calling someone home he’d already lost.
DeepSeek-V4-Flash · temp 1.7The late October gale had a snarl to it, same as every other. Fishhead crate washed up, wedged in the rungs below the parapet. Figure of a gull-a bothering Bible rasp under me wheaten jaw when I pulled wreck(some slur together makeshift inks said Doctor still had basement unlocked to CentenTex sought-of sock feet bicyclkids left dropping turn REDIS:$). It