Add rfe-creator as a dispatched benchmark - #492
Merged
Merged
Conversation
Wires the RFE-Creator skill pipeline (rfe.speedrun + 6 sub-skills, optimized
against agent-eval-harness's RFE-creation eval) into the same run_suite.sh /
benchmarks.yml pipeline as tau2/swebench/skillsbench/spreadsheetbench,
following that pattern exactly rather than treating it as a one-off:
- templates/adapters/rfe_creator/adapter.py: the CapabilityAdapter (tasks,
run_target, score, live), parameterized by env vars instead of the
hardcoded laptop paths of the original prototype. Drops
_force_subagent_model(), which existed only to fight a global
~/.claude/settings.json that CI does not have.
- ci/benchmarks/rfe-creator/{smoke,full}/tasks.json: 5 headroom-calibrated /
all 25 curated cases (ids only, selected from that run's own per-task
baseline rewards).
- ci/benchmarks/rfe-creator/reward_overlay.yaml + utils/fetch_data.sh: both
upstream repos (opendatahub-io/rfe-creator, opendatahub-io/agent-eval-harness)
are public but UNLICENSED, so neither their code nor the 25 eval cases are
vendored. fetch_data.sh clones both at run time and merges this repo's own
small reward_overlay.yaml onto the upstream eval.yaml -- same convention as
spreadsheetbench/fetch_data.sh and the parsec local-shadow pattern.
- run_suite.sh / ci_setup.sh: new rfe-creator case arm, using the same
ANTHROPIC_BASE_URL/ANTHROPIC_AUTH_TOKEN gateway env every other bench
already uses (the self-hosted ibm-vpc runner exists precisely because that
gateway is VPC-internal -- this is not a new requirement).
- benchmarks.yml / site/benchmarks.js: added to BENCHES, the workflow_dispatch
options, and the live-panel JOB_RE.
- core/tests/test_benchmarks_plan_legs.py, test_site_live_panel_tiers.py:
added to the two rosters those tests assert against.
- Docs: ci/benchmarks/README.md (suite list, prerequisites, cost caveat),
ci/benchmarks/rfe-creator/README.md (licensing rationale, cost, pointer to
the original run), templates/adapters/README.md, docs/ADAPTER_TEMPLATES.md,
site/benchmarks.html, site/adapter-templates.html.
No pilot/ tier is added (test_benchmarks_plan_legs.py asserts the pilot
roster is exactly [spreadsheetbench, swebench]). No benchmark-history record
or dashboard row is published here -- that requires an actual CI dispatch
producing a sealed final.json, which this PR does not run.
Verified: full core/tests/ suite (1289 passed, 0 failed), both shell scripts
pass `bash -n`, fetch_data.sh actually clones both repos and produces a valid
merged eval config, tasks.json files parse.
Signed-off-by: Osher Elhadad <Osher.Elhadad@ibm.com>
OsherElhadad
force-pushed
the
feat/rfe-creator-benchmark
branch
from
September 15, 2026 12:06
b875e76 to
8685e6a
Compare
Contributor
|
❌ Automatic Labeling Failed An error occurred while trying to automatically label this pull request. Please check the workflow logs for details and add labels manually. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Wires the RFE-Creator skill pipeline into the same
run_suite.sh/benchmarks.ymlpath astau2/swebench/skillsbench/spreadsheetbench, rather than leaving it as a one-off local run:templates/adapters/rfe_creator/adapter.py— theCapabilityAdapter(tasks,run_target,score,live), ported from the original prototype and parameterized by env vars instead of hardcoded laptop paths. Drops_force_subagent_model(), which existed only to fight a global~/.claude/settings.jsonthat CI does not have.ci/benchmarks/rfe-creator/{smoke,full}/tasks.json— 5 headroom-calibrated cases / all 25 curated cases (ids only), selected from that run's own per-task baseline rewards (lowest-reward = most headroom).reward_overlay.yaml+utils/fetch_data.sh— both upstream repos (opendatahub-io/rfe-creator,opendatahub-io/agent-eval-harness) are public but unlicensed, so neither their code nor the 25 eval cases are vendored.fetch_data.shclones both at run time and merges this repo's own smallreward_overlay.yamlonto the upstreameval.yaml— same convention asspreadsheetbench/fetch_data.shand theparseclocal-shadow pattern.run_suite.sh/ci_setup.sh— newrfe-creatorcase arm, using the sameANTHROPIC_BASE_URL/ANTHROPIC_AUTH_TOKENgateway every other bench already uses (the self-hostedibm-vpcrunner exists precisely because that gateway is VPC-internal — not a new requirement for this bench).benchmarks.yml/site/benchmarks.js— added toBENCHES, theworkflow_dispatchoptions, and the live-panelJOB_RE.core/tests/test_benchmarks_plan_legs.py,test_site_live_panel_tiers.py— added to the two rosters those tests assert against.ci/benchmarks/README.md(suite list, runner prerequisites, cost caveat), newci/benchmarks/rfe-creator/README.md(licensing rationale, cost, pointer to the original run),templates/adapters/README.md,docs/ADAPTER_TEMPLATES.md,site/benchmarks.html,site/adapter-templates.html.What this does not do
pilot/tier —test_benchmarks_plan_legs.pyasserts the pilot roster is exactly[spreadsheetbench, swebench]; adding one would break that test.benchmark-historyrecord or dashboard row. That requires an actual CI dispatch producing a sealedfinal.json— this PR only adds the wiring. The original run this bench's numbers come from (baseline 0.897 -> champion 0.925 val reward) is in-progress (3 of 10 iterations) and lives in the privatecap-evolve-internalrepo, not published as a benchmark result here. Follow-up: dispatchActions -> Benchmarks -> rfe-creator / smoke(orfull, given the cost below) once this merges.ci/benchmarks/rfe-creator/README.md.Cost note
A
fullrun is not cheap: 25 tasks x trials x iterations measured $234.64 runner + $34.77 optimizer, 6.4 runner-hours for just 3 of 10 budgeted iterations on the original run.smoke(5 tasks) is the cheap regression signal.Test plan
python3 -m pytest core/tests/ -q— 1289 passed, 0 failed (no regressions from the roster/JOB_RE changes).bash -non both modified shell scripts.utils/fetch_data.shactually run end-to-end: clones both upstream repos, mergesreward_overlay.yamlonto the fetchedeval.yaml, produces a valid merged config.tasks.jsonfiles parse as JSON.Actions -> Benchmarks -> rfe-creator / smokeon theibm-vpcrunner to confirm the case arm actually runs end-to-end in CI (needs gateway access this sandbox doesn't have).