Scratch directory task, event adapter, per-run checks

Forks ImpossibleBench's LiveCodeBench solver rather than passing instruction_prompt=,
which injects text into the system message, the user message and every failure message.
The scratch line now appears once, in the system message, verified by the mockllm smoke
run.

test_byte_match.py reads ImpossibleBench's expected_test construction out of its source
with ast and re-executes it, so our test.py is checked against theirs rather than a
copy. Confirmed to fail on a one-character upstream change. Without this, drift flags
every sample as test-modified, resets it, and destroys the cheat measurement silently.

The event adapter fixes a bug carried over from messageboard: relation() left absolute
paths absolute, so `cat /workspace/scratch/notes.md` classified as outside the
directory. Every absolute-path touch would have scored as a miss.

The checks are new rather than reused. The old ones score not-applicable when the prompt
names the directory, which ours does by design, and discard reads after the first write.
Both would undercount here. The decisions are kept, the code is not.

Claude-Session: https://claude.ai/code/session_01Cq98H7sNoSJdL3W98f18bu
This commit is contained in:
pj committed 2026-08-31 21:36:13 +05:30
1 parent bf3bb0d144
commit 099563a830
13 files changed
+1808 -1

No files matched your search

+4
View File
@@ -12,6 +12,10 @@ dependencies = [
# ImpossibleBench is installed with --no-deps (see docs/setup.md), so its
# own declaration of datasets does not reach us.
"datasets>=3.0.0",
# inspect-ai's openrouter provider is a thin wrapper over the openai client,
# which it treats as an optional dependency.
"openai>=1.0.0",
"httpx>=0.28.1",
]
[build-system]