template/
The material the subject works on — a repository to navigate, files to edit, a broken build to fix. Whatever the benchmark's task acts upon lives here.
For every run, the runner copies template/ into a fresh workspace and the subject
operates there. Runs never share state; the template itself is never touched.
// bench.config.ts
workspace: { template: "./template", retain: "failed" },
retain controls what survives after a run: "failed" keeps the workspaces of failed
runs for inspection and discards the rest.
Keep the template deterministic — the same bytes every run. Anything generated or fetched at run time belongs in the test, where it's part of recorded execution, not in the template, where it would silently vary between runs.