Requested after v0.20.0 shipped the stock guest and the acceleration stayed off. This is what changing that would cost, and what it would buy.
What Core is
Stock plus exactly two levers:
| lever |
fidelity class |
what it means |
0013 liftx hint |
advice-and-verify |
Core's own arithmetic still decides; the hint is checked with libsecp's fe_sqr against y² = x³+7 |
0012 field backend |
substitution (narrow) |
one primitive replaced at a backend interface libsecp already parameterises; every algorithm above it untouched |
⇒ The precedent already exists. patches/0002 (SHA-256 → risc0 accelerator) is also a narrow substitution and is already shipped in the stock guest. Core is not a new category of claim — it is the same decision, taken once more, at the field layer instead of the hash layer.
What it buys
|
cards to hold tip |
| stock (shipping today) |
~29 |
| Core |
10 |
Measured on two L40S, block 962,000, real proving: chunk work 4,029 card-seconds, straggler 1.295, aggregate 473 s.
Evidence already in hand
The work
- Decide the narrow substitution is acceptable as canonical. This is the only judgement call; everything else is mechanical.
- Arm the levers in the canonical build path —
provision-vps.sh / reproduce/Dockerfile. Today they default off and nothing turns them on.
- Ship Core's packing constants as the defaults —
417798 / 462435 / 2 / 41387. Worth straggler 1.311 → 1.210 on its own, and they are per-build-mode, so stock's defaults are wrong for Core.
- New
METHOD_ID → scripts/rebaseline-id.sh, then every doc that states the id.
- Regenerate the SNARK fixtures. A proof carries its guest id; they cannot be re-pointed, only re-proved. ~2 hours, procedure in
prover/testdata/snark/README.md.
- CI green, then cut v0.21.0 — same flow as v0.20.0.
- Cutover: verifier release, wasm deploy, coordinator swap, board reset. Every trap from 2026-09-06 now documented, including the spine file served independently of the DB, and setting the worker identity BEFORE starting workers.
- Re-prove the board. Today's rebuild ran 0 → ~1,600 in about 90 minutes on two L40S — and at Core's speed it would be faster.
Cost
Roughly a day, most of it waiting on CI and re-proving. Every proof published under 3867611d is invalidated — including the ones being produced right now.
The honest counter-argument
Doing it twice in two days is the cost, not the work. Every re-baseline invalidates the board, and a project whose pitch is "check it yourself" spends credibility each time the thing to check is replaced. If Core ships, it should ship once, deliberately, with the fidelity decision written down — not as a follow-up patch to a release that just landed.
⚠ Also unresolved: Ghost's calibration is measured but not shipped (#209), and the COST_* defaults are per-build-mode. Whatever ships needs its own constants, or the packer optimises against work that is not there.
Requested after v0.20.0 shipped the stock guest and the acceleration stayed off. This is what changing that would cost, and what it would buy.
What Core is
Stock plus exactly two levers:
0013liftx hintfe_sqragainsty² = x³+70012field backend⇒ The precedent already exists.
patches/0002(SHA-256 → risc0 accelerator) is also a narrow substitution and is already shipped in the stock guest. Core is not a new category of claim — it is the same decision, taken once more, at the field layer instead of the hash layer.What it buys
Measured on two L40S, block 962,000, real proving: chunk work 4,029 card-seconds, straggler 1.295, aggregate 473 s.
Evidence already in hand
4fb3e3c5…4656d,all_valid=1,binds=8006. The consensus output is unchanged; only how the arithmetic is computed differs.scripts/field-backend-tests.sh— 3 gates, 9 mutation controls, two of which are caught ONLY by the mod-p harness because libsecp's own suite passes two broken lazy backends.VerifyScript(Native differential + memory-safety harness: run the guest's Core code without a zkVM #222).The work
provision-vps.sh/reproduce/Dockerfile. Today they default off and nothing turns them on.417798 / 462435 / 2 / 41387. Worth straggler 1.311 → 1.210 on its own, and they are per-build-mode, so stock's defaults are wrong for Core.METHOD_ID→scripts/rebaseline-id.sh, then every doc that states the id.prover/testdata/snark/README.md.Cost
Roughly a day, most of it waiting on CI and re-proving. Every proof published under
3867611dis invalidated — including the ones being produced right now.The honest counter-argument
Doing it twice in two days is the cost, not the work. Every re-baseline invalidates the board, and a project whose pitch is "check it yourself" spends credibility each time the thing to check is replaced. If Core ships, it should ship once, deliberately, with the fidelity decision written down — not as a follow-up patch to a release that just landed.
⚠ Also unresolved: Ghost's calibration is measured but not shipped (#209), and the
COST_*defaults are per-build-mode. Whatever ships needs its own constants, or the packer optimises against work that is not there.