[
  {
    "section": "Before engaging anyone",
    "items": [
      "A written specification exists: public and private inputs, encodings, field and integer ranges, and explicit assumptions. If it does not, the first deliverable is the specification.",
      "The target is chosen by consequence: a range check, hash gadget, instruction chip or verifier whose failure would matter, not the easiest component.",
      "Automatic tools have already run (Circomspect, Picus or CIVER, Kani or CBMC on the prover code) so proof effort goes to what they cannot answer."
    ]
  },
  {
    "section": "Theorems to demand",
    "items": [
      "Soundness stated over the specification's domain, quantifying over every satisfying witness, not the honest witness generator.",
      "Completeness, or a written reason it is out of scope and a test suite covering the honest path.",
      "For multi-table or zkVM systems, a whole-system statement (Clean Channels, sp1-lean style), not only per-chip theorems.",
      "For proof systems, which components are covered (sum-check, FRI, Fiat-Shamir) and at what security level."
    ]
  },
  {
    "section": "Trusted computing base",
    "items": [
      "The prover and version pinned (Lean toolchain, Mathlib commit); axioms listed; no `native_decide` or an explicit justification.",
      "The extraction or translation step named (Halva synthesis hook, LLZK, hax, Aeneas) and whether it is verified or trusted.",
      "A mapping from the verified model to the deployed constraints and verifier code, with the compiler, codegen and integration gaps listed."
    ]
  },
  {
    "section": "Handover",
    "items": [
      "Proof sources in a repository with a single command that rechecks them in CI, and CI actually running it.",
      "A list of unproved obligations, sorries and trusted lemmas with owners and dates.",
      "A maintenance plan: what happens to the proofs when the circuit or specification changes."
    ]
  },
  {
    "section": "Outside the proof",
    "items": [
      "An audit plan for the protocol layer, verifier integration, on-chain contract and deployment, since proofs cover none of these.",
      "Constant-time and side-channel review for any implementation-level work; functional correctness does not imply it.",
      "A reading of the theorem statements by someone who did not write them, specifically looking for assumptions that exclude real inputs (the SP1 JALR pattern)."
    ]
  }
]