Naib retrieval lab

Are we finding the right code?

A plain-language view of the retrieval experiments. Every result is tied to a split, method, file budget, and corpus fingerprint.

Artifact status
blocked
Artifact blocked
Commit recorded by the latest validated result
Top-k
10
Maximum files returned per task
No pass arm
5
Model/arm records in the artifact
Unsealed
1
Independent replicates declared

What we are actually testing

Our immediate goal is narrow: find the right code.

For a task such as “preserve this compiler behavior,” we want the retrieval method to put the files a developer needs at the top of the list, while keeping irrelevant files out. We are not yet claiming that retrieval saves tokens or makes an agent finish tasks more cheaply.

Token accounting is the next phase. We will complete it only after the file-finding capability is demonstrable, because a small token count is not useful if it omits the file that contains the answer.

1

Freeze real tasks

We pin a repository commit. Each task is a real commit subject, and the files changed by that commit are the objectively known target files.

2

Build the search index

Naib turns each repository file into a local derived page containing facts such as its path, language, exports, and imports. The source code stays local.

3

Run every method identically

Naib lexical, grep, and Repowise receive the same task text and may return at most 10 files. No method gets extra search budget.

4

Score file finding

We compare each returned path with the commit’s changed-file list, calculate recall and precision, and record how many files were served.

5

Repeat and protect the holdout

Replicates check stability. We use the train split to find bugs and choose settings; we leave the holdout untouched until the method is frozen.

Important: nothing is being trained in this benchmark. “Train” and “holdout” describe two groups of test tasks, not two stages that update a machine-learning model. No model weights change during these runs.

What the numbers mean

We want more of the files that really changed, with fewer irrelevant files handed to the agent.

Recall

Of the files that really changed, how many did the method find? Higher is better.

Precision

Of the files returned, how many really changed? Higher means less noise.

Files served

How many files the method puts in front of the agent. This is the reading burden.

Top-k

The maximum number of results allowed per task. The validated artifact records the configured value for every arm.

Replicate

Repeating a cell to check stability. Deterministic cells should match byte-for-byte.

Corpus fingerprint

A hash of indexed pages. If it changes, old and new scores are different experiments.

Holdout scorecard

All methods get the same tasks and the artifact-recorded file maximum on the evaluation split.

MethodRecallPrecisionFilesMeaning
Keel lexical · 999-file pilot0.1060.0301564fail · One-replicate pilot holdout recall is 0.106 and precision is 0.030; below recall 1.000 and precision 0.800.
Keel grep · 999-file pilot0.2320.0651584fail · One-replicate pilot holdout recall is 0.232 and precision is 0.065; grep outperformed lexical retrieval but neither met the task gate.
Repowise Ollama · all-minilm · 999-file pilot0.0530.0151600fail · Real Repowise Ollama pilot completed one replicate; holdout recall is 0.053 and precision is 0.015. Repowise did not emit token accounting.
Repowise Ollama · nomic-embed-text · 999-file pilot0.0300.0091600fail · Real Repowise Ollama pilot completed one replicate; holdout recall is 0.030 and precision is 0.009. Repowise did not emit token accounting.
Repowise Ollama · embeddinggemma · 999-file pilot0.0720.0201600fail · Real Repowise Ollama pilot completed one replicate; holdout recall is 0.072 and precision is 0.020. This was the strongest embedding arm, but it did not meet the task gate. Repowise did not emit token accounting.

Holdout recall

Did the method find the files that actually changed?

Keel lexical · 999-file pilot
0.106
Keel grep · 999-file pilot
0.232
Repowise Ollama · all-minilm · 999-file pilot
0.053
Repowise Ollama · nomic-embed-text · 999-file pilot
0.030
Repowise Ollama · embeddinggemma · 999-file pilot
0.072

Current reading: The latest artifact is blocked.

Blocked arms are shown honestly and are not treated as passing evidence.

Run details and model accounting

These values come directly from the validated JSON artifact. A dash means the runner did not report that field.

Generated2026-08-20T13:55:21.380Z
Source commitb465fdbfe175
Corpus999 files · 994 pages
Modules73
Tasks106 train · 54 holdout
Embedding batches63 / model · batch 16
Acceptance gateRecall 1.000 · precision 0.800
Lexical vs grepnot_passed
Arm / modelDimensionsTestsFiles servedTokensCostWall time
Keel lexical · 999-file pilot
lexical
160/1601,564463,523$0.000015.8s
Keel grep · 999-file pilot
lexical
160/1601,584429,943,315$0.000017.0s
Repowise Ollama · all-minilm · 999-file pilot
all-minilm
384160/1601,6000$0.0000325.0s
Repowise Ollama · nomic-embed-text · 999-file pilot
nomic-embed-text
768160/1601,6000$0.0000795.8s
Repowise Ollama · embeddinggemma · 999-file pilot
embeddinggemma
768160/1601,6000$0.0000737.5s

The bounded pilot completed. The final acceptance run remains blocked until five independent replicates and a sealed holdout are run; web build passes, while the pre-existing web lint baseline remains.

Running results table

Every completed test stays here. A dash means that metric was not part of that test, not that it was zero.

TestRepository / splitMethodRecallPrecisionFilesWhat this tells us
failtracked_files_only_bounded_pilot · train + holdoutKeel lexical · 999-file pilot0.1060.0301564One-replicate pilot holdout recall is 0.106 and precision is 0.030; below recall 1.000 and precision 0.800.
failtracked_files_only_bounded_pilot · train + holdoutKeel grep · 999-file pilot0.2320.0651584One-replicate pilot holdout recall is 0.232 and precision is 0.065; grep outperformed lexical retrieval but neither met the task gate.
failtracked_files_only_bounded_pilot · train + holdoutRepowise Ollama · all-minilm · 999-file pilot0.0530.0151600Real Repowise Ollama pilot completed one replicate; holdout recall is 0.053 and precision is 0.015. Repowise did not emit token accounting.
failtracked_files_only_bounded_pilot · train + holdoutRepowise Ollama · nomic-embed-text · 999-file pilot0.0300.0091600Real Repowise Ollama pilot completed one replicate; holdout recall is 0.030 and precision is 0.009. Repowise did not emit token accounting.
failtracked_files_only_bounded_pilot · train + holdoutRepowise Ollama · embeddinggemma · 999-file pilot0.0720.0201600Real Repowise Ollama pilot completed one replicate; holdout recall is 0.072 and precision is 0.020. This was the strongest embedding arm, but it did not meet the task gate. Repowise did not emit token accounting.

Token status for this table: deferred. We will add input-token and effective-cost columns after the file-finding gate is established and both methods are priced at the same useful output level.

Progress over time

Pending work stays visible instead of looking complete.

Latest artifact
Artifact status: blocked
5 arm records; commit not recorded; corpus c1fdc31499cc.
blocked
Run metadata
Preregistered run declared
106 train tasks, 54 holdout tasks, 1 replicates; holdout not sealed.
Pending
Next gate
Complete numeric retrieval benchmark
Blocked or not-run arms remain visible until the benchmark and its validation gates complete.
Blocked

Train versus holdout

Train = tune

Use these tasks to find bugs and choose thresholds. A good train score is encouraging, not proof.

Holdout = judge

Keep these tasks untouched while choices are made. After freezing the method, they test generalization.

Why both?

If we keep changing the method after seeing holdout results, holdout becomes another train set.

Source: testing-results.json, validated by the shared retrieval result schema.