frontier-swe · October 2026 · 13 tasks
FrontierSWE Task Audit
13 of 13 audited tasks have a blocking finding.
Every audited task has at least one finding that can change its leaderboard score. Each finding cites the file and line it rests on.
Sample: 13 of FrontierSWE's 17 tasks: 3 calibration tasks plus 10 chosen to cover every scoring category and each special-case formula (subsets/frontier-swe-10.json)
Each task's files were reviewed by an independent reviewer: the instruction, environment, verifier, reference solution, and the benchmark's scoring script and run harness. Every finding cites the file and line it comes from, so it can be checked by reading. Tasks were not executed for this review: FrontierSWE runs on Modal, five tasks need H100 or B200 GPUs, and verifiers run for up to 24 hours. Where a finding's impact depends on runtime behaviour, it says so ('needs a run to confirm'). Five task-specific claims were additionally checked against the code by an analyst (shown as 'Analyst note').
Pilot: rubric findings come from one reviewer, not a multi-reviewer vote.
- 13/13 tasks have a critical or major finding
- 51 critical findings
- 0 have no blocking findings
Flagged (critical or major) 13 tasks Critical findings 51 Major findings 76
13 tasks, one square each
- Critical or major finding
- No blocking findings
- Not fully audited
Across the benchmark
The agent can rewrite its own grading environment in every task (a design risk from the code, not demonstrated by a run). No task.toml sets an agent user and only modular-stack-wan21 creates one, which nothing switches to, so agents most likely run as root. When the agent stops, tests/test.sh runs in the same container, and the harness wraps every command, the verifier included, in 'bash -lc' (harbor_ext/modal_exec.py:12), which sources /etc/profile.d. It also makes /logs/verifier world-writable (modal_managed.py:837) and on timeout kills only each command's own process group. Three routes follow. (1) Shell startup files: an exported HARBOR_ORACLE_MODE=1 switches on the relaxed oracle grading path in dart-style-haskell, ffmpeg-swscale-rewrite, libexpat-to-x86asm, notebook-compression and pcqm4mv2-autoresearch. (2) Tools and packages: the verifier uses the container's own python3, site-packages and system tools without pinning or restoring them, for example sklearn's MAE in pcqm4mv2, torch in optimizer-design, numpy/PIL in modular-stack-wan21, tinker in frogsgame-rl, diff in postgres-sqlite-wire-adapter, ffmpeg/ffprobe in revideo-perf-opt, and the hidden python3 copy in libexpat-to-x86asm. dart-style-haskell's checksum guard stores its reference hashes in the same container. (3) Leftover processes: a process the agent detaches into its own session can outlive its command and rewrite /logs/verifier/reward.json after scoring (8 tasks), and several fallbacks keep an existing reward file. These are reported once here; per-task findings that only restate them were folded in, and findings with a task-specific route remain under their task.
Defect types
How many tasks each blocking problem appears in. Select a row to filter the task list.
| Defect and check | Tasks |
|---|---|
Tasks
dart-style-haskell Anti-cheat checks zero honest solutions 5 critical · 5 major flagged
- Staticpass15 checks, 0 with findings (0 blocking)
- Rubricfail43 criteria, 14 failed by a single reviewer: build_and_interface_contract, agent_assets_present, network_policy_enforcement, verifier_toolchain_integrity, reward_channel_integrity, oracle_mode_isolation, reward_written_on_every_path, verifier_hang_handling, anticheat_false_zero, forbidden_approach_detection, score_floor_is_low, false_pass_risk, test_coverage_gaps, hidden_material_public_exposure (2 minor)
Anti-cheat checks zero honest solutions
rubric · anticheat_false_zero · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - tests/test.sh:258-264 / compute_reward.py:52-56: any executable ELF anywhere in the project directory outside dist-newstyle/ or .cabal/ zeroes the whole trial. An honest agent that compiles a test harness or prototype with plain `ghc` inside /app/dart-style (e.g. `ghc tools/RunGolden.hs` leaves an ELF `tools/RunGolden`) scores 0. The instruction never says ELF files in the project are forbidden. - tests/test.sh:268-274: any symlink in the project that resolves outside /app zeroes the trial. Example: `cabal install --installdir=/app/dart-style/bin --install-method=symlink` creates links into the cabal store under /root, and the trial scores 0.
The verifier builds or loads the work differently from what the instruction says
rubric · build_and_interface_contract · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - tests/test.sh:113-136: the instruction says the verifier runs `cd /app/dart-style && cabal build all`. test.sh actually builds in the directory of the first `*.cabal` that `find /app -maxdepth 3` returns, and find's order is unsorted. Witness: an honest agent that also keeps a scratch or test-runner package such as /app/test-runner/test-runner.cabal can have that package picked instead. The wrong project gets built, `cabal list-bin dart-style` finds nothing, no tests run, and the trial scores 0 (which .cabal comes first needs a run to confirm).
Network access lets the agent fetch answers or forbidden help
rubric · network_policy_enforcement · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - job.yaml:12 sets `include_agent_domains: true`. For the gemini agent (job.yaml:31-34; generativelanguage.googleapis.com), modal_managed.py:335-341 adds the whole Google default-domain CIDR set (network_allowlist.py:212). Under CIDR-only enforcement (the Modal 1.4 fallback at modal_managed.py:901-902) that range also serves storage.googleapis.com, which hosts the pub archive of dart_style (including its test/ golden files) and the Dart SDK. With those, a lookup-table formatter or a delegating formatter could score close to 1.0. Whether Modal's domain allowlist blocks this needs a run to confirm. task.toml says allow_internet = false.
The agent can write or keep its own reward
rubric · reward_channel_integrity · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Kept as a task finding: compute_reward.py counts every *.result file in the results directory, and the graded formatter runs during that step, so it can add PASS files. This follows from the verifier's own code; detached-process rewrites are reported once under 'Across the benchmark'.
Evidence
[8T3hJZa] - compute_reward.py:100-111 counts every `*.result` file in the results directory and never checks names against the test list. The formatter runs as root inside that verification, and it can learn the results directory from its parent's /proc/$PPID/cmdline (`run_tests.py <golden> <results> <formatter>`). On its first call it can write, say, 1,000,000 files `zz_N.result` containing PASS. Score = (p+1e6)/(5224+1e6) ≈ 0.995 even with p = 0, and nothing in strace (execve only) or the MINIMUM_TESTS floor catches it. - test.sh only deletes reward files and pkills inotifywait/fswatch/entr/watchman (lines 33-35, 188-193). A daemon the agent detached with setsid during its run, or one forked by the formatter, can rewrite reward.json after compute_reward.py finishes (needs a run to confirm).
Doing nothing or submitting the scaffold earns real points
rubric · score_floor_is_low · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - A Haskell `main = getContents >>= putStr` (identity formatter, 3 trivial .hs files) passes every anti-cheat gate. Simulating run_tests.py over tests/golden.tar.gz, identity output matches 577/5,224 cases because many golden inputs are already formatted. Leaderboard score = 0.110 for no formatting work. Doing nothing or having no project scores 0.
Files the instruction points the agent to are missing or different
rubric · agent_assets_present · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - instruction.md:76 tells the agent to 'Test your formatter against the reference files in /app/reference/test/'. environment/Dockerfile only does `COPY reference/ /app/reference/`, and environment/reference contains just deps/, lib/ and pubspec.yaml, with no test/ directory. An honest agent therefore has no golden examples to check byte-for-byte formatting against, which plausibly lowers its pass rate on a task scored entirely by exact match. If the v4 image does ship test/, it differs from the published build and those files are the hidden golden suite.
A cheap shortcut earns a high score
rubric · false_pass_risk · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - tests/test.sh:44-48 unpacks the full golden suite (inputs and expected outputs) in plaintext at <local path> in the same container where the graded formatter runs as root. run_tests.py:29 passes the golden directory on the parent's command line, which is readable via /proc/$PPID/cmdline. The '>>>'/'<<<' file format is documented in the reference's test_file.dart. A Haskell binary that finds the test case matching its stdin and prints the stored expected output passes every anti-cheat check (no execve, ≥3 .hs files, real ELF) and scores ≈1.0 with no formatter at all.
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - tests/test.sh:297-315: the only check for delegation or subprocesses is a single strace run on the input `void main() {}`. A thin Haskell main can execute directly for that input and exec `python3 /app/impl/fmt.py` (or any other program) for everything else. *.py files are recorded but never gated (compute_reward.py has no check on python_files_in_project), and files outside the project are not even recorded. This bypasses the 'in Haskell' and 'no script wrapper' rules and lets a far easier imperative Python port of the Dart code be scored at its full pass rate. Implementing the logic in C via cabal `c-sources` is not checked either.Some verifier paths end without a valid reward
rubric · reward_written_on_every_path · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - tests/run_tests.py:29-40 calls subprocess.run(text=True) and only catches TimeoutExpired and OSError. If the formatter writes invalid UTF-8 on any single input (for example a Data.ByteString.Char8 output bug that truncates '×' or other non-ASCII characters, several of which appear in the golden inputs), UnicodeDecodeError ends run_tests.py. Under `set -euo pipefail`, test.sh:357 then exits before compute_reward.py runs, so no reward.json is written and the trial records an error or 0 instead of its pass rate.
A hang or slow test can zero the whole run
rubric · verifier_hang_handling · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - tests/run_tests.py:34 gives each test a 30 s timeout but there is no overall budget, and the 5,224 tests run sequentially against task.toml verifier timeout_sec=86400. Any formatter that hangs on more than ~2,880 inputs (86400/30) runs past the verifier timeout, and compute_reward.py never runs. Example: a port whose line-splitter search fails to terminate on most inputs but passes 1,000 simple ones would score 0 instead of ~0.19. This also ranks it below a formatter that crashes quickly on the same inputs.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - tests/golden.tar.gz is published with the task and holds all 1,030 golden files: 979 short/tall .stmt/.unit test files plus 17 benchmark inputs with their 34 .expect/.expect_short files, i.e. every hidden input and expected output for the 5,224 cases. These are also identical to the public upstream dart_style 3.1.4 test suite. There is no canary and no statement that the scored suite differs, so anyone, or a model trained on the repository, can reproduce the exact expected outputs.
Stated requirements are not graded
rubric · test_coverage_gaps · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[8T3hJZa] - instruction.md CLI section: 'dart-style [OPTIONS] [FILE...]' and the stated defaults for `--language-version 3.10` and `--compilation-unit`. run_tests.py:166-172 always feeds stdin and always passes --language-version plus --statement or --compilation-unit explicitly, so file-argument input and those defaults are never exercised.
ffmpeg-swscale-rewrite Anti-cheat checks zero honest solutions 7 critical · 7 major flagged
- Staticpass15 checks, 1 with findings (0 blocking)
- Rubricfail43 criteria, 20 failed by a single reviewer: instruction_test_alignment, build_and_interface_contract, dev_tools_match_verifier, time_budget_consistency, verifier_toolchain_integrity, reward_channel_integrity, oracle_mode_isolation, verifier_hang_handling, anticheat_false_zero, forbidden_approach_detection, rebuild_from_source_enforced, reference_removal_complete, correctness_gate_coverage, baseline_integrity, timing_scope_and_caching, hardware_dependence, score_ranking_is_monotone, score_scale_comparable, test_coverage_gaps, hidden_material_public_exposure (5 minor)
Anti-cheat checks zero honest solutions
rubric · anticheat_false_zero · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - tests/test.sh:106 strips only `//...` and single-line `/* */` comments before matching FFMPEG_WRAP_PATTERNS, which includes 'dlopen'. The workspace's own /app/swscale_api.h has, inside a multi-line comment (line 6), 'the library with dlopen / Python ctypes', and running the verifier's sed+grep on the file matches it. An honest agent that copies the required API header into /app/swscale-impl, e.g. for a C test driver, bindgen or @cImport, gets the whole trial zeroed (score 0). - Same scan: Python helpers (*.py), shell scripts and notes (*.txt) are scanned, but '#' comments and docstrings are not stripped. A test helper with a comment such as '# compare against sws_scale output', or a NOTES.txt saying 'equivalent of sws_getContext', scores 0. So do Rust/C multi-line /* */ doc blocks that name the API being reimplemented. - test.sh:95: SUSPICIOUS_PATTERNS are matched with no comment stripping. A helper script or note mentioning '/tests/' (e.g. a path to a Rust tests/ directory written with a leading slash) zeroes the trial.
The agent can make the baseline slower or different
rubric · baseline_integrity · performance
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - tests/test.sh:55-72 checks /verifier-data/libswscale_baseline.so against /verifier-data/baseline_hash.txt, and both sit in the same directory, which a root agent can write (chmod 700 does not stop root). A slowed baseline rebuilt from baseline_wrapper.c and the still-present /usr/local/lib/libswscale.a, with a matching hash written next to it, gives identical output (30/30) and inflates every ratio. For example, a baseline slowed 3x lifts a speedup of 1.0 to 3.0: score 0.5+0.5*3=2.0 instead of 1.0. - tests/compute_reward.py:543-545: the candidate runs in the same process as the baseline and is timed after it for each workload. Code the candidate starts, such as a background thread created in swscale_create that keeps running, loads the CPU while the next workload's baseline is timed. Nothing isolates the two libraries.
The verifier builds or loads the work differently from what the instruction says
rubric · build_and_interface_contract · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - tests/test.sh:182/190/198: after building, the verifier takes `find ${IMPL_DIR} -name libswscale_candidate.so ... | head -1` over the whole implementation tree, including .zig-cache/ and target/ (also target/debug). The instruction says the output is found at one of three specific paths (zig-out/lib, target/release, ./). Zig keeps every build's artifact, including earlier Debug builds from plain `zig build`, under .zig-cache/o/<hash>/libswscale_candidate.so. Cargo leaves target/debug/libswscale_candidate.so after any `cargo build`/`cargo test`. Which copy find returns first depends on directory order, so the graded library can be a stale or Debug build instead of the fresh ReleaseFast/--release one. A Debug build is typically several times slower, so a solution worth 0.5+0.5*2.0=1.5 could be graded near 0.5+0.5*0.2=0.6. A stale build could also fail correctness, giving at most 0.5*passed/30. Which copy wins needs a run to confirm.The correctness check skips inputs the instruction requires
rubric · correctness_gate_coverage · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - tests/compute_reward.py:496-569: outputs of the 10 timed benchmark workloads are never checked. Their configurations are absent from the correctness set (compute_reward.py:138-207 uses sizes of at most 1280x720; 1920x1080 and 3840x2160 never appear, and neither do RGB24->BGRA, RGBA->RGB24, 4K->1080p or 1080p->4K). A library that skips work on large frames passes 30/30 and gets an unbounded speedup, so the score is far above 1. - The instruction requires 'conversions between any pair of these formats' with three algorithms (100 pairs). The verifier checks a fixed 23 same-size pairs plus 7 scaling configs. YUV444P, YUV422P (except from RGB24), NV21 (except from RGB24) and GRAY8 (except from RGB24/YUV420P) as destinations are never tested. Scaling with any source other than RGB24, RGBA or YUV420P is never tested, and bicubic has one config. A solution that skips about 70 of the required pairs gets correctness 1.0 and full speedup credit.
The verifier requires things the instruction doesn't state
rubric · instruction_test_alignment · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - instruction.md ('Buffer alignment') promises 'The verifier allocates all source and destination plane buffers with 32-byte alignment. You may assume aligned loads/stores', but environment/workspace/pixel_formats.py:229 (allocate_image, used by tests/compute_reward.py:378-414 and 516-517) allocates plain ctypes arrays and only pads the row stride to 32. Measured with the same ctypes call: buffer addresses are 0 or 16 mod 32, varying from run to run. An honest solution that takes the instruction at its word and uses 32-byte aligned AVX2 loads/stores faults on a misaligned plane. The segfault kills compute_reward.py, and the test.sh:280 fallback writes reward 0, so the leaderboard score is 0 instead of the 0.5+0.5*speedup the work deserves. The dev tools share the allocator, so the agent may see crashes during development. Because alignment changes between runs, a solution can still pass every dev run and crash in the verifier (needs a run to confirm frequency).
- Coverage of central requirements (the 'any pair' formats, Zig/Rust) is filed under correctness_gate_coverage and forbidden_approach_detection.The agent can write or keep its own reward
rubric · reward_channel_integrity · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Kept as a task finding: the candidate library is loaded into the scoring process itself, so the agent's code runs inside the verifier and the fallback keeps any reward file it wrote. Detached-process rewrites are reported once under 'Across the benchmark'.
Evidence
[XJwjrbS] - tests/test.sh:272-284: the candidate .so is loaded by ctypes into the compute_reward.py process (pixel_formats.py:183), so the agent's code runs inside the verifier. /logs/verifier is chmod 777 (modal_managed.py:837). Load-time or create-time code in the candidate can write /logs/verifier/reward.json with arbitrary fields (e.g. correctness_passed=30 and a large geometric_mean_speedup) and then end the process. The fallback at test.sh:280 writes only if reward.json does not exist, so the planted file is kept and the leaderboard score is whatever was written. This follows from the code alone. The source scan matches 'reward.json' only as a literal string in the listed file types, so a constructed path is not caught. - A reward.json planted during the agent phase survives in the same way if compute_reward.py dies before writing and Harbor does not clear /logs/verifier first. A setsid-detached process could also rewrite the file after scoring (modal_exec.py kills only the process group). Both need a run to confirm.
The agent can tamper with the tools the verifier runs
rubric · verifier_toolchain_integrity · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Kept as a task finding: the route does not need root. compute_reward.py imports its helpers from /app/pixel_formats.py, a file in the agent's own workspace that is never scanned or restored. Generic package/tool tampering by a root agent is reported once under 'Across the benchmark'.
Evidence
[XJwjrbS] - tests/compute_reward.py:22-33 puts /app first on sys.path and imports load_swscale_library, allocate_image, image_to_bytes and fill_image_from_bytes from /app/pixel_formats.py. That file is agent-writable (the Dockerfile has no USER, so the agent is root), and it is neither hashed nor restored. The test.sh scans cover only /app/swscale-impl. An edited image_to_bytes that returns identical bytes for both libraries makes every PSNR infinite (30/30). Combined with a do-nothing candidate, the speedup is unbounded and the leaderboard score is 0.5+0.5*speedup, far above 1. - compute_reward.py:92 imports numpy lazily, after /app is on sys.path, so a module named numpy placed in /app takes precedence over the real one in the PSNR computation, with the same effect. - The verifier runs through `bash -lc` (modal_exec.py, modal_managed.py exec), which sources /etc/profile.d/*.sh, and BASH_ENV points at the agent-writable /etc/profile.d/frontier-task-init.sh. PATH shims for python3, sha256sum, nm, ldd or file therefore apply during grading. Nothing pins these tools or restores them.
The agent's dev tools measure something different from the verifier
rubric · dev_tools_match_verifier · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - environment/workspace/verify_correctness.py:310-314 takes inputs from /app/media and prefers smooth gradient_ or colorbars_ images, so 12 of its 13 workloads run on gradients or flat colour bars (only the 320x240 bicubic case uses noise). tests/compute_reward.py:374-375 feeds uniform random noise into every plane of all 30 hidden workloads. With the same 60 dB per-plane bar, smooth inputs hide differences in chroma filtering, chroma siting and rounding that noise makes very large. An implementation can pass all 13 dev checks and fail one or more hidden 60 dB checks, scoring 0.5*passed/30 (e.g. 0.48) instead of 0.5+0.5*speedup. The size of this effect needs a run to confirm. - The different comparison target (ASM ffmpeg CLI in the dev tool vs the C-only baseline in the verifier) is disclosed in instruction.md and is not counted.
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - 'Wrap... FFmpeg... libraries' is not reliably detected. test.sh:232 checks only dynamic symbols (nm -D). A Rust cdylib that statically links a surviving copy of the C libswscale.a keeps sws_* symbols local, so they never appear there. test.sh:106 matches API names only as literal text in the listed file extensions, so source that does not spell them out passes. Result: 30/30 and speedup about 1.0, a leaderboard score of about 1.0, for no reimplementation. (The surviving copy itself is filed under reference_removal_complete.)
- 'Use inline assembly' is not checked anywhere: no pattern covers Rust asm!/global_asm! or Zig asm, and .S/.asm files are scanned only for FFmpeg and verifier strings.
- 'in Zig or Rust' is not enforced: test.sh:195-198 accepts a Makefile ('make release') that builds any C code, including transplanted FFmpeg scalar C files that avoid the four public API names, compiled with -march=native.Prebuilt binaries survive the rebuild-from-source step
rubric · rebuild_from_source_enforced · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - tests/test.sh:161-165 skips target/, .zig-cache/ and zig-cache/ when removing prebuilt .so/.a files. Steps 182/190 then grade the first libswscale_candidate.so found anywhere in the tree, including those directories. Cargo and Zig reuse cached artifacts whose fingerprints are current. Nothing checks that the graded library came from this build (no clean build, no timestamp or output-path check). A precompiled library planted in target/ or the Zig cache, possibly built from forbidden C/asm or FFmpeg code, is graded as is.
Copies of the reference software survive into grading
rubric · reference_removal_complete · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - tests/test.sh:20-34 deletes /reference and /usr/local/lib/lib{sw,av}*. The follow-up scan (36-48) looks only at executable ELF files under /app, matched by name. Static archives are 'current ar archive', not ELF, and are not executable, so a copy of /usr/local/lib/libswscale.a and libavutil.a made during the run survives: anywhere outside /app (/root, /opt, /tmp), or inside /app/swscale-impl/target/ or .zig-cache/ (excluded from the cleanup at 161-165). A build can statically link that copy. See forbidden_approach_detection for why the symbol checks miss it.A worse solution can outscore a better one
rubric · score_ranking_is_monotone · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - tests/compute_reward.py:419-442: the candidate runs in-process, and the try/except catches only Python exceptions. A segfault on one correctness workload kills the process, and the test.sh:280 fallback writes 0 without correctness fields, so the score is 0. A solution that instead gives wrong output on that same workload scores 0.5*29/30=0.483. A segfault in one benchmark workload likewise drops a fully correct solution from 0.5+0.5*speedup to 0, while a NULL return there still leaves about 0.5.
The timer measures something other than the candidate's real work
rubric · timing_scope_and_caching · performance
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - tests/compute_reward.py:522-536 calls swscale_process 110 times on the same context with the same src/dst pointers and unchanged source data, while correctness (433-436) calls each context only once. A candidate that returns immediately on a repeated identical call, because the destination already holds the result from the warmup, produces correct output with near-zero time. The median speedup reaches thousands, so the leaderboard score 0.5+0.5*speedup is in the hundreds. instruction.md allows precomputing only 'lookup tables and filter coefficients in swscale_create', not caching outputs.
A hang or slow test can zero the whole run
rubric · verifier_hang_handling · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - tests/compute_reward.py:419-436 (correctness) and 527-536 (benchmark) call the candidate in-process with no per-workload or per-call timeout, and test.sh:272 has none either. A candidate that loops forever on one input, such as one odd format pair, blocks until the 3600 s verifier timeout. test.sh never reaches its fallback, so no reward is written. A solution correct on 29/30 workloads, worth 0.5*29/30=0.483, ends at 0 or a Harbor error. A hang in one benchmark workload likewise erases a fully correct solution's 0.5+0.5*speedup.
The score depends on hardware the task doesn't pin
rubric · hardware_dependence · performance
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - task.toml pins only cpus=8 and gpus=0, not the CPU model. The score is the ratio of a SIMD candidate to scalar C, uncapped. Zig `zig build` targets the native CPU, so the same source compiles to AVX-512 or AVX2 code depending on the Modal host, and the speedup changes with vector width. A threaded candidate's speedup also depends on how much of the 8 reserved CPUs the host actually delivers. At speedup 3, a 20% swing moves the leaderboard score by about 0.3. The size of the swing needs a run to confirm.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - tests/compute_reward.py:138-351 and :601 publish the exact correctness and benchmark workload lists and the fixed seed 0xDEADBEEF_CAFEBABE. Anyone, or a model trained on the repository, can regenerate every hidden noise input, and the expected outputs come from the public baseline library. This also reveals which pairs and frame sizes are never correctness-checked (see correctness_gate_coverage). The task has no canary string, seed rotation, or statement that the scored workloads differ.
The task's score scale distorts the benchmark average
rubric · score_scale_comparable · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - score_from_reward.py:206-208 pays 0.5+0.5*speedup with no cap. A realistic SIMD geometric-mean speedup of 3-4x over scalar C (the instruction itself cites 2.6x) scores 2.0-2.5, so one strong trial counts as two to two and a half perfect trials elsewhere. The caching gap (timing_scope_and_caching) can make the score unbounded.
Stated requirements are not graded
rubric · test_coverage_gaps · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - instruction.md promises even dimensions only for subsampled formats, so packed RGB and GRAY8 must handle odd sizes. Every verifier size (compute_reward.py:166-171, 199-207) is even, so odd-width or odd-height RGB/GRAY handling is never exercised, even though prepare_media.py builds a 1001x751 'odd dimensions' image the verifier never reads. - swscale_api.h: 'Returns ... NULL on error' / 'negative on error'. No invalid format, algorithm or size is ever passed, so error handling is untested. - swscale_destroy is called but leaks or double frees are never detected.
The task's time budget is stated inconsistently
rubric · time_budget_consistency · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[XJwjrbS] - task.toml [agent].timeout_sec = 28800 (8 h), and the Dockerfile default is ENV TASK_BUDGET_SECS=28800. Every agent in job.yaml has override_timeout_sec: 72000 (20 h), and modal_managed.py/timeout.py inject TASK_BUDGET_SECS=72000 into the timer. Leaderboard agents therefore got 20 h, while anyone running the task as published gets 8 h, so results are not comparable. instruction.md states no hours.
job.yaml runs agents for 20 h; task.toml declares 8 h
static · run_config_timeout_mismatch · job.yaml, task.toml [agent].timeout_sec
A reproduction from task.toml gives agents a different budget than the leaderboard run did.
Evidence
task.toml [agent].timeout_sec = 28800 job.yaml override_timeout_sec: 72000
frogsgame-rl Anti-cheat checks zero honest solutions 3 critical · 6 major flagged
- Staticfail15 checks, 2 with findings (1 blocking)
- Rubricfail43 criteria, 13 failed by a single reviewer: instruction_test_alignment, instruction_clarity, instruction_scoring_disclosure, environment_reproducibility, time_budget_consistency, verifier_toolchain_integrity, reward_channel_integrity, verifier_hang_handling, anticheat_false_zero, forbidden_approach_detection, false_fail_risk, test_coverage_gaps, hidden_material_public_exposure (3 minor)
Anti-cheat checks zero honest solutions
rubric · anticheat_false_zero · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - tests/test.sh:46-50 — `compute_reward|reward\.json|reward\.txt|/tests/` is grepped over every *.py/*.sh under /app (only prepare.py and .git are excluded), and comments are not stripped. An honest RL train.py that defines its episode reward as `def compute_reward(...)` (standard RL naming) fails the scan, which zeroes the trial (leaderboard 0). Paths like `boards/tests/` or a helper writing `reward.json` trip it too. - tests/test.sh:98-113 — any *.safetensors/*.bin/*.pt/*.pth over 100 MB anywhere on the filesystem (outside /proc, /sys, <local path> zeroes the trial. A Qwen3-8B LoRA at rank 32 over all linear layers is about 87M params, roughly 175 MB in bf16. An agent that downloads its own Tinker checkpoint (the instruction calls it a 'downloadable LoRA checkpoint') to inspect it scores 0. - tests/test.sh:68-75 — train.py fails if `board["solutions"]` appears within 5 lines of 'agent_fn|def agent|run_episode|eval.*harness'. Using stored solutions for legitimate training-time SFT or reward shaping near a training agent_fn would zero the trial (lower likelihood).
Correct alternative solutions are rejected
rubric · false_fail_risk · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - tests/compute_reward.py:782-784 — any exception from Tinker sampling (e.g. a rate limit or transient timeout while 40 workers per trial run and 8 trials share one key) makes agent_fn return None. The episode is then auto-submitted unsolved, so service errors silently count as model failures and lower reward/500. How often the SDK retries internally needs a run to confirm.
The verifier requires things the instruction doesn't state
rubric · instruction_test_alignment · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - tests/compute_reward.py:823 — the verifier runs `EvalHarness(max_tool_calls=30)`, but instruction.md says "Tool call budget: max_tool_calls=200 per episode", and prepare.py's EvalHarness/FrogGame default to 200. Solving an N=13 board takes at least 15 calls (get_state + 13 place_frog + submit), and every rejected placement or check_violations uses another call. A model trained honestly against the stated 200-call budget with a trial-and-error policy gets force-submitted at call 30. It therefore loses hard/expert boards it would have solved, which lowers reward/500. - tests/compute_reward.py:737-739 — the episode is auto-submitted once the rendered prompt passes 12000 tokens. The instruction never mentions this. A policy that calls get_state after each placement on 12×13 boards gets close to this limit (lower severity). - The instruction's central promise that the base model is also evaluated and the improvement graded is not implemented. See instruction_scoring_disclosure.
The environment or grading is not reproducible
rubric · environment_reproducibility · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - task.toml:18-19 and Dockerfile:24-28 — scoring depends on the remote Tinker service accepting the pinned SDK and still holding the agent's checkpoint. The task's own comments record that the server dropping SDK 0.16.x "zeroed every trial in the Fable 5 scoring wave". A re-run or rescore after another SDK sunset or checkpoint expiry turns the same submission into 0 (compute_reward.py:1104-1108 records 0 solves on any Tinker failure). - Dockerfile:51 — the tokenizer and chat template come from HF 'Qwen/Qwen3-8B' with no pinned revision, and transformers is unpinned (>=4.40). A rebuild could render prompts differently from what agents trained against (needs a run to confirm).
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - instruction.md: "Must fine-tune from `Qwen/Qwen3-8B`". tests/compute_reward.py:554 and :1066-1067 accept any tinker:// path and sample it with its own base model, and never check the base model in adapter_config.json, which is only recorded for audit. A LoRA trained on a larger Qwen3 model on Tinker that shares the Qwen3 tokenizer (e.g. Qwen3-32B or Qwen3-235B-A22B) is scored the same way and very likely solves more boards, so the leaderboard score rises. How much needs a run to confirm. - job.yaml passthrough_env TINKER_API_KEY is shared across n_concurrent_trials: 8 and across scoring waves. Nothing ties path.txt to a checkpoint created in this trial, so an agent could submit a checkpoint trained in another trial under the same key. Whether the Tinker REST API lists those checkpoints needs a run to confirm.
The instruction is ambiguous or contradictory
rubric · instruction_clarity · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - instruction.md 'Output Parsing': "The verifier parses `<tool_call>` XML tags from the model output", and the system prompt says "You may call one or more functions". Reading A: every tool_call in a turn is executed. Reading B: only the first is. tests/compute_reward.py:449 uses `re.search`, so it executes only the first tag, and the history records only that one call (lines 765-779). A model trained under reading A (several place_frog calls per turn, which saves turns under max_tokens=2048) loses the rest of each turn's moves in the verifier and sees a history that differs from its training. That costs boards and score. How much needs a run to confirm.
The instruction misstates how the task is scored
rubric · instruction_scoring_disclosure · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - instruction.md 'Scoring' says: "runs both the base Qwen3-8B and your fine-tuned model on 500 unseen test boards. Weighted solve-rate improvement (easy=1×, medium=2×, hard=3×, expert=4×). 30pp weighted improvement = full marks." In fact tests/compute_reward.py:1119 sets reward = the raw count of boards the fine-tuned model solves, no base model is run, and score_from_reward.py divides by 500. That is unweighted, absolute (not an improvement) and has no 30pp cap. A rational agent following the instruction would favour expert/hard boards in its training curriculum, since they are worth 4×, and could stop once its own eval showed about 30pp weighted gain. Under the real formula an easy board is worth exactly as much as an expert one, and every extra board keeps paying, so both choices lower the leaderboard score.
A hang or slow test can zero the whole run
rubric · verifier_hang_handling · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - tests/compute_reward.py:743-748 / 843-847 — `sampling_client.sample(...).result()` has no timeout, and neither do the episodes. 500 boards × up to 30 sequential samples of ≤2048 tokens run with 40 workers, which is about 375 sequential sampling rounds against [verifier].timeout_sec = 7200. A slow Tinker queue or a model that writes long <think> blocks and rarely submits could exceed 7200 s. Results are written only at the end (line 1126), so the trial loses all credit for the boards it did solve. Needs a run to confirm. - tests/compute_reward.py:305-337 — the informational board check runs the backtracking solver on every JSON under /app/boards with no limit, before the eval starts. RL pipelines often generate tens of thousands of boards, which uses up part of the same 7200 s (needs a run to confirm).
No reference solution (solution/ is empty or missing)
static · required_files · solution/
Without an oracle solution there is no proof the task is solvable.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - tests/compute_reward.py:210-245 — the 500 test boards come from a fixed `random.seed(99991)` and a deterministic generator, both in the public repository. Anyone, or a model trained on the repo, can regenerate the exact scored boards and their solutions. Nothing mitigates this: no canary, no seed rotation, and no note that the scored boards differ.
Stated requirements are not graded
rubric · test_coverage_gaps · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - instruction.md "Every generated board must be verified solvable", the required /app/results.json and /app/boards, and "You MUST execute the full pipeline": tests/compute_reward.py:992-1012 only computes pipeline_quality as information, and it is not scored. Missing or invalid boards, a missing results.json, or a scaffold train.py with a hand-made checkpoint all score the same as a full pipeline. The 'plausibility cross-checking' of results.json the instruction promises is never done.
The task's time budget is stated inconsistently
rubric · time_budget_consistency · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[aEcmJ5k] - task.toml:9 sets [agent].timeout_sec = 28800 (8 h, and the Dockerfile has TASK_BUDGET_SECS=28800), but every agent in job.yaml sets override_timeout_sec: 72000 (20 h). modal_managed.py:124 and :138-166 reset the timer to the enforced budget, so leaderboard agents got and were told 20 h, while the published task declares 8 h. Trials run under task.toml get less than half the time of the leaderboard runs.
job.yaml runs agents for 20 h; task.toml declares 8 h
static · run_config_timeout_mismatch · job.yaml, task.toml [agent].timeout_sec
A reproduction from task.toml gives agents a different budget than the leaderboard run did.
Evidence
task.toml [agent].timeout_sec = 28800 job.yaml override_timeout_sec: 72000
git-to-zig Anti-cheat checks zero honest solutions 3 critical · 5 major flagged
- Staticpass15 checks, 0 with findings (0 blocking)
- Rubricfail43 criteria, 10 failed by a single reviewer: instruction_clarity, network_policy_enforcement, resource_and_time_fit, reward_channel_integrity, verifier_hang_handling, anticheat_false_zero, forbidden_approach_detection, rebuild_from_source_enforced, reference_removal_complete, hidden_material_public_exposure (2 minor)
Anti-cheat checks zero honest solutions
rubric · anticheat_false_zero · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[RJTvUCP] - tests/test.sh:107-113: any executable ELF file under /app/zig-port outside zig-out/.zig-cache zeroes the trial. Running `zig build-exe` on a scratch file from the workspace, or keeping a backup copy of the built binary, leaves such a file, and the instruction never mentions this rule. Score: 0. - tests/test.sh:78-83: any source line containing both std.process.Child and the literal "git" zeroes the trial. Real git re-invokes itself for sub-commands (for example upload-pack in local transport, or gc --auto), and a port that spawns itself as "git" on one line, which resolves to its own binary through PATH during the tests, scores 0.
Network access lets the agent fetch answers or forbidden help
rubric · network_policy_enforcement · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[RJTvUCP] - job.yaml include_agent_domains: true with network_allowlist.py:212-236 and modal_managed.py:333-341: on the gemini-cli leg the allowlist includes all Google default-domain IP ranges, widened further to fit Modal's 100-prefix limit. Those ranges also serve Google-hosted public source mirrors that carry git.git, which contains the exact v2.47.0 t/ directory used as the hidden grader. The instruction says 'No internet'. Being able to run the graded suite locally would give Gemini trials a material advantage over the other agents. Whether such hosts are actually reachable from the sandbox (DNS/TLS) needs a run to confirm.
The agent can write or keep its own reward
rubric · reward_channel_integrity · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Kept as a task finding: compute_reward.py counts 'ok ' lines in output the graded binary itself writes, with no TAP plan check and no cap. This follows from the verifier's own code.
Evidence
[RJTvUCP] - t/test-lib.sh:126 runs the graded binary with its stderr going to the per-script result file, and test bodies inherit fd 7, which also points there. compute_reward.py:72-78 counts every line starting with 'ok ' without checking the TAP plan or test numbers, and compute_reward.py:175 divides by 29075 with no cap. Output the agent's binary writes itself is therefore counted as passed tests, so a binary that emits fabricated result lines can drive the leaderboard score far above 1.0. This is settled by the code. - test.sh:39-40 never clears /logs/verifier/test-results, /logs is writable by the agent user (Dockerfile chown), and compute_reward.py:59 globs every t*.out file there. Files left by the agent would be counted (needs a run to confirm that Harbor does not clear /logs/verifier first). - In step 4 the graded binary runs with the verifier's privileges (step 2.6 needs root), so it could alter /tests/compute_reward.py before step 6 runs it (needs a run to confirm the verifier uid).
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[RJTvUCP] - tests/test.sh:57-64: the 'no compiling the C source' rule is enforced only by counting lines in files named *.c plus a build.zig grep for git-src paths. C code kept under other file names is not counted, so a build that compiles git's C code, scoring near the oracle (~1.0), is not detected. - tests/test.sh:78-83 and 175-206: the 'no wrapping git' rule is enforced by a single-line source grep and an strace of only three commands that ignores executables inside zig-out/bin. A binary that implements those three commands natively and delegates everything else is not detected (score near a real git's pass rate).
The instruction is ambiguous or contradictory
rubric · instruction_clarity · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[RJTvUCP] - instruction.md ('Do not compile or link the C source or wrap around the existing git binary — write Zig'): it is unclear whether git's non-C components in /app/git-src (shell and Perl scripts such as git-submodule.sh, git-filter-branch.sh, git-sh-setup, git-send-email) may be shipped as they are or must be ported to Zig. Nothing in tests/test.sh distinguishes the two, because its checks look only at *.c files, ELF binaries and exec of a git binary. The readings therefore score differently: an agent that reuses the scripts collects the submodule, filter-branch and mergetool tests, while an agent that ports everything to Zig has to earn them.Prebuilt binaries survive the rebuild-from-source step
rubric · rebuild_from_source_enforced · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[RJTvUCP] - tests/test.sh:107-113 and 126-140: the prebuilt-binary scan only flags *.o/*.a/*.so files and ELF files that have the executable bit, and test.sh:135 later chmods the graded file itself. Nothing confirms that zig-out/bin/git was compiled from the Zig sources by this build: build.zig can install an existing non-executable file as the output. A precompiled C git graded this way would score near the oracle (~1.0).
Copies of the reference software survive into grading
rubric · reference_removal_complete · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[RJTvUCP] - tests/test.sh:126 and 224-226 delete only /app/git-src, /usr/bin/git*, /usr/lib/git-core and /usr/libexec/git-core, and test.sh:262-263 wipe only /tmp and /var/tmp. Copies of the system git binary or of the C source that the agent leaves in its home directory or inside the workspace (non-executable, not named *.c) survive, and no scan outside /app/zig-port looks for them. Together with the gaps noted under forbidden_approach_detection, such a copy could be used at grading time.
A hang or slow test can zero the whole run
rubric · verifier_hang_handling · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[RJTvUCP] - tests/test.sh:180-185: the three strace smoke runs (init, status, hash-object) have no timeout, unlike every test script, which runs under `timeout 120`. A port with an infinite loop in `status` on an empty repository, a plausible partial-implementation bug, blocks the verifier until the sandbox expires. No reward is written, so the trial loses credit for every other test it passes.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[RJTvUCP] - tests/git-test-suite.tar.gz is upstream git v2.47.0 with t/ included, which is public verbatim upstream. Anyone, or any model trained on git.git, can reproduce the exact graded test cases and expected outputs. Nothing mitigates this: there is no canary and no statement that the scored suite differs.
Declared time or resource limits are too tight
rubric · resource_and_time_fit · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[RJTvUCP] - job.yaml sets sandbox_timeout_secs: 86400 with auto_sandbox_timeout: false, so modal_managed.py:756 never extends it. task.toml grants the agent 72000 s and the verifier 86400 s, so an agent that uses its full budget leaves under 4 h of sandbox life for verification. - The test.sh worst case (a C make plus 1007 scripts x 120 s / 4 workers) is about 8.4 h. A slow or partly hanging port that hits the 120 s cap in roughly 450 or more scripts would be killed mid-verification with no reward written, losing its partial credit (frequency needs a run to confirm).
inference-system-optimization The agent can make the baseline slower or different 4 critical · 7 major flagged
- Staticfail15 checks, 2 with findings (1 blocking)
- Rubricfail43 criteria, 17 failed by a single reviewer: build_and_interface_contract, agent_assets_present, environment_reproducibility, resource_and_time_fit, time_budget_consistency, verifier_toolchain_integrity, reward_channel_integrity, reward_written_on_every_path, verifier_hang_handling, forbidden_approach_detection, correctness_gate_coverage, baseline_integrity, timing_scope_and_caching, score_floor_is_low, score_scale_comparable, test_coverage_gaps, hidden_material_public_exposure (5 minor)
The agent can make the baseline slower or different
rubric · baseline_integrity · performance
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - tests/test.sh:76-85 and environment/workspace/entrypoint.sh:13-24: the baseline server runs in the agent's environment. It uses the same python3, torch, triton, transformers, sgl_kernel dependencies, FlashInfer JIT cache (~/.cache) and any .pth hooks, all of which the agent can write as root. The restore re-extracts only the sglang, sgl_kernel and flashinfer directories. `tar xf` overwrites those files but does not delete files the agent added. The snapshot itself is /app/.sglang-baseline.tar, which the agent can rewrite or replace. An agent can leave a slowdown that fires only under the baseline's configuration (for example when NEXTN/fp8_e4m3 flags are present or the port is 30000) and keep its own candidate fast. Halving baseline speed doubles the measured speedup: for example s=1.0 becomes 2.0, and the score goes from 1.0 to 1.5. The phase-3 re-check only flags drift and runs under the same tampered environment, so it does not catch this.
The verifier builds or loads the work differently from what the instruction says
rubric · build_and_interface_contract · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - tests/compute_reward.py:443-472: instruction.md says the verifier 'executes /app/submission/launch_server.sh'. In fact, whenever the script lacks the literal '--skip-server-warmup', the verifier writes a copy to /logs/verifier/launch_server_patched_<port>.sh and runs that copy with `bash`. The copy is written even when the string replace changes nothing. So any script that finds its helper files relative to itself ($0, BASH_SOURCE, `cd $(dirname $0)`) looks in /logs/verifier instead of /app/submission. instruction.md tells agents to keep helpers under /app/submission and have launch_server.sh reapply them, so this is a common honest pattern. Under `set -e` the server then dies or starts without its patches. A dead server raises RuntimeError, which compute_reward.py:1038 turns into reward 0 with no correctness data, so the leaderboard score is 0. The dev tools (run_dev_bench.py:151, verify_serving.py:78) run the script in place, so the agent never sees this. - tests/compute_reward.py:448-451: the flag is inserted by plain text replacement at the first 'sglang.launch_server' in the file. If that string first appears inside a variable assignment, a heredoc import or a longer module name, the edited script breaks and the trial scores 0. This is less likely than the first issue.
The correctness check skips inputs the instruction requires
rubric · correctness_gate_coverage · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - tests/compute_reward.py:541-550, 587-606: the outputs of the timed requests (5 sequential and 2 concurrent workloads) are never compared with anything. Correctness uses only prompts.jsonl, which is a different set of inputs, and is collected strictly sequentially. Each timed prompt is sent 40 times, while no correctness prompt appears more than 7 times. A candidate that returns a truncated or garbage answer for any request it has seen more than 7 times passes the gate exactly and cuts timed latency by orders of magnitude. With speedup s around 10-100, the score is 0.5+0.5*s, about 5-50. - compute_reward.py:601-606 and 997-998: failed concurrent requests are silently dropped, and a concurrent workload where every request fails is removed from the geometric mean instead of being scored 0. A candidate that serves one request at a time and immediately rejects the extra concurrent ones has only its batch-1 latency measured. That beats the baseline's batch-8 latency, even though the instruction says concurrent batching must be handled. - Correctness under batch>1 is never checked, so a kernel that is wrong only for batched decoding passes.
Doing nothing or submitting the scaffold earns real points
rubric · score_floor_is_low · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - The scaffold left unchanged (environment/workspace/submission/launch_server.sh: default SGLang, bf16, no speculative decoding) serves the same model greedily. If it passes the 0.95 gate (plausible; needs a run), it scores 0.5+0.5*s with s around 0.5-0.8, i.e. about 0.75-0.9. If it fails the gate, it still scores 0.5*exact_match_rate, which is likely about 0.3-0.45. - Copying the config-only baseline flags, which the instruction names (FP8 KV cache, MTP, V2 mamba scheduler, CUDA graphs) and which solution/oracle_launch_server.sh is identical to, gives s about 1.0 and a score of about 1.0 with no engineering work. - A stub that returns immediately has exact_match about 0 and scores about 0.
Files the instruction points the agent to are missing or different
rubric · agent_assets_present · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - environment/Dockerfile:27-41: instruction.md lists as 'Pre-installed kernel tools' ThunderKittens (`import thunderkittens`), Helion (`import helion`), Triton-TLX, TileLang and CuTe DSL (`import cutlass`). The published Dockerfile installs only torch, flashinfer, sglang[srt], HF tools and requests. Nothing installs ThunderKittens, Helion or TLX. TileLang and cutlass-dsl can only arrive as unpinned transitive dependencies of sglang/flashinfer, if at all. - instruction.md 'install additional packages from the pre-built cache (no internet)': no package or wheel cache is created anywhere. Every pip call uses --no-cache-dir, and allow_internet=false. - Cost: an agent that plans around the advertised tools loses time. The direct score effect is modest because CUDA and Triton are present. Whether prebuilt image v4 contains these tools cannot be checked from the published files.
The environment or grading is not reproducible
rubric · environment_reproducibility · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - environment/Dockerfile:34-38: `flashinfer` and `sglang[srt]` are unpinned, and the flashinfer install ends in `|| true`, so a failure is silently ignored. transformers and huggingface_hub are only lower-bounded. A rebuild next month gets a different SGLang/FlashInfer. That changes the baseline's speed and may change whether launch_baseline.sh flags (--mamba-scheduler-strategy extra_buffer, NEXTN for Qwen3.5) even exist. A rebuild could break the baseline (every trial scores 0) or change the speedup of the same submission. - scripts/seed_modal_volume.py:44: the model weights come from snapshot_download of Qwen/Qwen3.5-4B with no revision, into a persistent Modal volume that is not part of the image. - The verifier itself has no notable non-timing nondeterminism: prompt order is fixed and requests are sequential.
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - instruction.md 'CANNOT access or reference /tests/': the only enforcement is the literal grep in test.sh:41-54. It skips every path with a dot-prefixed component (`-not -path "*/\.*"`), any path containing /model/, unscanned file types (.c, .cu, .md, files without an extension, compiled objects), all of site-packages, and any path built at runtime. The candidate server runs during verification, when /tests (prompts.jsonl, compute_reward.py with HIDDEN_WORKLOADS) is present. Code that reads those files at that point evades the scan and can tell correctness prompts from timed prompts. It can then answer the 1166 gated prompts exactly and use a lossy fast path on the timed ones, raising the speedup with no correctness loss. - 'disable the timer daemon' is not enforced, but doing so does not raise the score.
Some verifier paths end without a valid reward
rubric · reward_written_on_every_path · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - tests/compute_reward.py:918-951 and 1038-1045: any exception after the correctness gate passes produces reward 0 with no 'correctness' key. Examples: one candidate benchmark request returning HTTP 500 or exceeding 300 s, or the phase-3 baseline re-check server failing to restart, even though that re-check is diagnostic only. score_from_reward.py then gives 0. A candidate that failed the gate gets 0.5*exact_match_rate, up to about 0.47. So a fully correct, fast candidate can score below a wrong one because of one bad request or a baseline-side failure. - tests/test.sh:2,79: under `set -euo pipefail`, a failing `tar xf` of the snapshot exits test.sh nonzero before compute_reward.py runs, so no reward is written. - If compute_reward.py is killed by the verifier timeout, nothing is written. See resource_and_time_fit and verifier_hang_handling.
The timer measures something other than the candidate's real work
rubric · timing_scope_and_caching · performance
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - tests/compute_reward.py:541-550 and 587-600: each timed workload sends the identical request (same messages and max_tokens, temperature 0) 20-40 times. The only reset is _flush_cache (line 515), which calls SGLang's /flush_cache and is ignored if the agent's server keeps its own response cache. A server that returns the stored greedy completion for a repeated identical request produces exactly correct output (the correctness prompts are unaffected, and duplicates there get identical answers). Its measured latency drops from about 1-3 s to milliseconds, giving per-workload speedups of roughly 100-1000x and a leaderboard score 0.5+0.5*s in the hundreds. The instruction ('Anything') does not forbid this.A hang or slow test can zero the whole run
rubric · verifier_hang_handling · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - tests/compute_reward.py:40,62,694: there is no overall deadline. Each correctness request may wait REQUEST_TIMEOUT=300 s, and collection aborts only after 50 consecutive failures. If a candidate wedges on one degenerate prompt in prompts.jsonl, the remaining requests can wait up to 50 x 300 s = 15000 s, far past the 3600 s verifier timeout. Harbor kills the run with no reward written, so the 0.5*exact_match_rate partial credit the leaderboard would have paid is lost (score 0 instead of up to about 0.45). - Startup waits of up to 1800 s per server use half the verifier budget on their own. See resource_and_time_fit.
tests/test.sh switches oracle-mode grading on `.oracle_solution` in the agent's workspace
static · oracle_marker_in_workspace · tests/test.sh:67
The agent can create this file during its run and it is still there when the verifier runs. Whatever the switch relaxes (anti-cheat scans, deletions, scoring) is then relaxed for the agent too.
Evidence
tests/test.sh:67: if [ -f "${APP_DIR}/.oracle_solution" ]; thenHeld-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - tests/compute_reward.py:91-187 (the exact HIDDEN_WORKLOADS and CONCURRENT_WORKLOADS texts and max_tokens), tests/prompts.jsonl (all 1166 correctness prompts) and scripts/generate_prompts.py:13 (RNG seed 42, which regenerates the prompt set) are in the public task. There is no canary string and no statement that the scored bundles are rotated. Anyone, or a model trained on the repository, knows the exact timed prompts and could ship precomputed completions for them under /app/submission.
Declared time or resource limits are too tight
rubric · resource_and_time_fit · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - task.toml [verifier].timeout_sec=3600 vs tests/compute_reward.py. In one verifier run, compute_reward.py starts 3 servers (each may take up to SERVER_STARTUP_TIMEOUT=1800 s; the comment at line 39 says heavy candidate configs 'can take 10-20 min'). It collects 1166 prompts twice (up to about 90k output tokens each, sequential). It runs 5 sequential workloads x 40 requests and 2 concurrent workloads x 20 rounds for both baseline and candidate, then a 5x20 baseline re-check. A rough estimate is about 35-45 min with a fast-starting candidate. A legitimate heavy candidate that takes 15-20 min to start plausibly pushes the total past 3600 s. compute_reward.py writes the reward only at the end, so Harbor kills it with no reward.json and a correct solution scores 0. Exact timings need a run to confirm.
The task's score scale distorts the benchmark average
rubric · score_scale_comparable · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - extra_references/scripts/score_from_reward.py:177-182, 200-203: the score is 0.5+0.5*speedup with no cap. Honest gains (1.3-2x) already score 1.15-1.5, above the ceiling of 1 that implementation tasks have. With the repeated-request response cache (see timing_scope_and_caching), one trial can score in the hundreds and dominate a model's average across tasks.
Stated requirements are not graded
rubric · test_coverage_gaps · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - instruction.md 'Everything needed... must be in /app/submission' and 'Direct edits in site-packages alone may be lost during replay': only sglang, sgl_kernel and flashinfer are restored (test.sh:78-79). Edits to torch, triton or other packages persist into grading, so the stated persistence rule is never exercised. - instruction.md 'CANNOT disable the timer daemon': nothing checks it. - instruction.md describes a 'natively multimodal (text + vision)' model, but every prompt and workload is text-only. Model surgery that drops the vision path is never noticed.
The task's time budget is stated inconsistently
rubric · time_budget_consistency · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[JUh7jnZ] - task.toml:8 [agent].timeout_sec = 14400 (4 h), and the Dockerfile sets ENV TASK_BUDGET_SECS=14400. job.yaml sets override_timeout_sec: 72000 (20 h) for every leaderboard agent. modal_managed.py:124 passes the 72000 budget to the timer, so the timer agrees with the enforced 20 h. The task's own declared budget (4 h) does not match what leaderboard trials actually got (20 h). instruction.md states no hours.
job.yaml runs agents for 20 h; task.toml declares 4 h
static · run_config_timeout_mismatch · job.yaml, task.toml [agent].timeout_sec
A reproduction from task.toml gives agents a different budget than the leaderboard run did.
Evidence
task.toml [agent].timeout_sec = 14400 job.yaml override_timeout_sec: 72000
libexpat-to-x86asm Anti-cheat checks zero honest solutions 4 critical · 8 major flagged
- Staticpass15 checks, 0 with findings (0 blocking)
- Rubricfail43 criteria, 17 failed by a single reviewer: build_and_interface_contract, agent_assets_present, verifier_toolchain_integrity, reward_channel_integrity, oracle_mode_isolation, verifier_hang_handling, anticheat_false_zero, forbidden_approach_detection, rebuild_from_source_enforced, reference_removal_complete, correctness_gate_coverage, false_fail_risk, timing_scope_and_caching, leaderboard_score_reconstruction, false_pass_risk, test_coverage_gaps, hidden_material_public_exposure (2 minor)
Anti-cheat checks zero honest solutions
rubric · anticheat_false_zero · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/test.sh:165 — before matching 'dlopen|dlsym|RTLD_' case-insensitively, the scan removes only full-line comments starting with ';', '#' or '//'. Lines inside GAS/.S block comments (for example ' * Pure assembly: no dlopen/dlsym, no system libexpat.') and trailing comments (for example 'call malloc # not via dlsym') are still matched. I checked this by running the task's own grep pipeline on those lines; both hit. An honest agent noting compliance in a header comment is zeroed (anti_cheat fail → reward 0, leaderboard 0) instead of its earned score.
The verifier builds or loads the work differently from what the instruction says
rubric · build_and_interface_contract · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/test.sh:91-96 — the instruction names the output as /app/asm-port/libexpat.so, but the verifier grades the FIRST *.so or *.so.* anywhere under /app/asm-port (in find/readdir order) that exports T XML_ParserCreate. It only falls back to libexpat.so when no such file exists. An honest agent that keeps an older prototype or test build (for example build/old/libexpat.so) next to its final library can have the stale file graded instead, which under-scores the real work. Which file wins depends on directory order; needs a run to confirm for a given tree.
The correctness check skips inputs the instruction requires
rubric · correctness_gate_coverage · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Analyst checked against the code: tests/compute_reward.py:108 matches only `tcase_add_test(tc, name)`. The test bundle also registers 84 tests with tcase_add_test__if_xml_ge and 132 with tcase_add_test__ifdef_xml_dtd, which that pattern never maps to a module.
Evidence
[n32S7HQ] - tests/compute_reward.py:108 — test-to-module mapping only matches the literal 'tcase_add_test(' call. The 106 registrations made through tcase_add_test__ifdef_xml_dtd / tcase_add_test__if_xml_ge are never counted: 61 basic, 2 ns, 1 misc, 30 alloc, 9 nsalloc, 1 acc. That is ~103 of the 365 tests in scored modules. These are the external-entity, DTD, general-entity and foreign-DTD tests (for example test_ext_entity_set_encoding, test_dtd_default_handling, test_set_foreign_dtd). A port that leaves out external-entity/DTD handling loses nothing on them.
- Timing inputs differ from correctness inputs and are not output-checked; see timing_scope_and_caching.Correct alternative solutions are rejected
rubric · false_fail_risk · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/test.sh:279-307 — the 'reduced suite' fallback that is meant to keep basic/misc credit when the full link fails can never link. It adds -DSKIP_NS_TESTS/-DSKIP_ALLOC_TESTS/-DSKIP_NSALLOC_TESTS, but runtests.c has no SKIP_* guards and still calls make_namespace_test_case/make_alloc_test_case/make_nsalloc_test_case (runtests.c:69-72), whose files the reduced link leaves out. An incremental port, as the instruction's 'Start with XML_ParserCreate…' advice encourages, that is missing even one symbol used only by ns/alloc tests gets correctness 0 (leaderboard 0) instead of its basic/misc credit (for example 0.5*(3+1)/10*0.7 ≈ 0.14).
Files the instruction points the agent to are missing or different
rubric · agent_assets_present · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - instruction.md ('Test against the C expat source's test output as you go') — the image ships only /app/expat-src/lib (Dockerfile COPY expat-src/). There is no expat test suite, no C compiler (gcc is purged and only kept as an encrypted bundle), and no libexpat (encrypted and removed). An honest agent cannot produce the reference test output the instruction tells it to compare against, so it has to infer exact behaviour (error codes, handler sequences) from the source alone. All tools the instruction lists (nasm, as, ld, objdump, readelf, nm, strace, make) and /app/.timer are present.A cheap shortcut earns a high score
rubric · false_pass_risk · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/compute_reward.py:67-76 — pass/fail is read from PASS:/FAIL lines on the test binary's stdout, which the candidate library shares, and missing FAIL lines count as passes. At grading time the test sources sit unpacked under /tests/expat-test-suite. A library that, on its first API call, prints PASS lines for the registered test names and then exits normally produces a log with no FAIL lines. compute_reward then credits every mapped test, giving correctness 1.0 raw and 0.9 on the leaderboard → 0.45, the same as a perfect port, with no parser at all. Nothing checks the summary line or compares counts against the reference run.
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/test.sh:162-169 — the only check for runtime loading is a text grep over files named *.s/*.asm. Assembler include files with other extensions are never scanned, and the built .so's own dynamic imports (an undefined dlopen symbol visible with nm -D) are never inspected. - tests/test.sh:184-188 — the binary string check only matches '/usr/lib.*libexpat' or '/lib/.*libexpat'. A load by bare soname of the system libexpat (restored at test.sh:31-34 before the tests run) or of <local path> (built at test.sh:219 before step 6) passes. A wrapper that forwards the API to either library gets near-full correctness. That is ≈0.45 on the leaderboard (the maximum reachable), versus far less for honest partial ports.
The leaderboard formula doesn't match what the verifier emits
rubric · leaderboard_score_reconstruction · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - extra_references/scripts/score_from_reward.py:37-39,72 — _LIBEXPAT_MODULE_WEIGHTS includes 'smoke_tier': 1, and total_w sums it (=10). compute_reward.py never writes a 'smoke_tier' module (its MODULE_WEIGHTS and additional_data.modules hold only basic/ns/misc/alloc/nsalloc/acc). Correctness is therefore capped at 9/10 = 0.9, so the `correctness >= 1.0` gate (line 197) is never met. Every trial, including a perfect port and the oracle, scores at most 0.5*0.9 = 0.45, and the performance subscore (ss[1].score) is never used.
Prebuilt binaries survive the rebuild-from-source step
rubric · rebuild_from_source_enforced · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/test.sh:91-96,143 — the instruction says the .so 'must be built from .s or .asm source files in /app/asm-port/', but the verifier never rebuilds. It grades whatever .so is present, provided at least one .s/.asm file exists and no GCC/clang .comment string is found. A .so assembled from a source the agent deleted, or from files the scan skips, is graded as-is, and nothing ties it to the scanned sources. This makes the source-level dlopen scan meaningless (wrapper score ≈0.45, as in forbidden_approach_detection).
Copies of the reference software survive into grading
rubric · reference_removal_complete · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/test.sh:31-34 and 219-224 — the reference is not removed at grading time but deliberately installed. The decrypted system libexpat.so.1 goes into /lib/x86_64-linux-gnu, and a fresh libexpat 2.6.4 build goes to <local path> Both happen before the agent's test binary runs (step 6) and before its benchmarks (step 7), so a library that loads the reference at run time finds it. The detection gaps are under forbidden_approach_detection.
The timer measures something other than the candidate's real work
rubric · timing_scope_and_caching · performance
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/benchmark.c / test.sh:415 — the timed loop re-parses the identical buffer 100–100000 times through one parser (XML_ParserReset) with no handlers registered. The only thing checked is XML_Parse's return status. A library that remembers the result for an identical input, or skips real work when no handlers are set, gets an arbitrarily large ratio (compute_reward.py:222 'No cap'). - The timer is clock(), resolved through the benchmark binary's link order, which puts the agent's .so before libc. A library exporting its own clock symbol controls the measurement. Today this inflates only the verifier's raw reward (0.5*corr+0.5*perf, gated on correctness>0). It reaches the leaderboard once correctness can hit 1.0 (blocked now by the smoke_tier bug).
A hang or slow test can zero the whole run
rubric · verifier_hang_handling · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/test.sh:366 with expat-test-suite/minicheck.c — all ~365 tests run in ONE process under a single `timeout 300`. There is no fork and no signal handler, and stdout goes to a file, so it is fully buffered and never flushed. One segfault or infinite loop in an early test during the first iteration (chunksize=0) loses every later test's PASS line, plus up to ~4 KB (~130 lines) of already-buffered PASS output. compute_reward.py counts all of those as failures, since totals come from source. A port that would pass ~80% of tests (leaderboard 0.5*0.8*0.9≈0.36) but crashes on, say, the 20th basic test scores ≈0, which is below a less-correct port that never crashes.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/gcc_key.txt, tests/libexpat_key.txt, environment/Dockerfile:29-30 and solution/solve.sh:8 — the AES passphrase for the gcc bundle that ships inside the agent image (/usr/lib/x86_64-linux-gnu/.gcc-bundle.enc) is published in plaintext. Anyone, or a model trained on the repository, can decrypt a working C compiler during the run, compile the provided C sources, and remove the .comment marker with the binutils that are installed. The result passes every anti-cheat check (test.sh:194-201 is the only C detector) at full correctness (≈0.45, the maximum). - tests/tests-bundle.tar.gz holds the full upstream 2.6.4 test suite and the benchmark docs, and gen_benchmark_xml.py regenerates the docs exactly. No canary string or rotation mitigates any of this.
Stated requirements are not graded
rubric · test_coverage_gaps · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[n32S7HQ] - tests/compute_reward.py:24 — acc_tests has weight 0 ('requires internal hooks'), but it is the only module that exercises the public billion-laughs API declared in expat.h (XML_SetBillionLaughsAttackProtection*; test_billion_laughs_attack_protection_api, acc_tests.c:448). A port that stubs these functions loses nothing.
- The instruction's ABI rule and 'do not compile/link the C source' are checked only indirectly (crashes, a strippable .comment string).lua-native-compiler Anti-cheat checks zero honest solutions 2 critical · 5 major flagged
- Staticfail15 checks, 2 with findings (1 blocking)
- Rubricfail43 criteria, 9 failed by a single reviewer: time_budget_consistency, verifier_toolchain_integrity, reward_channel_integrity, anticheat_false_zero, forbidden_approach_detection, reference_removal_complete, leaderboard_score_reconstruction, false_pass_risk, hidden_material_public_exposure (2 minor)
Anti-cheat checks zero honest solutions
rubric · anticheat_false_zero · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[yZQAunT] - tests/test.sh:117-124: the C-compiler regex flags any gcc/cc invocation in .rs/.c/.go/.py/.sh/.toml/Makefile files, and it also matches comments. Checked: Command::new("gcc") used only as a static-link driver for asm objects plus liblua-runtime.a matches, and so does the comment '// we exec as and ld directly instead of gcc'. instruction.md:113-115 forbids gcc only for compiling generated C code, so either is plausible in honest work. Either one sets anti_cheat_ok=0, so reward.json reward and score are 0. The leaderboard score is unaffected only because of the defect under leaderboard_score_reconstruction.The agent can tamper with the tools the verifier runs
rubric · verifier_toolchain_integrity · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Kept as a task finding: the expected-output program at /verifier-data/lua ships in the agent's image and is neither hashed nor restored. Generic package/tool tampering is reported once under 'Across the benchmark'.
Evidence
[yZQAunT] - tests/test.sh:55,372 take expected outputs from /verifier-data/lua, which was in the image during the agent's run. The agent runs as root (test.sh:64), so chmod 700 does not stop it. Nothing hash-checks or restores this file. If the agent replaces it with a program that prints the same thing its own output binaries print, every comparison at test.sh:537 matches and the score is about 1.0. - tests/test.sh:158 (make) and :151 (cargo build, including build.rs) run agent-controlled build code as root before the test loop and compute_reward.py. That code can rewrite files under /tests or the python3 used at :267 and :616. Nothing restores them, so the reward can be anything. - python3, nm, sha256sum and find come from the agent-writable system (PATH and system site-packages, where sitecustomize or .pth hooks apply). None of them is pinned or restored.
A cheap shortcut earns a high score
rubric · false_pass_risk · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[yZQAunT] - All 182 tests are deterministic and read no input. tests/test.sh:385 gives the compiler up to 60 s per program, and nothing checks what the output binary computes. A compiler that evaluates the program at compile time and emits a binary that only writes the captured stdout passes every test, scoring about 1.0 with no code generation. The evaluator can be its own evaluator over the Protos, using the full runtime and stdlib in liblua-compile.a, or the surviving /verifier-data/lua. compile_stubs.c removes only luaV_execute.
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[yZQAunT] - tests/test.sh:558-564: nothing detects the forbidden interpreter approach (instruction.md:27,69-73). An output binary can carry the agent's own bytecode interpreter, with its own loader, linked as prebuilt runtime support. It avoids the five parser symbol names checked at :435-441 and can score close to 1.0.
- tests/test.sh:473-490: the C-API ban is effectively unenforced. The check runs only when total==1, i.e. on the first test, and only if it compiled. It also looks only for undefined ('U') lua_* symbols, but liblua-runtime.a is static, so in a linked executable every lua_* symbol is defined ('T'). A compiler that emits lua_* call sequences passes.
- tests/test.sh:424-444: the parser-symbol check looks only at the first compiled binary, and a stripped binary shows no symbols.
- tests/test.sh:117-124: the 'no gcc on generated C' rule is checked only by a literal regex over source text. A command name built at runtime is not matched, and the leaderboard ignores the flag anyway (see leaderboard_score_reconstruction). A C-intermediate compiler can score close to 1.0.The leaderboard formula doesn't match what the verifier emits
rubric · leaderboard_score_reconstruction · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[yZQAunT] - tests/compute_reward.py:57-60 always writes subscores[test_pass_rate].score = pass_rate, even when hard_fail_reasons sets reward to 0. score_from_reward.py:63-66 returns that subscore first. test.sh Step 5 runs the tests whatever ANTI_CHEAT_OK says, and also when BUILD_OK=0 if a stale luanatc exists. So a source-scan violation (the C-intermediate pattern or a /verifier-data reference) or a build failure still earns full partial credit. Example: 170/182 passing with anti_cheat_ok=0 gives reward 0 but a leaderboard score of 0.934.
Copies of the reference software survive into grading
rubric · reference_removal_complete · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[yZQAunT] - tests/test.sh:59-80 deletes /reference/lua, the /usr/local/bin and /usr/bin copies, and executables whose sha256 exactly matches. Two working copies survive: - /verifier-data/lua is in the image and readable by the root agent, and is never removed. - Any copy changed by even one byte (different hash) is also kept. - An output binary can exec either copy on the original test path and match byte for byte, scoring about 1.0. The '/verifier-data' source scan at :98-104 covers only some file extensions, and the leaderboard ignores its result.
No reference solution (solution/ is empty or missing)
static · required_files · solution/
Without an oracle solution there is no proof the task is solvable.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[yZQAunT] - tests/test-suite-hidden/*.lua: all 182 hidden programs are plaintext in the public repository. Their exact expected outputs follow from running stock Lua 5.4.7. There is no canary string and no statement that the scored suite differs or is rotated.
The task's time budget is stated inconsistently
rubric · time_budget_consistency · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[yZQAunT] - task.toml:8 sets [agent].timeout_sec = 28800 (8 h) and the Dockerfile sets TASK_BUDGET_SECS=28800, but job.yaml gives every leaderboard agent override_timeout_sec: 72000 (20 h). harbor_ext/timeout.py uses the override, and modal_managed.py:124 resets TASK_BUDGET_SECS and the timer to match. Leaderboard trials therefore got 2.5x the budget the task declares.
job.yaml runs agents for 20 h; task.toml declares 8 h
static · run_config_timeout_mismatch · job.yaml, task.toml [agent].timeout_sec
A reproduction from task.toml gives agents a different budget than the leaderboard run did.
Evidence
task.toml [agent].timeout_sec = 28800 job.yaml override_timeout_sec: 72000
modular-stack-wan21 The agent can read the expected answers during its run 4 critical · 10 major flagged
- Staticfail15 checks, 3 with findings (2 blocking)
- Rubricfail43 criteria, 18 failed by a single reviewer: instruction_test_alignment, instruction_scoring_disclosure, answer_isolation, prebuilt_image_matches_published_build, environment_reproducibility, time_budget_consistency, verifier_toolchain_integrity, reward_channel_integrity, oracle_mode_isolation, verifier_hang_handling, forbidden_approach_detection, reference_removal_complete, correctness_gate_coverage, hidden_workloads_unpredictable, leaderboard_score_reconstruction, metadata_accuracy, test_coverage_gaps, hidden_material_public_exposure (4 minor)
The agent can read the expected answers during its run
rubric · answer_isolation · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - environment/Dockerfile:117-119: the hidden workloads and expected frames ship inside the image at /opt/verifier-data.tar.gz (mode 640, root:verifier). The Dockerfile has no USER line and task.toml/job.yaml set no agent user, so the agent most likely runs as root and can read the expected output frames for all 4 hidden workloads. A submission that reproduces those frames as package data under /app/submission would get PSNR far above 25 and score 1.0. Whether the agent runs as root needs a run to confirm.
The correctness check skips inputs the instruction requires
rubric · correctness_gate_coverage · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - environment/verifier-data hidden_workloads.json and the test.sh smoke test: every graded call uses 480x832, and the hidden workloads all use 8 steps. The scaffold says the verifier calls with 'various prompts, seeds, and resolutions', and instruction.md says frame size is 'as specified per workload'. A pipeline hard-wired to 480x832 still scores 1.0. The effect on scores is small.
The verifier requires things the instruction doesn't state
rubric · instruction_test_alignment · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - tests/compute_reward_partial.py:121-187 vs scripts/generate_references_modal.py:146: the hidden reference frames come from diffusers WanPipeline seeded with torch.Generator('cuda').manual_seed(seed). For a frame to clear 25 dB PSNR, the starting noise has to match torch's CUDA RNG almost bit for bit. instruction.md never says this and also bans torch. An honest MAX port that draws its noise with numpy or MAX random ops produces a different video, fails every workload and scores 0.
- Same reference generation: it uses WanPipeline defaults (empty negative prompt, the scheduler config bundled with the weights). instruction.md points the agent at /app/reference (the original Wan2.1 repo), whose defaults differ (a long default negative prompt, a different sample shift). A faithful port of /app/reference therefore misses PSNR and scores 0. The visible references give the agent some feedback on this.
- The central requirement the instruction states, geomean speedup, is never measured: test.sh runs only compute_reward_partial.py, which skips benchmarking (lines 7, 212-219).The agent can switch the verifier into oracle mode
rubric · oracle_mode_isolation · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Kept as a task finding: the switch is a marker file in /app, which is owned by the agent's user; it does not depend on root or on shell startup files. Analyst confirmed tests/test.sh:18 and :52 against the code.
Evidence
[SfjjYrn] - tests/test.sh:18 and 52: `if [ ! -f "$APP_DIR/.oracle_solution" ]` guards both the removal of reference .py files and the whole source scan (torch/diffusers/subprocess bans, the MAX-import requirement). /app is chowned to the agent (Dockerfile:93), and no verifier-side signal is also required. An agent that creates this file can submit a wrapper around the installed diffusers WanPipeline (Dockerfile:71-76), which reproduces the reference frames and scores 1.0.
The environment or grading is not reproducible
rubric · environment_reproducibility · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - environment/Dockerfile:57: the unpinned `modular` package decides which MAX API and kernels the candidate runs on. A rebuild could change or break the same solution's outputs. - Dockerfile:98 and 103-107: the reference repo and docs come from moving URLs. The verifier itself is deterministic apart from GPU numerics.
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - tests/test.sh:66: the torch/transformers/diffusers check matches only imports at the start of a line (`^import torch`, ...). An import inside a function body, or a dynamic import through importlib, is not caught. torch and diffusers are installed in the image (Dockerfile:71-76), so a submission that runs WanPipeline this way reproduces the reference exactly and scores 1.0. - test.sh:83 accepts any file with a `from max.` line, so a token MAX import satisfies the 'pure MAX' rule. Nothing checks that the model computation actually runs on MAX, and numpy compute is never checked. - The scan covers only /app/submission. Code placed elsewhere (instruction.md forbids this) is never scanned. See oracle_mode_isolation for the scan-skip marker.
The hidden workloads can be predicted and special-cased
rubric · hidden_workloads_unpredictable · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - environment/Dockerfile:117: hidden_workloads.json (prompts and seeds 100/200/300/400) ships inside the image at /opt/verifier-data.tar.gz, readable by root. A submission that special-cases those four prompts would score 1.0. See answer_isolation for the expected frames, which are in the same archive.
The instruction misstates how the task is scored
rubric · instruction_scoring_disclosure · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - instruction.md 'Scoring' section: says the score is the uncapped geomean speedup vs diffusers and is zero if any workload fails. In fact test.sh:153-157 runs compute_reward_partial.py, which awards passed/4 with no speed measurement. The leaderboard (score_from_reward.py implementation branch) scores correctness only, capped at 1.0. An agent told that speed is the score will plausibly spend hours on speed and accept reduced-precision shortcuts that cut its PSNR margin. Speed is worth nothing, and each workload lost to PSNR costs 0.25.
The leaderboard formula doesn't match what the verifier emits
rubric · leaderboard_score_reconstruction · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - score_from_reward.py:162 parses the first 'n/m' in reward['reason']. compute_reward_partial.py:88 copies the text of the candidate's import exception into reason ('IMPORT FAIL: {e}'). That import runs in a separate process after test.sh:113's own import check, so a candidate whose import fails only in the scoring process, with digits and a slash in the message, gets reward 0 but leaderboard correctness up to 1.0.
- Normal paths are fine: 'partial_correctness=k/4' gives k/4. The subscores carry no 'subtask' key, so the loop at lines 155-160 is never used.The graded image can't be rebuilt from the published files
rubric · prebuilt_image_matches_published_build · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - build_and_push.sh:17 builds and pushes the tag 'latest', while task.toml names :v4, so nothing ties the published files to v4. - environment/Dockerfile:57,98,103-107: `pip install modular` is unpinned, the Wan2.1 repo is cloned at HEAD, and the MAX docs are curled from live URLs. A rebuild today would get a different MAX SDK, which matters because the agent's code depends on the MAX API.
Copies of the reference software survive into grading
rubric · reference_removal_complete · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - tests/test.sh:19-22 deletes only *.py files under /app/reference, and none of it is needed at runtime. The real delegation target, the diffusers/torch/transformers packages in system site-packages (Dockerfile:71-76), is never removed and stays importable during scoring. Combined with the import-scan gap (see forbidden_approach_detection), a submission can call the PyTorch pipeline.
A hang or slow test can zero the whole run
rubric · verifier_hang_handling · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - tests/compute_reward_partial.py:111-197: the hidden workloads run with no per-workload timeout, and reward.json is written only after all of them finish (line 212). If one workload hangs (for example, a GPU deadlock on the 17-frame input), the whole 7200 s verifier timeout is used up and no reward is written. Workloads that already passed lose their credit: a 3/4 solution scores 0 instead of 0.75.
tests/test.sh switches oracle-mode grading on `.oracle_solution` in the agent's workspace
static · oracle_marker_in_workspace · tests/test.sh:18
The agent can create this file during its run and it is still there when the verifier runs. Whatever the switch relaxes (anti-cheat scans, deletions, scoring) is then relaxed for the agent too.
Evidence
tests/test.sh:18: if [ ! -f "$APP_DIR/.oracle_solution" ]; then tests/test.sh:53: if [ ! -f "$APP_DIR/.oracle_solution" ]; then tests/test.sh:159: if [ -f "$APP_DIR/.oracle_solution" ]; then
No reference solution (solution/ is empty or missing)
static · required_files · solution/
Without an oracle solution there is no proof the task is solvable.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - environment/verifier-data.tar.gz (extracted to <local path> contains hidden_workloads.json, all 44 hidden reference PNGs and baseline_timing.json. - scripts/generate_references_modal.py:40-81 publishes the exact hidden prompts and seeds. There is no canary string, rotation or statement that the scored bundle differs.
Task metadata is inaccurate
rubric · metadata_accuracy · metadata
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - task.toml:5 category 'ml-systems-porting' and instruction.md present this as a speed task, but score_from_reward.py:23-26 lists modular-stack-wan21 under IMPLEMENTATION and pays correctness only. - task.toml memory_mb = 131072 (128 GB) vs instruction.md 'RAM: 64 GB'.
Stated requirements are not graded
rubric · test_coverage_gaps · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - instruction.md requires 'pure MAX/Mojo for all model computation' and no numpy compute. Nothing checks this beyond a single `from max.` import line (test.sh:83). - instruction.md 'Do not leave owned code in any other location under /app/' is never checked. - The speed requirement (the whole 'Scoring' section) is never exercised by the graded path.
The task's time budget is stated inconsistently
rubric · time_budget_consistency · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[SfjjYrn] - task.toml:10 sets [agent].timeout_sec = 14400 (4 h), and Dockerfile:5 sets TASK_BUDGET_SECS = 14400. But job.yaml sets override_timeout_sec: 72000 (20 h) for every agent, and modal_managed.py:124 injects that value into the timer. The leaderboard runs therefore gave 20 h, while the published task declares 4 h.
job.yaml runs agents for 20 h; task.toml declares 4 h
static · run_config_timeout_mismatch · job.yaml, task.toml [agent].timeout_sec
A reproduction from task.toml gives agents a different budget than the leaderboard run did.
Evidence
task.toml [agent].timeout_sec = 14400 job.yaml override_timeout_sec: 72000
notebook-compression Anti-cheat checks zero honest solutions 4 critical · 4 major flagged
- Staticfail15 checks, 2 with findings (1 blocking)
- Rubricfail43 criteria, 12 failed by a single reviewer: instruction_test_alignment, prebuilt_image_matches_published_build, time_budget_consistency, verifier_toolchain_integrity, reward_channel_integrity, oracle_mode_isolation, anticheat_false_zero, forbidden_approach_detection, score_floor_is_low, score_ranking_is_monotone, score_scale_comparable, hidden_material_public_exposure (3 minor)
Anti-cheat checks zero honest solutions
rubric · anticheat_false_zero · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LWTZs67] - tests/test.sh:77-87 — the scan greps every *.py and *.sh under /app (only dot-paths are skipped, no comments are stripped) for patterns including `/tests/` and `compute_reward`, and any hit gives a fail result (leaderboard score 0). Innocent witness: an honest agent that keeps unit tests in /app/tests/ and a helper script with `python3 -m pytest /app/tests/` or `sys.path.insert(0, '/app/tests/')`. The instruction never mentions forbidden strings, and a codec scoring about 0.6-0.9 drops to 0.
The verifier requires things the instruction doesn't state
rubric · instruction_test_alignment · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LWTZs67] - tests/scoring_core.py:133-137 with tests/compute_reward.py:219 — the 512 MiB "submission bundle" is measured as every regular file anywhere under /app, hidden directories included. instruction.md only says "Submission bundle cap: 512 MiB (before fit)" and never defines the bundle as all of /app. Its own self-eval loop writes /app/artifact, /app/dev_compressed and /app/dev_recovered there, and job.yaml's capture comment admits agents leave multi-GB scratch in /app. Witness: a valid codec whose author kept a copy of the 136 MB visible corpus plus full-corpus round-trip outputs and experiment directories under /app (over 512 MiB) fails with "Submission bundle too large" and scores 0 instead of about 0.6-0.9.
The agent can write or keep its own reward
rubric · reward_channel_integrity · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Kept as a task finding: the agent's /app/run executes inside the scoring step and the fallback writes only when no reward file exists. Detached-process rewrites are reported once under 'Across the benchmark'.
Evidence
[LWTZs67] - tests/test.sh:28 and tests/compute_reward.py:281/334/375 — during verification the agent's own /app/run executes as root in the same container. /logs/verifier was created world-writable (modal_managed.py chmod 777). If run writes its own reward.json and then kills its parent compute_reward.py, the fallback in test.sh only writes `if [ ! -f reward.json ]`, so the planted file is kept (planted reward 0.000001 gives a leaderboard score of about 1.0). A process detached during a stage could also rewrite the file after compute_reward.py finishes. The source scan (test.sh:80) looks only at *.py and *.sh files and literal strings; /app/run has no extension. Needs a run to confirm that Harbor reads the reward only after test.sh exits.
Doing nothing or submitting the scaffold earns real points
rubric · score_floor_is_low · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Analyst checked the formula, not the number: score_from_reward.py scores notebook-compression as 1 - reward with no baseline subtracted. The reviewer's gzip -6 figure (about 0.60) was computed by the reviewer on the hidden bundle and has not been re-run.
Evidence
[LWTZs67] - extra_references/scripts/score_from_reward.py (notebook-compression branch: score = 1 - reward) — no changes, the unchanged scaffold, an immediate stub and a plain copy all score about 0. But no baseline is subtracted. A one-line wrapper calling generic gzip -6 on each file, computed on the actual hidden bundle, gives geom_mean_ratio 0.404, a leaderboard score of about 0.60. Real notebook-specific work only moves the score in roughly the 0.6-0.9 band, so about two thirds of the scale is earned with no task-specific work.
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LWTZs67] - tests/compute_reward.py:120-123 and 452-458 — the instruction forbids merging inputs into one archive, but attribution only needs a file at each input path, and zero-byte placeholders are accepted. Compressing all 80 hidden notebooks into the output for the largest one and writing empty files for the rest gives r_i = artifact_term for 79 files. Computed on the real bundle (122,584,118 bytes, largest 38,413,468) with a 10 KB artifact and a 0.1-ratio codec: geom_mean about 9e-5, leaderboard about 0.9999, against about 0.89 for the same codec scored honestly. - tests/scoring_core.py:114 / compute_reward.py:334-380 — "Decompress runs in a fresh environment with access only to <artifact_dir> and <compressed_dir>" is not enforced. Decompress runs in the same filesystem while the hidden inputs still exist, so compress can record or stash its inputs outside compressed_dir and decompress can restore them from there. Near-empty outputs then score about 1.0. - compute_reward.py:285-305 — "Everything needed at decompress time must live in <artifact_dir>" is not enforced. A dictionary or model left in /app (up to 512 MiB) or written by fit outside artifact_dir is read at compress and decompress without counting toward artifact_bytes, removing the artifact_term penalty the metric is built around.
The graded image can't be rebuilt from the published files
rubric · prebuilt_image_matches_published_build · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LWTZs67] - environment/notebook-data/visible/ — the published visible corpus is three tiny placeholder notebooks (sample/test1.ipynb 555 B: "This is a sample notebook"; corpus1 and corpus2 about 1.3 KB each) plus stray .zst copies. environment/notebook-data/manifest.json describes 195 files totalling 136,111,403 bytes from about 45 source repos, and instruction.md calls it the "full visible notebook corpus". The real corpus can only be in the prebuilt image (task.toml docker_image ...:v5). A third party rebuilding from environment/ gets a corpus with essentially no training data. The verifier also re-runs `fit` on $DATA_ROOT/visible, so scores on a rebuilt image would differ materially.
A worse solution can outscore a better one
rubric · score_ranking_is_monotone · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LWTZs67] - score_from_reward.py notebook-compression branch — a valid run scores 1 - geom_mean_ratio with no lower clamp, while any failure scores 0. That contradicts instruction.md ("hard FAIL ranked below every valid run"). Witness: a valid lossless codec whose artifact is about 150 MB (within the stated 8 GiB cap) has artifact_term about 1.22 and a score of about -0.27, below a submission that crashes (0). An identity-copy codec also scores slightly below 0.No reference solution (solution/ is empty or missing)
static · required_files · solution/
Without an oracle solution there is no proof the task is solvable.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LWTZs67] - tests/hidden_test_set_bundle.zip — the public repo contains all 80 scored notebooks (122,584,118 bytes) plus holdout_metadata.json and manifest.json listing each notebook's source repo path. Anyone, or a model trained on the repository, can reproduce the exact hidden inputs and tune or memorize for them. There is no canary string, and nothing states that the scored bundle is rotated or differs from the published one.
The task's score scale distorts the benchmark average
rubric · score_scale_comparable · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LWTZs67] - score_from_reward.py notebook-compression branch — the score is bounded above by 1 but unbounded below. With the 8 GiB artifact cap and a 122,584,118-byte hidden set, artifact_term can reach about 70, giving a per-trial score near -70. One such valid trial would dominate a model's average across tasks.
The task's time budget is stated inconsistently
rubric · time_budget_consistency · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LWTZs67] - task.toml [agent].timeout_sec = 28800 (8 h) and Dockerfile ENV TASK_BUDGET_SECS=28800, but every agent in job.yaml has override_timeout_sec: 72000 (20 h). harbor_ext timeout.py / modal_managed.py:124 inject TASK_BUDGET_SECS = 72000 into the timer, so the leaderboard ran a 20 h budget while the published task metadata says 8 h. instruction.md states no number at all ("a fixed wall-clock budget").job.yaml runs agents for 20 h; task.toml declares 8 h
static · run_config_timeout_mismatch · job.yaml, task.toml [agent].timeout_sec
A reproduction from task.toml gives agents a different budget than the leaderboard run did.
Evidence
task.toml [agent].timeout_sec = 28800 job.yaml override_timeout_sec: 72000
optimizer-design Anti-cheat checks zero honest solutions 5 critical · 5 major flagged
- Staticpass15 checks, 0 with findings (0 blocking)
- Rubricfail43 criteria, 13 failed by a single reviewer: instruction_test_alignment, instruction_scoring_disclosure, dev_tools_match_verifier, verifier_toolchain_integrity, reward_channel_integrity, verifier_hang_handling, anticheat_false_zero, forbidden_approach_detection, baseline_integrity, score_floor_is_low, score_ranking_is_monotone, score_scale_comparable, hidden_material_public_exposure (2 minor)
Anti-cheat checks zero honest solutions
rubric · anticheat_false_zero · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - tests/test.sh:68-96 (import check) — the AST allowlist is {torch, numpy, np, scipy, math, cmath, functools, itertools, collections, typing, abc, dataclasses, enum, copy, warnings, operator, numbers, random}, while instruction.md says 'only torch, numpy, scipy, and standard library imports allowed' (the starter docstring says 'stdlib imports'). Honest standard-library imports such as 'from __future__ import annotations' (module '__future__'), 'import sys' (e.g. sys.float_info.epsilon), 'import time', 'import weakref', 'import contextlib', 'import heapq' or 'import bisect' fail the check. fail_with_reason then zeroes the whole trial, however good the optimizer is.The agent can make the baseline slower or different
rubric · baseline_integrity · performance
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - environment/workspace/workloads/base.py (BASELINE_STEPS = 10000) is the numerator of every speedup, and the hidden workloads in tests/ import WorkloadConfig from /app/workloads/base.py too. Its only protection is the agent-writable hash manifest (mechanism under forbidden_approach_detection). Raising BASELINE_STEPS (and STEP_BUDGET, which the __post_init__ assert requires to be at least as large) multiplies all 10 speedups without any optimizer improvement, e.g. 10x baseline steps gives a leaderboard score about 10x higher.
The verifier requires things the instruction doesn't state
rubric · instruction_test_alignment · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - tests/test.sh:52-66 (optimizer validation) — this step builds an nn.Linear(10,5) on CPU, takes ONE step and fails the whole trial ('Optimizer did not update parameters' -> fail_with_reason -> reward 0) if the weights are unchanged. instruction.md never says the first step must change parameters. Witness: an honest optimizer with a common LambdaLR-style linear warmup whose scale is computed from step 0 (lr*0/warmup = 0 on the first step), or one that collects gradient statistics for a few steps before updating, would train normally in the frozen loop and score about 1x or more. Here it scores 0. Every central requirement (class, config, frozen loop, all workloads) is graded.The agent can write or keep its own reward
rubric · reward_channel_integrity · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Kept as a task finding: compute_reward.py imports the agent's optimizer module into the same process that writes the reward. Detached-process rewrites are reported once under 'Across the benchmark'.
Evidence
[TrE9dWT] - tests/compute_reward.py:56 imports the agent's custom_optimizer module inside the same Python process that later calls emit_reward (line 163). Module-level or step() code from the agent therefore runs before and during reward writing, and it can replace the emit function or rewrite /logs/verifier/reward.json after it is written (e.g. at interpreter exit). The resulting reward is any value the agent chooses. The only obstacle is the AST import allowlist, which allowed modules bypass (see forbidden_approach_detection). - /logs/verifier is root-writable and verification lasts hours. A process the agent detached into its own session (the harness itself starts the timer with setsid and it survives) could overwrite reward.json after compute_reward finishes. Whether it survives the harness's process-group kills needs a run to confirm.
Doing nothing or submitting the scaffold earns real points
rubric · score_floor_is_low · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - environment/workspace/custom_optimizer.py — submitting the unmodified starter (AdamW+cosine, the baseline algorithm) scores about 1.0 under the leaderboard formula (raw reward = geomean speedup; instruction.md: 'Running it as-is will score ~1.0x'). Even if the generic config misses every target narrowly, partial credit target/final gives roughly 0.95. Doing nothing earns about 1.0, which equals a perfect score on implementation/performance tasks. - A near-no-op optimizer (tiny constant-lr update) passes validation and earns partial credit target/initial-loss on every workload, e.g. 3.41/ln(16384)=0.35 for nano_gpt and 1.0/ln(100)=0.22 for resnet, so roughly 0.3 overall.
The agent's dev tools measure something different from the verifier
rubric · dev_tools_match_verifier · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - environment/workspace/run_visible.py (speedup = min(speedup, 3.0)) — the dev tool caps each workload at 3x, but compute_reward.py:39 is uncapped. An agent choosing between configs giving 3x/3x and 10x/2x on two workloads sees geomean 3.0 vs 2.45 in the dev tool, but the verifier gives 3.0 vs 4.47, so the agent keeps the lower-scoring one.
- run_visible.py (missed target -> speedup = 0.0, 'Some workloads failed — reward would be 0.0') — the verifier gives partial credit target/final_ema (compute_reward.py:40-41) and, in practice, counts zeros as 1.0x. The dev tool reports 0 where the verifier pays roughly 0.9-1.0.
- run_visible.py ('Estimated reward = min(1.0, geo_mean / 3.0)') — the leaderboard score is the raw uncapped geomean (score_from_reward.py optimizer-design branch). The printed 'reward' is on a different scale from the graded one.Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - tests/test.sh:24-45 — the rule 'Cannot modify frozen files' is enforced against /app/.frozen_hashes.json, a file in the agent's writable /app (the agent is root, and chmod 444 does not bind root). If the file is missing, the check only prints WARN and continues. An agent can change train_workload.py (e.g. how target_reached_step is recorded) and refresh or delete the manifest, and grading uses the modified loop for all 10 workloads, giving speedups up to 100x each (leaderboard score about 100). - tests/test.sh:68-96 — the 'no filesystem/network access, self-contained' rule is checked only by matching import statements in the AST. Allowed modules expose sys/os as attributes (warnings.sys and random._os exist), and builtins can import anything, so optimizer code can reach the caller's frames. It can then read workload.name (forbidden name branching) or mutate the WorkloadConfig/loop state (e.g. target_loss) inside the frozen loop. Nothing detects this, and the score rises without limit. - 'Cannot branch on workload names or model class names' has no verifier check at all beyond the above.
The instruction misstates how the task is scored
rubric · instruction_scoring_disclosure · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - instruction.md (Scoring) says 'geometric mean punishes zeros hard', but tests/compute_reward.py:45-49 drops zero speedups from the product while still dividing by the full count, so a zero counts exactly like 1.0x (the mechanism is under score_ranking_is_monotone). A rational agent following the instruction avoids aggressive configs that might diverge on some workloads. Under the real formula, divergence on a workload is neutral and beats any honest miss below 1.0, so the instruction pushes agents toward a lower-scoring strategy. The rest matches: the uncapped baseline_steps/steps and the partial credit target/final loss (verifier uses the EMA val loss and min(.,1)).
A worse solution can outscore a better one
rubric · score_ranking_is_monotone · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - tests/compute_reward.py:45-49 — geometric_mean keeps only positive speedups but divides by len(values), so a workload with speedup 0 (exception, NaN or divergence: compute_speedup returns 0.0 because NaN>0 is false and target/inf is 0) contributes log(1), the same as 1.0x. Witness pair: optimizer A trains every workload and misses one narrowly (0.9 on it, 1.0 elsewhere) and gets 0.9^(1/10)=0.990. Optimizer B diverges to NaN or raises on that workload and gets 1.000. Likewise, deliberately failing on every workload except one with speedup s gives s^(1/10) instead of about 0. Better honest work scores below a crash.
A hang or slow test can zero the whole run
rubric · verifier_hang_handling · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - tests/compute_reward.py:65-101 runs all 10 workloads sequentially with no per-workload or per-step time limit, and writes reward.json only once, at the very end (line 163). If the total run exceeds [verifier].timeout_sec=10800, Harbor kills test.sh before anything is written, so credit already earned on finished workloads is lost and the trial scores 0. Witness: an honest optimizer with costlier steps (e.g. a second-order/preconditioned method about 2x slower per step), which instruction.md does not forbid and which states no verifier time limit, could reach targets well ahead of the baseline in steps and still score 0 if the 10-workload sum passes 3 h. A step() that hangs on one hidden workload's parameter shape likewise erases the other nine. How close real runs come to 3 h needs a run to confirm.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - tests/hidden_workloads/{lstm,enc_dec,mlp_mixer}.py publish the exact hidden architectures, batch sizes, TARGET_LOSS values and data roots.
- environment/prepare_data.py publishes how d7/d8/d9 are built (WikiText-2 chars, Multi30k with seed 42, AG News padded).
- tests/test.sh and the Dockerfile publish the bundle passphrase.
Anyone, or a model trained on the repository, can reproduce the hidden workloads exactly and tune an optimizer (or shape-fingerprinted per-workload settings) to them. There is no canary string or statement that scored bundles are rotated.The task's score scale distorts the benchmark average
rubric · score_scale_comparable · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[TrE9dWT] - extra_references/scripts/score_from_reward.py optimizer-design branch returns raw_reward uncapped, and tests/compute_reward.py:39 has no cap on baseline_steps/target_step (up to 10000/100 = 100x per workload). instruction.md also says 'There is no ceiling'. A genuine 2x geomean trial scores 2.0, twice a perfect score on any implementation or performance task, so one strong trial here can dominate a model's cross-task average.
pcqm4mv2-autoresearch Anti-cheat checks zero honest solutions 2 critical · 3 major flagged
- Staticpass15 checks, 0 with findings (0 blocking)
- Rubricfail43 criteria, 9 failed by a single reviewer: verifier_toolchain_integrity, reward_channel_integrity, oracle_mode_isolation, reward_written_on_every_path, anticheat_false_zero, forbidden_approach_detection, score_floor_is_low, compute_and_size_limits_enforced, hidden_material_public_exposure (1 minor)
Anti-cheat checks zero honest solutions
rubric · anticheat_false_zero · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[mBtxWuD] - `tests/test.sh:55-61`: the GEOMETRY_PATTERNS grep runs over every *.py/*.sh under /app with no comment stripping and includes `\bconformer\b`. The instruction itself lists 'no conformer generation'. An honest train.py comment such as `# 2D only: no conformer generation` matches (checked: grep -cE returns 1), so the whole trial scores 0 instead of roughly 0.9. The same applies to comments naming ETKDG or MMFF as things to avoid. - `tests/compute_reward.py:363-376` (check_parameter_count) requires `--count-params` to equal exactly the number of elements in every tensor in /app/checkpoint, including non-trainable buffers (BatchNorm running_mean/var, num_batches_tracked), EMA copies, and so on. The instruction calls the cap a 'parameter' cap. A GNN with BatchNorm whose predict.py reports `sum(p.numel() for p in model.parameters())` and saves `state_dict()` fails the equality check and scores 0. - `tests/compute_reward.py:420-434` with `tests/inference_trace.py`: reads under the runtime root are allowed only from inputs/ and tmp/, yet HOME, XDG_CACHE_HOME and TORCH_HOME point to other runtime directories. A predict.py using torch.compile writes Triton kernels to ~/.triton/cache and reads them back, which is flagged as a 'suspicious read' and scores 0. Needs a run to confirm.
Doing nothing or submitting the scaffold earns real points
rubric · score_floor_is_low · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[mBtxWuD] - `tests/compute_reward.py:107` (`reward = exp(-raw_mae)`) with `score_from_reward.py` (ml_research = raw reward): the score never approaches 0 for a no-work answer. A stub predict.py returning the train mean (5.558) gets MAE 0.980 on the holdout labels (computed from the bundle), so it scores exp(-0.980) = **0.376**. Running the provided train.py unchanged (an SGD fingerprint baseline) scores higher still. A strong model (MAE about 0.085) scores 0.918, so a constant earns about 40% of the top score.
Stated compute or model-size limits are not enforced
rubric · compute_and_size_limits_enforced · ml-research
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[mBtxWuD] - `tests/inference_trace.py:173-174` (`if not _is_relative_to(path, app_root): continue`): reads outside /app, /tmp and the runtime directory are not checked, and the parameter count looks only at /app/checkpoint. A predict.py that loads a 200M-parameter `/root/model.pt` while /app/checkpoint holds a 1-parameter file with a matching `--count-params` passes the 50M cap check undetected.
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[mBtxWuD] - `tests/test.sh:55`: the only enforcement of the 2D-only rule is a literal-name grep over .py/.sh files. `getattr(AllChem, 'Embed' + 'Molecule')`, or code kept in a non-.py file and exec'd, generates conformers without matching. 3D-derived descriptors can lower MAE, and nothing else (strace, trace) notices.
Some verifier paths end without a valid reward
rubric · reward_written_on_every_path · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[mBtxWuD] - `tests/scoring_core.py:93,134` (load_prediction_frame / mean_absolute_error) are called from `tests/compute_reward.py` evaluate_prediction_file with no try/except. A predict.py that exits 0 but writes a CSV missing the `prediction` column, or one containing NaN or non-numeric predictions, raises in Python. test.sh runs under `set -e`, so it exits nonzero with no reward.json: Harbor records an error instead of 0 (or keeps a stale file; see reward_channel_integrity). The same happens if the holdout bundle fails to unzip (`unzip` fails under set -e).
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[mBtxWuD] - `tests/hidden_test_set_bundle.zip` contains `holdout_inputs.csv` and `holdout_labels.csv` (118,951 graph_ids, SMILES and targets) in plain form, with no canary string and no statement that a rotated bundle is used at evaluation. - `scripts/seed_modal_volume.py:150-160` with `DEFAULT_SPLIT_SEED = 20260314` makes the holdout an exact function of public PCQM4Mv2 (sha256 of seed and scaffold), and graph_id equals the OGB index. Anyone, or any model trained on the repository, can reproduce the exact test labels.
postgres-sqlite-wire-adapter The agent can read the expected answers during its run 5 critical · 6 major flagged
- Staticfail15 checks, 2 with findings (1 blocking)
- Rubricfail43 criteria, 15 failed by a single reviewer: build_and_interface_contract, answer_isolation, time_budget_consistency, verifier_toolchain_integrity, reward_channel_integrity, reward_written_on_every_path, verifier_hang_handling, anticheat_false_zero, forbidden_approach_detection, rebuild_from_source_enforced, correctness_thresholds_justified, false_fail_risk, score_floor_is_low, test_coverage_gaps, hidden_material_public_exposure (3 minor)
The agent can read the expected answers during its run
rubric · answer_isolation · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Analyst checked against the code: environment/Dockerfile:68-77 moves the real PostgreSQL 18 postgres, initdb and pg_ctl binaries to /verifier-data/postgresql18-hidden/bin inside the agent's image and only applies chmod 700; the Dockerfile sets no USER.
Evidence
[LSHG7ag] - environment/Dockerfile:68-76 moves the real PostgreSQL 18.3 server binaries (postgres, initdb, pg_ctl) to /verifier-data/postgresql18-hidden/bin and only applies chmod 700. The Dockerfile has no USER line and /app is root-owned, so the agent runs as root and can read and run them. That gives the agent the reference implementation inside its image: it can generate exact PostgreSQL output for any input, which the Dockerfile comment says is meant to be kept out of the agent's reach. The packaged share and lib files the server needs are still installed. The grading-time wrapping route is under forbidden_approach_detection.
Anti-cheat checks zero honest solutions
rubric · anticheat_false_zero · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - tests/test.sh:60-71: the pattern `/tests/` is matched against every .zig/.zon/.txt/.md/.sh/.json file in the workspace, with no comment stripping. An honest agent that keeps its own test scripts in a tests/ subdirectory hits it, for example a helper script or README that runs `./tests/run_sql.sh`, or a Zig `@import("../tests/...")`. SOURCE_SCAN_OK=0 is then a hard fail, so reward = 0 for a working solution.
- The same scan blocks `/usr/lib/postgresql/18/bin/postgres`, which an agent's exploration notes (.md) may plausibly mention. That also gives a hard 0.
- Neither pattern is disclosed in instruction.md.The verifier builds or loads the work differently from what the instruction says
rubric · build_and_interface_contract · instruction
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - tests/test.sh:75-83 (Step 2) hard-fails with ZIG_PROJECT_OK=0 and reward 0 when src/main.zig is missing. instruction.md only asks for 'a buildable Zig project' built by build.sh, and it invites agents to edit build.sh. An honest agent that renames the root file (e.g. src/server.zig) and updates build.sh builds fine under the stated contract but scores 0. (Low likelihood, since the scaffold uses src/main.zig, but provable from the code.) Everything else matches the instruction: the build command (bash ./build.sh -Doptimize=ReleaseFast), the output location (zig-out/bin/postgres-sqlite, else the first executable in zig-out/bin) and the postgres/initdb/pg_ctl symlinks.
Correct alternative solutions are rejected
rubric · false_fail_risk · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - tests/test.sh:443: the regression parser's TAP regex `^(not ok|ok)\s+(\d+)(?:\s*-\s*(.+?))?\s*$` only matches lines whose marker is '-'. pg_regress.c (test_status_print) prints '+' for tests in parallel groups, and 221 of the 230 tests in parallel_schedule run in parallel groups. Whenever make installcheck exits nonzero (any single failure), passed_count = len(passed) counts at most the 9 serial tests (:477-481). A solution passing 200/230 regression tests is credited with ≤9. That loses ~0.24 of the leaderboard score, and a solution passing only the 9 serial tests outranks one passing all 221 parallel tests. - test.sh:543: the TAP status regex requires exactly '..' between name and result. TAP::Formatter pads with (longest+2-len) dots, so only the longest-named file per directory can match (68 of 254 real files). In any directory with one failure, every unparsed real pass is counted as failed (:565-566). - tests/hidden/postgresql-18-tests.tar.gz contains macOS AppleDouble '._*.pl' files (254 under t/). test.sh:520-521 counts them in dir_total, giving 508 = EXPECTED_TAP. prove never runs them, so in any directory with a nonzero exit they are added as failures. Credit for partly passing directories is at least halved.
Doing nothing or submitting the scaffold earns real points
rubric · score_floor_is_low · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - The unchanged scaffold builds, so no hard-fail fires. Its initdb fails, so regression and compat are skipped, but Step 8 (tests/test.sh:504-590) still runs every TAP directory. Directories whose tests all skip_all because of configure options (src/test/ssl 6, kerberos 2, ldap 4, icu 2, as counted with the doubled ._ files) exit 0 with no 'ok' line matched. Lines 559-562 then credit passed = dir_total. - Server-independent tests (pg_config, pg_test_timing, pg_archivecleanup, 6) also pass, and the TAP-only modules ldap_password_func, ssl_passphrase_callback and xid_wraparound skip as well (12 more). - The stub scores about 20-32/810 ≈ 0.025-0.04. That is not negligible next to realistic scores on this task. Exact count needs a run to confirm.
Correctness thresholds reject valid output or accept wrong output
rubric · correctness_thresholds_justified · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - tests/pg_compat_test.sh:43-53: check_no_error passes whenever psql exits 0. Without ON_ERROR_STOP, psql exits 0 even when the server returns an ERROR, so all 27 check_no_error items pass for a server that rejects every query. - check_error for T8.4 accepts any message containing 'error' (:303). - A server that only completes startup and answers every query with an ErrorResponse therefore earns about 28/72 compat items, ≈ 0.035 of the leaderboard score, for wrong output. - Regression and TAP use upstream exact comparisons and are fine.
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - instruction.md forbids 'Wrapping a real PostgreSQL server'. The only enforcement is the literal-string scan at tests/test.sh:60-71 (the two real-binary paths) and a build.zig-only library check (:97-166). A candidate that copies the real server from /verifier-data during the run to an unscanned location, or builds the path at runtime, and execs it for postgres/initdb/pg_ctl passes every check. No process, binary or ldd check exists. Score ≈ the real PostgreSQL pass rate under this harness (likely most of the 810 items). Source of the binaries: see answer_isolation. - Minor: the required language (Zig) is checked only for Rust/Cargo (:84-91). C sources compiled through build.sh are not detected, though this does not by itself raise the score.
Prebuilt binaries survive the rebuild-from-source step
rubric · rebuild_from_source_enforced · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - tests/test.sh:182 deletes zig-out, then runs the agent-controlled build.sh. Nothing confirms that zig-out/bin/postgres-sqlite was compiled from the scanned Zig sources. build.sh can copy in a prebuilt executable stored anywhere on disk or under an unscanned extension in the workspace (the scan covers only .zig/.zon/.txt/.md/.sh/.json), and test.sh:190-205 grades it. This admits precompiled non-Zig or forbidden binaries, including a renamed real server (see answer_isolation). Score up to near 1.0.
Some verifier paths end without a valid reward
rubric · reward_written_on_every_path · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - tests/test.sh:398: `kill "${WATCHDOG_PID}" 2>/dev/null` runs under `set -euo pipefail` with no `|| true`. The watchdog subshell exits by itself after 'restart failed, giving up' (test.sh:377-378) or after 50 restarts (test.sh:380-382). In either case kill fails with 'No such process', the script exits nonzero, and compute_reward.py never runs. No reward.json is written.
- Witness: a partly working server that crashes during the regression suite and cannot be restarted within 30 s. It loses all credit, including compat items it had already passed (up to 72/810 ≈ 0.09) and every TAP pass, and scores 0 instead of its partial rate. High confidence; needs a run to confirm.
- More generally, the EXIT trap only removes BUILD_ROOT, and no fallback writes a reward on any unexpected command failure.A hang or slow test can zero the whole run
rubric · verifier_hang_handling · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - tests/test.sh's worst case is 900 s (compat, :341) + 1800 s (regression, :394) + 300 s for each of the 63 TAP directories (:528) = 21,600 s, plus configure/make/initdb. task.toml [verifier].timeout_sec is 7200, and the reward is only written at the very end (:626). - Partial solutions often stall in TAP poll_query_until/pg_ctl waits, and PG_TEST_TIMEOUT_DEFAULT=600 (:310) exceeds the 300 s per-directory cap. If about 15-20 of the 63 directories reach their 300 s cap, Harbor stops the verifier before compute_reward.py runs. All partial credit is then lost (score 0 instead of, e.g., 0.1-0.2). Needs a run to confirm how many directories stall for a typical submission.
No reference solution (solution/ is empty or missing)
static · required_files · solution/
Without an oracle solution there is no proof the task is solvable.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - tests/pg_compat_test.sh publishes all 72 compat queries with their exact expected outputs (≈8.9% of the score), with no canary or rotation. A model trained on the repository can hardcode them. - tests/hidden/postgresql-18-tests.tar.gz is the unmodified upstream PostgreSQL 18.3 source (SHA pinned in fetch_hidden_tests.sh), so the 'hidden' regression and TAP expected outputs are fully public. This is inherent to the task design, and nothing mitigates it.
Stated requirements are not graded
rubric · test_coverage_gaps · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - instruction.md requires 'using SQLite as the underlying storage engine'. Nothing in test.sh checks for SQLite use (e.g. a link or symbol check). A pure in-memory Zig engine scores the same. - The 'implement a Zig program' requirement is only checked against Rust/Cargo files (tests/test.sh:75-91), so C sources compiled via build.sh go unnoticed.
The task's time budget is stated inconsistently
rubric · time_budget_consistency · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[LSHG7ag] - task.toml:10 says [agent].timeout_sec = 28800 (8 h), and environment/Dockerfile:8 sets TASK_BUDGET_SECS=28800. Every agent in job.yaml sets override_timeout_sec: 72000 (20 h), and modal_managed.py:124 plus the timer bootstrap inject TASK_BUDGET_SECS=72000. Leaderboard agents therefore got 20 h, while the task's own declared budget is 8 h. The timer agrees with the enforced 20 h.
job.yaml runs agents for 20 h; task.toml declares 8 h
static · run_config_timeout_mismatch · job.yaml, task.toml [agent].timeout_sec
A reproduction from task.toml gives agents a different budget than the leaderboard run did.
Evidence
task.toml [agent].timeout_sec = 28800 job.yaml override_timeout_sec: 72000
revideo-perf-opt The agent can read the expected answers during its run 3 critical · 5 major flagged
- Staticpass15 checks, 0 with findings (0 blocking)
- Rubricfail43 criteria, 13 failed by a single reviewer: answer_isolation, verifier_toolchain_integrity, reward_channel_integrity, forbidden_approach_detection, correctness_thresholds_justified, hidden_workloads_unpredictable, baseline_integrity, timing_scope_and_caching, leaderboard_score_reconstruction, score_floor_is_low, score_scale_comparable, test_coverage_gaps, hidden_material_public_exposure (3 minor)
The agent can read the expected answers during its run
rubric · answer_isolation · environment
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Analyst note: Analyst checked against the code: environment/Dockerfile:111-141 builds /opt/revideo-v044 in the agent's image and only removes write permission; solution/solve.py:20 copies that tree, so the reference solution is the readable baseline code.
Evidence
[6BBAK4P] - environment/Dockerfile:105-130 builds the v0.4.4 tree at /opt/revideo-v044. It is readable, and the instruction does not forbid it (only /tests/ and /baseline/). This tree is both the reference solution (solution/solve.py:20 copies it over /app/revideo) and the exact code the baseline runs (Dockerfile:133 copies it to /baseline/revideo). An agent that copies it into /app/revideo produces output identical to the baseline (SSIM ~1) at about 1.0x speed. The tests/test.sh:34 scan only greps for strings like '/baseline/revideo', so the copy passes. Leaderboard score: 0.5+0.5*1.0 = 1.0 with no optimization work, which is the oracle's own score.
The agent can make the baseline slower or different
rubric · baseline_integrity · performance
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[6BBAK4P] - Dockerfile:133 protects /baseline/revideo only with chmod a-w, which does not stop a root agent, and tests/test.sh itself chmods it writable. There is no hash check or restore. An agent that slows the baseline's renderer code raises baseline/candidate in proportion: a 2x slower baseline doubles the speedup, taking the leaderboard from 0.5+0.5*s to 0.5+0.5*2s. Root needs confirming. - tests/test.sh render order A1,B1,B2,A2: the candidate's code runs immediately before A2. A background CPU load left behind by B2 inflates A2's baseline time and the averaged baseline (for example, A2 +50% gives speedup +25%). No check stops this.
Doing nothing or submitting the scaffold earns real points
rubric · score_floor_is_low · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[6BBAK4P] - The unmodified v0.4.2 tree: the tests/test.sh comment sets the 0.95 threshold specifically so v0.4.2-derived output passes against the v0.4.4 baseline. That gives correctness = 1 and speedup s = t_v044/t_v042 < 1. Leaderboard score = 0.5+0.5*s, e.g. 0.75 for s = 0.5, and never below 0.5, for no work. Needs a run to confirm that unmodified v0.4.2 clears 0.95 on all 8 scenes and finishes within the 600 s phase cap.
Correctness thresholds reject valid output or accept wrong output
rubric · correctness_thresholds_justified · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[6BBAK4P] - tests/test.sh SSIM_THRESHOLD = 0.95 (with ffmpeg ssim 'All', averaged over every frame) against instruction.md: 'near pixel-perfect matches ... Lossy tricks (frame skipping, quality reduction, resolution changes) will fail this gate'. Two examples: - Rendering every second frame and duplicating it: half the frames match exactly, and the rest differ by one frame of slow animation. The average stays well above 0.95 for the graphics scenes. - Encoding at a visibly lower quality or a faster x264 preset: on this synthetic content SSIM is typically 0.95-0.98. Both of these lossy shortcuts would likely clear the bar and pay their speedup in full under 0.5+0.5*speedup. Exact SSIM values need a run to confirm. The code comment admits the bar was loosened to absorb v0.4.2-vs-v0.4.4 drift.
Forbidden approaches go undetected and score
rubric · forbidden_approach_detection · anti-cheat
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[6BBAK4P] - tests/test.sh:34-46: the rule 'Access or reference /baseline/' is enforced only by a literal grep for '/baseline/revideo' in .ts/.js/.json/.py/.sh files under packages/. Code copied from /baseline/revideo during the agent run leaves no such string, and a renderer that builds the path at runtime to load modules from there is also missed. Either way the candidate becomes the baseline: speedup ~1, leaderboard score ~1.0. This is the same payoff as the /opt copy described under answer_isolation, reached through the path the instruction explicitly forbids.
The hidden workloads can be predicted and special-cased
rubric · hidden_workloads_unpredictable · correctness
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[6BBAK4P] - The hidden scenes (tests/hidden-scenes.tar.gz) use only the three media files already in the agent's image (packages/benchmark/public/media/test_5s_720p.mp4 and test_10s_1080p.mp4). Five of the eight hidden scenes decode video. An agent can pre-decode these known files during its run and have the renderer read the stored frames, removing decode cost on 5/8 scenes while output stays identical. The resulting speedup feeds 0.5+0.5*speedup. The size of the gain needs a run to confirm.
The leaderboard formula doesn't match what the verifier emits
rubric · leaderboard_score_reconstruction · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[6BBAK4P] - extra_references/scripts/score_from_reward.py:109-117 (the ssim_threshold < 0.99 branch, which the CLI's default of 0.95 always takes): correctness comes only from correctness_details[*].ssim, and the score uses geometric_mean_speedup. hard_fail_reasons is ignored. compute_reward.py zeroes the reward for 'candidate_render_failed' and 'candidate_missing_scenes', but geometric_mean_speedup is computed only over scenes that succeeded. A candidate whose renderVideo writes a correct MP4 and then throws on the scenes where it is slower than baseline is hard-failed by the verifier (reward 0). The leaderboard instead pays 0.5+0.5*speedup computed over the favorable scenes only. - The function default ssim_threshold=0.99 (line 54) differs from the CLI default of 0.95 (line 221). Under 0.99 the score uses the capped 'reward', and under 0.95 the uncapped geometric_mean_speedup.
The timer measures something other than the candidate's real work
rubric · timing_scope_and_caching · performance
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[6BBAK4P] - tests/test.sh render_phase B1 then B2: the same scenes and inputs are rendered twice. The merge averages t1 and t2 but copies only run 1's MP4 for SSIM. A renderer that stores its first result (on disk or in /tmp) and returns it, or returns quickly, on the identical second call makes t2 ≈ 0. The candidate's average time then halves and the geometric-mean speedup roughly doubles: for example, a true 1.2x becomes ~2.4x, and the leaderboard score goes from 1.1 to 1.7. compute_reward.py only rejects ct <= 0.
Held-out test material is published with the task
rubric · hidden_material_public_exposure · contamination
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[6BBAK4P] - tests/hidden-scenes.tar.gz contains all 8 scored scenes (hidden_dense_grid, hidden_graphics_complex, hidden_multi_video, hidden_rapid_cuts, hidden_text_animation, hidden_video_long, hidden_video_overlay_complex and hidden_video_scaled .tsx, plus macOS ._ files). It sits in the public task directory and is extracted verbatim at verify time. Nothing in the task says the scored bundle is rotated or differs, and there is no canary string. A model trained on the repository could know the exact scored workloads.
The task's score scale distorts the benchmark average
rubric · score_scale_comparable · scoring
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[6BBAK4P] - score_from_reward.py:115 returns the uncapped geometric_mean_speedup, and line 208 scores 0.5+0.5*speedup, so this task's score is unbounded. The 100x cap in compute_reward.py applies only to 'reward', which this branch does not use. The baseline is already the optimized v0.4.4 ('Score ~1.0 means the agent matched', Dockerfile:131), so any real improvement scores above 1: a 3x speedup scores 2.0, and the caching route under timing_scope_and_caching doubles this. One such trial outweighs several tasks' worth of 0-1 scores in a model's average.Stated requirements are not graded
rubric · test_coverage_gaps · verifier
Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.
Evidence
[6BBAK4P] - instruction.md 'must produce valid MP4': the verifier never checks the container format. ffmpeg SSIM and ffprobe accept any decodable file named *.mp4. - Audio: the source media and the baseline output carry AAC audio, but the gate compares only video SSIM and container duration. A candidate that drops or corrupts the audio track would go unnoticed. This may also raise speedup on the 5 video scenes; needs a run to measure. - 'Modify the public API contract' and 'Disable or skip frame rendering' are checked only indirectly through SSIM (see correctness_thresholds_justified).
How tasks were audited
Rubric review: single reviewer per task (pilot). Rubric findings are one reviewer agent's judgement, not a multi-reviewer vote.
Static checks
Deterministic checks on the task files: required files, task.toml limits, answer leakage into the agent image, Docker build context, verifier network installs, grader config consistency, plus the benchmark's own CI checks where it ships them.
Rubric review
A reviewer agent reads every task file in a sandbox (`harbor check`) and judges it against a credibility rubric: hidden requirements, false-fail and false-pass risk, reference-solution validity, answer isolation, reproducibility.
Full description
A reviewer agent reads every task file in a sandbox (`harbor check`) and judges it against a credibility rubric: hidden requirements, false-fail and false-pass risk, reference-solution validity, answer isolation, reproducibility. When several reviewers are configured, a criterion fails only when enough of them agree.
Oracle / no-op validation
The task is executed twice through Harbor: with the reference solution (must score 1) and with an agent that does nothing (must score 0).
Execution probes
Where a finding predicts a false fail, a minimally modified reference solution that embodies the alternative (still correct) implementation is run through the task's own verifier.
Full description
Where a finding predicts a false fail, a minimally modified reference solution that embodies the alternative (still correct) implementation is run through the task's own verifier. Findings reproduced this way are marked Verified by execution.
Want this run on your tasks?
The same audit, on your benchmark or training environments.