Skip to content

fix(ffmpeg): preserve bounded verifier failure stages in public results - #58

Open
loopx-agent wants to merge 1 commit into
ByteDance-Seed:mainfrom
loopx-agent:codex/ffmpeg-feedback-boundary-20261107
Open

loopx-agent wants to merge 1 commit into
ByteDance-Seed:mainfrom
loopx-agent:codex/ffmpeg-feedback-boundary-20261107

Conversation

@loopx-agent

Copy link
Copy Markdown

What and why

Fixes #57. FFmpeg's public result currently makes a pre-build source-policy rejection indistinguishable from a failed build or pixel-correctness failure. Record the failure stage in the producing verifier branch and read it from the structured reward when grading. The existing failed overall-score detail and summary gain a fixed, bounded explanation; raw reasons, paths, exceptions and workload details are not exposed.

Numeric scoring, validity, test counts, source checks, thresholds, workloads and rescaling are unchanged. Unknown/missing/malformed diagnostic evidence preserves the previous feedback. Positive results are unchanged. This does not fix the broad scanner's false positives, log-based score injection, root build isolation, or the old eval script's richer category hints.

Checklist for task changes

  • Task version bumped to 1.0.1 for the feedback change.
  • NOTES.md records the feedback-only effect and validation; unresolved known issues remain explicit.
  • Same submissions, same host, interleaved old/new judges; timed scaffold run twice per image.
  • No new blobs.

Old vs new judge

Old: published amd64 seededge/edgebench.judge.ffmpeg_swscale_reimplementation:e938bf6f485e, digest sha256:711b595fe8a28783b6450afd900a2d4a52fa0c409efdb78e94deed012c0ab9f6.
New: an image derived from that immutable digest, replacing exactly grade.py, run.sh, tests/compute_reward.py and tests/test.sh at their Dockerfile destinations. Baseline and toolchains are the same image layers. Each isolated container used 4 CPUs, 8 GiB, no network and the real /judge/run.sh entrypoint. This is an incremental source-image validation, not a clean rebuild of the toolchains.

Submission Old raw score New raw score New diagnostic
Empty archive 0 0 Build failed / required library absent
Research JSON rejected by the existing scan 0 0 Source policy failed before compilation
Makefile with failing release target 0 0 Build failed
Library whose context constructor returns null 0 0 Correctness failed; performance not run
Original Rust scaffold, repeat 1 0.364605 0.371320 Unchanged passing result
Original Rust scaffold, repeat 2 0.371796 0.360566 Unchanged passing result

All zero-score samples stay valid with one failed test. Both scaffold repetitions stay valid with one passed test and 30/30 correctness. The speed ranges overlap; these samples do not establish statistical performance equivalence or solver improvement. No measured speedup is claimed.

The original scaffold is committed under environment/workspace/scaffold/rust; synthetic negatives need no historical solver artifacts. The source-policy sample is only a diagnostic note containing a verifier-related term; scanner rules are deliberately unchanged.

Validation: uv run --group dev pytest -q tests/ — 36 passed, 1 skipped. The new 17 cases exercise the real reward CLI → shell shim → task grader → public result parser, including absent/unknown/contradictory evidence, positive-score parity and build-output spoofing of diagnostic stage. Independent review also reran those 17 cases. Shell syntax checks pass for the two touched shell scripts.

Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FFmpeg: public result hides whether failure occurred before correctness checks

2 participants