[PR #1933] fix(mlperf-edu): stop silently bypassing anti-cheat when mlperf CLI is missing #34657

Open
opened 2026-07-14 19:27:47 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/harvard-edge/cs249r_book/pull/1933
Author: @Shashank-Tripathi-07
Created: 7/7/2026
Status: 🔄 Open

Base: devHead: fix/grader-anticheat-silent-bypass


📝 Commits (1)

  • d1f0c16 fix(mlperf-edu): stop silently bypassing anti-cheat when mlperf CLI is missing

📊 Changes

1 file changed (+3 additions, -3 deletions)

View changed files

📝 mlperf-edu/scripts/autograder/grade_all.py (+3 -3)

📄 Description

Summary

  • GraderPipeline._process_zip() runs mlperf verify as the only anti-cheat check. If the mlperf CLI isn't on PATH (the common case for a bare grading checkout that hasn't pip install -e'd the package), the FileNotFoundError was caught and silently passed, and the pipeline fell straight through to parsing the submission's self-reported JSON metrics with "Cheating": "NO" unconditionally.
  • Concrete impact: a student can hand-edit their submission JSON to claim any accuracy/throughput they want, and it gets graded as VALIDATED with no verification at all.

Test plan

  • Confirmed mlperf is not on PATH in a clean grading environment (where mlperf fails).
  • Built a forged submission zip (achieved_accuracy: 0.99, throughput_qps: 99999) and ran the real _process_zip() against it before the fix: returned {'Status': 'VALIDATED', 'Score': 0.99, 'Cheating': 'NO'}.
  • After the fix, the same forged zip returns {'Status': 'VERIFY_UNAVAILABLE', 'Score': 0.0, 'Cheating': 'UNVERIFIED'} and logs the failure instead of silently grading it.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/harvard-edge/cs249r_book/pull/1933 **Author:** [@Shashank-Tripathi-07](https://github.com/Shashank-Tripathi-07) **Created:** 7/7/2026 **Status:** 🔄 Open **Base:** `dev` ← **Head:** `fix/grader-anticheat-silent-bypass` --- ### 📝 Commits (1) - [`d1f0c16`](https://github.com/harvard-edge/cs249r_book/commit/d1f0c1685c1a9aff3f27dfdbd6cebdf9a26f6e64) fix(mlperf-edu): stop silently bypassing anti-cheat when mlperf CLI is missing ### 📊 Changes **1 file changed** (+3 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `mlperf-edu/scripts/autograder/grade_all.py` (+3 -3) </details> ### 📄 Description ## Summary - `GraderPipeline._process_zip()` runs `mlperf verify` as the only anti-cheat check. If the `mlperf` CLI isn't on PATH (the common case for a bare grading checkout that hasn't `pip install -e`'d the package), the `FileNotFoundError` was caught and silently `pass`ed, and the pipeline fell straight through to parsing the submission's self-reported JSON metrics with `"Cheating": "NO"` unconditionally. - Concrete impact: a student can hand-edit their submission JSON to claim any accuracy/throughput they want, and it gets graded as `VALIDATED` with no verification at all. ## Test plan - [x] Confirmed `mlperf` is not on PATH in a clean grading environment (`where mlperf` fails). - [x] Built a forged submission zip (`achieved_accuracy: 0.99`, `throughput_qps: 99999`) and ran the real `_process_zip()` against it before the fix: returned `{'Status': 'VALIDATED', 'Score': 0.99, 'Cheating': 'NO'}`. - [x] After the fix, the same forged zip returns `{'Status': 'VERIFY_UNAVAILABLE', 'Score': 0.0, 'Cheating': 'UNVERIFIED'}` and logs the failure instead of silently grading it. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-07-14 19:27:47 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/cs249r_book#34657