FreshContextA context lab · Fife
Drawing
02 · Benchmarks
Sheet
2 of 3
Rev
A · 2026-10-01

Working drawing 02 · Models← Benchmarks

165 models.

32 models tested with a written entry, why each was tried, and what came of it, and every other configuration the run log measured. The seats were settled on 20 September 2026: the models that won one come first; the rest are measured, not seated.

Configurations
165
With a write-up
32
Scored runs
582

Measurements taken on an Apple M1 Max with 64 GB of unified memory.
Every number here comes from a locked dataset with a recorded grader. Where a measurement is not valid, it is marked rather than removed.

SeatsWho holds which verb · as of 20 September 2026
  1. JudgegenerateornithContradiction 94%. Confidence you can put a threshold on.Seated
  2. Taggemma4-12b93.8 and 97.9 on the tagger suites, best on the board.Seated
  3. Dispatchk2-3.7b100 of 100 tool calls. Refuses small talk by design.Seated
  4. Extractedge0 pool95% on field extraction from curated evidence.Seated
  5. Screengranite-guardian-4.1-8b100% on fabrication and misattribution screens.Seated
  6. Decidetemporalvon-1.0Which fact came last: 100% in 95 ms, on the CPU.Seated
  7. Decidealiaslaya-421mSame thing, different name: 100 of 100 in 42 ms, on the CPU.Seated
  8. Protectgliner + presidioEach catches what the other misses. Egress fails closed.Seated
  9. Embedbge-m3Native 8K window, dense and sparse.Seated
  10. Rerankbge-reranker-v2-m3A 13-point margin on the failure that broke recall in August.Seated
  11. Seephi4-visionRead a real invoice end to end. Swapped in on demand.Benched

The fleet's verb registry as settled on 20 September 2026 (OKF fleet-verbs), plus the seats recorded on the model cards in the benchmark export of the same date. Seats without a link are not language models and are measured outside this run log.

Index165 configurations · seated first
  1. Gemma 4 12BSeated · Tag

    12B · dense · q4_0 QAT · 7.0 GB · resident

    llama.cpp

    Tested as a cheap tagger after the 80B proved expensive for a task that runs constantly.

    12 scored runs · 13 logged · best 100.0% on epistemics

  2. Granite Guardian 4.1 8BSeated · Screen

    8B · dense · Q4_K_M GGUF, and MLX mixed_3_6 at 3.8GB · 5.1 GB · resident

    llama.cppmlxomlx

    A purpose-built safety and screening classifier, tested for the judge seat where a general model was overkill.

    1 scored run · best 100.0% on screening

  3. K2-Horizon-3.7B (IFM)Seated · Dispatch

    3.7B · dense · Q4_K_M · 2.9 GB · resident

    llama.cppllama.cpp (k2horizon fork)

    The smallest model measured that perceives tool need. Held at three precisions (Q4/Q8/BF16) which made it the subject of the precision ladder.

    6 scored runs · best 100.0% on screening

  4. K2-Horizon-36B-A4B (IFM)Seated · agent

    36B / 4B active · MoE · Q4_K_M · 20.8 GB · resident

    llama.cpp (k2horizon fork)

    MoVA (Mixture-of-Value Attention) extends sparsity into the value component of attention. 4B active gives it 25 tok/s at 5k where a dense 27B manages 8.6. Ties the top of the board on tool invocation and holds a 200-step chain without deviating.

    no runs recorded against this identifier

  5. Qwen3.8 27BSeated · agentic

    27B · dense · MLX 4-bit (MTP build, template patched to reasoning_effort=medium) · 15.0 GB · resident

    llama.cppmlxomlx

    The dense counterweight to the MoE fleet, and the model where MLX first beat llama.cpp. Promoted to the agent seat on 2026-09-09 after toolcall/1.

    4 scored runs · best 100.0% on epistemics

  6. Agents-A1 35BMeasured, not seated

    35B / 3B active · MoE · Q4_K_M · 21.0 GB · resident

    llama.cpp

    An agent-tuned MoE, tested on the tool suites where its specialism should show.

    4 scored runs · best 100.0% on epistemics

  7. BTL-4 (Q4_K_M)Measured, not seated

    35.1B / 2.1B active · MoE · Q4_K_M (community conversion) · 20.5 GB · resident

    llama.cpp

    Fine-tuned from Ornith-1.0-35B on an execution-gated corpus: trajectories kept only where the code ran and passed. 256 experts, 8 routed, 262k native context, ~20 KB/token KV.

    14 scored runs · 15 logged · best 100.0% on epistemics

  8. Devstral Small 2 24BMeasured, not seated

    24B · dense · Q4_K_M · 19.0 GB · resident

    llama.cpp

    A coding model, tested to see whether coding tuning transfers to structured extraction.

    3 scored runs · best 100.0% on screening

  9. Gemma 4 E2BMeasured, not seated

    2B · dense · q4_0 · 5.0 GB · resident

    llama.cppmlx

    The base model for the tagger fine-tune, and the smallest thing worth measuring.

    9 scored runs · 10 logged · best 100.0% on tools

  10. GLM-4.7-FlashMeasured, not seated

    31B / ~3B active · MoE · Q8_0 · 30.0 GB · resident

    llama.cppmlx

    Tested as a fast MoE with a 202k context window, and as the first model we quantised ourselves for MLX.

    3 scored runs · 5 logged · best 95.0% on screening

  11. Granite 4.2 30BMeasured, not seated

    30B · dense · Q4_K_M · 16.5 GB · resident

    llama.cppmlx

    Tested because IBM builds explicitly for structured JSON output, and nullschema is the weakest axis across the whole fleet.

    3 scored runs · best 98.3% on screening

  12. LFM 2.5 8B-A1BMeasured, not seated

    8B / 1B active · MoE · Q4_K_M · 5.0 GB · resident

    llama.cpp

    Tested as an extremely sparse small MoE, 1B active, to find the floor of useful.

    3 scored runs · best 73.3% on screening

  13. Muse-Glimmer 30BMeasured, not seated

    30B · dense · UD-Q4_K_XL · 14.8 GB · resident

    llama.cpp

    Previously dismissed at 10.4 tok/s without ever being scored. Re-examined because it is multimodal, and scanned invoices are the part of the accountancy job nothing else can read.

    2 scored runs · best 86.7% on screening

  14. Ornith 1.5 35BMeasured, not seated

    35B / 3B active · MoE · Q6_K · 29.0 GB · resident

    llama.cppmlx

    A second non-Qwen coding candidate, tested alongside Devstral.

    3 scored runs · best 95.0% on screening

  15. Qwen3 Coder 30BMeasured, not seated

    30B / 3B active · MoE · Q4_K_M · 18.0 GB · resident

    llama.cpp

    The first coding model measured against a real coding contract rather than an extraction suite.

    3 scored runs · best 77.6% on grounding

  16. Qwen3-8BMeasured, not seated

    8B · dense · Q4_K_M · 4.7 GB · resident

    llama.cppmlx

    The small reference and runtime test subject - the only model held in GGUF, MLX-native and BF16 simultaneously, which carried the whole runtime comparison. HumanEval 86.8% strict, beating qwen3.6-35b-a3b by being less verbose.

    no runs recorded against this identifier

  17. Qwen3-Next-80B-A3B Instruct, REAP prunedMeasured, not seated

    60B / ~3B active · MoE · IQ4_XS · 30.4 GB · resident

    llama.cpp

    Tested to find out whether expert pruning costs the extraction seat its abstention. The full model holds that seat at 40 GB, which is most of the memory budget on a 64 GB machine.

    4 scored runs · 5 logged · best 98.3% on screening

  18. Qwen3.6 35B-A3BMeasured, not seated

    35B / 3B active · MoE · MLX 4-bit (also held as UD-Q5_K_M GGUF) · 19.0 GB · resident

    llama.cppmlxomlx

    Tested as the fast general MoE, and used as the daily coding driver in DSH. Moved to an MLX build on 2026-09-09.

    3 scored runs · 5 logged · best 86.7% on screening

  19. Qwen3.8-27B GSQ-RCO IQ3_S (ISTA-DASLab)Measured, not seated

    27B · dense · IQ3_S (per-tensor gradient search) · 11.3 GB · resident

    llama.cpp

    Same weights as qwen3.8-27b at ~3 bits instead of ~4.5, with the quantisation type chosen per tensor by gradient search under a size budget. Retains the MTP head. 26% fewer bytes per token and 8% faster.

    no runs recorded against this identifier

  20. Qwen3.8-9B-Distill (Q8_0)Measured, not seated

    8.9B · dense · Q8_0 · 9.8 GB · resident

    llama.cpp

    Full-parameter distillation of Qwen3.8 2.4T A95B into the Qwen3.5-9B architecture, ~70k curated teacher traces. Tested as a cheap utility seat.

    14 scored runs · best 100.0% on tools

  21. Spark-X2.5-4B (XHToken)Measured, not seated

    4B · dense · Q4_K_M · 2.4 GB · resident

    llama.cpp (build 10893+)

    Hybrid attention - one full-attention layer per three sliding-window layers - giving a native 1M context. Apache 2.0, 20T training tokens, marketed for agentic workflows with claimed native compatibility for Codex, Claude Code and Hermes.

    no runs recorded against this identifier

  22. Ternary-Bonsai-27B (PQ2_0)Measured, not seated

    26.9B · dense · PQ2_0 (2.13 bpw, group-128) · 7.2 GB · resident

    llama.cpp (PrismML fork)

    prism-ml's group-128 ternary pack, built for their own llama.cpp fork's hybrid-attention kernels. The upstream Q2_g64 variant lacks them.

    no runs recorded against this identifier

  23. Ternary-Bonsai-27B (prism-ml)Measured, not seated

    27B · dense · Q2_g64 (1.71 bits/weight) · 7.1 GB · resident

    llama.cpp

    End-to-end ternary weights on a Qwen3.6-27B backbone with ~75% linear attention, claiming 262K context and 94.6% of FP16 intelligence retained. 11.7 GB resident at a 128k window - a third of K2-36B for the same context.

    14 scored runs · best 100.0% on toolcall

  24. Bonsai-27B (Q1_0)Rejected

    26.9B · dense · Q1_0 (1.13 bpw) · 3.5 GB · resident

    llama.cppllama.cpp (PrismML fork)

    Same base as the ternary build at a more aggressive operating point. Tested to find which capabilities survive 1-bit.

    14 scored runs · best 100.0% on toolcall

  25. Bonsai-8B (Q1_0)Rejected

    8.0B · dense · Q1_0 (1.13 bpw) · 1.1 GB · resident

    llama.cppllama.cpp (PrismML fork)

    Derived from Qwen3-8B, not the Qwen3.6-27B backbone the larger Bonsai models use. Tested as the small corner of a size-by-bit-width grid.

    14 scored runs · best 100.0% on toolscale

  26. BTL-4 Compact (IQ2_XXS)Rejected

    35.1B / 2.1B active · MoE · IQ2_XXS (2.30 bpw) · 10.0 GB · resident

    llama.cpp

    The only build badtheorylabs publish. Tested to see what an aggressive IQ codebook costs on a sparse MoE.

    14 scored runs · best 100.0% on epistemics

  27. Qwen3-Next-80B-A3B ThinkingRejected

    80B / 3B active · MoE · IQ4_XS · 40.0 GB · resident

    llama.cpp

    Tested to see whether reasoning improves extraction, on the assumption that thinking helps.

    4 scored runs · best 100.0% on grounding

  28. tagger-e2b-v1 (LoRA fine-tune)Rejected

    2B · dense · MLX 4-bit · 3.0 GB · resident

    llama.cppmlx

    A custom tagger, fine-tuned with MLX LoRA on 270 turns, intended to replace the general model in the tagging seat.

    1 scored run · best 77.1% on tagger

  29. Nemotron 3.5 Lightning 30BRemoved

    30B / 3B active · MoE · Q4_K_M · 24.0 GB · deleted

    llama.cppmlx

    Tested as a fast MoE, 45.9 tok/s, and briefly the best raw scorer on some suites.

    3 scored runs · best 93.3% on screening

  30. Qwen3-Next-80B-A3B InstructRemoved

    80B / 3B active · MoE · IQ4_XS · 40.0 GB · deleted

    llama.cppmlx

    The incumbent. Chosen because 3B active parameters give MoE speed at 80B quality, and it fits at 40GB with room for a long context.

    3 scored runs · 6 logged · best 97.2% on nullschema

  31. Qwen3.5 122B-A10BRemoved

    122B / 10B active · MoE · IQ3 · 45.0 GB · deleted

    llama.cpp

    Tested as the largest MoE that would fit, on the assumption that more parameters would win.

    3 scored runs · best 88.3% on screening

  32. Qwen3.8-Flash-NextRemoved

    180B / 6B active · MoE · AD-3.84bpw M64 · 79.1 GB · deleted

    llama.cpp

    Tested because the M64 shard layout claims to run a 180B model on 64GB by keeping a 51B n-gram embedding table on SSD.

    3 scored runs · best 96.7% on screening

  33. 9 scored runs · 10 logged · best 97.9% on epistemics

  34. 2 scored runs · 3 logged · best 58.3% on synthesis

  35. 6 scored runs · best 100.0% on toolscale

  36. Measured only130 more configurations the run log measured, without a write-up. Each has a page with its runs.
  37. 3 scored runs · best 95.0% on screening

  38. 12 scored runs · best 100.0% on toolcall

  39. 13 scored runs · best 100.0% on toolcall

  40. 5 logged

  41. 8 scored runs · best 100.0% on epistemics

  42. 8 scored runs · 9 logged · best 100.0% on epistemics

  43. 1 scored run · best 91.7% on screening

  44. 4 scored runs · best 100.0% on toolscale

  45. 1 scored run · best 88.3% on screening

  46. 5 scored runs · best 95.0% on screening

  47. 2 scored runs · best 97.9% on tagger_nullable

  48. 5 scored runs · best 97.9% on tagger_nullable

  49. 1 scored run · best 83.3% on synthesis

  50. 5 scored runs · best 97.5% on worldview

  51. 1 scored run · best 50.0% on chainwalk

  52. 1 scored run · best 50.0% on chainwalk

  53. 1 scored run · best 50.0% on chainwalk

  54. 1 scored run · best 93.3% on screening

  55. 2 scored runs · best 91.2% on tagger

  56. 3 scored runs · best 91.7% on screening

  57. 2 scored runs · best 85.8% on tagger

  58. 1 scored run · best 0.0% on chainwalk

  59. 1 scored run · best 0.0% on chainwalk

  60. 1 scored run · best 0.0% on chainwalk

  61. 9 scored runs · best 100.0% on tools

  62. 3 scored runs · best 93.3% on screening

  63. 1 scored run · best 0.0% on chainwalk

  64. 1 scored run · best 0.0% on chainwalk

  65. 1 scored run · best 0.0% on chainwalk

  66. 1 scored run · best 93.3% on screening

  67. 1 scored run · best 93.3% on screening

  68. 3 scored runs · best 96.7% on screening

  69. 3 scored runs · best 96.7% on screening

  70. 6 scored runs · best 100.0% on toolscale

  71. 3 scored runs · best 86.2% on tagger

  72. 1 scored run · best 88.6% on tagger_nullable

  73. 1 scored run · 2 logged · best 66.7% on contract

  74. 3 scored runs · 4 logged · best 91.7% on screening

  75. 1 scored run · 5 logged · best 36.7% on screening

  76. 1 scored run · best 0.0% on screening

  77. 1 scored run · best 98.3% on screening

  78. 1 scored run · best 95.0% on screening

  79. 1 scored run · best 98.3% on screening

  80. 1 scored run · 3 logged · best 100.0% on screening

  81. 1 scored run · best 0.0% on screening

  82. 1 scored run · best 0.0% on screening

  83. 5 scored runs · best 100.0% on toolcall

  84. 5 scored runs · best 100.0% on toolcall

  85. 4 scored runs · best 100.0% on toolcall

  86. 2 scored runs · best 65.0% on worldview

  87. 7 scored runs · best 100.0% on toolcall

  88. 3 scored runs · best 75.0% on synthesis

  89. 2 scored runs · best 100.0% on toolcall

  90. 5 scored runs · best 100.0% on toolcall

  91. 1 scored run · best 50.0% on nullschema

  92. 1 scored run · best 56.9% on nullschema

  93. 1 scored run · best 58.3% on nullschema

  94. 2 scored runs · best 70.8% on nullschema

  95. 3 scored runs · best 93.3% on synthesis

  96. 3 scored runs · best 90.0% on synthesis

  97. 5 scored runs · best 100.0% on toolcall

  98. 2 scored runs · 3 logged · best 75.0% on synthesis

  99. 2 scored runs · best 37.5% on nullschema

  100. 2 scored runs · best 37.5% on nullschema

  101. 2 scored runs · best 36.1% on nullschema

  102. 8 scored runs · best 100.0% on tools

  103. 1 scored run · best 0.0% on screening

  104. 5 scored runs · best 82.5% on toolscale

  105. 13 scored runs · best 100.0% on toolscale

  106. 9 scored runs · 11 logged · best 93.3% on screening

  107. 1 scored run · best 76.2% on tagger

  108. 8 scored runs · best 83.3% on screening

  109. 1 scored run · best 76.2% on tagger

  110. 3 scored runs · best 90.0% on screening

  111. 3 scored runs · best 90.0% on screening

  112. 7 scored runs · best 100.0% on toolscale

  113. 3 scored runs · best 88.3% on screening

  114. 8 scored runs · best 100.0% on epistemics

  115. 1 scored run · best 85.0% on worldview

  116. 1 scored run · best 85.8% on tagger

  117. 1 scored run · best 58.2% on needle

  118. 1 scored run · best 55.5% on needle

  119. 3 scored runs · best 100.0% on toolcall

  120. 1 scored run · best 0.0% on contract

  121. 3 scored runs · 4 logged · best 80.0% on tools

  122. 5 scored runs · best 100.0% on toolscale

  123. 3 scored runs · best 96.7% on screening

  124. 3 scored runs · best 91.7% on screening

  125. 3 scored runs · best 97.2% on nullschema

  126. 1 scored run · best 68.0% on grounding

  127. 3 scored runs · 4 logged · best 95.0% on toolscale

  128. 3 scored runs · best 90.0% on screening

  129. 3 scored runs · best 96.7% on screening

  130. 3 scored runs · best 100.0% on tools

  131. 4 scored runs · best 100.0% on synthesis

  132. 2 scored runs · best 100.0% on screening

  133. 2 scored runs · best 93.3% on tagger

  134. 7 scored runs · best 100.0% on toolscale

  135. 1 scored run · best 72.0% on grounding

  136. 3 scored runs · best 96.7% on screening

  137. 3 scored runs · 4 logged · best 93.3% on tools

  138. 1 scored run · best 88.3% on screening

  139. 2 scored runs · best 92.5% on tagger_nullable

  140. 4 scored runs · best 100.0% on toolcall

  141. 1 scored run · best 80.0% on grounding

  142. 5 scored runs · best 100.0% on toolcall

  143. 1 scored run · best 91.7% on screening

  144. 5 scored runs · best 66.7% on tools

  145. 1 scored run · best 6.9% on nullschema

  146. 1 scored run · best 23.6% on nullschema

  147. 1 scored run

  148. 1 scored run

  149. 1 scored run

  150. 5 scored runs · best 100.0% on toolcall

  151. 3 scored runs · best 92.5% on worldview

  152. 5 scored runs · best 100.0% on toolcall

  153. 2 scored runs · best 77.5% on worldview

  154. 2 scored runs · best 77.5% on worldview

  155. 2 scored runs · best 81.7% on synthesis

  156. 5 scored runs · best 95.0% on toolscale

  157. 1 scored run · best 25.0% on toolcall

  158. 5 scored runs · best 87.5% on toolscale

  159. 6 scored runs · best 95.0% on toolscale

  160. 2 scored runs · best 0.0% on contract

  161. 2 scored runs · best 0.0% on contract

  162. 2 scored runs · best 0.0% on contract

  163. 5 scored runs · best 95.0% on toolscale

  164. 2 scored runs · best 75.0% on tagger_nullable

  165. 1 scored run · best 93.3% on screening

  166. 13 scored runs · 14 logged · best 100.0% on toolscale

Browse byOutcome · architecture · residency · runtime · family

By outcome

What happened after testing, as of 20 September 2026. Rejected and removed entries are kept because the reason is the useful part.

By architecture

Dense models stream every weight per token and are bandwidth bound. Mixture of experts models read only their active experts, so a 35B MoE can run five times faster than a 30B dense model.

By residency

Whether the weights must sit in unified memory. One model here runs only because it does not: the M64 layout keeps a 51B embedding table on SSD.

By runtime

Which engines the model was measured under. Two suites cannot run under MLX at all, because its server ignores schema constraints.

llama.cpp (k2horizon fork) 2

K2-Horizon-3.7B (IFM), K2-Horizon-36B-A4B (IFM)

llama.cpp (build 10893+) 1

Spark-X2.5-4B (XHToken)

By family

Related models tested from the same lineage. Comparing within a family isolates the change.

agents-a1 1

Agents-A1 35B

muse-glimmer 1

Muse-Glimmer 30B

qwen3 1

Qwen3-8B