OpenChainGraph · Explainer Six steps in two parts

Proof coverage and what deferred means

Every workflow in the OpenChainGraph catalog can carry a zkVM receipt that proves its kernel computed the answer it published. This page walks the profile that asks for such a receipt on every deterministic node, the share of the live graph that carries one today, and the flag a node declares while it waits for its proving turn. Every number on this page was read against the repository at commit 2ab9097fcf3c on 5 October 2026, and each panel names the command that re-derives it.

Presenter mode shows one step per screen. Arrow keys move, A toggles autoplay, Esc exits.
Of 669 live nodes, 665 carry a verifying receipt. On 5 October 2026, 4 declared a stated deferral. A deferral is a published, reasoned parking space. The count rises only when a brand-new node lands with its deferral declared, and it never rises for a node that was already proven.
Part one · The claim and the count

From an optional proof to a published coverage figure

Three steps: where a compute proof sits among the verification layers, the profile that asks for one across the deterministic estate, and the split the coverage gate prints today.

1
Step 1 · The three rungs

What the three rungs establish

An artifact carries an execution_hash, and anyone holding the inputs can recompute it: that is tamper evidence (SPEC.md §4). A Data Integrity proof from a named key adds authorship, so a verifier knows which publisher stands behind the bytes (§16). A compute-integrity proof adds the third rung: a succinct zkVM receipt that the kernel computed this output, checkable without re-running anything, optionally without seeing the inputs (§18). The receipt is optional at the base-standard level, exactly like the signature beneath it.

the artifactexecution_hash recomputethe bytes agreeSPEC §4 a named keyvouches for itSPEC §16 areceiptSPEC §18 hash: tamper evidence · key: authorship · receipt: computed as claimed

One recipe binds the three rungs together: the same JCS canonicalization (RFC 8785) feeds the artifact hash, the signature input, and the journal bytes the receipt commits to. The deep dive on this estate, Proving It Ran, follows one real receipt from the kernel that produced it to the pairing check that verifies it.

SPEC.md §4SPEC.md §16SPEC.md §18zkvm-compute-integrity.html
Who asks at this stepagents welcome
Name the three verification rungs an OpenChainGraph artifact can carry, what each one establishes, and which of the three is optional in the base standard.
2
Step 2 · The profile

The profile that asks for a receipt on every deterministic node

An optional proof is a weak promise: a verifier who needs the receipt never knows whether this particular node carries one. SPEC.md §18.6 closes that with a named conformance profile, ocg-p18-deterministic. Under it, every live node whose kernel is small and deterministic (the catalog's gpu:false flag) MUST do one of two things: attach a well-formed receipt whose journal commits exactly the node's own output, or declare compute_proof_ready:"deferred" alongside a stated deferred_reason. A node doing neither fails the profile. Heavy parallel compute (the 15 gpu:true nodes) sits outside the profile, because proving a Monte-Carlo loop in a zkVM guest costs more than the answer is worth; such a node may still attach a receipt voluntarily, and today every one of them does.

the live graph deterministic nodes: 654inside the profile: carry a receipt or declare deferred650 proven · 4 deferred heavy compute: 15outside the profileall 15 carry receipts anyway gpu:false is the profile's determinism and cost boundary (SPEC §18.6)

The flag the profile keys on already had a job: gpu:false marks a kernel that runs as a small deterministic server compute, the same signal the kernel-coverage gate reads. The profile introduces no new taxonomy; it borrows the boundary the catalog publishes and turns it into a proof obligation with an explicit exit.

SPEC.md §18.6 profile ocg-p18-deterministicSPEC.md §18.2 proving is off-band
Who asks at this stepagents welcome
State what the ocg-p18-deterministic profile requires of every live gpu:false node, which nodes fall outside it, and the two states a conforming node can be in.
3
Step 3 · The count

What the graph shows today

Read at commit 2ab9097fcf3c on 5 October 2026: 669 live nodes, 665 of them ZK-proven, meaning each carries a real zkVM receipt over its own kernel output that anyone can verify offline. The deterministic profile covers 654 of the live nodes: 650 proven and 4 deferred, with 0 nodes in neither state. That puts whole-graph coverage at 99 percent, and the figure is derived from chaingraph.json on every build, so it moves only when the graph does. The long-form page that carries the live-updating figure is Proving It Ran.

669 live nodes 650 deterministic nodes with a verifying receipt 4 deferred 15 heavy nodes, receipts attached 665 of 669 proven: no node sits in neither state

Re-derive the split yourself from the published catalog; the gate prints one line and exits green when the profile holds (output read at commit 2ab9097fcf3c on 5 October 2026):

The command behind the numbersread-only
$ node scripts/check-compute-proof-coverage.mjs --summary
§18 compute-proof coverage — gpu:false live: 654 | proven: 650 | deferred: 4 | missing: 0   (gpu:true out-of-scope: 15)
chaingraph.json read at 2ab9097fcf3c, 5 Oct 2026check-compute-proof-coverage.mjs summaryzkvm-compute-integrity.html carries the live figure
Who asks at this stepagents welcome
Run the §18 coverage summary against the current main of PostOakLabs/ainumbers and report the proven, deferred and missing counts for gpu:false live nodes, with today's date.
Part two · Reading the deferred column

How a deferral stays honest

Three steps: the two members a deferral publishes, the four nodes currently in that state, and the ratchet that blocks silent regressions plus the commands that let you check all of it.

4
Step 4 · What deferred means

A deferral is a stated reason on the record

Proving a kernel means running it inside a zkVM guest and sealing a receipt, which happens offline with a dedicated toolchain (SPEC.md §18.2). That work is queued rather than instant, so a deferral is the profile's declared parking state: the node sets compute_proof_ready:"deferred" and publishes a deferred_reason that says what is true about this particular node. The gate reads both members, and a reason that is empty or a placeholder (the literal word deferred, todo, a dash) fails the check, because the state is only meaningful while the reason is real.

mcp_name: find_runway_goal_pathcompute_proof_ready: "deferred"deferred_reason: "integer-only grid search,queued for the proving pipeline" acceptedreason on the record rejected rejectedreason: "todo"placeholder fails the gate the state is only as good as the stated reason beside it
Node (all four deferred today)What it computes, and why it waits
match_invoice_three_waythree-way invoice match over integer arithmetic; shipped 1 Oct 2026 with its deferral declared and entered the proving queue
find_runway_goal_pathbounded grid search for a cash-runway path; shipped 2 Oct 2026 the same way
estimate_ai_token_spendtoken-spend pricing over dated vendor price snapshots; shipped 4 Oct 2026 the same way
recompute_x402_permit2_digestx402 permit digest recomputation; its measured guest cycle count is on record for the proving run to book against

The pattern behind all four is the estate's stated order of operations for a new deterministic node: build it, land it with the deferral and its reason declared, review it beside the standard, then run the proving job. Nothing on the list is blocked by principle; each entry is queue position. The names come from the gate's own listing, so the table re-levels itself whenever a proof lands: run the command in step 6 and the deferred column shrinks in public.

SPEC.md §18.6(b)check-compute-proof-coverage.mjs deferred listingdeferred_reason fields read at 2ab9097fcf3c
Who asks at this stepagents welcome
List every live gpu:false node currently marked compute_proof_ready:"deferred" in chaingraph.json, and for each one quote its deferred_reason in one sentence.
5
Step 5 · The ratchet

The ceiling cannot rise silently

A ceiling that can drift upward silently protects nothing, so the deferred count is held by a ratchet: scripts/compute-proof-baseline.json pins the allowed maximum (4 as of the same 5 October 2026 read), and the gate fails if the live count ever rises above the pin. A pull request that adds a new node may raise the pin by that node alone, in the open, and no other way exists to raise it. Two further checks close the quiet routes back. The provenance discriminator keeps a baseline rewrite from absorbing a regression: a node newly appearing in the deferred set that was already known at the last pin is named as a proof regression and blocks the rewrite. And the whole gate is wired into preflight and deploy CI, so the split is re-checked on the path to production rather than on demand.

deferred deterministic nodes over time 52mid-July peak 018 September 4 today baseline ceiling: 4 on 5 October 2026 new nodes enter the column and the proving queue clears them; endgame: ceiling at zero

The count has already made the full walk once: the pinned ceiling peaked at 52 deferred nodes in mid-July 2026, and the proving queue took it to zero on 18 September 2026. The four today are the October arrivals described in step 4, each a brand-new node landing with its deferral declared. The profile's own endgame, written into SPEC.md §18.6, is a ceiling of zero.

scripts/compute-proof-baseline.jsonSPEC.md §18.6 ratchet + provenance discriminatorpreflight + deploy CI wiring
Who asks at this stepagents welcome
Explain the three controls that keep the §18 deferred count from rising: the pinned ceiling, the provenance discriminator on baseline rewrites, and the CI wiring.
6
Step 6 · Check it yourself

Three commands that re-check the page

Everything this page claims is re-derivable from the public catalog in under a minute. The summary prints the split; the listing names the deferred set; the strict gate checks the profile and its ratchet. All three are read-only over chaingraph.json, which is published at ainumbers.co/chaingraph/chaingraph.json.

Run all threeread-only
$ node scripts/check-compute-proof-coverage.mjs --summary
$ node scripts/check-compute-proof-coverage.mjs --list-deferred
$ node scripts/check-compute-proof-coverage.mjs

A green strict run prints one line: every in-scope node proven, the deferred count at or under the pinned ceiling, and the heavy nodes reported informationally. Where the numbers go next is the proving queue's business; the gate's job is to make sure the graph never quietly stops matching the receipt column. For the receipt side itself, from guest program to pairing check, continue with Proving It Ran, and for the signature layer beneath it, Signatures and key retirement.

scripts/check-compute-proof-coverage.mjsainumbers.co/chaingraph/chaingraph.json
Who asks at this stepagents welcome
Verify against today's main of PostOakLabs/ainumbers that the deferred set is exactly the four nodes named on the proof coverage page, and report any difference.
🔒 All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data — use synthetic or anonymised inputs only.