{"assessments":[],"deployments":[],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"8d724403-6a6e-43ac-915e-a1b8531b27d8","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"9c324ac15fd79dc0d811a62f89af0f75cb187834a79d75f20f16dd826808527c","dependsOn":["audit_imported_code"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"2d7d84a1a9972f1497e5bc68a704cbf42294d08c62d2868f102ffe3b909b9b51","skillId":"adapt-contract-project","tools":[]},"key":"adapt_contract_project","kind":"code","role":"implement","skillHash":"2d7d84a1a9972f1497e5bc68a704cbf42294d08c62d2868f102ffe3b909b9b51","skillId":"adapt-contract-project","state":"accepted"},{"acceptedSubmissionHash":"a17de7846b3954c64fef5ec5fffb121f042c333cea29ffeae25ab981bdefc6fe","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"fe5cce3ee2408eca96f021846e84300b41b00e65475df320baeb041232f73a95","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"c7c728b61a923de02b7942f9a947ad5dbb295d163a6e8437a254e8cf3997f61a","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"9897597976b0e72440db7ca402d225aea20f3d37205ba53e7df2400ff80f29cc","skillId":"audit-imported-code","tools":[]},"key":"audit_imported_code","kind":"code","role":"review","skillHash":"9897597976b0e72440db7ca402d225aea20f3d37205ba53e7df2400ff80f29cc","skillId":"audit-imported-code","state":"accepted"},{"acceptedSubmissionHash":"3a47423ce166fe21d066cc46636fabf82a73220fbc1507bbdeff8a99ee3e81a6","dependsOn":["adapt_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"3d1c3333ac45e13e5993f56ab2fa811b09db2204a87695b4ad7b475f6832115d","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"996e0c68264081b096dcf02cd0604909a4c65493dd0c1a5fdab3fe3fdb243774","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"73439b683fd5f6e6c824b9bf8af4197f7eaa0726d44906c7cd706e94fd049153","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"abcff3e323b21341d6241efb3dca4c19e884567e6e10c120b693862c0b8a9aaf","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","state":"accepted"}],"objective":"Launch imd/acc's ProjectRegistry on Robinhood Chain (chain 4663) from this repository (the launch-robinhood branch, which is the robinhood branch without .github/workflows; do not add any workflow file): deploy only the ProjectRegistry, exactly as launch.json lists it, wired to imd/acc's live RemoteStacker on Robinhood Chain and to IdentityMD's Intake v2. It decides which projects on Robinhood Chain have cashback that earns points, through IdentityMD oracle panels, with no owner. It is the code of the Ethereum mainnet registry (launch #1495, 0x7f53fa1543c682bb5de3f50c2cf3d1842ae57faa), byte for byte: version 3.1 of the panel rules, owner-only applications, one beneficiary handoff per day, owed bonds, the registry itself refused as beneficiary; tested live on Sepolia (test run 6: a listing and a defended challenge, 11 of 11 each) and live on mainnet. imd/acc pays trading cashback to traders as staked IMD (sIMD), 0.25% to 1% of each trade at each project's choice, funded from the project's existing fees; on Robinhood Chain the cashback waits in the RemoteStacker and reaches the trader as sIMD on Ethereum through IMD's own bridge (launches #1529 and #1537, tested live); only credits from listed projects earn points.\n\nDEPLOY (Robinhood Chain, one contract):\n- ProjectRegistry(intake, oracleAsset, stacker, oracleSigner, questionChainId, challengeBond, challengeCooldown) = (0xa43e6f75ee006411f79ac1c84120606c2330de82 Intake v2, 0x5f7bb59365ce557c26dbcaa4ee9d39a4b95b7127 IMD on Robinhood Chain, 0x4de07c2fa46d5d6ed9ceb3f38ec56d3461b3e898 the live RemoteStacker of launch #1537, 0x5598aa9146215bc13eb26f2c692ad1461fd32982 oracle signer, 4663, 20e18, 604800). launch.json already lists exactly this: a 20 IMD challenge bond and a 7-day cooldown, the mainnet settings, agreed by the owner.\n- Do not deploy a RemoteStacker, a Stacker or a StackReceiver: 0x4de0...e898 is live on Robinhood Chain and 0x1999...3d10 on Ethereum. The registry only names the RemoteStacker in its questions (as the Stacker the cashback goes through) and never calls it.\n- src/ProjectRegistry.sol and src/oracle/OracleAttestation.sol stay as they are: no owner; the constructor makes no external call. applyListing(project, name, sourceUrl, rateBps 25-100, beneficiary): when the project reports an owner through owner() (projectOwner: a staticcall capped at 30,000 gas reading at most 32 bytes; a revert, a malformed answer or zero means no owner), only that owner or the project itself may apply (NotProjectOwner, before any fee); a project without an owner can be applied for by anyone; the registry's own address is refused as beneficiary (InvalidBeneficiary). Anyone may challengeForBeneficiary(project, reason, beneficiary) a listed project after its cooldown. Each ask pays the oracle fee read live from the Intake (ORACLE_FEE(), 0.5 IMD on Robinhood Chain), plus the 20 IMD bond for a challenge, and asks Intake v2 one yes-or-no question with requestWithFailure, with the 8 rules of version 3.1 (docs/panel-rules-v2.md), each under 512 characters. Questions are filed under chain 4663: the oracle reads Robinhood Chain, and onOracleResult (0x510379c7) accepts only the Intake, only its own open request, each answer once, only a signature by the oracle signer for this contract issued after the ask (300-second tolerance), filed under chain 4663, from a panel of 15 with at least 11 agreeing: yes lists from that block, or keeps a challenged project (bond to its beneficiary, cooldown not restarted); no rejects, or delists from that block (bond back). onOracleFailure (0xa7980e31) only clears the open question and returns a bond; expire clears one after a day or once the Intake completed it. A bond the token refuses is recorded in bondOwed and claimed with claimBond(to). setBeneficiary waits while a question is open and changes the wallet at most once per day.\n- Known limits, accepted by the owner (the mainnet registry's, recorded by the judges of launches #1371, #1378, #1428, #1463 and #1495): a listed project's own beneficiary can hold its one question slot by challenging it, 0.5 IMD a round with the bond returned when defended (each round re-judges the project and buys no immunity); a stranger can hold an ownerless project's application slot for the fee per round (owned projects are protected by the owner rule); the signer, the Intake, the action and the panel constants are fixed for life. Do not change ProjectRegistry.sol for them; record them as accepted.\n- test/mocks and test/trial hold test doubles and trial contracts only (RemoteTrialVenue, the positive case for this registry's trial, is live at 0x81d17894b724dcb462bd5585be0792b1b32d19cc on Robinhood Chain, verified on Sourcify). Keep foundry.toml as it is (solc 0.8.26, cancun, 10,000 runs, bytecode_hash none).\n\nFACTS (read on Robinhood Chain 2026-10-13, block 87,459,018): Intake v2 is live there at the same address as on Ethereum (its callbackGas() is 200,000, as on Ethereum) and sells the question for 0.5 IMD (priceOf); the writer is 0x3d3c...25cb. The RemoteStacker reports IMD 0x5f7b...7127, the receiver 0x1999...3d10, the vault 0x9efa...7247 and endpoint id 30101. The registry's runtime is 23,427 bytes (the mainnet registry's). REHEARSAL (done 2026-10-13): the registry's own question for the live RemoteTrialVenue (its applyQuestion and the 8 definitions, consumer a registry deployed with these arguments on a fork, 0x106d...7822, chainId 4663) was paid straight to the Intake on Robinhood Chain from the t","parentJobId":null,"planHash":"46fea28ea5df8b9c313e13fcea3d07566b8f12a2343759d58c8018001706c6cb","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"8d724403-6a6e-43ac-915e-a1b8531b27d8","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1561-launch-imd-acc-s-projectregistry-robinho"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51226","feedbackHash":"6bddcc883d0c53c3951a11ce4035e349a522c6a943532a88141ca85b7f09f0d5","nodeKey":"adapt_contract_project","submissionHash":"9c324ac15fd79dc0d811a62f89af0f75cb187834a79d75f20f16dd826808527c","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51020","feedbackHash":"9c691d6e2b5ee88d80dd2715b0b8e656177cd738ac2c9600ae1652bd6edf6c80","nodeKey":"audit_economics","submissionHash":"a17de7846b3954c64fef5ec5fffb121f042c333cea29ffeae25ab981bdefc6fe","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50985","feedbackHash":"53beb7e2b8269c77f18d09c8d34eba419c1da29324cc8e8f3e73eff0eb41437c","nodeKey":"audit_flow","submissionHash":"fe5cce3ee2408eca96f021846e84300b41b00e65475df320baeb041232f73a95","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52618","feedbackHash":"cfa819e3c6256199b867b3cb126a7a6d608a748bc711c70c8f6e78c2d7fde9e4","nodeKey":"audit_imported_code","submissionHash":"c7c728b61a923de02b7942f9a947ad5dbb295d163a6e8437a254e8cf3997f61a","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51023","feedbackHash":"6764fde6809155dc54d3a41df2350e9ccb5717c9ecdba458301c46eb9694053b","nodeKey":"audit_judge","submissionHash":"3a47423ce166fe21d066cc46636fabf82a73220fbc1507bbdeff8a99ee3e81a6","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52254","feedbackHash":"78e5204412e3c6a9fb3b2fe8eb021348b3d6b115fbb1e25b8ec82ed7ab05aaf7","nodeKey":"audit_math","submissionHash":"3d1c3333ac45e13e5993f56ab2fa811b09db2204a87695b4ad7b475f6832115d","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52193","feedbackHash":"37d0429297b94bbe68408ba4fb9ace92388a98b297d6769caa45b01d8296522e","nodeKey":"audit_permissions","submissionHash":"996e0c68264081b096dcf02cd0604909a4c65493dd0c1a5fdab3fe3fdb243774","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51274","feedbackHash":"700643a29ddb91bf7bb206ac190f959954e3711cd03f57c61fde5aa9fed35db2","nodeKey":"manifest","submissionHash":"73439b683fd5f6e6c824b9bf8af4197f7eaa0726d44906c7cd706e94fd049153","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52087","feedbackHash":"3c33c6f39e09c65b99787d6ee88b781984da905dc25bbf61c6f72ccc873f5df3","nodeKey":"write_foundry_tests","submissionHash":"abcff3e323b21341d6241efb3dca4c19e884567e6e10c120b693862c0b8a9aaf","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"83def7b9029dc20cc21aff6599ccaffe80052c4b166c1a42fd3345d2bb7c943c","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"ca080fd306399669","findings":[{"citation":"resolved","description":"Merged from audit_math (3) and audit_flow (1). The tree's ProjectRegistry differs from the Ethereum mainnet registry (launch #1495) by two changes recorded in ADAPTATION.md: _listingBlockNumber() reads ArbSys.arbBlockNumber() at 0x64 when block.chainid == 4663 for fromBlock/toBlock and the Listed/Delisted events, and claimBond refuses address(this). Both are correct and needed on Robinhood Chain: I read the live chain (chain id 4663) and the header's l1BlockNumber (what NUMBER returns on Arbitrum Nitro) was 26,183,513 while arbBlockNumber() was 87,504,802, the RPC height the RemoteStacker's Queued logs are indexed by, so a mainnet-identical registry would record listing periods in the wrong block space. The constructor still makes no external call. The two specialists reproduced their finding against an older launch.json whose notes said the code is the mainnet registry's; at HEAD (commit 7a2141c) that sentence is gone and the notes say the accepted registry source is unchanged and the panel rules are version 3.1 as on mainnet, which is accurate. What remains stale is the brief's own text (byte for byte; runtime is 23,427 bytes): not a file in the tree. Recorded so the attestation reader does not expect the mainnet runtime hash. No code change is suggested.","line":430,"path":"src/ProjectRegistry.sol","reproduction":"forge build with the unchanged foundry.toml, then node -e on out/ProjectRegistry.sol/ProjectRegistry.json: deployedBytecode.object is 23,709 bytes (test/scratch/ReviewProbe.t.sol test_runtimeSize asserts address(reg).code.length == 23_709 and passes); cast code 0x7f53fa1543c682bb5de3f50c2cf3d1842ae57faa on Ethereum returns 23,427 bytes. git diff HEAD~3 HEAD -- src/ProjectRegistry.sol shows the IRegistryArbSys interface, _listingBlockNumber() and the claimBond guard (24 changed lines). grep \"The code is the mainnet registry's\" launch.json finds nothing at HEAD; the notes are 2,524 characters with only kind, contracts and notes keys and 7 constructor arguments. Expected by the brief: 23,427 bytes. Actual: 23,709, under the 24,576 limit.","severity":"info","snippet":"    function _listingBlockNumber() internal view returns (uint64) {","title":"Registry deployed here is the mainnet code plus two accepted Robinhood audit fixes (runtime 23,709 bytes, not 23,427); the brief's byte-for-byte claim is stale, the manifest at HEAD no longer makes it"},{"citation":"resolved","description":"From audit_math (1). The panel check requires panelSize >= 15, quorum >= 11, agreed >= 11 and agreed >= quorum, never agreed <= panelSize, so an internally inconsistent attestation (15 seats, 65,535 agreeing) settles the question. Every one of these fields is inside the EIP-712 struct the oracle signer signs and the answer can only arrive from the Intake, so no unprivileged actor can produce it and nothing is lost; the trusted signer could already sign any answer it likes. Boundary note for the record, no change suggested.","line":391,"path":"src/ProjectRegistry.sol","reproduction":"test/scratch/ReviewProbe.t.sol test_agreedAbovePanelSizeAccepted (passes on this tree): ProjectRegistry(mockIntake, imd, stacker, signer, 4663, 20e18, 7 days) with vm.chainId(4663) and ArbSys mocked at 0x64; applyListing(project, \"X\", \"https://example.org/x\", 50, anyone); the signer signs {chainId 4663, answerType 0, answer abi.encode(true), panelSize 15, quorum 11, agreed 65535, issuedAt now, expiresAt now+1 day} in the registry's domain; mockIntake.deliver(id, a, sig, 200_000). Expected under a strict reading: revert WrongPanel. Actual: delivered == true, isListed(project) == true, fromBlock == 87,500,000 (the mocked ArbSys height).","severity":"info","snippet":"            a.chainId != questionChainId || a.panelSize < PANEL_SIZE || a.quorum < QUORUM\n                || a.agreed < QUORUM || a.agreed < a.quorum","title":"onOracleResult checks the panel with lower bounds only: a signed attestation whose agreed count exceeds panelSize is accepted"},{"citation":"resolved","description":"From audit_permissions. Only address(0), a revert, a malformed answer or a word with high bits set mean no owner. A project that renounced ownership by transferring it to 0x000000000000000000000000000000000000dEaD (a common pattern where transferOwnership(0) is refused) reports that address, nobody can transact from it, and the project usually has no function that calls applyListing itself, so NotProjectOwner(0xdEaD) is thrown for every applicant forever, while the same project renounced to address(0) is open to anyone. This is exactly what the brief specifies (a revert, a malformed answer or zero means no owner), the registry has no owner to override it, and challenges are unaffected, so it is a design limit of the agreed owner rule, not a bypass. Recorded for the owner; a one-comparison change (treat 0xdEaD like zero) would widen access for no project with a live owner, but the brief says not to change the file.","line":253,"path":"src/ProjectRegistry.sol","reproduction":"test/scratch/ReviewProbe.t.sol test_deadOwnerBlocksEveryApplicant (passes on this tree): project = a contract whose owner() returns 0x000000000000000000000000000000000000dEaD; a funded wallet with allowance calls reg.applyListing(project, \"X\", \"https://example.org/x\", 50, wallet). Expected under the intent (ownerless projects open to anyone): the application is filed and the fee pulled. Actual: revert NotProjectOwner(0x000000000000000000000000000000000000dEaD) before any fee, for every caller.","severity":"info","snippet":"        if (ok && size == 32 && word >> 160 == 0) owner = address(uint160(word));","title":"projectOwner treats any non-zero 20-byte owner() answer as a real owner, so a project whose owner was burned to 0x...dEaD can never be applied for"},{"citation":"resolved","description":"From audit_math (2). projectOwner gives owner() exactly 30,000 gas and a failed call means no owner, so a project whose owner() legitimately needs more (several cold cross-contract reads) is applied for by anyone, the limit the brief accepts only for truly ownerless projects. Standard Ownable, EIP-1967-proxied Ownable and Diamond owner() reads cost 5k to 15k and fit with margin. The applicant cannot starve a cheap owner() to bypass the gate: the rest of applyListing needs far more than 30,000 gas (the Intake request alone is well over 150k), so under the 63/64 rule any transaction that can complete gives owner() its full cap. Brief-defined boundary, no change suggested.","line":249,"path":"src/ProjectRegistry.sol","reproduction":"test/scratch/ReviewProbe.t.sol test_heavyOwnerTreatedAsNone (passes on this tree): project = a contract whose owner() runs 2000 keccak iterations before returning 0xD0. reg.projectOwner(project) returns address(0) although project.owner() with ample gas returns 0xD0; then a stranger 0xA0 calls applyListing(project, \"X\", \"https://example.org/x\", 50, 0xB0). Expected under owned projects are protected by the owner rule: NotProjectOwner(0xD0). Actual: the application is filed, projectOf(project).asker == 0xA0 and the fee is paid.","severity":"info","snippet":"            ok := staticcall(OWNER_CALL_GAS, project, 0, 4, 0, 32)","title":"OWNER_CALL_GAS of 30,000 turns a gas-heavy owner() into no owner, so such a project's application slot is open to anyone"},{"citation":"resolved","description":"From audit_economics. The stated rateBps and beneficiary go straight into the project's record while fromBlock/toBlock still describe the previous listing period, and after a Rejected answer nothing restores the previous value. For an ownerless project anyone may do this for the oracle fee. No bond or fee is misdirected: a defended bond is only paid while listed, and setBeneficiary is refused while unlisted. The struct comment documents it (the stated one while an application is open) and the Listed/Delisted/BeneficiarySet events carry the true history. Mainnet behaviour, kept for the record so the points counter attributes past periods from events, not from projectOf().","line":291,"path":"src/ProjectRegistry.sol","reproduction":"test/scratch/ReviewProbe.t.sol test_applicantRewritesBeneficiaryOfDelistedProject (passes on this tree): ownerless project listed with beneficiary 0xB1, then challenged after 8 days and delisted by a signed no, so projectOf(P) = {listed false, beneficiary 0xB1, toBlock 87,500,000}; stranger 0x5E with 10 IMD calls applyListing(P, \"Y\", \"https://example.org/y\", 30, 0x5E). Expected for a reader of state: the beneficiary of the period that ended at toBlock stays 0xB1. Actual: projectOf(P).beneficiary == 0x5E at once, with fromBlock/toBlock unchanged.","severity":"info","snippet":"        p.rateBps = rateBps;\n        p.beneficiary = beneficiary;","title":"applyListing writes the applicant's beneficiary into the record before the panel answers, overwriting the beneficiary of a delisted project's last period"}],"hash":"3a47423ce166fe21d066cc46636fabf82a73220fbc1507bbdeff8a99ee3e81a6","nodeId":"6fa7312b-4968-4ce0-a56c-a121f743d1e9","outcome":"completed","summary":"The review is complete and written to `.imd-findings.json`. No file in the tree was changed; only the findings file and my scratch tests under `test/scratch/` were created.\n\n**Outcome: no blocking defects.** The registry as it stands in this tree holds on every entry point, and the one Robinhood-specific change it carries is correct and necessary. The findings file holds five informational notes and a coverage record answering all 13 entry points.\n\n**What I verified myself**\n\n- **The ArbSys adaptation is right.** I read Robinhood Chain live: the header's parent height was about 26.18 million while `arbBlockNumber()` at 0x64 returned about 87.5 million, the RPC height the RemoteStacker's credit logs are indexed by. A mainnet-identical registry would record listing periods in Ethereum's block space. The constructor still makes no external call.\n- **Live Intake v2 on chain 4663** reports a 200,000 callback gas, sells the question for 0.5 IMD, and its `requests` getter returns the 4-word tuple the registry's `expire` decodes.\n- **Build and tests:** the tree compiles under the unchanged foundry config and the non-fork suite passes 357 of 357. Runtime is 23,709 bytes, creation 25,288 bytes plus 7 argument words, both under the limits. The manifest has only the three schema keys, 7 arguments in declaration order, and notes of 2,524 characters.\n- **My own pass** over the callback, bond accounting, expiry boundaries, handoff rules, the owner gate, the JSON body and the three stacker contracts found nothing the specialists missed at medium or above.\n\n**Specialist findings, settled**\n\n- The two \"manifest claims mainnet parity\" reports (audit_math, audit_flow) were merged. Their quoted sentence is no longer in launch.json at HEAD, so the finding does not reproduce as stated. I kept one info note recording that the code differs from mainnet by the two accepted fixes, since the brief's own facts still say byte for byte.\n- The burned-owner lockout, the 30,000-gas owner cap, the agreed-above-panel-size acceptance and the beneficiary rewrite on an unlisted project all reproduce. Each is either what the brief specifies or mainnet behaviour with no loss path, so each is recorded as info with a passing scratch test as its reproduction.\n\nThe static-analysis lines (divide-before-multiply, unused returns, timestamp use, locked ether) were each checked and are intentional or not reachable as defects, so none was promoted.","treeHash":null,"usage":{"cachedInputTokens":1454096,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":29361,"runtime":"claude","turns":24,"wallClockMs":540541}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"584bd638e7e022f0","findings":[{"citation":"resolved","description":"Area: Boundary (signed numeric fields). onOracleResult requires panelSize >= 15, quorum >= 11, agreed >= 11 and agreed >= quorum, but never agreed <= panelSize. An attestation with panelSize 15, quorum 11, agreed 65535 is internally inconsistent (more agreeing seats than the panel has) yet is accepted and lists the project. All three fields are inside the EIP-712 signed struct and only the trusted oracle signer can produce them, and the Intake must present the answer, so no unprivileged actor can reach this and there is no loss. Recorded so the judge has the exact boundary: the brief's 'a panel of 15 with at least 11 agreeing' is enforced as lower bounds only. Standard Ownable, EIP-1967 proxy and Diamond owner() paths are far cheaper than the cap, so this is a note, not a defect.","line":391,"path":"src/ProjectRegistry.sol","reproduction":"Deploy ProjectRegistry(intake, imd, stacker, signer, chainid, 20e18, 7 days) against a mock Intake; applyListing(project, 'Name', 'https://example.com/x', 50, beneficiary); sign an attestation {chainId: chainid, answerType 0, answer abi.encode(true), panelSize 15, quorum 11, agreed 65535, issuedAt now, expiresAt now+86400} in the registry's domain with the signer key; have the mock Intake deliver it with 200,000 gas. Expected (strict reading): WrongPanel. Actual: delivered == true and isListed(project) == true. Verified in test/scratch/MathProbe.t.sol test_panel_agreedAbovePanelSizeAccepted (passes on this tree). Panel values below the bounds (agreed 10; quorum 12 with agreed 11; panelSize 14) are correctly refused (test_panel_belowQuorumRefused).","severity":"info","snippet":"            a.chainId != questionChainId || a.panelSize < PANEL_SIZE || a.quorum < QUORUM","title":"Panel check accepts an attestation whose agreed count exceeds its panelSize (signed values; no exploit, boundary note)"},{"citation":"resolved","description":"Area: Boundary (external call with a fixed gas cap). projectOwner gives owner() exactly 30,000 gas and treats a failed call as 'no owner'. A project whose owner() legitimately needs more than that (for example one that resolves ownership through several cold cross-contract reads) is therefore treated as ownerless, and anyone may hold its single application slot for the fee per round, which the brief lists as accepted only for projects that truly have no owner. The brief itself defines a revert as 'no owner', so this is the documented behaviour at a numeric boundary, not a defect: standard Ownable (~5k gas), EIP-1967 proxy to Ownable (~10-15k) and Diamond (~12k) owner() calls all fit with wide margin. Gas starvation by the applicant cannot be used to bypass the gate for a cheap owner(): the rest of applyListing (the Intake request alone is well over 150k) needs far more gas than remains, so the 63/64 rule always leaves the full 30,000 for owner() in any transaction that can complete.","line":249,"path":"src/ProjectRegistry.sol","reproduction":"Deploy a project contract whose owner() loops 2000 keccak iterations (unchecked) before returning a real owner 0xD0. Call reg.projectOwner(project): returns address(0) although project.owner() with ample gas returns 0xD0. Then, as a stranger 0xA0 (not 0xD0, not the project), call applyListing(project, 'Name', 'https://example.com/x', 50, 0xB0): expected under 'owned projects are protected by the owner rule' NotProjectOwner(0xD0); actual: succeeds, projectOf(project).asker == 0xA0 and the fee is paid. Verified in test/scratch/MathProbe.t.sol test_ownerGasCap_strangerCanApply (passes on this tree).","severity":"info","snippet":"            ok := staticcall(OWNER_CALL_GAS, project, 0, 4, 0, 32)","title":"OWNER_CALL_GAS = 30,000 turns a gas-heavy owner() into 'no owner', so the owner-only application gate does not apply to such a project (documented limit; boundary note)"},{"citation":"resolved","description":"Outside the math area, reported because the manifest is read by the judge. ADAPTATION.md records two accepted production changes in src/ProjectRegistry.sol since the mainnet registry (the ArbSys rollup-height read in _listingBlockNumber and claimBond refusing address(this)), and states the runtime is 23,709 bytes versus the mainnet baseline of 23,427. The compiled artifact in this tree confirms 23,709 bytes (under the 24,576-byte EIP-170 limit; RegistryRobinhoodLaunch.t.sol asserts the limit). The notes in launch.json still say the code is the mainnet registry's, and the brief says 'byte for byte'. Notes are explanatory text, not deployment authority, so nothing deploys wrongly; but the attestation/review that compares runtime hashes to the mainnet registry will not match, and the notes should describe the two fixes instead of claiming parity. No code change is suggested.","line":17,"path":"launch.json","reproduction":"forge build with the unchanged foundry.toml (solc 0.8.26, cancun, 10,000 runs, bytecode_hash none), then read out/ProjectRegistry.sol/ProjectRegistry.json deployedBytecode.object: (len(hex)-2)/2 == 23709. Expected from the notes and the brief: 23,427 (the mainnet registry's). Actual: 23,709.","severity":"info","snippet":"The code is the mainnet registry's (launch #1495, 0x7f53...7faa)","title":"launch.json notes claim the mainnet registry's code; the tree compiles to a 23,709-byte runtime, not the mainnet 23,427 (two accepted audit fixes), so the notes are stale"}],"hash":"3d1c3333ac45e13e5993f56ab2fa811b09db2204a87695b4ad7b475f6832115d","nodeId":"3857f153-0c0a-4d50-b337-9092f8e02bf3","outcome":"completed","summary":"The review is complete. The findings file is valid JSON, every snippet anchors to its line, and the working tree shows no tracked changes beyond my scratch tests and the findings file.\n\n**Outcome: no reproducible defect in the math, boundary or numerical-gap area.** The registry's arithmetic is small and sound, and every edge I could name behaves as the brief describes. I wrote three informational notes and a full coverage record to `.imd-findings.json`.\n\n**What I verified with scratch tests** (all under `test/scratch/`, 16 tests passing):\n- **Answer and expire deadlines** agree at the exact second. At the ask time plus one day the answer is still accepted and expire refuses; one second later the answer is TooLate and expire clears.\n- **Issued-before-ask tolerance** is exactly 300 seconds. An attestation issued 300 seconds before the ask passes; 301 seconds is refused.\n- **Panel lower bounds** hold. Agreed 10, quorum 12 with agreed 11, and panel 14 are all refused.\n- **Rate bounds** are inclusive at 25 and 100, and 24 and 101 are refused.\n- **Bond conservation.** The registry holds exactly one 20 IMD bond per open challenge, forwards the fee in the same call, and leaves no residual Intake allowance.\n- **Callback gas headroom** on the Robinhood path is wide. A cold listing settles in about 76k gas and a cold delisting with bond return in about 86k, against the 200k stipend.\n- **RemoteStacker tip rounding** matches its documentation: tips truncate to zero below 50 bridge steps, dust stays untipped, the weighted clock rounds arrival up, and a fuzz run confirms the waiting delta equals delivered plus tip with the tip never above 2%. Slither's divide-before-multiply lines are the deliberate whole-step rounding.\n\n**The three informational notes:**\n1. The panel check has no upper bound, so an attestation with agreed 65535 over a panel of 15 is accepted. Only the trusted signer can produce one, so there is no exploit.\n2. An `owner()` that needs more than 30,000 gas is treated as no owner, which is the brief's documented definition. Standard Ownable, proxy and Diamond patterns fit with wide margin, and gas starvation cannot bypass the gate.\n3. The manifest notes still say the code is the mainnet registry's, but this tree compiles to a 23,709-byte runtime rather than the mainnet 23,427 because of the two accepted audit fixes recorded in ADAPTATION.md. The notes should describe those fixes rather than claim parity.\n\n**Coverage:** all 13 listed entry points have a row, plus two invariant rows. Two rows point at the informational notes and the rest hold. Nothing was left unreached.","treeHash":null,"usage":{"cachedInputTokens":2414458,"inputTokens":610,"model":"claude-fable-5-1","outputTokens":40357,"runtime":"claude","turns":35,"wallClockMs":555405}},{"artifacts":[],"attempt":1,"bundleHash":"6b432b404330338c797f7a087d1a9f82db1fe79ec6e3673875f13f9704cd6b3f","device":"34d50a3af6e87087","findings":[],"hash":"73439b683fd5f6e6c824b9bf8af4197f7eaa0726d44906c7cd706e94fd049153","nodeId":"ab99e08c-9d96-41c8-b844-7d6c9d35cd83","outcome":"completed","summary":"Updated `launch.json`, preserving the approved ProjectRegistry arguments and documenting accepted limits. No other deliverable files changed.\n\nValidation passed: `forge build`; `forge test` reported 345 passed, 0 failed, 29 skipped.\n\nThe unchanged source builds to 23,709 runtime bytes, versus the brief’s 23,427; it remains below the deployment limit.","treeHash":"6cf6cdc25573a4a99117b22dffaea1c7cb21b9be","usage":{"cachedInputTokens":359168,"inputTokens":39858,"model":"gpt-6-astra","outputTokens":5206,"runtime":"codex","turns":4,"wallClockMs":203153}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"5d667e4b0751bcb5","findings":[{"citation":"resolved","description":"Access-control asymmetry in applyListing (Access Control + Asymmetry guides). projectOwner() (line 253: `if (ok && size == 32 && word >> 160 == 0) owner = address(uint160(word));`) maps only the zero address, a revert and a malformed answer to 'no owner'. Any other 20-byte value is taken as the one wallet allowed to apply. Two common real-world shapes therefore lock a project out of the registry for life: (1) Ownable projects that 'renounce' by transferring ownership to 0x000000000000000000000000000000000000dEaD (a very common pattern, since many Ownable forks refuse transferOwnership(0)); owner() then returns 0xdEaD, which nobody controls, so NotProjectOwner(0xdEaD) is thrown for every applicant, while an otherwise identical project renounced to address(0) is open to anyone. (2) Projects whose owner() returns a contract with no arbitrary-call ability (a deploying factory, a minimal-proxy beacon, an old-style registry) and which themselves have no way to call applyListing. In both cases the project is a legitimate trading venue the panel could judge, but the gate fires before the panel ever sees it; the only remaining route is `msg.sender == project`, which such projects usually cannot exercise. This is within the letter of the brief ('zero means no owner'), so it is recorded as a design limit of the owner rule rather than a bypass: the asymmetry is that two equivalent renounce patterns get opposite treatment, and the stricter one is permanent because the signer, the gate and the registry have no owner to override it. Challenges are unaffected (anyone may challenge). Minimal fix if the owner wants it, preserving the agreed owner-only rule: treat 0x...dEaD exactly like address(0) in projectOwner (one extra comparison), which does not widen access for any project with a live owner. No change is required for case (2) beyond documenting it.","line":278,"path":"src/ProjectRegistry.sol","reproduction":"State: a project contract with `function owner() external pure returns (address) { return 0x000000000000000000000000000000000000dEaD; }` (the 'burned owner' pattern). Any wallet W funded and approved for the fee calls reg.applyListing(project, \"X\", \"https://example.org/x\", 50, W). Actual: revert NotProjectOwner(0x000000000000000000000000000000000000dEaD) before any fee is pulled; the same happens for every caller forever, since 0xdEaD never transacts and the project has no function that calls the registry. Expected under the intent of the owner rule (protect owned projects from squatters): a project nobody owns should be open to anyone, as it is when owner() returns address(0) (test_renouncedOwnerOpenToAnyone). Verified with a scratch Foundry test on this tree: `vm.expectRevert(abi.encodeWithSelector(ProjectRegistry.NotProjectOwner.selector, 0x000000000000000000000000000000000000dEaD)); reg.applyListing(dead, \"X\", \"https://example.org/x\", 50, anyone);` passes (the revert happens).","severity":"low","snippet":"        if (owner_ != address(0) && msg.sender != owner_ && msg.sender != project) {\n            revert NotProjectOwner(owner_);\n        }","title":"Owner gate treats a sentinel or non-transacting owner() answer as a real owner, so projects 'renounced' to 0x...dEaD (or owned by a non-calling contract) can never be applied for"}],"hash":"996e0c68264081b096dcf02cd0604909a4c65493dd0c1a5fdab3fe3fdb243774","nodeId":"45fdd50e-97e2-4f36-b91b-be29a73efbbe","outcome":"completed","summary":"The review is complete. The findings file is written, the snippet matches the tree, and the working tree is otherwise clean (git status shows nothing besides the untracked findings file, which is the deliverable).\n\n**Outcome.** The ProjectRegistry's permission model holds against the Access Control, Trust Gap and Asymmetry guides. I found one low-severity asymmetry and no bypasses, so no proof test was required.\n\n**What I checked**\n\n- Every registry entry point was traced through its guards, state writes and failure paths: owner-gated applications, open challenges with pinned beneficiaries, Intake-only callbacks bound to the registry's own open request and EIP-712 domain, once-per-day handoffs, and bond routing to the recorded asker or the beneficiary fixed at challenge time.\n- Trust-gap seams were walked concretely: a third party's own paid question cannot settle a registry request, handoff front-running is defeated by the pin plus the daily interval, and self-challenge slot holding matches the accepted limits in the brief.\n- The manifest matches the brief exactly: one contract, seven constructor arguments in order, schema keys only.\n- The full non-fork unit suite passes on this tree.\n\n| Suite | Result |\n| --- | --- |\n| Unit tests (non-fork, non-invariant) | 330 passed, 0 failed |\n\n**The finding (low).** The owner gate in applyListing treats any non-zero 20-byte answer from the project's owner function as a real owner. A project \"renounced\" to the 0x...dEaD burn address, or owned by a contract that cannot make calls, can therefore never be applied for by anyone. An identical project renounced to the zero address is open to all. This is within the brief's wording, so I recorded it as a design limit with a one-comparison fix if the owner wants it. I verified the revert with a scratch test, then removed the scratch directory.\n\n**Coverage.** All 13 listed entry points have rows. The five Stacker, RemoteStacker and StackReceiver entry points are outside this area and not deployed by this launch, so they are marked as holding with the reason noted. Three extra rows record the invariants I checked and the accepted limits the brief asks to record.","treeHash":null,"usage":{"cachedInputTokens":1132817,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":35249,"runtime":"claude","turns":27,"wallClockMs":642264}},{"artifacts":[],"attempt":1,"bundleHash":"b7fc89aa872dd3f53dc0e44ab525b90b9b839c764fed2dd265d9d0435877f94b","device":"720122d0ca9f60ca","findings":[],"hash":"9c324ac15fd79dc0d811a62f89af0f75cb187834a79d75f20f16dd826808527c","nodeId":"b3e7db60-66ab-4f00-9b3d-108c646b41cd","outcome":"completed","summary":"Implemented both reproduced audit fixes: Robinhood listing block numbers and rejected bond self-transfers. These fixes change mainnet bytecode parity; manifest and protected files remain unchanged.\n\n`forge build` and `forge test` pass: **360 passed, 29 skipped**. Factory rehearsal passes; runtime is **23,709 bytes**.\n\nChanges and accepted limits are documented in [ADAPTATION.md](/Users/hhyy/.lobster_wallets/identitymd/work/8d724403-6a6e-43ac-915e-a1b8531b27d8/b3e7db60-66ab-4f00-9b3d-108c646b41cd/ADAPTATION.md).\n\nThe live RPC probe returned HTTP 403. No transaction was broadcast.","treeHash":"a56925aa00bcf8f67213e37bc79f91f91ac77c7b","usage":{"cachedInputTokens":2333440,"inputTokens":133805,"model":"gpt-6-astra","outputTokens":21668,"runtime":"codex","turns":7,"wallClockMs":827194}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a31e321b410aaa02","findings":[{"citation":"resolved","description":"applyListing writes the applicant's stated rateBps and beneficiary straight into the project's record (src/ProjectRegistry.sol:291-292) before the panel has answered, while fromBlock/toBlock still describe the previous listing period. For a project that reports no owner(), anyone may apply, so a stranger can overwrite the recorded beneficiary of a delisted project's last period for 0.5 IMD, and after a Rejected answer the stale value stays in the record indefinitely (nothing restores the previous beneficiary). The struct comment documents this ('the stated one while an application is open') and the Listed/BeneficiarySet events carry the true history, so this is an interface-guarantee ambiguity, not a loss of funds: no bond or fee is misdirected on chain (a defended bond can only be paid while listed, and setBeneficiary is blocked while unlisted). It is the mainnet registry's behavior byte for byte and is reported for the record so the off-chain points counter is known to need the events, not projectOf(), when attributing a past listing period. No change to ProjectRegistry.sol is suggested for this launch.","line":292,"path":"src/ProjectRegistry.sol","reproduction":"State: ownerless project P (a contract with no owner()) listed with beneficiary B (fromBlock F), then challenged and delisted with a signed no at block X, so projectOf(P) = {listed:false, beneficiary:B, fromBlock:F, toBlock:X}. Input: stranger S calls applyListing(P, \"x\", \"https://example.org/x\", 50, S) paying the 0.5 IMD fee. Actual: projectOf(P).beneficiary == S immediately, while fromBlock/toBlock still equal F/X (B's period); after the panel's Rejected answer the record stays {beneficiary:S, fromBlock:F, toBlock:X}. Expected (for a reader of state): the beneficiary that held period F..X remains B, or the pending applicant's stated beneficiary is kept apart from the recorded period. Cost to S: 0.5 IMD per rewrite. Who is affected: only an indexer that attributes points from projectOf() state instead of the Listed/BeneficiarySet events.","severity":"info","snippet":"        p.beneficiary = beneficiary;","title":"projectOf(project).beneficiary of a delisted or rejected project is rewritten by any later applicant before the panel answers"}],"hash":"a17de7846b3954c64fef5ec5fffb121f042c333cea29ffeae25ab981bdefc6fe","nodeId":"aeec76c7-1fce-428a-8af5-dccc603e7675","outcome":"completed","summary":"The review is complete and `.imd-findings.json` holds the result. The working tree is clean apart from that file (the scratch test was removed).\n\n**Outcome:** no defect of medium or higher severity in the ProjectRegistry launch's economics. The file records one informational finding and a coverage row for all 13 listed entry points plus three invariants and the manifest.\n\n**What I checked, in my area (Economic Security, Invariant, Flow Gap):**\n- Fee and bond conservation on every path: each ask pulls fee plus bond, the Intake pulls exactly the fee, every settle or clear pays or records exactly one bond, and the registry's balance equals open bonds plus owed bonds.\n- The answer callback against the live chain. A fork test drove apply, list, challenge, delist and defend through the live Robinhood Intake v2 and IMD token, with the ArbSys precompile mocked. Gas used inside the 200k stipend:\n\n| Path | Gas |\n| --- | --- |\n| Listing (cold) | 102,146 |\n| Delist and return bond | 121,156 |\n| Defend and pay bond to a cold wallet | 136,936 |\n\n- Live reads on Robinhood Chain confirmed the brief's facts: price 0.5 IMD, callbackGas 200,000, the requestWithFailure selector in the Intake's code, the `requests()` tuple with `completed` in the fourth word (true for the rehearsal request), and the RemoteStacker's IMD, receiver, vault and endpoint id.\n- Griefing, slot holds, handoff races and timestamp levers all resolve to the limits the brief already lists as accepted. They are recorded as accepted, not as findings.\n- The manifest has the three schema keys, seven constructor arguments in declaration order matching the brief, and notes well under the limit.\n\n**The one informational record:** `applyListing` writes the applicant's beneficiary into the project record before the panel answers, so for an ownerless, delisted project a stranger can overwrite the recorded beneficiary of the last listing period for 0.5 IMD, and the stale value stays after a rejection. No funds are misdirected on chain and the events carry the true history. It is documented in the struct comment and identical to the mainnet registry, so no code change is suggested.\n\n**Not reached:** the panel's off-chain judgement and the writer's pairing of answers to requests, which the design trusts, and the LayerZero bridge economics beyond one reading of the RemoteStacker and StackReceiver, which are outside the assigned area and not redeployed by this launch.\n\nThe full offline suite passes: 345 tests passed, 5 fork tests skipped without RPC URLs, 0 failed.","treeHash":null,"usage":{"cachedInputTokens":1340919,"inputTokens":386,"model":"claude-fable-5-1","outputTokens":37946,"runtime":"claude","turns":32,"wallClockMs":673886}},{"artifacts":[],"attempt":1,"bundleHash":"91b69082457946afd0ce68bc3e6ed69137f06e0c674f03c2be1bebbecc0cbb8b","device":"553a378efc6a19cb","findings":[],"hash":"abcff3e323b21341d6241efb3dca4c19e884567e6e10c120b693862c0b8a9aaf","nodeId":"5056abce-42e7-4ebf-aed9-e85c192262e4","outcome":"completed","summary":"Added tests under `test/` for bond-accounting invariants, deferred claims, callback failures, reentrancy, and signer verification.\n\nOffline validation passed:\n\n- `forge build`\n- `forge test`: 357 passed, 0 failed, 29 skipped.\n- New invariant campaign: 16,384 calls without unexpected reverts.\n\nAccepted limits and live-verification gaps are documented in `test/ROBINHOOD_REGISTRY_COVERAGE.md`.","treeHash":"22558034c22dfe92f2e50adcecd55a1d9e235abe","usage":{"cachedInputTokens":2542208,"inputTokens":159432,"model":"gpt-6-astra","outputTokens":20176,"runtime":"codex","turns":7,"wallClockMs":1091701}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"faf271d05ee8ea0f","findings":[{"citation":"resolved","description":"Robinhood Chain (4663) is an Arbitrum Orbit rollup. In its EVM the NUMBER opcode returns the parent chain's (Ethereum's) block height, not the rollup's own height, which is only available through ArbSys(0x64).arbBlockNumber(). Verified live on 2026-10-13 against https://robinhood-rpc.publicnode.com: eth_blockNumber = 87,477,427 and ArbSys.arbBlockNumber() = 87,477,432, while a contract reading block.number (Multicall3.getBlockNumber(), and an eth_call with the 9-byte code 0x4360005260206000f3 via --override-code) returned 26,183,281, which is exactly Ethereum mainnet's current block at the same moment. The registry stamps p.fromBlock (line 402), the Listed event's fromBlock (line 405), p.toBlock (line 416) and the Delisted event's toBlock (line 418) with uint64(block.number). On Robinhood Chain those are therefore Ethereum block numbers (~26.18M) while every other block reference on that chain, including the RemoteStacker's Queued/Stacked logs and the registry's own log blockNumber, is the rollup height (~87.5M). The listing period the contract records is the registry's whole product ('yes lists from that block', 'points count from the block it is listed, never before', 'earlier points stay' in docs/listing.md and docs/design.md), and the points counter in tools/snapshot/build.mjs takes the period from the Listed/Delisted event data (lines 154 and 166) and compares it with each Stacked log's own blockNumber (lines 175 and 190-191). On chain 4663 that comparison is between two different block spaces: for a listed project every credit ever made, including all credits before the listing, satisfies b >= r.from (87M >= 26M), so pre-listing history earns points, the exact backdating the design forbids; after a delisting, toBlock ~26M is below every rollup block so b < r.to never holds and the project's credits earned during the listing lose their points too. Also, Ethereum's number advances about every 12 s while Robinhood produces many blocks per second, so several distinct listings/delistings share the same fromBlock, and a listing and a delisting in the same 12 s window give fromBlock == toBlock. The mainnet registry (launch #1495) is unaffected because on Ethereum both spaces coincide; the defect is specific to deploying this byte-for-byte code on an Orbit chain, which this launch does. Nothing on chain loses funds; the broken guarantee is the listing-period semantics that decide points. Two ways to fix, the owner's choice since the brief asks for mainnet's code byte for byte: (a) in the contract, on chain 4663 read the rollup height from ArbSys(0x0000000000000000000000000000000000000064).arbBlockNumber() (a staticcall to a precompile; the constructor must stay free of external calls, so read it only in onOracleResult) and stamp that into fromBlock/toBlock; or (b) keep the code and change the indexer and every consumer of the Listed/Delisted events to use the log's own blockNumber as the period boundary on chain 4663 and treat the recorded field as informational, documenting that projectOf(project).fromBlock/toBlock are Ethereum heights on Robinhood Chain. Option (b) leaves the on-chain record wrong for anyone reading projectOf directly (app.js decodeRecord reads fromBlock/toBlock from it).","line":402,"path":"src/ProjectRegistry.sol","reproduction":"State: the registry deployed on Robinhood Chain (chain 4663) exactly as launch.json lists. Sequence: (1) a project P credits traders through the RemoteStacker at rollup blocks 87,400,000 to 87,460,000 (Stacked/Queued logs carry those blockNumbers); (2) at rollup block 87,470,000 the panel answers yes to P's application and onOracleResult runs: p.fromBlock = uint64(block.number) = 26,183,281 (Ethereum's height, confirmed live: cast call --rpc-url https://robinhood-rpc.publicnode.com 0xcA11bde05977b3631167028862bE2a173976CA11 'getBlockNumber()(uint256)' returns 26183281 while cast block-number returns 87477427 and cast call 0x0000000000000000000000000000000000000064 'arbBlockNumber()(uint256)' returns 87477432); (3) the points counter (tools/snapshot/build.mjs listedAt) tests each credit's block b against periods {from: 26183281, to: null}: every credit from step 1 has b >= 26183281, so all pre-listing credits earn points. Expected: only credits at rollup blocks >= 87,470,000 earn points. (4) Later P is delisted at rollup block 87,600,000: p.toBlock = 26,190,000-ish (Ethereum height); listedAt now requires b < 26190000, false for every rollup block, so the credits made while listed (87,470,000 to 87,600,000) earn 0 points. Expected: those keep their points. Also: two projects listed 5 seconds apart get the same fromBlock; a listing and delisting inside one Ethereum slot give fromBlock == toBlock.","severity":"medium","snippet":"                p.fromBlock = uint64(block.number);","title":"On Robinhood Chain block.number is the Ethereum height, so fromBlock/toBlock record the wrong chain's blocks and points are miscounted"},{"citation":"resolved","description":"applyListing (line 270) and setBeneficiary (line 522) refuse the registry's own address because 'a defended bond sent here would be an unrecoverable token self-transfer', but claimBond does not apply the same guard to its `to` argument. A claimant who passes the registry itself has bondOwed[msg.sender] set to 0 and then safeTransfer(address(this), amount) succeeds as a self-transfer on a standard ERC-20 (IMD on Robinhood Chain is a standard OFT ERC-20), so the tokens never leave the contract and no accounting entry refers to them any more. The registry has no sweep, so the amount is lost for good. Only the claimant's own mistake (or a front end passing a wrong address) triggers it, so low; but it is the one path left by which the registry's balance can exceed open bonds + owed bonds, which breaks the accounting invariant the RegistryAccountingInvariant test relies on. Minimal fix: in claimBond add `if (to == address(this)) revert InvalidBeneficiary();` next to the zero check, mirroring the other two guards.","line":500,"path":"src/ProjectRegistry.sol","reproduction":"test/scratch/ClaimBondSelf.t.sol (run with forge test --match-path test/scratch/ClaimBondSelf.t.sol): registry with bond 20 IMD; challenger lists a project, waits out the 7-day cooldown, challenges with a token that refuses transfers to the challenger; the Intake fails the question (status 2) so _clear records bondOwed[challenger] = 20e18. Then the token unblocks and the challenger calls claimBond(address(registry)). Actual: bondOwed[challenger] == 0, the registry's IMD balance is unchanged (the 20 IMD stayed inside it), the challenger received nothing, and no function can ever move those 20 IMD. Expected: revert (InvalidBeneficiary or ZeroAddress-style), leaving the claim intact so it can be claimed to a usable wallet.","severity":"low","snippet":"        oracleAsset.safeTransfer(to, amount);","title":"claimBond(to == address(this)) zeroes the claim and leaves the bond stranded in the registry"},{"citation":"resolved","description":"These are not defects to fix for this launch; the owner accepted them for the mainnet registry (launches #1371, #1378, #1428, #1463, #1495) and the brief says to record them. (1) Slot holding by a listed project's own beneficiary: after the cooldown the beneficiary (or any wallet of theirs) can call challengeForBeneficiary on its own project every round for 0.5 IMD; while the question is open nobody else can challenge (AskOpen, line 324) and the defended bond returns to the beneficiary (line 412), so the net cost is the fee; each round re-judges the project and the cooldown is not restarted, so this buys no immunity, only exclusivity of the slot per round. (2) Slot holding on ownerless projects: when projectOwner(project) returns zero (no owner(), a revert, a non-32-byte answer, a renounced owner, or an owner() that needs more than OWNER_CALL_GAS = 30,000 gas), anyone can applyListing for it for 0.5 IMD per round and hold the slot until the panel answers or expire clears it a day later; owned projects are protected by NotProjectOwner. (3) Fixed for life: the oracle signer (no setter is exposed; _setOracleSigner is only called in the constructor), the Intake address, the action id 'oracle.request@oracle-1', the asset, and PANEL_SIZE 15 / QUORUM 11; a key rotation, an oracle-2 action or an Intake move needs a new registry, and ORACLE_FEE() is the only protocol value read live. The oracle-consumer reference asks for these to be owner-settable; the brief's no-owner design overrides it knowingly. (4) The registry does not pin questionHash; it trusts the Intake's writer to pair each signed answer with the request that asked it (onOracleResult only checks msg.sender == intake, an open intakeId of its own, the signer, chainId 4663, the panel and issuedAt >= askedAt - 300 s). A writer that paired a signed yes for another of this registry's questions with a different open intakeId would be accepted; that is the stated trust model. (5) Failures and expiry are unsigned and only clear and refund; a writer that withholds an answer forces the same outcome through expire after a day, and anyone may call expire the second after askedAt + 1 day, after which a late callback reverts TooLate/UnknownRequest. (6) Robinhood Chain specifics checked live on 2026-10-13: Intake v2 at 0xa43e...de82 sells the action for 0.5 IMD in 0x5f7b...7127 (priceOf), callbackGas() is 200,000, and requests(bytes32) returns 7 words whose first four are (payer, callbackTarget, callbackSelector, completed): the rehearsal request 0x8fff1413...cefe4 decodes to payer 0x4b91...6821, zero target and selector, completed = 1, so expire's 4-word read (line 447) is compatible with the live contract; the Robinhood Intake's runtime hash (0xd96f270d...) differs from the Ethereum one's (0xdf76139e...), consistent with different immutables, so the deployer should not assume identical code beyond the probed ABI. No DELEGATECALL, CALLCODE, SELFDESTRUCT, proxy, initializer, mint, pause or seize path exists in src/ProjectRegistry.sol or src/oracle/OracleAttestation.sol; the constructor makes no external call; runtime is 23,427 bytes; launch.json has only kind/contracts/notes, one contract, seven string arguments in constructor order with correct checksums, notes 1,624 characters.","line":81,"path":"src/ProjectRegistry.sol","reproduction":"(1) Beneficiary B of listed project P, after challengeOpenAt: B calls challengeForBeneficiary(P, 'self', B) paying 0.5 IMD + 20 IMD; a stranger's challengeForBeneficiary(P, ...) now reverts AskOpen until the panel answers; a yes pays the 20 IMD bond back to B (as beneficiary) and leaves challengeOpenAt unchanged; B repeats. (2) Project Q whose owner() reverts: anyone calls applyListing(Q, ...) for 0.5 IMD; the real team's applyListing reverts AskOpen until the answer or expire(Q) a day later. (3) No function in the ABI changes oracleSigner, intake, oracleAsset, ACTION, PANEL_SIZE or QUORUM after deployment. (6) cast call --rpc-url https://robinhood-rpc.publicnode.com 0xa43e6f75ee006411f79ac1c84120606c2330de82 'requests(bytes32)' 0x8fff1413d2de625cfc38d6cd332246525764003af4e465ca443f34fa338cefe4 returns word 0 = 0x4b91078b2374c956a65f7af0999cae0a935e6821, words 1-2 = 0, word 3 = 1, words 4-6 = 0.","severity":"info","snippet":"    bytes32 public constant ACTION = \"oracle.request@oracle-1\";","title":"Accepted limits recorded for the adapter: question-slot holding, fixed protocol constants, trust in the Intake's writer, and the Intake on Robinhood Chain as probed"}],"hash":"c7c728b61a923de02b7942f9a947ad5dbb295d163a6e8437a254e8cf3997f61a","nodeId":"7dad946a-60e0-4d7a-8ba9-53eaede813c1","outcome":"completed","summary":"Review complete. The findings file holds three entries, all with snippets verified against the tree.\n\n**What I found**\n\n- **Medium, src/ProjectRegistry.sol:402.** On Robinhood Chain the EVM's block number is Ethereum's height, not the rollup's. I confirmed this live: a contract reading `block.number` there returned 26,183,281, identical to mainnet's current block, while the chain itself was at 87,477,427. The registry stamps `fromBlock` and `toBlock` and the Listed and Delisted events with that value. The points counter in tools/snapshot/build.mjs compares those against the Stacker logs' own rollup heights, so on this chain every pre-listing credit earns points and every credit of a later-delisted project loses them. The mainnet registry is unaffected. The fix is the owner's call since the brief wants byte-for-byte code: read ArbSys.arbBlockNumber() in the callback, or keep the code and make the indexer use the log's block height and document that the stored fields are Ethereum heights.\n- **Low, src/ProjectRegistry.sol:500.** `claimBond` accepts the registry's own address as the destination. The claim is zeroed and the self-transfer succeeds, stranding the bond with no sweep path. The other two self-address guards in the contract do not cover this one. A scratch test under test/scratch reproduces it.\n- **Info.** The accepted limits are recorded for the adapter: self-challenge slot holding, stranger applications on ownerless projects, the signer, Intake, action and panel constants fixed for life, trust in the writer's pairing without a pinned question hash, and the expire race. It also records the live Robinhood probes.\n\n**What I verified**\n\n- All 131 registry tests and the deployment test pass locally. Runtime is 23,427 bytes. No forbidden opcodes, proxies, initializers, mint, pause or seize paths.\n- launch.json has only the three schema keys, seven string arguments in constructor order, correctly checksummed addresses, and 1,624 characters of notes.\n- The live Robinhood Intake sells the action for 0.5 IMD, has a 200,000 callback gas stipend, and its `requests()` record for the rehearsal request decodes with `completed` as the fourth word, so `expire` reads it correctly. Its runtime hash differs from Ethereum's, which immutables would explain.\n\n**Coverage.** I read src/ProjectRegistry.sol and src/oracle/OracleAttestation.sol in full, the MockIntake test double, launch.json, and the points indexer. I did not read src/Stacker.sol or src/multichain since they are not deployed here, and I could not read the live Intake's or the Robinhood IMD token's source, only probe their behaviour over RPC.","treeHash":null,"usage":{"cachedInputTokens":1253235,"inputTokens":386,"model":"claude-fable-5-1","outputTokens":33396,"runtime":"claude","turns":28,"wallClockMs":522435}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"410247426ec5a6df","findings":[{"citation":"resolved","description":"The manifest notes (and the brief's 'byte for byte' / 'runtime is 23,427 bytes (the mainnet registry's)' facts) describe the deployed code as the Ethereum mainnet registry's (launch #1495, 0x7f53fa1543c682bb5de3f50c2cf3d1842ae57faa). The tree's src/ProjectRegistry.sol is not that code: it adds the IRegistryArbSys interface and _listingBlockNumber() (src/ProjectRegistry.sol:430-435), which on chain 4663 reads arbBlockNumber() from the 0x64 precompile for fromBlock/toBlock and the Listed/Delisted events instead of block.number, and it adds `if (to == address(this)) revert InvalidBeneficiary();` in claimBond (src/ProjectRegistry.sol:512). ADAPTATION.md (lines 11-15) records both changes and explicitly tells the manifest step to 'describe these two audit fixes in its notes rather than claim exact mainnet bytecode parity'; launch.json was not updated and still claims parity. Both code changes are correct and needed on Robinhood Chain (block.number there is the parent-chain height, so a mainnet-identical registry would record listing periods in the wrong block space; I confirmed on a fork of chain 4663 that arbBlockNumber() at 0x64 returns the RPC block height and that a cold delisting through the real IMD OFT fits the Intake's 200,000 callback gas). The defect is the provenance text: a reviewer, judge or the deployer's attestation reader who takes the notes at face value will assume a code path tested live on mainnet and Sepolia, while the ArbSys branch has only mock and fork coverage and no live run. The fix is to the notes (manifest step), not to the code: say the code is the mainnet registry's plus the two Robinhood audit fixes (rollup block height via ArbSys on chain 4663; claimBond refuses the registry as recipient), runtime 23,709 bytes.","line":17,"path":"launch.json","reproduction":"State: this tree at HEAD. 1) `forge build`; read out/ProjectRegistry.sol/ProjectRegistry.json .deployedBytecode.object: 23,709 bytes. 2) eth_getCode(0x7f53fa1543c682bb5de3f50c2cf3d1842ae57faa) on Ethereum (public RPC): 23,427 bytes; the two runtimes cannot be equal modulo immutables because the lengths differ. 3) `git diff origin/launch-mainnet HEAD -- src/ProjectRegistry.sol`: +IRegistryArbSys, +_listingBlockNumber(), fromBlock/toBlock/events switched to it, +claimBond self-recipient guard (24 changed lines). 4) `sed -n 17p launch.json` contains 'The code is the mainnet registry's (launch #1495, 0x7f53...7faa)'; `sed -n 11,15p ADAPTATION.md` says the registry 'is not byte-for-byte identical to mainnet launch #1495' and that the manifest notes must say so. Expected: notes describe the Robinhood-adapted code. Actual: notes claim the mainnet code.","severity":"low","snippet":"  \"notes\": \"imd/acc on Robinhood Chain (chain 4663), second launch: one contract, the ProjectRegistry, the list of the projects on Robinhood Chain whose cashback earns points, decided by IdentityMD oracle panels through Intake v2 (0xa43e...de82, the same address as on Ethereum), paid in Robinhood Chain's IMD (0x5f7b...7127, the same token over IMD's own LayerZero bridge). It names the live RemoteStacker 0x4de0...e898 (launch #1537) in its questions as the Stacker and never calls it; the RemoteStacker is not redeployed. The code is the mainnet registry's (launch #1495, 0x7f53...7faa): version 3.1 of the panel rules, owner-only applications, one beneficiary handoff per day, owed bonds, the registry itself refused as beneficiary. Settings agreed by the owner, the same as on mainnet: challenge bond 20 IMD, challenge cooldown 7 days (604800 s); panel 15 seats with 11 agreeing and a 1-day expiry are constants. Each ask pays the oracle fee read live from the Intake (ORACLE_FEE(), 0.5 IMD on R","title":"launch.json notes claim the mainnet registry's code, but the tree's ProjectRegistry differs (ArbSys listing blocks, claimBond self-guard; runtime 23,709 vs 23,427 bytes)"}],"hash":"fe5cce3ee2408eca96f021846e84300b41b00e65475df320baeb041232f73a95","nodeId":"ccb8f34b-e9c4-411e-9954-f43da50e0cb4","outcome":"completed","summary":"The review is complete and written to `.imd-findings.json` in the repository root. No source file was changed, and the scratch fork test I used for verification was removed.\n\n**Outcome: one low finding, no code defect in the registry's control flow.**\n\n- **Finding 1 (low), launch.json line 17.** The manifest notes say the code is the mainnet registry's, and the brief repeats \"byte for byte\" with a 23,427-byte runtime. The tree's registry differs: it reads the rollup block height through ArbSys on chain 4663 for listing periods, and claimBond refuses the registry itself as recipient. The built runtime is 23,709 bytes, and the diff against the launch-mainnet branch shows 24 changed lines. ADAPTATION.md told the manifest step to describe these two fixes instead of claiming parity. Both changes are correct and needed on Robinhood Chain. The fix belongs in the notes, not the code.\n\n**What I verified in my area (Execution Trace, Periphery, First Principles):**\n\n- Every registry entry point traced check by check: fee and bond are pulled only after all validation, every settle or clear path closes the question before any transfer, a bond leaves exactly once, and a late or duplicate Intake callback hits UnknownRequest.\n- Live reads on Robinhood Chain: the Intake, IMD, RemoteStacker and trial venue have code, the signer is an EOA, the Intake sells the question for 0.5 IMD with a 200,000 callback gas, and its bytecode equals Ethereum's except the EIP-712 chain cache. The `requestWithFailure` and `requests` selectors the registry calls are present and the latter returns the four-word tuple the registry decodes.\n- ArbSys at 0x64 answers `arbBlockNumber()` in the same block space as the RPC's block number.\n- On a fork of chain 4663, a cold delisting and a cold defense through the real IMD token and the real ArbSys both completed under a 200,000-gas callback.\n- The offline registry suite passes, with this result:\n\n```\nRan 23 test suites: 142 tests passed, 0 failed, 0 skipped\n```\n\n**Coverage record:** all 13 listed entry points have rows. The eight registry functions hold. The five Stacker, RemoteStacker and StackReceiver entry points are not deployed by this launch and the registry never calls them; I read them for the static-analysis leads and found those leads benign, so they are marked holds with that reason. Two invariant rows and a manifest row are included.\n\n**Accepted limits, recorded not reported:** self-challenge slot holding by a beneficiary, stranger slot holding on ownerless projects, and the fixed signer, Intake, action and panel constants.","treeHash":null,"usage":{"cachedInputTokens":1782221,"inputTokens":450,"model":"claude-fable-5-1","outputTokens":45833,"runtime":"claude","turns":34,"wallClockMs":740547}}],"verification":[{"checks":[{"durationMs":19466,"exitCode":0,"name":"build","output":"Compiling 117 files with Solc 0.8.26\nSolc 0.8.26 finished in 19.35s\nCompiler run successful!\n","passed":true},{"durationMs":10380,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/StackReceiverLaunch.t.sol:StackReceiverLaunchTest\n[SKIP] test_manifestFactoryDeploysOneContractWithNoExternalConstructorCalls() (gas: 0)\n[SKIP] test_manifestPinsExactlyTheMainnetReceiver() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 2 skipped; finished in 442.15µs (245.67µs CPU time)\n\nRan 2 tests for test/MainnetLaunchRegression.t.sol:MainnetLaunchRegressionTest\n[SKIP] test_manifestCreate2WorksWithoutDependenciesOrInitialization() (gas: 0)\n[SKIP] test_manifestPinsExactlyOneMainnetStacker() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 2 skipped; finished in 548.25µs (311.32µs CPU time)\n\nRan 1 test for test/RegistryMainnetFork.t.sol:RegistryMainnetForkTest\n[SKIP] test_mainnet_ownerAppliesToTheRealIntake_listedThenDefended() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 532.00µs (34.57µs CPU time)\n\nRan 5 tests for test/MainnetFork.t.sol:MainnetForkTest\n[SKIP] test_fork_creditNewThenRepeatTrader() (gas: 0)\n[SKIP] test_fork_firstCreditNeedsInitializationGas() (gas: 0)\n[SKIP] test_fork_liveFacts() (gas: 0)\n[SKIP] test_fork_oneBlockHoldThenRedeem() (gas: 0)\n[SKIP] test_fork_readmeBudgetFundsColdFirstCredit() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 691.55µs (89.67µs CPU time)\n\nRan 5 tests for test/StackReceiverMainnetFork.t.sol:StackReceiverMainnetForkTest\n[SKIP] test_fork_arrivalDepositsForEveryTrader() (gas: 0)\n[SKIP] test_fork_composeIsDeliveredOnceAndOnlyFromTheEndpoint() (gas: 0)\n[SKIP] test_fork_composeRejectsValueWithoutConsumingTheQueue() (gas: 0)\n[SKIP] test_fork_gasBudgetCoversOneTenAndFiftyTraders() (gas: 0)\n[SKIP] test_fork_liveFacts() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 411.23µs (56.45µs CPU time)\n\nRan 1 test for test/FactoryRehearsal.t.sol:FactoryRehearsalTest\n[PASS] test_sepoliaFactoryDeploysBothInOrderOnAnEmptyChain() (gas: 419613)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.14ms (903.93µs CPU time)\n\nRan 5 tests for test/SepoliaFork.t.sol:SepoliaForkTest\n[SKIP] test_sepolia_creditEventAndTotals() (gas: 0)\n[SKIP] test_sepolia_liveFacts() (gas: 0)\n[SKIP] test_sepolia_liveStackerValidCreditMatchesMainnetCandidate() (gas: 0)\n[SKIP] test_sepolia_mainnetCandidateRejectsLegacyUnreachableRecipients() (gas: 0)\n[SKIP] test_sepolia_pausedVaultRevertsThenRecovers() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 356.03µs (49.90µs CPU time)\n\nRan 5 tests for test/RobinhoodFork.t.sol:RobinhoodForkTest\n[SKIP] test_fork_OFTPeerRemovalBlocksTheOnlyExitAtomically() (gas: 0)\n[SKIP] test_fork_fiftyTradersQuoteAndFlush() (gas: 0)\n[SKIP] test_fork_flushBurnsHereAndTheEndpointAcceptsTheMessage() (gas: 0)\n[SKIP] test_fork_liveFacts() (gas: 0)\n[SKIP] test_fork_tooLittleFeeChangesNothing() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 606.08µs (63.97µs CPU time)\n\nRan 2 tests for test/RemoteStackerRefundFork.t.sol:RemoteStackerRefundForkTest\n[SKIP] test_liveEndpointRefundCannotReenterCreditOrFlush() (gas: 0)\n[SKIP] test_liveEndpointRejectedRefundRollsBackBurnAndCanRetryExactFee() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 2 skipped; finished in 2.17ms (21.16µs CPU time)\n\nRan 10 tests for test/RemoteTrialVenue.t.sol:RemoteTrialVenueTest\n[PASS] test_buyQueuesHalfTheFeeAndBurnsTheOtherHalf() (gas: 345318)\n[PASS] test_failedCreditPaysPlainImd() (gas: 233917)\n[PASS] test_gasIsCheckedBeforeTheCredit() (gas: 180521)\n[PASS] test_invalidTradersNeverResolve() (gas: 74197)\n[PASS] test_ownerCanOnlySeedOnce() (gas: 58967)\n[PASS] test_registryReadsTheOwner() (gas: 11132)\n[PASS] test_routerCallerResolvesToItsActiveCaller() (gas: 571015)\n[PASS] test_sellQueuesHalfTheFeeToo() (gas: 459360)\n[PASS] test_unknownContractCallerGetsNoCashbackItIsBurned() (gas: 242674)\n[PASS] test_wiring() (gas: 52742)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 1.88ms (1.31ms CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdListingTest\n[PASS] test_coldApplicationYes_deliveredWithin200k() (gas: 162871)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.42ms (3.85ms CPU time)\n\nRan 1 test for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodColdListingTest\n[PASS] test_coldRobinhoodListingFits200k() (gas: 179728)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.42ms (3.86ms CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdRejectionTest\n[PASS] test_coldApplicationNo_deliveredWithin200k() (gas: 156227)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.49ms (3.83ms CPU time)\n\nRan 5 tests for test/OracleConsumerConformance.t.sol:OracleConsumerConformanceTest\n[PASS] test_acceptsAFreshSignatureFromTheVectorKey() (gas: 182067)\n[PASS] test_callbackSelectorIsCanonical() (gas: 3671)\n[PASS] test_digestMatchesTheProtocol() (gas: 13686)\n[PASS] test_protocolSignaturePassesVerificationBeforePanelPolicy() (gas: 69545)\n[PASS] test_tamperingTheProtocolVectorFailsSignatureVerification() (gas: 64569)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 5.67ms (4.37ms CPU time)\n\nRan 1 test for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodColdDelistingTest\n[PASS] test_coldRobinhoodDelistingAndBondReturnFit200k() (gas: 218506)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.19ms (200.85µs CPU time)\n\nRan 2 tests for test/RegistryPolicyRevision.t.sol:RegistryPolicyRevisionTest\n[PASS] test_applicationAndChallengeRequireResolvedTraderAndExcludeLpFees() (gas: 6829404)\n[PASS] test_lpRebateDefeatsGrossFeeFloor() (gas: 5991)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.17ms (5.08ms CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdDelistingTest\n[PASS] test_coldDelistedChallenge_deliveredWithin200k() (gas: 171902)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.26ms (190.26µs CPU time)\n\nRan 3 tests for test/RegistryCallbackGas.t.sol:RegistryColdFailureTest\n[PASS] test_coldChallengeAfterDeadline_canExpire() (gas: 128213)\n[PASS] test_coldDisagreedChallenge_deliveredWithin200k() (gas: 140179)\n[PASS] test_coldRefusedChallenge_deliveredWithin200k() (gas: 140262)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 6.61ms (365.89µs CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdDefenseTest\n[PASS] test_coldDefendedChallenge_deliveredWithin200k() (gas: 190510)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.75ms (272.06µs CPU time)\n\nRan 1 test for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodColdOwedBondTest\n[PASS] test_coldRobinhoodDelistingRecordsOwedBondWithin200kAndRefusesSelfClaim() (gas: 362879)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.86ms (363.27µs CPU time)\n\nRan 4 tests for test/RegistryCooldownBoundary.t.sol:RegistryCooldownBoundaryTest\n[PASS] test_challengeExactlyAtCooldown_succeeds() (gas: 6106859)\n[PASS] test_challengeOneSecondBeforeCooldown_reverts() (gas: 3201787)\n[PASS] test_constructor_rejectsCooldownAboveMax() (gas: 14194)\n[PASS] test_keptChallenge_doesNotRestartCooldown() (gas: 9279553)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 11.25ms (11.49ms CPU time)\n\nRan 9 tests for test/RegistryApplicantGate.t.sol:RegistryApplicantGateTest\n[PASS] test_anyoneMayStillChallengeAnOwnedProject() (gas: 6421028)\n[PASS] test_misbehavingOwnerReadsAsNone() (gas: 15582598)\n[PASS] test_noOwnerFunctionOpenToAnyone() (gas: 3089189)\n[PASS] test_ownerChangeMovesTheRight() (gas: 3436229)\n[PASS] test_ownerMayApply() (gas: 3320997)\n[PASS] test_projectItselfMayApply() (gas: 3381856)\n[PASS] test_renouncedOwnerOpenToAnyone() (gas: 3284007)\n[PASS] test_squatterCannotBlockTheTeam() (gas: 3550460)\n[PASS] test_strangerRefusedBeforePaying() (gas: 390876)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 17.29ms (11.87ms CPU time)\n\nRan 9 tests for test/TrialVenue.t.sol:TrialVenueTest\n[PASS] test_buyCreditsHalfTheFeeAndBurnsTheOtherHalf() (gas: 434566)\n[PASS] test_gasIsCheckedBeforeTheCredit() (gas: 124458)\n[PASS] test_invalidTradersNeverResolve() (gas: 65332)\n[PASS] test_ownerCanOnlySeedOnce() (gas: 56951)\n[PASS] test_pausedVaultPaysPlainImd() (gas: 305091)\n[PASS] test_registryReadsTheOwner() (gas: 17255)\n[PASS] test_routerCallerResolvesToItsActiveCaller() (gas: 784096)\n[PASS] test_sellCreditsHalfTheFeeAndBurnsTheOtherHalf() (gas: 588348)\n[PASS] test_unknownContractCallerGetsNoCashbackItIsBurned() (gas: 572622)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 2.45ms (1.60ms CPU time)\n\nRan 2 tests for test/VaultTrustRegression.t.sol:VaultTrustRegressionTest\n[PASS] test_dustHoldThroughStackerAndDirectVault() (gas: 910632)\n[PASS] test_vaultOwnerCanSweepCashback() (gas: 637955)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.04ms (737.84µs CPU time)\n\nRan 7 tests for test/TraderResolution.t.sol:TraderResolutionTest\n[PASS] test_directNoCodeSenderCanBeResolvedWithoutTxOrigin() (gas: 303966)\n[PASS] test_emptyHookDataResolvesActiveMsgSenderAndCannotBeSwept() (gas: 381420)\n[PASS] test_hookDataTakesPrecedenceAndSupportsContractWallets() (gas: 477363)\n[PASS] test_invalidHookDataPaysPlainImdToKnownCallerNeverInvalidRecipient() (gas: 882426)\n[PASS] test_legacyEmptyHookDataCreditsRouterAndAnyoneCanSweep() (gas: 433080)\n[PASS] test_pausedVaultPaysPlainImdToResolvedMsgSender() (gas: 301439)\n[PASS] test_unknownContractOrInvalidMsgSenderNeverBecomesTheRecipient() (gas: 522893)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 2.92ms (1.83ms CPU time)\n\nRan 6 tests for test/RegistrySelfBeneficiary.t.sol:RegistrySelfBeneficiaryTest\n[PASS] test_acceptedSelfChallengeHoldsSlotUntilAnswerWithoutNewCooldown() (gas: 9461117)\n[PASS] test_applicationRefusesRegistryBeforeFeeOrRequest() (gas: 171010)\n[PASS] test_contractBeneficiaryStillReceivesBondAndCanHandOff() (gas: 6435143)\n[PASS] test_handoffRefusesRegistryAndPreservesBondRecipient() (gas: 6367834)\n[PASS] test_registryOwnedProjectCannotApplyWithRegistryAsBeneficiary() (gas: 507127)\n[PASS] test_rejectedHandoffDoesNotConsumeDailyHandoff() (gas: 3287790)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 4.54ms (3.88ms CPU time)\n\nRan 1 test for test/RegistrySepoliaFork.t.sol:RegistrySepoliaForkTest\n[SKIP] test_sepolia_applyPaysTheRealIntake_thenAnswerLists() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 138.37µs (11.80µs CPU time)\n\nRan 1 test for test/RemoteStackerLaunch.t.sol:RemoteStackerLaunchTest\n[SKIP] test_manifestDeploysOnlyRemoteStackerWithoutExternalConstructorCalls() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 176.19µs (86.79µs CPU time)\n\nRan 23 tests for test/ProjectRegistry.t.sol:ProjectRegistryTest\n[PASS] testFuzz_apply_nameIsSafeOrRefused(bytes) (runs: 256, μ: 270901, ~: 55874)\n[PASS] testFuzz_apply_rate(uint16) (runs: 256, μ: 394331, ~: 47867)\n[PASS] test_answer_freshnessAndPanelChecks() (gas: 3531117)\n[PASS] test_answer_mustBeSignedByTheOracleForThisContract() (gas: 3219851)\n[PASS] test_answer_onlyFromTheIntake_onlyForOurOpenRequest() (gas: 3229825)\n[PASS] test_apply_bodyIsTheOracleBody() (gas: 3317268)\n[PASS] test_apply_oneOpenQuestionAtATime_andNotWhenListed() (gas: 3227709)\n[PASS] test_apply_paysExactlyTheFeeAndAsks() (gas: 3117533)\n[PASS] test_apply_validation() (gas: 567226)\n[PASS] test_callbackOutOfGas_isRecoverableThroughExpire() (gas: 6062321)\n[PASS] test_challenge_defended_bondToBeneficiary_noNewCooldown() (gas: 6362524)\n[PASS] test_challenge_failureOrExpiry_returnsTheBond_projectStaysListed() (gas: 9363326)\n[PASS] test_challenge_lost_delistsFromThisBlock_bondBack() (gas: 9340308)\n[PASS] test_challenge_onlyListed_afterCooldown_oneAtATime() (gas: 6314566)\n[PASS] test_challenge_paysFeeAndBond_bodyNamesTheReason() (gas: 6469710)\n[PASS] test_constructor_rejectsZeroAddresses() (gas: 6519)\n[PASS] test_constructor_wiring() (gas: 74067)\n[PASS] test_expire_afterADay_orWhenTheIntakeCompletedWithoutAnAnswer() (gas: 6115895)\n[PASS] test_failure_clearsTheApplication_andNeverLists() (gas: 5990106)\n[PASS] test_failure_onlyFromTheIntake_onlyForOurOpenRequest() (gas: 3057732)\n[PASS] test_no_rejects_andTheProjectCanApplyAgain() (gas: 6171996)\n[PASS] test_setBeneficiary_onlyTheBeneficiaryOfAListedProject() (gas: 3319418)\n[PASS] test_yes_listsFromThisBlock() (gas: 3160740)\nSuite result: ok. 23 passed; 0 failed; 0 skipped; finished in 52.89ms (71.32ms CPU time)\n\nRan 21 tests for test/RemoteStacker.t.sol:RemoteStackerTest\n[PASS] testFuzz_flush_conservesEveryWei(uint96,uint96,uint32) (runs: 256, μ: 629540, ~: 305055)\nLogs:\n  Bound result 159\n  Bound result 7699\n\n[PASS] testFuzz_tip_neverAboveTwoPercent(uint64,uint96) (runs: 256, μ: 182587, ~: 182651)\nLogs:\n  Bound result 3\n\n[PASS] test_constructor_wiringWithoutExternalCalls() (gas: 3842)\n[PASS] test_credit_clockIsAmountWeighted() (gas: 292087)\n[PASS] test_credit_contractWalletPaidPlainUnlessRegistered() (gas: 665088)\n[PASS] test_credit_eip7702WalletGoesThroughTheQueue() (gas: 290204)\n[PASS] test_credit_queuesForPlainWallet() (gas: 226667)\n[PASS] test_credit_rejectsInvalidTraders() (gas: 172391)\n[PASS] test_credit_shortAllowanceOrBalanceReverts() (gas: 187984)\n[PASS] test_credit_zeroAmountMovesNothing() (gas: 58649)\n[PASS] test_flush_atMostFiftyRecipients() (gas: 85104)\n[PASS] test_flush_dustIsNeverTippedTwice() (gas: 875951)\n[PASS] test_flush_fiftyRecipients() (gas: 9487069)\n[PASS] test_flush_isAtomic_sendFailureChangesNothing() (gas: 425526)\n[PASS] test_flush_nothingToFlushReverts() (gas: 279365)\n[PASS] test_flush_sendsRoundedAmountsPaysTipAndRefundsExcess() (gas: 1082997)\n[PASS] test_flush_skipsEmptyAndDuplicateAndDustOnlyRecipients() (gas: 892843)\n[PASS] test_flush_traderCanFlushThemselvesAtOnce() (gas: 760986)\n[PASS] test_setEthereumRecipient_refusesInvalidAndIsPerCaller() (gas: 358628)\n[PASS] test_tip_growsLinearlyAndCapsAtTwoPercent() (gas: 249888)\n[PASS] test_tip_newCashbackNeverInheritsACappedClock() (gas: 296946)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 57.98ms (57.44ms CPU time)\n\nRan 9 tests for test/RegistryBondOwed.t.sol:RegistryBondOwedTest\n[PASS] test_blockedBeneficiary_signedYes_defendsAndOwesBond() (gas: 1111896)\n[PASS] test_blockedChallenger_expireClearsAndOwesBond() (gas: 939336)\n[PASS] test_blockedChallenger_failureClearsAndOwesBond() (gas: 1232993)\n[PASS] test_blockedChallenger_signedNo_delistsAndOwesBond() (gas: 1220591)\n[PASS] test_claimBond_refusesRegistryAndPreservesRecoverableBond() (gas: 1132622)\n[PASS] test_claimBond_refusesZeroAddressAndNothingOwed() (gas: 67205)\n[PASS] test_falseReturningToken_owesBond() (gas: 1053450)\n[PASS] test_owedBondsAccumulate() (gas: 1422327)\n[PASS] test_unblocked_paysAtOnce() (gas: 951543)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 66.37ms (19.05ms CPU time)\n\nRan 6 tests for test/RemoteStackerAuditRegression.t.sol:RemoteStackerAuditRegressionTest\n[PASS] testFuzz_clockRounding_doesNotChargeForFreshAge(uint96,uint96,uint32) (runs: 256, μ: 424703, ~: 421702)\nLogs:\n  Bound result 711\n  Bound result 1101999955\n  Bound result 263271\n\n[PASS] test_bridgeRefusal_preservesCustodyAndContinuesAcceptingCredits() (gas: 1295421)\n[PASS] test_clockRounding_smallFreshCreditCannotInheritTheFullTip() (gas: 1269459)\n[PASS] test_clockRounding_uncappedBalanceAlsoFavorsTrader() (gas: 423477)\n[PASS] test_credit_refusesEthereumTokenAndEndpointBeforePullingFunds() (gas: 308594)\n[PASS] test_setEthereumRecipient_refusesEthereumTokenAndEndpoint() (gas: 400356)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 59.59ms (59.61ms CPU time)\n\nRan 1 test for test/RegistryRobinhoodLaunch.t.sol:RegistryRobinhoodLaunchTest\n[PASS] test_manifestDeploysOnlyRegistryOnEmptyRobinhoodChain() (gas: 14610676)\nLogs:\n  ProjectRegistry runtime bytes: 23709\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 83.57ms (83.28ms CPU time)\n\nRan 16 tests for test/StackReceiver.t.sol:StackReceiverTest\n[PASS] testFuzz_delivery_mixedZeroAndPositiveShares(uint96,uint96,bool) (runs: 256, μ: 489408, ~: 489260)\nLogs:\n  Bound result 111854738929\n  Bound result 358013317477131663\n\n[PASS] testFuzz_delivery_sumExactlyDelivered(uint96,uint96) (runs: 256, μ: 380781, ~: 380760)\n[PASS] test_constructor_wiringWithoutExternalCalls() (gas: 8112)\n[PASS] test_delivery_assetMismatchRefusesTheFirstDelivery() (gas: 1930170)\n[PASS] test_delivery_depositsForEachTraderAndKeepsNothing() (gas: 552622)\n[PASS] test_delivery_inconsistentPreviewRollsBackInsteadOfSpendingOtherFunds() (gas: 626160)\n[PASS] test_delivery_listMustAddUpToTheAmountReceived() (gas: 363345)\n[PASS] test_delivery_onlyFromTheEndpointAndOnlyForIMD() (gas: 439485)\n[PASS] test_delivery_pausedVaultPaysPlainIMD() (gas: 584380)\n[PASS] test_delivery_rejectsNativeValueAndCanRetryWithoutIt() (gas: 556396)\n[PASS] test_delivery_revertingDepositPaysOnlyThatTraderPlainIMD() (gas: 416475)\n[PASS] test_delivery_revertingPreviewPaysOnlyThatTraderPlainIMD() (gas: 400333)\n[PASS] test_delivery_strayIMDIsNeverSpent() (gas: 344430)\n[PASS] test_delivery_zeroAmountEntryIsSkipped() (gas: 304641)\n[PASS] test_delivery_zeroSharesPaysPlainIMDWithoutDepositing() (gas: 465715)\n[PASS] test_vault_zeroShareDepositStillConsumesAssets() (gas: 275682)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 88.30ms (88.64ms CPU time)\n\nRan 20 tests for test/Stacker.t.sol:StackerTest\n[PASS] testFuzz_credit(address,uint256) (runs: 256, μ: 394610, ~: 394377)\nLogs:\n  Bound result 320982649534473201634594\n\n[PASS] testFuzz_credit_shortAllowanceAlwaysReverts(uint256,uint256) (runs: 256, μ: 368173, ~: 368888)\nLogs:\n  Bound result 3\n  Bound result 0\n\n[PASS] testFuzz_credit_twoTradersProportional(uint256,uint256) (runs: 256, μ: 430267, ~: 430416)\nLogs:\n  Bound result 94931199277680612767534\n  Bound result 3\n\n[PASS] test_constructor_doesNotCallExistingVaultOrToken() (gas: 56148)\n[PASS] test_constructor_vaultWithoutCode_creditCannotMove() (gas: 131325)\n[PASS] test_constructor_wiringWithoutExternalCalls() (gas: 43846)\n[PASS] test_credit_manyProjectsAndTraders() (gas: 9375713)\n[PASS] test_credit_revertsOnShortAllowance() (gas: 378525)\n[PASS] test_credit_revertsOnShortBalance() (gas: 370632)\n[PASS] test_credit_revertsOnZeroShares() (gas: 383379)\n[PASS] test_credit_revertsWhenVaultPaused() (gas: 508239)\n[PASS] test_credit_sharesFollowVaultPrice() (gas: 617949)\n[PASS] test_credit_sharesGoOnlyToTrader() (gas: 374498)\n[PASS] test_credit_totalsAndEvent() (gas: 494195)\n[PASS] test_credit_zeroAmountReturnsZeroNoEvent() (gas: 80135)\n[PASS] test_credit_zeroTraderReverts() (gas: 66272)\n[PASS] test_failedFirstCredit_rollsBackApprovalAndRetriesValidation() (gas: 531891)\n[PASS] test_firstCredit_approvesOnce_andLaterCreditsStillWork() (gas: 397571)\n[PASS] test_firstCredit_revertsOnAssetMismatch() (gas: 791662)\n[PASS] test_integrator_tryCatchSurvivesPausedVault() (gas: 1053849)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 150.63ms (160.54ms CPU time)\n\nRan 3 tests for test/MultichainFlow.t.sol:MultichainFlowTest\n[PASS]\nMultichainFlowTest invariants:\n[PASS] invariant_receiverKeepsNothingAndVaultHoldsDeliveries\n[PASS] invariant_remoteStackerHoldsExactlyWhatIsWaiting\n MultichainFlowTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭-------------------+----------+-------+---------+----------╮\n| Contract          | Selector | Calls | Reverts | Discards |\n+===========================================================+\n| MultichainHandler | credit   | 655   | 0       | 0        |\n|-------------------+----------+-------+---------+----------|\n| MultichainHandler | flush    | 688   | 0       | 0        |\n|-------------------+----------+-------+---------+----------|\n| MultichainHandler | pass     | 705   | 0       | 0        |\n╰-------------------+----------+-------+---------+----------╯\n\n[PASS] test_endToEnd_creditFlushDeliver() (gas: 1460013)\n[PASS] test_handlerReachesFlushes() (gas: 1419865)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 348.37ms (347.51ms CPU time)\n\nRan 1 test for test/StackerInvariant.t.sol:StackerInvariantTest\n[PASS]\nStackerInvariantTest invariants:\n[PASS] invariant_stackerHoldsNothing\n[PASS] invariant_totalsConsistent\n[PASS] invariant_vaultConservation\n StackerInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭----------------+-------------+-------+---------+----------╮\n| Contract       | Selector    | Calls | Reverts | Discards |\n+===========================================================+\n| StackerHandler | advance     | 436   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | credit      | 399   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | donate      | 402   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | redeem      | 403   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | togglePause | 408   | 0       | 0        |\n╰----------------+-------------+-------+---------+----------╯\n\nLogs:\n  Bound result 92\n  Bound result 10\n  Bound result 10\n  Bound result 1459502\n  Bound result 200227789992090691488\n  Bound result 6\n  Bound result 5000000000000000000\n  Bound result 4294967295\n  Bound result 2309\n  Bound result 8000000000000000000\n  Bound result 6\n  Bound result 3664\n  Bound result 1065\n  Bound result 3\n  Bound result 4\n  Bound result 8\n  Bound result 10\n  Bound result 555987722326316084216\n  Bound result 9\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 563.34ms (560.28ms CPU time)\n\nRan 2 tests for test/ProjectRegistryInvariant.t.sol:ProjectRegistryInvariantTest\n[PASS]\nProjectRegistryInvariantTest invariants:\n[PASS] invariant_holdsOnlyOpenBonds\n[PASS] invariant_listingCounts\n[PASS] invariant_recordsConsistent\n ProjectRegistryInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭-----------------+-------------------+-------+---------+----------╮\n| Contract        | Selector          | Calls | Reverts | Discards |\n+==================================================================+\n| RegistryHandler | answer            | 274   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | applyFor          | 269   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | challengeFor      | 270   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | completeAndExpire | 235   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | expireStale       | 264   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | failFor           | 228   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | handOver          | 261   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | passTime          | 247   | 0       | 0        |\n╰-----------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 10597\n  Bound result 80\n  Bound result 70400\n  Bound result 43290\n\n[PASS] test_handlerReachesEveryOutcome() (gas: 18969559)\nLogs:\n  Bound result 50\n  Bound result 25\n  Bound result 100\n  Bound result 172800\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 609.08ms (608.11ms CPU time)\n\nRan 18 tests for test/RegistryRevisionRegression.t.sol:RegistryRevisionRegressionTest\n[PASS] testFuzz_answerIsConsumedAcrossApplications(bool) (runs: 256, μ: 9345827, ~: 9348907)\n[PASS] testFuzz_beneficiaryUnlocksAfterFailureOrExpiry(bool) (runs: 256, μ: 6341115, ~: 6346830)\n[PASS] testFuzz_challengeAllowsRateChangesWithinTheRules(uint16) (runs: 256, μ: 7327474, ~: 7327649)\nLogs:\n  Bound result 35\n\n[PASS] testFuzz_validCooldownCanList(uint64) (runs: 256, μ: 3240378, ~: 3240072)\nLogs:\n  Bound result 215\n\n[PASS] test_applicationAnswerCannotDefendAChallengeAndSpendItsBond() (gas: 6302748)\n[PASS] test_beneficiaryCannotBlockEveryChallengeByTogglingWallets() (gas: 6765047)\n[PASS] test_beneficiaryCannotTransferAfterChallengeDelists() (gas: 6303253)\n[PASS] test_challengeBodyLimitsAndConsumerDomain() (gas: 6723366)\n[PASS] test_constructorRefusesOverflowingAndExcessiveCooldowns() (gas: 16556)\n[PASS] test_handoffIntervalBoundaryAndRelisting() (gas: 12675432)\n[PASS] test_invalidAnswerDoesNotConsumeUUID() (gas: 3301263)\n[PASS] test_legacyChallengeCannotChargeAfterAnyBeneficiaryHandoff() (gas: 12667248)\n[PASS] test_openChallengeLocksBeneficiaryAndDefendedBondDestination() (gas: 6742996)\n[PASS] test_pinnedChallengePreservesCooldownAndSlotRules() (gas: 6415737)\n[PASS] test_pinnedChallengeRefusesFrontrunBeforeAnyPayment() (gas: 6855192)\n[PASS] test_selfChallengeOccupiesSlotOnlyUntilItSettles() (gas: 9349636)\n[PASS] test_settingSameBeneficiaryDoesNotDisableLegacyChallenge() (gas: 6330276)\n[PASS] test_zeroAndMaximumCooldownCanList() (gas: 6391229)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 813.28ms (1.43s CPU time)\n\nRan 8 tests for test/RegistryBodyProperties.t.sol:RegistryBodyPropertiesTest\n[PASS] testFuzz_applicationBodyRoundTripsValidText(bytes32,uint8,uint8,uint16) (runs: 1000, μ: 3615393, ~: 3580021)\nLogs:\n  Bound result 34\n  Bound result 13\n  Bound result 49\n\n[PASS] testFuzz_challengeBodyRoundTripsValidText(bytes32,uint16) (runs: 1000, μ: 6801210, ~: 6762196)\nLogs:\n  Bound result 257\n\n[PASS] test_applicationMaximumTextAndRate() (gas: 3862538)\n[PASS] test_applicationMinimumTextAndRate() (gas: 3505038)\n[PASS] test_challengeMaximumReason() (gas: 7118882)\n[PASS] test_challengeMinimumReason() (gas: 6644215)\n[PASS] test_everyForbiddenByteIsRejectedInEveryUserTextFieldBeforePayment() (gas: 53799866)\n[PASS] test_textLengthsJustOutsideLimitsAreAtomic() (gas: 3750855)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 813.43ms (1.59s CPU time)\n\nRan 19 tests for test/StackerEdges.t.sol:StackerEdgesTest\n[PASS] testFuzz_credit_pausedAlwaysRevertsAndMovesNothing(address,uint256) (runs: 1000, μ: 234721, ~: 234510)\nLogs:\n  Bound result 600000000000000000\n\n[PASS] testFuzz_credit_repeatedCyclesExtractNoDust(uint256,uint8) (runs: 1000, μ: 1570356, ~: 1371088)\nLogs:\n  Bound result 4\n\n[PASS] testFuzz_credit_shortBalanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 388826, ~: 388782)\nLogs:\n  Bound result 11568\n  Bound result 255\n\n[PASS] testFuzz_credit_thenRedeem_noFreeProfit(uint256,uint256,uint256) (runs: 1000, μ: 737684, ~: 761932)\nLogs:\n  Bound result 5644587357594686488786\n  Bound result 645116630138\n  Bound result 2228550684816835\n\n[PASS] testFuzz_credit_traderValueWithinOneShareOfAmount(uint256,uint256,uint256) (runs: 1000, μ: 681945, ~: 689024)\nLogs:\n  Bound result 4200000\n  Bound result 7255\n  Bound result 745\n\n[PASS] testFuzz_credit_zeroSharesGuardTracksVaultPreview(uint256,uint256) (runs: 1000, μ: 488459, ~: 510443)\nLogs:\n  Bound result 255\n  Bound result 11568\n\n[PASS] test_credit_allowanceConsumedExactly_secondCallReverts() (gas: 615815)\n[PASS] test_credit_astronomicalButRepresentable() (gas: 365250)\n[PASS] test_credit_balanceConsumedExactly_secondCallReverts() (gas: 591245)\n[PASS] test_credit_eventMatchesReturnAndBalanceDeltaAtNonUnitPrice() (gas: 662927)\n[PASS] test_credit_maxUint_revertsCleanlyInVaultMath() (gas: 238919)\n[PASS] test_credit_oneWei() (gas: 361849)\n[PASS] test_credit_pausedBeatsShortAllowance_nothingPulled() (gas: 468574)\n[PASS] test_credit_projectIsTrader_countedOnBothSides() (gas: 326778)\n[PASS] test_credit_reentrancyFromVaultIsBlocked() (gas: 737091)\n[PASS] test_credit_zeroAmountWhilePaused_returnsZeroWithoutTouchingVault() (gas: 91175)\n[PASS] test_credit_zeroTraderWhilePaused_stillZeroTrader() (gas: 89528)\n[PASS] test_credit_zeroTraderWithShortAllowance_stillZeroTrader() (gas: 285166)\n[PASS] test_strayImdInStacker_isNeverSpentByCredit() (gas: 522405)\nSuite result: ok. 19 passed; 0 failed; 0 skipped; finished in 553.92ms (1.89s CPU time)\n\nRan 20 tests for test/RegistryAdversarial.t.sol:RegistryAdversarialTest\n[PASS] testFuzz_nonCanonicalBoolCannotDelist(uint256) (runs: 1000, μ: 6554946, ~: 6554891)\nLogs:\n  Bound result 1287737179150628531391077931\n\n[PASS] testFuzz_oldCallbacksCannotCloseReplacementApplication(uint8) (runs: 1000, μ: 6640341, ~: 6646968)\nLogs:\n  Bound result 2\n\n[PASS] testFuzz_pendingDeadlineStillAllowsAnswerButNotExpiry(bool,bool) (runs: 1000, μ: 5061485, ~: 6569554)\n[PASS] testFuzz_shortBoolEncodingCannotReleaseBond(uint8) (runs: 1000, μ: 6433888, ~: 6433626)\nLogs:\n  Bound result 1\n\n[PASS] test_answerBeforeAskToleranceHasExactBoundary() (gas: 3415208)\n[PASS] test_attestationExpiryIsInclusive() (gas: 3405667)\n[PASS] test_beneficiaryHandoverWaitsForSettlementAndRevokesOldWallet() (gas: 9832017)\n[PASS] test_challengeCooldownHasExactBoundary() (gas: 6413643)\n[PASS] test_challengeShortAllowanceCannotBorrowDonatedFunds() (gas: 3593049)\n[PASS] test_emptyAndMalformedSignaturesCannotSettle() (gas: 4191193)\n[PASS] test_everySignedFieldIsAuthenticatedBeforeABondCanMove() (gas: 10614566)\n[PASS] test_futureIssuedAtToleranceHasExactBoundary() (gas: 3405956)\n[PASS] test_intakeRevertRollsBackFeeBondApprovalAndOpenRecord() (gas: 6687614)\n[PASS] test_maximumFeeAdditionRevertsWithoutChangingListing() (gas: 3529651)\n[PASS] test_oldChallengeCannotRefundTwiceOrCloseNewChallenge() (gas: 9957131)\n[PASS] test_oneSecondAfterDeadlineCannotReleaseBondToBeneficiary() (gas: 6561589)\n[PASS] test_signatureForSameAddressOnAnotherChainCannotReleaseBond() (gas: 6575520)\n[PASS] test_starvedChallengeCallbackRefundsOnlyChallenger() (gas: 6558665)\n[PASS] test_thirdPartyPaidQuestionCannotListOurProject() (gas: 3627388)\n[PASS] test_tokenReturningFalseCannotCreatePaidRequest() (gas: 3537810)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 822.09ms (1.67s CPU time)\n\nRan 8 tests for test/StackerGas.t.sol:StackerGasTest\n[PASS] testFuzz_readmeLateFailurePaysOnceAndNextCreditWorks(uint96,bool,bool) (runs: 1000, μ: 3268108, ~: 3268005)\nLogs:\n  Bound result 16741\n\n[PASS] test_oldGasCapFailsRepeatedlyAndDoesNotPrimeVault() (gas: 600749)\n[PASS] test_readmeBudgetFundsColdFirstCredit() (gas: 359519)\n[PASS] test_readmeFallbackAfterFirstMintReturnsZeroShares() (gas: 3264309)\n[PASS] test_readmeFallbackAfterRepeatMintReverts() (gas: 3264412)\n[PASS] test_readmeFallbackHasGasEvenWhenCreditExhaustsItsBudget() (gas: 473042)\n[PASS] test_readmeFallbackPaysPlainImdWhenVaultFails() (gas: 272236)\n[PASS] test_readmeGasGuardRejectsLowEstimateBeforeFallback() (gas: 94010)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 788.34ms (789.41ms CPU time)\n\nRan 17 tests for test/StackerDependencyFailures.t.sol:StackerDependencyFailuresTest\n[PASS] testFuzz_shortAssetReturnFailsBeforeAnyApproval(uint8) (runs: 1000, μ: 674644, ~: 674352)\nLogs:\n  Bound result 0\n\n[PASS] testFuzz_shortDepositReturnIsAtomic(uint8,bool,uint96) (runs: 1000, μ: 903386, ~: 885097)\nLogs:\n  Bound result 5\n  Bound result 1431\n\n[PASS] testFuzz_tokenFailureIsAtomic(uint8,uint96,bool) (runs: 1000, μ: 842787, ~: 840448)\nLogs:\n  Bound result 1\n  Bound result 52\n\n[PASS] testFuzz_vaultPullFailureIsAtomic(uint8,uint96,bool) (runs: 1000, μ: 877066, ~: 878029)\nLogs:\n  Bound result 2\n  Bound result 2428038167\n\n[PASS] test_assetRevertDataBubblesAndDoesNotPrimeApproval() (gas: 670793)\n[PASS] test_dirtyAssetAddressIsRejectedBeforeAnyApproval() (gas: 673028)\n[PASS] test_falseApprovalRollsBackAndNextCreditRevalidates() (gas: 798887)\n[PASS] test_falsePullAfterMovingOneWeiRollsBackFirstApproval() (gas: 831737)\n[PASS] test_falseVaultPullRollsBackBothTransfersAndFirstApproval() (gas: 871106)\n[PASS] test_invalidBooleanApprovalRollsBack() (gas: 798824)\n[PASS] test_invalidBooleanPullRollsBack() (gas: 831884)\n[PASS] test_invalidBooleanVaultPullRollsBackEntireProjectBalance() (gas: 871365)\n[PASS] test_missingDepositReturnRollsBackActualMint() (gas: 936401)\n[PASS] test_oneByteShortDepositReturnRollsBackActualMintAndHold() (gas: 865107)\n[PASS] test_revertingApprovalRollsBackAndNextCreditRevalidates() (gas: 804553)\n[PASS] test_revertingPullBubblesErrorAfterAnEarlierCredit() (gas: 838492)\n[PASS] test_revertingVaultPullAfterEarlierCreditLeavesMatureSharesAlone() (gas: 867788)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 811.73ms (1.41s CPU time)\n\nRan 9 tests for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodBlocksTest\n[PASS] testFuzz_periodExcludesEarlierCreditsAndRetainsEarnedOnDelisting(uint32,uint32,uint32) (runs: 256, μ: 6364796, ~: 6364745)\nLogs:\n  Bound result 80000029\n  Bound result 10000000\n  Bound result 86183281\n\n[PASS] test_blockSourceUsesExecutionChainRatherThanQuestionChain() (gas: 3241672)\n[PASS] test_distinctRollupTransitionsWithinOneParentBlock() (gas: 9412666)\n[PASS] test_listingAndDelistingUseRollupBlocksInStorageAndEvents() (gas: 6369026)\n[PASS] test_mainnetAndSepoliaUseNumberEvenWhenQuestionChainIsRobinhood() (gas: 12656298)\n[PASS] test_malformedArbSysCannotEraseAnExistingListingOrBond() (gas: 6430033)\n[PASS] test_rejectionDefenseAndFailureDoNotReadArbSys() (gas: 12743357)\n[PASS] test_robinhoodQuestionNamesLiveRemoteStackerWithoutCallingIt() (gas: 3460872)\n[PASS] test_unavailableArbSysCannotSilentlyUseParentHeight() (gas: 3264922)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 821.34ms (836.54ms CPU time)\n\nRan 17 tests for test/RemoteStackerAdversarial.t.sol:RemoteStackerAdversarialTest\n[PASS] testFuzz_batchPermutationDuplicatesAndEventsPreserveEntitlements(uint96,uint96,uint32) (runs: 1000, μ: 1715364, ~: 1729794)\nLogs:\n  Bound result 99999999999000000007382\n  Bound result 99999999999000000004288\n  Bound result 6197\n  Bound result 6197\n\n[PASS] testFuzz_reentrancyRejectedAtPullPlainPaymentSendAndTip(uint8,bool) (runs: 1000, μ: 849476, ~: 709956)\nLogs:\n  Bound result 0\n\n[PASS] test_batchLimitCountsRawEntriesEvenWhenEveryEntryIsADuplicate() (gas: 1279539)\n[PASS] test_bridgeFailureAfterBurnRollsBackThenSameBatchCanBeRetried() (gas: 1873213)\n[PASS] test_delegationAndOrdinaryCodeRouteDifferentlyDespiteRegistration() (gas: 745039)\n[PASS] test_entireSupplyCanQueueWithExactAllowanceAndExit() (gas: 767755)\n[PASS] test_failedPlainPaymentRollsBackPullAllowanceAndTotalPaid() (gas: 1044225)\n[PASS] test_falseTransferFromRollsBackFiniteAllowanceAndExistingQueue() (gas: 832805)\n[PASS] test_noReturnTokenAcceptedForPullPlainPaymentAndTip() (gas: 875882)\n[PASS] test_quoteFailureBubblesButEmptyAndDustQueuesNeedNoBridgeQuote() (gas: 1332022)\n[PASS] test_recipientChangesAffectFutureCreditsOnlyAndCannotAlterAnotherWallet() (gas: 1332815)\n[PASS] test_refundCallbackCannotCreditOrFlushAndExcessGoesToCaller() (gas: 1641243)\n[PASS] test_rejectedRefundRevertsAtomicallyAndExactFeeStillWorks() (gas: 2531390)\n[PASS] test_revertingTransferFromBubblesErrorAndPreservesQueue() (gas: 832046)\n[PASS] test_tipRequiresBothOneBpsOfAgeAndOneWholeTipStep() (gas: 1226003)\n[PASS] test_tipTransferFailureUndoesBurnPacketFeesAndEveryQueueDebit() (gas: 1919714)\n[PASS] test_zeroCreditsDoNotCallTokenEmitPointsOrResetAnAgedClock() (gas: 1209458)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 801.89ms (1.18s CPU time)\n\nRan 7 tests for test/StackerExternalCalls.t.sol:StackerExternalCallsTest\n[PASS] testFuzz_creditMatchesDirectDepositFromSameVaultState(uint96,uint96,uint96) (runs: 1000, μ: 976913, ~: 976865)\nLogs:\n  Bound result 99999000000000000002569\n  Bound result 6298\n  Bound result 12701\n\n[PASS] testFuzz_lateFailureRollsBackAllEffects(uint96,bool,bool) (runs: 1000, μ: 2935700, ~: 2941251)\nLogs:\n  Bound result 1321916662\n\n[PASS] test_anotherCallersApprovalCannotBeSpent() (gas: 598595)\n[PASS] test_noReturnTokenStillMovesExactAssetsAndShares() (gas: 3117679)\n[PASS] test_oneWeiLateRevertRollsBackFirstApproval() (gas: 2937621)\n[PASS] test_tokenReentryDuringApprovalAndPullCannotCreateExtraCashback() (gas: 3738736)\n[PASS] test_zeroShareReturnRollsBackAnActualMint() (gas: 2925987)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 821.73ms (1.54s CPU time)\n\nRan 8 tests for test/RegistryHandoffInterval.t.sol:RegistryHandoffIntervalTest\n[PASS] testFuzz_challengeNamingTheWalletInForceAlwaysFiles(uint64) (runs: 1000, μ: 6539607, ~: 6539773)\nLogs:\n  Bound result 82805\n\n[PASS] testFuzz_secondHandoffBoundary(uint64) (runs: 1000, μ: 3316460, ~: 3314358)\nLogs:\n  Bound result 51825\n\n[PASS] test_checksBeforeTheIntervalStillComeFirst() (gas: 6494279)\n[PASS] test_clockIsPerProject() (gas: 6504390)\n[PASS] test_expiredAndFailedQuestionsLeaveTheClockAlone() (gas: 9417657)\n[PASS] test_handoffEmitsEventAndStartsExactInterval() (gas: 3291203)\n[PASS] test_intervalRefusesAThirdWalletToo() (gas: 3334032)\n[PASS] test_relistingByApplicationNamesANewWalletWithoutAHandoff() (gas: 18823021)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 822.24ms (1.50s CPU time)\n\nRan 10 tests for test/RegistryAuditRegression.t.sol:RegistryAuditRegressionTest\n[PASS] testFuzz_applicationPaysCurrentPrice(uint96) (runs: 256, μ: 3106345, ~: 3106154)\nLogs:\n  Bound result 12184\n\n[PASS] test_defendedChallengeFromAnotherWalletDoesNotRenewImmunity() (gas: 9334907)\n[PASS] test_defendedSelfChallengeDoesNotRenewImmunity() (gas: 21882005)\n[PASS] test_permissionlessApplicantCanOccupySlotUntilRejected() (gas: 6211160)\n[PASS] test_priceRiseAndFall_preserveBondAndExactPayment() (gas: 9528960)\n[PASS] test_retiredActionApplicationMovesNothing() (gas: 281247)\n[PASS] test_retiredActionRefusesBeforePaymentAndPreservesListing() (gas: 6409968)\n[PASS] test_signedAnswerMustReachItsOwnQuorum() (gas: 3221964)\n[PASS] test_stakingFaucetTokenCannotPayOracleFee() (gas: 4326870)\n[PASS] test_staleExactApprovalCannotSpendAnUnexpectedPriceIncrease() (gas: 345326)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 822.29ms (831.63ms CPU time)\n\nRan 15 tests for test/StackReceiverAdversarial.t.sol:StackReceiverAdversarialTest\n[PASS] testFuzz_headerFieldsPreserveAmountSourceAndBeneficiaries(uint64,uint32,bytes32,bytes32,uint64) (runs: 1000, μ: 461537, ~: 461816)\nLogs:\n  Bound result 1933273157\n\n[PASS] testFuzz_shortOFTHeaderIsAtomic(uint8) (runs: 1000, μ: 428741, ~: 428483)\nLogs:\n  Bound result 0\n\n[PASS] testFuzz_truncatedListIsAtomic(uint16) (runs: 1000, μ: 454966, ~: 448873)\nLogs:\n  Bound result 1\n\n[PASS] test_failedApprovalLeavesFirstDeliveryRetryable() (gas: 833072)\n[PASS] test_forgedComposeCannotSpendAPendingArrival() (gas: 1110024)\n[PASS] test_initializationIsLazyAndApprovalIsNotRepeated() (gas: 983971)\n[PASS] test_lateTransferFailureRollsBackEarlierDepositAndCanRetry() (gas: 1034797)\n[PASS] test_maximumSharedDecimalArrivalCanBeDelivered() (gas: 435078)\n[PASS] test_nestedAuthenticatedComposeIsBlockedAndStillRetryable() (gas: 3325460)\n[PASS] test_nonCanonicalAddressInListIsRejectedAtomically() (gas: 438638)\n[PASS] test_oneWeiAllocationAndDuplicateTradersPreserveEveryWei() (gas: 467004)\n[PASS] test_overlistedMessageCannotUseAnotherMessagesReserve() (gas: 849597)\n[PASS] test_pendingArrivalsCanBeComposedOutOfOrderAndOnlyOnce() (gas: 1074045)\n[PASS] test_sumOverflowRevertsBeforeApprovalOrDelivery() (gas: 440856)\n[PASS] test_zeroArrivalDoesNotConsumeUnrelatedFundsOrStampTraders() (gas: 345109)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 802.00ms (1.75s CPU time)\n\nRan 5 tests for test/StackerAuditRegression.t.sol:StackerAuditRegressionTest\n[PASS] testFuzz_unreachableRecipientsRejectedBeforeAndAfterFirstCredit(uint256,bool) (runs: 256, μ: 1454469, ~: 1499757)\n[PASS] test_creditToImdTokenRevertsWithoutEffects() (gas: 362704)\n[PASS] test_creditToStackerRevertsWithoutEffects() (gas: 364669)\n[PASS] test_creditToVaultRevertsWithoutEffects() (gas: 364714)\n[PASS] test_zeroAmountStillRejectsUnreachableRecipients() (gas: 1092757)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 811.21ms (814.16ms CPU time)\n\nRan 5 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] test_emptyChainRehearsal_constructorPasses() (gas: 25975)\n[PASS] test_launchManifest_knownShape() (gas: 27121)\n[PASS] test_multichain_emptyChainRehearsal_constructorsPass() (gas: 5728964)\n[PASS] test_registry_emptyChainRehearsal_constructorPasses() (gas: 8519058)\n[PASS] test_runtimeSizeAndNoEscapeOpcodes() (gas: 4294851)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 822.46ms (46.63ms CPU time)\n\nRan 2 tests for test/StackerInvariantExtended.t.sol:StackerInvariantExtendedTest\n[PASS]\nStackerInvariantExtendedTest invariants:\n[PASS] invariant_imdSupplyConservation\n[PASS] invariant_pauseAndOwnershipStateMachine\n[PASS] invariant_stackerHoldsNothing\n[PASS] invariant_stackerTotals\n[PASS] invariant_vaultConservation\n[PASS] invariant_vaultSolvent\n StackerInvariantExtendedTest invariants (runs: 128, calls: 6144, reverts: 0)\n\n╭-----------------+----------------+-------+---------+----------╮\n| Contract        | Selector       | Calls | Reverts | Discards |\n+===============================================================+\n| ExtendedHandler | advance        | 456   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | credit         | 465   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | creditTiny     | 446   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | depositDirect  | 475   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | donate         | 455   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | faucet         | 473   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | redeem         | 495   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | renounce       | 496   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | rescue         | 434   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | setAllowance   | 483   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | togglePause    | 494   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | transferShares | 485   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | withdraw       | 487   | 0       | 0        |\n╰-----------------+----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 7178\n  Bound result 4420510826722454667264\n  Bound result 18294\n  Bound result 5169\n  Bound result 6149418887\n  Bound result 12345\n  Bound result 9\n  Bound result 999999999999999999\n  Bound result 1000000000000000000000\n  Bound result 1100880235914184078714\n  Bound result 256\n  Bound result 3\n  Bound result 329\n  Bound result 191\n  Bound result 42000000000000000000\n  Bound result 19303\n  Bound result 7552\n  Bound result 999901\n  Bound result 4472351790845493544001\n  Bound result 10\n  Bound result 3600\n  Bound result 9157\n  Bound result 1000000\n  Bound result 329\n\n[PASS] test_handlerReachesEveryCreditOutcome() (gas: 4540803)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 5\n  Bound result 100000000000000000000\n  Bound result 1\n  Bound result 50000000000000000000\n  Bound result 7\n  Bound result 24000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 10000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 372757101\n  Bound result 684498244\n  Bound result 1000000000000000000\n  Bound result 2949193105425070115\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 3.92s (3.92s CPU time)\n\nRan 3 tests for test/RegistryAccountingInvariant.t.sol:RegistryAccountingInvariantTest\n[PASS]\nRegistryAccountingInvariantTest invariants:\n[PASS] invariant_eachActorGetsExactlyTheirEntitlement\n[PASS] invariant_requestsAndListingsMatchIndependentHistory\n RegistryAccountingInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭---------------------------+----------------------+-------+---------+----------╮\n| Contract                  | Selector             | Calls | Reverts | Discards |\n+===============================================================================+\n| RegistryAccountingHandler | ask                  | 1852  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | donate               | 1799  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | expire               | 1815  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | handOver             | 1769  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | passTime             | 1901  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | reprice              | 1807  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | settle               | 1817  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | unauthorizedOrReplay | 1831  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | unsafeChallenge      | 1793  | 0       | 0        |\n╰---------------------------+----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 32694\n  Bound result 63\n  Bound result 1585\n  Bound result 22229\n  Bound result 64\n  Bound result 108248\n  Bound result 14\n  Bound result 1919247464\n  Bound result 766191674399972417\n  Bound result 45732\n  Bound result 50\n  Bound result 87\n  Bound result 49\n  Bound result 47\n  Bound result 16777214\n  Bound result 264337593543950333\n  Bound result 44756\n  Bound result 34\n  Bound result 2482\n  Bound result 20732\n  Bound result 4\n  Bound result 26\n  Bound result 31\n  Bound result 4599\n  Bound result 77199\n  Bound result 63\n  Bound result 8468\n  Bound result 48879\n  Bound result 36\n  Bound result 880729540512199222\n  Bound result 64\n  Bound result 7808\n  Bound result 1\n  Bound result 752\n  Bound result 15369\n  Bound result 7331\n  Bound result 7899\n  Bound result 10\n  Bound result 241\n  Bound result 15\n  Bound result 156563\n  Bound result 5\n  Bound result 261254378650707869\n  Bound result 32\n  Bound result 32400\n  Bound result 10\n\n[PASS] test_handlerReachesAllPayoutsAndChecksAfterEachTransition() (gas: 40459406)\nLogs:\n  Bound result 25\n  Bound result 1\n  Bound result 100\n  Bound result 0\n  Bound result 50\n  Bound result 0\n  Bound result 50\n  Bound result 1\n  Bound result 50\n  Bound result 0\n  Bound result 50\n  Bound result 2\n  Bound result 50\n  Bound result 3\n  Bound result 50\n  Bound result 4\n  Bound result 50\n  Bound result 172800\n  Bound result 1\n  Bound result 0\n  Bound result 50\n  Bound result 123\n  Bound result 0\n  Bound result 50\n  Bound result 1\n  Bound result 50\n\n[PASS] test_handlerRetainsBeneficiaryPinAcrossHandoffsAndRelisting() (gas: 16505407)\nLogs:\n  Bound result 50\n  Bound result 0\n  Bound result 0\n  Bound result 50\n  Bound result 500000000000000000\n  Bound result 86400\n  Bound result 1\n  Bound result 50\n  Bound result 1\n  Bound result 100\n  Bound result 0\n  Bound result 50\n  Bound result 0\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 4.94s (4.96s CPU time)\n\nRan 2 tests for test/StackReceiverPendingInvariant.t.sol:StackReceiverPendingInvariantTest\n[PASS]\nStackReceiverPendingInvariantTest invariants:\n[PASS] invariant_countersCountOnlySuccessfulDeliveryOncePerSource\n[PASS] invariant_eachTraderReceivesOnlyTheirFundedAllocation\n[PASS] invariant_pendingAndUnsolicitedIMDAreFullyBacked\n StackReceiverPendingInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭------------------------+----------+-------+---------+----------╮\n| Contract               | Selector | Calls | Reverts | Discards |\n+================================================================+\n| ReceiverPendingHandler | arrive   | 3331  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | compose  | 3254  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | donate   | 3321  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | pause    | 3195  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | reject   | 3283  | 0       | 0        |\n╰------------------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 3\n  Bound result 4\n  Bound result 3\n  Bound result 6\n  Bound result 1\n  Bound result 5\n  Bound result 5\n  Bound result 2\n  Bound result 4\n  Bound result 4427\n  Bound result 2\n  Bound result 2635\n  Bound result 15373\n  Bound result 17614\n  Bound result 6098\n  Bound result 10126\n  Bound result 1\n  Bound result 36162856342623576\n  Bound result 2333\n  Bound result 6\n  Bound result 765\n  Bound result 320\n  Bound result 2008\n  Bound result 4\n\n[PASS] test_handlerReachesRetriesMixedPayoutsReplayAndOutOfOrderDelivery() (gas: 4267751)\nLogs:\n  Bound result 3\n  Bound result 4\n  Bound result 7000000000000000000\n  Bound result 6\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 5.88s (5.88s CPU time)\n\nRan 3 tests for test/StackerHoldInvariant.t.sol:StackerHoldInvariantTest\n[PASS]\nStackerHoldInvariantTest invariants:\n[PASS] invariant_balancesAndHistoricalCashbackAreConserved\n[PASS] invariant_holdFollowsSharesAndCannotBeClearedByTimestamp\n StackerHoldInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------------+----------------------+-------+---------+----------╮\n| Contract           | Selector             | Calls | Reverts | Discards |\n+========================================================================+\n| StackerHoldHandler | advance              | 2043  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | credit               | 2037  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | donate               | 2048  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | exit                 | 2066  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | probeRenouncedPowers | 2049  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | transferShares       | 2062  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | unauthorizedExit     | 2021  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | zeroAction           | 2058  | 0       | 0        |\n╰--------------------+----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 6\n  Bound result 5\n  Bound result 4617\n  Bound result 9999999999999999999951\n  Bound result 977\n  Bound result 25\n  Bound result 36\n  Bound result 0\n  Bound result 0\n  Bound result 8894021654254025194601\n  Bound result 0\n  Bound result 8\n  Bound result 12\n  Bound result 3\n  Bound result 1435486279649653759483839239\n  Bound result 2936\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 7\n  Bound result 26183281\n  Bound result 300\n  Bound result 75\n  Bound result 11155111\n  Bound result 0\n  Bound result 172800\n  Bound result 8\n  Bound result 1000000000000000001\n  Bound result 221\n  Bound result 2277\n  Bound result 5023\n  Bound result 6081\n  Bound result 0\n  Bound result 100000000000000000017\n  Bound result 11024\n  Bound result 4166011397\n  Bound result 7493\n  Bound result 5000000\n  Bound result 2634688446191587128402102034\n  Bound result 239\n  Bound result 10\n  Bound result 1\n\n[PASS] test_handlerExercisesHeldDelegatedAndMatureExits() (gas: 3851200)\nLogs:\n  Bound result 10000000000000000000\n  Bound result 2000000000000000000000000\n  Bound result 1000000000000000000000000\n  Bound result 1\n  Bound result 1000000000000000000\n  Bound result 1\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000000000\n  Bound result 1000000000000000000000000\n\n[PASS] test_handlerExercisesZeroSharesFailureBeforeInitialization() (gas: 2872846)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 1\n  Bound result 10000000000000000000\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 6.21s (6.22s CPU time)\n\nRan 2 tests for test/RemoteStackerStateful.t.sol:RemoteStackerStatefulTest\n[PASS]\nRemoteStackerStatefulTest invariants:\n[PASS] invariant_burnTipsAndNativeFeesMatchActualTransfers\n[PASS] invariant_everyRecipientAndProjectRetainsItsOwnAccounting\n RemoteStackerStatefulTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| RemoteQueueHandler | credit       | 2419  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | donate       | 2299  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | elapse       | 2408  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | failFlush    | 2306  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | flush        | 2354  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | register     | 2321  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | rejectCredit | 2277  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000\n  Bound result 443326447797218152\n  Bound result 1788\n  Bound result 45315\n  Bound result 25\n  Bound result 9218\n  Bound result 46\n  Bound result 104040\n  Bound result 185593\n  Bound result 1000000000000000000\n  Bound result 4641\n  Bound result 514264337593543950335\n  Bound result 9900\n  Bound result 6234\n  Bound result 4718\n  Bound result 49\n  Bound result 5457\n  Bound result 12\n  Bound result 12\n  Bound result 1000000000000000000\n  Bound result 307107047515571923610\n  Bound result 1505938797\n  Bound result 1000000000000000000\n  Bound result 6108\n  Bound result 999999999999999999\n  Bound result 27\n  Bound result 47\n  Bound result 29\n  Bound result 7\n  Bound result 18849\n  Bound result 256540\n  Bound result 0\n  Bound result 247508\n  Bound result 1000000000000000000\n  Bound result 242\n  Bound result 30\n  Bound result 1000000000000000000\n  Bound result 19966\n  Bound result 1000000000000000000\n  Bound result 264337593543950333\n  Bound result 13667\n  Bound result 27\n  Bound result 942\n  Bound result 826074470\n  Bound result 3990\n  Bound result 6926\n  Bound result 1000000000000000000\n  Bound result 23\n  Bound result 2\n\n[PASS] test_handlerReachesRoutingDustDonationsFailuresAndPaidFlushes() (gas: 5799198)\nLogs:\n  Bound result 7000000000000000000\n  Bound result 100000000000000000000\n  Bound result 200000000000000000000\n  Bound result 3000000000000000000\n  Bound result 9000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 4000000000000000000\n  Bound result 43200\n  Bound result 50\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 10.25s (10.25s CPU time)\n\nRan 57 test suites in 10.26s (44.52s CPU time): 345 tests passed, 0 failed, 29 skipped (374 total tests)\n","passed":true},{"durationMs":93,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ProjectRegistry.applyListing(address,string,string,uint16,address)\",\"ProjectRegistry.challenge(address,string)\",\"ProjectRegistry.challengeForBeneficiary(address,string,address)\",\"ProjectRegistry.claimBond(address)\",\"ProjectRegistry.expire(address)\",\"ProjectRegistry.onOracleFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"ProjectRegistry.onOracleResult(bytes32,(bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"ProjectRegistry.setBeneficiary(address,address)\",\"RemoteStacker.credit(address,uint256)\",\"RemoteStacker.flush(address[])\",\"RemoteStacker.setEthereumRecipient(address)\",\"StackReceiver.lzCompose(address,bytes32,bytes,address,bytes)\",\"Stacker.credit(address,uint256)\"],\"files\":{\".github/ISSUE_TEMPLATE/listing-application.yml\":88,\".gitignore\":5,\"ADAPTATION.md\":153,\"NEXT_SESSION.md\":74,\"README.md\":312,\"app.js\":2410,\"docs/data-api.md\":97,\"docs/design.md\":323,\"docs/explainer.html\":247,\"docs/history.md\":491,\"docs/launches.md\":53,\"docs/listing.md\":97,\"docs/panel-rules-v2-rehearsal-body.json\":28,\"docs/panel-rules-v2.md\":90,\"docs/plea-handoff.md\":73,\"docs/plea-test-run-2.md\":34,\"docs/robinhood-rehearsal-body.json\":1,\"favicon.svg\":11,\"foundry.toml\":26,\"index.html\":171,\"jobs/1-sepolia-launch.md\":23,\"jobs/10-sepolia-v4-launch.md\":13,\"jobs/11-sepolia-v5-launch.md\":13,\"jobs/12-mainnet-registry-launch.md\":14,\"jobs/13-sepolia-v6-launch.md\":13,\"jobs/14-mainnet-stackreceiver-launch.md\":13,\"jobs/15-robinhood-remotestacker-launch.md\":12,\"jobs/16-robinhood-registry-launch.md\":14,\"jobs/2-sepolia-site.md\":18,\"jobs/3-list-plea.md\":21,\"jobs/4-mainnet-launch.md\":16,\"jobs/5-sepolia-v2-launch.md\":12,\"jobs/5-sepolia-v2-site.md\":10,\"jobs/6-sepolia-v2-site.md\":30,\"jobs/7-sepolia-v2-site-pages.md\":22,\"jobs/8-sepolia-v3-launch.md\":13,\"jobs/9-sepolia-v3-relaunch.md\":13,\"jobs/requests/10-sepolia-v4-launch.json\":31,\"jobs/requests/11-sepolia-v5-launch.json\":31,\"jobs/requests/12-mainnet-registry-launch.json\":31,\"jobs/requests/13-sepolia-v6-launch.json\":31,\"jobs/requests/14-mainnet-stackreceiver-launch.json\":31,\"jobs/requests/15-robinhood-remotestacker-launch.json\":31,\"jobs/requests/3-list-plea.json\":10,\"jobs/requests/4-mainnet-launch.json\":31,\"jobs/requests/5-sepolia-v2-launch-only.json\":31,\"jobs/requests/5-sepolia-v2-workflow.json\":50,\"jobs/requests/6-sepolia-v2-site.json\":15,\"jobs/requests/7-sepolia-v2-site-pages.json\":15,\"jobs/requests/8-sepolia-v3-launch.json\":31,\"jobs/requests/9-sepolia-v3-relaunch.json\":31,\"launch.json\":18,\"listings/sepolia.json\":1,\"llms.txt\":56,\"remappings.txt\":3,\"src/ProjectRegistry.sol\":729,\"src/Stacker.sol\":104,\"src/multichain/LayerZero.sol\":112,\"src/multichain/RemoteStacker.sol\":314,\"src/multichain/StackReceiver.sol\":157,\"src/oracle/OracleAttestation.sol\":265,\"style.css\":1666,\"test/ADVERSARIAL_COVERAGE.md\":42,\"test/Base.t.sol\":58,\"test/Deployment.t.sol\":213,\"test/FactoryRehearsal.t.sol\":47,\"test/MAINNET_TEST_COVERAGE.md\":45,\"test/MainnetFork.t.sol\":141,\"test/MainnetLaunchRegression.t.sol\":99,\"test/MultichainFlow.t.sol\":184,\"test/OracleConsumerConformance.t.sol\":140,\"test/ProjectRegistry.t.sol\":596,\"test/ProjectRegistryInvariant.t.sol\":238,\"test/REMOTE_STACKER_TEST_COVERAGE.md\":45,\"test/RegistryAccountingInvariant.t.sol\":552,\"test/RegistryAdversarial.t.sol\":446,\"test/RegistryApplicantGate.t.sol\":166,\"test/RegistryAuditRegression.t.sol\":157,\"test/RegistryBodyProperties.t.sol\":224,\"test/RegistryBondOwed.t.sol\":313,\"test/RegistryCallbackGas.t.sol\":111,\"test/RegistryCooldownBoundary.t.sol\":44,\"test/RegistryHandoffInterval.t.sol\":235,\"test/RegistryMainnetFork.t.sol\":110,\"test/RegistryPolicyRevision.t.sol\":50,\"test/RegistryRevisionRegression.t.sol\":418,\"test/RegistryRobinhoodBlocks.t.sol\":375,\"test/RegistryRobinhoodLaunch.t.sol\":115,\"test/RegistrySelfBeneficiary.t.sol\":148,\"test/RegistrySepoliaFork.t.sol\":113,\"test/RemoteStacker.t.sol\":424,\"test/RemoteStackerAdversarial.t.sol\":560,\"test/RemoteStackerAuditRegression.t.sol\":182,\"test/RemoteStackerLaunch.t.sol\":105,\"test/RemoteStackerRefundFork.t.sol\":96,\"test/RemoteStackerStateful.t.sol\":522,\"test/RemoteTrialVenue.t.sol\":134,\"test/RobinhoodFork.t.sol\":184,\"test/SepoliaFork.t.sol\":141,\"test/StackReceiver.t.sol\":344,\"test/StackReceiverAdversarial.t.sol\":321,\"test/StackReceiverCoverage.md\":61,\"test/StackReceiverLaunch.t.sol\":118,\"test/StackReceiverMainnetFork.t.sol\":255,\"test/StackReceiverPendingInvariant.t.sol\":331,\"test/Stacker.t.sol\":423,\"test/StackerAuditRegression.t.sol\":99,\"test/StackerDependencyFailures.t.sol\":288,\"test/StackerEdges.t.sol\":391,\"test/StackerExternalCalls.t.sol\":257,\"test/StackerGas.t.sol\":186,\"test/StackerHoldInvariant.t.sol\":346,\"test/StackerInvariant.t.sol\":148,\"test/StackerInvariantExtended.t.sol\":495,\"test/TraderResolution.t.sol\":229,\"test/TrialVenue.t.sol\":147,\"test/VaultTrustRegression.t.sol\":41,\"test/helpers/StackReceiverFixture.sol\":101,\"test/mocks/MockArbSys.sol\":11,\"test/mocks/MockIntake.sol\":108,\"test/mocks/MockOFT.sol\":138,\"test/mocks/QueuedComposeEndpoint.sol\":40,\"test/mocks/RemoteAdversarialOFT.sol\":148,\"test/mocks/TestIMD.sol\":41,\"test/mocks/TestSIMD.sol\":178,\"test/trial/RemoteTrialVenue.sol\":232,\"test/trial/SelfCredit.sol\":35,\"test/trial/TrialVenue.sol\":222,\"tools/site-check/.gitignore\":2,\"tools/site-check/README.md\":35,\"tools/site-check/behavior.mjs\":124,\"tools/site-check/flows.mjs\":173,\"tools/site-check/fork-answer.sh\":27,\"tools/site-check/layout.mjs\":88,\"tools/site-check/lib.mjs\":181,\"tools/site-check/package-lock.json\":22,\"tools/site-check/package.json\":9,\"tools/site-check/refresh-bug.mjs\":50,\"tools/site-check/trial.mjs\":158,\"tools/snapshot/build.mjs\":291,\"tools/snapshot/chains.json\":29,\"tools/snapshot/test.sh\":57},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"73439b683fd5f6e6c824b9bf8af4197f7eaa0726d44906c7cd706e94fd049153","verifiedTreeHash":"6cf6cdc25573a4a99117b22dffaea1c7cb21b9be","verifierVersion":"0.1.0+327e1e9f"},{"checks":[{"durationMs":35054,"exitCode":0,"name":"build","output":"Compiling 117 files with Solc 0.8.26\nSolc 0.8.26 finished in 34.83s\nCompiler run successful!\n","passed":true},{"durationMs":15877,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 1 test for test/FactoryRehearsal.t.sol:FactoryRehearsalTest\n[PASS] test_sepoliaFactoryDeploysBothInOrderOnAnEmptyChain() (gas: 419613)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.13ms (886.14µs CPU time)\n\nRan 1 test for test/RegistryMainnetFork.t.sol:RegistryMainnetForkTest\n[SKIP] test_mainnet_ownerAppliesToTheRealIntake_listedThenDefended() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 596.94µs (37.34µs CPU time)\n\nRan 5 tests for test/RobinhoodFork.t.sol:RobinhoodForkTest\n[SKIP] test_fork_OFTPeerRemovalBlocksTheOnlyExitAtomically() (gas: 0)\n[SKIP] test_fork_fiftyTradersQuoteAndFlush() (gas: 0)\n[SKIP] test_fork_flushBurnsHereAndTheEndpointAcceptsTheMessage() (gas: 0)\n[SKIP] test_fork_liveFacts() (gas: 0)\n[SKIP] test_fork_tooLittleFeeChangesNothing() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 699.50µs (90.97µs CPU time)\n\nRan 5 tests for test/SepoliaFork.t.sol:SepoliaForkTest\n[SKIP] test_sepolia_creditEventAndTotals() (gas: 0)\n[SKIP] test_sepolia_liveFacts() (gas: 0)\n[SKIP] test_sepolia_liveStackerValidCreditMatchesMainnetCandidate() (gas: 0)\n[SKIP] test_sepolia_mainnetCandidateRejectsLegacyUnreachableRecipients() (gas: 0)\n[SKIP] test_sepolia_pausedVaultRevertsThenRecovers() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 415.75µs (44.30µs CPU time)\n\nRan 2 tests for test/VaultTrustRegression.t.sol:VaultTrustRegressionTest\n[PASS] test_dustHoldThroughStackerAndDirectVault() (gas: 910632)\n[PASS] test_vaultOwnerCanSweepCashback() (gas: 637955)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.67ms (1.15ms CPU time)\n\nRan 5 tests for test/MainnetFork.t.sol:MainnetForkTest\n[SKIP] test_fork_creditNewThenRepeatTrader() (gas: 0)\n[SKIP] test_fork_firstCreditNeedsInitializationGas() (gas: 0)\n[SKIP] test_fork_liveFacts() (gas: 0)\n[SKIP] test_fork_oneBlockHoldThenRedeem() (gas: 0)\n[SKIP] test_fork_readmeBudgetFundsColdFirstCredit() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 2.74ms (109.50µs CPU time)\n\nRan 5 tests for test/StackReceiverMainnetFork.t.sol:StackReceiverMainnetForkTest\n[SKIP] test_fork_arrivalDepositsForEveryTrader() (gas: 0)\n[SKIP] test_fork_composeIsDeliveredOnceAndOnlyFromTheEndpoint() (gas: 0)\n[SKIP] test_fork_composeRejectsValueWithoutConsumingTheQueue() (gas: 0)\n[SKIP] test_fork_gasBudgetCoversOneTenAndFiftyTraders() (gas: 0)\n[SKIP] test_fork_liveFacts() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 2.26ms (95.39µs CPU time)\n\nRan 10 tests for test/RemoteTrialVenue.t.sol:RemoteTrialVenueTest\n[PASS] test_buyQueuesHalfTheFeeAndBurnsTheOtherHalf() (gas: 345318)\n[PASS] test_failedCreditPaysPlainImd() (gas: 233917)\n[PASS] test_gasIsCheckedBeforeTheCredit() (gas: 180521)\n[PASS] test_invalidTradersNeverResolve() (gas: 74197)\n[PASS] test_ownerCanOnlySeedOnce() (gas: 58967)\n[PASS] test_registryReadsTheOwner() (gas: 11132)\n[PASS] test_routerCallerResolvesToItsActiveCaller() (gas: 571015)\n[PASS] test_sellQueuesHalfTheFeeToo() (gas: 459360)\n[PASS] test_unknownContractCallerGetsNoCashbackItIsBurned() (gas: 242674)\n[PASS] test_wiring() (gas: 52742)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 1.97ms (1.00ms CPU time)\n\nRan 2 tests for test/RemoteStackerRefundFork.t.sol:RemoteStackerRefundForkTest\n[SKIP] test_liveEndpointRefundCannotReenterCreditOrFlush() (gas: 0)\n[SKIP] test_liveEndpointRejectedRefundRollsBackBurnAndCanRetryExactFee() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 2 skipped; finished in 3.56ms (55.59µs CPU time)\n\nRan 2 tests for test/MainnetLaunchRegression.t.sol:MainnetLaunchRegressionTest\n[SKIP] test_manifestCreate2WorksWithoutDependenciesOrInitialization() (gas: 0)\n[SKIP] test_manifestPinsExactlyOneMainnetStacker() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 2 skipped; finished in 8.75ms (16.16ms CPU time)\n\nRan 1 test for test/RemoteStackerLaunch.t.sol:RemoteStackerLaunchTest\n[SKIP] test_manifestDeploysOnlyRemoteStackerWithoutExternalConstructorCalls() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 5.69ms (5.52ms CPU time)\n\nRan 2 tests for test/RegistryPolicyRevision.t.sol:RegistryPolicyRevisionTest\n[PASS] test_applicationAndChallengeRequireResolvedTraderAndExcludeLpFees() (gas: 6829404)\n[PASS] test_lpRebateDefeatsGrossFeeFloor() (gas: 5991)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 7.69ms (6.60ms CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdDefenseTest\n[PASS] test_coldDefendedChallenge_deliveredWithin200k() (gas: 190510)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 8.57ms (272.48µs CPU time)\n\nRan 2 tests for test/StackReceiverLaunch.t.sol:StackReceiverLaunchTest\n[SKIP] test_manifestFactoryDeploysOneContractWithNoExternalConstructorCalls() (gas: 0)\n[SKIP] test_manifestPinsExactlyTheMainnetReceiver() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 2 skipped; finished in 10.54ms (16.60ms CPU time)\n\nRan 1 test for test/RegistrySepoliaFork.t.sol:RegistrySepoliaForkTest\n[SKIP] test_sepolia_applyPaysTheRealIntake_thenAnswerLists() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 365.93µs (42.79µs CPU time)\n\nRan 5 tests for test/OracleConsumerConformance.t.sol:OracleConsumerConformanceTest\n[PASS] test_acceptsAFreshSignatureFromTheVectorKey() (gas: 182067)\n[PASS] test_callbackSelectorIsCanonical() (gas: 3671)\n[PASS] test_digestMatchesTheProtocol() (gas: 13686)\n[PASS] test_protocolSignaturePassesVerificationBeforePanelPolicy() (gas: 69545)\n[PASS] test_tamperingTheProtocolVectorFailsSignatureVerification() (gas: 64569)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 10.12ms (839.67µs CPU time)\n\nRan 9 tests for test/TrialVenue.t.sol:TrialVenueTest\n[PASS] test_buyCreditsHalfTheFeeAndBurnsTheOtherHalf() (gas: 434566)\n[PASS] test_gasIsCheckedBeforeTheCredit() (gas: 124458)\n[PASS] test_invalidTradersNeverResolve() (gas: 65332)\n[PASS] test_ownerCanOnlySeedOnce() (gas: 56951)\n[PASS] test_pausedVaultPaysPlainImd() (gas: 305091)\n[PASS] test_registryReadsTheOwner() (gas: 17255)\n[PASS] test_routerCallerResolvesToItsActiveCaller() (gas: 784096)\n[PASS] test_sellCreditsHalfTheFeeAndBurnsTheOtherHalf() (gas: 588348)\n[PASS] test_unknownContractCallerGetsNoCashbackItIsBurned() (gas: 572622)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 10.98ms (2.05ms CPU time)\n\nRan 7 tests for test/TraderResolution.t.sol:TraderResolutionTest\n[PASS] test_directNoCodeSenderCanBeResolvedWithoutTxOrigin() (gas: 303966)\n[PASS] test_emptyHookDataResolvesActiveMsgSenderAndCannotBeSwept() (gas: 381420)\n[PASS] test_hookDataTakesPrecedenceAndSupportsContractWallets() (gas: 477363)\n[PASS] test_invalidHookDataPaysPlainImdToKnownCallerNeverInvalidRecipient() (gas: 882426)\n[PASS] test_legacyEmptyHookDataCreditsRouterAndAnyoneCanSweep() (gas: 433080)\n[PASS] test_pausedVaultPaysPlainImdToResolvedMsgSender() (gas: 301439)\n[PASS] test_unknownContractOrInvalidMsgSenderNeverBecomesTheRecipient() (gas: 522893)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 3.82ms (2.38ms CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdDelistingTest\n[PASS] test_coldDelistedChallenge_deliveredWithin200k() (gas: 171902)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.83ms (257.10µs CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdListingTest\n[PASS] test_coldApplicationYes_deliveredWithin200k() (gas: 162871)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.03ms (214.51µs CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdRejectionTest\n[PASS] test_coldApplicationNo_deliveredWithin200k() (gas: 156227)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.87ms (216.42µs CPU time)\n\nRan 1 test for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodColdListingTest\n[PASS] test_coldRobinhoodListingFits200k() (gas: 179728)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.97ms (224.83µs CPU time)\n\nRan 9 tests for test/RegistryApplicantGate.t.sol:RegistryApplicantGateTest\n[PASS] test_anyoneMayStillChallengeAnOwnedProject() (gas: 6421028)\n[PASS] test_misbehavingOwnerReadsAsNone() (gas: 15582598)\n[PASS] test_noOwnerFunctionOpenToAnyone() (gas: 3089189)\n[PASS] test_ownerChangeMovesTheRight() (gas: 3436229)\n[PASS] test_ownerMayApply() (gas: 3320997)\n[PASS] test_projectItselfMayApply() (gas: 3381856)\n[PASS] test_renouncedOwnerOpenToAnyone() (gas: 3284007)\n[PASS] test_squatterCannotBlockTheTeam() (gas: 3550460)\n[PASS] test_strangerRefusedBeforePaying() (gas: 390876)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 19.06ms (9.23ms CPU time)\n\nRan 3 tests for test/RegistryCallbackGas.t.sol:RegistryColdFailureTest\n[PASS] test_coldChallengeAfterDeadline_canExpire() (gas: 128213)\n[PASS] test_coldDisagreedChallenge_deliveredWithin200k() (gas: 140179)\n[PASS] test_coldRefusedChallenge_deliveredWithin200k() (gas: 140262)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 8.17ms (361.48µs CPU time)\n\nRan 6 tests for test/RegistrySelfBeneficiary.t.sol:RegistrySelfBeneficiaryTest\n[PASS] test_acceptedSelfChallengeHoldsSlotUntilAnswerWithoutNewCooldown() (gas: 9461117)\n[PASS] test_applicationRefusesRegistryBeforeFeeOrRequest() (gas: 171010)\n[PASS] test_contractBeneficiaryStillReceivesBondAndCanHandOff() (gas: 6435143)\n[PASS] test_handoffRefusesRegistryAndPreservesBondRecipient() (gas: 6367834)\n[PASS] test_registryOwnedProjectCannotApplyWithRegistryAsBeneficiary() (gas: 507127)\n[PASS] test_rejectedHandoffDoesNotConsumeDailyHandoff() (gas: 3287790)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 24.01ms (22.90ms CPU time)\n\nRan 1 test for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodColdOwedBondTest\n[PASS] test_coldRobinhoodDelistingRecordsOwedBondWithin200kAndRefusesSelfClaim() (gas: 362879)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.57ms (334.06µs CPU time)\n\nRan 4 tests for test/RegistryCooldownBoundary.t.sol:RegistryCooldownBoundaryTest\n[PASS] test_challengeExactlyAtCooldown_succeeds() (gas: 6106859)\n[PASS] test_challengeOneSecondBeforeCooldown_reverts() (gas: 3201787)\n[PASS] test_constructor_rejectsCooldownAboveMax() (gas: 14194)\n[PASS] test_keptChallenge_doesNotRestartCooldown() (gas: 9279553)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 7.23ms (6.15ms CPU time)\n\nRan 1 test for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodColdDelistingTest\n[PASS] test_coldRobinhoodDelistingAndBondReturnFit200k() (gas: 218506)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 10.59ms (292.29µs CPU time)\n\nRan 9 tests for test/RegistryBondOwed.t.sol:RegistryBondOwedTest\n[PASS] test_blockedBeneficiary_signedYes_defendsAndOwesBond() (gas: 1111896)\n[PASS] test_blockedChallenger_expireClearsAndOwesBond() (gas: 939336)\n[PASS] test_blockedChallenger_failureClearsAndOwesBond() (gas: 1232993)\n[PASS] test_blockedChallenger_signedNo_delistsAndOwesBond() (gas: 1220591)\n[PASS] test_claimBond_refusesRegistryAndPreservesRecoverableBond() (gas: 1132622)\n[PASS] test_claimBond_refusesZeroAddressAndNothingOwed() (gas: 67205)\n[PASS] test_falseReturningToken_owesBond() (gas: 1053450)\n[PASS] test_owedBondsAccumulate() (gas: 1422327)\n[PASS] test_unblocked_paysAtOnce() (gas: 951543)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 56.88ms (39.35ms CPU time)\n\nRan 6 tests for test/RemoteStackerAuditRegression.t.sol:RemoteStackerAuditRegressionTest\n[PASS] testFuzz_clockRounding_doesNotChargeForFreshAge(uint96,uint96,uint32) (runs: 256, μ: 425303, ~: 428255)\nLogs:\n  Bound result 162514264337593543950333\n  Bound result 164890\n  Bound result 279867\n\n[PASS] test_bridgeRefusal_preservesCustodyAndContinuesAcceptingCredits() (gas: 1295421)\n[PASS] test_clockRounding_smallFreshCreditCannotInheritTheFullTip() (gas: 1269459)\n[PASS] test_clockRounding_uncappedBalanceAlsoFavorsTrader() (gas: 423477)\n[PASS] test_credit_refusesEthereumTokenAndEndpointBeforePullingFunds() (gas: 308594)\n[PASS] test_setEthereumRecipient_refusesEthereumTokenAndEndpoint() (gas: 400356)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 116.83ms (118.56ms CPU time)\n\nRan 21 tests for test/RemoteStacker.t.sol:RemoteStackerTest\n[PASS] testFuzz_flush_conservesEveryWei(uint96,uint96,uint32) (runs: 256, μ: 667201, ~: 943781)\nLogs:\n  Bound result 2514264337593543950333\n  Bound result 164890\n\n[PASS] testFuzz_tip_neverAboveTwoPercent(uint64,uint96) (runs: 256, μ: 182640, ~: 182651)\nLogs:\n  Bound result 5091\n\n[PASS] test_constructor_wiringWithoutExternalCalls() (gas: 3842)\n[PASS] test_credit_clockIsAmountWeighted() (gas: 292087)\n[PASS] test_credit_contractWalletPaidPlainUnlessRegistered() (gas: 665088)\n[PASS] test_credit_eip7702WalletGoesThroughTheQueue() (gas: 290204)\n[PASS] test_credit_queuesForPlainWallet() (gas: 226667)\n[PASS] test_credit_rejectsInvalidTraders() (gas: 172391)\n[PASS] test_credit_shortAllowanceOrBalanceReverts() (gas: 187984)\n[PASS] test_credit_zeroAmountMovesNothing() (gas: 58649)\n[PASS] test_flush_atMostFiftyRecipients() (gas: 85104)\n[PASS] test_flush_dustIsNeverTippedTwice() (gas: 875951)\n[PASS] test_flush_fiftyRecipients() (gas: 9487069)\n[PASS] test_flush_isAtomic_sendFailureChangesNothing() (gas: 425526)\n[PASS] test_flush_nothingToFlushReverts() (gas: 279365)\n[PASS] test_flush_sendsRoundedAmountsPaysTipAndRefundsExcess() (gas: 1082997)\n[PASS] test_flush_skipsEmptyAndDuplicateAndDustOnlyRecipients() (gas: 892843)\n[PASS] test_flush_traderCanFlushThemselvesAtOnce() (gas: 760986)\n[PASS] test_setEthereumRecipient_refusesInvalidAndIsPerCaller() (gas: 358628)\n[PASS] test_tip_growsLinearlyAndCapsAtTwoPercent() (gas: 249888)\n[PASS] test_tip_newCashbackNeverInheritsACappedClock() (gas: 296946)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 120.42ms (122.50ms CPU time)\n\nRan 16 tests for test/StackReceiver.t.sol:StackReceiverTest\n[PASS] testFuzz_delivery_mixedZeroAndPositiveShares(uint96,uint96,bool) (runs: 256, μ: 489422, ~: 489271)\nLogs:\n  Bound result 500719093602\n  Bound result 999998000526157903\n\n[PASS] testFuzz_delivery_sumExactlyDelivered(uint96,uint96) (runs: 256, μ: 380792, ~: 380772)\n[PASS] test_constructor_wiringWithoutExternalCalls() (gas: 8112)\n[PASS] test_delivery_assetMismatchRefusesTheFirstDelivery() (gas: 1930170)\n[PASS] test_delivery_depositsForEachTraderAndKeepsNothing() (gas: 552622)\n[PASS] test_delivery_inconsistentPreviewRollsBackInsteadOfSpendingOtherFunds() (gas: 626160)\n[PASS] test_delivery_listMustAddUpToTheAmountReceived() (gas: 363345)\n[PASS] test_delivery_onlyFromTheEndpointAndOnlyForIMD() (gas: 439485)\n[PASS] test_delivery_pausedVaultPaysPlainIMD() (gas: 584380)\n[PASS] test_delivery_rejectsNativeValueAndCanRetryWithoutIt() (gas: 556396)\n[PASS] test_delivery_revertingDepositPaysOnlyThatTraderPlainIMD() (gas: 416475)\n[PASS] test_delivery_revertingPreviewPaysOnlyThatTraderPlainIMD() (gas: 400333)\n[PASS] test_delivery_strayIMDIsNeverSpent() (gas: 344430)\n[PASS] test_delivery_zeroAmountEntryIsSkipped() (gas: 304641)\n[PASS] test_delivery_zeroSharesPaysPlainIMDWithoutDepositing() (gas: 465715)\n[PASS] test_vault_zeroShareDepositStillConsumesAssets() (gas: 275682)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 150.47ms (144.56ms CPU time)\n\nRan 23 tests for test/ProjectRegistry.t.sol:ProjectRegistryTest\n[PASS] testFuzz_apply_nameIsSafeOrRefused(bytes) (runs: 256, μ: 345227, ~: 55837)\n[PASS] testFuzz_apply_rate(uint16) (runs: 256, μ: 405883, ~: 47867)\n[PASS] test_answer_freshnessAndPanelChecks() (gas: 3531117)\n[PASS] test_answer_mustBeSignedByTheOracleForThisContract() (gas: 3219851)\n[PASS] test_answer_onlyFromTheIntake_onlyForOurOpenRequest() (gas: 3229825)\n[PASS] test_apply_bodyIsTheOracleBody() (gas: 3317268)\n[PASS] test_apply_oneOpenQuestionAtATime_andNotWhenListed() (gas: 3227709)\n[PASS] test_apply_paysExactlyTheFeeAndAsks() (gas: 3117533)\n[PASS] test_apply_validation() (gas: 567226)\n[PASS] test_callbackOutOfGas_isRecoverableThroughExpire() (gas: 6062321)\n[PASS] test_challenge_defended_bondToBeneficiary_noNewCooldown() (gas: 6362524)\n[PASS] test_challenge_failureOrExpiry_returnsTheBond_projectStaysListed() (gas: 9363326)\n[PASS] test_challenge_lost_delistsFromThisBlock_bondBack() (gas: 9340308)\n[PASS] test_challenge_onlyListed_afterCooldown_oneAtATime() (gas: 6314566)\n[PASS] test_challenge_paysFeeAndBond_bodyNamesTheReason() (gas: 6469710)\n[PASS] test_constructor_rejectsZeroAddresses() (gas: 6519)\n[PASS] test_constructor_wiring() (gas: 74067)\n[PASS] test_expire_afterADay_orWhenTheIntakeCompletedWithoutAnAnswer() (gas: 6115895)\n[PASS] test_failure_clearsTheApplication_andNeverLists() (gas: 5990106)\n[PASS] test_failure_onlyFromTheIntake_onlyForOurOpenRequest() (gas: 3057732)\n[PASS] test_no_rejects_andTheProjectCanApplyAgain() (gas: 6171996)\n[PASS] test_setBeneficiary_onlyTheBeneficiaryOfAListedProject() (gas: 3319418)\n[PASS] test_yes_listsFromThisBlock() (gas: 3160740)\nSuite result: ok. 23 passed; 0 failed; 0 skipped; finished in 152.25ms (174.58ms CPU time)\n\nRan 1 test for test/RegistryRobinhoodLaunch.t.sol:RegistryRobinhoodLaunchTest\n[PASS] test_manifestDeploysOnlyRegistryOnEmptyRobinhoodChain() (gas: 14605036)\nLogs:\n  ProjectRegistry runtime bytes: 23709\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 179.13ms (178.87ms CPU time)\n\nRan 10 tests for test/RegistryAuditRegression.t.sol:RegistryAuditRegressionTest\n[PASS] testFuzz_applicationPaysCurrentPrice(uint96) (runs: 256, μ: 3106374, ~: 3106166)\nLogs:\n  Bound result 1\n\n[PASS] test_defendedChallengeFromAnotherWalletDoesNotRenewImmunity() (gas: 9334907)\n[PASS] test_defendedSelfChallengeDoesNotRenewImmunity() (gas: 21882005)\n[PASS] test_permissionlessApplicantCanOccupySlotUntilRejected() (gas: 6211160)\n[PASS] test_priceRiseAndFall_preserveBondAndExactPayment() (gas: 9528960)\n[PASS] test_retiredActionApplicationMovesNothing() (gas: 281247)\n[PASS] test_retiredActionRefusesBeforePaymentAndPreservesListing() (gas: 6409968)\n[PASS] test_signedAnswerMustReachItsOwnQuorum() (gas: 3221964)\n[PASS] test_stakingFaucetTokenCannotPayOracleFee() (gas: 4326870)\n[PASS] test_staleExactApprovalCannotSpendAnUnexpectedPriceIncrease() (gas: 345326)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 231.46ms (236.23ms CPU time)\n\nRan 20 tests for test/Stacker.t.sol:StackerTest\n[PASS] testFuzz_credit(address,uint256) (runs: 256, μ: 394497, ~: 394347)\nLogs:\n  Bound result 6570\n\n[PASS] testFuzz_credit_shortAllowanceAlwaysReverts(uint256,uint256) (runs: 256, μ: 367781, ~: 368900)\nLogs:\n  Bound result 51\n  Bound result 11\n\n[PASS] testFuzz_credit_twoTradersProportional(uint256,uint256) (runs: 256, μ: 430309, ~: 430416)\nLogs:\n  Bound result 410000\n  Bound result 51\n\n[PASS] test_constructor_doesNotCallExistingVaultOrToken() (gas: 56148)\n[PASS] test_constructor_vaultWithoutCode_creditCannotMove() (gas: 131325)\n[PASS] test_constructor_wiringWithoutExternalCalls() (gas: 43846)\n[PASS] test_credit_manyProjectsAndTraders() (gas: 9375713)\n[PASS] test_credit_revertsOnShortAllowance() (gas: 378525)\n[PASS] test_credit_revertsOnShortBalance() (gas: 370632)\n[PASS] test_credit_revertsOnZeroShares() (gas: 383379)\n[PASS] test_credit_revertsWhenVaultPaused() (gas: 508239)\n[PASS] test_credit_sharesFollowVaultPrice() (gas: 617949)\n[PASS] test_credit_sharesGoOnlyToTrader() (gas: 374498)\n[PASS] test_credit_totalsAndEvent() (gas: 494195)\n[PASS] test_credit_zeroAmountReturnsZeroNoEvent() (gas: 80135)\n[PASS] test_credit_zeroTraderReverts() (gas: 66272)\n[PASS] test_failedFirstCredit_rollsBackApprovalAndRetriesValidation() (gas: 531891)\n[PASS] test_firstCredit_approvesOnce_andLaterCreditsStillWork() (gas: 397571)\n[PASS] test_firstCredit_revertsOnAssetMismatch() (gas: 791662)\n[PASS] test_integrator_tryCatchSurvivesPausedVault() (gas: 1053849)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 417.36ms (423.24ms CPU time)\n\nRan 9 tests for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodBlocksTest\n[PASS] testFuzz_periodExcludesEarlierCreditsAndRetainsEarnedOnDelisting(uint32,uint32,uint32) (runs: 256, μ: 6364780, ~: 6364745)\nLogs:\n  Bound result 94967083\n  Bound result 26\n  Bound result 94967101\n\n[PASS] test_blockSourceUsesExecutionChainRatherThanQuestionChain() (gas: 3241672)\n[PASS] test_distinctRollupTransitionsWithinOneParentBlock() (gas: 9412666)\n[PASS] test_listingAndDelistingUseRollupBlocksInStorageAndEvents() (gas: 6369026)\n[PASS] test_mainnetAndSepoliaUseNumberEvenWhenQuestionChainIsRobinhood() (gas: 12656298)\n[PASS] test_malformedArbSysCannotEraseAnExistingListingOrBond() (gas: 6430033)\n[PASS] test_rejectionDefenseAndFailureDoNotReadArbSys() (gas: 12743357)\n[PASS] test_robinhoodQuestionNamesLiveRemoteStackerWithoutCallingIt() (gas: 3460872)\n[PASS] test_unavailableArbSysCannotSilentlyUseParentHeight() (gas: 3264922)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 431.78ms (450.51ms CPU time)\n\nRan 15 tests for test/StackReceiverAdversarial.t.sol:StackReceiverAdversarialTest\n[PASS] testFuzz_headerFieldsPreserveAmountSourceAndBeneficiaries(uint64,uint32,bytes32,bytes32,uint64) (runs: 1000, μ: 461505, ~: 461798)\nLogs:\n  Bound result 1\n\n[PASS] testFuzz_shortOFTHeaderIsAtomic(uint8) (runs: 1000, μ: 428743, ~: 428483)\nLogs:\n  Bound result 6\n\n[PASS] testFuzz_truncatedListIsAtomic(uint16) (runs: 1000, μ: 455828, ~: 450120)\nLogs:\n  Bound result 38\n\n[PASS] test_failedApprovalLeavesFirstDeliveryRetryable() (gas: 833072)\n[PASS] test_forgedComposeCannotSpendAPendingArrival() (gas: 1110024)\n[PASS] test_initializationIsLazyAndApprovalIsNotRepeated() (gas: 983971)\n[PASS] test_lateTransferFailureRollsBackEarlierDepositAndCanRetry() (gas: 1034797)\n[PASS] test_maximumSharedDecimalArrivalCanBeDelivered() (gas: 435078)\n[PASS] test_nestedAuthenticatedComposeIsBlockedAndStillRetryable() (gas: 3325460)\n[PASS] test_nonCanonicalAddressInListIsRejectedAtomically() (gas: 438638)\n[PASS] test_oneWeiAllocationAndDuplicateTradersPreserveEveryWei() (gas: 467004)\n[PASS] test_overlistedMessageCannotUseAnotherMessagesReserve() (gas: 849597)\n[PASS] test_pendingArrivalsCanBeComposedOutOfOrderAndOnlyOnce() (gas: 1074045)\n[PASS] test_sumOverflowRevertsBeforeApprovalOrDelivery() (gas: 440856)\n[PASS] test_zeroArrivalDoesNotConsumeUnrelatedFundsOrStampTraders() (gas: 345109)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 1.11s (1.11s CPU time)\n\nRan 5 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] test_emptyChainRehearsal_constructorPasses() (gas: 25975)\n[PASS] test_launchManifest_knownShape() (gas: 26240)\n[PASS] test_multichain_emptyChainRehearsal_constructorsPass() (gas: 5728964)\n[PASS] test_registry_emptyChainRehearsal_constructorPasses() (gas: 8519058)\n[PASS] test_runtimeSizeAndNoEscapeOpcodes() (gas: 4294851)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.11s (113.91ms CPU time)\n\nRan 17 tests for test/RemoteStackerAdversarial.t.sol:RemoteStackerAdversarialTest\n[PASS] testFuzz_batchPermutationDuplicatesAndEventsPreserveEntitlements(uint96,uint96,uint32) (runs: 1000, μ: 1715148, ~: 1729794)\nLogs:\n  Bound result 62515056618593543158052\n  Bound result 69210070493374950568204\n  Bound result 171238\n  Bound result 171238\n\n[PASS] testFuzz_reentrancyRejectedAtPullPlainPaymentSendAndTip(uint8,bool) (runs: 1000, μ: 854704, ~: 709956)\nLogs:\n  Bound result 1\n\n[PASS] test_batchLimitCountsRawEntriesEvenWhenEveryEntryIsADuplicate() (gas: 1279539)\n[PASS] test_bridgeFailureAfterBurnRollsBackThenSameBatchCanBeRetried() (gas: 1873213)\n[PASS] test_delegationAndOrdinaryCodeRouteDifferentlyDespiteRegistration() (gas: 745039)\n[PASS] test_entireSupplyCanQueueWithExactAllowanceAndExit() (gas: 767755)\n[PASS] test_failedPlainPaymentRollsBackPullAllowanceAndTotalPaid() (gas: 1044225)\n[PASS] test_falseTransferFromRollsBackFiniteAllowanceAndExistingQueue() (gas: 832805)\n[PASS] test_noReturnTokenAcceptedForPullPlainPaymentAndTip() (gas: 875882)\n[PASS] test_quoteFailureBubblesButEmptyAndDustQueuesNeedNoBridgeQuote() (gas: 1332022)\n[PASS] test_recipientChangesAffectFutureCreditsOnlyAndCannotAlterAnotherWallet() (gas: 1332815)\n[PASS] test_refundCallbackCannotCreditOrFlushAndExcessGoesToCaller() (gas: 1641243)\n[PASS] test_rejectedRefundRevertsAtomicallyAndExactFeeStillWorks() (gas: 2531390)\n[PASS] test_revertingTransferFromBubblesErrorAndPreservesQueue() (gas: 832046)\n[PASS] test_tipRequiresBothOneBpsOfAgeAndOneWholeTipStep() (gas: 1226003)\n[PASS] test_tipTransferFailureUndoesBurnPacketFeesAndEveryQueueDebit() (gas: 1919714)\n[PASS] test_zeroCreditsDoNotCallTokenEmitPointsOrResetAnAgedClock() (gas: 1209458)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 1.12s (1.12s CPU time)\n\nRan 3 tests for test/MultichainFlow.t.sol:MultichainFlowTest\n[PASS]\nMultichainFlowTest invariants:\n[PASS] invariant_receiverKeepsNothingAndVaultHoldsDeliveries\n[PASS] invariant_remoteStackerHoldsExactlyWhatIsWaiting\n MultichainFlowTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭-------------------+----------+-------+---------+----------╮\n| Contract          | Selector | Calls | Reverts | Discards |\n+===========================================================+\n| MultichainHandler | credit   | 722   | 0       | 0        |\n|-------------------+----------+-------+---------+----------|\n| MultichainHandler | flush    | 676   | 0       | 0        |\n|-------------------+----------+-------+---------+----------|\n| MultichainHandler | pass     | 650   | 0       | 0        |\n╰-------------------+----------+-------+---------+----------╯\n\n[PASS] test_endToEnd_creditFlushDeliver() (gas: 1460013)\n[PASS] test_handlerReachesFlushes() (gas: 1419865)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.26s (1.25s CPU time)\n\nRan 1 test for test/StackerInvariant.t.sol:StackerInvariantTest\n[PASS]\nStackerInvariantTest invariants:\n[PASS] invariant_stackerHoldsNothing\n[PASS] invariant_totalsConsistent\n[PASS] invariant_vaultConservation\n StackerInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭----------------+-------------+-------+---------+----------╮\n| Contract       | Selector    | Calls | Reverts | Discards |\n+===========================================================+\n| StackerHandler | advance     | 406   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | credit      | 395   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | donate      | 417   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | redeem      | 395   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | togglePause | 435   | 0       | 0        |\n╰----------------+-------------+-------+---------+----------╯\n\nLogs:\n  Bound result 7\n  Bound result 1790000123\n  Bound result 660\n  Bound result 4\n  Bound result 1359182279\n  Bound result 373463271692350076681879\n  Bound result 643604783810619\n  Bound result 10\n  Bound result 3\n  Bound result 12288\n  Bound result 524897928530742050604\n  Bound result 1\n  Bound result 1800000000\n  Bound result 1\n  Bound result 241\n  Bound result 8849\n  Bound result 1\n  Bound result 93\n  Bound result 16384\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.31s (1.31s CPU time)\n\nRan 2 tests for test/ProjectRegistryInvariant.t.sol:ProjectRegistryInvariantTest\n[PASS]\nProjectRegistryInvariantTest invariants:\n[PASS] invariant_holdsOnlyOpenBonds\n[PASS] invariant_listingCounts\n[PASS] invariant_recordsConsistent\n ProjectRegistryInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭-----------------+-------------------+-------+---------+----------╮\n| Contract        | Selector          | Calls | Reverts | Discards |\n+==================================================================+\n| RegistryHandler | answer            | 269   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | applyFor          | 244   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | challengeFor      | 259   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | completeAndExpire | 239   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | expireStale       | 264   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | failFor           | 239   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | handOver          | 273   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | passTime          | 261   | 0       | 0        |\n╰-----------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 83200\n  Bound result 96\n  Bound result 15665\n  Bound result 6737\n  Bound result 3822\n  Bound result 26\n  Bound result 85\n\n[PASS] test_handlerReachesEveryOutcome() (gas: 18969559)\nLogs:\n  Bound result 50\n  Bound result 25\n  Bound result 100\n  Bound result 172800\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.78s (1.78s CPU time)\n\nRan 18 tests for test/RegistryRevisionRegression.t.sol:RegistryRevisionRegressionTest\n[PASS] testFuzz_answerIsConsumedAcrossApplications(bool) (runs: 256, μ: 9345357, ~: 9342226)\n[PASS] testFuzz_beneficiaryUnlocksAfterFailureOrExpiry(bool) (runs: 256, μ: 6340243, ~: 6334432)\n[PASS] testFuzz_challengeAllowsRateChangesWithinTheRules(uint16) (runs: 256, μ: 7327465, ~: 7327649)\nLogs:\n  Bound result 25\n\n[PASS] testFuzz_validCooldownCanList(uint64) (runs: 256, μ: 3240402, ~: 3240072)\nLogs:\n  Bound result 0\n\n[PASS] test_applicationAnswerCannotDefendAChallengeAndSpendItsBond() (gas: 6302748)\n[PASS] test_beneficiaryCannotBlockEveryChallengeByTogglingWallets() (gas: 6765047)\n[PASS] test_beneficiaryCannotTransferAfterChallengeDelists() (gas: 6303253)\n[PASS] test_challengeBodyLimitsAndConsumerDomain() (gas: 6723366)\n[PASS] test_constructorRefusesOverflowingAndExcessiveCooldowns() (gas: 16556)\n[PASS] test_handoffIntervalBoundaryAndRelisting() (gas: 12675432)\n[PASS] test_invalidAnswerDoesNotConsumeUUID() (gas: 3301263)\n[PASS] test_legacyChallengeCannotChargeAfterAnyBeneficiaryHandoff() (gas: 12667248)\n[PASS] test_openChallengeLocksBeneficiaryAndDefendedBondDestination() (gas: 6742996)\n[PASS] test_pinnedChallengePreservesCooldownAndSlotRules() (gas: 6415737)\n[PASS] test_pinnedChallengeRefusesFrontrunBeforeAnyPayment() (gas: 6855192)\n[PASS] test_selfChallengeOccupiesSlotOnlyUntilItSettles() (gas: 9349636)\n[PASS] test_settingSameBeneficiaryDoesNotDisableLegacyChallenge() (gas: 6330276)\n[PASS] test_zeroAndMaximumCooldownCanList() (gas: 6391229)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 1.78s (2.08s CPU time)\n\nRan 5 tests for test/StackerAuditRegression.t.sol:StackerAuditRegressionTest\n[PASS] testFuzz_unreachableRecipientsRejectedBeforeAndAfterFirstCredit(uint256,bool) (runs: 256, μ: 1447663, ~: 1398331)\n[PASS] test_creditToImdTokenRevertsWithoutEffects() (gas: 362704)\n[PASS] test_creditToStackerRevertsWithoutEffects() (gas: 364669)\n[PASS] test_creditToVaultRevertsWithoutEffects() (gas: 364714)\n[PASS] test_zeroAmountStillRejectsUnreachableRecipients() (gas: 1092757)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.80s (1.79s CPU time)\n\nRan 17 tests for test/StackerDependencyFailures.t.sol:StackerDependencyFailuresTest\n[PASS] testFuzz_shortAssetReturnFailsBeforeAnyApproval(uint8) (runs: 1000, μ: 674652, ~: 674352)\nLogs:\n  Bound result 6\n\n[PASS] testFuzz_shortDepositReturnIsAtomic(uint8,bool,uint96) (runs: 1000, μ: 903548, ~: 885097)\nLogs:\n  Bound result 2\n  Bound result 19623\n\n[PASS] testFuzz_tokenFailureIsAtomic(uint8,uint96,bool) (runs: 1000, μ: 842706, ~: 840448)\nLogs:\n  Bound result 1\n  Bound result 3039541138551082\n\n[PASS] testFuzz_vaultPullFailureIsAtomic(uint8,uint96,bool) (runs: 1000, μ: 877110, ~: 878076)\nLogs:\n  Bound result 1\n  Bound result 11014\n\n[PASS] test_assetRevertDataBubblesAndDoesNotPrimeApproval() (gas: 670793)\n[PASS] test_dirtyAssetAddressIsRejectedBeforeAnyApproval() (gas: 673028)\n[PASS] test_falseApprovalRollsBackAndNextCreditRevalidates() (gas: 798887)\n[PASS] test_falsePullAfterMovingOneWeiRollsBackFirstApproval() (gas: 831737)\n[PASS] test_falseVaultPullRollsBackBothTransfersAndFirstApproval() (gas: 871106)\n[PASS] test_invalidBooleanApprovalRollsBack() (gas: 798824)\n[PASS] test_invalidBooleanPullRollsBack() (gas: 831884)\n[PASS] test_invalidBooleanVaultPullRollsBackEntireProjectBalance() (gas: 871365)\n[PASS] test_missingDepositReturnRollsBackActualMint() (gas: 936401)\n[PASS] test_oneByteShortDepositReturnRollsBackActualMintAndHold() (gas: 865107)\n[PASS] test_revertingApprovalRollsBackAndNextCreditRevalidates() (gas: 804553)\n[PASS] test_revertingPullBubblesErrorAfterAnEarlierCredit() (gas: 838492)\n[PASS] test_revertingVaultPullAfterEarlierCreditLeavesMatureSharesAlone() (gas: 867788)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 1.80s (1.87s CPU time)\n\nRan 19 tests for test/StackerEdges.t.sol:StackerEdgesTest\n[PASS] testFuzz_credit_pausedAlwaysRevertsAndMovesNothing(address,uint256) (runs: 1000, μ: 234702, ~: 234494)\nLogs:\n  Bound result 1000000000000000000000000\n\n[PASS] testFuzz_credit_repeatedCyclesExtractNoDust(uint256,uint8) (runs: 1000, μ: 1544922, ~: 1371058)\nLogs:\n  Bound result 9\n\n[PASS] testFuzz_credit_shortBalanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 388849, ~: 388782)\nLogs:\n  Bound result 9000000000000000000\n  Bound result 2034\n\n[PASS] testFuzz_credit_thenRedeem_noFreeProfit(uint256,uint256,uint256) (runs: 1000, μ: 744902, ~: 761980)\nLogs:\n  Bound result 99999999999999999999998\n  Bound result 96414786200709693887356\n  Bound result 99999999999999999999997\n\n[PASS] testFuzz_credit_traderValueWithinOneShareOfAmount(uint256,uint256,uint256) (runs: 1000, μ: 683421, ~: 689072)\nLogs:\n  Bound result 99999999999999999999998\n  Bound result 96414786200709693887356\n  Bound result 99999999999999999999997\n\n[PASS] testFuzz_credit_zeroSharesGuardTracksVaultPreview(uint256,uint256) (runs: 1000, μ: 488792, ~: 510460)\nLogs:\n  Bound result 1060\n  Bound result 4200000\n\n[PASS] test_credit_allowanceConsumedExactly_secondCallReverts() (gas: 615815)\n[PASS] test_credit_astronomicalButRepresentable() (gas: 365250)\n[PASS] test_credit_balanceConsumedExactly_secondCallReverts() (gas: 591245)\n[PASS] test_credit_eventMatchesReturnAndBalanceDeltaAtNonUnitPrice() (gas: 662927)\n[PASS] test_credit_maxUint_revertsCleanlyInVaultMath() (gas: 238919)\n[PASS] test_credit_oneWei() (gas: 361849)\n[PASS] test_credit_pausedBeatsShortAllowance_nothingPulled() (gas: 468574)\n[PASS] test_credit_projectIsTrader_countedOnBothSides() (gas: 326778)\n[PASS] test_credit_reentrancyFromVaultIsBlocked() (gas: 737091)\n[PASS] test_credit_zeroAmountWhilePaused_returnsZeroWithoutTouchingVault() (gas: 91175)\n[PASS] test_credit_zeroTraderWhilePaused_stillZeroTrader() (gas: 89528)\n[PASS] test_credit_zeroTraderWithShortAllowance_stillZeroTrader() (gas: 285166)\n[PASS] test_strayImdInStacker_isNeverSpentByCredit() (gas: 522405)\nSuite result: ok. 19 passed; 0 failed; 0 skipped; finished in 1.50s (3.88s CPU time)\n\nRan 8 tests for test/RegistryBodyProperties.t.sol:RegistryBodyPropertiesTest\n[PASS] testFuzz_applicationBodyRoundTripsValidText(bytes32,uint8,uint8,uint16) (runs: 1000, μ: 3617860, ~: 3581554)\nLogs:\n  Bound result 4\n  Bound result 12\n  Bound result 84\n\n[PASS] testFuzz_challengeBodyRoundTripsValidText(bytes32,uint16) (runs: 1000, μ: 6793086, ~: 6731353)\nLogs:\n  Bound result 258\n\n[PASS] test_applicationMaximumTextAndRate() (gas: 3862538)\n[PASS] test_applicationMinimumTextAndRate() (gas: 3505038)\n[PASS] test_challengeMaximumReason() (gas: 7118882)\n[PASS] test_challengeMinimumReason() (gas: 6644215)\n[PASS] test_everyForbiddenByteIsRejectedInEveryUserTextFieldBeforePayment() (gas: 53799866)\n[PASS] test_textLengthsJustOutsideLimitsAreAtomic() (gas: 3750855)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 1.80s (3.52s CPU time)\n\nRan 7 tests for test/StackerExternalCalls.t.sol:StackerExternalCallsTest\n[PASS] testFuzz_creditMatchesDirectDepositFromSameVaultState(uint96,uint96,uint96) (runs: 1000, μ: 976899, ~: 976865)\nLogs:\n  Bound result 99999000000070836465145\n  Bound result 4347345847246728988487\n  Bound result 3501411396549\n\n[PASS] testFuzz_lateFailureRollsBackAllEffects(uint96,bool,bool) (runs: 1000, μ: 2935661, ~: 2941251)\nLogs:\n  Bound result 427\n\n[PASS] test_anotherCallersApprovalCannotBeSpent() (gas: 598595)\n[PASS] test_noReturnTokenStillMovesExactAssetsAndShares() (gas: 3117679)\n[PASS] test_oneWeiLateRevertRollsBackFirstApproval() (gas: 2937621)\n[PASS] test_tokenReentryDuringApprovalAndPullCannotCreateExtraCashback() (gas: 3738736)\n[PASS] test_zeroShareReturnRollsBackAnActualMint() (gas: 2925987)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 1.80s (3.56s CPU time)\n\nRan 8 tests for test/RegistryHandoffInterval.t.sol:RegistryHandoffIntervalTest\n[PASS] testFuzz_challengeNamingTheWalletInForceAlwaysFiles(uint64) (runs: 1000, μ: 6539618, ~: 6539773)\nLogs:\n  Bound result 39078\n\n[PASS] testFuzz_secondHandoffBoundary(uint64) (runs: 1000, μ: 3316380, ~: 3314358)\nLogs:\n  Bound result 53135\n\n[PASS] test_checksBeforeTheIntervalStillComeFirst() (gas: 6494279)\n[PASS] test_clockIsPerProject() (gas: 6504390)\n[PASS] test_expiredAndFailedQuestionsLeaveTheClockAlone() (gas: 9417657)\n[PASS] test_handoffEmitsEventAndStartsExactInterval() (gas: 3291203)\n[PASS] test_intervalRefusesAThirdWalletToo() (gas: 3334032)\n[PASS] test_relistingByApplicationNamesANewWalletWithoutAHandoff() (gas: 18823021)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 1.77s (2.73s CPU time)\n\nRan 8 tests for test/StackerGas.t.sol:StackerGasTest\n[PASS] testFuzz_readmeLateFailurePaysOnceAndNextCreditWorks(uint96,bool,bool) (runs: 1000, μ: 3268130, ~: 3268027)\nLogs:\n  Bound result 555\n\n[PASS] test_oldGasCapFailsRepeatedlyAndDoesNotPrimeVault() (gas: 600749)\n[PASS] test_readmeBudgetFundsColdFirstCredit() (gas: 359519)\n[PASS] test_readmeFallbackAfterFirstMintReturnsZeroShares() (gas: 3264309)\n[PASS] test_readmeFallbackAfterRepeatMintReverts() (gas: 3264412)\n[PASS] test_readmeFallbackHasGasEvenWhenCreditExhaustsItsBudget() (gas: 473042)\n[PASS] test_readmeFallbackPaysPlainImdWhenVaultFails() (gas: 272236)\n[PASS] test_readmeGasGuardRejectsLowEstimateBeforeFallback() (gas: 94010)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 1.80s (1.80s CPU time)\n\nRan 20 tests for test/RegistryAdversarial.t.sol:RegistryAdversarialTest\n[PASS] testFuzz_nonCanonicalBoolCannotDelist(uint256) (runs: 1000, μ: 6554958, ~: 6554915)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639932\n\n[PASS] testFuzz_oldCallbacksCannotCloseReplacementApplication(uint8) (runs: 1000, μ: 6641691, ~: 6646968)\nLogs:\n  Bound result 3\n\n[PASS] testFuzz_pendingDeadlineStillAllowsAnswerButNotExpiry(bool,bool) (runs: 1000, μ: 4980003, ~: 3434895)\n[PASS] testFuzz_shortBoolEncodingCannotReleaseBond(uint8) (runs: 1000, μ: 6433895, ~: 6433626)\nLogs:\n  Bound result 6\n\n[PASS] test_answerBeforeAskToleranceHasExactBoundary() (gas: 3415208)\n[PASS] test_attestationExpiryIsInclusive() (gas: 3405667)\n[PASS] test_beneficiaryHandoverWaitsForSettlementAndRevokesOldWallet() (gas: 9832017)\n[PASS] test_challengeCooldownHasExactBoundary() (gas: 6413643)\n[PASS] test_challengeShortAllowanceCannotBorrowDonatedFunds() (gas: 3593049)\n[PASS] test_emptyAndMalformedSignaturesCannotSettle() (gas: 4191193)\n[PASS] test_everySignedFieldIsAuthenticatedBeforeABondCanMove() (gas: 10614566)\n[PASS] test_futureIssuedAtToleranceHasExactBoundary() (gas: 3405956)\n[PASS] test_intakeRevertRollsBackFeeBondApprovalAndOpenRecord() (gas: 6687614)\n[PASS] test_maximumFeeAdditionRevertsWithoutChangingListing() (gas: 3529651)\n[PASS] test_oldChallengeCannotRefundTwiceOrCloseNewChallenge() (gas: 9957131)\n[PASS] test_oneSecondAfterDeadlineCannotReleaseBondToBeneficiary() (gas: 6561589)\n[PASS] test_signatureForSameAddressOnAnotherChainCannotReleaseBond() (gas: 6575520)\n[PASS] test_starvedChallengeCallbackRefundsOnlyChallenger() (gas: 6558665)\n[PASS] test_thirdPartyPaidQuestionCannotListOurProject() (gas: 3627388)\n[PASS] test_tokenReturningFalseCannotCreatePaidRequest() (gas: 3537810)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 1.77s (5.89s CPU time)\n\nRan 2 tests for test/StackerInvariantExtended.t.sol:StackerInvariantExtendedTest\n[PASS]\nStackerInvariantExtendedTest invariants:\n[PASS] invariant_imdSupplyConservation\n[PASS] invariant_pauseAndOwnershipStateMachine\n[PASS] invariant_stackerHoldsNothing\n[PASS] invariant_stackerTotals\n[PASS] invariant_vaultConservation\n[PASS] invariant_vaultSolvent\n StackerInvariantExtendedTest invariants (runs: 128, calls: 6144, reverts: 0)\n\n╭-----------------+----------------+-------+---------+----------╮\n| Contract        | Selector       | Calls | Reverts | Discards |\n+===============================================================+\n| ExtendedHandler | advance        | 493   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | credit         | 450   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | creditTiny     | 499   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | depositDirect  | 466   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | donate         | 466   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | faucet         | 426   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | redeem         | 505   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | renounce       | 480   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | rescue         | 441   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | setAllowance   | 467   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | togglePause    | 465   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | transferShares | 472   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | withdraw       | 514   | 0       | 0        |\n╰-----------------+----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 10\n  Bound result 2811760177\n  Bound result 9999999999999999999\n  Bound result 75\n  Bound result 16444113915\n  Bound result 7503\n  Bound result 1386\n  Bound result 301\n  Bound result 19483\n  Bound result 124\n  Bound result 9070579912125865870\n  Bound result 8\n  Bound result 32\n  Bound result 911720096530411\n  Bound result 1\n  Bound result 8000000000000000000\n  Bound result 50000\n  Bound result 3429\n  Bound result 5\n  Bound result 1000000000000000000001\n  Bound result 2811760177\n  Bound result 26\n  Bound result 370\n  Bound result 3000003000000000000000000\n  Bound result 2417\n  Bound result 1495\n  Bound result 767666\n  Bound result 777\n  Bound result 86400\n  Bound result 4\n  Bound result 965363\n  Bound result 5000000\n\n[PASS] test_handlerReachesEveryCreditOutcome() (gas: 4540803)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 5\n  Bound result 100000000000000000000\n  Bound result 1\n  Bound result 50000000000000000000\n  Bound result 7\n  Bound result 24000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 10000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 372757101\n  Bound result 684498244\n  Bound result 1000000000000000000\n  Bound result 2949193105425070115\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.58s (6.57s CPU time)\n\nRan 3 tests for test/RegistryAccountingInvariant.t.sol:RegistryAccountingInvariantTest\n[PASS]\nRegistryAccountingInvariantTest invariants:\n[PASS] invariant_eachActorGetsExactlyTheirEntitlement\n[PASS] invariant_requestsAndListingsMatchIndependentHistory\n RegistryAccountingInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭---------------------------+----------------------+-------+---------+----------╮\n| Contract                  | Selector             | Calls | Reverts | Discards |\n+===============================================================================+\n| RegistryAccountingHandler | ask                  | 1787  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | donate               | 1795  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | expire               | 1800  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | handOver             | 1866  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | passTime             | 1888  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | reprice              | 1755  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | settle               | 1780  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | unauthorizedOrReplay | 1839  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | unsafeChallenge      | 1874  | 0       | 0        |\n╰---------------------------+----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 113537\n  Bound result 32\n  Bound result 46\n  Bound result 264337593543950333\n  Bound result 37666\n  Bound result 40\n  Bound result 512\n  Bound result 58\n  Bound result 1362\n  Bound result 61594\n  Bound result 2\n  Bound result 5959\n  Bound result 5622\n  Bound result 9\n  Bound result 16171\n  Bound result 2855\n  Bound result 469209978796274793\n  Bound result 9316\n  Bound result 16546\n  Bound result 10472\n  Bound result 36\n  Bound result 32421\n  Bound result 59\n  Bound result 64\n  Bound result 26080244986885\n  Bound result 345949458368723200\n  Bound result 647791784335588317\n  Bound result 20326\n  Bound result 741105162729880113\n  Bound result 92\n\n[PASS] test_handlerReachesAllPayoutsAndChecksAfterEachTransition() (gas: 40459406)\nLogs:\n  Bound result 25\n  Bound result 1\n  Bound result 100\n  Bound result 0\n  Bound result 50\n  Bound result 0\n  Bound result 50\n  Bound result 1\n  Bound result 50\n  Bound result 0\n  Bound result 50\n  Bound result 2\n  Bound result 50\n  Bound result 3\n  Bound result 50\n  Bound result 4\n  Bound result 50\n  Bound result 172800\n  Bound result 1\n  Bound result 0\n  Bound result 50\n  Bound result 123\n  Bound result 0\n  Bound result 50\n  Bound result 1\n  Bound result 50\n\n[PASS] test_handlerRetainsBeneficiaryPinAcrossHandoffsAndRelisting() (gas: 16505407)\nLogs:\n  Bound result 50\n  Bound result 0\n  Bound result 0\n  Bound result 50\n  Bound result 500000000000000000\n  Bound result 86400\n  Bound result 1\n  Bound result 50\n  Bound result 1\n  Bound result 100\n  Bound result 0\n  Bound result 50\n  Bound result 0\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 8.43s (8.49s CPU time)\n\nRan 3 tests for test/StackerHoldInvariant.t.sol:StackerHoldInvariantTest\n[PASS]\nStackerHoldInvariantTest invariants:\n[PASS] invariant_balancesAndHistoricalCashbackAreConserved\n[PASS] invariant_holdFollowsSharesAndCannotBeClearedByTimestamp\n StackerHoldInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------------+----------------------+-------+---------+----------╮\n| Contract           | Selector             | Calls | Reverts | Discards |\n+========================================================================+\n| StackerHoldHandler | advance              | 2121  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | credit               | 2080  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | donate               | 1968  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | exit                 | 2062  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | probeRenouncedPowers | 2012  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | transferShares       | 2000  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | unauthorizedExit     | 2026  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | zeroAction           | 2115  | 0       | 0        |\n╰--------------------+----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 4\n  Bound result 1928\n  Bound result 0\n  Bound result 778\n  Bound result 66\n  Bound result 3847\n  Bound result 0\n  Bound result 1658114897478246067861\n  Bound result 1089\n  Bound result 7867406173619743655124\n  Bound result 411000\n  Bound result 15540\n  Bound result 13641\n  Bound result 1289409798\n  Bound result 12144\n  Bound result 32348656505343063659\n  Bound result 2134\n  Bound result 10\n  Bound result 11959\n  Bound result 20820102760\n  Bound result 13258\n  Bound result 5\n  Bound result 17091346518155371575\n  Bound result 10\n  Bound result 22444\n  Bound result 8\n  Bound result 2563\n  Bound result 12821\n  Bound result 3325916599\n  Bound result 762\n  Bound result 400000000000000000\n  Bound result 12323039664656753587\n  Bound result 7598\n  Bound result 9000000000000000000\n  Bound result 10\n  Bound result 7\n  Bound result 5101290570446861546553\n\n[PASS] test_handlerExercisesHeldDelegatedAndMatureExits() (gas: 3851200)\nLogs:\n  Bound result 10000000000000000000\n  Bound result 2000000000000000000000000\n  Bound result 1000000000000000000000000\n  Bound result 1\n  Bound result 1000000000000000000\n  Bound result 1\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000000000\n  Bound result 1000000000000000000000000\n\n[PASS] test_handlerExercisesZeroSharesFailureBeforeInitialization() (gas: 2872846)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 1\n  Bound result 10000000000000000000\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 9.67s (10.48s CPU time)\n\nRan 2 tests for test/StackReceiverPendingInvariant.t.sol:StackReceiverPendingInvariantTest\n[PASS]\nStackReceiverPendingInvariantTest invariants:\n[PASS] invariant_countersCountOnlySuccessfulDeliveryOncePerSource\n[PASS] invariant_eachTraderReceivesOnlyTheirFundedAllocation\n[PASS] invariant_pendingAndUnsolicitedIMDAreFullyBacked\n StackReceiverPendingInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭------------------------+----------+-------+---------+----------╮\n| Contract               | Selector | Calls | Reverts | Discards |\n+================================================================+\n| ReceiverPendingHandler | arrive   | 3319  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | compose  | 3237  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | donate   | 3332  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | pause    | 3251  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | reject   | 3245  | 0       | 0        |\n╰------------------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 3\n  Bound result 4\n  Bound result 4071\n  Bound result 1\n  Bound result 12000000000000004072\n  Bound result 3\n  Bound result 9170\n  Bound result 4520\n  Bound result 8291\n  Bound result 1\n  Bound result 5\n  Bound result 2\n  Bound result 2\n  Bound result 16659\n  Bound result 1\n  Bound result 1\n  Bound result 3\n  Bound result 1\n  Bound result 730\n  Bound result 5\n  Bound result 25847341727735\n  Bound result 2\n  Bound result 982234483577243545645828\n  Bound result 2274321745\n  Bound result 1\n  Bound result 4\n  Bound result 962837977648755795055613\n  Bound result 2552851541\n  Bound result 6246\n\n[PASS] test_handlerReachesRetriesMixedPayoutsReplayAndOutOfOrderDelivery() (gas: 4267751)\nLogs:\n  Bound result 3\n  Bound result 4\n  Bound result 7000000000000000000\n  Bound result 6\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 9.76s (9.76s CPU time)\n\nRan 2 tests for test/RemoteStackerStateful.t.sol:RemoteStackerStatefulTest\n[PASS]\nRemoteStackerStatefulTest invariants:\n[PASS] invariant_burnTipsAndNativeFeesMatchActualTransfers\n[PASS] invariant_everyRecipientAndProjectRetainsItsOwnAccounting\n RemoteStackerStatefulTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| RemoteQueueHandler | credit       | 2281  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | donate       | 2354  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | elapse       | 2349  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | failFlush    | 2356  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | flush        | 2392  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | register     | 2297  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | rejectCredit | 2355  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 5046\n  Bound result 21993\n  Bound result 14983\n  Bound result 11\n  Bound result 1699\n  Bound result 1363\n  Bound result 23334\n  Bound result 30\n  Bound result 4894\n  Bound result 32207\n  Bound result 21\n  Bound result 21927\n  Bound result 726563871383644798977\n  Bound result 15551\n  Bound result 2037\n  Bound result 28\n  Bound result 15793\n  Bound result 1000000000000000000\n  Bound result 29\n  Bound result 5418\n  Bound result 13881\n  Bound result 3583517018\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 70797\n  Bound result 2\n  Bound result 22\n  Bound result 158353\n  Bound result 102209\n  Bound result 12\n  Bound result 7232\n  Bound result 770\n  Bound result 471179342989789947444\n  Bound result 20036\n  Bound result 150362\n  Bound result 49152\n  Bound result 6\n  Bound result 14371\n  Bound result 8300052935\n  Bound result 2538\n  Bound result 48\n  Bound result 6262481221\n  Bound result 15\n  Bound result 929867849253919400\n  Bound result 1000000000000000000\n  Bound result 3669\n  Bound result 5067\n  Bound result 1000000000000000000\n  Bound result 2069\n  Bound result 2770\n  Bound result 241360693018361015643\n\n[PASS] test_handlerReachesRoutingDustDonationsFailuresAndPaidFlushes() (gas: 5799198)\nLogs:\n  Bound result 7000000000000000000\n  Bound result 100000000000000000000\n  Bound result 200000000000000000000\n  Bound result 3000000000000000000\n  Bound result 9000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 4000000000000000000\n  Bound result 43200\n  Bound result 50\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 15.65s (15.65s CPU time)\n\nRan 57 test suites in 15.66s (75.61s CPU time): 345 tests passed, 0 failed, 29 skipped (374 total tests)\n","passed":true},{"durationMs":292,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ProjectRegistry.applyListing(address,string,string,uint16,address)\",\"ProjectRegistry.challenge(address,string)\",\"ProjectRegistry.challengeForBeneficiary(address,string,address)\",\"ProjectRegistry.claimBond(address)\",\"ProjectRegistry.expire(address)\",\"ProjectRegistry.onOracleFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"ProjectRegistry.onOracleResult(bytes32,(bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"ProjectRegistry.setBeneficiary(address,address)\",\"RemoteStacker.credit(address,uint256)\",\"RemoteStacker.flush(address[])\",\"RemoteStacker.setEthereumRecipient(address)\",\"StackReceiver.lzCompose(address,bytes32,bytes,address,bytes)\",\"Stacker.credit(address,uint256)\"],\"files\":{\".github/ISSUE_TEMPLATE/listing-application.yml\":88,\".gitignore\":5,\"ADAPTATION.md\":153,\"NEXT_SESSION.md\":74,\"README.md\":312,\"app.js\":2410,\"docs/data-api.md\":97,\"docs/design.md\":323,\"docs/explainer.html\":247,\"docs/history.md\":491,\"docs/launches.md\":53,\"docs/listing.md\":97,\"docs/panel-rules-v2-rehearsal-body.json\":28,\"docs/panel-rules-v2.md\":90,\"docs/plea-handoff.md\":73,\"docs/plea-test-run-2.md\":34,\"docs/robinhood-rehearsal-body.json\":1,\"favicon.svg\":11,\"foundry.toml\":26,\"index.html\":171,\"jobs/1-sepolia-launch.md\":23,\"jobs/10-sepolia-v4-launch.md\":13,\"jobs/11-sepolia-v5-launch.md\":13,\"jobs/12-mainnet-registry-launch.md\":14,\"jobs/13-sepolia-v6-launch.md\":13,\"jobs/14-mainnet-stackreceiver-launch.md\":13,\"jobs/15-robinhood-remotestacker-launch.md\":12,\"jobs/16-robinhood-registry-launch.md\":14,\"jobs/2-sepolia-site.md\":18,\"jobs/3-list-plea.md\":21,\"jobs/4-mainnet-launch.md\":16,\"jobs/5-sepolia-v2-launch.md\":12,\"jobs/5-sepolia-v2-site.md\":10,\"jobs/6-sepolia-v2-site.md\":30,\"jobs/7-sepolia-v2-site-pages.md\":22,\"jobs/8-sepolia-v3-launch.md\":13,\"jobs/9-sepolia-v3-relaunch.md\":13,\"jobs/requests/10-sepolia-v4-launch.json\":31,\"jobs/requests/11-sepolia-v5-launch.json\":31,\"jobs/requests/12-mainnet-registry-launch.json\":31,\"jobs/requests/13-sepolia-v6-launch.json\":31,\"jobs/requests/14-mainnet-stackreceiver-launch.json\":31,\"jobs/requests/15-robinhood-remotestacker-launch.json\":31,\"jobs/requests/3-list-plea.json\":10,\"jobs/requests/4-mainnet-launch.json\":31,\"jobs/requests/5-sepolia-v2-launch-only.json\":31,\"jobs/requests/5-sepolia-v2-workflow.json\":50,\"jobs/requests/6-sepolia-v2-site.json\":15,\"jobs/requests/7-sepolia-v2-site-pages.json\":15,\"jobs/requests/8-sepolia-v3-launch.json\":31,\"jobs/requests/9-sepolia-v3-relaunch.json\":31,\"launch.json\":18,\"listings/sepolia.json\":1,\"llms.txt\":56,\"remappings.txt\":3,\"src/ProjectRegistry.sol\":729,\"src/Stacker.sol\":104,\"src/multichain/LayerZero.sol\":112,\"src/multichain/RemoteStacker.sol\":314,\"src/multichain/StackReceiver.sol\":157,\"src/oracle/OracleAttestation.sol\":265,\"style.css\":1666,\"test/ADVERSARIAL_COVERAGE.md\":42,\"test/Base.t.sol\":58,\"test/Deployment.t.sol\":213,\"test/FactoryRehearsal.t.sol\":47,\"test/MAINNET_TEST_COVERAGE.md\":45,\"test/MainnetFork.t.sol\":141,\"test/MainnetLaunchRegression.t.sol\":99,\"test/MultichainFlow.t.sol\":184,\"test/OracleConsumerConformance.t.sol\":140,\"test/ProjectRegistry.t.sol\":596,\"test/ProjectRegistryInvariant.t.sol\":238,\"test/REMOTE_STACKER_TEST_COVERAGE.md\":45,\"test/RegistryAccountingInvariant.t.sol\":552,\"test/RegistryAdversarial.t.sol\":446,\"test/RegistryApplicantGate.t.sol\":166,\"test/RegistryAuditRegression.t.sol\":157,\"test/RegistryBodyProperties.t.sol\":224,\"test/RegistryBondOwed.t.sol\":313,\"test/RegistryCallbackGas.t.sol\":111,\"test/RegistryCooldownBoundary.t.sol\":44,\"test/RegistryHandoffInterval.t.sol\":235,\"test/RegistryMainnetFork.t.sol\":110,\"test/RegistryPolicyRevision.t.sol\":50,\"test/RegistryRevisionRegression.t.sol\":418,\"test/RegistryRobinhoodBlocks.t.sol\":375,\"test/RegistryRobinhoodLaunch.t.sol\":115,\"test/RegistrySelfBeneficiary.t.sol\":148,\"test/RegistrySepoliaFork.t.sol\":113,\"test/RemoteStacker.t.sol\":424,\"test/RemoteStackerAdversarial.t.sol\":560,\"test/RemoteStackerAuditRegression.t.sol\":182,\"test/RemoteStackerLaunch.t.sol\":105,\"test/RemoteStackerRefundFork.t.sol\":96,\"test/RemoteStackerStateful.t.sol\":522,\"test/RemoteTrialVenue.t.sol\":134,\"test/RobinhoodFork.t.sol\":184,\"test/SepoliaFork.t.sol\":141,\"test/StackReceiver.t.sol\":344,\"test/StackReceiverAdversarial.t.sol\":321,\"test/StackReceiverCoverage.md\":61,\"test/StackReceiverLaunch.t.sol\":118,\"test/StackReceiverMainnetFork.t.sol\":255,\"test/StackReceiverPendingInvariant.t.sol\":331,\"test/Stacker.t.sol\":423,\"test/StackerAuditRegression.t.sol\":99,\"test/StackerDependencyFailures.t.sol\":288,\"test/StackerEdges.t.sol\":391,\"test/StackerExternalCalls.t.sol\":257,\"test/StackerGas.t.sol\":186,\"test/StackerHoldInvariant.t.sol\":346,\"test/StackerInvariant.t.sol\":148,\"test/StackerInvariantExtended.t.sol\":495,\"test/TraderResolution.t.sol\":229,\"test/TrialVenue.t.sol\":147,\"test/VaultTrustRegression.t.sol\":41,\"test/helpers/StackReceiverFixture.sol\":101,\"test/mocks/MockArbSys.sol\":11,\"test/mocks/MockIntake.sol\":108,\"test/mocks/MockOFT.sol\":138,\"test/mocks/QueuedComposeEndpoint.sol\":40,\"test/mocks/RemoteAdversarialOFT.sol\":148,\"test/mocks/TestIMD.sol\":41,\"test/mocks/TestSIMD.sol\":178,\"test/trial/RemoteTrialVenue.sol\":232,\"test/trial/SelfCredit.sol\":35,\"test/trial/TrialVenue.sol\":222,\"tools/site-check/.gitignore\":2,\"tools/site-check/README.md\":35,\"tools/site-check/behavior.mjs\":124,\"tools/site-check/flows.mjs\":173,\"tools/site-check/fork-answer.sh\":27,\"tools/site-check/layout.mjs\":88,\"tools/site-check/lib.mjs\":181,\"tools/site-check/package-lock.json\":22,\"tools/site-check/package.json\":9,\"tools/site-check/refresh-bug.mjs\":50,\"tools/site-check/trial.mjs\":158,\"tools/snapshot/build.mjs\":291,\"tools/snapshot/chains.json\":29,\"tools/snapshot/test.sh\":57},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":3156,"exitCode":0,"name":"slither","output":"[medium/medium] divide-before-multiply at src/multichain/RemoteStacker.sol:262: RemoteStacker._plan(address[]) (src/multichain/RemoteStacker.sol#262-292) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/multichain/RemoteStacker.sol:262: RemoteStacker._plan(address[]) (src/multichain/RemoteStacker.sol#262-292) performs a multiplication on the result of a division:\n[medium/high] incorrect-equality at src/multichain/RemoteStacker.sol:262: RemoteStacker._plan(address[]) (src/multichain/RemoteStacker.sol#262-292) uses a dangerous strict equality:\n[medium/high] locked-ether at src/multichain/LayerZero.sol:52: Contract locking ether found:\n[medium/medium] uninitialized-local at src/multichain/StackReceiver.sol:104: StackReceiver._check(address[],uint256[],uint256).sum (src/multichain/StackReceiver.sol#104) is a local variable never initialized\n[medium/medium] unused-return at src/multichain/RemoteStacker.sol:232: RemoteStacker.flush(address[]) (src/multichain/RemoteStacker.sol#232-258) ignores return value by (receipt,None) = IOFT(address(IMD)).send{value: msg.value}(_sendParam(plan),MessagingFee(msg.value,0),msg.sender) (src/multichain/RemoteStacker.sol#248-250)\n[medium/medium] unused-return at src/ProjectRegistry.sol:457: ProjectRegistry.expire(address) (src/ProjectRegistry.sol#457-466) ignores return value by (None,None,None,completed) = intake.requests(intakeId) (src/ProjectRegistry.sol#462)\n[medium/medium] unused-return at src/oracle/OracleAttestation.sol:171: OracleAttestationConsumer._verifyAttestation(OracleAttestation.Attestation,bytes) (src/oracle/OracleAttestation.sol#171-189) ignores return value by (recovered,err,None) = ECDSA.tryRecover(digest,signature) (src/oracle/OracleAttestation.sol#184)\n[low/medium] calls-loop at src/multichain/StackReceiver.sol:140: StackReceiver._tryDeposit(uint256,address) (src/multichain/StackReceiver.sol#140-156) has external calls inside a loop: shares = SIMD.deposit(amount,trader) (src/multichain/StackReceiver.sol#147-155)\n[low/medium] calls-loop at src/multichain/StackReceiver.sol:140: StackReceiver._tryDeposit(uint256,address) (src/multichain/StackReceiver.sol#140-156) has external calls inside a loop: preview = IStakedIMDPreview(address(SIMD)).previewDeposit(amount) (src/multichain/StackReceiver.sol#142-146)\n[low/medium] reentrancy-benign at src/Stacker.sol:74: Reentrancy in Stacker.credit(address,uint256) (src/Stacker.sol#74-103):\n[low/medium] reentrancy-benign at src/multichain/StackReceiver.sol:80: Reentrancy in StackReceiver.lzCompose(address,bytes32,bytes,address,bytes) (src/multichain/StackReceiver.sol#80-97):\n[low/medium] reentrancy-benign at src/ProjectRegistry.sol:349: Reentrancy in ProjectRegistry._ask(address,ProjectRegistry.Project,string,uint256) (src/ProjectRegistry.sol#349-367):\n[low/medium] timestamp at src/multichain/RemoteStacker.sol:262: RemoteStacker._plan(address[]) (src/multichain/RemoteStacker.sol#262-292) uses timestamp for comparisons\n[low/medium] timestamp at src/ProjectRegistry.sol:322: ProjectRegistry._challenge(address,string,address) (src/ProjectRegistry.sol#322-340) uses timestamp for comparisons\n[low/medium] timestamp at src/multichain/RemoteStacker.sol:118: RemoteStacker.credit(address,uint256) (src/multichain/RemoteStacker.sol#118-157) uses timestamp for comparisons\n[low/medium] timestamp at src/ProjectRegistry.sol:532: ProjectRegistry.setBeneficiary(address,address) (src/ProjectRegistry.sol#532-547) uses timestamp for comparisons\n[low/medium] timestamp at src/oracle/OracleAttestation.sol:171: OracleAttestationConsumer._verifyAttestation(OracleAttestation.Attestation,bytes) (src/oracle/OracleAttestation.sol#171-189) uses timestamp for comparisons\n[low/medium] timestamp at src/ProjectRegistry.sol:373: ProjectRegistry.onOracleResult(bytes32,OracleAttestation.Attestation,bytes) (src/ProjectRegistry.sol#373-425) uses timestamp for comparisons\n[low/medium] timestamp at src/ProjectRegistry.sol:457: ProjectRegistry.expire(address) (src/ProjectRegistry.sol#457-466) uses timestamp for comparisons\n[low/medium] timestamp at src/multichain/RemoteStacker.sol:189: RemoteStacker.tipBps(address) (src/multichain/RemoteStacker.sol#189-194) uses timestamp for comparisons","passed":true},{"durationMs":750,"exitCode":0,"name":"aderyn","output":"[high] contract-locks-ether at src/multichain/RemoteStacker.sol:35: Contract locks Ether without a withdraw function (2 places)\n[high] reentrancy-state-change at src/Stacker.sol:86: Reentrancy: State change after external call (2 places)\n[low] costly-loop at src/multichain/RemoteStacker.sol:241: Costly operations inside loop\n[low] division-before-multiplication at src/multichain/RemoteStacker.sol:273: Incorrect Order of Division and Multiplication (2 places)\n[low] internal-function-used-once at src/oracle/OracleAttestation.sol:209: Internal Function Used Only Once\n[low] large-numeric-literal at src/ProjectRegistry.sol:105: Large Numeric Literal (5 places)\n[low] require-revert-in-loop at src/ProjectRegistry.sol:722: Loop Contains `require`/`revert` (2 places)\n[low] uninitialized-local-variable at src/ProjectRegistry.sol:722: Uninitialized Local Variable (7 places)\n[low] unsafe-erc20-operation at src/ProjectRegistry.sol:497: Unsafe ERC20 Operation\n[low] unused-public-function at src/ProjectRegistry.sol:552: Public Function Not Used Internally","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"9c324ac15fd79dc0d811a62f89af0f75cb187834a79d75f20f16dd826808527c","verifiedTreeHash":"a56925aa00bcf8f67213e37bc79f91f91ac77c7b","verifierVersion":"0.1.0+327e1e9f"},{"checks":[{"durationMs":21842,"exitCode":0,"name":"build","output":"Compiling 119 files with Solc 0.8.26\nSolc 0.8.26 finished in 21.70s\nCompiler run successful!\n","passed":true},{"durationMs":11677,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 1 test for test/RemoteStackerLaunch.t.sol:RemoteStackerLaunchTest\n[SKIP] test_manifestDeploysOnlyRemoteStackerWithoutExternalConstructorCalls() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 457.94µs (280.12µs CPU time)\n\nRan 2 tests for test/RemoteStackerRefundFork.t.sol:RemoteStackerRefundForkTest\n[SKIP] test_liveEndpointRefundCannotReenterCreditOrFlush() (gas: 0)\n[SKIP] test_liveEndpointRejectedRefundRollsBackBurnAndCanRetryExactFee() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 2 skipped; finished in 549.47µs (79.18µs CPU time)\n\nRan 5 tests for test/MainnetFork.t.sol:MainnetForkTest\n[SKIP] test_fork_creditNewThenRepeatTrader() (gas: 0)\n[SKIP] test_fork_firstCreditNeedsInitializationGas() (gas: 0)\n[SKIP] test_fork_liveFacts() (gas: 0)\n[SKIP] test_fork_oneBlockHoldThenRedeem() (gas: 0)\n[SKIP] test_fork_readmeBudgetFundsColdFirstCredit() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 457.08µs (174.27µs CPU time)\n\nRan 1 test for test/FactoryRehearsal.t.sol:FactoryRehearsalTest\n[PASS] test_sepoliaFactoryDeploysBothInOrderOnAnEmptyChain() (gas: 419613)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 503.82µs (394.86µs CPU time)\n\nRan 2 tests for test/MainnetLaunchRegression.t.sol:MainnetLaunchRegressionTest\n[SKIP] test_manifestCreate2WorksWithoutDependenciesOrInitialization() (gas: 0)\n[SKIP] test_manifestPinsExactlyOneMainnetStacker() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 2 skipped; finished in 259.22µs (120.09µs CPU time)\n\nRan 2 tests for test/StackReceiverLaunch.t.sol:StackReceiverLaunchTest\n[SKIP] test_manifestFactoryDeploysOneContractWithNoExternalConstructorCalls() (gas: 0)\n[SKIP] test_manifestPinsExactlyTheMainnetReceiver() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 2 skipped; finished in 365.32µs (162.26µs CPU time)\n\nRan 2 tests for test/VaultTrustRegression.t.sol:VaultTrustRegressionTest\n[PASS] test_dustHoldThroughStackerAndDirectVault() (gas: 910632)\n[PASS] test_vaultOwnerCanSweepCashback() (gas: 637955)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.67ms (1.63ms CPU time)\n\nRan 2 tests for test/RegistryRobinhoodExternalCalls.t.sol:RegistryRobinhoodSignerCodeTest\n[PASS] test_signerWithCodeDoesNotAcceptAnotherKeyOrLoseThePendingBond() (gas: 6397125)\n[PASS] test_signerWithCodeStillAcceptsItsOwnKeyWithin200k() (gas: 3152533)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 3.25ms (3.34ms CPU time)\n\nRan 5 tests for test/RobinhoodFork.t.sol:RobinhoodForkTest\n[SKIP] test_fork_OFTPeerRemovalBlocksTheOnlyExitAtomically() (gas: 0)\n[SKIP] test_fork_fiftyTradersQuoteAndFlush() (gas: 0)\n[SKIP] test_fork_flushBurnsHereAndTheEndpointAcceptsTheMessage() (gas: 0)\n[SKIP] test_fork_liveFacts() (gas: 0)\n[SKIP] test_fork_tooLittleFeeChangesNothing() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 381.47µs (58.61µs CPU time)\n\nRan 5 tests for test/StackReceiverMainnetFork.t.sol:StackReceiverMainnetForkTest\n[SKIP] test_fork_arrivalDepositsForEveryTrader() (gas: 0)\n[SKIP] test_fork_composeIsDeliveredOnceAndOnlyFromTheEndpoint() (gas: 0)\n[SKIP] test_fork_composeRejectsValueWithoutConsumingTheQueue() (gas: 0)\n[SKIP] test_fork_gasBudgetCoversOneTenAndFiftyTraders() (gas: 0)\n[SKIP] test_fork_liveFacts() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 656.11µs (91.74µs CPU time)\n\nRan 5 tests for test/SepoliaFork.t.sol:SepoliaForkTest\n[SKIP] test_sepolia_creditEventAndTotals() (gas: 0)\n[SKIP] test_sepolia_liveFacts() (gas: 0)\n[SKIP] test_sepolia_liveStackerValidCreditMatchesMainnetCandidate() (gas: 0)\n[SKIP] test_sepolia_mainnetCandidateRejectsLegacyUnreachableRecipients() (gas: 0)\n[SKIP] test_sepolia_pausedVaultRevertsThenRecovers() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 364.39µs (48.71µs CPU time)\n\nRan 1 test for test/RegistrySepoliaFork.t.sol:RegistrySepoliaForkTest\n[SKIP] test_sepolia_applyPaysTheRealIntake_thenAnswerLists() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 295.68µs (28.03µs CPU time)\n\nRan 5 tests for test/OracleConsumerConformance.t.sol:OracleConsumerConformanceTest\n[PASS] test_acceptsAFreshSignatureFromTheVectorKey() (gas: 182067)\n[PASS] test_callbackSelectorIsCanonical() (gas: 3671)\n[PASS] test_digestMatchesTheProtocol() (gas: 13686)\n[PASS] test_protocolSignaturePassesVerificationBeforePanelPolicy() (gas: 69545)\n[PASS] test_tamperingTheProtocolVectorFailsSignatureVerification() (gas: 64569)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.14ms (843.70µs CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdDelistingTest\n[PASS] test_coldDelistedChallenge_deliveredWithin200k() (gas: 171902)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.97ms (151.86µs CPU time)\n\nRan 3 tests for test/RegistryCallbackGas.t.sol:RegistryColdFailureTest\n[PASS] test_coldChallengeAfterDeadline_canExpire() (gas: 128213)\n[PASS] test_coldDisagreedChallenge_deliveredWithin200k() (gas: 140179)\n[PASS] test_coldRefusedChallenge_deliveredWithin200k() (gas: 140262)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 2.34ms (210.62µs CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdListingTest\n[PASS] test_coldApplicationYes_deliveredWithin200k() (gas: 162871)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.06ms (123.85µs CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdRejectionTest\n[PASS] test_coldApplicationNo_deliveredWithin200k() (gas: 156227)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.06ms (120.81µs CPU time)\n\nRan 4 tests for test/RegistryCooldownBoundary.t.sol:RegistryCooldownBoundaryTest\n[PASS] test_challengeExactlyAtCooldown_succeeds() (gas: 6106859)\n[PASS] test_challengeOneSecondBeforeCooldown_reverts() (gas: 3201787)\n[PASS] test_constructor_rejectsCooldownAboveMax() (gas: 14194)\n[PASS] test_keptChallenge_doesNotRestartCooldown() (gas: 9279553)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 3.37ms (2.79ms CPU time)\n\nRan 2 tests for test/RegistryPolicyRevision.t.sol:RegistryPolicyRevisionTest\n[PASS] test_applicationAndChallengeRequireResolvedTraderAndExcludeLpFees() (gas: 6829404)\n[PASS] test_lpRebateDefeatsGrossFeeFloor() (gas: 5991)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 2.73ms (1.84ms CPU time)\n\nRan 23 tests for test/ProjectRegistry.t.sol:ProjectRegistryTest\n[PASS] testFuzz_apply_nameIsSafeOrRefused(bytes) (runs: 256, μ: 370185, ~: 55898)\n[PASS] testFuzz_apply_rate(uint16) (runs: 256, μ: 428977, ~: 47867)\n[PASS] test_answer_freshnessAndPanelChecks() (gas: 3531117)\n[PASS] test_answer_mustBeSignedByTheOracleForThisContract() (gas: 3219851)\n[PASS] test_answer_onlyFromTheIntake_onlyForOurOpenRequest() (gas: 3229825)\n[PASS] test_apply_bodyIsTheOracleBody() (gas: 3317268)\n[PASS] test_apply_oneOpenQuestionAtATime_andNotWhenListed() (gas: 3227709)\n[PASS] test_apply_paysExactlyTheFeeAndAsks() (gas: 3117533)\n[PASS] test_apply_validation() (gas: 567226)\n[PASS] test_callbackOutOfGas_isRecoverableThroughExpire() (gas: 6062321)\n[PASS] test_challenge_defended_bondToBeneficiary_noNewCooldown() (gas: 6362524)\n[PASS] test_challenge_failureOrExpiry_returnsTheBond_projectStaysListed() (gas: 9363326)\n[PASS] test_challenge_lost_delistsFromThisBlock_bondBack() (gas: 9340308)\n[PASS] test_challenge_onlyListed_afterCooldown_oneAtATime() (gas: 6314566)\n[PASS] test_challenge_paysFeeAndBond_bodyNamesTheReason() (gas: 6469710)\n[PASS] test_constructor_rejectsZeroAddresses() (gas: 6519)\n[PASS] test_constructor_wiring() (gas: 74067)\n[PASS] test_expire_afterADay_orWhenTheIntakeCompletedWithoutAnAnswer() (gas: 6115895)\n[PASS] test_failure_clearsTheApplication_andNeverLists() (gas: 5990106)\n[PASS] test_failure_onlyFromTheIntake_onlyForOurOpenRequest() (gas: 3057732)\n[PASS] test_no_rejects_andTheProjectCanApplyAgain() (gas: 6171996)\n[PASS] test_setBeneficiary_onlyTheBeneficiaryOfAListedProject() (gas: 3319418)\n[PASS] test_yes_listsFromThisBlock() (gas: 3160740)\nSuite result: ok. 23 passed; 0 failed; 0 skipped; finished in 76.06ms (81.70ms CPU time)\n\nRan 21 tests for test/RemoteStacker.t.sol:RemoteStackerTest\n[PASS] testFuzz_flush_conservesEveryWei(uint96,uint96,uint32) (runs: 256, μ: 625863, ~: 305067)\nLogs:\n  Bound result 2\n  Bound result 8256436\n\n[PASS] testFuzz_tip_neverAboveTwoPercent(uint64,uint96) (runs: 256, μ: 182646, ~: 182651)\nLogs:\n  Bound result 541984026744595329036\n\n[PASS] test_constructor_wiringWithoutExternalCalls() (gas: 3842)\n[PASS] test_credit_clockIsAmountWeighted() (gas: 292087)\n[PASS] test_credit_contractWalletPaidPlainUnlessRegistered() (gas: 665088)\n[PASS] test_credit_eip7702WalletGoesThroughTheQueue() (gas: 290204)\n[PASS] test_credit_queuesForPlainWallet() (gas: 226667)\n[PASS] test_credit_rejectsInvalidTraders() (gas: 172391)\n[PASS] test_credit_shortAllowanceOrBalanceReverts() (gas: 187984)\n[PASS] test_credit_zeroAmountMovesNothing() (gas: 58649)\n[PASS] test_flush_atMostFiftyRecipients() (gas: 85104)\n[PASS] test_flush_dustIsNeverTippedTwice() (gas: 875951)\n[PASS] test_flush_fiftyRecipients() (gas: 9487069)\n[PASS] test_flush_isAtomic_sendFailureChangesNothing() (gas: 425526)\n[PASS] test_flush_nothingToFlushReverts() (gas: 279365)\n[PASS] test_flush_sendsRoundedAmountsPaysTipAndRefundsExcess() (gas: 1082997)\n[PASS] test_flush_skipsEmptyAndDuplicateAndDustOnlyRecipients() (gas: 892843)\n[PASS] test_flush_traderCanFlushThemselvesAtOnce() (gas: 760986)\n[PASS] test_setEthereumRecipient_refusesInvalidAndIsPerCaller() (gas: 358628)\n[PASS] test_tip_growsLinearlyAndCapsAtTwoPercent() (gas: 249888)\n[PASS] test_tip_newCashbackNeverInheritsACappedClock() (gas: 296946)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 77.42ms (81.55ms CPU time)\n\nRan 9 tests for test/RegistryBondOwed.t.sol:RegistryBondOwedTest\n[PASS] test_blockedBeneficiary_signedYes_defendsAndOwesBond() (gas: 1111896)\n[PASS] test_blockedChallenger_expireClearsAndOwesBond() (gas: 939336)\n[PASS] test_blockedChallenger_failureClearsAndOwesBond() (gas: 1232993)\n[PASS] test_blockedChallenger_signedNo_delistsAndOwesBond() (gas: 1220591)\n[PASS] test_claimBond_refusesRegistryAndPreservesRecoverableBond() (gas: 1132622)\n[PASS] test_claimBond_refusesZeroAddressAndNothingOwed() (gas: 67205)\n[PASS] test_falseReturningToken_owesBond() (gas: 1053450)\n[PASS] test_owedBondsAccumulate() (gas: 1422327)\n[PASS] test_unblocked_paysAtOnce() (gas: 951543)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 8.91ms (7.86ms CPU time)\n\nRan 1 test for test/RegistryMainnetFork.t.sol:RegistryMainnetForkTest\n[SKIP] test_mainnet_ownerAppliesToTheRealIntake_listedThenDefended() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 339.87µs (16.42µs CPU time)\n\nRan 1 test for test/RegistryRobinhoodLaunch.t.sol:RegistryRobinhoodLaunchTest\n[PASS] test_manifestDeploysOnlyRegistryOnEmptyRobinhoodChain() (gas: 14605036)\nLogs:\n  ProjectRegistry runtime bytes: 23709\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 85.95ms (85.71ms CPU time)\n\nRan 1 test for test/RegistryCallbackGas.t.sol:RegistryColdDefenseTest\n[PASS] test_coldDefendedChallenge_deliveredWithin200k() (gas: 190510)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.59ms (140.76µs CPU time)\n\nRan 1 test for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodColdListingTest\n[PASS] test_coldRobinhoodListingFits200k() (gas: 179728)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.59ms (172.32µs CPU time)\n\nRan 6 tests for test/RegistrySelfBeneficiary.t.sol:RegistrySelfBeneficiaryTest\n[PASS] test_acceptedSelfChallengeHoldsSlotUntilAnswerWithoutNewCooldown() (gas: 9461117)\n[PASS] test_applicationRefusesRegistryBeforeFeeOrRequest() (gas: 171010)\n[PASS] test_contractBeneficiaryStillReceivesBondAndCanHandOff() (gas: 6435143)\n[PASS] test_handoffRefusesRegistryAndPreservesBondRecipient() (gas: 6367834)\n[PASS] test_registryOwnedProjectCannotApplyWithRegistryAsBeneficiary() (gas: 507127)\n[PASS] test_rejectedHandoffDoesNotConsumeDailyHandoff() (gas: 3287790)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 7.17ms (6.22ms CPU time)\n\nRan 1 test for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodColdOwedBondTest\n[PASS] test_coldRobinhoodDelistingRecordsOwedBondWithin200kAndRefusesSelfClaim() (gas: 362879)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.10ms (219.68µs CPU time)\n\nRan 16 tests for test/StackReceiver.t.sol:StackReceiverTest\n[PASS] testFuzz_delivery_mixedZeroAndPositiveShares(uint96,uint96,bool) (runs: 256, μ: 489462, ~: 489274)\nLogs:\n  Bound result 1017\n  Bound result 999998000000000788\n\n[PASS] testFuzz_delivery_sumExactlyDelivered(uint96,uint96) (runs: 256, μ: 380790, ~: 380784)\n[PASS] test_constructor_wiringWithoutExternalCalls() (gas: 8112)\n[PASS] test_delivery_assetMismatchRefusesTheFirstDelivery() (gas: 1930170)\n[PASS] test_delivery_depositsForEachTraderAndKeepsNothing() (gas: 552622)\n[PASS] test_delivery_inconsistentPreviewRollsBackInsteadOfSpendingOtherFunds() (gas: 626160)\n[PASS] test_delivery_listMustAddUpToTheAmountReceived() (gas: 363345)\n[PASS] test_delivery_onlyFromTheEndpointAndOnlyForIMD() (gas: 439485)\n[PASS] test_delivery_pausedVaultPaysPlainIMD() (gas: 584380)\n[PASS] test_delivery_rejectsNativeValueAndCanRetryWithoutIt() (gas: 556396)\n[PASS] test_delivery_revertingDepositPaysOnlyThatTraderPlainIMD() (gas: 416475)\n[PASS] test_delivery_revertingPreviewPaysOnlyThatTraderPlainIMD() (gas: 400333)\n[PASS] test_delivery_strayIMDIsNeverSpent() (gas: 344430)\n[PASS] test_delivery_zeroAmountEntryIsSkipped() (gas: 304641)\n[PASS] test_delivery_zeroSharesPaysPlainIMDWithoutDepositing() (gas: 465715)\n[PASS] test_vault_zeroShareDepositStillConsumesAssets() (gas: 275682)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 124.80ms (124.10ms CPU time)\n\nRan 10 tests for test/RemoteTrialVenue.t.sol:RemoteTrialVenueTest\n[PASS] test_buyQueuesHalfTheFeeAndBurnsTheOtherHalf() (gas: 345318)\n[PASS] test_failedCreditPaysPlainImd() (gas: 233917)\n[PASS] test_gasIsCheckedBeforeTheCredit() (gas: 180521)\n[PASS] test_invalidTradersNeverResolve() (gas: 74197)\n[PASS] test_ownerCanOnlySeedOnce() (gas: 58967)\n[PASS] test_registryReadsTheOwner() (gas: 11132)\n[PASS] test_routerCallerResolvesToItsActiveCaller() (gas: 571015)\n[PASS] test_sellQueuesHalfTheFeeToo() (gas: 459360)\n[PASS] test_unknownContractCallerGetsNoCashbackItIsBurned() (gas: 242674)\n[PASS] test_wiring() (gas: 52742)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 140.70ms (977.21µs CPU time)\n\nRan 6 tests for test/RegistryRobinhoodExternalCalls.t.sol:RegistryRobinhoodExternalCallsTest\n[PASS] test_debtClaimCannotReenterOrUseAnotherProjectsOpenBond() (gas: 13032524)\n[PASS] test_defendedBondTransferCannotReenterAndReopenTheChallenge() (gas: 6632757)\n[PASS] test_emptyTransferReturnCanClaimAPreviouslyRefusedBond() (gas: 6482514)\n[PASS] test_emptyTransferReturnPaysBondExactlyOnceWithoutInventingDebt() (gas: 6397969)\n[PASS] test_feeApprovalCannotReenterExpiryOfThePartiallyOpenedQuestion() (gas: 3317373)\n[PASS] test_feePullCannotReenterAndOpenAnotherApplication() (gas: 3647368)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 7.39ms (6.37ms CPU time)\n\nRan 9 tests for test/RegistryApplicantGate.t.sol:RegistryApplicantGateTest\n[PASS] test_anyoneMayStillChallengeAnOwnedProject() (gas: 6421028)\n[PASS] test_misbehavingOwnerReadsAsNone() (gas: 15582598)\n[PASS] test_noOwnerFunctionOpenToAnyone() (gas: 3089189)\n[PASS] test_ownerChangeMovesTheRight() (gas: 3436229)\n[PASS] test_ownerMayApply() (gas: 3320997)\n[PASS] test_projectItselfMayApply() (gas: 3381856)\n[PASS] test_renouncedOwnerOpenToAnyone() (gas: 3284007)\n[PASS] test_squatterCannotBlockTheTeam() (gas: 3550460)\n[PASS] test_strangerRefusedBeforePaying() (gas: 390876)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 9.85ms (8.41ms CPU time)\n\nRan 10 tests for test/RegistryAuditRegression.t.sol:RegistryAuditRegressionTest\n[PASS] testFuzz_applicationPaysCurrentPrice(uint96) (runs: 256, μ: 3106335, ~: 3106160)\nLogs:\n  Bound result 1\n\n[PASS] test_defendedChallengeFromAnotherWalletDoesNotRenewImmunity() (gas: 9334907)\n[PASS] test_defendedSelfChallengeDoesNotRenewImmunity() (gas: 21882005)\n[PASS] test_permissionlessApplicantCanOccupySlotUntilRejected() (gas: 6211160)\n[PASS] test_priceRiseAndFall_preserveBondAndExactPayment() (gas: 9528960)\n[PASS] test_retiredActionApplicationMovesNothing() (gas: 281247)\n[PASS] test_retiredActionRefusesBeforePaymentAndPreservesListing() (gas: 6409968)\n[PASS] test_signedAnswerMustReachItsOwnQuorum() (gas: 3221964)\n[PASS] test_stakingFaucetTokenCannotPayOracleFee() (gas: 4326870)\n[PASS] test_staleExactApprovalCannotSpendAnUnexpectedPriceIncrease() (gas: 345326)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 109.31ms (113.21ms CPU time)\n\nRan 6 tests for test/RemoteStackerAuditRegression.t.sol:RemoteStackerAuditRegressionTest\n[PASS] testFuzz_clockRounding_doesNotChargeForFreshAge(uint96,uint96,uint32) (runs: 256, μ: 424833, ~: 421898)\nLogs:\n  Bound result 2\n  Bound result 8256436\n  Bound result 47562\n\n[PASS] test_bridgeRefusal_preservesCustodyAndContinuesAcceptingCredits() (gas: 1295421)\n[PASS] test_clockRounding_smallFreshCreditCannotInheritTheFullTip() (gas: 1269459)\n[PASS] test_clockRounding_uncappedBalanceAlsoFavorsTrader() (gas: 423477)\n[PASS] test_credit_refusesEthereumTokenAndEndpointBeforePullingFunds() (gas: 308594)\n[PASS] test_setEthereumRecipient_refusesEthereumTokenAndEndpoint() (gas: 400356)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 43.15ms (42.60ms CPU time)\n\nRan 1 test for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodColdDelistingTest\n[PASS] test_coldRobinhoodDelistingAndBondReturnFit200k() (gas: 218506)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.89ms (171.90µs CPU time)\n\nRan 20 tests for test/Stacker.t.sol:StackerTest\n[PASS] testFuzz_credit(address,uint256) (runs: 256, μ: 394529, ~: 394377)\nLogs:\n  Bound result 288661210433740977290035\n\n[PASS] testFuzz_credit_shortAllowanceAlwaysReverts(uint256,uint256) (runs: 256, μ: 367854, ~: 368888)\nLogs:\n  Bound result 657774670435030944886796\n  Bound result 657774670435030944886794\n\n[PASS] testFuzz_credit_twoTradersProportional(uint256,uint256) (runs: 256, μ: 430293, ~: 430416)\nLogs:\n  Bound result 499999999999999999999999\n  Bound result 157774670435030944886796\n\n[PASS] test_constructor_doesNotCallExistingVaultOrToken() (gas: 56148)\n[PASS] test_constructor_vaultWithoutCode_creditCannotMove() (gas: 131325)\n[PASS] test_constructor_wiringWithoutExternalCalls() (gas: 43846)\n[PASS] test_credit_manyProjectsAndTraders() (gas: 9375713)\n[PASS] test_credit_revertsOnShortAllowance() (gas: 378525)\n[PASS] test_credit_revertsOnShortBalance() (gas: 370632)\n[PASS] test_credit_revertsOnZeroShares() (gas: 383379)\n[PASS] test_credit_revertsWhenVaultPaused() (gas: 508239)\n[PASS] test_credit_sharesFollowVaultPrice() (gas: 617949)\n[PASS] test_credit_sharesGoOnlyToTrader() (gas: 374498)\n[PASS] test_credit_totalsAndEvent() (gas: 494195)\n[PASS] test_credit_zeroAmountReturnsZeroNoEvent() (gas: 80135)\n[PASS] test_credit_zeroTraderReverts() (gas: 66272)\n[PASS] test_failedFirstCredit_rollsBackApprovalAndRetriesValidation() (gas: 531891)\n[PASS] test_firstCredit_approvesOnce_andLaterCreditsStillWork() (gas: 397571)\n[PASS] test_firstCredit_revertsOnAssetMismatch() (gas: 791662)\n[PASS] test_integrator_tryCatchSurvivesPausedVault() (gas: 1053849)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 243.94ms (242.13ms CPU time)\n\nRan 5 tests for test/StackerAuditRegression.t.sol:StackerAuditRegressionTest\n[PASS] testFuzz_unreachableRecipientsRejectedBeforeAndAfterFirstCredit(uint256,bool) (runs: 256, μ: 1449231, ~: 1499721)\n[PASS] test_creditToImdTokenRevertsWithoutEffects() (gas: 362704)\n[PASS] test_creditToStackerRevertsWithoutEffects() (gas: 364669)\n[PASS] test_creditToVaultRevertsWithoutEffects() (gas: 364714)\n[PASS] test_zeroAmountStillRejectsUnreachableRecipients() (gas: 1092757)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 134.24ms (133.91ms CPU time)\n\nRan 3 tests for test/MultichainFlow.t.sol:MultichainFlowTest\n[PASS]\nMultichainFlowTest invariants:\n[PASS] invariant_receiverKeepsNothingAndVaultHoldsDeliveries\n[PASS] invariant_remoteStackerHoldsExactlyWhatIsWaiting\n MultichainFlowTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭-------------------+----------+-------+---------+----------╮\n| Contract          | Selector | Calls | Reverts | Discards |\n+===========================================================+\n| MultichainHandler | credit   | 690   | 0       | 0        |\n|-------------------+----------+-------+---------+----------|\n| MultichainHandler | flush    | 676   | 0       | 0        |\n|-------------------+----------+-------+---------+----------|\n| MultichainHandler | pass     | 682   | 0       | 0        |\n╰-------------------+----------+-------+---------+----------╯\n\n[PASS] test_endToEnd_creditFlushDeliver() (gas: 1460013)\n[PASS] test_handlerReachesFlushes() (gas: 1419865)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 393.45ms (393.37ms CPU time)\n\nRan 9 tests for test/RegistryRobinhoodBlocks.t.sol:RegistryRobinhoodBlocksTest\n[PASS] testFuzz_periodExcludesEarlierCreditsAndRetainsEarnedOnDelisting(uint32,uint32,uint32) (runs: 256, μ: 6364783, ~: 6364745)\nLogs:\n  Bound result 80000002\n  Bound result 180\n  Bound result 80000142\n\n[PASS] test_blockSourceUsesExecutionChainRatherThanQuestionChain() (gas: 3241672)\n[PASS] test_distinctRollupTransitionsWithinOneParentBlock() (gas: 9412666)\n[PASS] test_listingAndDelistingUseRollupBlocksInStorageAndEvents() (gas: 6369026)\n[PASS] test_mainnetAndSepoliaUseNumberEvenWhenQuestionChainIsRobinhood() (gas: 12656298)\n[PASS] test_malformedArbSysCannotEraseAnExistingListingOrBond() (gas: 6430033)\n[PASS] test_rejectionDefenseAndFailureDoNotReadArbSys() (gas: 12743357)\n[PASS] test_robinhoodQuestionNamesLiveRemoteStackerWithoutCallingIt() (gas: 3460872)\n[PASS] test_unavailableArbSysCannotSilentlyUseParentHeight() (gas: 3264922)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 274.14ms (282.94ms CPU time)\n\nRan 15 tests for test/StackReceiverAdversarial.t.sol:StackReceiverAdversarialTest\n[PASS] testFuzz_headerFieldsPreserveAmountSourceAndBeneficiaries(uint64,uint32,bytes32,bytes32,uint64) (runs: 1000, μ: 461569, ~: 461810)\nLogs:\n  Bound result 7000000\n\n[PASS] testFuzz_shortOFTHeaderIsAtomic(uint8) (runs: 1000, μ: 428750, ~: 428483)\nLogs:\n  Bound result 9\n\n[PASS] testFuzz_truncatedListIsAtomic(uint16) (runs: 1000, μ: 456199, ~: 450682)\nLogs:\n  Bound result 136\n\n[PASS] test_failedApprovalLeavesFirstDeliveryRetryable() (gas: 833072)\n[PASS] test_forgedComposeCannotSpendAPendingArrival() (gas: 1110024)\n[PASS] test_initializationIsLazyAndApprovalIsNotRepeated() (gas: 983971)\n[PASS] test_lateTransferFailureRollsBackEarlierDepositAndCanRetry() (gas: 1034797)\n[PASS] test_maximumSharedDecimalArrivalCanBeDelivered() (gas: 435078)\n[PASS] test_nestedAuthenticatedComposeIsBlockedAndStillRetryable() (gas: 3325460)\n[PASS] test_nonCanonicalAddressInListIsRejectedAtomically() (gas: 438638)\n[PASS] test_oneWeiAllocationAndDuplicateTradersPreserveEveryWei() (gas: 467004)\n[PASS] test_overlistedMessageCannotUseAnotherMessagesReserve() (gas: 849597)\n[PASS] test_pendingArrivalsCanBeComposedOutOfOrderAndOnlyOnce() (gas: 1074045)\n[PASS] test_sumOverflowRevertsBeforeApprovalOrDelivery() (gas: 440856)\n[PASS] test_zeroArrivalDoesNotConsumeUnrelatedFundsOrStampTraders() (gas: 345109)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 501.98ms (501.02ms CPU time)\n\nRan 2 tests for test/ProjectRegistryInvariant.t.sol:ProjectRegistryInvariantTest\n[PASS]\nProjectRegistryInvariantTest invariants:\n[PASS] invariant_holdsOnlyOpenBonds\n[PASS] invariant_listingCounts\n[PASS] invariant_recordsConsistent\n ProjectRegistryInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭-----------------+-------------------+-------+---------+----------╮\n| Contract        | Selector          | Calls | Reverts | Discards |\n+==================================================================+\n| RegistryHandler | answer            | 249   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | applyFor          | 243   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | challengeFor      | 268   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | completeAndExpire | 254   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | expireStale       | 268   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | failFor           | 263   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | handOver          | 250   | 0       | 0        |\n|-----------------+-------------------+-------+---------+----------|\n| RegistryHandler | passTime          | 253   | 0       | 0        |\n╰-----------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 89\n  Bound result 66\n  Bound result 78\n  Bound result 86401\n  Bound result 86\n  Bound result 50\n  Bound result 95\n  Bound result 79\n  Bound result 25\n\n[PASS] test_handlerReachesEveryOutcome() (gas: 18969559)\nLogs:\n  Bound result 50\n  Bound result 25\n  Bound result 100\n  Bound result 172800\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 671.10ms (672.03ms CPU time)\n\nRan 1 test for test/StackerInvariant.t.sol:StackerInvariantTest\n[PASS]\nStackerInvariantTest invariants:\n[PASS] invariant_stackerHoldsNothing\n[PASS] invariant_totalsConsistent\n[PASS] invariant_vaultConservation\n StackerInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭----------------+-------------+-------+---------+----------╮\n| Contract       | Selector    | Calls | Reverts | Discards |\n+===========================================================+\n| StackerHandler | advance     | 398   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | credit      | 433   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | donate      | 410   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | redeem      | 429   | 0       | 0        |\n|----------------+-------------+-------+---------+----------|\n| StackerHandler | togglePause | 378   | 0       | 0        |\n╰----------------+-------------+-------+---------+----------╯\n\nLogs:\n  Bound result 3233\n  Bound result 846216752967375836890402\n  Bound result 777\n  Bound result 100000000000000000000\n  Bound result 645\n  Bound result 2187\n  Bound result 1000000000000000000\n  Bound result 463463374267149401290518\n  Bound result 1506\n  Bound result 7\n  Bound result 467096589001900955422\n  Bound result 10\n  Bound result 10000000000000000000\n  Bound result 11\n  Bound result 4\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 685.04ms (682.22ms CPU time)\n\nRan 17 tests for test/StackerDependencyFailures.t.sol:StackerDependencyFailuresTest\n[PASS] testFuzz_shortAssetReturnFailsBeforeAnyApproval(uint8) (runs: 1000, μ: 674647, ~: 674352)\nLogs:\n  Bound result 9\n\n[PASS] testFuzz_shortDepositReturnIsAtomic(uint8,bool,uint96) (runs: 1000, μ: 903989, ~: 908077)\nLogs:\n  Bound result 28\n  Bound result 1817994731363450\n\n[PASS] testFuzz_tokenFailureIsAtomic(uint8,uint96,bool) (runs: 1000, μ: 842829, ~: 840448)\nLogs:\n  Bound result 1\n  Bound result 6499\n\n[PASS] testFuzz_vaultPullFailureIsAtomic(uint8,uint96,bool) (runs: 1000, μ: 877056, ~: 877993)\nLogs:\n  Bound result 3\n  Bound result 6951849662050\n\n[PASS] test_assetRevertDataBubblesAndDoesNotPrimeApproval() (gas: 670793)\n[PASS] test_dirtyAssetAddressIsRejectedBeforeAnyApproval() (gas: 673028)\n[PASS] test_falseApprovalRollsBackAndNextCreditRevalidates() (gas: 798887)\n[PASS] test_falsePullAfterMovingOneWeiRollsBackFirstApproval() (gas: 831737)\n[PASS] test_falseVaultPullRollsBackBothTransfersAndFirstApproval() (gas: 871106)\n[PASS] test_invalidBooleanApprovalRollsBack() (gas: 798824)\n[PASS] test_invalidBooleanPullRollsBack() (gas: 831884)\n[PASS] test_invalidBooleanVaultPullRollsBackEntireProjectBalance() (gas: 871365)\n[PASS] test_missingDepositReturnRollsBackActualMint() (gas: 936401)\n[PASS] test_oneByteShortDepositReturnRollsBackActualMintAndHold() (gas: 865107)\n[PASS] test_revertingApprovalRollsBackAndNextCreditRevalidates() (gas: 804553)\n[PASS] test_revertingPullBubblesErrorAfterAnEarlierCredit() (gas: 838492)\n[PASS] test_revertingVaultPullAfterEarlierCreditLeavesMatureSharesAlone() (gas: 867788)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 853.87ms (1.02s CPU time)\n\nRan 19 tests for test/StackerEdges.t.sol:StackerEdgesTest\n[PASS] testFuzz_credit_pausedAlwaysRevertsAndMovesNothing(address,uint256) (runs: 1000, μ: 234749, ~: 234522)\nLogs:\n  Bound result 10873\n\n[PASS] testFuzz_credit_repeatedCyclesExtractNoDust(uint256,uint8) (runs: 1000, μ: 1577627, ~: 1371100)\nLogs:\n  Bound result 10\n\n[PASS] testFuzz_credit_shortBalanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 388848, ~: 388782)\nLogs:\n  Bound result 1359182279\n  Bound result 4911\n\n[PASS] testFuzz_credit_thenRedeem_noFreeProfit(uint256,uint256,uint256) (runs: 1000, μ: 741372, ~: 761962)\nLogs:\n  Bound result 98969538247437891816264\n  Bound result 22513107031230455575383\n  Bound result 25322044932986311414578\n\n[PASS] testFuzz_credit_traderValueWithinOneShareOfAmount(uint256,uint256,uint256) (runs: 1000, μ: 683363, ~: 689048)\nLogs:\n  Bound result 8569\n  Bound result 853\n  Bound result 23966\n\n[PASS] testFuzz_credit_zeroSharesGuardTracksVaultPreview(uint256,uint256) (runs: 1000, μ: 489728, ~: 510443)\nLogs:\n  Bound result 25\n  Bound result 12491\n\n[PASS] test_credit_allowanceConsumedExactly_secondCallReverts() (gas: 615815)\n[PASS] test_credit_astronomicalButRepresentable() (gas: 365250)\n[PASS] test_credit_balanceConsumedExactly_secondCallReverts() (gas: 591245)\n[PASS] test_credit_eventMatchesReturnAndBalanceDeltaAtNonUnitPrice() (gas: 662927)\n[PASS] test_credit_maxUint_revertsCleanlyInVaultMath() (gas: 238919)\n[PASS] test_credit_oneWei() (gas: 361849)\n[PASS] test_credit_pausedBeatsShortAllowance_nothingPulled() (gas: 468574)\n[PASS] test_credit_projectIsTrader_countedOnBothSides() (gas: 326778)\n[PASS] test_credit_reentrancyFromVaultIsBlocked() (gas: 737091)\n[PASS] test_credit_zeroAmountWhilePaused_returnsZeroWithoutTouchingVault() (gas: 91175)\n[PASS] test_credit_zeroTraderWhilePaused_stillZeroTrader() (gas: 89528)\n[PASS] test_credit_zeroTraderWithShortAllowance_stillZeroTrader() (gas: 285166)\n[PASS] test_strayImdInStacker_isNeverSpentByCredit() (gas: 522405)\nSuite result: ok. 19 passed; 0 failed; 0 skipped; finished in 662.89ms (1.88s CPU time)\n\nRan 17 tests for test/RemoteStackerAdversarial.t.sol:RemoteStackerAdversarialTest\n[PASS] testFuzz_batchPermutationDuplicatesAndEventsPreserveEntitlements(uint96,uint96,uint32) (runs: 1000, μ: 1714653, ~: 1729794)\nLogs:\n  Bound result 99999999999000000005295\n  Bound result 62515056618593543158054\n  Bound result 21902\n  Bound result 21902\n\n[PASS] testFuzz_reentrancyRejectedAtPullPlainPaymentSendAndTip(uint8,bool) (runs: 1000, μ: 851501, ~: 709274)\nLogs:\n  Bound result 0\n\n[PASS] test_batchLimitCountsRawEntriesEvenWhenEveryEntryIsADuplicate() (gas: 1279539)\n[PASS] test_bridgeFailureAfterBurnRollsBackThenSameBatchCanBeRetried() (gas: 1873213)\n[PASS] test_delegationAndOrdinaryCodeRouteDifferentlyDespiteRegistration() (gas: 745039)\n[PASS] test_entireSupplyCanQueueWithExactAllowanceAndExit() (gas: 767755)\n[PASS] test_failedPlainPaymentRollsBackPullAllowanceAndTotalPaid() (gas: 1044225)\n[PASS] test_falseTransferFromRollsBackFiniteAllowanceAndExistingQueue() (gas: 832805)\n[PASS] test_noReturnTokenAcceptedForPullPlainPaymentAndTip() (gas: 875882)\n[PASS] test_quoteFailureBubblesButEmptyAndDustQueuesNeedNoBridgeQuote() (gas: 1332022)\n[PASS] test_recipientChangesAffectFutureCreditsOnlyAndCannotAlterAnotherWallet() (gas: 1332815)\n[PASS] test_refundCallbackCannotCreditOrFlushAndExcessGoesToCaller() (gas: 1641243)\n[PASS] test_rejectedRefundRevertsAtomicallyAndExactFeeStillWorks() (gas: 2531390)\n[PASS] test_revertingTransferFromBubblesErrorAndPreservesQueue() (gas: 832046)\n[PASS] test_tipRequiresBothOneBpsOfAgeAndOneWholeTipStep() (gas: 1226003)\n[PASS] test_tipTransferFailureUndoesBurnPacketFeesAndEveryQueueDebit() (gas: 1919714)\n[PASS] test_zeroCreditsDoNotCallTokenEmitPointsOrResetAnAgedClock() (gas: 1209458)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 898.73ms (1.65s CPU time)\n\nRan 8 tests for test/RegistryBodyProperties.t.sol:RegistryBodyPropertiesTest\n[PASS] testFuzz_applicationBodyRoundTripsValidText(bytes32,uint8,uint8,uint16) (runs: 1000, μ: 3617063, ~: 3580293)\nLogs:\n  Bound result 15\n  Bound result 15\n  Bound result 93\n\n[PASS] testFuzz_challengeBodyRoundTripsValidText(bytes32,uint16) (runs: 1000, μ: 6801887, ~: 6762618)\nLogs:\n  Bound result 17\n\n[PASS] test_applicationMaximumTextAndRate() (gas: 3862538)\n[PASS] test_applicationMinimumTextAndRate() (gas: 3505038)\n[PASS] test_challengeMaximumReason() (gas: 7118882)\n[PASS] test_challengeMinimumReason() (gas: 6644215)\n[PASS] test_everyForbiddenByteIsRejectedInEveryUserTextFieldBeforePayment() (gas: 53799866)\n[PASS] test_textLengthsJustOutsideLimitsAreAtomic() (gas: 3750855)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 836.91ms (1.57s CPU time)\n\nRan 18 tests for test/RegistryRevisionRegression.t.sol:RegistryRevisionRegressionTest\n[PASS] testFuzz_answerIsConsumedAcrossApplications(bool) (runs: 256, μ: 9345383, ~: 9342226)\n[PASS] testFuzz_beneficiaryUnlocksAfterFailureOrExpiry(bool) (runs: 256, μ: 6340291, ~: 6334432)\n[PASS] testFuzz_challengeAllowsRateChangesWithinTheRules(uint16) (runs: 256, μ: 7327481, ~: 7327649)\nLogs:\n  Bound result 82\n\n[PASS] testFuzz_validCooldownCanList(uint64) (runs: 256, μ: 3240375, ~: 3240072)\nLogs:\n  Bound result 6\n\n[PASS] test_applicationAnswerCannotDefendAChallengeAndSpendItsBond() (gas: 6302748)\n[PASS] test_beneficiaryCannotBlockEveryChallengeByTogglingWallets() (gas: 6765047)\n[PASS] test_beneficiaryCannotTransferAfterChallengeDelists() (gas: 6303253)\n[PASS] test_challengeBodyLimitsAndConsumerDomain() (gas: 6723366)\n[PASS] test_constructorRefusesOverflowingAndExcessiveCooldowns() (gas: 16556)\n[PASS] test_handoffIntervalBoundaryAndRelisting() (gas: 12675432)\n[PASS] test_invalidAnswerDoesNotConsumeUUID() (gas: 3301263)\n[PASS] test_legacyChallengeCannotChargeAfterAnyBeneficiaryHandoff() (gas: 12667248)\n[PASS] test_openChallengeLocksBeneficiaryAndDefendedBondDestination() (gas: 6742996)\n[PASS] test_pinnedChallengePreservesCooldownAndSlotRules() (gas: 6415737)\n[PASS] test_pinnedChallengeRefusesFrontrunBeforeAnyPayment() (gas: 6855192)\n[PASS] test_selfChallengeOccupiesSlotOnlyUntilItSettles() (gas: 9349636)\n[PASS] test_settingSameBeneficiaryDoesNotDisableLegacyChallenge() (gas: 6330276)\n[PASS] test_zeroAndMaximumCooldownCanList() (gas: 6391229)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 848.88ms (999.38ms CPU time)\n\nRan 20 tests for test/RegistryAdversarial.t.sol:RegistryAdversarialTest\n[PASS] testFuzz_nonCanonicalBoolCannotDelist(uint256) (runs: 1000, μ: 6554963, ~: 6554927)\nLogs:\n  Bound result 40000000000000000\n\n[PASS] testFuzz_oldCallbacksCannotCloseReplacementApplication(uint8) (runs: 1000, μ: 6639850, ~: 6646968)\nLogs:\n  Bound result 1\n\n[PASS] testFuzz_pendingDeadlineStillAllowsAnswerButNotExpiry(bool,bool) (runs: 1000, μ: 5030313, ~: 6569554)\n[PASS] testFuzz_shortBoolEncodingCannotReleaseBond(uint8) (runs: 1000, μ: 6433900, ~: 6433626)\nLogs:\n  Bound result 4\n\n[PASS] test_answerBeforeAskToleranceHasExactBoundary() (gas: 3415208)\n[PASS] test_attestationExpiryIsInclusive() (gas: 3405667)\n[PASS] test_beneficiaryHandoverWaitsForSettlementAndRevokesOldWallet() (gas: 9832017)\n[PASS] test_challengeCooldownHasExactBoundary() (gas: 6413643)\n[PASS] test_challengeShortAllowanceCannotBorrowDonatedFunds() (gas: 3593049)\n[PASS] test_emptyAndMalformedSignaturesCannotSettle() (gas: 4191193)\n[PASS] test_everySignedFieldIsAuthenticatedBeforeABondCanMove() (gas: 10614566)\n[PASS] test_futureIssuedAtToleranceHasExactBoundary() (gas: 3405956)\n[PASS] test_intakeRevertRollsBackFeeBondApprovalAndOpenRecord() (gas: 6687614)\n[PASS] test_maximumFeeAdditionRevertsWithoutChangingListing() (gas: 3529651)\n[PASS] test_oldChallengeCannotRefundTwiceOrCloseNewChallenge() (gas: 9957131)\n[PASS] test_oneSecondAfterDeadlineCannotReleaseBondToBeneficiary() (gas: 6561589)\n[PASS] test_signatureForSameAddressOnAnotherChainCannotReleaseBond() (gas: 6575520)\n[PASS] test_starvedChallengeCallbackRefundsOnlyChallenger() (gas: 6558665)\n[PASS] test_thirdPartyPaidQuestionCannotListOurProject() (gas: 3627388)\n[PASS] test_tokenReturningFalseCannotCreatePaidRequest() (gas: 3537810)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 866.29ms (2.80s CPU time)\n\nRan 8 tests for test/RegistryHandoffInterval.t.sol:RegistryHandoffIntervalTest\n[PASS] testFuzz_challengeNamingTheWalletInForceAlwaysFiles(uint64) (runs: 1000, μ: 6539640, ~: 6539773)\nLogs:\n  Bound result 23063\n\n[PASS] testFuzz_secondHandoffBoundary(uint64) (runs: 1000, μ: 3316607, ~: 3314358)\nLogs:\n  Bound result 433\n\n[PASS] test_checksBeforeTheIntervalStillComeFirst() (gas: 6494279)\n[PASS] test_clockIsPerProject() (gas: 6504390)\n[PASS] test_expiredAndFailedQuestionsLeaveTheClockAlone() (gas: 9417657)\n[PASS] test_handoffEmitsEventAndStartsExactInterval() (gas: 3291203)\n[PASS] test_intervalRefusesAThirdWalletToo() (gas: 3334032)\n[PASS] test_relistingByApplicationNamesANewWalletWithoutAHandoff() (gas: 18823021)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 905.64ms (1.67s CPU time)\n\nRan 5 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] test_emptyChainRehearsal_constructorPasses() (gas: 25975)\n[PASS] test_launchManifest_knownShape() (gas: 26240)\n[PASS] test_multichain_emptyChainRehearsal_constructorsPass() (gas: 5728964)\n[PASS] test_registry_emptyChainRehearsal_constructorPasses() (gas: 8519058)\n[PASS] test_runtimeSizeAndNoEscapeOpcodes() (gas: 4294851)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 918.81ms (30.07ms CPU time)\n\nRan 2 tests for test/StackerInvariantExtended.t.sol:StackerInvariantExtendedTest\n[PASS]\nStackerInvariantExtendedTest invariants:\n[PASS] invariant_imdSupplyConservation\n[PASS] invariant_pauseAndOwnershipStateMachine\n[PASS] invariant_stackerHoldsNothing\n[PASS] invariant_stackerTotals\n[PASS] invariant_vaultConservation\n[PASS] invariant_vaultSolvent\n StackerInvariantExtendedTest invariants (runs: 128, calls: 6144, reverts: 0)\n\n╭-----------------+----------------+-------+---------+----------╮\n| Contract        | Selector       | Calls | Reverts | Discards |\n+===============================================================+\n| ExtendedHandler | advance        | 474   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | credit         | 466   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | creditTiny     | 481   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | depositDirect  | 456   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | donate         | 476   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | faucet         | 459   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | redeem         | 498   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | renounce       | 458   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | rescue         | 517   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | setAllowance   | 483   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | togglePause    | 457   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | transferShares | 454   | 0       | 0        |\n|-----------------+----------------+-------+---------+----------|\n| ExtendedHandler | withdraw       | 465   | 0       | 0        |\n╰-----------------+----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 754\n  Bound result 1306\n  Bound result 2000\n  Bound result 300000\n  Bound result 8045\n  Bound result 4000000000000000000\n  Bound result 2\n  Bound result 2090617571\n  Bound result 10091\n  Bound result 177000\n  Bound result 721366103\n  Bound result 10\n  Bound result 4\n  Bound result 1\n  Bound result 309\n  Bound result 6942\n  Bound result 5000000\n  Bound result 2271606012499886478609\n  Bound result 9999999999999999999997\n  Bound result 3\n  Bound result 2528\n  Bound result 1021\n  Bound result 32421\n\n[PASS] test_handlerReachesEveryCreditOutcome() (gas: 4540803)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 5\n  Bound result 100000000000000000000\n  Bound result 1\n  Bound result 50000000000000000000\n  Bound result 7\n  Bound result 24000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 10000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 372757101\n  Bound result 684498244\n  Bound result 1000000000000000000\n  Bound result 2949193105425070115\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 4.46s (4.46s CPU time)\n\nRan 3 tests for test/RegistryAccountingInvariant.t.sol:RegistryAccountingInvariantTest\n[PASS]\nRegistryAccountingInvariantTest invariants:\n[PASS] invariant_eachActorGetsExactlyTheirEntitlement\n[PASS] invariant_requestsAndListingsMatchIndependentHistory\n RegistryAccountingInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭---------------------------+----------------------+-------+---------+----------╮\n| Contract                  | Selector             | Calls | Reverts | Discards |\n+===============================================================================+\n| RegistryAccountingHandler | ask                  | 1818  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | donate               | 1881  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | expire               | 1809  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | handOver             | 1885  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | passTime             | 1808  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | reprice              | 1777  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | settle               | 1798  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | unauthorizedOrReplay | 1799  | 0       | 0        |\n|---------------------------+----------------------+-------+---------+----------|\n| RegistryAccountingHandler | unsafeChallenge      | 1809  | 0       | 0        |\n╰---------------------------+----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 686015058854113823\n  Bound result 610\n  Bound result 28\n  Bound result 8689\n  Bound result 1219020\n  Bound result 89\n  Bound result 1525\n  Bound result 13866\n  Bound result 18\n  Bound result 16724\n  Bound result 13368\n  Bound result 686015058855349566\n  Bound result 98\n  Bound result 24\n  Bound result 99189\n  Bound result 25\n  Bound result 90\n  Bound result 21470\n  Bound result 0\n  Bound result 52\n  Bound result 6498\n  Bound result 15241\n  Bound result 11792\n  Bound result 46800\n  Bound result 22\n  Bound result 4\n  Bound result 156563\n  Bound result 29\n  Bound result 4912\n  Bound result 51\n  Bound result 98\n  Bound result 19\n  Bound result 7049\n  Bound result 22463\n  Bound result 48\n\n[PASS] test_handlerReachesAllPayoutsAndChecksAfterEachTransition() (gas: 40459406)\nLogs:\n  Bound result 25\n  Bound result 1\n  Bound result 100\n  Bound result 0\n  Bound result 50\n  Bound result 0\n  Bound result 50\n  Bound result 1\n  Bound result 50\n  Bound result 0\n  Bound result 50\n  Bound result 2\n  Bound result 50\n  Bound result 3\n  Bound result 50\n  Bound result 4\n  Bound result 50\n  Bound result 172800\n  Bound result 1\n  Bound result 0\n  Bound result 50\n  Bound result 123\n  Bound result 0\n  Bound result 50\n  Bound result 1\n  Bound result 50\n\n[PASS] test_handlerRetainsBeneficiaryPinAcrossHandoffsAndRelisting() (gas: 16505407)\nLogs:\n  Bound result 50\n  Bound result 0\n  Bound result 0\n  Bound result 50\n  Bound result 500000000000000000\n  Bound result 86400\n  Bound result 1\n  Bound result 50\n  Bound result 1\n  Bound result 100\n  Bound result 0\n  Bound result 50\n  Bound result 0\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 5.57s (5.60s CPU time)\n\nRan 8 tests for test/StackerGas.t.sol:StackerGasTest\n[PASS] testFuzz_readmeLateFailurePaysOnceAndNextCreditWorks(uint96,bool,bool) (runs: 1000, μ: 3268134, ~: 3268027)\nLogs:\n  Bound result 1816748846508518\n\n[PASS] test_oldGasCapFailsRepeatedlyAndDoesNotPrimeVault() (gas: 600749)\n[PASS] test_readmeBudgetFundsColdFirstCredit() (gas: 359519)\n[PASS] test_readmeFallbackAfterFirstMintReturnsZeroShares() (gas: 3264309)\n[PASS] test_readmeFallbackAfterRepeatMintReverts() (gas: 3264412)\n[PASS] test_readmeFallbackHasGasEvenWhenCreditExhaustsItsBudget() (gas: 473042)\n[PASS] test_readmeFallbackPaysPlainImdWhenVaultFails() (gas: 272236)\n[PASS] test_readmeGasGuardRejectsLowEstimateBeforeFallback() (gas: 94010)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 5.63s (911.41ms CPU time)\n\nRan 9 tests for test/TrialVenue.t.sol:TrialVenueTest\n[PASS] test_buyCreditsHalfTheFeeAndBurnsTheOtherHalf() (gas: 434566)\n[PASS] test_gasIsCheckedBeforeTheCredit() (gas: 124458)\n[PASS] test_invalidTradersNeverResolve() (gas: 65332)\n[PASS] test_ownerCanOnlySeedOnce() (gas: 56951)\n[PASS] test_pausedVaultPaysPlainImd() (gas: 305091)\n[PASS] test_registryReadsTheOwner() (gas: 17255)\n[PASS] test_routerCallerResolvesToItsActiveCaller() (gas: 784096)\n[PASS] test_sellCreditsHalfTheFeeAndBurnsTheOtherHalf() (gas: 588348)\n[PASS] test_unknownContractCallerGetsNoCashbackItIsBurned() (gas: 572622)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 5.64s (1.74ms CPU time)\n\nRan 4 tests for test/RegistryRobinhoodBondInvariant.t.sol:RegistryRobinhoodBondInvariantTest\n[PASS]\nRegistryRobinhoodBondInvariantTest invariants:\n[PASS] invariant_bondsRemainBackedAndBelongToTheirCreditors\n[PASS] invariant_questionsStayIsolatedAndPeriodsUseRollupBlocks\n RegistryRobinhoodBondInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭----------------------+-------------------+-------+---------+----------╮\n| Contract             | Selector          | Calls | Reverts | Discards |\n+=======================================================================+\n| RobinhoodBondHandler | advance           | 1340  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| RobinhoodBondHandler | ask               | 2698  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| RobinhoodBondHandler | claim             | 1433  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| RobinhoodBondHandler | donate            | 1378  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| RobinhoodBondHandler | expire            | 1353  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| RobinhoodBondHandler | handoff           | 1420  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| RobinhoodBondHandler | invalidClaim      | 1345  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| RobinhoodBondHandler | replayClosed      | 1355  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| RobinhoodBondHandler | reprice           | 1397  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| RobinhoodBondHandler | restrictRecipient | 1323  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| RobinhoodBondHandler | settle            | 1342  | 0       | 0        |\n╰----------------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 687054\n  Bound result 64\n  Bound result 31\n  Bound result 9\n  Bound result 1049\n  Bound result 1294\n  Bound result 3\n  Bound result 27\n  Bound result 1411\n  Bound result 776\n  Bound result 37\n  Bound result 47\n  Bound result 6494\n  Bound result 65840927340111126\n  Bound result 2053255084553\n  Bound result 10010\n  Bound result 999905897057061194\n  Bound result 22391\n  Bound result 81\n  Bound result 28\n  Bound result 57\n  Bound result 17756\n  Bound result 10800\n  Bound result 8127\n  Bound result 32\n  Bound result 10981\n\n[PASS] test_failedAndMissingCallbacksRefundOnlyTheChallengerDespiteInterleaving() (gas: 3153045)\nLogs:\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n\n[PASS] test_handlerExercisesEverySettlementAndFeeRetirementWithoutVacuity() (gas: 17018431)\nLogs:\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 25\n  Bound result 100\n  Bound result 100\n  Bound result 86401\n  Bound result 10\n  Bound result 0\n  Bound result 0\n  Bound result 50\n  Bound result 50\n  Bound result 1\n  Bound result 1\n  Bound result 50\n\n[PASS] test_repeatedDeferredBondsAccumulateAndOneClaimCannotSpendOtherBonds() (gas: 7317367)\nLogs:\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n  Bound result 50\n\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 6.43s (6.44s CPU time)\n\nRan 7 tests for test/StackerExternalCalls.t.sol:StackerExternalCallsTest\n[PASS] testFuzz_creditMatchesDirectDepositFromSameVaultState(uint96,uint96,uint96) (runs: 1000, μ: 976933, ~: 976865)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 40002642096\n  Bound result 1\n\n[PASS] testFuzz_lateFailureRollsBackAllEffects(uint96,bool,bool) (runs: 1000, μ: 2935625, ~: 2935865)\nLogs:\n  Bound result 22078772063789442257198\n\n[PASS] test_anotherCallersApprovalCannotBeSpent() (gas: 598595)\n[PASS] test_noReturnTokenStillMovesExactAssetsAndShares() (gas: 3117679)\n[PASS] test_oneWeiLateRevertRollsBackFirstApproval() (gas: 2937621)\n[PASS] test_tokenReentryDuringApprovalAndPullCannotCreateExtraCashback() (gas: 3738736)\n[PASS] test_zeroShareReturnRollsBackAnActualMint() (gas: 2925987)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 6.53s (12.16s CPU time)\n\nRan 7 tests for test/TraderResolution.t.sol:TraderResolutionTest\n[PASS] test_directNoCodeSenderCanBeResolvedWithoutTxOrigin() (gas: 303966)\n[PASS] test_emptyHookDataResolvesActiveMsgSenderAndCannotBeSwept() (gas: 381420)\n[PASS] test_hookDataTakesPrecedenceAndSupportsContractWallets() (gas: 477363)\n[PASS] test_invalidHookDataPaysPlainImdToKnownCallerNeverInvalidRecipient() (gas: 882426)\n[PASS] test_legacyEmptyHookDataCreditsRouterAndAnyoneCanSweep() (gas: 433080)\n[PASS] test_pausedVaultPaysPlainImdToResolvedMsgSender() (gas: 301439)\n[PASS] test_unknownContractOrInvalidMsgSenderNeverBecomesTheRecipient() (gas: 522893)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 6.53s (2.39ms CPU time)\n\nRan 2 tests for test/StackReceiverPendingInvariant.t.sol:StackReceiverPendingInvariantTest\n[PASS]\nStackReceiverPendingInvariantTest invariants:\n[PASS] invariant_countersCountOnlySuccessfulDeliveryOncePerSource\n[PASS] invariant_eachTraderReceivesOnlyTheirFundedAllocation\n[PASS] invariant_pendingAndUnsolicitedIMDAreFullyBacked\n StackReceiverPendingInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭------------------------+----------+-------+---------+----------╮\n| Contract               | Selector | Calls | Reverts | Discards |\n+================================================================+\n| ReceiverPendingHandler | arrive   | 3227  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | compose  | 3382  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | donate   | 3261  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | pause    | 3190  | 0       | 0        |\n|------------------------+----------+-------+---------+----------|\n| ReceiverPendingHandler | reject   | 3324  | 0       | 0        |\n╰------------------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 3\n  Bound result 4\n  Bound result 1225\n  Bound result 4\n  Bound result 15015\n  Bound result 61912403149\n  Bound result 788815097719\n  Bound result 3\n  Bound result 5\n  Bound result 5\n  Bound result 2\n  Bound result 3\n  Bound result 3855608151\n  Bound result 2\n  Bound result 840\n  Bound result 6\n  Bound result 2215\n  Bound result 10275\n  Bound result 2\n  Bound result 1\n  Bound result 1\n  Bound result 12000000000000000000\n  Bound result 1\n  Bound result 3\n  Bound result 6\n  Bound result 5\n  Bound result 161\n  Bound result 5110\n  Bound result 8519\n  Bound result 11661\n\n[PASS] test_handlerReachesRetriesMixedPayoutsReplayAndOutOfOrderDelivery() (gas: 4267751)\nLogs:\n  Bound result 3\n  Bound result 4\n  Bound result 7000000000000000000\n  Bound result 6\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.74s (6.74s CPU time)\n\nRan 3 tests for test/StackerHoldInvariant.t.sol:StackerHoldInvariantTest\n[PASS]\nStackerHoldInvariantTest invariants:\n[PASS] invariant_balancesAndHistoricalCashbackAreConserved\n[PASS] invariant_holdFollowsSharesAndCannotBeClearedByTimestamp\n StackerHoldInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------------+----------------------+-------+---------+----------╮\n| Contract           | Selector             | Calls | Reverts | Discards |\n+========================================================================+\n| StackerHoldHandler | advance              | 2064  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | credit               | 2045  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | donate               | 2052  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | exit                 | 2005  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | probeRenouncedPowers | 2065  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | transferShares       | 2043  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | unauthorizedExit     | 2033  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| StackerHoldHandler | zeroAction           | 2077  | 0       | 0        |\n╰--------------------+----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 49152\n  Bound result 2\n  Bound result 4228784914165868954241\n  Bound result 9095346552331816659941\n  Bound result 1329595688372429674786\n  Bound result 2031\n  Bound result 10\n  Bound result 2518973129987849296625\n  Bound result 0\n  Bound result 6020000000000000000\n  Bound result 6861\n  Bound result 242\n  Bound result 10\n  Bound result 5469\n  Bound result 4000000000000000007\n  Bound result 5\n  Bound result 10\n  Bound result 3\n  Bound result 3852588818360278971412\n  Bound result 3751\n  Bound result 5\n  Bound result 912083\n  Bound result 1800003600\n  Bound result 6798\n  Bound result 30101\n  Bound result 396260\n  Bound result 14548\n  Bound result 9900\n  Bound result 7498\n  Bound result 912082\n  Bound result 30000\n  Bound result 50000\n  Bound result 7877\n  Bound result 2801\n  Bound result 2492\n  Bound result 15069495326\n  Bound result 216\n  Bound result 16031\n\n[PASS] test_handlerExercisesHeldDelegatedAndMatureExits() (gas: 3851200)\nLogs:\n  Bound result 10000000000000000000\n  Bound result 2000000000000000000000000\n  Bound result 1000000000000000000000000\n  Bound result 1\n  Bound result 1000000000000000000\n  Bound result 1\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000000000\n  Bound result 1000000000000000000000000\n\n[PASS] test_handlerExercisesZeroSharesFailureBeforeInitialization() (gas: 2872846)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 1\n  Bound result 10000000000000000000\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 7.04s (7.04s CPU time)\n\nRan 2 tests for test/RemoteStackerStateful.t.sol:RemoteStackerStatefulTest\n[PASS]\nRemoteStackerStatefulTest invariants:\n[PASS] invariant_burnTipsAndNativeFeesMatchActualTransfers\n[PASS] invariant_everyRecipientAndProjectRetainsItsOwnAccounting\n RemoteStackerStatefulTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| RemoteQueueHandler | credit       | 2293  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | donate       | 2306  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | elapse       | 2395  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | failFlush    | 2347  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | flush        | 2350  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | register     | 2371  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| RemoteQueueHandler | rejectCredit | 2322  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 652731463369553464000512\n  Bound result 1000000000000000000\n  Bound result 1050\n  Bound result 54797804\n  Bound result 589928461891782872549115\n  Bound result 3792478065\n  Bound result 23333\n  Bound result 126472\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 15905\n  Bound result 19731\n  Bound result 31\n  Bound result 6603\n  Bound result 7\n  Bound result 15602\n  Bound result 25160\n  Bound result 1482\n  Bound result 22379675210291903\n  Bound result 4947\n  Bound result 1000000000000000000\n  Bound result 24087\n  Bound result 37\n  Bound result 15793\n  Bound result 6\n  Bound result 1321\n  Bound result 2\n  Bound result 661925261336336549628\n  Bound result 1000000000000000000\n  Bound result 50\n  Bound result 2989\n  Bound result 259099017244295091\n  Bound result 60846\n  Bound result 1000000000000000000\n  Bound result 67487\n  Bound result 1000000000000000000\n  Bound result 10001\n  Bound result 12979\n  Bound result 9\n  Bound result 0\n  Bound result 16238\n  Bound result 1000000000000000000\n  Bound result 12\n  Bound result 20\n  Bound result 38\n  Bound result 9671\n  Bound result 20777\n  Bound result 1000000000000000000\n  Bound result 10\n  Bound result 170795\n\n[PASS] test_handlerReachesRoutingDustDonationsFailuresAndPaidFlushes() (gas: 5799198)\nLogs:\n  Bound result 7000000000000000000\n  Bound result 100000000000000000000\n  Bound result 200000000000000000000\n  Bound result 3000000000000000000\n  Bound result 9000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 4000000000000000000\n  Bound result 43200\n  Bound result 50\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 11.53s (11.53s CPU time)\n\nRan 60 test suites in 11.53s (76.52s CPU time): 357 tests passed, 0 failed, 29 skipped (386 total tests)\n","passed":true},{"durationMs":103,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ProjectRegistry.applyListing(address,string,string,uint16,address)\",\"ProjectRegistry.challenge(address,string)\",\"ProjectRegistry.challengeForBeneficiary(address,string,address)\",\"ProjectRegistry.claimBond(address)\",\"ProjectRegistry.expire(address)\",\"ProjectRegistry.onOracleFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"ProjectRegistry.onOracleResult(bytes32,(bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"ProjectRegistry.setBeneficiary(address,address)\",\"RemoteStacker.credit(address,uint256)\",\"RemoteStacker.flush(address[])\",\"RemoteStacker.setEthereumRecipient(address)\",\"StackReceiver.lzCompose(address,bytes32,bytes,address,bytes)\",\"Stacker.credit(address,uint256)\"],\"files\":{\".github/ISSUE_TEMPLATE/listing-application.yml\":88,\".gitignore\":5,\"ADAPTATION.md\":153,\"NEXT_SESSION.md\":74,\"README.md\":312,\"app.js\":2410,\"docs/data-api.md\":97,\"docs/design.md\":323,\"docs/explainer.html\":247,\"docs/history.md\":491,\"docs/launches.md\":53,\"docs/listing.md\":97,\"docs/panel-rules-v2-rehearsal-body.json\":28,\"docs/panel-rules-v2.md\":90,\"docs/plea-handoff.md\":73,\"docs/plea-test-run-2.md\":34,\"docs/robinhood-rehearsal-body.json\":1,\"favicon.svg\":11,\"foundry.toml\":26,\"index.html\":171,\"jobs/1-sepolia-launch.md\":23,\"jobs/10-sepolia-v4-launch.md\":13,\"jobs/11-sepolia-v5-launch.md\":13,\"jobs/12-mainnet-registry-launch.md\":14,\"jobs/13-sepolia-v6-launch.md\":13,\"jobs/14-mainnet-stackreceiver-launch.md\":13,\"jobs/15-robinhood-remotestacker-launch.md\":12,\"jobs/16-robinhood-registry-launch.md\":14,\"jobs/2-sepolia-site.md\":18,\"jobs/3-list-plea.md\":21,\"jobs/4-mainnet-launch.md\":16,\"jobs/5-sepolia-v2-launch.md\":12,\"jobs/5-sepolia-v2-site.md\":10,\"jobs/6-sepolia-v2-site.md\":30,\"jobs/7-sepolia-v2-site-pages.md\":22,\"jobs/8-sepolia-v3-launch.md\":13,\"jobs/9-sepolia-v3-relaunch.md\":13,\"jobs/requests/10-sepolia-v4-launch.json\":31,\"jobs/requests/11-sepolia-v5-launch.json\":31,\"jobs/requests/12-mainnet-registry-launch.json\":31,\"jobs/requests/13-sepolia-v6-launch.json\":31,\"jobs/requests/14-mainnet-stackreceiver-launch.json\":31,\"jobs/requests/15-robinhood-remotestacker-launch.json\":31,\"jobs/requests/3-list-plea.json\":10,\"jobs/requests/4-mainnet-launch.json\":31,\"jobs/requests/5-sepolia-v2-launch-only.json\":31,\"jobs/requests/5-sepolia-v2-workflow.json\":50,\"jobs/requests/6-sepolia-v2-site.json\":15,\"jobs/requests/7-sepolia-v2-site-pages.json\":15,\"jobs/requests/8-sepolia-v3-launch.json\":31,\"jobs/requests/9-sepolia-v3-relaunch.json\":31,\"launch.json\":18,\"listings/sepolia.json\":1,\"llms.txt\":56,\"remappings.txt\":3,\"src/ProjectRegistry.sol\":729,\"src/Stacker.sol\":104,\"src/multichain/LayerZero.sol\":112,\"src/multichain/RemoteStacker.sol\":314,\"src/multichain/StackReceiver.sol\":157,\"src/oracle/OracleAttestation.sol\":265,\"style.css\":1666,\"test/ADVERSARIAL_COVERAGE.md\":42,\"test/Base.t.sol\":58,\"test/Deployment.t.sol\":213,\"test/FactoryRehearsal.t.sol\":47,\"test/MAINNET_TEST_COVERAGE.md\":45,\"test/MainnetFork.t.sol\":141,\"test/MainnetLaunchRegression.t.sol\":99,\"test/MultichainFlow.t.sol\":184,\"test/OracleConsumerConformance.t.sol\":140,\"test/ProjectRegistry.t.sol\":596,\"test/ProjectRegistryInvariant.t.sol\":238,\"test/REMOTE_STACKER_TEST_COVERAGE.md\":45,\"test/ROBINHOOD_REGISTRY_COVERAGE.md\":63,\"test/RegistryAccountingInvariant.t.sol\":552,\"test/RegistryAdversarial.t.sol\":446,\"test/RegistryApplicantGate.t.sol\":166,\"test/RegistryAuditRegression.t.sol\":157,\"test/RegistryBodyProperties.t.sol\":224,\"test/RegistryBondOwed.t.sol\":313,\"test/RegistryCallbackGas.t.sol\":111,\"test/RegistryCooldownBoundary.t.sol\":44,\"test/RegistryHandoffInterval.t.sol\":235,\"test/RegistryMainnetFork.t.sol\":110,\"test/RegistryPolicyRevision.t.sol\":50,\"test/RegistryRevisionRegression.t.sol\":418,\"test/RegistryRobinhoodBlocks.t.sol\":375,\"test/RegistryRobinhoodBondInvariant.t.sol\":605,\"test/RegistryRobinhoodExternalCalls.t.sol\":267,\"test/RegistryRobinhoodLaunch.t.sol\":115,\"test/RegistrySelfBeneficiary.t.sol\":148,\"test/RegistrySepoliaFork.t.sol\":113,\"test/RemoteStacker.t.sol\":424,\"test/RemoteStackerAdversarial.t.sol\":560,\"test/RemoteStackerAuditRegression.t.sol\":182,\"test/RemoteStackerLaunch.t.sol\":105,\"test/RemoteStackerRefundFork.t.sol\":96,\"test/RemoteStackerStateful.t.sol\":522,\"test/RemoteTrialVenue.t.sol\":134,\"test/RobinhoodFork.t.sol\":184,\"test/SepoliaFork.t.sol\":141,\"test/StackReceiver.t.sol\":344,\"test/StackReceiverAdversarial.t.sol\":321,\"test/StackReceiverCoverage.md\":61,\"test/StackReceiverLaunch.t.sol\":118,\"test/StackReceiverMainnetFork.t.sol\":255,\"test/StackReceiverPendingInvariant.t.sol\":331,\"test/Stacker.t.sol\":423,\"test/StackerAuditRegression.t.sol\":99,\"test/StackerDependencyFailures.t.sol\":288,\"test/StackerEdges.t.sol\":391,\"test/StackerExternalCalls.t.sol\":257,\"test/StackerGas.t.sol\":186,\"test/StackerHoldInvariant.t.sol\":346,\"test/StackerInvariant.t.sol\":148,\"test/StackerInvariantExtended.t.sol\":495,\"test/TraderResolution.t.sol\":229,\"test/TrialVenue.t.sol\":147,\"test/VaultTrustRegression.t.sol\":41,\"test/helpers/StackReceiverFixture.sol\":101,\"test/mocks/MockArbSys.sol\":11,\"test/mocks/MockIntake.sol\":108,\"test/mocks/MockOFT.sol\":138,\"test/mocks/QueuedComposeEndpoint.sol\":40,\"test/mocks/RemoteAdversarialOFT.sol\":148,\"test/mocks/TestIMD.sol\":41,\"test/mocks/TestSIMD.sol\":178,\"test/trial/RemoteTrialVenue.sol\":232,\"test/trial/SelfCredit.sol\":35,\"test/trial/TrialVenue.sol\":222,\"tools/site-check/.gitignore\":2,\"tools/site-check/README.md\":35,\"tools/site-check/behavior.mjs\":124,\"tools/site-check/flows.mjs\":173,\"tools/site-check/fork-answer.sh\":27,\"tools/site-check/layout.mjs\":88,\"tools/site-check/lib.mjs\":181,\"tools/site-check/package-lock.json\":22,\"tools/site-check/package.json\":9,\"tools/site-check/refresh-bug.mjs\":50,\"tools/site-check/trial.mjs\":158,\"tools/snapshot/build.mjs\":291,\"tools/snapshot/chains.json\":29,\"tools/snapshot/test.sh\":57},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"abcff3e323b21341d6241efb3dca4c19e884567e6e10c120b693862c0b8a9aaf","verifiedTreeHash":"22558034c22dfe92f2e50adcecd55a1d9e235abe","verifierVersion":"0.1.0+327e1e9f"}]}