Skip to main content

Benchmark methodology

The benchmark harness compares two Codex configurations on the same task fixtures:
  • native: Codex with native live web search enabled.
  • kestrel: Codex without native web search, instructed to use the Kestrel Search skill.
Each trial records wall-clock latency, Codex-reported token usage, the final answer, and a benchmark run identifier. Kestrel trials also produce retrieval artifacts containing returned URLs, extracted content, BM25 scores, lengths, hashes, provenance, and stage timings.

Run a smoke comparison

Start Phoenix in another terminal:
Then run one trial per arm:
Smoke tasks verify wiring; they are not sufficient for quality conclusions.

Design a comparison

Use the same task file, model, reasoning effort, and trial count for both arms. Run multiple trials and report per-task results alongside aggregate latency and success measures. Preserve retrieval artifacts so failures can be traced to retrieval or answer synthesis. A task fixture is one JSON object per line:
Keep expected answers and grading rules separate from the prompt.

Evaluate answer quality

Inspect the task, final answer, expected fields, and retrieval evidence for each trial. Apply the same 0–2 rubric to both arms: Set pass to true only when correctness and grounding are each at least 1, the total is at least 6/8, and no material claim contradicts its cited source. Prefer current primary sources over stale expected answers. Record a stale fixture rather than marking an accurate current answer wrong. Distinguish retrieval failures from synthesis failures by checking whether the needed fact appears in the retrieval artifact or trace. The repository’s SKILLS.md remains the authoritative evaluation procedure and defines the required JSONL review record.

Run a larger suite

For a minimally robust comparison, use at least five trials per task and arm, report task-level results as well as aggregates, and retain frozen retrieval artifacts for review.

Sample DeepSearchQA

Use the identical sample size and seed for both arms. The CSV path requires an explicit sample size so the full dataset is not run accidentally.

Inspect traces

Phoenix correlates kestrel.search, kestrel.fetch, and kestrel.rank spans with the benchmark run identifier. Open http://127.0.0.1:6006 while Phoenix is running to inspect them.