Claim audit

The recap asked for this before another specification. Each claim is tested against the source repository and this live kernel. Live fields are measurements, not restated slogans.

C-001 · Mempool pressure enters the solver

partial

P_M = min(|M|/500, 1) is an input to StationarySolver.

Prediction
Injecting transactions raises P_M and changes the residual of the next block.
Inside → outside
The node reads mempool.size, normalizes by 500, and passes it as a coupling.
Outside → inside
External transactions (faucet, wallet, simulated actors) increase |M| before the next solve.
Closure
Network → mempool → pressure → solve → block → (fees drain mempool) → next pressure.

If ablating λ_mempool leaves residual unchanged under load, the coupling is decorative.

C-002 · Stationarity ≠ fork choice ≠ finality

survived

Three independent mechanisms.

Prediction
A block can be stationary yet unfinalized; fork-choice uses cumulative residual; finality uses 2/3 stake.
Inside → outside
Solver admits a candidate; BFT votes separately; no code path equates the three.
Outside → inside
Explorer shows residual, cumulative residual, and finalized height as distinct fields.
Closure
Finality votes are recorded after commit and do not rewrite the residual.

If finality required stationarity or vice versa, the separation would be false.

C-003 · VerifyStationaryEvidence is an explicit protocol operation

survived

External submission accepted claimed residual without rerunning the solver.

Prediction
Every accepted block is independently recomputed: continuity, merkle, residual, threshold, signatures.
Inside → outside
verifyStationaryEvidence() is called on every compose, not only on gossip.
Outside → inside
The Verify body re-runs the same function on the tip without access to miner search.
Closure
A failed check marks verified=false; it does not silently become canonical truth.

The original TS POST /blocks/submit path still exists in the source repo — territory, not this node.

C-004 · Territory residual saturates; canonical residual stationarizes

territory

Rust joint_residual uses raw u64 hash minus difficulty, almost never < 1e-7.

Prediction
Faithful territory residual remains huge; dimensionless canonical residual can fall below threshold.
Inside → outside
Both quantities are computed from the same header. Consensus uses canonical R.
Outside → inside
Every block header publishes both residuals. Experiments can plot them independently.
Closure
This is a rebuild decision, not a claim that the old solver already worked.

Calling the old residual 'solved' would falsify the audit.

C-005 · Committed state ⊂ operational state

survived

SMT commits accounts, UTXOs, contract storage — not validators, DEX, mempool, peers.

Prediction
stateRoot changes when balances, pool reserves, the BTC tip, the ETH tip, or WASM storage change. Those inputs ride in the block. A peer disconnect does not.
Inside → outside
stateRoot merkle-izes account leaves, pool reserves, the BTC tip, the ETH tip, and WASM storage. The block carries the evidence a second body needs to reach that root. Peers stay outside it.
Outside → inside
Wholes panel lists committed vs operational vs observed vs whole.
Closure
A light node can prove an account or a pool reserve against stateRoot without the peer table.

If a peer disconnect changed the root, or a swap that was included did not, the commitment would be wrong.

C-006 · Mobile / light body verifies without rediscovering

survived

Expensive solve, cheap re-verify.

Prediction
Recomputing residual from (header, txs, pressure) matches claimed R without nonce search.
Inside → outside
Discovery iterates nonce. Verification evaluates once.
Outside → inside
The Verify page, Mobile page, and Android client run the cheap path only.
Closure
Agreement is a measurement on the tested path, not a proof of every transition.

If verification required the same iteration budget, the split would be false.

C-007 · ZK does not yet prove the canonical transition

open

Groth16/RISC Zero bind residual/threshold/block hash — not Ω_t → Ω_{t+1}.

Prediction
No block on this node carries a Groth16 proof of the full transition.
Inside → outside
successor is the transition. The stationarity relation on the header is not a Groth16 of that function, and it is not a stand-in for it.
Outside → inside
Research page states the limitation in the same words as the source LIMITATIONS.md.
Closure
We do not advertise a proof we cannot verify.

Shipping a fake 'valid: true' badge would falsify this claim.

C-008 · Reward couples to residual

survived

Reward = base · min(1/(R+1e-6), 1), with coinomics quality.

Prediction
Lower residual yields higher coinbase, saturating at the base reward.
Inside → outside
composeBlock computes quality from canonical R.
Outside → inside
Block pages show coinbase next to residual. Library shows the coinomics curve.
Closure
Residual participates in acceptance, reward, and (via history) fork-choice.

A constant coinbase would falsify the coupling.

C-009 · Inside → outside without outside → inside is not an organism

partial

Bidirectional model is the claim to test, not a decoration.

Prediction
Each organ has at least one traced arrow in both directions, or is marked one-way.
Inside → outside
Solver emits blocks. Wallet emits signed txs.
Outside → inside
The browser recomputes R from the published header and compares it to the claim.
Closure
The loop page stores G(I) vs I(E) per height. Agreement there is not universal closure.

A marketing diagram with no event stream would fail this claim.

C-010 · Rust and TypeScript must not silently redefine the protocol

territory

Disagreement is evidence.

Prediction
This node publishes where it matches the repo and where it rebuilds.
Inside → outside
Address derivation SHA-256(pubkey)[..20] matches both stacks.
Outside → inside
Header hash here commits merkle, state root, nonce, residual, and pressure.
Closure
The difference is listed in the audit, not papered over.

Pretending byte-identity with the Replit miner would be false.