Submission check
Validate a predictions file against the submission contract before you send it. Nothing here is scored.
The submission contract — columns, declaration block, sealed sets
One CSV. A declaration block, then one row per case for every partition of the sealed set you were served. The columns are generated from that set’s own published class list, so they cannot drift from the set you are predicting on.
- # generation: …
- # set_hash: …
- # code_fingerprint: …
- # seed: …
- # device: …
The seed and the code fingerprint are not paperwork: a result nobody can re-run is not a result. `generation` and `set_hash` say which sealed set you were served, and that hash is the one thing on this page checked against a value we have published.
- case_id32 lowercase hex, unique
- partitionranked | anchor
- p_basophilfloat in [0, 1], 6 dp
- p_eosinophilfloat in [0, 1], 6 dp
- p_erythroblastfloat in [0, 1], 6 dp
- p_immature_granulocytefloat in [0, 1], 6 dp
- p_lymphocytefloat in [0, 1], 6 dp
- p_monocytefloat in [0, 1], 6 dp
- p_neutrophilfloat in [0, 1], 6 dp
- p_plateletfloat in [0, 1], 6 dp
Generated from gen2’s published class list, in its published order. Every row’s probabilities must sum to 1 within 0.000001.
| generation | set_hash | cases | partitions | status |
|---|---|---|---|---|
| gen1 | 641ab45baeaf… | 1,400 | ranked 1,000 · anchor 400 | retired 2026-07-22, published in full |
| gen2 | ad30d214daa2… | 1,201 | ranked 801 · anchor 400 | accepting submissions until 2026-09-20 |
| public | 00fb7b7e7345… | 1,000 | arm 1,000 | control arm, published in full by design |
Read from plan_d/results/heldout/manifests/*.seal.json at build time. A seal publishes the set’s hash, its size and its class list. It does not publish the case identifiers, and that is why your browser cannot tell you whether your ids are the right ones.
What the specification says, quoted
A model enters the standard through an adapter exposing exactly: ``` fit(x_train, y_train, x_val, y_val, n_classes) -> fitted predict_proba(x) -> (n, k) row-stochastic describe() -> identity and configuration ``` The scorer knows nothing else about the model. This is what allows a competitor's model, a partner's model and the operator's own model to be scored on identical terms, with no adapter holding privileged access to anything.
For private evaluation, the model is executed against sealed data by the operator, or in a sealed environment with logged I/O. The submitter never receives the test cases. Model weights need not be disclosed; the interface must be.
One record per (task, model), carrying: task and model identity, spec version, code fingerprint, seed, device, split sizes, class count, training cap status, split origin, runtime, per-dimension raw measurements and scores, the composite index with its coverage, and any error.
Verbatim from plan_d/docs/MEDEVAL-1-SPEC.md. The whole document is on Specifications.