C-001 · Mempool pressure enters the solver
partialP_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
survivedThree 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
survivedExternal 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
territoryRust 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
survivedSMT 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
survivedExpensive 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
openGroth16/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
survivedReward = 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
partialBidirectional 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
territoryDisagreement 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.