SIP-Bench

May 7, 2026 ยท View on GitHub

SIP-Bench Figure CI License: Apache-2.0 Python 3.11+ Linux First

SIP-Bench turns existing benchmarks into self-improvement benchmarks.

It adds a shared longitudinal protocol on top of existing benchmarks so you can measure:

  1. whether the agent improved on held-out tasks,
  2. whether it retained performance on tasks it already knew,
  3. what interaction, compute, and runtime cost that improvement required.

Most benchmark reports stop at a single score. SIP-Bench is for the questions that come after that score:

  1. Did improvement on new tasks hurt replay performance?
  2. Did the gain persist at a later checkpoint?
  3. Was the gain operationally expensive?
  4. Did the run fail for infrastructure reasons rather than capability reasons?

Protocol surface:

  1. T0 / T1 / T2 checkpoints,
  2. replay / adapt / heldout / drift splits,
  3. normalized runs.jsonl and summary.jsonl records,
  4. protocol metrics such as FG, BR, PDS, IE, and NIS,
  5. first-class tracking of failed executions and retry provenance.

Adapter-First

SIP-Bench is designed around one idea: benchmark-specific logic belongs in adapters, while SI evaluation logic stays shared.

That gives you:

  1. benchmark-specific logic stays inside an adapter,
  2. the protocol contract stays benchmark-agnostic,
  3. imported results are normalized into shared runs.jsonl and summary.jsonl schemas,
  4. the same T0 / T1 / T2 and replay / adapt / heldout / drift logic can be reused across very different task worlds.

If you can write an adapter for a benchmark, you can evaluate that benchmark under the SIP protocol.

What You Get

Current repository surface:

  1. an adapter layer for wrapping new benchmarks into the same SI protocol,
  2. first-class support for SkillsBench, EvoAgentBench, and tau-bench,
  3. split planning and suite orchestration,
  4. normalized runs.jsonl and summary.jsonl outputs,
  5. aggregation, schema validation, and evidence-gate tooling,
  6. tracked dry-run and real-artifact examples.

Benchmarks

Benchmark pathStatusNotes
SkillsBench oracleprimaryreal execution and tracked suite artifacts
EvoAgentBenchprimary design targetdemonstrates the protocol on self-improvement-heavy agent workflows and motivates the adapter-first architecture
tau-bench historicalsupplementaryimport-only path with tracked suite artifacts
tau-bench liveoptionalrequires provider credentials
SkillsBench prepared externalexperimentaluseful for task-preparation and path validation

Why Clone This

If you already have a benchmark and want SI evaluation instead of a single-shot score, this repository gives you the reusable pieces:

  1. write an adapter,
  2. map the benchmark into replay / adapt / heldout / drift,
  3. import normalized run records,
  4. compute SI-focused metrics under the same protocol as every other adapter.

That is the real product surface of SIP-Bench.

Quickstart

Minimum local checks:

python3 -m venv .venv
. .venv/bin/activate
python -m pip install -e .
python3 scripts/run_release_checks.py
python3 -m unittest discover -s tests -p "test_*.py"

Build a protocol summary from tracked sample runs:

python3 scripts/aggregate_metrics.py \
  --runs results/dryrun/sample_runs.jsonl \
  --out /tmp/sip_summary.jsonl

Import a fixture-format SkillsBench Harbor job:

python3 scripts/run_eval.py import-skillsbench-job \
  --job-dir tests/fixtures/skillsbench_harbor_job_sample \
  --out /tmp/skillsbench_job_runs.jsonl \
  --benchmark-split smoke \
  --phase T0 \
  --path-type oracle \
  --seed 21 \
  --registry tests/fixtures/skillsbench_registry_sample.json \
  --agent-version fixture-import \
  --benchmark-version skillsbench-harbor-fixture

Validate the imported records:

python3 scripts/validate_records.py \
  --data /tmp/skillsbench_job_runs.jsonl \
  --schema runs

Artifacts

If you want concrete outputs before reading code, start here:

  1. results/protocol_runs/skillsbench_oracle_real_suite/suite_report.json
  2. results/protocol_runs/skillsbench_oracle_real_suite/summary.jsonl
  3. results/dryrun/summary.jsonl
  4. results/protocol_runs/tau_bench_retail_historical_suite/suite_report.json
  5. results/protocol_runs/README.md

Minimal Proof

This repository only needs to prove one thing: protocol-level evaluation reveals information a single post-adaptation score hides.

The smallest tracked proof is results/dryrun/summary.jsonl:

  1. held-out performance improves from T0 to T1,
  2. replay performance regresses at the same time,
  3. the gain softens again by T2,
  4. the improvement has explicit interaction cost.

That is enough to justify the project.

Execution-backed proof:

  1. results/protocol_runs/skillsbench_oracle_real_suite/suite_report.json
  2. results/protocol_runs/tau_bench_retail_historical_suite/suite_report.json

Design proof:

  1. SkillsBench shows a real execution-backed path,
  2. EvoAgentBench shows that the same protocol ideas can target a very different self-improvement workflow,
  3. tau-bench shows that the same normalization layer also works for import-oriented external environments.

Protocol Model

Lifecycle checkpoints:

  1. T0
  2. T1
  3. T2

Task partitions:

  1. replay
  2. adapt
  3. heldout
  4. optional drift

Primary metrics:

  1. FG
  2. BR
  3. BR_ratio
  4. PDS
  5. IE
  6. NIS

Protocol reference:

  1. protocol/protocol_spec_v0.md
  2. schemas/runs.schema.json
  3. schemas/summary.schema.json
  4. schemas/protocol_suite.schema.json
  1. docs/README.md
  2. docs/technical_design.md
  3. protocol/protocol_spec_v0.md

Main implementation:

  1. src/sip_bench/
  2. scripts/
  3. tests/
  4. protocol/
  5. results/

Common developer entry points:

make setup
make test
make release-checks
make plan-matrix

Scope

This repository is strongest as reusable evaluation infrastructure, not as a polished launcher for every upstream environment.

Core project value:

  1. the protocol contract,
  2. normalized schemas,
  3. auditable benchmark-specific adapters,
  4. import and aggregation tooling,
  5. real example artifacts.

Development

Environment posture:

  1. Linux-first
  2. local verification uses unittest
  3. some optional benchmark paths require external credentials or upstream checkouts

If you want to contribute or extend a benchmark adapter, read:

  1. docs/technical_design.md
  2. scripts/README.md
  3. tests/README.md

License

See LICENSE if present in this repository root. If your checkout does not yet include one, add a project license before public release.