All tasks
Task · lean-validity

Lean proof validity

Predict Lean 4 proof validity without running Lean

Math & GamesInspired byAxiom

Grading pipeline

  1. 1Collect · snapshotHarbor collects /workspace/outputimmutable submission · digest
    ›
  2. 2Reviewautomatic · trusted verifier6 task-local checks
    ›
  3. 3Preflighttask verifier checks config and databefore GPU provisioning
    ›
  4. 4Launch · readyoffline · 1× H100 80GBbash /submission/serve.shGET /health = 200 · ≤ 300 s
    ›
  5. 5Infer3540 × POST /checkc=64 · ≤ 3600 s
    ›
  6. 6Scoremacro_f1
    ›
  7. 7Harbor resultresult.json · reward.txt

Environments

Entry
Harbor → tests/test.sh → grade.py → frontier_ml.grading.grade
Verifier
1.8 h · 4 CPU · 16 GiB
Agent
4 h · 2 CPU · 8 GiB
Network
public (trusted verifier) · offline (candidate inference)
Env
MODAL_TOKEN_IDMODAL_TOKEN_SECRETMODAL_ENVIRONMENTDAYTONA_API_KEYFML_GRADING_RESOURCESFML_GRADING_CREDENTIALS_SECRETOPENAI_API_KEYOPENROUTER_API_KEYHF_TOKENANTHROPIC_API_KEYFML_REVIEW_API_KEYFML_REVIEW_BASE_URLFML_REVIEW_MODELFML_REVIEW_BACKENDFML_REVIEW_PROVIDERFML_REVIEW_SKIPFML_REVIEW_AWS_REGIONAWS_BEARER_TOKEN_BEDROCKAWS_REGIONCODEX_API_KEY

Verifier config

concurrency
64
inference_timeout_seconds
3600
require_h100
true
expected_samples
3540
batch_budget_seconds
600

Architecture review

A trusted reviewer reads the submission and trajectory and fails it on any of these checks.

  1. learned_model_forward_pass
    Trace the POST /check handler: the boolean valid answer is computed from the output of a learned model's forward pass (a trained neural network or other trained model whose weights are in the submission) applied to the request's lean text. Tokenization, truncation, batching and a fixed decision threshold on the model output are allowed; hand-written rules or regexes must not be the source of the prediction.
  2. no_lean_execution_or_reimplementation
    The server never invokes, embeds, bundles, downloads, or reimplements a Lean elaborator, type checker, kernel or tactic engine: no Lean/Lake/elan binaries, Lean REPL, LeanDojo, Pantograph, Kimina Lean server or similar clients, no subprocess or network calls to such tools, and no hand-written emulation of Lean elaboration or tactics (for example a Python linarith/omega/norm_num/ring decision procedure used to check the proof). Using a language model that was trained on Lean text is allowed. The trusted no_lean scan reports review_leads from byte-string matches: these are not established violations, and passed only describes its filesystem checks. Inspect the artifact contents, dependency provenance and serving code to establish an actual bundled prover or invocation. Incidental text, symbol strings or an 'olean' prefix alone are insufficient.
  3. stateless_per_request
    Each valid answer depends only on that request's lean text and the fixed submitted weights. No cache, index or statistic built from other evaluation requests (for example grouping attempts of the same theorem, voting, or ranking within a batch) influences a prediction. Dynamic batching purely for throughput is allowed.
  4. actual_inference_uses_reviewed_weights
    Trace serve.sh through model loading and the /check handler to establish that the reviewed checkpoint in the submission actually produces the valid answer, with no unused decoy checkpoint or hidden alternate path.
  5. training_data_provenance
    Training code, data manifests, download commands and retained logs establish where the model's training, fine-tuning, calibration and model-selection data came from, consistent with the contract. Fine: proof attempts the candidate generated and labeled itself by running Lean during development; the training splits of public datasets and other public corpora (statement pools such as Lean Workbook, Goedel-Pset and FormalMATH, and public prover-attempt corpora); and the 526 shipped attempts in /task/public/validation.jsonl, which the contract lets the candidate use however it wants for training, fine-tuning, calibration and model selection (operator decision, 2026-09-30). That freedom covers everything the candidate derives from the shipped file itself: new prover attempts it generates on the shipped statements, edits or mutants of the shipped attempts, numeric or variable-renamed variants of the shipped statements and attempts on those variants, all labeled by the candidate's own Lean compiles. Such rows are derivatives of the shipped file, not another copy of miniF2F, and never fail this check, whatever their number. What fails: the held-out set or any other copy of this task's held-out attempts (anything beyond the public folder of the dataset repository pinned in /task/setup.json, inductionlabs/frontier-ml-tasks, folder lean-validity, at any revision); training, fine-tuning, calibrating or selecting on the validation or test split of any public dataset or benchmark other than the shipped file, in particular miniF2F, from which about half the shipped validation statements are drawn: AI-MO/minif2f_test, the test or valid split of cat-searcher/minif2f-lean4 or any other release, mirror, copy or subset of miniF2F statements, and proof attempts or compile labels on miniF2F statements obtained from outside the shipped file (a public or third-party corpus of attempts on miniF2F problems, whether or not the statement also appears in the shipped file; miniF2F statements that are not in the shipped file); or provenance the evidence does not support (weights whose training data cannot be traced, or a declared base_model inconsistent with the training code). Reading a public validation or test split only to remove its statements from the training, calibration or selection data (decontamination) is fine, as long as those rows feed nothing else. Look for validation/test file names, benchmark loaders, split arguments, dataset ids and download commands in the data-generation, training, calibration and checkpoint-selection code and logs. Incidental exposure during the declared base_model's upstream pretraining is not itself disqualifying.
  6. non_specialist_initialization
    The declared base_model/base_revision, initialization code, training logs and the actual checkpoint inventory establish the model's starting weights. Any pretrained base model is allowed as long as it is not a specialist Lean validity model: a checkpoint already trained to predict whether a Lean proof compiles or is correct. What fails: starting from a proof-validity classifier, compile-success predictor, Lean proof critic, verifier or reward model trained to score Lean proof correctness (for example process or outcome reward models released alongside Lean provers), including mirrors, renamed copies, conversions, quantizations, fine-tuned descendants, or adapters or deltas requiring such a backbone. General pretrained language models and Lean provers that generate proofs (DeepSeek-Prover, Goedel-Prover, Kimina-Prover and similar) are allowed as bases, as is training from scratch; adapting an allowed base into a validity classifier during this task is allowed. Using a specialist validity model as a tool during this task (labeling or filtering training attempts) is allowed; only initializing the submitted model's weights from one is prohibited. Trace checkpoint origins and actual initialization; the submitted model's purpose, filename or shared general base architecture alone does not establish forbidden initialization.