{"readAt":1790807544,"claims":[{"id":"tests","title":"150 tests pass in CI","state":"pass","evidence":["150 tests: 51 Hardhat, 61 Foundry fuzz, 24 Foundry unit, 14 stateful invariants","Latest CI on master: success, 30 Sep 2026 10:47 UTC (11h 44m ago, push)"],"links":[{"label":"CI run","href":"https://github.com/Assassin859/ReserveProof/actions/runs/36704574996"},{"label":"CI workflow","href":"https://github.com/Assassin859/ReserveProof/actions/workflows/ci.yml"}],"reproduce":"npm ci\nnpm test              # Hardhat\nforge install foundry-rs/forge-std --no-git\nforge install morpho-org/morpho-blue@v1.0.0 --no-git\nforge test            # fuzz, unit, invariants, real Morpho Blue\nnpm run test:count    # the breakdown"},{"id":"contracts","title":"Every contract is source-verified on both chains","state":"pass","evidence":["Robinhood testnet: 13 of 13 verified on Blockscout","Arbitrum Sepolia: 14 of 14 verified on Sourcify"],"links":[{"label":"Robinhood address book","href":"https://github.com/Assassin859/ReserveProof/blob/master/deployments/robinhoodTestnet.json"},{"label":"Arbitrum address book","href":"https://github.com/Assassin859/ReserveProof/blob/master/deployments/arbitrumSepolia.json"},{"label":"Sourcify (Arbitrum)","href":"https://repo.sourcify.dev/421614/0xe5c748abc5649a32F99a6BBB296787E64486cD10"}],"reproduce":"npm run verify:rh         # Blockscout, Robinhood testnet\nnpm run verify:sourcify   # Sourcify, Arbitrum Sepolia"},{"id":"proofs","title":"Every published proof is live and solvent","state":"pass","evidence":["Robinhood testnet mTSLA: solvent, epoch 5, coverage 200% vs 103% floor, stale in 5d 14h","Robinhood testnet USDG: solvent, epoch 5, coverage 250% vs 103% floor, stale in 5d 14h","Robinhood testnet TSLA: solvent, epoch 3, coverage 125% vs 103% floor, stale in 5d 14h","Arbitrum Sepolia mTSLA: solvent, epoch 5, coverage 200% vs 103% floor, stale in 5d 14h"],"links":[{"label":"Curator risk view","href":"/risk"},{"label":"Status page","href":"/status"}],"reproduce":"npm run status:rh\nnpm run status:arb"},{"id":"same-root","title":"The same mTSLA liability root is committed on both chains","links":[{"label":"Robinhood testnet ledger","href":"https://explorer.testnet.chain.robinhood.com/address/0x1F6fAfc59FFe60f2d8d779d202be17d8b36b3537"},{"label":"Arbitrum Sepolia ledger","href":"https://sepolia.arbiscan.io/address/0x1F6fAfc59FFe60f2d8d779d202be17d8b36b3537"}],"reproduce":"cast call 0x1F6fAfc59FFe60f2d8d779d202be17d8b36b3537 \"latestEpochId(bytes32,address)(uint256)\" 0xe544bb36ab73bf753d426fa89c314484b693d377b6632a4b389e94b5547daa15 0x66069A805d8c96a710B800066FdcEAfdfBcaA248 --rpc-url https://rpc.testnet.chain.robinhood.com\ncast call 0x1F6fAfc59FFe60f2d8d779d202be17d8b36b3537 \"latestEpochId(bytes32,address)(uint256)\" 0xe544bb36ab73bf753d426fa89c314484b693d377b6632a4b389e94b5547daa15 0x66069A805d8c96a710B800066FdcEAfdfBcaA248 --rpc-url https://sepolia-rollup.arbitrum.io/rpc\n# then getEpoch(bytes32,address,uint256) on each and compare the first field (the root)","state":"pass","evidence":["Epoch 5 on both chains, custodian 0xe544bb36…7daa15","Robinhood root 0xa9eeb086…356252, Arbitrum root 0xa9eeb086…356252 (identical, same total)"]},{"id":"consumers","title":"Gated integrations answer on chain and fail closed","state":"pass","evidence":["Robinhood testnet: 4 of 4 open (GatedPayout, GatedLendWithdraw, GuardedLendingVault, SolvencyGatedMorphoOracle)","Arbitrum Sepolia: 4 of 4 open (GatedPayout, GatedLendWithdraw, GuardedLendingVault, SolvencyGatedMorphoOracle)","Each one calls the oracle on chain and reverts Insolvent(reason) the moment a proof fails; the what-if simulator shows it"],"links":[{"label":"What-if simulator (scene 4)","href":"/"},{"label":"SolvencyGuard source","href":"https://github.com/Assassin859/ReserveProof/blob/master/src/guards/SolvencyGuard.sol"}],"reproduce":"npm run whatif:check:rh\nnpm run whatif:check:arb\nforge test --match-path test/foundry/MorphoIntegration.t.sol"},{"id":"exitright","title":"An ExitRight claim was opened and settled on chain","reproduce":"cast receipt 0xb1dc7b713cbd07fdaaaaf2fd5599cb706cee9fd2c7e1bb3568702810ef65b297 --rpc-url https://rpc.testnet.chain.robinhood.com\ncast receipt 0x8fec3e59a1824b8d09da32529f27454a2c56e1344ecc5d56c18708ce8679e2e9 --rpc-url https://rpc.testnet.chain.robinhood.com","state":"pass","evidence":["Claim #0: 100 mTSLA for 0x637701d4…8239f7, epoch 1, bonded by the custodian","openClaim success in block 125183173; settle success in block 125183240"],"links":[{"label":"openClaim tx","href":"https://explorer.testnet.chain.robinhood.com/tx/0xb1dc7b713cbd07fdaaaaf2fd5599cb706cee9fd2c7e1bb3568702810ef65b297"},{"label":"settle tx","href":"https://explorer.testnet.chain.robinhood.com/tx/0x8fec3e59a1824b8d09da32529f27454a2c56e1344ecc5d56c18708ce8679e2e9"}]},{"id":"schedule","title":"Proofs are re-published on schedule","state":"pass","evidence":["Latest on-chain commit 1d 9h ago; every published proof was re-committed within the last 4 days (cadence 3 days, stale after 7)","Ops epoch workflow: success, 29 Sep 2026 12:48 UTC (1d 9h ago, manual)","Watchtower: 23 of the last 48 hourly slots ran (GitHub starts scheduled runs best-effort, often late)"],"links":[{"label":"Ops epoch runs","href":"https://github.com/Assassin859/ReserveProof/actions/workflows/ops-epoch.yml"},{"label":"Watchtower runs","href":"https://github.com/Assassin859/ReserveProof/actions/workflows/watchtower.yml"},{"label":"Status page","href":"/status"}],"reproduce":"npm run ops:cycle:rh     # needs the deployer key\nnpm run watch:rh         # WATCH_ACT=0 for read-only"},{"id":"morpho-fork","title":"A drained custodian freezes a real Morpho Blue market","state":"pass","note":"Fork-only today: no ReserveProof contract is deployed on Robinhood Chain mainnet yet. The drill forks the latest mainnet state in memory and broadcasts nothing.","evidence":["20 of 20 checks passed on a fork of Robinhood Chain mainnet block 75,787,407 (recorded 2026-09-29): the real TSLA token, its real TSLA/USDG oracle and the real Morpho Blue","Daily drill in CI: success, 30 Sep 2026 13:00 UTC (9h 32m ago, scheduled)","Last 2 drills: 2 passed"],"links":[{"label":"Latest drill run","href":"https://github.com/Assassin859/ReserveProof/actions/runs/36718512964"},{"label":"Fork drill workflow","href":"https://github.com/Assassin859/ReserveProof/actions/workflows/fork-drill.yml"},{"label":"Drill script","href":"https://github.com/Assassin859/ReserveProof/blob/master/scripts/morpho-fork-demo.ts"}],"reproduce":"npm run demo:morpho-fork        # ~45s, no keys, nothing broadcast\nFORK_JSON=drill.json npm run demo:morpho-fork   # also save every check"}],"errors":[]}