Repository navigation
Conversation
…participant CI/CD workflow Signed-off-by: m0at <47344131+m0at@users.noreply.github.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The V2D Challenge submission kit includes
skills/v2d-submit/SKILL.mdso participants can use coding agents to validate, pack, and submit entries across the 23 metric leaderboards. In practice, teams using autonomous or iterative coding models (Claude Code, Codex, Cursor, etc.) can hit an unintended failure mode due to a mismatch between Kaggle's API limits and the written challenge rules:5/day), andsubmit/v2d_submit.pypreviously queriedcompetition_get_submission_limits(slug).num_allowed_nowas a non-blocking warning. Autonomous agents that rely on Kaggle's API response see quota available every day and can submit up to 35 times/week per track before realizing the written rule is 5 submissions per rolling 7-day week (outside the final 3-day unlimited window).v2d_submit.py, an agent followingSKILL.mdcan trigger live Kaggle uploads during debugging instead of stopping at--dry-run.--only, automated scripts can accidentally submit to tracks a team did not intend to enter (or standalonetrack_3_mesh), or use--onlywithout a matching prior receipt.This PR hardens the submission kit and adds a drop-in GitHub Actions CI/CD workflow so participants using coding agents or automated pipelines can validate locally and in CI without risking accidental rule violations.
What This PR Adds
tools/compliance_gate.py,submit/v2d_submit.py,tools/preflight.py):competition_submissions(slug, page_size=20)) and local*.kaggle-receipt.json/.v2d_submission_ledger.jsonrecords over a rolling 7-day window.>= 5submissions have been used in the past 7 days (while automatically permitting the official final 3-day unlimited window2026-11-01T22:00:00Zto2026-11-04T22:00:00Zand blocking post-deadline uploads)..v2d_policy.json) & Atomic Track Bundles:python3 tools/compliance_gate.py init-policy --tracks <track...>(.v2d_policy.json) so scripts/CI cannot upload to unauthorized tracks.--track track_3_meshuploads (since Track 3 requires one combined Parquet with automatic.cd-o.parquetextraction).--retry-receipt <receipt.json>when using--only <METRIC>, verifying that the retried file has the exact same SHA-256 as the sibling metrics that succeeded and that the retried metric is inUPLOAD_FAILEDstate.tools/agent_submission_guard.py,skills/v2d-submit/SKILL.md):CLAUDECODE,CODEX_SANDBOX,CURSOR_TRACE_ID,ANTIGRAVITY_AGENT,AIDER,SWE_AGENT,DEVIN_SESSION,OPENHANDS,V2D_AGENT_MODE) and restricts agent invocations ofv2d_submit.pyto--dry-run,--check-entry, or--poll-receipt.--confirm-human-uploadfor interactive human uploads (or manualworkflow_dispatchin CI).PreToolUsehook (tools/agent_submission_guard.py) that participants can attach to their coding agent to block directkaggle competitions submitor Python SDK upload calls.tools/compliance_gate.py audit):code_commit_urlprovenance (rejecting upstreamnvidia-isaac/video_to_dataor template commit SHAs), non-syntheticcheckpoint_sha256digests, Track 1 kinematic non-degeneracy, and< 0.1 mm(1e-4 m) mesh noise / near-duplicate geometry checks inv2dlb/mesh_quality.py.tools/v2d_compliance/participant_ci_template.yml/.github/workflows/v2d_submission_ci.ymlin kit):pushandpull_requestwithout Kaggle credentials, and isolates live Kaggle uploads behind a manualworkflow_dispatchjob gated by a protected GitHub Environment.Compatibility
eval_script_sha256/eval_code_sha256digests.docs/v2d_challenge/assets/v2d_submission_kit.zipandKIT_MANIFEST.json, verified byte-for-byte againsttools/v2d_compliance/intest_compliance_gate.py.Testing
All 15 unit tests and repository hygiene checks pass.