bencalvert04/programbench

ProgramBench cleanroom reconstruction tasks: reimplementing real-world CLI tools from popular open-source repos.

harbor run -d bencalvert04/programbench

bencalvert04/programbench

A Harbor port of ProgramBench: 200 cleanroom program-reconstruction tasks. In each task, an agent sees only a compiled reference binary and its documentation for a real-world open-source CLI tool, and must reimplement the program from scratch so its behavior matches the original. Scoring runs the agent's build against a hidden behavioral test suite; the reward is the pass rate over active tests.

What's in the dataset

  • 200 tasks, each named bencalvert04/<repo-org>--<repo-name>.<commit> (e.g. bencalvert04/burntsushi--ripgrep.3b7fd44), one per source repository.
  • Source languages: Rust (107), Go (46), C (33), C++ (12), Java (1), Haskell (1).
  • Difficulty (as labeled upstream): 120 medium, 35 unknown, 27 easy, 18 hard.
  • Excludes the upstream testorg__ fixture task.

How each task works

  1. Agent phase — runs in a cleanroom container containing only the reference binary and docs, with network_mode = "allowlist" (LLM API hosts only).
  2. Verifier phase — runs in a separate sandbox built from the same cleanroom image with /workspace wiped, so the agent's own binary can't leak into scoring. Hidden tests are pulled from HuggingFace or a local blob cache.
  3. Oracle — a reference solution (solution/solve.sh) restores the cleanroom binary after the hash-scrub, so Harbor's built-in oracle agent gives a sanity ceiling. Note the oracle mean across all 200 tasks is expected to be below 1.0 (upstream test flakiness / partial branch coverage on some tasks) — this is a known upstream property, not a bug in the port.

Each task's reward.json reports three keys (all 0–1, averaged by Harbor's default Mean):

Key Meaning
reward pass rate over active hidden tests
resolved 1.0 if pass rate is exactly 1.0, else 0.0
almost_resolved 1.0 if pass rate is ≥ 0.95, else 0.0

Running it

harbor run -d bencalvert04/programbench -a claude-code -m anthropic/claude-opus-4-1

Or against a single task:

harbor run -t bencalvert04/programbench/burntsushi--ripgrep.3b7fd44 -a claude-code -m anthropic/claude-opus-4-1

Source

Generated from a local ProgramBench checkout via the programbench-adapter CLI in this repo (adapters/programbench/). See that adapter's README for adapter internals, task-template details, and the full generation/verification harness.

Task
bencalvert04/mgdm--htmlq.6e31bc8
bencalvert04/byron--dua-cli.8570c15
bencalvert04/universal-ctags--ctags.243595e
bencalvert04/cordx56--rustowl.655bc5c
bencalvert04/ivanceras--svgbob.6d00ad9
bencalvert04/stranger6667--jsonschema.d52e881
bencalvert04/ninja-build--ninja.cc60300
bencalvert04/ducaale--xh.4a6e44f
bencalvert04/tstack--lnav.ee34494
bencalvert04/danmar--cppcheck.0a5b103
bencalvert04/hairyhenderson--gomplate.05eb3aa
bencalvert04/bensadeh--tailspin.6278437
bencalvert04/johanneskaufmann--html-to-markdown.3006818
bencalvert04/astro--deadnix.d590041
bencalvert04/halitechallenge--halite.822cfb6
bencalvert04/nikolassv--bartib.6b9b5ce
bencalvert04/mkj--dropbear.75f699b
bencalvert04/paradigmxyz--solar.5190d0e
bencalvert04/wfxr--csview.8ac4de0
bencalvert04/miserlou--loop.209927c
bencalvert04/mgechev--revive.201451e
bencalvert04/dundee--gdu.ede21d2
bencalvert04/osgeo--proj.75d455c
bencalvert04/ogham--dog.721440b
bencalvert04/sayanarijit--xplr.1751065
bencalvert04/php--php-src.c891263
bencalvert04/tukaani-project--xz.1007bf0
bencalvert04/naggie--dstask.ff57396
bencalvert04/filosottile--age.706dfc1
bencalvert04/sharkdp--pastel.b60e899
bencalvert04/esubaalew--run.0fb9dec
bencalvert04/ismaelgv--rnr.fc0733b
bencalvert04/codesnap-rs--codesnap.f81e4f3
bencalvert04/hooklift--gowsdl.2a06cec
bencalvert04/eudoxia0--hashcards.48aa136
bencalvert04/noborus--trdsql.d8c5ff6
bencalvert04/rs--curlie.5dfcbb1
bencalvert04/chmln--handlr.90e78ba
bencalvert04/drew-alleman--datasurgeon.d257cee
bencalvert04/multiprocessio--dsq.c3ae0ba
bencalvert04/agourlay--zip-password-finder.704700d
bencalvert04/oppiliappan--statix.e9df54c
bencalvert04/eradman--entr.8e2e8b4
bencalvert04/duckdb--duckdb.bdb65ec
bencalvert04/facebookresearch--fasttext.1142dc4
bencalvert04/simeg--eureka.df3796c
bencalvert04/sheepla--pingu.926d475
bencalvert04/tomnomnom--gron.88a6234
bencalvert04/doxygen--doxygen.966d98e
bencalvert04/o2sh--onefetch.e5958ce
bencalvert04/rust-ethereum--ethabi.b1710ad
bencalvert04/svenstaro--genact.16f96e3
bencalvert04/mibk--dupl.1bf052b
bencalvert04/y2z--monolith.8702e66
bencalvert04/xorg62--tty-clock.f2f847c
bencalvert04/thezoraiz--ascii-image-converter.d05a757
bencalvert04/hatoo--oha.8dc6349
bencalvert04/rs--jplot.2a54bcc
bencalvert04/google--brotli.b3dc9cc
bencalvert04/canop--broot.d6c798e
bencalvert04/wintermute-cell--ngrrram.8ea13c3
bencalvert04/arthursonzogni--json-tui.17a22b6
bencalvert04/wfxr--code-minimap.0ddeea5
bencalvert04/sclevine--yj.8016400
bencalvert04/ammarabouzor--tui-journal.2b4540d
bencalvert04/arq5x--bedtools2.dd57059
bencalvert04/antonmedv--fx.86d0d34
bencalvert04/jrnxf--thokr.09375ef
bencalvert04/alexpovel--srgn.89f943b
bencalvert04/tarka--xcp.5e5b448
bencalvert04/altdesktop--i3-style.f93821b
bencalvert04/anordal--shellharden.6a6ffd4
bencalvert04/ggreer--the_silver_searcher.a61f178
bencalvert04/nikoladucak--caps-log.2cf2d1e
bencalvert04/sharkdp--fd.40d8eb3
bencalvert04/yassinebridi--serpl.c48a9d7
bencalvert04/canop--rhit.ae90bcb
bencalvert04/osgeo--gdal.0847f12
bencalvert04/bootandy--dust.62bf1e1
bencalvert04/quinn-rs--quinn.bb359cc
bencalvert04/rvben--rumdl.2d75c4d
bencalvert04/isona--dirble.e2dea9f
bencalvert04/mfridman--tparse.2416b4b
bencalvert04/ffmpeg--ffmpeg.360a402
bencalvert04/sqlite--sqlite.839433d
bencalvert04/xampprocky--tokei.505d648
bencalvert04/sitkevij--hex.61ae69b
bencalvert04/ip7z--7zip.839151e
bencalvert04/hush-shell--hush.560c33a
bencalvert04/orf--gping.26eb5b9
bencalvert04/ecumene--rust-sloth.051c559
bencalvert04/tomarrell--wrapcheck.c058da1
bencalvert04/sharkdp--bat.f822bd0
bencalvert04/incu6us--goimports-reviser.81bd549
bencalvert04/rbakbashev--elfcat.52f8cc7
bencalvert04/epistates--treemd.825c6dd
bencalvert04/htop-dev--htop.523600b
bencalvert04/unhappychoice--gittype.34b72d0
bencalvert04/jonas--tig.8334123
bencalvert04/guumaster--hostctl.d6d9699

Displaying 100 of 200 tasks