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: parity on correctness. In no paired run does vstack beat gstack, or gstack beat vstack, on held-out correctness or false completions. The differences that exist are cost and wall time, listed per run below.
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

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

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-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-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

summary.json generated 2026-09-04T08:46:20Z at commit bab3f93. Page source: site/worker.js. Cached 5 minutes.