Skip to content
Back to skills

Pre Submission Gate

ASecurity

Decide, without uploading anything, whether one competition submission file may go to the host for upload: it must be the exact file recorded in an experiment note that used the brief's metric, folds and data version, before the deadline and under the daily limit.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 26, 2026
ai-agentspythongobash

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 26, 2026

npx -y skills add alisonjieli-png/loop-engine --skill pre-submission-gate --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pre Submission Gate?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pre Submission Gate
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alisonjieli-png-pre-submission-gate/badge)](https://www.skillsdirectory.com/skills/alisonjieli-png-pre-submission-gate)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pre-submission-gate
description: "Decide, without uploading anything, whether one competition submission file may go to the host for upload: it must be the exact file recorded in an experiment note that used the brief's metric, folds and data version, before the deadline and under the daily limit."
license: MIT
compatibility: "Python 3.10 or later, standard library only. Needs .baltor/competition/brief.json and the experiment notes written by the competition plugin."
metadata:
  version: "0.1.0"
---

# Pre-submission gate

## When to use it

Use it right before you ask the host to upload a competition submission.
The gate only decides. It never uploads, and you never upload either: no
competition client, no upload command, no network command.

## First action

Find the experiment id whose note recorded this submission file, then run
the gate from the workspace root. The script is in this skill's `scripts/`
folder; in the plugin placement the command is:

```bash
python3 -I -B .baltor/plugins/competition-plugin/skills/pre-submission-gate/scripts/submission_gate.py --experiment EXPERIMENT_ID --submission SUBMISSION_PATH
```

## Steps

1. Replace EXPERIMENT_ID and SUBMISSION_PATH with the real values. The path
   is relative to the workspace root.
2. Run the command once.
3. Exit 0 means `ready_for_host_upload`. Report the decision, the experiment
   id and `submission_sha256`, and ask the host to upload that exact file.
4. Exit 1 means `hold`. Report each check whose `passed` is false, with its
   `detail`.
5. Exit 2 means the input was refused. Report `error` and `detail`.

## Checks

| Check | What it needs |
|---|---|
| experiment_recorded | a note for the experiment id |
| metric_matches_brief | the note used the brief's metric |
| folds_match_brief | one score per brief fold |
| data_version_current | the brief's data version |
| submission_recorded_in_note | the note was written with the submission file |
| submission_unchanged | same SHA-256 as recorded in the note |
| deadline_not_passed | now is before the deadline |
| daily_limit_not_reached | ready decisions today under the limit |

## Done when

The gate printed one decision and you reported it with the SHA-256. The gate
log keeps every decision.

## Stop and report when

- The decision is `hold`. Do not edit the file, the notes or the brief to
  pass a check.
- Exit 2, or the brief is missing.
- Someone asks you to upload. Only the host uploads.

## Known-wrong example

The submission file was written again after its note, with another seed.
Its SHA-256 no longer equals the one in the note, so `submission_unchanged`
fails and the gate holds. The fix is a new experiment note for the new file,
not an edit of the old note.

Files in this skill

  • SKILL.md2.7 KB
  • scripts/submission_gate.py12 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.