Organic index adoption by model
Every arm here was given a codebase index and left to decide whether to use it: the prompt named no tool, each indexing tool was installed as shipped with its own instructions in place, and every tool was directly visible to the model. This figure is how often the harness actually called the index it had, per model.
Every model is on the horizontal axis. Protocols pool with equal weight per protocol × battery cell; pick one protocol to read it alone. MultiTurn is one conversation per battery, so its per-question share is lower by construction; the table carries the per-conversation figure.
Data behind this figure — ZeroShot + MultiTurn · both batteries
| arm | role | model | share of question runs calling the index | question runs | with an index call | index calls | setup calls (excluded) | no tool calls | conversations | conversations with an index call | runs in the repository |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Corograph | Corograph | Haiku 4.5 | 0% | 980 | 0 | 0 | — | 980 | 39 | 0 | Haiku 4.5 |
| Sonnet 5 | 0% | 1000 | 0 | 0 | — | 1000 | 40 | 0 | Sonnet 5 | ||
| Opus 4.6 | 0% | 1000 | 0 | 0 | — | 1000 | 40 | 0 | Opus 4.6 | ||
| Opus 4.8 | 0% | 1000 | 0 | 0 | — | 1000 | 40 | 0 | Opus 4.8 | ||
| Opus 5 | 0% | 1000 | 0 | 0 | — | 1000 | 40 | 0 | Opus 5 | ||
| Fable 5 | 0% | 330 | 0 | 0 | — | 330 | 11 | 0 | Fable 5 | ||
| GPT 5.6 Luna | 0% | 1000 | 0 | 0 | — | 1000 | 40 | 0 | GPT 5.6 Luna | ||
| GPT 5.6 Terra | 0% | 1000 | 0 | 0 | — | 1000 | 40 | 0 | GPT 5.6 Terra | ||
| GPT 5.6 Sol | 0% | 1000 | 0 | 0 | — | 1000 | 40 | 0 | GPT 5.6 Sol | ||
| CC Bare | bare harness | Haiku 4.5 | 0% | 900 | 0 | 0 | — | 37 | 36 | 0 | Haiku 4.5 |
| Sonnet 5 | 0% | 1000 | 0 | 0 | — | 193 | 40 | 0 | Sonnet 5 | ||
| Opus 4.6 | 0% | 1000 | 0 | 0 | — | 60 | 40 | 0 | Opus 4.6 | ||
| Opus 4.8 | 0% | 700 | 0 | 0 | — | 28 | 30 | 0 | Opus 4.8 | ||
| Opus 5 | 0% | 1000 | 0 | 0 | — | 3 | 40 | 0 | Opus 5 | ||
| Fable 5 | 0% | 400 | 0 | 0 | — | 19 | 15 | 0 | Fable 5 | ||
| Codex Bare | bare harness | GPT 5.6 Luna | 0% | 1000 | 0 | 0 | — | 3 | 40 | 0 | GPT 5.6 Luna |
| GPT 5.6 Terra | 0% | 1000 | 0 | 0 | — | 8 | 40 | 0 | GPT 5.6 Terra | ||
| GPT 5.6 Sol | 0% | 1000 | 0 | 0 | — | 9 | 40 | 0 | GPT 5.6 Sol | ||
| Cursor Bare | bare harness | Haiku 4.5 | 0% | 1000 | 0 | 0 | — | 13 | 40 | 0 | Haiku 4.5 |
| Sonnet 5 | 0% | 1000 | 0 | 0 | — | 15 | 40 | 0 | Sonnet 5 | ||
| Opus 5 | 0% | 1000 | 0 | 0 | — | — | 40 | 0 | Opus 5 | ||
| GPT 5.6 Luna | 0% | 1000 | 0 | 0 | — | 60 | 40 | 0 | GPT 5.6 Luna | ||
| GPT 5.6 Terra | 0% | 1000 | 0 | 0 | — | 47 | 40 | 0 | GPT 5.6 Terra | ||
| GPT 5.6 Sol | 0% | 1000 | 0 | 0 | — | 73 | 40 | 0 | GPT 5.6 Sol | ||
| Grok 4.6 | 0% | 1000 | 0 | 0 | — | 1 | 40 | 0 | Grok 4.6 | ||
| Composer 2.5 | 0% | 1000 | 0 | 0 | — | — | 40 | 0 | Composer 2.5 | ||
| Graphify | indexing tool on Claude Code | Haiku 4.5 | 2% | 900 | 22 | 22 | — | 76 | 36 | 16 | Haiku 4.5 |
| Sonnet 5 | 23% | 1000 | 239 | 239 | — | 42 | 40 | 20 | Sonnet 5 | ||
| Opus 4.6 | 0% | 1000 | 0 | 0 | — | 69 | 40 | 0 | Opus 4.6 | ||
| Opus 4.8 | 14% | 700 | 87 | 87 | — | 19 | 30 | 14 | Opus 4.8 | ||
| Opus 5 | 3% | 1000 | 30 | 30 | — | 2 | 40 | 16 | Opus 5 | ||
| Fable 5 | 33% | 400 | 142 | 142 | — | 14 | 15 | 12 | Fable 5 | ||
| GitNexus | indexing tool on Claude Code | Haiku 4.5 | 42% | 900 | 388 | 1342 | — | 26 | 36 | 33 | Haiku 4.5 |
| Sonnet 5 | 34% | 1000 | 322 | 719 | — | 19 | 40 | 38 | Sonnet 5 | ||
| Opus 4.6 | 36% | 1000 | 344 | 600 | — | 58 | 40 | 30 | Opus 4.6 | ||
| Opus 4.8 | 14% | 700 | 81 | 227 | — | 20 | 30 | 20 | Opus 4.8 | ||
| Opus 5 | 20% | 1000 | 200 | 319 | — | — | 40 | 33 | Opus 5 | ||
| Fable 5 | 12% | 400 | 51 | 77 | — | 14 | 15 | 13 | Fable 5 | ||
| CodeGraph | indexing tool on Claude Code | Haiku 4.5 | 68% | 950 | 654 | 1403 | — | 63 | 38 | 38 | Haiku 4.5 |
| Sonnet 5 | 49% | 1000 | 464 | 860 | — | 49 | 40 | 31 | Sonnet 5 | ||
| Opus 4.6 | 36% | 1000 | 343 | 524 | — | 152 | 40 | 30 | Opus 4.6 | ||
| Opus 4.8 | 37% | 700 | 224 | 303 | — | 33 | 30 | 23 | Opus 4.8 | ||
| Opus 5 | 34% | 1000 | 333 | 378 | — | 3 | 40 | 27 | Opus 5 | ||
| Fable 5 | 25% | 400 | 103 | 131 | — | 22 | 15 | 10 | Fable 5 | ||
| CodebaseMemory | indexing tool on Claude Code | Haiku 4.5 | 80% | 900 | 712 | 4379 | 810 | 14 | 36 | 36 | Haiku 4.5 |
| Sonnet 5 | 7% | 1000 | 59 | 312 | 194 | 26 | 40 | 27 | Sonnet 5 | ||
| Opus 4.6 | 14% | 1000 | 146 | 317 | 252 | 68 | 40 | 22 | Opus 4.6 | ||
| Opus 4.8 | 4% | 700 | 27 | 148 | 232 | 20 | 30 | 23 | Opus 4.8 | ||
| Opus 5 | 2% | 1000 | 17 | 63 | 323 | 2 | 40 | 16 | Opus 5 | ||
| Fable 5 | 7% | 400 | 29 | 68 | 146 | 18 | 15 | 9 | Fable 5 | ||
| Serena | indexing tool on Claude Code | Haiku 4.5 | 7% | 950 | 64 | 71 | 262 | 15 | 38 | 21 | Haiku 4.5 |
| Sonnet 5 | 0% | 1000 | 1 | 1 | 1 | 29 | 40 | 1 | Sonnet 5 | ||
| Opus 4.6 | 0% | 1000 | 1 | 3 | 97 | 63 | 40 | 1 | Opus 4.6 | ||
| Opus 4.8 | 0% | 700 | 1 | 1 | 1 | 34 | 30 | 1 | Opus 4.8 | ||
| Opus 5 | 0% | 1000 | 1 | 2 | 1 | 1 | 40 | 1 | Opus 5 | ||
| Fable 5 | 0% | 480 | 0 | 0 | — | 14 | 19 | 0 | Fable 5 |
Figure 16. Every arm here was given a codebase index and left to decide whether to use it: the prompt named no tool, each indexing tool was installed as shipped with its own instructions in place, and every tool was directly visible to the model. This figure is how often the harness actually called the index it had, per model. Each line is one arm across the models it ran, from the fastest to the frontier model; a point is the share of that arm's question runs at that model in which at least one tool call went to the arm's index, with the tool's setup calls excluded. Hover a point for the counts; the table beneath carries every number. Read it as a description of behaviour rather than a ranking: it says how much of each arm's result was produced with its index in the loop, and how that changed as the model got stronger.
How this figure is computed
Definition. A question run is one question answered by one arm at one model in one repetition (a ZeroShot session, or one turn of a MultiTurn conversation). It counts as using the index when at least one of its main-thread tool calls is an index call: for Corograph, a query to its codebase index; for an indexing tool served over MCP, a call to that tool's own tool surface; for Graphify, which ships as a skill rather than an MCP server, an invocation of that skill. Calls that prepare a tool rather than ask it a question — project activation, instruction fetches, index build or status checks, schema reads — are excluded from the count and listed per arm in the summary file under setup_tools_excluded, so a reader can put them back.
Aggregation. For an arm at one model, the share is computed within each protocol × battery cell and the cells are averaged with equal weight, the same pooling law as every other figure, so the longer battery and the larger protocol never outvote the others. The table beneath the figure reports the summed counts as well as the share.
Setup. The per-question prompt is published in the repository and names no tool. Each indexing tool was installed by its own installer into the container's home directory, which is where those installers write their MCP registration, instructions, hooks or skill; GitNexus and CodeGraph also built their index before the first question, as their documentation directs, and GitNexus wrote its own context files into the working copy. Claude Code's deferred tool loading was switched off for every arm, so the full MCP tool surface was visible to the model without a search step. Corograph ran through its own gateway with its index available from the first call. Nothing on either side prompted the model toward or away from any tool.
Reading it. The vertical axis is the share of question runs that used the index; it is not a score. A low value means the harness answered mostly by reading and searching the source with the index unused; a high value means the index was in the loop for most answers. The figure should be read with Figures 1, 2 and 8: an arm's accuracy and token results were produced with its index used this often.
Disclosures
Main thread only: MCP tools are not offered to sub-agent threads, so a sub-agent's reads and searches do not enter this figure. HumanExam is whole-battery and has no per-question tool attribution; it is not shown.
MultiTurn is reported per question; one conversation carries a whole battery, so a conversation that consulted the index once early is counted at the questions where it did so. The table reports the per-conversation figure beside it (conversations with at least one index call).
Graphify ships as a skill: its graph was built before the session and the skill invocation is the index call; reads of the graph files by other means are not distinguishable from ordinary file reads and are not counted.
CodebaseMemory indexes on demand: its index was not built before the session, so its index_repository and index_status calls are setup calls, excluded here and listed in the summary file. Serena has no prebuilt index by design; its project activation and instruction calls are setup calls likewise.
The share says how often the index was called, not whether its answer was used: a run that queried the index and then read the source is counted the same as one that answered from the query. The tool sequences themselves are in each run's transcript.
Provenance
Computed at build time from epochs/E004/summary/adoption.json of the proof package (export tool tabench export public 0.1.29, 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.