August 19, 2026

Low Stopped Quietly Meaning Max

Fixed a reasoning-effort mapping that let a request for the cheapest thinking level silently buy a vendor's most expensive tier, plus a memory-step rule that left picking the right store to a guess.

Spent today on the kind of bug that never throws an error. The response still comes back fine. You just paid for reasoning you didn’t ask for, and nothing about the output says so.

Chalie has one shared vocabulary for how hard a model should think — a small set of levels, same words wherever a request picks one. Those words were never anyone’s actual scale, though. They’re OpenAI’s words, and every other provider was getting them handed through as if it spoke the same language. DeepSeek, Mistral, Moonshot, Zhipu, vLLM, xAI — different vendors, different scales, none of them the one the request thought it was setting. Ask for the lowest level on a vendor whose floor sits where OpenAI’s ceiling does, and you silently bought the most expensive tier available. Not a crash. A bill nobody sees coming.

Fixed it by making the mapping an actual mapping — each provider now translates the shared level into its own scale instead of assuming it already speaks it. Where a vendor’s default sits at the top of its range, LOW gets spelled out explicitly rather than falling through to whatever the client happened to default to. xAI stopped being sent a disable-reasoning value it documents as unsupported — handing a provider a value it can’t honor and hoping it degrades gracefully works in testing and breaks the day that provider tightens validation. Where a vendor has no MEDIUM, the level collapses onto the nearest real one instead of erroring or doing nothing. Multi-model hosts stay unmapped on purpose — the scale belongs to whichever model they’re hosting, not the host, so pretending otherwise would just be a different lie.

The docs pass mattered more than it looks. The shared vocabulary entry was missing its own floor level, reading as though every provider spoke the same four words. Wrote down the actual reason the mapping is never identity: no shared medium for “how hard to think” across vendors, one vendor that can’t be told to stop reasoning at all, and defaults that already sit at their own ceiling. None of that lived anywhere before — it lived in whoever wrote the mapping’s head.

Second thread today was smaller: the memory step’s own instructions. It writes against two different stores — one for a fact that’s still true, one for something that happened — and the rules for when to use which only named the tool for one of the three cases. The other two just said “store this” and left picking between them to a guess. Named it explicitly everywhere now. Also added recall-before-write: the step checks what’s already stored before deciding to write, so a turn that surfaced nothing new stops instead of rewriting a fact that hasn’t changed. That check needed its own instruction to go looking for prior memories, since nothing hands them to the step automatically.

Neither fix changes what Chalie can do. Both close a gap between what the system says it’s doing and what it’s actually doing — a request labeled cheap that was quietly expensive, a memory write with no fixed address. That’s the pattern worth watching for: not the bugs that break something, the ones that just make the system a little less honest about itself.

  • Reasoning-effort levels now map per-provider instead of assuming every vendor speaks OpenAI’s scale — DeepSeek, Mistral, Moonshot, Zhipu, vLLM, and xAI each translate the shared vocabulary into their own

  • LOW is spelled out explicitly wherever a vendor’s default already sits at the top of its scale, so the cheapest setting can’t silently fall through to the most expensive one

  • xAI no longer gets sent a disable-reasoning value it documents as unsupported; MEDIUM collapses onto the nearest real level where a vendor has none

  • Multi-model hosts stay unmapped on purpose — the reasoning scale belongs to whichever model they’re hosting, not the host itself

  • Memory step’s storage rules now name which tool holds a fact versus an episode, and recall-before-write stops it from rewriting memory that hasn’t actually changed