Skip to content

Commit aa47ae8

Browse files
committed
fix(bench): per-worker worktree isolation + bake contextbench_verified config
1 parent 8d4b565 commit aa47ae8

4 files changed

Lines changed: 14 additions & 5 deletions

File tree

benchmarks/baselines/aider_baseline.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,11 +243,14 @@ def make_aider_eval_fn(
243243
raise ValueError(f"aider_mode must be 'fair' or 'oracle', got {aider_mode!r}")
244244

245245
evaluator = UniversalEvaluator()
246-
worktree_dir = repos_dir / "worktrees"
247-
worktree_dir.mkdir(parents=True, exist_ok=True)
246+
worktrees_root = repos_dir / "worktrees"
248247
aider = _AiderProcess()
249248

250249
def eval_fn(instance: BenchmarkInstance, params: RunParams) -> EvalResult:
250+
import os
251+
252+
worktree_dir = worktrees_root / f"w{os.getpid()}"
253+
worktree_dir.mkdir(parents=True, exist_ok=True)
251254
return _aider_eval(instance, params, evaluator, worktree_dir, aider, request_timeout, aider_mode)
252255

253256
eval_fn.shutdown = aider.shutdown # type: ignore[attr-defined]

benchmarks/baselines/bm25_baseline.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,14 @@ def make_bm25_eval_fn(repos_dir: Path):
176176
) from e
177177

178178
evaluator = UniversalEvaluator()
179-
worktree_dir = repos_dir / "worktrees"
180-
worktree_dir.mkdir(parents=True, exist_ok=True)
179+
worktrees_root = repos_dir / "worktrees"
181180
encoder = tiktoken.get_encoding("o200k_base")
182181

183182
def eval_fn(instance: BenchmarkInstance, params: RunParams) -> EvalResult:
183+
import os
184+
185+
worktree_dir = worktrees_root / f"w{os.getpid()}"
186+
worktree_dir.mkdir(parents=True, exist_ok=True)
184187
return _bm25_eval(instance, params, evaluator, worktree_dir, encoder)
185188

186189
return eval_fn

benchmarks/diffctx_eval_fn.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,9 @@ def _arm_diffctx_kill_switch(timeout_s: float):
103103
def _ensure_worker_state(repos_dir_str: str) -> tuple[Path, UniversalEvaluator]:
104104
state = _WORKER_STATE.get(repos_dir_str)
105105
if state is None:
106-
worktree_dir = Path(repos_dir_str) / "worktrees" / f"w{os.getpid()}"
106+
runner = os.environ.get("RUNNER_NAME", "").replace("-", "_").replace(" ", "_")
107+
uid = f"{runner}_{os.getpid()}" if runner else str(os.getpid())
108+
worktree_dir = Path(repos_dir_str) / "worktrees" / f"w{uid}"
107109
worktree_dir.mkdir(parents=True, exist_ok=True)
108110
evaluator = UniversalEvaluator()
109111
state = (worktree_dir, evaluator)

scripts/bake_bench_cache.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
DATASETS: list[tuple[str, str | None, str]] = [
3030
("Contextbench/ContextBench", "default", "train"),
31+
("Contextbench/ContextBench", "contextbench_verified", "train"),
3132
("princeton-nlp/SWE-bench_Verified", None, "test"),
3233
("AmazonScience/SWE-PolyBench_500", None, "test"),
3334
]

0 commit comments

Comments
 (0)