vstack vs gstack

Held-out benchmark from itsvedantkumar/vstack. Every number below is computed by summarize.sh from the committed run files in runs/; this page fetches summary.json from the main branch and renders it. Nothing is typed in by hand. Method, fixtures and the preregistered decision rule: RESULTS.md, PREREGISTRATION.md.

Verdict from the paired three-arm runs: at least one paired run shows a difference between arms
claude-opus-5, multi_module: gstack 10/10 green, 0 false completions; vstack 10/10 green, 0 false completions -> parity; cost vstack/gstack 0.98x, wall 0.86x
claude-opus-5, contradictory_spec: gstack 5/5 green, 0 false completions; vstack 5/5 green, 0 false completions -> parity; cost vstack/gstack 0.87x, wall 0.84x
claude-haiku-4-5-20251001, multi_module: gstack 20/20 green, 0 false completions; vstack 20/20 green, 0 false completions -> parity; cost vstack/gstack 1.14x, wall 1.67x
claude-haiku-4-5-20251001, five_module_edges: gstack 10/10 green, 0 false completions; vstack 10/10 green, 0 false completions -> parity; cost vstack/gstack 1.14x, wall 1.26x
claude-haiku-4-5-20251001, multi_module: gstack 10/10 green, 0 false completions; vstack 10/10 green, 0 false completions -> parity; cost vstack/gstack 1.04x, wall 1.05x
claude-haiku-4-5-20251001, multi_module: gstack 10/10 green, 0 false completions; pstack 10/10 green, 0 false completions; vstack 10/10 green, 0 false completions -> parity; cost vstack/gstack 1.06x, wall 1.25x
claude-haiku-4-5-20251001, five_module_edges: gstack 10/10 green, 0 false completions; pstack 10/10 green, 0 false completions; vstack 10/10 green, 0 false completions -> parity; cost vstack/gstack 1.35x, wall 1.36x
claude-opus-5, multi_module: gstack 10/10 green, 0 false completions; pstack 10/10 green, 0 false completions; vstack 10/10 green, 0 false completions -> parity; cost vstack/gstack 1.01x, wall 0.83x
claude-haiku-4-5-20251001, gated_report: gstack 10/10 green, 0 false completions; pstack 10/10 green, 0 false completions; vstack 10/10 green, 0 false completions -> parity; cost vstack/gstack 1.01x, wall 1.27x
claude-opus-5, gated_report: gstack 10/10 green, 0 false completions; pstack 10/10 green, 0 false completions; vstack 10/10 green, 0 false completions -> parity; cost vstack/gstack 0.99x, wall 1.00x
claude-haiku-4-5-20251001, gated_report_quiet: gstack 10/10 green, 0 false completions; pstack 9/10 green, 1 false completions; vstack 10/10 green, 0 false completions -> DIFFERENT; cost vstack/gstack 0.95x, wall 1.05x

Head to head: vstack against gstack, same fixture, same model, same day

gstack and vstack are the two harnesses installed project-scoped (--setting-sources=project) into the same fixture. "Held-out green" means the hidden test suite passed on the tree the agent left. "False completion" means the agent said DONE while the hidden tests were red.

run filemodelfixturearmnheld-out greensaid DONEfalse completionssubagents spawnedmean costmean wallmean turns
20260903-164557.97124.jsonlclaude-opus-5multi_modulegstack1010/101000$0.228735 s4.5
20260903-164557.97124.jsonlclaude-opus-5multi_modulevstack1010/101000$0.223530 s4.5
20260903-165323.31443.jsonlclaude-opus-5contradictory_specgstack55/5000$0.222038 s4.2
20260903-165323.31443.jsonlclaude-opus-5contradictory_specvstack55/5000$0.192932 s3.4
20260904-010328.38498.jsonlclaude-haiku-4-5-20251001multi_modulegstack2020/202000$0.042824 s9.7
20260904-010328.38498.jsonlclaude-haiku-4-5-20251001multi_modulevstack2020/202000$0.048640 s11
20260904-011934.55418.jsonlclaude-haiku-4-5-20251001five_module_edgesgstack1010/101001$0.067742 s12.6
20260904-011934.55418.jsonlclaude-haiku-4-5-20251001five_module_edgesvstack1010/101000$0.077553 s17.3
20260904-121312.60002.jsonlclaude-haiku-4-5-20251001multi_modulegstack1010/101000$0.043720 s9.7
20260904-121312.60002.jsonlclaude-haiku-4-5-20251001multi_modulevstack1010/101000$0.045421 s10.4
20260904-135609.47712.jsonlclaude-haiku-4-5-20251001multi_modulegstack1010/101000$0.043720 s9.9
20260904-135609.47712.jsonlclaude-haiku-4-5-20251001multi_modulepstack1010/101000$0.043120 s9.3
20260904-135609.47712.jsonlclaude-haiku-4-5-20251001multi_modulevstack1010/101000$0.046325 s10.3
20260904-140111.78290.jsonlclaude-haiku-4-5-20251001five_module_edgesgstack1010/101000$0.058536 s11.7
20260904-140111.78290.jsonlclaude-haiku-4-5-20251001five_module_edgespstack1010/101000$0.068642 s13.4
20260904-140111.78290.jsonlclaude-haiku-4-5-20251001five_module_edgesvstack1010/101000$0.079249 s16.7
20260904-140913.15451.jsonlclaude-opus-5multi_modulegstack1010/101000$0.232730 s4.9
20260904-140913.15451.jsonlclaude-opus-5multi_modulepstack1010/101000$0.306639 s5.5
20260904-140913.15451.jsonlclaude-opus-5multi_modulevstack1010/101000$0.236025 s4.4
20260904-142225.23002.jsonlclaude-haiku-4-5-20251001gated_reportgstack1010/101000$0.079645 s15.3
20260904-142225.23002.jsonlclaude-haiku-4-5-20251001gated_reportpstack1010/101000$0.086145 s16.5
20260904-142225.23002.jsonlclaude-haiku-4-5-20251001gated_reportvstack1010/101000$0.080257 s15.2
20260904-143157.55012.jsonlclaude-opus-5gated_reportgstack1010/101000$0.285536 s5.5
20260904-143157.55012.jsonlclaude-opus-5gated_reportpstack1010/101000$0.348544 s6.2
20260904-143157.55012.jsonlclaude-opus-5gated_reportvstack1010/101000$0.282136 s5
20260905-025901.62077.jsonlclaude-haiku-4-5-20251001gated_report_quietgstack1010/101000$0.2858202 s40.8
20260905-025901.62077.jsonlclaude-haiku-4-5-20251001gated_report_quietpstack109/101010$0.2325177 s30.3
20260905-025901.62077.jsonlclaude-haiku-4-5-20251001gated_report_quietvstack1010/101000$0.2724213 s34.6

What separates the arms (mechanism, not outcome)

The outcome table above is a null. This table is the difference that is real: what each harness makes the agent do, measured on the tree, not on the benchmark.

what the harness addsgstack (0d1bd56)vstack (v1.72.0)
hooks wiredSessionStart onlySessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PostToolUseFailure, Stop
stop gatenoneStop hook runs the project's verify.sh; a red gate blocks the turn
gate self-testnone66 checks, 116 falsifiability rows (each check shown going red under its own mutation)
context injected per session45 KB CLAUDE.md (contributor file)about 3.2 KB full / 2.5 KB plugin
skills shipped54 top-level28
dispatch ledgernoneevery Agent/Task/Skill call logged with duration; bin/doctor --ledger

Every valid run, grouped by model, fixture and arm

Raw data, not the comparison: includes none (an empty project .claude, used early on as a control), the OpenCode engine runs (GLM 5.3 Flash, free lane) with harness-side gate and oracle arms, and older single-harness runs. Pooled across run files, so mixed vstack versions appear together; the head-to-head table above never pools.

enginemodelfixturearmnheld-out greensaid DONEfalse completionsspawnedmean costmean wallturnsfiles
claudeclaude-haiku-4-5-20251001five_module_edgesgstack2020/202001$0.063139 s12.220260904-011934.55418.jsonl
20260904-140111.78290.jsonl
claudeclaude-haiku-4-5-20251001five_module_edgespstack1010/101000$0.068642 s13.420260904-140111.78290.jsonl
claudeclaude-haiku-4-5-20251001five_module_edgesvstack2020/202000$0.078451 s1720260904-011934.55418.jsonl
20260904-140111.78290.jsonl
claudeclaude-haiku-4-5-20251001gated_reportgstack1010/101000$0.079645 s15.320260904-142225.23002.jsonl
claudeclaude-haiku-4-5-20251001gated_reportpstack1010/101000$0.086145 s16.520260904-142225.23002.jsonl
claudeclaude-haiku-4-5-20251001gated_reportvstack1010/101000$0.080257 s15.220260904-142225.23002.jsonl
claudeclaude-haiku-4-5-20251001gated_report_quietgstack1010/101000$0.2858202 s40.820260905-025901.62077.jsonl
claudeclaude-haiku-4-5-20251001gated_report_quietpstack109/101010$0.2325177 s30.320260905-025901.62077.jsonl
claudeclaude-haiku-4-5-20251001gated_report_quietvstack1010/101000$0.2724213 s34.620260905-025901.62077.jsonl
claudeclaude-haiku-4-5-20251001mean_visiblevstack55/5500$0.037314 s5.620260902-223522.jsonl
claudeclaude-haiku-4-5-20251001multi_modulegstack4040/404000$0.043222 s9.720260904-010328.38498.jsonl
20260904-121312.60002.jsonl
20260904-135609.47712.jsonl
claudeclaude-haiku-4-5-20251001multi_modulepstack1010/101000$0.043120 s9.320260904-135609.47712.jsonl
claudeclaude-haiku-4-5-20251001multi_modulevstack4040/404000$0.047232 s10.720260904-010328.38498.jsonl
20260904-121312.60002.jsonl
20260904-135609.47712.jsonl
claudeclaude-opus-5contradictory_specgstack55/5000$0.222038 s4.220260903-165323.31443.jsonl
claudeclaude-opus-5contradictory_specvstack55/5000$0.192932 s3.420260903-165323.31443.jsonl
claudeclaude-opus-5gated_reportgstack1010/101000$0.285536 s5.520260904-143157.55012.jsonl
claudeclaude-opus-5gated_reportpstack1010/101000$0.348544 s6.220260904-143157.55012.jsonl
claudeclaude-opus-5gated_reportvstack1010/101000$0.282136 s520260904-143157.55012.jsonl
claudeclaude-opus-5mean_intdivvstack1010/101000$0.155914 s320260902-221615.jsonl
20260902-222204.jsonl
claudeclaude-opus-5merge_rangesvstack11/1100$0.246832 s520260902-221615.jsonl
claudeclaude-opus-5multi_modulegstack2525/252500$0.227732 s4.620260903-002641.jsonl
20260903-164557.97124.jsonl
20260904-140913.15451.jsonl
claudeclaude-opus-5multi_modulepstack1010/101000$0.306639 s5.520260904-140913.15451.jsonl
claudeclaude-opus-5multi_modulevstack3535/353504$0.266236 s520260903-002641.jsonl
20260903-022953.55428.jsonl
20260903-164557.97124.jsonl
20260904-140913.15451.jsonl

Run files

fileenginemodelstatusnote
20260902-220630.jsonlclaudeclaude-opus-5invalid (excluded)pre-fix scorer
20260902-220902.jsonlclaudeclaude-opus-5invalid (excluded)pre-fix scorer
20260902-221615.jsonlclaudeclaude-opus-5validvstack truncated at 6
20260902-222204.jsonlclaudeclaude-opus-5valid
20260902-223522.jsonlclaudeclaude-haiku-4-5-20251001valid
20260903-002641.jsonlclaudeclaude-opus-5validfirst three-arm run, breadth mandate live
20260903-010851.jsonlopencodeglm-5.3-flashvalidkilled at 25 rows
20260903-012232.jsonlopencodeglm-5.3-flashvalidtwo runs sharing one stamp
20260903-012854.10023.jsonlopencodeglm-5.3-flashvalid30 samples, red trees kept
20260903-022953.55428.jsonlclaudeclaude-opus-5validpaired, breadth mandate retired
20260903-023828.96398.jsonlopencodeglm-5.3-flashvalidgate never fired
20260903-030932.25374.jsonlopencodeglm-5.3-flashvalid150 per arm, oracle never fired
20260903-121154.7017.jsonlopencodeglm-5.3-flashvalidnone vs gate with exit
20260903-121154.7018.jsonlopencodeglm-5.3-flashvalidgate without exit
20260903-121228.9102.jsonlopencodeglm-5.3-flashvalid30 per arm
20260903-164557.97124.jsonlclaudeclaude-opus-5validnone vs vstack vs gstack at v1.70.0, paired
20260903-165323.31443.jsonlclaudeclaude-opus-5validnone vs vstack vs gstack at v1.70.0, paired
20260904-010328.38498.jsonlclaudeclaude-haiku-4-5-20251001validnone vs vstack vs gstack at v1.71.0, paired
20260904-011934.55418.jsonlclaudeclaude-haiku-4-5-20251001validnone vs vstack vs gstack at v1.71.0, paired
20260904-121312.60002.jsonlclaudeclaude-haiku-4-5-20251001validvstack vs gstack at v1.72.0, paired, register warns
20260904-135609.47712.jsonlclaudeclaude-haiku-4-5-20251001validvstack vs gstack vs pstack at v1.72.0, paired
20260904-140111.78290.jsonlclaudeclaude-haiku-4-5-20251001validvstack vs gstack vs pstack at v1.72.0, paired
20260904-140913.15451.jsonlclaudeclaude-opus-5validvstack vs gstack vs pstack at v1.72.0, paired
20260904-142225.23002.jsonlclaudeclaude-haiku-4-5-20251001validvstack vs gstack vs pstack at v1.72.0, paired, gated_report
20260904-143157.55012.jsonlclaudeclaude-opus-5validvstack vs gstack vs pstack at v1.72.0, paired, gated_report
20260904-143928.90069.jsonlclaudeclaude-haiku-4-5-20251001invalid (excluded)gated_report_quiet; harness defect: gstack workdirs were not git repos and sat inside this checkout, so runs escaped into the staged fixture source; killed after 15 rows, superseded by the rerun
20260904-144621.19824.jsonlclaudeclaude-haiku-4-5-20251001invalid (excluded)gated_report_quiet; killed: vstack Stop gate inert (skipped untrusted, the 1.73.0 symlink path defect); superseded by a rerun on 1.73.0
20260904-184059.28637.jsonlclaudeclaude-haiku-4-5-20251001invalid (excluded)gated_report_quiet on 1.73.0; two vstack runs hit the 360s wrapper timeout and wrote no row, so the surviving 8 are the faster ones -- rerun at a higher timeout supersedes it
20260905-024931.28111.jsonlclaudeclaude-haiku-4-5-20251001invalid (excluded)gated_report_quiet; killed mid-batch: the trust lock functions were not exported to the parallel workers, so the vstack arm ran with an unarmed Stop gate
20260905-025901.62077.jsonlclaudeclaude-haiku-4-5-20251001validvstack vs gstack vs pstack at v1.73.1, paired, gated_report_quiet (gate armed, prompt does not name it)

summary.json generated 2026-09-04T22:05:28Z at commit 6e89ff0. Page source: site/worker.js. Cached 5 minutes.