A study from Capraro, Marcoccia and Quattrociocchi, written up by The Next Web, gave people AI assistance on a reasoning task and watched their accuracy fall from 27% to 9%. Confidence went the other way, from 30% to 76%, and willingness to say "I don't know" collapsed from 44% to 3%. That gap between being wrong and feeling right is the same failure mode we keep building into our agents, and the mood is showing elsewhere too: Alec Scollon reckons he has LLM burnout, Yael Grauer would like you to stop telling her to ask an LLM, and Stack Overflow's data explorer has the graph nobody there wants to look at.
Phil Nash has handed AI++ over, and I'm Erick, picking it up from here. Same newsletter, same format, same fortnightly slot.
In this edition of AI++ we take a look at what actually breaks when you move an agent to a new model, find out why constraining the output beats reaching for a bigger one, and ask what AI company logos have all been doing to themselves.
Erick Ramirez | Apache Cassandra committer & Developer Advocate at IBM/DataStax
🛠️ Building with AI, Agents & MCP
Model swaps
A model swap is a harness migration wearing a config change's clothes. Ploy's write-up of migrating a production agent to GPT-5.6 is the most useful thing I read this fortnight, and the headline numbers, 2.2x faster and 27% cheaper, are the least interesting part of it. A third of their early failures were bugs in their own eval harness, whose per-step budgets assumed Claude's sequential tool calls and fell apart on GPT-5.6's parallel ones. Then the real one: GPT-5.6 fills all 25 optional parameters on a tool with plausible defaults where Claude just omits them, silently failing over half of their file reads. Promoting those optionals to required with a nullable type took empty reads to zero.
None of that fails a test, which is the point. Someone on r/LLMDevs found their agent had quietly stopped calling cancel_subscription after a swap while every eval passed, and Base44 told Anthropic their suite couldn't see a prompt change invalidating their cache, because cache breakage arrives as a bill rather than as a failure. If your evals only grade the final answer, budget a week for your next swap, not an afternoon.
Narrowing the space
The best idea of the fortnight is that reliability comes from giving a model less room to be wrong, not from giving it a bigger model. Unmesh Joshi's DSLs Enable Reliable Use of LLMs puts it best: co-design a small domain language with the model until the semantic model settles, then use that language as the prompt surface. Tickloom's fault DSL reads as English, partition(BYZANTIUM).from(CYRENE), and makes an illegal ordering fail at compile time instead of at 3am. The r/LLMDevs deep dive on token-level constrained decoding is the same move one layer down. LangChain's Nemotron 3 Ultra playbook is the strongest version of it: they matched Opus 4.8's best agent run at roughly 8x lower cost by changing only the scaffolding.
Checking the homework
Everyone agrees verification is the bottleneck now, and nobody agrees on how. Anthropic's account of securing their AI-native SDLC says to require a proof-of-concept for any agent finding, which zkSecurity's audit of OpenVM's zkVM contradicts outright: they found the model very good at producing PoCs for issues that were not real. What worked for them was context engineering, an auditor encoding what each module assumes and which invariants it silently relies on, and that is what surfaced a genuine missing subfield check in openvm-pairing. I don't think the two are in conflict so much as scoped differently: a proof-of-concept is a great filter when the bug is reachable from a test, and a terrible one when the property is mathematical.
đź§ New models
- ​Kimi K3 is 2.8T parameters at 1M context, tuned for agentic coding, and being read as Opus 4.8-class at Sonnet 5 pricing. Before you rewrite your routing, read Akash Bajwa on Sparse By Design: K3 activates 16 of 896 experts, and active parameters are what you pay for.
- ​Gemini 3.6 Flash is $1.50/$7.50 per million tokens at 49% on DeepSWE, but the number that moves your bill is 17% fewer output tokens than 3.5 Flash. Flash-Lite is cheaper still at $0.30/$2.50 and 350 tokens a second.
- poolside's Laguna S 2.1 is a 118B-A8B agentic coding MoE with GGUFs out the same day. Someone on r/LocalLLaMA ran it through their own eval and found it the fastest 100B+ they've tested and prone to inventing facts under pressure, which is exactly what a benchmark table hides.
- Cognition's SWE-1.7 hits 81.5% on Terminal-Bench 2.1 and serves in Devin at 1000 tokens a second. It's RL'd on top of Kimi K2.7, so a US commercial coding model now sits on Chinese open weights.
- Thinking Machines Lab's Inkling is a 975B-A41B multimodal MoE under Apache-2.0, built as a fine-tuning base rather than a frontier model. Your licence-clean starting point for something custom.
🗞️ Other news
Fun with AI
- Velvet Shark's Why do AI company logos look like buttholes? got a 2026 update reporting that Claude's logo now clenches when you click it. I have checked. It does.
- ​claude-meseeks plays a Mr. Meeseeks line while Claude Code works, and I can't decide if that makes a long task better or much worse.
🧑‍💻 Code & Libraries
- ​Moonshine Micro is a voice detection, speech-to-text and neural TTS stack that runs in about 470 KB of SRAM, models included.
- ​Grok Build is xAI's terminal coding agent in Rust, Apache-2.0, with a headless mode for CI.
- ​Juggler is an open-source GUI coding agent that treats the conversation as an editable tree rather than a chat log.
- ​mcpgrade is a linter that grades an MCP server on agent usability, with no API key needed.
- ​Mesh LLM is a runtime that pools GPUs across machines behind a single OpenAI-compatible endpoint.
- ​Flint is a visualisation language for agents that compiles one spec to Vega-Lite, ECharts or Chart.js.
🔦 Langflow Spotlight
Langflow Policies turn a rule you can write in one sentence into a deterministic check at the tool boundary, rather than a line buried in a prompt. The component sits between your tool source and your agent, and hands back guarded versions of the same tools. Write one rule per policy, like "Only Gold customers are eligible for a 10% discount on all doctor appointments", run it once in Generate mode to compile the guard code, then flip it to Guard. Your agent keeps its judgement, your discount policy stops depending on it: Policies and guarded tools.
🗓️ Events
I've got nothing to plug this fortnight, so I'm going to use the space to ask for yours instead. If you're running a meetup, speaking at a conference, or you've spotted something worth booking a flight for, hit reply and tell me about it. I'll put the good ones in the next issue with a link and your name on the find.