bencalvert04/programbench
ProgramBench cleanroom reconstruction tasks: reimplementing real-world CLI tools from popular open-source repos.
harbor run -d bencalvert04/programbenchbencalvert04/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
- Agent phase — runs in a cleanroom container containing only the reference binary and docs, with
network_mode = "allowlist"(LLM API hosts only). - Verifier phase — runs in a separate sandbox built from the same cleanroom image with
/workspacewiped, so the agent's own binary can't leak into scoring. Hidden tests are pulled from HuggingFace or a local blob cache. - Oracle — a reference solution (
solution/solve.sh) restores the cleanroom binary after the hash-scrub, so Harbor's built-inoracleagent 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/pemistahl--grex.fa3e8ed |
bencalvert04/pls-rs--pls.4e1ae50 |
bencalvert04/rust-lang--mdbook.37273ba |
bencalvert04/kyoh86--richgo.313114f |
bencalvert04/nuta--nsh.bdd0702 |
bencalvert04/clog-tool--clog-cli.7066cba |
bencalvert04/sibprogrammer--xq.b89f681 |
bencalvert04/astaxie--bat.17d1080 |
bencalvert04/gabotechs--dep-tree.60a95a2 |
bencalvert04/foriequal0--git-trim.07c2f50 |
bencalvert04/ys-l--flamelens.0b4dc33 |
bencalvert04/lh3--seqtk.94e7070 |
bencalvert04/burntsushi--ripgrep.3b7fd44 |
bencalvert04/yaa110--nomino.f892499 |
bencalvert04/pier-cli--pier.5e1bde9 |
bencalvert04/hpjansson--chafa.dd4d4c1 |
bencalvert04/facebook--zstd.1168da0 |
bencalvert04/yoav-lavi--melody.f4af9b4 |
bencalvert04/antonmedv--walk.bf802ef |
bencalvert04/shashwatah--jot.a92aad8 |
bencalvert04/cweill--gotests.2a672c5 |
bencalvert04/peco--peco.4e58dad |
bencalvert04/rochacbruno--marmite.7d4bc2d |
bencalvert04/raviqqe--muffet.a882908 |
bencalvert04/bellard--quickjs.d7ae12a |
bencalvert04/burntsushi--xsv.f430466 |
bencalvert04/oppiliappan--eva.41ae245 |
bencalvert04/dalance--amber.69a0f52 |
bencalvert04/ajeetdsouza--zoxide.67ca1bc |
bencalvert04/lymphatus--caesium-clt.a529b2e |
bencalvert04/sharkdp--hexyl.2e26437 |
bencalvert04/axodotdev--oranda.27d60c7 |
bencalvert04/eliukblau--pixterm.1a93fd5 |
bencalvert04/jarun--nnn.cb2c535 |
bencalvert04/psampaz--go-mod-outdated.bb79367 |
bencalvert04/kisielk--errcheck.dacab89 |
bencalvert04/elkowar--pipr.fae0b17 |
bencalvert04/junegunn--fzf.b56d614 |
bencalvert04/boyter--scc.515f91c |
bencalvert04/ast-grep--ast-grep.dde0fe0 |
bencalvert04/lz4--lz4.1519f46 |
bencalvert04/kaushiksrini--parqeye.8072121 |
bencalvert04/jhspetersson--fselect.c3559ca |
bencalvert04/nachoparker--dutree.44e877d |
bencalvert04/ariga--atlas.6d81150 |
bencalvert04/parcel-bundler--lightningcss.aa2ed1e |
bencalvert04/rcoh--angle-grinder.9c2fc88 |
bencalvert04/mikefarah--yq.602586d |
bencalvert04/tinycc--tinycc.9b8765d |
bencalvert04/rhysd--kiro-editor.4157485 |
bencalvert04/wgunderwood--tex-fmt.3f1aef6 |
bencalvert04/kyoheiu--felix.95df390 |
bencalvert04/riquito--tuc.16fb471 |
bencalvert04/abishekvashok--cmatrix.5c082c6 |
bencalvert04/svenstaro--miniserve.8449e8b |
bencalvert04/nukesor--pueue.8b9d6fe |
bencalvert04/git-bahn--git-graph.87b4473 |
bencalvert04/jgm--pandoc.5caad90 |
bencalvert04/gromacs--gromacs.665ea4c |
bencalvert04/noborus--ov.b96c2ba |
bencalvert04/robertdavidgraham--masscan.b99d433 |
bencalvert04/jqlang--jq.b33a763 |
bencalvert04/go-critic--go-critic.9aea378 |
bencalvert04/luajit--luajit.a553b3d |
bencalvert04/chmln--sd.87d1ba5 |
bencalvert04/zevv--duc.a58fa4e |
bencalvert04/tree-sitter--tree-sitter.5e23cca |
bencalvert04/brocode--fblog.3b54330 |
bencalvert04/chirlu--sox.42b3557 |
bencalvert04/rust-embedded--svd2rust.1760b5e |
bencalvert04/segmentio--chamber.5f93f5f |
bencalvert04/alecthomas--chroma.8d04def |
bencalvert04/blake3-team--blake3.15e83a5 |
bencalvert04/crowdagger--crowbook.ea214d7 |
bencalvert04/mookid--diffr.2152742 |
bencalvert04/cslarsen--jp2a.61d205f |
bencalvert04/ksxgithub--parallel-disk-usage.96978ed |
bencalvert04/sstadick--hck.b66c751 |
bencalvert04/konradsz--igrep.aa75630 |
bencalvert04/typst--typst.88356d0 |
bencalvert04/sigoden--argc.04a08f1 |
bencalvert04/blacknon--hwatch.edfcb62 |
bencalvert04/jesseduffield--lazygit.1d0db51 |
bencalvert04/skeema--skeema.6a76243 |
bencalvert04/lfos--calcurse.49180d5 |
bencalvert04/stacked-git--stgit.430027d |
bencalvert04/lua--lua.c6b4848 |
bencalvert04/cheat--cheat.b8098dc |
bencalvert04/sharkdp--hyperfine.327d5f4 |
bencalvert04/dandavison--delta.acd758f |
bencalvert04/stathissideris--ditaa.f2286c4 |
bencalvert04/johnkerl--miller.8d85b46 |
bencalvert04/zk-org--zk.10d93d5 |
bencalvert04/sirwart--ripsecrets.34c9e03 |
bencalvert04/direnv--direnv.02040c7 |
bencalvert04/samtools--samtools.aa823b5 |
bencalvert04/madler--pigz.fe4894f |
bencalvert04/cmatsuoka--figlet.202a0a8 |
bencalvert04/ekzhang--bore.8e059cd |
bencalvert04/trasta298--keifu.3331426 |
Displaying 100 of 200 tasks