Repository navigation
Releases
speedrunpapi 0.7.1
speedrunpapi 0.7.1
This release replaces the analyzer.
There is no 0.7.0 package. A v0.7.0 tag was pushed to the wrong commit by mistake, the publish workflow's version guard refused it, and release tags in this repository are immutable, so the tag stays and the release is 0.7.1.
What was wrong
Versions before 0.7.1 classified Circom, Verilog and INT8 sources by template name and keyword. They did not analyse the constraint system. A circuit whose output was assigned with <-- and never constrained was reported Certified if its main template had a recognised name such as BigAdd, or if the file mentioned BinSum. The hosted service signed those verdicts, and also signed verdicts that a client merely reported.
Those results were not proofs. If you relied on a Certified result from an earlier version, scan again with this one. Every certificate issued before 0.7.1 has been revoked; the revocation feed is at https://api.colony.technology/v1/revocations.
What 0.7.1 does
scan compiles Circom with the real circom compiler and analyses the R1CS it emits for output determinism: do two satisfying witnesses with the same inputs always have the same outputs?
Certified: a derivation shows they do. An independent checker replays it before the verdict is reported.Broken: two witnesses that share every input and differ on an output. Both are re-evaluated against every constraint.Unknown: neither was established. The open signals are listed with the condition under which a constraint would fix them.
The report (--report) carries the derivation or the witnesses and can be checked without the scanner: speedrunpapi verify, or the standard-library Python checker in verifiers/determinism/.
New options: --main "Template(args)" for library files, -l/--include, --assume-binary for inputs a template expects to be bits (the assumption becomes part of the claim), --strict for witness uniqueness, --report, --opt.
Measured
circomlib templates, circom 2.2.3 --O0, Apple M1, Node.js 26, single runs:
| Circuit | Verdict | Constraints | Prove | Replay |
|---|---|---|---|---|
Sha256compression() |
Certified | 202,784 | 228 ms | 155 ms |
Poseidon(5) |
Certified | 1,347 | 1.9 ms | 1.1 ms |
LessThan(252) |
Certified | 256 | 0.8 ms | 0.6 ms |
Num2Bits(254) |
Broken | 255 | ||
Decoder(4) |
Broken | 6 | ||
MontgomeryAdd() |
Broken | 3 |
The Broken rows hold for those templates taken alone with unrestricted inputs; circomlib uses them where the caller excludes the degenerate cases. The 71-case corpus has 46 Certified, 15 Broken and 10 Unknown, and no verdict contradicts the known answer. A fuzzer that compares the engine with brute-force enumeration over small fields ran 150,000 random systems without a wrong Certified or Broken.
What still returns Unknown
Elliptic-curve arithmetic whose uniqueness rests on a number-theoretic fact (Baby Jubjub addition), big-integer arithmetic that depends on range bounds across limbs, alias checks such as Num2Bits_strict, circuits with no outputs, and R1CS with custom gates.
Breaking changes
- Verilog, INT8, ONNX-text and carry-graph inputs return
Unknown. Those classifiers are removed. - Bitcoin Script and RV32IM trace inputs return
Unknown. An audit found that the Script adapter executed nothing (it reportedCertifiedfor scripts that can never complete) and that the trace adapter only replayed a trace against instruction words the trace itself supplied. - Result JSON has a new shape (
schema: colony.determinism/1). Results from earlier versions cannot be verified. - The hosted API signs only
CertifiedorBrokenresults that it re-verified from a submitted R1CS (up to 8 MiB). It no longer signs client-reported verdicts orUnknown. - The GitHub Action no longer requires an API key. It scans locally and fails on
Broken; a key adds a signed certificate.
The hosted-job client (run, solve, optimize, check, ...) and the ONNX checker are unchanged.
speedrunpapi v0.6.3: M01–M14 exact math
Eighteen bounded exact mathematical operators. Nine new funded production M05/M07–M14 original-source results and separate independent verifier. Tested across 300 exact cases, 300 altered-certificate rejections, eighteen hosted profiles and nine production jobs. Each research theorem retains its own declared domain.
speedrunpapi v0.6.2 — Exact shared-input carry counts
Nine bounded exact mathematical operators. M-06 adds ordered carry-frontier masked counting with complete original-domain independent replay. The public source and result bundle reproduces 4 witnesses, least input 9 and six retained carry states from production job c456f437-8769-4452-9b5f-cd195bd3276e. Local npm tarball and Python wheel installed fresh and independently verified the source-bound result. Real card payment and external zkGolf comparator submission remain separate acceptance gates.
ᑕ. speedrunpapi v0.6.1 — R11 exact mathematics
Eight source-bound bounded mathematical operators in the public hosted-job client, with independent local replay. New cases: cyclic inverse fibers, tap-span fiber counts, affine inverse cells, and two-stage addition codes. Four canonical .math inputs and three genuine production mathematical result bundles are available in examples/. Changed source and forged result fields are rejected. npm and PyPI publish from this tag with pinned workflows. These exact finite-domain scopes do not assert complete source-paper integration or external cash settlement.
speedrunpapi v0.6.0
Public universal-job client for Colony verified execution. Free offline circuit scanning remains available. New hosted commands: quote, run, optimize, solve, status, result and independent check. Native ONNX optimization returns the executable candidate and a portable source-bound proof package. The npm tarball and Python wheel include six independent ONNX verification modules and the verify-onnx command. The GitHub source release includes a real production ONNX proof packet with local replay and a CI tampering rejection. npm and PyPI use their respective verified publication workflows. The customer Stripe checkout is a separate deployment path.
speedrunpapi v0.5.1
CLI JSON has a clean default output. Use --references to include DOI research metadata. Signed proof methods and source-bound verification are unchanged.
speedrunpapi v0.5.0
Native Bitcoin Script alternate stack and hash opcodes; RV32IM v2 branch and word-memory trace verification; BN254 square-zero R1CS elimination; source-bound public checker, digest result URLs and paid GitHub Action pilot. Scoped exact claims with source replay and altered-source rejection.
ᑕ. speedrunpapi 0.4.0
Native Bitcoin Script assembly and bytecode deterministic-subset scanning; source-bound RV32IM arithmetic register trace checks for zkVM guests; BN254 coupled full-rank R1CS uniqueness; independent source recheck for all three; public signed receipts and paid GitHub Action pilot. All certificates state their exact scope. Full BitVM and zkVM proof-system verification remains a separate layer.
ᑕ. speedrunpapi 0.3.2
Native iden3/snarkjs binary R1CS v1 scanner. Uniqueness of every wire for fixed public and private inputs is certified only for complete constant-pivot constraint systems. Includes source-bound local re-verification, malformed-file rejection, and independent compiler fixture.
speedrunpapi 0.3.1
Exact Circom AND, LessThan and Mux1 circuit analysis. Browser, API and CLI use the same checked source patterns. Includes standalone Node CLI, Python wheel, reusable GitHub Action and examples.