Figure 1 · E004

Context tokens per run

Context tokens are the tokens the model read to answer a whole run: the uncached input plus every cache read, summed over every API call in the run, all threads included.

protocols
battery
model
columns

Pooled models shows one column per arm, its models averaged with equal weight — the readable overview. Per model shows one column per model for every arm, for like-for-like reads at a fixed model. This choice applies to every figure on the site and is remembered.

Context tokens per runlower is betterZeroShot + MultiTurn · both batteries
05.0M10.0M15.0MCC Bare 8.59MCodex Bare 4.55M8.75MHaiku 4.53.37MSonnet 52.63MOpus 4.62.86MOpus 4.83.24MOpus 51.90MFable 54.35MLuna2.85MTerra2.58MSolTrueArchitectTrueArchitect8.59M6 modelsCC Barebare harness3rd of 74.55M3 modelsCodex Barebare harness1st of 713.83MHaiku 4.59.22MSonnet 58.27MOpus 56.18MLuna3.30MTerra2.47MSol6.58MGrok 4.69.38MComp 2.5Cursor Barebare harness8.96M6 modelsGraphifyindexing tool4th of 79.28M6 modelsGitNexusindexing tool6th of 76.92M6 modelsCodeGraphindexing tool2nd of 79.11M6 modelsCodebaseMemoryindexing tool5th of 79.64M6 modelsSerenaindexing tool7th of 7

Raw token counts are never pooled across vendors (tokenizers differ), so arms whose selected models span vendors are shown one column per model; ★ marks the best value at each model.

Data behind this figure ZeroShot + MultiTurn · both batteries
armrolecolumncontext tokens per run (input + cache read)runscellsminmaxsdrankruns in the repository
TrueArchitectTrueArchitectHaiku 4.58.75M3942.33M20.85M6.00MHaiku 4.5
Sonnet 53.37M4041.54M7.77M1.87MSonnet 5
Opus 4.62.63M404786k7.38M1.96MOpus 4.6
Opus 4.82.86M404884k7.66M2.13MOpus 4.8
Opus 53.24M4041.34M5.90M1.52MOpus 5
Fable 51.90M112793k3.17M1.01MFable 5
GPT 5.6 Luna4.35M404774k14.24M3.95MGPT 5.6 Luna
GPT 5.6 Terra2.85M404603k8.14M2.44MGPT 5.6 Terra
GPT 5.6 Sol2.58M404664k7.91M2.10MGPT 5.6 Sol
CC Barebare harness6 models8.59M201223.36M29.61M4.69M3rd of 7Haiku 4.5 · Sonnet 5 · Opus 4.6 · Opus 4.8 · Opus 5 · Fable 5
Codex Barebare harness3 models4.55M120122.15M10.61M2.03M1st of 7GPT 5.6 Luna · GPT 5.6 Terra · GPT 5.6 Sol
Cursor Barebare harnessHaiku 4.513.83M4042.32M23.84M5.11MHaiku 4.5
Sonnet 59.22M4045.15M16.79M3.26MSonnet 5
Opus 58.27M4046.57M16.43M2.11MOpus 5
GPT 5.6 Luna6.18M4044.18M10.70M1.46MGPT 5.6 Luna
GPT 5.6 Terra3.30M4041.23M5.89M1.26MGPT 5.6 Terra
GPT 5.6 Sol2.47M404985k5.16M1.28MGPT 5.6 Sol
Grok 4.66.58M4044.29M9.61M1.85MGrok 4.6
Composer 2.59.38M4045.02M14.81M3.53MComposer 2.5
Graphifyindexing tool on Claude Code6 models8.96M201223.58M27.70M4.57M4th of 7Haiku 4.5 · Sonnet 5 · Opus 4.6 · Opus 4.8 · Opus 5 · Fable 5
GitNexusindexing tool on Claude Code6 models9.28M201224.74M31.16M4.74M6th of 7Haiku 4.5 · Sonnet 5 · Opus 4.6 · Opus 4.8 · Opus 5 · Fable 5
CodeGraphindexing tool on Claude Code6 models6.92M203222.75M29.62M4.32M2nd of 7Haiku 4.5 · Sonnet 5 · Opus 4.6 · Opus 4.8 · Opus 5 · Fable 5
CodebaseMemoryindexing tool on Claude Code6 models9.11M201224.07M25.47M4.84M5th of 7Haiku 4.5 · Sonnet 5 · Opus 4.6 · Opus 4.8 · Opus 5 · Fable 5
Serenaindexing tool on Claude Code6 models9.64M207234.13M30.98M5.29M7th of 7Haiku 4.5 · Sonnet 5 · Opus 4.6 · Opus 4.8 · Opus 5 · Fable 5

Figure 1. Context tokens are the tokens the model read to answer a whole run: the uncached input plus every cache read, summed over every API call in the run, all threads included. Each column is the mean over the valid, scored runs of one arm at one model, every arm split by model because token counts are model facts; the dashed lines mark TrueArchitect's and each bare harness's pooled value wherever pooling is licensed. At every model the TrueArchitect column sits well below the same model running bare, and the indexing tools cluster at or above bare Claude Code: the index replaces reading.

How this figure is computed

Definition. For run r, context(r) = tokens_input(r) + tokens_cache_read(r), where tokens_input is the uncached tail of every request and tokens_cache_read the cached prefix re-read on each call. Both are summed over all API calls of the run, including sub-agent threads, from the per-call record named by token_source in the run record (a gateway ledger for TrueArchitect; the harness session logs or the harness's own per-call usage for the comparison group). Cache writes and output tokens are excluded here and reported in the run records.

Aggregation. A column is the arithmetic mean of context(r) over the valid, scored runs of one arm at one model, for the selected exam and battery. When both batteries are selected, each battery forms its own cell and the column is the mean of the two cell means, so the longer battery does not dominate.

Why per model. Token counts are tokenizer facts: a Sonnet token and a GPT token are not the same unit. The site therefore never pools raw token counts across vendors. The pooled-models view (the default) pools an arm over its roster only where the roster is a single vendor; an arm spanning two vendors stays split into one column per model whatever the columns choice, which the table discloses.

Reading it. Lower is better. The like-for-like comparison is column to column at the same model: TrueArchitect at Sonnet 5 against bare Claude Code at Sonnet 5, TrueArchitect at GPT 5.6 Sol against Codex at GPT 5.6 Sol. The dashed reference lines are TrueArchitect's and the bare harnesses' pooled means, drawn only where a pooled value is licensed (a single-vendor roster), so the indexing tools have both TrueArchitect and their baseline in the same picture.

Disclosures

Exam protocols have different token denominators (a MultiTurn question replays its history; ZeroShot pays the fixed prefix per question). Switch protocols with the control above; the site never pools across them.

A run whose token facts were not captured is excluded from its column, never counted as zero; the table's n is the number of runs behind each column.

Provenance

Computed at build time from epochs/E004/summary/runs.json of the proof package (export tool tabench export public 0.1.25, scorer era tabench-1.1). Each row of the table above links to the run directories in the repository, where run.json, the answers, the verdicts and the transcript of every run can be read.