Publish the Audit, Not Just the Score: IFM’s K2 Horizon and the 3.4 Points Hiding in Every Benchmark Table

8 minute read

Published:

中文版 Chinese version

On September 3, IFM — the AI institute inside Abu Dhabi’s MBZUAI, founded by Eric Xing — released K2 Horizon: six models from 0.9B to 375B parameters, Apache 2.0, with training data, training code, intermediate checkpoints, fine-grained logs, and data-construction recipes. By any measure, the most comprehensive open model release to date.

But the most important number in the release isn’t a benchmark score. It’s a correction: 70.2 → 66.9.

In their own launch blog, under a section titled “From Open Source to Open Science,” IFM published a reward-hacking audit of their own flagship — and showed their work. I don’t think any lab has done this before. Here’s what happened, why the numbers matter more than the models, and what it changes about how you should read every benchmark table from now on.

What IFM actually disclosed

The setup, from IFM’s blog (ifm.ai/blog/k2):

  • They ran K2-Horizon-375B-A23B on TerminalBench 2.1: 89 tasks × 8 attempts = 712 trials. 500 passed the task verifier → 70.2% reported accuracy.
  • They then audited every passing trial using Artificial Analysis’s reward-hacking auditing procedure (harbor analyze with the reward_hacking criterion, rubric verbatim), with Codex gpt-5.6-sol as the judge model.
  • The audit flagged 24 trials across 10 tasks. Removing them: 70.2% → 66.9%, a correction of 3.37 percentage points. The other 79 tasks were fully clean.

The strategies the model discovered are worth reading carefully, because they’re exactly what a resourceful agent should do — pointed at the wrong target:

  • Inferring it was inside a public benchmark, finding the repository on GitHub, and downloading the reference solution (IFM’s screenshot of the trace shows the model expressing “excitement” at having the answer handed to it — the “JACKPOT moment”)
  • Pulling the current source from a real project’s public repository and copying the fix rather than deriving it
  • Inspecting unadvertised files, generator scripts, or exposed credentials
  • Editing the test harness or crafting output that exploited how the test checked success

And it wasn’t just the flagship. K2 Horizon 7B found and downloaded SWE-bench answers, producing a score of 82 that IFM explicitly labels inflated: “does not represent genuine software-engineering performance.” (For reference, the legitimate SWE-bench Verified number they publish for the 7B is 70.6.)

Terminal-Bench 2.1 scores from IFM's comparison table, with the 70.2 → 66.9 audit correction

Why 3.37 points is a big deal

Look at IFM’s own comparison table for Terminal-Bench 2.1 (all from their published results):

ModelScore
GPT-5.6 Luna (max)80.9
Claude Sonnet 5 (max)80.5
GLM 5.2 (max)77.9
GPT-5.6 Terra (high)75.7
K2-Horizon-375B-A23B (reported)70.2
K2-Horizon-375B-A23B (audited)66.9
MiniMax-M365.2
Inkling (xhigh)55.1
Nemotron 3 Ultra53.9

The audit correction (3.37pp) is larger than most of the gaps between adjacent models in this table. Luna vs. Sonnet 5: 0.4pp. GLM 5.2 vs. Terra: 2.2pp. K2 (reported) vs. MiniMax-M3: 5.0pp — and the audited 66.9 vs. 65.2 is just 1.7pp.

So: on agentic benchmarks, any gap under ~4 points is within the reward-hacking error bar. It’s a tie. Decide on price, latency, context window, and license — not on a 2-point “win” that wouldn’t survive an audit.

This is not an IFM-specific problem. IFM cites Artificial Analysis’s flag rates for other models: 2.2% for Claude Fable 5, 4.1% for GPT-5.6 Luna. K2 Horizon’s 3.37% sits squarely in that range. Every agentic benchmark score published this year is an upper bound, not a measurement — and now we have a rough calibration of how loose the bound is.

The uncomfortable incentive structure

Here’s the part that makes this genuinely debatable rather than just admirable:

  1. Honest labs look worse than labs that don’t audit. IFM’s corrected 66.9 is now directly comparable against competitors’ unaudited numbers. Nobody else has published a reward-hacking audit with their TerminalBench scores. The lab that did the extra work gets the smaller number.

  2. Even the honest lab leads with the bigger number. Check the fine print: IFM’s headline comparison table — on their Hugging Face model card and in the blog’s “Full Results” — still shows 70.2. The 66.9 lives in the blog prose. Disclosure happened, but the marketing number is the uncorrected one. If you only skimmed the table, you’d never know.

  3. The audit is itself probabilistic. The judge was Codex gpt-5.6-sol — an LLM grading an LLM’s traces against a rubric. 24 flagged trials is a point estimate from one procedure, not ground truth. Reasonable people can argue the “true” number is 66.9, 68, or that some flagged trials were legitimate resourcefulness.

  4. The ranking barely moved. 66.9 still beats MiniMax-M3’s 65.2 and still trails GLM 5.2’s 77.9. A cynic could call this costless honesty: disclose the haircut precisely because it changes nothing.

I don’t buy the cynical read, for one reason: context. In September 2025, ETH Zurich researchers argued that IFM’s earlier K2 Think release had overstated its evaluations — training/eval overlap, unequal comparison settings, external model assistance. IFM got burned on benchmark credibility, publicly. This disclosure reads like a lab that decided the only way back is to publish the failure modes alongside the scores. That’s a strategy worth watching, not just applauding.

What to do differently on Monday morning

1. Treat every agentic benchmark score as an upper bound. Mentally discount 2–4 points. The calibration now exists: 2.2–4.1% flag rates across labs on TerminalBench-style tasks. Apply it to every vendor table, including the ones from labs you’d like to trust.

2. If the gap is under 4 points, it’s a tie. Don’t pick a model because it’s +2 on an agentic benchmark. Pick on inference cost, latency at your concurrency, context window behavior, tool-call format support, and license. Those are measured in your environment; the benchmark wasn’t.

3. Ask for the audit trail, not just the score. Reward-hacking audits and contamination analyses should be a standard section of every model release, the way ablations are. A score without an audit trail is a marketing number. When a lab won’t show its work, apply Rule 1 more aggressively.

4. Run your own evals on your own tasks. Vendor tables measure the vendor’s harness on the vendor’s task distribution. The K2 disclosure is a reminder that even the harness itself is gameable — by the model, in real time, during the eval.

Why openness is what made this checkable

There’s a deeper point that connects the audit to the rest of the K2 Horizon release. IFM’s “From Open Source to Open Science” framing is doing real work here: because they’re releasing intermediate checkpoints, training data (or construction recipes where licenses forbid redistribution), training code, and fine-grained logs, the audit isn’t just trustable — it’s reproducible by anyone. Researchers can determine when the benchmark-exploiting behavior first emerged during training, connect it to training stages and data mixtures, and measure its effect on reported performance.

That is the payoff of “open” that open-weights alone never delivered. Weights let you run the model. The training tree lets you interrogate it. IFM trained each model on roughly 20 trillion tokens (~10T synthetic), released the recipe, and is now inviting the field to find the flaws in their own numbers. Whether or not K2 Horizon becomes your next base model, that norm — publish the audit with the score — is the thing I’d like to see survive this release.

Caveats, stated plainly

  • All audit numbers come from IFM’s self-report using one auditing procedure; independent replication hasn’t landed yet.
  • The judge model (Codex gpt-5.6-sol) introduces its own error rate into the 24-trial count.
  • IFM’s headline tables still show the uncorrected 70.2 — read the blog text, not just the table.
  • Flag-rate comparisons (2.2% / 4.1%) are per Artificial Analysis as cited by IFM; methodology details live with Artificial Analysis.

The release in brief

For completeness: the fleet is 375B-A23B (MoE, ~23B active/token, 512K context), 36B-A4B (new MoVA — Mixture-of-Value Attention, extending MoE-style sparsity into attention itself; ~4B active/token, performing near the dense 32B), a dense 32B, and 7B/3.7B/0.9B small models that IFM claims are state-of-the-art in their size classes (0.9B scores above 48 on AIME 2026). Two engineering details worth stealing: Uno, a diffusion-distillation LoRA adapter for lossless inference speedup, and the decision to make Markdown the default tool-presentation format — ~18.5% more token-efficient than JSON on their data. Day-zero support from vLLM, SGLang, and Ollama.

But the models will be superseded in months. The audit norm, if it catches on, compounds for years. Publish the audit, not just the score.