Skip to content

Why submissions get rejected

Failure modes as symptom → cause → fix, each linked to the step where it is avoided.

Derived from the rules, not from observed submissions

MLPerf Endpoints has not yet completed a submission round under these rules. Every entry below is derived from a stated rejection action in the compliance rules, a checker rule, or a documented tool failure mode — not from failures seen in the wild. Once the first round supplies real data, this page should be rewritten from support threads and reviewer findings, and speculative entries deleted.

The hard stops

These have a failure action of reject in §9.1. There is no patching in place: you correct and resubmit as a new submission (Submission Rules §6.1).

Symptom Cause Fix
point-count fails Fewer than 8 points with a dedicated Offline run, or fewer than 7 otherwise Run more points. Withdrawn points don't count, and there's no way to add a point to a submission — plan a spare
offline-point-present fails Nothing declares offline on a single-turn curve, two points do, elected sits on a point that isn't at C_max, or an agentic curve declares one Keep exactly one declaration, and elect only the point at your declared C_max. An agentic curve has none — step 3
power-descriptor fails No system_power.json for a system, or one with nothing a total can be derived from Author it — step 5
*-concurrency-coverage fails No point in Low, Medium or High Concurrency Recompute boundaries with the checker's regions command (step 3) and run the missing region. Remember the 10% margin is not High Concurrency
ultra-low-concurrency-coverage fails No point at concurrency ≤ 32 Run one in 1–32
system-description-valid or region-computation fails max_supported_concurrency missing (the first), or ≤ 32 (the second). §9.1 calls this Max concurrency declared Declare a C_max > 32 in system_desc.json
accuracy-gate fails Accuracy run missed the benchmark quality target No tolerance exists. Fix the configuration and re-run — and check whether an approximation under model equivalence pushed you under
agentic-accuracy-inline / agentic-accuracy-swebench / agentic-osl-range fails An agentic model missed its inline accuracy or output-length range at a point, or its mean SWE-bench score across the four regions is too low No tolerance. Fix the configuration and re-run — targets
accuracy-present / accuracy-coverage fails No accuracy results in one of the four mandatory regions, or none at the Offline point Run the missing validation — one at each mandatory region point and one at Offline, same stack as performance
shared-path-resolution fails shared_src / shared_docs do not resolve under the submission root Fix the pointers in every point.yaml — step 5
seed-set-consistency / seed-set-membership fails Points record different seed sets, or a set MLCommons never published Bind one published set and record it at every point
Required files missing A point lacks point.yaml, system_desc.json or result_summary.json Step 5. The reference client doesn't write them; mlperf-sysinfo can capture system_desc.json
load-pattern fails A point other than a dedicated Offline run used max_throughput or poisson. This rejects the point Only the fixed-concurrency pattern is valid there. Re-run, or declare offline: dedicated if it really is your Offline run
approved-drafter / drafter-approval-lead-time fails A point used speculative decoding with a drafter not on the approved list, or approved too recently These reject the points. Approved heads exist for the agentic benchmarks only, and the checker's list is still empty, so for now re-run without speculation

Flagged by the rules, but they fail the local check

§9.1 only flags these, but the checker reports them as errors, and submissions create stops on any error. Fix them before you submit.

Symptom Cause Fix
min-query-count fails Fewer completed queries than the minimum Re-run with a longer issue window
streaming-config fails point.yaml records stream_all_chunks: false Re-run with it true. The rules now allow either value, but the checker still requires true
benchmark-type-consistency fails Some points use agentic_inference and others don't Use one load pattern for the whole curve. Until you do, it's checked as single-turn
config-consistency-model fails Points declare different model_name values in point.yaml One curve, one model. Fix the name, spelled as in Benchmarks and models
concurrency-in-range fails A point sits outside every valid region Recompute boundaries — remember C_min is derived from your own lowest point
warmup-present fails Warmup declaration missing Declare the warmup block in point.yaml
tps-utilization fails Value is not system_tps / max(system_tps) over your own curve Recompute after every point has run
system-description-consistency fails Points describe different systems One curve, one system. Freeze the stack before the first run
config-consistency-dataset fails Points used different datasets Re-run the odd ones out
metric-consistency-* fails A stored system_tps, tps_per_user or system_tps_per_kw disagrees with the derived value Don't hand-edit result files

Warnings, where objections come from

These don't stop the checker, but reviewers see them and Weeks 1–3 is when they act.

Symptom Cause Fix
point-duration warns A point ran under its region's minimum steady-state duration Re-run at 600 s (Ultra Low) or 1,200 s
offline-ordering warns Offline system_tps under 0.98× the C_max point's, or Offline concurrency under C_max Re-run the Offline point so it saturates the system, or elect C_max instead
power-estimated warns A component group in system_power.json has no count or TDP Fill it in from a public spec sheet, or accept the "MLC Estimated Power" tag
region-placement warns Declared region disagrees with the computed one Correct the declared value
warmup-salt warns Warmup salt is enabled Expected if warmup used the performance dataset — but be ready to explain it

Tooling failures before you even submit

Symptom Cause Fix
"missing required file(s): performance/result_summary.json" Flat run folder with the summary at top level Use the layout the reference client writes. Flat layouts are rejected
Build fails naming a run Builder cannot tell if the run is accuracy or performance Supply config.yaml, or set dataset_type to exactly Accuracy or Performance. Accuracy + Performance describes the dataset, not the run
submissions update --run-ids rejected The list would add a run Adding points after submission was removed. The list may only shrink
Authentication error on every command Token missing or wrongly scoped Scope the PRISM key to MLPerf Endpoints

Rejections that come from judgement, not checks

Reviewers look for what automation cannot see: implausible curve shapes, suspiciously uniform TTFT, fake first tokens, padded token counts, contaminated warmup, Offline reordering across passes, and system descriptions that don't match what ran. The full list is §9.2 of the rules, and each concern becomes one of the objection types in Submission Rules §6.8, not a checker rule. Power figures without a public, verifiable source (Methodology), the wrong division and the wrong availability status are raised the same way.

Division and availability objections usually mean reclassification

The committee may let you reclassify (Available to Preview, or to a different division) rather than withdraw (Submission Rules §6.8). That's the usual outcome.

The rejection nobody plans for

Not responding

At 10 business days without a response to a filed objection, your submission is withdrawn (Submission Rules §6.3). No rule was broken, no metric was wrong. This is the cheapest failure to avoid and it needs exactly one thing: a named person who is watching the review thread for six weeks. See After you submit.

The policy repository wins

This page summarises policy in submitter language. It does not restate it. Where this page and mlcommons/endpoints_policies disagree, the policy repository is correct and this page is a bug. Please report it.

Last verified against: mlcommons/endpoints_policies@v1.0_rules_dev (d2d9da6) and mlcommons/endpoints-submission-cli@main (a42a056, v1.1.0.0), 2026-10-02.