{"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":"ce8dbe9d-8d7c-4d31-bfb2-4a856db89bc8","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"08acbbe1836f64d1f634fc5fff92b0de787171231158391fd160b9ac5ae46abd","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":"f7a1f3bbcbc7c45db37a8a7e939453ee0b82a198bb877184265e9bc7a2b6d05e","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":"8b40715a232c71d25d23cfa64c785bf635b3b781f82c0bc5ca3fe031270c6428","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":"3e2bde5cd9bc5b90bcb161169c6652f5b3abcb334135c3737378cf410e7b3e56","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":null,"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":"waiting"},{"acceptedSubmissionHash":"b8913b13d9bbf4c48e92b8a8499c593192f4ef780bc8b687346b5f0f518cc178","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":"5a9ca037dddd7dee5ff9b682886c8f83b53cf4c5412b7274eb729d7e73026957","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":null,"dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"working"},{"acceptedSubmissionHash":null,"dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","state":"failed"}],"objective":"Launch PLEA test run 8 on Sepolia from this Foundry repository exactly as launch.json lists it: five contracts (PLEA, CabalGate, Seasons, PleaDistributor, PleaLaunch), deployed in order in one transaction with the constructor arguments in launch.json. This is the final code rehearsed once more: run 7's code (branch testnet7 @ e1755aa, live as your launch #1843) plus (1) your run-7 adapt step's CabalGate size refactor, as delivered (no behaviour change); (2) the two Lows of run 7's launch audit, fixed: the Letterbox's 95% delivery floor is taken after the hook's 2% sale fees (HOOK_SALE_FEE_BPS 200), and Tribunal.standing checks the seller's exclusion before a pending objection; (3) the run-8 numbers: letters plead 20% (LETTER_SHARE_BPS 2000) and the fact score is 0-45: share of the balance sold at most 20%: 16, at most 35%: 9, more: 3; held 7 days: 7, 3 days: 4, 1 day: 2; at a loss: 13, gain at most 50%: 12, 200%: 10, 500%: 8, 1,000%: 6, more: 4 (exact band edges); PLEA that no buy record covers (claims, prizes) counts as held since trading opened, at profit 10; 24h trend up: 9, flat: 5, down: 0; need = 71 - fact (CannotPass above 45); (4) the fixes of your audit template's rounds 5 to 8 (audit/FINDINGS.md R5-* to R8-*; audit/rounds/5 to 8): two objections from different wallets may be pending at once (Tribunal Case.pending[2]); PleaLaunch's constructor refuses an oracle-fee setup the Letterbox would refuse and a zero or swapped Letterbox hash; seed waits for the hook, the Letterbox and the committed Tribunal; Tribunal.status counts the 1.2 seat multiplier; a plea larger than the seller's buy record takes the PLEA-weighted mean of the record's and the received-PLEA hold and profit points, to the nearest point; the gate's and the Tribunal's text checks refuse every Unicode format, variation-selector and default-ignorable character; PLEA the PoolManager cannot pay before a seller settles (a trim, the sale fee) is kept as ERC-6909 claims that rebalance burns; a partial fill's fee refund comes after the payouts; a Stacker without code falls back to plain-IMD cashback; the seed's dust burn is counted in totalBurned. Objection! (src/Tribunal.sol, spec OBJECTIONS.md; ownerless; deployed after the launch through PleaLaunch.deployTribunal(creationCode) against the keccak256 committed as PleaLaunch's 13th argument): for 20 minutes after an approval anyone except the seller and the wallets Seasons excludes may object (0.5 IMD oracle fee minted on Sepolia like the Letterbox's, a 0.35 IMD stake in pool IMD); a fresh panel re-scores the plea; sustained when newScore + 2 < need (no points, stake back), otherwise overruled (stake to the plea's season pot); no answer within 20 minutes voids it (stake back); the recorded score is the lowest any panel gave; at most two objections per plea, from different wallets; the sale is never touched and rulings never reset the dead-man. Unchanged from run 7: fees 2.0% (0.5% cashback, 0.75% owner, 0.25% prize pot, 0.25% wall, 0.25% of the PLEA burned), the 1.2 seat multiplier (Seasons' fourth argument, the IMD NFT (test) 0xa0443799c320e16c80801c9c1911f3571260287f), cap decay 15 days, the 82/6/12 split, six bonus seasons of 10,000,000 PLEA, top 25 from 450 to 350 bps. Build: the whole tree compiles under via_ir as one slow solc job: run forge build --skip test --skip script first (under a minute), then the tests in groups with forge test --match-path 'test/{A,B}.t.sol'; the default profile skips the fork, invariant and adversarial suites, which run under FOUNDRY_PROFILE=full one file at a time (the forks skip without their RPC URL variables); never a single forge build of the whole tree, it exceeds a 10-minute command limit. The suite is 823 tests in 89 suites; test/LaunchManifest.t.sol ties launch.json to both committed code hashes and asserts the launch fits the 16,777,216-gas cap with your factory's 22% headroom (13,494,931 as charged, 16,463,815 with headroom, 313,401 under). Audit the imported code and deploy it unchanged; fix only what the audit proves is a real bug, and keep every number as it is (timings, panel 30, quorum 17, 5-hour seasons, 33-hour dead-man, START 1792335600, credit gas 1300000, letters 20%, the fact table above, plea 1% to 50% or 2.5M, 0.70 IMD minimum plea value, 95% sale minimum, fee cap +10%, objection window 20 minutes, stake 0.35 IMD, margin 2, two objections per plea). If you change the Letterbox or the Tribunal, update its code hash in launch.json. Runtime sizes: PleaHook 24,402 bytes (174 under the EIP-170 limit), CabalGate 24,038, Letterbox 23,255, Tribunal 21,654, Seasons 12,473: keep any fix within them. Keep PLEA.setLauncher accepting either the deploy-transaction flag or PLEA's deployment block, and keep foundry.toml as it is, including the default profile's skip list, [lint] lint_on_build = false and the read-only fs_permissions for ./out and ./launch.json.","parentJobId":null,"planHash":"3264395a4a586ab96cd2bdd33c66ee79c3c0ef29115c60af0b918a66da0601cb","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"ce8dbe9d-8d7c-4d31-bfb2-4a856db89bc8","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1960-src-cabalgate-sol-src-tribunal-sol-src-p"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"50981","feedbackHash":"952a5ba7e35a9b3ca08828648e52d87760e52a8d0ed5561bafc3f4a1af6705e7","nodeKey":"adapt_contract_project","submissionHash":"08acbbe1836f64d1f634fc5fff92b0de787171231158391fd160b9ac5ae46abd","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52625","feedbackHash":"3af81cda5b018c562b6fdaa9d763963abf43ad4fc62e26048e94a0774aa0f4bf","nodeKey":"audit_economics","submissionHash":"f7a1f3bbcbc7c45db37a8a7e939453ee0b82a198bb877184265e9bc7a2b6d05e","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52612","feedbackHash":"34a7b5801828e4f35d055bf8be31edf92a5553981d657240a814a39ea190ae56","nodeKey":"audit_flow","submissionHash":"8b40715a232c71d25d23cfa64c785bf635b3b781f82c0bc5ca3fe031270c6428","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50959","feedbackHash":"6d3e1153dcd1f3806f8bbbcabf639803cd5f98e762c827a763f3431381d8d2ea","nodeKey":"audit_imported_code","submissionHash":"3e2bde5cd9bc5b90bcb161169c6652f5b3abcb334135c3737378cf410e7b3e56","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52609","feedbackHash":"9d1a70b70e44360619cdedde4e071542907ebebd9ff8f3aff34413bb82b74ae8","nodeKey":"audit_math","submissionHash":"b8913b13d9bbf4c48e92b8a8499c593192f4ef780bc8b687346b5f0f518cc178","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52619","feedbackHash":"c9c63e6b168d1c897552d900cec845a4bc44069ed491395fc1aea551ea13029d","nodeKey":"audit_permissions","submissionHash":"5a9ca037dddd7dee5ff9b682886c8f83b53cf4c5412b7274eb729d7e73026957","tag1":"review:submission","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"6661e45a6830be7b02171a998cd147ebc7208b95d82f0292bf1374d541314a03","state":"blocked","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"44b48bc3218dd131821122cf0d11acf8b986508b9597aafa983e9c9fbbf3c716","device":"5739ce0d803a43cd","findings":[],"hash":"08acbbe1836f64d1f634fc5fff92b0de787171231158391fd160b9ac5ae46abd","nodeId":"020a833a-2f28-422f-8dd7-774256d59d63","outcome":"completed","summary":"The run-8 adaptation is complete. The tree as it arrived already met every launch requirement, so the only file this step changed is ADAPTATION.md, committed as 21209b1 on branch adapt-run8.\n\n**What I verified**\n\n- The import audit's single finding is a coverage note, not a defect. My own review of the round-8 source diff and the brief's rules reproduced no defect either, so no contract was changed and launch.json keeps its hashes.\n- The Letterbox and Tribunal creation-code hashes from a fresh offline build equal PleaLaunch's 12th and 13th arguments in launch.json.\n- Runtime sizes match the brief exactly: PleaHook 24,402, CabalGate 24,038, Letterbox 23,255, Tribunal 21,654, Seasons 12,473.\n- Every agreed number is in the source as stated: letters 20%, hook sale fee 200 bps, the 0-45 fact table with exact band edges, need 71 minus fact, panel 30, quorum 17, the 20-minute window, the 0.35 IMD stake, margin 2, two objections from different wallets, the 1.2 seat multiplier, START 1792335600, credit gas 1,300,000.\n- The gate's and the Tribunal's refused character set was checked differentially against Python's Unicode 15.0 database. It refuses exactly the C1 controls, every format, line and paragraph separator and every default-ignorable code point, 4,240 in all, and nothing else.\n- PLEA.setLauncher still accepts the deploy-transaction flag or the deployment block. foundry.toml is untouched. lib/ holds ordinary files with no submodule.\n\n**Test results, offline, with the verifier's fuzz seed**\n\n| Run | Result |\n|---|---|\n| forge build --skip test --skip script | passed, 35 s |\n| forge test, default profile | 669 passed, 0 failed, 64 suites |\n| FOUNDRY_PROFILE=full, 14 invariant and adversarial files one at a time | 158 passed, 0 failed, 23 suites |\n| the two fork suites without RPC variables | skipped, as designed |\n| in all | 827 passed, 0 failed, 2 skipped, 89 suites |\n\n**One figure differs from the brief.** The manifest test measured the launch at 12,291,475 gas here, 14,995,599 with the 22% headroom, 1,781,617 under the cap. The brief's 13,494,931 came from a newer forge whose per-call transaction semantics charge more. The fit assertion holds under both, and the brief's figure is noted in ADAPTATION.md.\n\n**What ADAPTATION.md now contains**: the 17 changes since run 7's code, each tied to its brief rule or audit finding and its guard test, the audit finding's disposition, the launch requirements checked, the verification above, and the deployer's post-launch steps. The stale run-5 record it replaces remains in git history.","treeHash":"f37ddd220891691a2a79a01c1bca0b96f499b099","usage":{"cachedInputTokens":1723035,"inputTokens":642,"model":"claude-fable-5-1","outputTokens":31874,"runtime":"claude","turns":52,"wallClockMs":1703995}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"468e82a89b9bfe18","findings":[{"citation":"resolved","description":"Read in full against the Pashov checklist (every external/public state-changing function, its caller, what it moves, what it trusts): src/PLEA.sol, src/CabalGate.sol, src/Seasons.sol, src/PleaDistributor.sol, src/PleaLaunch.sol, src/PleaHook.sol, src/Letterbox.sol, src/Tribunal.sol, src/OracleAttestation.sol and src/interfaces/*. Checked specifically: the run-8 fact table (share 16/9/3, hold 7/4/2, profit 13/12/10/8/6/4 with exact band edges, uncovered PLEA held since startedAt at 10, trend 9/5/0, need = 71 - fact, CannotPass above 45) and the PLEA-weighted nearest-point mean for a plea larger than the buy record (CabalGate._factScoreAt); the Tribunal's two pending slots from different wallets, stale voiding, the shared > boundaries between object/standing/onOracleResult/_stale, lowest-score and sustain bookkeeping, stake settlement to the plea's season through Seasons.checkpointObjection and the UnfundedStake guard; Seasons.record/_tryRecord/closeSeason ordering against the 20+20-minute objection timing inside CLOSE_GRACE, the 63/64 gas rule making the read-never-trust staticcalls to the Tribunal and the seat NFT ungriefable, pot/accountedPot/rollover accounting and claim redemption; the hook's beforeSwap/afterSwap fee reservation and refund-after-payouts order, pleaClaims burn at rebalance, the Stacker-without-code fallback, seed dust counted in totalBurned, and the PLEA transfer rule for every system sender; the Letterbox's 95%-after-2% delivery floor (minOut = value * 9500/10000 * 9800/10000, matching the gate's net output), escrow/tip accounting and settle paths; PleaLaunch's constructor refusals (zero or swapped Letterbox hash, oracle-fee setup) and seed preconditions. launch.json: kind evm_contracts, five contracts in dependency order with 1/7/4/2/13 arguments matching the constructors, every hex string even-length, the 12th and 13th PleaLaunch arguments equal to keccak256 of the committed Letterbox (0xbd93782a...) and Tribunal (0x48692674...) creation code from a fresh offline build, runtime sizes PleaHook 24,402 / CabalGate 24,038 / Letterbox 23,255 / Tribunal 21,654 / Seasons 12,473 as stated. Not reached: the live Sepolia Intake v2, TestIMD, pool IMD, Stacker, PoolManager and seat NFT (not forked; the fork suites skip without their RPC variables). The audit ledger's accepted items (R5-E-1 min-of-panels re-roll, R6-P-1 record-time exclusion, the gift-buy nudge of holding time, PLEA.init minting the supply after launch and the Cabal transfer rule as the product's design) were not re-reported.","line":57,"path":"src/Tribunal.sol","reproduction":"Not a defect. Re-run: forge build --skip test --skip script --offline (60 s); forge test --offline --match-path 'test/{Tribunal,TribunalSeasons,TribunalStanding,Run7ObjectionPoints,AppealRounding}.t.sol' (106 passed, 0 failed); cast keccak of out/Letterbox.sol/Letterbox.json and out/Tribunal.sol/Tribunal.json .bytecode.object equals launch.json contracts[4].constructorArgs[11] and [12].","severity":"info","snippet":"contract Tribunal is OracleAttestationConsumer, ReentrancyGuardTransient {","title":"Coverage: all nine src contracts read, no reproducible defect found in the run-8 batch; live Sepolia dependencies not reached"}],"hash":"3e2bde5cd9bc5b90bcb161169c6652f5b3abcb334135c3737378cf410e7b3e56","nodeId":"75f6b15c-e16c-4d2b-adc4-9cd9e7191346","outcome":"completed","summary":"The review is complete. The findings file is written and no source, test or configuration file was touched (the `lib/` entries in that listing are checkout timestamps, not edits; only `.imd-findings.json` was created, plus the untracked `out/` build output).\n\n**Result: no reproducible defect found in the run-8 code.** `.imd-findings.json` holds one `info` entry stating coverage, as the acceptance criteria require.\n\n**What was read in full**: all nine contracts under `src/` plus the interfaces: PLEA, CabalGate, Seasons, PleaDistributor, PleaLaunch, PleaHook, Letterbox, Tribunal and OracleAttestation. Not reached: the live Sepolia Intake, TestIMD, pool IMD, Stacker, PoolManager and seat NFT (no fork was run).\n\n**What was checked against the brief and held**:\n- The run-8 fact table, the need formula and the PLEA-weighted nearest-point mean in `CabalGate._factScoreAt` match the stated numbers and band edges exactly.\n- The Tribunal's two pending slots from different wallets, stale voiding, the sustain and lowest-score bookkeeping, and the shared time boundaries between filing, standing, the ruling callback and staleness are mutually consistent, so Seasons can never record a plea a live objection could still lower.\n- The 40-minute worst case of objections ends inside Seasons' one-hour close grace. The read-never-trust staticcalls to the Tribunal and the seat NFT cannot be starved of gas to skip a hold, because the callee always gets 63 times the caller's remainder.\n- The Letterbox's delivery floor is 95 percent of the snapshot value after the hook's 2 percent, matching the gate's net output. The hook's refund-after-payouts order, the pleaClaims burn at rebalance, the Stacker-without-code fallback and the seed dust count behave as described.\n- `launch.json` has the right kind, five contracts in dependency order with 1, 7, 4, 2 and 13 arguments matching the constructors, even-length hex everywhere, and the 12th and 13th PleaLaunch arguments equal the keccak256 of the Letterbox and Tribunal creation code from a fresh offline build. Runtime sizes match the stated 24,402 / 24,038 / 23,255 / 21,654 / 12,473 bytes.\n\n**What was run**: the offline source build (60 seconds) and the Tribunal, TribunalSeasons, TribunalStanding, Run7ObjectionPoints and AppealRounding suites, 106 tests passed and 0 failed.\n\nItems the audit ledger already accepts (the min-of-panels re-roll, record-time owner exclusion, the gift-buy nudge of holding time, PLEA minting its supply in `deployHook`, and the Cabal transfer rule as the product's design) were not re-reported.","treeHash":null,"usage":{"cachedInputTokens":1295254,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":33959,"runtime":"claude","turns":20,"wallClockMs":782377}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"523b06a3dd921f5d","findings":[{"citation":"resolved","description":"Access x asymmetry seam. Seasons._standing (src/Seasons.sol:237-244) and Letterbox._standing (src/Letterbox.sol:702-713) treat a reverting Tribunal as 'not held, not sustained, no score' (the comment at src/Seasons.sol:234-236 says a reverting Tribunal must never block a record). Tribunal.standing (src/Tribunal.sol:194-205) is a pure view except for one external dependency: with a pending objection in a slot it calls _live -> _stale -> intake.requests(o.intakeId) (src/Tribunal.sol:403-407). The Intake (0xa43e6F75... on Sepolia) is outside this tree; if its requests getter reverts, is paused, or returns a tuple of another shape, standing reverts and Seasons.record / Seasons.closeSeason(_tryRecord) / Letterbox.deliver(_record) record the plea at once with the gate's original score, while an objection is pending and the window is open. Tribunal.object then refuses every new objection with AlreadyRecorded (src/Tribunal.sol:264), and a later Sustained ruling (src/Tribunal.sol:338) changes nothing: the points stay counted and the objector's stake is returned. Permission gap: Seasons.record is permissionless and the record moment is chosen by the caller, while Tribunal.object is the only way to contest the points; the record path's failure mode ('fail open') is weaker than the objection path's ('fail closed'). This is a documented design choice (availability over enforcement) and the trigger is an external-dependency failure, so it is reported as information for the author to confirm, not as a defect that reopens the work. A cheap fail-closed variant would keep the plea held when the call fails only while the window plus PENDING_EXPIRY (40 minutes, inside CLOSE_GRACE) has not passed.","line":242,"path":"src/Seasons.sol","reproduction":"State: trading open, plea #1 by S approved at T with score 30, need 28. At T+1 min objector O calls Tribunal.object(1, text) (0.35 IMD stake, oracle fee minted): cases[1].pending[0] = 1, filedAt = T+1min. At T+2 min the Intake's requests(bytes32) view reverts (vm.mockCallRevert(intake, IIntake.requests.selector, ...) reproduces it). Anyone calls Seasons.record(1). Expected (spec: 'Seasons records a plea only once its window has closed and no objection is pending'): revert Held(1). Actual: Tribunal.standing reverts inside _stale -> intake.requests, Seasons._standing returns (false,false,255), record succeeds, recorded[1] = true, pointsOf[1] = 30. Then Tribunal.object(1, ...) by anyone reverts AlreadyRecorded(1); when the pending objection's panel answers 20 (20+2 < 28, sustained) the Tribunal marks the case sustained but Seasons keeps the 30 points. Same result through Letterbox.deliver(1) at T+1 min for an auto-sell plea (its _record try/catch calls Seasons.record and succeeds).","severity":"info","snippet":"        if (!ok || ret.length != 96) return (false, false, lowest);","title":"Seasons records a plea with its full score, inside the objection window, whenever Tribunal.standing reverts (a pending objection plus a reverting Intake.requests view)"},{"citation":"resolved","description":"Storage-lifecycle asymmetry (written, never read). PleaLaunch.seed (src/PleaLaunch.sol:201-219) sets opened = true but never checks it; a second call passes the hook/Letterbox/Tribunal/START checks and the chain-id-1 checks and is only stopped by PleaHook.seed's AlreadySeeded (src/PleaHook.sol:378). The behaviour is correct today because the hook's guard is sound, but the launcher's own state carries no guarantee and a reader of PleaLaunch alone cannot see why seed is once-only. No funds or permissions are affected; recorded so the author can either read the flag (if (opened) revert) or drop it.","line":215,"path":"src/PleaLaunch.sol","reproduction":"After a successful PleaLaunch.seed() (opened == true), call PleaLaunch.seed() again from the PLEA owner or anyone after START. Expected from the launcher's state: a revert on its own opened flag. Actual: every check in PleaLaunch passes and the call reverts only inside IPleaHook(hook).seed() with PleaHook.AlreadySeeded; PleaLaunch.opened is never read anywhere in src/.","severity":"info","snippet":"        opened = true;","title":"PleaLaunch.opened is written but never read: the once-only guard of seed() lives in the hook and the gate, not in the launcher"}],"hash":"5a9ca037dddd7dee5ff9b682886c8f83b53cf4c5412b7274eb729d7e73026957","nodeId":"e3ad84d3-410e-4659-a206-44e152d065dc","outcome":"completed","summary":"The review is complete and the findings file is written and validated.\n\n**Outcome:** no permission bypass, escalation path, confused-deputy route, or paired-function asymmetry that loses funds or breaks a guarantee was found in the nine contracts. The findings file holds two information-level items and a 59-row coverage record.\n\n**What I checked**\n- Every role and guard: PLEA owner (allowlist, early seed, two-step handover), launcher-only calls, Letterbox-only gate calls, Intake-only callbacks, PoolManager-only callbacks with their expected flags, Tribunal-only `checkpointObjection`.\n- The PLEA transfer rule for every sender class, including the hook's `take` recipients named through hookData and the ERC-6909 claim paths.\n- Paired surfaces: `submitSell` against `submitFor`, `appeal` against `appealFor`, `executeSell` against `executeSellFor`, `record` against `_tryRecord`, `object` against `standing`, the Letterbox's deliver against settle, and the Tribunal's ruling, void and settle paths.\n- The 1/64 gas trick against the fail-open static calls in Seasons: not feasible, since the continuation always costs far more than the callee.\n- launch.json: argument counts, order and cross-contract consistency of the oracle asset, pool IMD, mint flag and code hashes.\n\n**Findings written** (both informational, neither needs a proof test)\n1. `Seasons._standing` and `Letterbox._standing` fail open: with an objection pending, a reverting `Intake.requests` view makes `Tribunal.standing` revert, so anyone can record the plea at full score inside the window and later objections hit `AlreadyRecorded`. This matches the code's documented availability choice and depends on an external dependency failing, so I rated it info.\n2. `PleaLaunch.opened` is written and never read; the once-only guard of `seed` lives in the hook and gate.\n\n**Already covered elsewhere, not re-reported:** the owner-handover record path (R6-P-1, accepted), the owner allowlist as a Cabal exemption (THREAT-MODEL lists it as a power), and the seat multiplier read at record time (spec).\n\n**Not reached in depth:** the Sepolia Intake's `requests` tuple shape and the seat NFT's `balanceOf` cost were not verified against the live chain. No tests were run beyond the source build.","treeHash":null,"usage":{"cachedInputTokens":1281882,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":44845,"runtime":"claude","turns":25,"wallClockMs":671149}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a315ee4cb81c640c","findings":[],"hash":"813fc28e894f35f3db46ca4978e97003c51183727fb5ddd0cddd3a33ed6fd84f","nodeId":"14fed6f7-a050-4b16-b6a2-87beb6211c08","outcome":"failed","summary":"needs input: The check 'build' runs a bare `forge build` of the default profile, and the worker container caps memory at 1,572,864,000 bytes (cgroup memory.max). solc under via_ir is OOM-killed (memory.events oom_kill) on the committed tree with or without this task's test file: 155 files without it and 156 with it both die at the cap; even the default tests A-L alone (129 files) or M-Z alone (139 files) die; `forge build --skip test --skip script` peaks at 956 MB and a clean build with only three default suites (Launch, LaunchManifest, Run8FactTable) at 1,199 MB. The default profile's 33 suites need several times the cap. Fixing this needs either foundry.toml's default skip list (a configuration file this task may not touch) or more memory on the check container; neither is in test/. The task's deliverable, test/Run8FactTable.t.sol (15 tests, 4 fuzz properties, run-8 fact table at every band edge), compiles and passes on its own with the verifier's fuzz seed, as the repository's own build instruct","treeHash":null,"usage":{"cachedInputTokens":1799377,"inputTokens":996,"model":"claude-fable-5-1","outputTokens":44944,"runtime":"claude","turns":33,"wallClockMs":1403550}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fbdcf3c80b280e3b","findings":[],"hash":"8b40715a232c71d25d23cfa64c785bf635b3b781f82c0bc5ca3fe031270c6428","nodeId":"c0f1ddc0-6db8-4999-bf79-f107aec7fcd4","outcome":"completed","summary":"The review is complete and the findings file is written.\n\n**Outcome:** no reproducible defect in the assigned area. The file `.imd-findings.json` holds an empty findings list and 58 coverage rows, one for each of the 56 listed entry points plus two invariants, all marked `holds` with a one-line reason.\n\n**What I covered (Execution Trace, Periphery, First Principles):**\n- Traced every state-changing entry point in PLEA, CabalGate, Letterbox, Seasons, Tribunal, PleaHook, PleaLaunch and PleaDistributor from caller to final state, including the Intake callbacks and the three PoolManager unlock callbacks.\n- Checked the cross-contract timing edges between Tribunal and Seasons. The objection window and the pending expiry use the same comparisons in `object`, `onOracleResult`, `_stale` and `standing`, so a plea cannot be recorded while an objection is still rulable, and a sustain cannot land after a record.\n- Checked the two-objection, distinct-wallet rule across void, re-file and out-of-order rulings. The `lastObjector` plus both pending slots cover every reachable ordering.\n- Checked approval residuals on every forceApprove in the Letterbox, gate and hook. Each is consumed in full in the same call.\n- Checked the PLEA transfer gate against every in-system move: courtTake escrow, the gate's pull, the hook's deliveries, Seasons' bonus and burns, and the distributor's claims.\n- Checked the stake and pot accounting. Tribunal stakes in equal stakes out, and `checkpointObjection` cannot see an unfunded stake because the transfer precedes it and `accountedPot` never exceeds the pot.\n- Read launch.json against the four constructors. Argument counts, order and the Sepolia addresses are consistent with the Letterbox and Tribunal constructor refusals.\n\n**Checks run:** the source tree compiles under via_ir. LaunchManifest, TribunalStanding, Tribunal, TribunalAdversarial and Letterbox suites all pass on this tree.\n\n**Not reached:** the fork, invariant and adversarial suites under the full profile were not run, and I did not probe the live Sepolia Intake, Stacker or seat NFT. The attestation binding relies on the Intake pairing each result with its own request id. That is an existing documented trust assumption, not a new finding.","treeHash":null,"usage":{"cachedInputTokens":1589522,"inputTokens":418,"model":"claude-fable-5-1","outputTokens":36608,"runtime":"claude","turns":22,"wallClockMs":621796}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8e25456c4ae69acf","findings":[],"hash":"b8913b13d9bbf4c48e92b8a8499c593192f4ef780bc8b687346b5f0f518cc178","nodeId":"06bfd796-a70e-4e86-9b5a-6877eece53bf","outcome":"completed","summary":"The review is complete. The findings file is valid JSON, all 56 listed entry points have a coverage row, and the working tree is unchanged apart from the findings file itself.\n\n**Outcome: no reproducible math defect found.** The findings list is empty, which I state plainly rather than padding it.\n\n**What I checked, with the Math Precision, Boundary and Numerical Gap guides:**\n\n- **Hook fee arithmetic.** Exact-input fee `A*r/(BPS+r)` and exact-output fee `A*r/(BPS-r)` both charge the same share of the realised fill. I brute-forced every input from 1 to 200,000 wei at the three launch rates. The settled fee is never below the cashback, owner and prize floors, so the pool share subtraction cannot underflow, and no refund is ever due on a full fill.\n- **Cap decay bookkeeping.** The per-day allowance, the carried remainder and the advance of the decay clock reproduce \"allowance minus used\" exactly, and the clock never passes the block time.\n- **Fact score.** Share, hold, profit and trend bands land in 7 to 45. The PLEA-weighted mean rounds to the nearest point and cannot overflow. A record cannot end with zero IMD spent but PLEA held, so the profit branch is never skipped wrongly. The existing regression suite for this area passes on the tree in both pool orientations.\n- **Letterbox limits.** The 0.70 IMD floor, the 10% fee cap and the 1,000 PLEA minimum match the README. The appeal's floor raise uses rounding-up division, which satisfies the floor check's rounding-down comparison. The delivery floor and the capped auto-sell fee cannot underflow. The uint88 escrow holds the 2.5M cap.\n- **Seasons.** The packed share table decodes to 450 down to 350 and sums to exactly 10,000, so prize payouts never exceed the pot and the rollover cannot underflow. Points fit uint8 and uint16. The accounted pot never exceeds the real pot.\n- **Time boundaries.** Every paired comparison across contracts agrees: pending expiry, the 7-minute window, the objection window, stale objections and the dead-man versus the season index.\n\n**One design interaction I noted but did not report as a defect.** A letter's fee sale, about 48,000 PLEA at the seed price, zeroes a buy record smaller than itself, so an APPEAL is scored with received-PLEA hold and profit points. That shifts the need by one to three points in either direction. The record reduction is documented behaviour of the fee swap, so it sits in the coverage record as a note for the judge.\n\n**Limits of this pass.** I did not run the fork, invariant or adversarial suites. A four-file test compile was killed for memory, so I confirmed only the single most relevant suite. The wall-placement liquidity math was traced by reading, not by a numeric test.","treeHash":null,"usage":{"cachedInputTokens":2019070,"inputTokens":450,"model":"claude-fable-5-1","outputTokens":42049,"runtime":"claude","turns":25,"wallClockMs":744290}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"96ece23c63b791a1","findings":[],"hash":"f7a1f3bbcbc7c45db37a8a7e939453ee0b82a198bb877184265e9bc7a2b6d05e","nodeId":"53860ab5-fe71-4c7f-a155-5da386c415f8","outcome":"completed","summary":"The review is complete. The findings file is written and valid, and no source file was touched.\n\n**Result: no reproducible economic defect found.** `.imd-findings.json` holds an empty findings list and 60 coverage rows: one `holds` row for each of the 56 listed entry points, plus four invariant rows (hook fee split and delta balance, the Letterbox delivery floor, the run-8 fact table, and launch.json against the constructors and committed hashes).\n\n**What I checked, against the Economic Security, Invariant and Flow Gap guides:**\n- Hook value flows: the 2.0% split on every path, the reserved-fee refund ordering, the opening payout exception, ERC-6909 claims for IMD and PLEA the PoolManager cannot pay yet, the cap ratchet and trim, the wall guard, and cashback fallbacks. The hook's deltas balance on exact-in and exact-out, buy and sell.\n- Letterbox conservation: Letterbox PLEA equals open escrows, Letterbox IMD equals open tips plus in-flight sale proceeds. The 95% floor after the hook's fees uses 98% where the real net is 98.005%, so the 5% room is real.\n- Seasons accounting: accountedPot never exceeds pot, so checkpoint and checkpointObjection cannot underflow or revert a Tribunal settle; the 1-hour close grace covers the 40-minute maximum objection hold; rollover and flushToWall leave nothing stranded.\n- Tribunal: stake conservation, slot logic for two pending objections, stale handling consistent between object, standing and the Intake callback, season booking of overruled stakes.\n- Fact score: every run-8 band and edge, the nearest-point weighted mean for pleas larger than the buy record, and the no-record case.\n- launch.json: argument count and order match all five constructors; the manifest suite passes on this tree.\n\n**Lead I did not promote.** If the live Stacker's `credit` ever pulled less IMD than approved, the remainder would sit in the hook untracked by `retainedImd`. The interface and threat model specify it pulls exactly the amount, and I could not read the Sepolia contract, so this stays a note rather than a finding.\n\n**Test runs on this machine.** LaunchManifest, Tribunal, Letterbox and SeasonFunds suites pass (115 tests). Hook test files could not be compiled here even one at a time: solc was killed for memory, so the hook paths are verified by reading only.","treeHash":null,"usage":{"cachedInputTokens":2489351,"inputTokens":546,"model":"claude-fable-5-1","outputTokens":44134,"runtime":"claude","turns":30,"wallClockMs":921188}}],"verification":[{"checks":[{"durationMs":249713,"exitCode":0,"name":"build","output":"Compiling 155 files with Solc 0.8.26\nSolc 0.8.26 finished in 249.56s\nCompiler run successful with warnings:\nWarning (8760): This declaration has the same name as another declaration.\n   --> src/Tribunal.sol:345:9:\n    |\n345 |         uint8 status,\n    |         ^^^^^^^^^^^^\nNote: The other declaration is here:\n   --> src/Tribunal.sol:208:5:\n    |\n208 |     function status(uint256 pleaId) external view returns (string memory) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (8760): This declaration has the same name as another declaration.\n   --> src/Tribunal.sol:383:53:\n    |\n383 |     function _void(uint256 id, Objection storage o, uint8 status, bytes32 reason) internal {\n    |                                                     ^^^^^^^^^^^^\nNote: The other declaration is here:\n   --> src/Tribunal.sol:208:5:\n    |\n208 |     function status(uint256 pleaId) external view returns (string memory) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> src/Seasons.sol:422:58:\n    |\n422 |     function _owners() internal view returns (address a, address b, address c) {\n    |                                                          ^^^^^^^^^\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> src/CabalGate.sol:749:5:\n    |\n749 |     function _text(string storage t, bool json) internal view returns (string memory) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","passed":true},{"durationMs":4839,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/ArtifactDeployment.t.sol:ArtifactDeploymentTest\n[PASS] test_artifactCreationBubblesFullConstructorRevertData() (gas: 101386)\n[PASS] test_artifactCreationPreservesConstructorCallerArgumentsAndRuntime() (gas: 354315)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 782.12µs (614.51µs CPU time)\n\nRan 4 tests for test/OracleConformance.t.sol:OracleConformanceTest\n[PASS] test_callbackSelectorHasTheProtocolStruct() (gas: 748)\n[PASS] test_digestMatchesTheProtocol() (gas: 10527)\n[PASS] test_liveAttestationRecoversToOracleSigner() (gas: 1390233)\n[PASS] test_protocolSignatureRecoversToVectorSigner() (gas: 13943)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.12ms (1.19ms CPU time)\n\nRan 1 test for test/MainnetGuard.t.sol:MainnetMarketCapGuardTest\n[PASS] test_chainOneSeedNeedsTheAgreedMarketCap() (gas: 65380)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 11.02ms (124.34µs CPU time)\n\nRan 3 tests for test/LaunchManifest.t.sol:RehearsalManifestTest\n[PASS] test_laterBlockCannotRegisterLauncher() (gas: 14065763)\n[PASS] test_separateConstructorCallsInDeploymentBlockStillWork() (gas: 15289919)\n[PASS] test_separateTransactionsLeaveTheAcceptedDeploymentBlockWindow() (gas: 14200150)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 11.05ms (6.55ms CPU time)\n\nRan 2 tests for test/AuditRound1.t.sol:AuditRound1SeedOwnerTest\n[PASS] test_theFormerOwnerMayNotSeedEarly() (gas: 48569)\n[PASS] test_theNewPleaOwnerMaySeedEarly() (gas: 626244)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 13.31ms (519.78µs CPU time)\n\nRan 2 tests for test/ManifestInput.t.sol:ManifestInputTest\n[PASS] test_everyManifestWordDeploysAtomicallyAndCommitsTheTribunal() (gas: 22559123)\n[PASS] test_failedLastConstructorRollsBackAllEarlierDeploymentsAndCanRetry() (gas: 27169010)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 14.48ms (8.24ms CPU time)\n\nRan 3 tests for test/Letterbox.t.sol:LetterboxMainnetPathTest\n[PASS] test_aMismatchedOracleAssetOrMintingThePoolImdIsRefused() (gas: 971058)\n[PASS] test_letterBuysTheOracleFeeAndTheTipWithPlea() (gas: 9367412)\n[PASS] test_mintingTheFeeIsRefusedOnMainnet() (gas: 962452)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 15.90ms (3.32ms CPU time)\n\nRan 1 test for test/TribunalSeasons.t.sol:TribunalLateDeployTest\n[PASS] test_tradingWaitsForTheCommittedTribunal() (gas: 9728268)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 7.13ms (1.32ms CPU time)\n\nRan 16 tests for test/SeasonFunds.t.sol:SeasonFundsTest\n[PASS] testFuzz_lateCloseConservesAssets(uint96,uint96,bool) (runs: 32, μ: 1226768, ~: 1178692)\n[PASS] test_bonusIsMintedToSeasonsAndCannotBeWithdrawn() (gas: 24099)\n[PASS] test_bonusPaysTheTopTenAndBurnsTheUnpaidShares() (gas: 1716921)\n[PASS] test_claimRedemptionCallbackCannotBeInvokedOutsideUnlock() (gas: 75568)\n[PASS] test_deathAtBoundaryFlushesClaimsAndLateDonationsOnce() (gas: 1688440)\n[PASS] test_deathBeforeTheSixthSeasonBurnsTheRest() (gas: 1171125)\n[PASS] test_deathMidSeasonPreservesEarlierSeasonFees() (gas: 1626617)\n[PASS] test_emptySeasonBurnsItsWholeBonus() (gas: 260521)\n[PASS] test_failedBonusTransferIsBurnedNotStuck() (gas: 791878)\n[PASS] test_failedPayoutRollsForwardWithoutBlockingOtherWinners() (gas: 1666965)\n[PASS] test_feeAtBoundaryBelongsToNextSeason() (gas: 1193158)\n[PASS] test_flushBeforeTheEndCannotTouchTheBonus() (gas: 43448)\n[PASS] test_lateClosesOnlyRollUnpaidSharesForward() (gas: 2523910)\n[PASS] test_onlyTheFirstSixSeasonsPayABonus() (gas: 5175208)\n[PASS] test_prizePleaStaysGatedWhileTheCabalWatches() (gas: 857612)\n[PASS] test_unobservedDonationCannotFlowBackwards() (gas: 1103046)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 25.85ms (24.45ms CPU time)\n\nRan 7 tests for test/AuditImported.t.sol:AuditImportedTest\n[PASS] test_appealLetterRetriesCompletedRequestWithFailedCallback() (gas: 13017787)\n[PASS] test_appealLetterRetriesLazyTimeoutWithoutSeparateSettlement() (gas: 12951085)\n[PASS] test_autoAppealSurvivesBalanceGrowth() (gas: 9512050)\n[PASS] test_growingBalanceDoesNotEnableDustOrLargerAppeals() (gas: 8680699)\n[PASS] test_rawAppealLetterSurvivesBalanceGrowth() (gas: 9534629)\n[PASS] test_shrinkingBalanceStillUsesCurrentMinimumAndMaximum() (gas: 8279644)\n[PASS] test_siteAppealSurvivesBalanceGrowthAtOriginalMinimum() (gas: 8583971)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 35.65ms (18.70ms CPU time)\n\nRan 31 tests for test/Gate.t.sol:GateTest\n[PASS] test_appealClosesAfterFourHoursAndOnlyOnce() (gas: 11763729)\n[PASS] test_appealWithinFourHoursForNoMore() (gas: 9198337)\n[PASS] test_approvedScoreOpensTheSellWindow() (gas: 5754794)\n[PASS] test_badAttestationsAreNotDelivered() (gas: 4942664)\n[PASS] test_bodyIsTheNumericPanelQuestion() (gas: 4994571)\n[PASS] test_callbackFitsTheStipend() (gas: 8080581)\nLogs:\n  approve callback gas: 58981\n  deny callback gas: 83580\n\n[PASS] test_callbackOnlyFromIntakeAndOnlyForAPendingPlea() (gas: 5481562)\n[PASS] test_cannotPassIsRefusedBeforePaying() (gas: 1396667)\n[PASS] test_cooldownAfterExecutedSell() (gas: 8368520)\n[PASS] test_everyDefaultIgnorableCharacterIsRefused() (gas: 5493401)\n[PASS] test_everyFormatCharacterIsRefused() (gas: 5741685)\n[PASS] test_failedAppealCanBeRetried() (gas: 11728031)\n[PASS] test_failureAfterExpireIsRefused() (gas: 4930227)\n[PASS] test_failureClearsThePendingPleaWithoutCooldownOrClock() (gas: 7925990)\n[PASS] test_failureFitsTheMainnetGas() (gas: 4901165)\n[PASS] test_failureForAnUnknownOrSettledRequestDoesNothing() (gas: 5073767)\n[PASS] test_failureOnlyFromTheIntake() (gas: 4869687)\n[PASS] test_noPleasWhileTheCabalSleeps() (gas: 61866)\n[PASS] test_noVerdictIsClearedAtOnceWhenTheIntakeCompletes() (gas: 7909138)\n[PASS] test_onePendingPleaPerWallet() (gas: 4859063)\n[PASS] test_pendingExpiresAfterTwentyMinutesAndLateCallbacksFail() (gas: 7872643)\n[PASS] test_pleaAsksWithTheFailureFunction() (gas: 4823490)\n[PASS] test_pleaPaysTheIntakeAndNamesTheCallback() (gas: 4869526)\n[PASS] test_prizePleaOnTopOfAWeekOldBuy() (gas: 1798903)\n[PASS] test_refusalClearsThePleaToo() (gas: 4923065)\n[PASS] test_scoreAboveRangeOrWrongTypeIsRefused() (gas: 8011941)\n[PASS] test_scoreBelowNeedDenies() (gas: 5122004)\n[PASS] test_sellWindowLapses() (gas: 7942106)\n[PASS] test_signerWithDelegationCodeStillVerifies() (gas: 4955990)\n[PASS] test_textFilter() (gas: 5312609)\n[PASS] test_wrongSignerIsRefused() (gas: 4920189)\nSuite result: ok. 31 passed; 0 failed; 0 skipped; finished in 39.17ms (27.50ms CPU time)\n\nRan 7 tests for test/AuditImported.t.sol:AuditImportedPaidFeeTest\n[PASS] test_appealLetterRetriesCompletedRequestWithFailedCallback() (gas: 12961794)\n[PASS] test_appealLetterRetriesLazyTimeoutWithoutSeparateSettlement() (gas: 12895092)\n[PASS] test_autoAppealSurvivesBalanceGrowth() (gas: 9475398)\n[PASS] test_growingBalanceDoesNotEnableDustOrLargerAppeals() (gas: 8669399)\n[PASS] test_rawAppealLetterSurvivesBalanceGrowth() (gas: 9497977)\n[PASS] test_shrinkingBalanceStillUsesCurrentMinimumAndMaximum() (gas: 8268344)\n[PASS] test_siteAppealSurvivesBalanceGrowthAtOriginalMinimum() (gas: 8572671)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 39.80ms (18.15ms CPU time)\n\nRan 3 tests for test/LaunchManifest.t.sol:PostLaunchTest\n[PASS] test_committedHookDeploysLaterAndMintsOnlyTheFixedSplit() (gas: 7988962)\n[PASS] test_committedLetterboxDeploysLater() (gas: 10792141)\nLogs:\n  deployLetterbox transaction gas: 5580999\n\n[PASS] test_committedTribunalDeploysLater() (gas: 10383958)\nLogs:\n  deployTribunal transaction gas: 5271240\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 43.04ms (33.49ms CPU time)\n\nRan 3 tests for test/AuditRound1.t.sol:AuditRound1MainnetAppealTest\n[PASS] test_aSmallWriterCanAppealByLetterAfterThePriceFell() (gas: 31038596)\n[PASS] test_aSmallWriterCanAppealByLetterOnMainnet() (gas: 10859719)\n[PASS] test_anAppealWhoseFeesDoNotFitTheBalanceIsRefusedAsFeeTooHigh() (gas: 29297202)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 33.44ms (24.92ms CPU time)\n\nRan 12 tests for test/TribunalSeasons.t.sol:TribunalSeasonsTest\n[PASS] test_aLetterSellsDuringTheHoldAndItsPointsAreRecordedLater() (gas: 10692057)\n[PASS] test_aSustainedPleaIsNeverRecordedEvenByAClose() (gas: 9588889)\n[PASS] test_aVoidAtTheLastSecondLeavesNoRoomForASecondObjection() (gas: 13255391)\n[PASS] test_approvalInTheLastSecondIsRuledAndRecordedInsideTheGrace() (gas: 12888144)\n[PASS] test_closeListsAHeldPleaOfTheRunningSeasonWithoutReverting() (gas: 8465853)\n[PASS] test_closeSeasonSkipsHeldPleasAndRecordsThemLater() (gas: 12768657)\n[PASS] test_recordIsFreeOnceTheWindowClosesWithNoObjection() (gas: 5271027)\n[PASS] test_recordWaitsForTheWindowThenForAPendingObjection() (gas: 9752662)\n[PASS] test_seasonsFindsTheTribunalThroughTheLauncher() (gas: 51389)\n[PASS] test_theLetterboxStatusShowsHeldPendingAndSustainedPoints() (gas: 20826629)\n[PASS] test_theTimingBoundHoldsInsideTheCloseGrace() (gas: 15530)\n[PASS] test_twoRulingsAtTheEdgeStayInsideTheGrace() (gas: 16722519)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 27.68ms (21.11ms CPU time)\n\nRan 32 tests for test/Orientation.t.sol:GatePleaIsZeroTest\n[PASS] test_appealClosesAfterFourHoursAndOnlyOnce() (gas: 11763751)\n[PASS] test_appealWithinFourHoursForNoMore() (gas: 9198383)\n[PASS] test_approvedScoreOpensTheSellWindow() (gas: 5754794)\n[PASS] test_badAttestationsAreNotDelivered() (gas: 4942686)\n[PASS] test_bodyIsTheNumericPanelQuestion() (gas: 4994593)\n[PASS] test_callbackFitsTheStipend() (gas: 8080603)\nLogs:\n  approve callback gas: 58981\n  deny callback gas: 83580\n\n[PASS] test_callbackOnlyFromIntakeAndOnlyForAPendingPlea() (gas: 5481562)\n[PASS] test_cannotPassIsRefusedBeforePaying() (gas: 1396667)\n[PASS] test_cooldownAfterExecutedSell() (gas: 8368542)\n[PASS] test_everyDefaultIgnorableCharacterIsRefused() (gas: 5493401)\n[PASS] test_everyFormatCharacterIsRefused() (gas: 5741707)\n[PASS] test_failedAppealCanBeRetried() (gas: 11728053)\n[PASS] test_failureAfterExpireIsRefused() (gas: 4930249)\n[PASS] test_failureClearsThePendingPleaWithoutCooldownOrClock() (gas: 7925990)\n[PASS] test_failureFitsTheMainnetGas() (gas: 4901187)\n[PASS] test_failureForAnUnknownOrSettledRequestDoesNothing() (gas: 5073767)\n[PASS] test_failureOnlyFromTheIntake() (gas: 4869687)\n[PASS] test_noPleasWhileTheCabalSleeps() (gas: 61866)\n[PASS] test_noVerdictIsClearedAtOnceWhenTheIntakeCompletes() (gas: 7909138)\n[PASS] test_onePendingPleaPerWallet() (gas: 4859063)\n[PASS] test_orientationIsPleaZero() (gas: 16067)\n[PASS] test_pendingExpiresAfterTwentyMinutesAndLateCallbacksFail() (gas: 7872665)\n[PASS] test_pleaAsksWithTheFailureFunction() (gas: 4823512)\n[PASS] test_pleaPaysTheIntakeAndNamesTheCallback() (gas: 4869548)\n[PASS] test_prizePleaOnTopOfAWeekOldBuy() (gas: 1798925)\n[PASS] test_refusalClearsThePleaToo() (gas: 4923065)\n[PASS] test_scoreAboveRangeOrWrongTypeIsRefused() (gas: 8011963)\n[PASS] test_scoreBelowNeedDenies() (gas: 5122004)\n[PASS] test_sellWindowLapses() (gas: 7942106)\n[PASS] test_signerWithDelegationCodeStillVerifies() (gas: 4956012)\n[PASS] test_textFilter() (gas: 5312609)\n[PASS] test_wrongSignerIsRefused() (gas: 4920189)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 32.75ms (20.54ms CPU time)\n\nRan 3 tests for test/OracleReplay.t.sol:OracleReplayTest\n[PASS] testFuzz_oneSignedRequestCannotSettleTwoPleas(bool,bool) (runs: 32, μ: 8193072, ~: 8201521)\n[PASS] test_deniedRequestCannotBeResignedToApproveItsAppeal() (gas: 8591023)\n[PASS] test_invalidCallbackDoesNotConsumeTheRequest() (gas: 8038185)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 47.84ms (37.03ms CPU time)\n\nRan 12 tests for test/TribunalStanding.t.sol:TribunalStandingTest\n[PASS] test_aHeldPleaIsRefusedAndSkippedByAClose() (gas: 620888)\n[PASS] test_aHigherPanelScoreKeepsTheOriginal() (gas: 610846)\n[PASS] test_aLauncherAnsweringTheWrongSizeRecordsAsBefore() (gas: 406571)\n[PASS] test_aLauncherWithoutTribunalRecordsAsBefore() (gas: 417136)\n[PASS] test_aLowerPanelScoreIsRecorded() (gas: 610787)\n[PASS] test_aRevertingTribunalCannotBlockARecord() (gas: 546526)\n[PASS] test_aSustainedPleaIsRefused() (gas: 397224)\n[PASS] test_aTribunalAnsweringTheWrongSizeRecordsAsBefore() (gas: 537704)\n[PASS] test_aZeroTribunalRecordsAsBefore() (gas: 425901)\n[PASS] test_noLauncherRecordsAsBefore() (gas: 266051)\n[PASS] test_noShareBeyondTheTable() (gas: 9584)\n[PASS] test_sharesFallInAStraightLineAndSumToTenThousand() (gas: 238288)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 1.88ms (1.52ms CPU time)\n\nRan 20 tests for test/AuditRound1.t.sol:AuditRound1Test\n[PASS] test_aCheckpointOlderThanTwoDaysIsNoDayOldReference() (gas: 1818572)\n[PASS] test_aCreditThatPullsNothingLeavesNoAllowance() (gas: 1105629)\n[PASS] test_aDustFirstBuyDoesNotConsumeTheFirstBuyException() (gas: 1850632)\n[PASS] test_aDustTradeInTheCurrentHourDoesNotEvictTheDayOldReference() (gas: 12218375)\n[PASS] test_aFlashTakenPoolManagerCannotStripThePayouts() (gas: 2853825)\n[PASS] test_aLetterStillSellsAfterAFourPercentDip() (gas: 7485743)\n[PASS] test_aPleaOfTheWholeBalanceIsRefusedAsFeeTooHigh() (gas: 799734)\n[PASS] test_aPriceLimitedExactOutputTradeRevertsInsteadOfAShortDelta() (gas: 1510550)\n[PASS] test_aSellerExcludedWhileAnObjectionIsPendingIsNeverHeld() (gas: 10142342)\n[PASS] test_aStalePendingLetterSaysToSettle() (gas: 6630779)\n[PASS] test_appealAutoOfASubFloorGatePleaIsRefused() (gas: 9922992)\n[PASS] test_exactOutputFeeSaleSplitsTheFeeOnTheFill() (gas: 6395804)\n[PASS] test_lapsedStatusCarriesTheEscrowNote() (gas: 6696484)\n[PASS] test_partialFillWithoutATraderRefundsTheRouter() (gas: 1009997)\n[PASS] test_profitBandEdgesAreExact() (gas: 432930)\n[PASS] test_rebalancePlacesNoWallAtASellerChosenDrainedTick() (gas: 2245254)\n[PASS] test_recordedPointsAreShownAsCounted() (gas: 7762097)\n[PASS] test_theOwnersTwoImdOpeningBuyClosesTheOpeningException() (gas: 1567579)\n[PASS] test_zeroFillSwapsInTheEmptyRegionDoNotDragTheReferenceTick() (gas: 5816380)\n[PASS] test_zeroRootIsRefused() (gas: 34916)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 51.43ms (39.35ms CPU time)\n\nRan 21 tests for test/Orientation.t.sol:AuditRound1ImdIsZeroTest\n[PASS] test_aCheckpointOlderThanTwoDaysIsNoDayOldReference() (gas: 1820884)\n[PASS] test_aCreditThatPullsNothingLeavesNoAllowance() (gas: 1106569)\n[PASS] test_aDustFirstBuyDoesNotConsumeTheFirstBuyException() (gas: 1852613)\n[PASS] test_aDustTradeInTheCurrentHourDoesNotEvictTheDayOldReference() (gas: 12240843)\n[PASS] test_aFlashTakenPoolManagerCannotStripThePayouts() (gas: 2856168)\n[PASS] test_aLetterStillSellsAfterAFourPercentDip() (gas: 7486888)\n[PASS] test_aPleaOfTheWholeBalanceIsRefusedAsFeeTooHigh() (gas: 800198)\n[PASS] test_aPriceLimitedExactOutputTradeRevertsInsteadOfAShortDelta() (gas: 1512200)\n[PASS] test_aSellerExcludedWhileAnObjectionIsPendingIsNeverHeld() (gas: 10142792)\n[PASS] test_aStalePendingLetterSaysToSettle() (gas: 6633165)\n[PASS] test_appealAutoOfASubFloorGatePleaIsRefused() (gas: 9925352)\n[PASS] test_exactOutputFeeSaleSplitsTheFeeOnTheFill() (gas: 6398180)\n[PASS] test_lapsedStatusCarriesTheEscrowNote() (gas: 6698870)\n[PASS] test_orientationIsImdZero() (gas: 14005)\n[PASS] test_partialFillWithoutATraderRefundsTheRouter() (gas: 1010977)\n[PASS] test_profitBandEdgesAreExact() (gas: 432952)\n[PASS] test_rebalancePlacesNoWallAtASellerChosenDrainedTick() (gas: 2242276)\n[PASS] test_recordedPointsAreShownAsCounted() (gas: 7764288)\n[PASS] test_theOwnersTwoImdOpeningBuyClosesTheOpeningException() (gas: 1569144)\n[PASS] test_zeroFillSwapsInTheEmptyRegionDoNotDragTheReferenceTick() (gas: 5809681)\n[PASS] test_zeroRootIsRefused() (gas: 34916)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 73.65ms (43.67ms CPU time)\n\nRan 5 tests for test/LaunchManifest.t.sol:AtomicManifestTest\n[PASS] test_factoryDeploysExactManifestOnAnEmptySepoliaChain() (gas: 54251908)\nLogs:\n  five-contract launch transaction gas through IMD's factory: 13494931\n  gas limit with IMD's headroom: 16463815\n  margin to the 16,777,216 cap: 313401\n\n[PASS] test_launchJsonCommitsToThisLetterbox() (gas: 34504)\n[PASS] test_launchJsonCommitsToThisTribunal() (gas: 31214)\n[PASS] test_launchJsonEncodesOracleMintFlagAsStaticWord() (gas: 11318)\n[PASS] test_launchJsonNotesFitTheManifestCap() (gas: 9497)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 98.56ms (91.05ms CPU time)\n\nRan 30 tests for test/Orientation.t.sol:LetterboxImdIsZeroTest\n[PASS] testFuzz_namesAreUniqueIdempotentAndReleasedOnClear(uint256,uint8) (runs: 32, μ: 324409, ~: 319854)\n[PASS] test_aBareCommandWordIsNotAPlea() (gas: 6092175)\n[PASS] test_aLapsedApprovalSettlesAndStillCounts() (gas: 5680965)\n[PASS] test_anAppealOfAFloorSizedLetterIsNotRefused() (gas: 10774511)\n[PASS] test_anOverLongLetterIsRefusedByName() (gas: 5948148)\n[PASS] test_anyoneDeliversAnApprovalForTheTip() (gas: 6376534)\n[PASS] test_appealByLetterKeepsTheOriginalShareAndPaysTheWall() (gas: 10477545)\n[PASS] test_appealLetterRetriesAnAppealTheOracleNeverAnswered() (gas: 22118203)\n[PASS] test_autoSellFeeOnlyOnASaleAndNeverMoreThanHalfOfIt() (gas: 9980349)\n[PASS] test_deadCabalRefusesLettersButSettles() (gas: 5419547)\n[PASS] test_deliverNeedsAnApprovalInsideTheWindowAndTheMinimum() (gas: 6187776)\n[PASS] test_deployLetterboxRefusesOtherCode() (gas: 17394745)\n[PASS] test_expiredPendingPleaSettlesAfterTwentyMinutes() (gas: 5287387)\n[PASS] test_explorerLetterIsTheSameAsARawLetter() (gas: 13843040)\n[PASS] test_invalidNamesAndFailedRenamesPreserveTheOldReservation() (gas: 1339373)\n[PASS] test_leaderboardListsTheSeason() (gas: 6579670)\n[PASS] test_letterCommandsParse() (gas: 9030196)\n[PASS] test_letterPleadsTwentyPercentPaysFeesInPleaAndEscrows() (gas: 5371405)\n[PASS] test_letterRefusesEthTinyBalancesAndBadText() (gas: 1432676)\n[PASS] test_letterboxIsDeployedOnceFromTheCommittedCode() (gas: 522265)\n[PASS] test_noFunctionIdCanStartALetter() (gas: 955571)\n[PASS] test_noVerdictSettlesAtOnceAndTheNextLetterSettlesTheOldOne() (gas: 8754066)\n[PASS] test_orientationIsImdZero() (gas: 14073)\n[PASS] test_settleReturnsEscrowAndTipAfterADenial() (gas: 5642319)\n[PASS] test_siteAutoSellPleadsAnyValidAmount() (gas: 10289538)\n[PASS] test_statusTellsEachState() (gas: 10566761)\n[PASS] test_strangersCannotUseTheCourtEntryPoints() (gas: 211079)\n[PASS] test_theGateRefusesAManualSaleOfAnEscrowedPlea() (gas: 5376935)\n[PASS] test_theSellLetterIsTheWritersOwnSale() (gas: 6209053)\n[PASS] test_theSitesAutoSellBoxPaysTheFeeAndALetterDoesNot() (gas: 10922309)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 99.31ms (80.47ms CPU time)\n\nRan 11 tests for test/Orientation.t.sol:SeasonsPleaIsZeroTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4932225)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236802)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 24903383)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 58973217)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5985544)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 12334132)\n[PASS] test_onlyApprovedPleasScore() (gas: 5043821)\n[PASS] test_orientationIsPleaZero() (gas: 15784)\n[PASS] test_secondSeasonScoresSeparately() (gas: 46101308)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 61137267)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 116228150)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 99.40ms (64.79ms CPU time)\n\nRan 27 tests for test/Tribunal.t.sol:TribunalMainnetFeeTest\n[PASS] test_aLastSecondShamLeavesTheRivalItsSlot() (gas: 13288700)\n[PASS] test_aStalePendingObjectionIsVoidedByTheNextObjector() (gas: 24124789)\n[PASS] test_aStalePendingObjectionNeverHoldsPastTheWindow() (gas: 17761634)\n[PASS] test_aSustainClosesTheCase() (gas: 9435031)\n[PASS] test_aSustainLeavesTheOtherPendingObjectionToItsOwnRuling() (gas: 13417809)\n[PASS] test_anExcludedSellersPleaCannotBeObjectedTo() (gas: 5996255)\n[PASS] test_anExcludedSellersPleaIsNeverHeld() (gas: 5698610)\n[PASS] test_atMostTwoRulingsFromDifferentWallets() (gas: 13883536)\n[PASS] test_callbackFitsTheIntakesGasBudget() (gas: 9285494)\nLogs:\n  gate verdict callback gas: 58981\n  tribunal ruling callback gas: 106068\n\n[PASS] test_executedAndLapsedApprovalsCanBeObjectedTo() (gas: 17362260)\n[PASS] test_expireByTimeAndByACompletedRequest() (gas: 16843821)\n[PASS] test_marginEdge() (gas: 16924798)\n[PASS] test_onlyApprovedPleasCanBeObjectedTo() (gas: 7889361)\n[PASS] test_overruledAboveTheOriginalKeepsTheOriginalScore() (gas: 9571145)\n[PASS] test_overruledObjectionLowersTheScoreToTheLowestPanelAndFeedsThePot() (gas: 9829381)\n[PASS] test_questionAndBody() (gas: 14755551)\n[PASS] test_rulingsNeverResetTheDeadMan() (gas: 9287264)\n[PASS] test_settleNeedsARuling() (gas: 9141491)\n[PASS] test_statusCountsTheSeatMultiplier() (gas: 10022105)\n[PASS] test_statusText() (gas: 17488406)\n[PASS] test_sustainedObjectionLeavesNoPointsAndReturnsTheStake() (gas: 9682847)\n[PASS] test_textRules() (gas: 9241893)\n[PASS] test_theObjectorPaysFeeAndStakeInImd() (gas: 9130234)\n[PASS] test_theSellerAndTheOwnersCannotObject() (gas: 5408932)\n[PASS] test_twoObjectionsMayBePendingAtOnce() (gas: 17290764)\n[PASS] test_voidObjectionReturnsTheStakeAndFreesTheSlot() (gas: 13012923)\n[PASS] test_windowEdges() (gas: 12590511)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 100.80ms (86.37ms CPU time)\n\nRan 3 tests for test/Letterbox.t.sol:OwnerExclusionTest\n[PASS] test_nobodyGetsAKeeperTip() (gas: 490938)\n[PASS] test_ownerPleasEarnNoPoints() (gas: 5072024)\n[PASS] test_theLaunchOwnerStaysExcludedAfterAHandover() (gas: 5200472)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 8.33ms (2.10ms CPU time)\n\nRan 29 tests for test/Letterbox.t.sol:LetterboxTest\n[PASS] testFuzz_namesAreUniqueIdempotentAndReleasedOnClear(uint256,uint8) (runs: 32, μ: 325430, ~: 319750)\n[PASS] test_aBareCommandWordIsNotAPlea() (gas: 6091008)\n[PASS] test_aLapsedApprovalSettlesAndStillCounts() (gas: 5679798)\n[PASS] test_anAppealOfAFloorSizedLetterIsNotRefused() (gas: 10770798)\n[PASS] test_anOverLongLetterIsRefusedByName() (gas: 5946959)\n[PASS] test_anyoneDeliversAnApprovalForTheTip() (gas: 6375642)\n[PASS] test_appealByLetterKeepsTheOriginalShareAndPaysTheWall() (gas: 10475599)\n[PASS] test_appealLetterRetriesAnAppealTheOracleNeverAnswered() (gas: 22113014)\n[PASS] test_autoSellFeeOnlyOnASaleAndNeverMoreThanHalfOfIt() (gas: 9978459)\n[PASS] test_deadCabalRefusesLettersButSettles() (gas: 5418358)\n[PASS] test_deliverNeedsAnApprovalInsideTheWindowAndTheMinimum() (gas: 6186906)\n[PASS] test_deployLetterboxRefusesOtherCode() (gas: 17395429)\n[PASS] test_expiredPendingPleaSettlesAfterTwentyMinutes() (gas: 5286198)\n[PASS] test_explorerLetterIsTheSameAsARawLetter() (gas: 13840074)\n[PASS] test_invalidNamesAndFailedRenamesPreserveTheOldReservation() (gas: 1339351)\n[PASS] test_leaderboardListsTheSeason() (gas: 6578800)\n[PASS] test_letterCommandsParse() (gas: 9027812)\n[PASS] test_letterPleadsTwentyPercentPaysFeesInPleaAndEscrows() (gas: 5370216)\n[PASS] test_letterRefusesEthTinyBalancesAndBadText() (gas: 1431760)\n[PASS] test_letterboxIsDeployedOnceFromTheCommittedCode() (gas: 522265)\n[PASS] test_noFunctionIdCanStartALetter() (gas: 955549)\n[PASS] test_noVerdictSettlesAtOnceAndTheNextLetterSettlesTheOldOne() (gas: 8751879)\n[PASS] test_settleReturnsEscrowAndTipAfterADenial() (gas: 5641130)\n[PASS] test_siteAutoSellPleadsAnyValidAmount() (gas: 10286823)\n[PASS] test_statusTellsEachState() (gas: 10564696)\n[PASS] test_strangersCannotUseTheCourtEntryPoints() (gas: 211057)\n[PASS] test_theGateRefusesAManualSaleOfAnEscrowedPlea() (gas: 5375768)\n[PASS] test_theSellLetterIsTheWritersOwnSale() (gas: 6208161)\n[PASS] test_theSitesAutoSellBoxPaysTheFeeAndALetterDoesNot() (gas: 10920511)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 94.74ms (83.42ms CPU time)\n\nRan 3 tests for test/MainnetGuard.t.sol:MainnetGuardTest\n[PASS] test_manifestDeploysOnChainOneWithTheFastClock() (gas: 12661)\n[PASS] test_seedOpensOnAnyOtherChain() (gas: 624837)\n[PASS] test_seedRefusesTheFastClockOnChainOne() (gas: 52427)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 5.75ms (347.11µs CPU time)\n\nRan 12 tests for test/AuditRun3.t.sol:AuditRun3Test\n[PASS] test_F1_appealLetterCannotRetryAnAppealTheOracleNeverAnswered() (gas: 16714867)\n[PASS] test_F2_aCapSizedAutoSellPleaCannotBeAppealedThroughTheLetterbox() (gas: 34700043)\n[PASS] test_F3_aBareCommandWordBecomesAPaidPlea() (gas: 112577)\n[PASS] test_aLetterboxDeployedByAnyoneElseHasNoPowers() (gas: 10601941)\n[PASS] test_autoSellCannotAcceptASpotPriceUnderTheSnapshotFloor() (gas: 6941769)\n[PASS] test_escrowsAfterTheCabalDies() (gas: 13020517)\n[PASS] test_feeSaleIsBoundedAndTheTipReturns() (gas: 5304097)\n[PASS] test_letterParsingEdgeCases() (gas: 21186021)\n[PASS] test_markerRuleUnchanged() (gas: 6417507)\n[PASS] test_oneCapSizedSaleMovesSpotUnderOnePercent() (gas: 27902240)\nLogs:\n  price impact of a 2.5M PLEA sale, bps: 87\n\n[PASS] test_oracleBodyIsValidJsonForHostileTexts() (gas: 26391670)\n[PASS] test_priceViewsEqualAFullRingScan() (gas: 65288064)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 119.23ms (153.67ms CPU time)\n\nRan 8 tests for test/TribunalOracleBoundary.t.sol:TribunalOracleBoundaryTest\n[PASS] test_failedReplacementDoesNotVoidTheOldCaseOrTakeAnotherStake() (gas: 910414)\n[PASS] test_invalidAttestationsAreAtomicAndDoNotConsumeTheRequest() (gas: 6550998)\n[PASS] test_issuedAtToleratesExactlyFiveMinutesOfSignerClockDrift() (gas: 172484)\n[PASS] test_revertingCheckpointRollsBackBothTheTransferAndTheSettledFlag() (gas: 652077)\n[PASS] test_revertingRefundIsRetryableAndDoesNotBlockAnUnrelatedStake() (gas: 8267274)\n[PASS] test_signedValidityAndPendingDeadlineAreInclusiveAtTheirExactBoundaries() (gas: 244460)\n[PASS] test_unknownPaidFailureCannotVoidOurStake() (gas: 953873)\n[PASS] test_validTribunalSignatureOnSomebodyElsesPaidRequestCannotRuleOurCase() (gas: 3762584)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 81.19ms (9.45ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingPaidFeePleaZeroTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7896185, ~: 7901465)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 8042935)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7888255)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23505422)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 134.74ms (90.40ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7932070, ~: 7937294)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 8078595)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7924083)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23612906)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 97.98ms (87.69ms CPU time)\n\nRan 9 tests for test/AuditRun5.t.sol:AuditRun5Test\n[PASS] testFuzz_markerPrefixesAreRefusedInAnyCase(uint16,bool,uint8) (runs: 32, μ: 67324, ~: 66163)\n[PASS] testFuzz_settlementAcrossTheBoundaryKeepsThePleasSeason(uint16) (runs: 32, μ: 9759334, ~: 9759334)\n[PASS] test_allNewPleaRoutesRefuseSellerWrittenObjectionMarkers() (gas: 783752)\n[PASS] test_appealRoutesAlsoRefuseForgedObjectionMarkers() (gas: 5661023)\n[PASS] test_lateSettlementFundsThePleasSeasonAndCheckpointsOtherDonations() (gas: 9968844)\n[PASS] test_onlyTheCommittedTribunalCanLabelAFundedApprovedStake() (gas: 5246390)\n[PASS] test_settlementAfterACloseGoesToRolloverOnce() (gas: 10259460)\n[PASS] test_similarWordsAndTruncatedPrefixesStillPass() (gas: 4780754)\n[PASS] test_twoFreshWalletRulingsStillCloseTheCaseAsRequired() (gas: 13636998)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 138.19ms (59.88ms CPU time)\n\nRan 4 tests for test/DistributorOwnership.t.sol:DistributorOwnershipTest\n[PASS] test_aMistypedNomineeCanBeReplacedBeforeAccepting() (gas: 134433)\n[PASS] test_noRenounceBeforeTheRootIsSet() (gas: 151148)\n[PASS] test_onlyTheOwnerRenounces() (gas: 34875)\n[PASS] test_ownershipMovesInTwoSteps() (gas: 202855)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 699.93µs (282.31µs CPU time)\n\nRan 6 tests for test/SeatMultiplier.t.sol:SeatMultiplierTest\n[PASS] testFuzz_pointsNeverExceedScoreTimesOnePointTwo(uint8,bool) (runs: 32, μ: 42842, ~: 65835)\n[PASS] test_aBrokenGreedyOrMissingSeatContractNeverBlocksARecord() (gas: 7854312)\n[PASS] test_aSeatHolderEarnsOneFifthMoreRoundedDown() (gas: 852409)\n[PASS] test_theSeatIsReadWhenThePleaIsRecordedNotWhenItWasJudged() (gas: 789122)\n[PASS] test_theSixtyPointBarIsUnchangedSoTwoMiddlingPleasQualifyWithASeat() (gas: 1723900)\n[PASS] test_twoSeatsAreNoBetterThanOne() (gas: 93006)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 4.53ms (3.84ms CPU time)\n\nRan 4 tests for test/Token.t.sol:TokenTest\n[PASS] test_distributorAndAllowlistMaySend() (gas: 213498)\n[PASS] test_freeForeverOnceTheCabalDies() (gas: 189490)\n[PASS] test_launcherAndInitAreOneShot() (gas: 1361684)\n[PASS] test_walletsCannotSendWhileTheCabalWatches() (gas: 331356)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 6.50ms (467.67µs CPU time)\n\nRan 13 tests for test/TraderResolution.t.sol:TraderResolutionTest\n[PASS] testFuzz_dirtyHookDataFallsBackToRouterCaller(uint96,bool) (runs: 32, μ: 719894, ~: 704373)\n[PASS] test_dirtyHookDataAfterDeathBuyHasNoTrader() (gas: 488966)\n[PASS] test_dirtyHookDataFallsBackToRouterCallerWhileAlive() (gas: 737171)\n[PASS] test_dirtyHookDataWithoutFallbackWhileAliveRequiresRecipient() (gas: 82220)\n[PASS] test_dirtyHookDataWordFallsThrough() (gas: 1044110)\n[PASS] test_feeSurplusWithoutATraderIsBurnedOrKeptForThePool() (gas: 529239)\n[PASS] test_hookDataNamesTheTrader() (gas: 693165)\n[PASS] test_invalidHookDataFallsBackToTheRouterCaller() (gas: 2748975)\n[PASS] test_noTraderAfterDeathBuyGoesThroughWithoutCashback() (gas: 447297)\n[PASS] test_noTraderAfterDeathSellGoesThroughWithoutCashback() (gas: 585148)\n[PASS] test_routerCallerIsTheTraderWithoutHookData() (gas: 716090)\n[PASS] test_routerCallerStillCreditedAfterDeath() (gas: 639166)\n[PASS] test_routerWithoutMsgSenderNeedsHookDataWhileTheCabalLives() (gas: 149579)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 30.72ms (24.54ms CPU time)\n\nRan 2 tests for test/TribunalOracleBoundary.t.sol:TribunalProtocolVectorTest\n[PASS] test_canonicalProtocolDigestSignatureAndCallbackSelectors() (gas: 92791)\n[PASS] test_supportedVectorAnswerIsDeliveredUnderTwoHundredThousandGas() (gas: 212147)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 72.11ms (400.57µs CPU time)\n\nRan 11 tests for test/Orientation.t.sol:SeasonsImdIsZeroTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4932225)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236802)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 24903383)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 58973217)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5985088)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 12335056)\n[PASS] test_onlyApprovedPleasScore() (gas: 5043821)\n[PASS] test_orientationIsImdZero() (gas: 13565)\n[PASS] test_secondSeasonScoresSeparately() (gas: 46101308)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 61137267)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 116228150)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 205.60ms (55.98ms CPU time)\n\nRan 15 tests for test/AuditRevision.t.sol:AuditRevisionPleaZeroTest\n[PASS] testFuzz_cumulativeCapDecayStaysWithinElapsedBudget(uint256) (runs: 32, μ: 4071503, ~: 4071911)\n[PASS] test_aPartlyCoveredPleaTakesThePleaWeightedMean() (gas: 2320783)\n[PASS] test_appealRetryClearsTimedOutPendingAppeal() (gas: 12396218)\n[PASS] test_deadCabalBuyWithoutARecipientSkipsTheCashback() (gas: 2098360)\n[PASS] test_dustBuyDoesNotLendItsHistoryToReceivedTokens() (gas: 1358814)\n[PASS] test_expiredAppealCanBeRetriedWithoutLiftingDenialCooldown() (gas: 12597268)\n[PASS] test_lapsedApprovalCannotBypassCooldown() (gas: 8935814)\n[PASS] test_largeBuyClaimsAreRedeemableAndNextBuyStacksNormally() (gas: 2177935)\n[PASS] test_lateCloseDoesNotPayFutureSeasonFees() (gas: 14175424)\n[PASS] test_oneWeiOverABetterBuyRecordKeepsItsFacts() (gas: 154533)\n[PASS] test_oneWeiOverTheBuyRecordKeepsTheRecordsFacts() (gas: 2412502)\n[PASS] test_sameSecondCapRatchetsCannotReuseFractionalBudget() (gas: 846640)\n[PASS] test_seasonClaimsArePaidAsImdAtClose() (gas: 10677551)\n[PASS] test_secondLargeBuyPreservesEveryPayee() (gas: 1237149)\n[PASS] test_unansweredAppealDoesNotExtendTheOriginalWindow() (gas: 9087098)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 212.88ms (150.98ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingPleaZeroTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7932860, ~: 7937294)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 8078595)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7924083)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23612906)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 205.38ms (109.84ms CPU time)\n\nRan 5 tests for test/SeasonRanking.t.sol:SeasonRankingTest\n[PASS] testFuzz_rankingsMatchSortedResultsInAnyRecordOrder(uint256) (runs: 32, μ: 14509529, ~: 14565801)\n[PASS] test_closeSeasonUsesTheSameTiesForPrizes() (gas: 1162390)\n[PASS] test_earlierEqualScoreCanReplaceACountedPleaWithoutChangingPoints() (gas: 1115935)\n[PASS] test_replacingALowerScoreRemovesItsIdFromTheTieKey() (gas: 1116629)\n[PASS] test_walletTieUsesNewestCountedPleaNotLastRecordedPlea() (gas: 1122888)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 204.96ms (204.17ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingPaidFeeTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7896241, ~: 7901465)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 8042935)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7888255)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23505422)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 122.53ms (117.03ms CPU time)\n\nRan 19 tests for test/Hook.t.sol:HookTest\n[PASS] test_aBuyMustAffordTheCredit() (gas: 1246652)\n[PASS] test_aSellAboveTheCapIsTrimmedAndBurned() (gas: 1843837)\n[PASS] test_avgBuyTimeIsBuyWeighted() (gas: 1071597)\n[PASS] test_capDecayIsSetSoTheFloorIsReachableIn15Days() (gas: 22981)\n[PASS] test_capFollowsBuysAtMostOneDayOfDecayPerDay() (gas: 1814779)\n[PASS] test_everyFeeIsPaidInTheSameSwap() (gas: 1293255)\n[PASS] test_factScoreUsesCheckpointsNotSpot() (gas: 1668420)\n[PASS] test_firstBuyWithAnEmptyPoolSendsPayoutsToLiquidity() (gas: 561440)\n[PASS] test_freeTradingWhenTheCabalSleeps() (gas: 1104186)\n[PASS] test_hourlyCheckpointIsNotSetByTheTradeThatOpensTheHour() (gas: 1973955)\n[PASS] test_plainImdOnlyWhenTheCreditReverts() (gas: 1196866)\n[PASS] test_rebalanceRedeemsClaimsIntoTheWall() (gas: 4748299)\n[PASS] test_sellsAndExactOutputOnlyThroughTheGateWhileAlive() (gas: 738733)\n[PASS] test_stackerIsApprovedOnlyForTheCashbackBeingCredited() (gas: 1823360)\n[PASS] test_wallGuardDropsAtOnceAndRisesFourPercentADay() (gas: 34683871)\n[PASS] test_wallGuardIgnoresASellerChosenLimitReachedThroughAnEmptyPool() (gas: 2804046)\n[PASS] test_wallGuardIgnoresTheEmptyPoolsPriceLimit() (gas: 2778658)\n[PASS] test_wallGuardLagsAPumpAndCapsTheWall() (gas: 17166780)\n[PASS] test_wallGuardStillDropsAtOnceToASellerChosenLimitInsideTheBand() (gas: 33470169)\nSuite result: ok. 19 passed; 0 failed; 0 skipped; finished in 251.48ms (156.50ms CPU time)\n\nRan 15 tests for test/AuditRevision.t.sol:AuditRevisionTest\n[PASS] testFuzz_cumulativeCapDecayStaysWithinElapsedBudget(uint256) (runs: 32, μ: 4075782, ~: 4075825)\n[PASS] test_aPartlyCoveredPleaTakesThePleaWeightedMean() (gas: 2323006)\n[PASS] test_appealRetryClearsTimedOutPendingAppeal() (gas: 12396668)\n[PASS] test_deadCabalBuyWithoutARecipientSkipsTheCashback() (gas: 2098889)\n[PASS] test_dustBuyDoesNotLendItsHistoryToReceivedTokens() (gas: 1359507)\n[PASS] test_expiredAppealCanBeRetriedWithoutLiftingDenialCooldown() (gas: 12597718)\n[PASS] test_lapsedApprovalCannotBypassCooldown() (gas: 8936264)\n[PASS] test_largeBuyClaimsAreRedeemableAndNextBuyStacksNormally() (gas: 2178816)\n[PASS] test_lateCloseDoesNotPayFutureSeasonFees() (gas: 14181566)\n[PASS] test_oneWeiOverABetterBuyRecordKeepsItsFacts() (gas: 154533)\n[PASS] test_oneWeiOverTheBuyRecordKeepsTheRecordsFacts() (gas: 2414725)\n[PASS] test_sameSecondCapRatchetsCannotReuseFractionalBudget() (gas: 847588)\n[PASS] test_seasonClaimsArePaidAsImdAtClose() (gas: 10679409)\n[PASS] test_secondLargeBuyPreservesEveryPayee() (gas: 1237973)\n[PASS] test_unansweredAppealDoesNotExtendTheOriginalWindow() (gas: 9087548)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 253.00ms (164.30ms CPU time)\n\nRan 9 tests for test/AuditRun5.t.sol:AuditRun5PleaFirstTest\n[PASS] testFuzz_markerPrefixesAreRefusedInAnyCase(uint16,bool,uint8) (runs: 32, μ: 66963, ~: 65883)\n[PASS] testFuzz_settlementAcrossTheBoundaryKeepsThePleasSeason(uint16) (runs: 32, μ: 9759334, ~: 9759334)\n[PASS] test_allNewPleaRoutesRefuseSellerWrittenObjectionMarkers() (gas: 783752)\n[PASS] test_appealRoutesAlsoRefuseForgedObjectionMarkers() (gas: 5661023)\n[PASS] test_lateSettlementFundsThePleasSeasonAndCheckpointsOtherDonations() (gas: 9968844)\n[PASS] test_onlyTheCommittedTribunalCanLabelAFundedApprovedStake() (gas: 5246390)\n[PASS] test_settlementAfterACloseGoesToRolloverOnce() (gas: 10259460)\n[PASS] test_similarWordsAndTruncatedPrefixesStillPass() (gas: 4780754)\n[PASS] test_twoFreshWalletRulingsStillCloseTheCaseAsRequired() (gas: 13636998)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 137.31ms (74.36ms CPU time)\n\nRan 32 tests for test/Orientation.t.sol:GateImdIsZeroTest\n[PASS] test_appealClosesAfterFourHoursAndOnlyOnce() (gas: 11763751)\n[PASS] test_appealWithinFourHoursForNoMore() (gas: 9198034)\n[PASS] test_approvedScoreOpensTheSellWindow() (gas: 5754469)\n[PASS] test_badAttestationsAreNotDelivered() (gas: 4942686)\n[PASS] test_bodyIsTheNumericPanelQuestion() (gas: 4994593)\n[PASS] test_callbackFitsTheStipend() (gas: 8080603)\nLogs:\n  approve callback gas: 58981\n  deny callback gas: 83580\n\n[PASS] test_callbackOnlyFromIntakeAndOnlyForAPendingPlea() (gas: 5481562)\n[PASS] test_cannotPassIsRefusedBeforePaying() (gas: 1397408)\n[PASS] test_cooldownAfterExecutedSell() (gas: 8368217)\n[PASS] test_everyDefaultIgnorableCharacterIsRefused() (gas: 5493401)\n[PASS] test_everyFormatCharacterIsRefused() (gas: 5741707)\n[PASS] test_failedAppealCanBeRetried() (gas: 11728053)\n[PASS] test_failureAfterExpireIsRefused() (gas: 4930249)\n[PASS] test_failureClearsThePendingPleaWithoutCooldownOrClock() (gas: 7925990)\n[PASS] test_failureFitsTheMainnetGas() (gas: 4901187)\n[PASS] test_failureForAnUnknownOrSettledRequestDoesNothing() (gas: 5073767)\n[PASS] test_failureOnlyFromTheIntake() (gas: 4869687)\n[PASS] test_noPleasWhileTheCabalSleeps() (gas: 61866)\n[PASS] test_noVerdictIsClearedAtOnceWhenTheIntakeCompletes() (gas: 7909138)\n[PASS] test_onePendingPleaPerWallet() (gas: 4859063)\n[PASS] test_orientationIsImdZero() (gas: 13807)\n[PASS] test_pendingExpiresAfterTwentyMinutesAndLateCallbacksFail() (gas: 7872665)\n[PASS] test_pleaAsksWithTheFailureFunction() (gas: 4823512)\n[PASS] test_pleaPaysTheIntakeAndNamesTheCallback() (gas: 4869548)\n[PASS] test_prizePleaOnTopOfAWeekOldBuy() (gas: 1800321)\n[PASS] test_refusalClearsThePleaToo() (gas: 4923065)\n[PASS] test_scoreAboveRangeOrWrongTypeIsRefused() (gas: 8011963)\n[PASS] test_scoreBelowNeedDenies() (gas: 5122004)\n[PASS] test_sellWindowLapses() (gas: 7942106)\n[PASS] test_signerWithDelegationCodeStillVerifies() (gas: 4956012)\n[PASS] test_textFilter() (gas: 5312609)\n[PASS] test_wrongSignerIsRefused() (gas: 4920189)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 203.78ms (22.26ms CPU time)\n\nRan 6 tests for test/TraderResolverBoundary.t.sol:TraderResolverBoundaryTest\n[PASS] testFuzz_malformedVaultDiscoveryDoesNotRevertOrTruncate(uint8,uint96) (runs: 256, μ: 163438, ~: 159230)\n[PASS] test_missingRevertingAndZeroVaultDiscoveryAllowsDeployment() (gas: 565527)\n[PASS] test_namedContractWalletIsAcceptedWhenItIsNotTheRouter() (gas: 21190)\n[PASS] test_plainWalletFallbackUsesSenderAndNeverTransactionOrigin() (gas: 62847)\n[PASS] test_plainWalletInfrastructureIsExcludedEvenWithoutCode() (gas: 46130)\n[PASS] test_vaultAddressIsCachedAndIsNotReadAgainDuringResolution() (gas: 169659)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 92.38ms (91.85ms CPU time)\n\nRan 6 tests for test/Run7ObjectionPoints.t.sol:Run7ObjectionPointsTest\n[PASS] testFuzz_marginAlwaysUsesRawScoreAndMultiplierOnlyUsesTheRecordingSeat(uint8,bool,bool) (runs: 64, μ: 9684129, ~: 9615479)\n[PASS] test_aBoostedScoreCannotRescueASustainedObjectionOrReverseASale() (gas: 10145614)\n[PASS] test_aLetterCanSellWhilePointsWaitThenUseANewSeatAfterVoid() (gas: 10834074)\n[PASS] test_aSeatCannotTurnADenialIntoAnApprovalOrAnObjectablePlea() (gas: 5081635)\n[PASS] test_pendingObjectionAtFiveHourBoundaryUsesSeatOnLateRecordAndStakeRollsOver() (gas: 14967147)\n[PASS] test_twoRulingsUseTheLowestRawScoreThenTheSeatAtRecordTime() (gas: 13919976)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 203.55ms (115.31ms CPU time)\n\nRan 6 tests for test/Run7ObjectionPoints.t.sol:Run7ObjectionPointsPleaFirstTest\n[PASS] testFuzz_marginAlwaysUsesRawScoreAndMultiplierOnlyUsesTheRecordingSeat(uint8,bool,bool) (runs: 64, μ: 9679549, ~: 9615374)\n[PASS] test_aBoostedScoreCannotRescueASustainedObjectionOrReverseASale() (gas: 10145738)\n[PASS] test_aLetterCanSellWhilePointsWaitThenUseANewSeatAfterVoid() (gas: 10833123)\n[PASS] test_aSeatCannotTurnADenialIntoAnApprovalOrAnObjectablePlea() (gas: 5081635)\n[PASS] test_pendingObjectionAtFiveHourBoundaryUsesSeatOnLateRecordAndStakeRollsOver() (gas: 14967271)\n[PASS] test_twoRulingsUseTheLowestRawScoreThenTheSeatAtRecordTime() (gas: 13919976)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 148.51ms (118.02ms CPU time)\n\nRan 8 tests for test/Launch.t.sol:LaunchTest\n[PASS] test_aMintedFeeOnChainOneNeverOpensTrading() (gas: 287274592)\n[PASS] test_deployHookChecksTheInitCodeAndFlags() (gas: 259227306)\n[PASS] test_eachStepFitsAMainnetTransaction() (gas: 263978225)\nLogs:\n  launch (5 contracts + intake mock): 12787202\n  deployLetterbox: 5210191\n  deployHook: 5800334\n  seed: 643071\n\n[PASS] test_launchWiresEverythingWithoutCallingOutside() (gas: 12909340)\n[PASS] test_ownerMaySeedEarly() (gas: 263944320)\n[PASS] test_seedByOwnerAnyTimeByAnyoneAfterStart() (gas: 264082869)\n[PASS] test_theLaunchRefusesAZeroOrSwappedLetterboxHash() (gas: 52962294)\n[PASS] test_theLaunchRefusesAnOracleSetupTheLetterboxWouldRefuse() (gas: 53619602)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 403.88ms (803.37ms CPU time)\n\nRan 17 tests for test/HookRevision.t.sol:HookRevisionTest\n[PASS] testFuzz_aGreedyStackerCannotReachTheWallReserve(uint256,uint256) (runs: 32, μ: 1309915, ~: 1310226)\n[PASS] testFuzz_aLimitAnywhereInTheLiquidityFreeRegionNeverMovesTheGuard(uint256,uint256) (runs: 32, μ: 2476977, ~: 2375179)\n[PASS] testFuzz_aLimitInsideTheLiquidMarketBandMovesTheGuardToTheStopTick(uint256) (runs: 32, μ: 5211408, ~: 5211400)\n[PASS] testFuzz_aSameHourPumpCannotMoveAPleasFactScore(uint256) (runs: 32, μ: 3176960, ~: 3174580)\n[PASS] testFuzz_repeatedDrainsToTheExtremeNeverMoveTheGuard(uint8) (runs: 32, μ: 3930205, ~: 3709119)\n[PASS] testFuzz_successfulCreditsNeverAccumulateAllowance(uint256,uint256,uint256) (runs: 32, μ: 2152862, ~: 2145210)\n[PASS] testFuzz_theGuardClimbsAtMost400TicksADay(uint256,uint256,uint8) (runs: 32, μ: 2784853, ~: 2722836)\n[PASS] testFuzz_theHoursFirstTradeRecordsThePriceItFoundWhateverItsSize(uint256,uint256) (runs: 32, μ: 2264675, ~: 2253147)\n[PASS] test_aCreditThatBurnsAllItsGasLeavesNoAllowance() (gas: 1590723)\n[PASS] test_aFlashTakenPoolManagerOnlyDefersTheBurn() (gas: 2472327)\n[PASS] test_aPartlyFilledBuyFillsToItsLimitAtEverySize() (gas: 29505334)\n[PASS] test_aSaleLargerThanThePoolsPleaFillsAndItsTrimBurnsAtTheRebalance() (gas: 2269305)\n[PASS] test_aStackerWithoutCodePaysTheCashbackInPlainImd() (gas: 1232722)\n[PASS] test_anHourOpeningSellRecordsThePriceItFound() (gas: 2018232)\n[PASS] test_emptyRegionBitmapBoundaryStopsAtTheExactPriceLimit() (gas: 2305334)\n[PASS] test_theSeedsDustBurnIsCounted() (gas: 20230)\n[PASS] test_wallGuardFollowsASellThatStopsWhereTheMarketHasLiquidity() (gas: 6131056)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 426.17ms (682.66ms CPU time)\n\nRan 26 tests for test/Tribunal.t.sol:TribunalTest\n[PASS] test_aLastSecondShamLeavesTheRivalItsSlot() (gas: 13350629)\n[PASS] test_aStalePendingObjectionIsVoidedByTheNextObjector() (gas: 24233289)\n[PASS] test_aStalePendingObjectionNeverHoldsPastTheWindow() (gas: 17808184)\n[PASS] test_aSustainClosesTheCase() (gas: 9492643)\n[PASS] test_aSustainLeavesTheOtherPendingObjectionToItsOwnRuling() (gas: 13504168)\n[PASS] test_anExcludedSellersPleaCannotBeObjectedTo() (gas: 6020642)\n[PASS] test_anExcludedSellersPleaIsNeverHeld() (gas: 5698588)\n[PASS] test_atMostTwoRulingsFromDifferentWallets() (gas: 13974422)\n[PASS] test_callbackFitsTheIntakesGasBudget() (gas: 9318697)\nLogs:\n  gate verdict callback gas: 58981\n  tribunal ruling callback gas: 106068\n\n[PASS] test_executedAndLapsedApprovalsCanBeObjectedTo() (gas: 17406310)\n[PASS] test_expireByTimeAndByACompletedRequest() (gas: 16890349)\n[PASS] test_marginEdge() (gas: 16971348)\n[PASS] test_onlyApprovedPleasCanBeObjectedTo() (gas: 7922788)\n[PASS] test_overruledAboveTheOriginalKeepsTheOriginalScore() (gas: 9604348)\n[PASS] test_overruledObjectionLowersTheScoreToTheLowestPanelAndFeedsThePot() (gas: 9862584)\n[PASS] test_questionAndBody() (gas: 14788755)\n[PASS] test_rulingsNeverResetTheDeadMan() (gas: 9320467)\n[PASS] test_settleNeedsARuling() (gas: 9174716)\n[PASS] test_statusCountsTheSeatMultiplier() (gas: 10055308)\n[PASS] test_statusText() (gas: 17534956)\n[PASS] test_sustainedObjectionLeavesNoPointsAndReturnsTheStake() (gas: 9723802)\n[PASS] test_textRules() (gas: 9250687)\n[PASS] test_theSellerAndTheOwnersCannotObject() (gas: 5448750)\n[PASS] test_twoObjectionsMayBePendingAtOnce() (gas: 17390435)\n[PASS] test_voidObjectionReturnsTheStakeAndFreesTheSlot() (gas: 13059450)\n[PASS] test_windowEdges() (gas: 12628245)\nSuite result: ok. 26 passed; 0 failed; 0 skipped; finished in 358.36ms (60.07ms CPU time)\n\nRan 11 tests for test/Seasons.t.sol:FastClockTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4931535)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236713)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 1755371)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 43846170)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5985544)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 1318473)\n[PASS] test_fastFullCycle() (gas: 80535959)\n[PASS] test_onlyApprovedPleasScore() (gas: 5040986)\n[PASS] test_secondSeasonScoresSeparately() (gas: 49185496)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 3620383)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 122364568)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 222.66ms (59.32ms CPU time)\n\nRan 10 tests for test/Seasons.t.sol:SeasonsTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4932203)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236691)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 24903361)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 58973217)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5985522)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 12334132)\n[PASS] test_onlyApprovedPleasScore() (gas: 5043799)\n[PASS] test_secondSeasonScoresSeparately() (gas: 46101308)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 61137245)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 116228128)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 228.41ms (66.14ms CPU time)\n\nRan 18 tests for test/HookRevision.t.sol:HookRevisionPleaIsZeroTest\n[PASS] testFuzz_aGreedyStackerCannotReachTheWallReserve(uint256,uint256) (runs: 32, μ: 1309961, ~: 1310309)\n[PASS] testFuzz_aLimitAnywhereInTheLiquidityFreeRegionNeverMovesTheGuard(uint256,uint256) (runs: 32, μ: 2500966, ~: 2403963)\n[PASS] testFuzz_aLimitInsideTheLiquidMarketBandMovesTheGuardToTheStopTick(uint256) (runs: 32, μ: 5211415, ~: 5211422)\n[PASS] testFuzz_aSameHourPumpCannotMoveAPleasFactScore(uint256) (runs: 32, μ: 3176960, ~: 3174580)\n[PASS] testFuzz_repeatedDrainsToTheExtremeNeverMoveTheGuard(uint8) (runs: 32, μ: 3929864, ~: 3709141)\n[PASS] testFuzz_successfulCreditsNeverAccumulateAllowance(uint256,uint256,uint256) (runs: 32, μ: 2154657, ~: 2145232)\n[PASS] testFuzz_theGuardClimbsAtMost400TicksADay(uint256,uint256,uint8) (runs: 32, μ: 2794972, ~: 2380330)\n[PASS] testFuzz_theHoursFirstTradeRecordsThePriceItFoundWhateverItsSize(uint256,uint256) (runs: 32, μ: 2264709, ~: 2253169)\n[PASS] test_aCreditThatBurnsAllItsGasLeavesNoAllowance() (gas: 1590745)\n[PASS] test_aFlashTakenPoolManagerOnlyDefersTheBurn() (gas: 2472327)\n[PASS] test_aPartlyFilledBuyFillsToItsLimitAtEverySize() (gas: 29505334)\n[PASS] test_aSaleLargerThanThePoolsPleaFillsAndItsTrimBurnsAtTheRebalance() (gas: 2269305)\n[PASS] test_aStackerWithoutCodePaysTheCashbackInPlainImd() (gas: 1232722)\n[PASS] test_anHourOpeningSellRecordsThePriceItFound() (gas: 2018254)\n[PASS] test_emptyRegionBitmapBoundaryStopsAtTheExactPriceLimit() (gas: 2305356)\n[PASS] test_orientationIsPleaZero() (gas: 15780)\n[PASS] test_theSeedsDustBurnIsCounted() (gas: 20252)\n[PASS] test_wallGuardFollowsASellThatStopsWhereTheMarketHasLiquidity() (gas: 6131078)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 456.82ms (629.36ms CPU time)\n\nRan 5 tests for test/GasPass.t.sol:GasPassTest\n[PASS] testFuzz_bodyEqualsEscapingTheWholeQuestion(uint256) (runs: 500, μ: 5595866, ~: 5581658)\n[PASS] testFuzz_textCheckMatchesTheReferenceRules(uint256) (runs: 5000, μ: 869216, ~: 88006)\n[PASS] test_bodyEqualsEscapingTheWholeQuestion() (gas: 12954265)\n[PASS] test_priceViewsMatchAFullScan() (gas: 207418231)\n[PASS] test_textCheckEdgeCases() (gas: 81490298)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 460.90ms (905.53ms CPU time)\n\nRan 18 tests for test/HookRevision.t.sol:HookRevisionImdIsZeroTest\n[PASS] testFuzz_aGreedyStackerCannotReachTheWallReserve(uint256,uint256) (runs: 32, μ: 1310959, ~: 1311251)\n[PASS] testFuzz_aLimitAnywhereInTheLiquidityFreeRegionNeverMovesTheGuard(uint256,uint256) (runs: 32, μ: 2472320, ~: 2369112)\n[PASS] testFuzz_aLimitInsideTheLiquidMarketBandMovesTheGuardToTheStopTick(uint256) (runs: 32, μ: 5219916, ~: 5219918)\n[PASS] testFuzz_aSameHourPumpCannotMoveAPleasFactScore(uint256) (runs: 32, μ: 3179710, ~: 3177360)\n[PASS] testFuzz_repeatedDrainsToTheExtremeNeverMoveTheGuard(uint8) (runs: 32, μ: 3991870, ~: 3725524)\n[PASS] testFuzz_successfulCreditsNeverAccumulateAllowance(uint256,uint256,uint256) (runs: 32, μ: 2155116, ~: 2147390)\n[PASS] testFuzz_theGuardClimbsAtMost400TicksADay(uint256,uint256,uint8) (runs: 32, μ: 2663212, ~: 2348399)\n[PASS] testFuzz_theHoursFirstTradeRecordsThePriceItFoundWhateverItsSize(uint256,uint256) (runs: 32, μ: 2267775, ~: 2256210)\n[PASS] test_aCreditThatBurnsAllItsGasLeavesNoAllowance() (gas: 1591936)\n[PASS] test_aFlashTakenPoolManagerOnlyDefersTheBurn() (gas: 2468836)\n[PASS] test_aPartlyFilledBuyFillsToItsLimitAtEverySize() (gas: 29508623)\n[PASS] test_aSaleLargerThanThePoolsPleaFillsAndItsTrimBurnsAtTheRebalance() (gas: 2265758)\n[PASS] test_aStackerWithoutCodePaysTheCashbackInPlainImd() (gas: 1233652)\n[PASS] test_anHourOpeningSellRecordsThePriceItFound() (gas: 2018730)\n[PASS] test_emptyRegionBitmapBoundaryStopsAtTheExactPriceLimit() (gas: 2311940)\n[PASS] test_orientationIsImdZero() (gas: 13564)\n[PASS] test_theSeedsDustBurnIsCounted() (gas: 20252)\n[PASS] test_wallGuardFollowsASellThatStopsWhereTheMarketHasLiquidity() (gas: 6135992)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 425.19ms (785.08ms CPU time)\n\nRan 20 tests for test/Orientation.t.sol:HookPleaIsZeroTest\n[PASS] test_aBuyMustAffordTheCredit() (gas: 1246652)\n[PASS] test_aSellAboveTheCapIsTrimmedAndBurned() (gas: 1843859)\n[PASS] test_avgBuyTimeIsBuyWeighted() (gas: 1071597)\n[PASS] test_capDecayIsSetSoTheFloorIsReachableIn15Days() (gas: 22981)\n[PASS] test_capFollowsBuysAtMostOneDayOfDecayPerDay() (gas: 1814779)\n[PASS] test_everyFeeIsPaidInTheSameSwap() (gas: 1293277)\n[PASS] test_factScoreUsesCheckpointsNotSpot() (gas: 1668420)\n[PASS] test_firstBuyWithAnEmptyPoolSendsPayoutsToLiquidity() (gas: 561462)\n[PASS] test_freeTradingWhenTheCabalSleeps() (gas: 1104208)\n[PASS] test_hourlyCheckpointIsNotSetByTheTradeThatOpensTheHour() (gas: 1973955)\n[PASS] test_orientationIsPleaZero() (gas: 15944)\n[PASS] test_plainImdOnlyWhenTheCreditReverts() (gas: 1196866)\n[PASS] test_rebalanceRedeemsClaimsIntoTheWall() (gas: 4748299)\n[PASS] test_sellsAndExactOutputOnlyThroughTheGateWhileAlive() (gas: 738733)\n[PASS] test_stackerIsApprovedOnlyForTheCashbackBeingCredited() (gas: 1823382)\n[PASS] test_wallGuardDropsAtOnceAndRisesFourPercentADay() (gas: 34683871)\n[PASS] test_wallGuardIgnoresASellerChosenLimitReachedThroughAnEmptyPool() (gas: 2804046)\n[PASS] test_wallGuardIgnoresTheEmptyPoolsPriceLimit() (gas: 2778701)\n[PASS] test_wallGuardLagsAPumpAndCapsTheWall() (gas: 17166780)\n[PASS] test_wallGuardStillDropsAtOnceToASellerChosenLimitInsideTheBand() (gas: 33470191)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 460.84ms (132.89ms CPU time)\n\nRan 6 tests for test/JudgeFindings.t.sol:JudgeFindingsPleaZeroTest\n[PASS] test_aSmallWriterCanAppealByLetter() (gas: 8106699)\n[PASS] test_appealAutoOfAMinimumPleaStaysAtTheMinimum() (gas: 8778351)\n[PASS] test_appealLetterKeepsTheOriginalShareBand() (gas: 7956118)\n[PASS] test_deliverAfterACrashCapsTheFeeAtTheSale() (gas: 566910058)\n[PASS] test_fiftyPercentCeilingAndShareBands() (gas: 23942831)\n[PASS] test_ownershipTransferNeedsAcceptanceSoALeaderKeepsThePrize() (gas: 7161480)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 490.61ms (339.36ms CPU time)\n\nRan 6 tests for test/JudgeFindings.t.sol:JudgeFindingsTest\n[PASS] test_aSmallWriterCanAppealByLetter() (gas: 8106699)\n[PASS] test_appealAutoOfAMinimumPleaStaysAtTheMinimum() (gas: 8778351)\n[PASS] test_appealLetterKeepsTheOriginalShareBand() (gas: 7956118)\n[PASS] test_deliverAfterACrashCapsTheFeeAtTheSale() (gas: 566910058)\n[PASS] test_fiftyPercentCeilingAndShareBands() (gas: 23942831)\n[PASS] test_ownershipTransferNeedsAcceptanceSoALeaderKeepsThePrize() (gas: 7161480)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 528.24ms (308.51ms CPU time)\n\nRan 20 tests for test/Orientation.t.sol:HookImdIsZeroTest\n[PASS] test_aBuyMustAffordTheCredit() (gas: 1247855)\n[PASS] test_aSellAboveTheCapIsTrimmedAndBurned() (gas: 1845121)\n[PASS] test_avgBuyTimeIsBuyWeighted() (gas: 1073180)\n[PASS] test_capDecayIsSetSoTheFloorIsReachableIn15Days() (gas: 22981)\n[PASS] test_capFollowsBuysAtMostOneDayOfDecayPerDay() (gas: 1816341)\n[PASS] test_everyFeeIsPaidInTheSameSwap() (gas: 1294207)\n[PASS] test_factScoreUsesCheckpointsNotSpot() (gas: 1670359)\n[PASS] test_firstBuyWithAnEmptyPoolSendsPayoutsToLiquidity() (gas: 562129)\n[PASS] test_freeTradingWhenTheCabalSleeps() (gas: 1104534)\n[PASS] test_hourlyCheckpointIsNotSetByTheTradeThatOpensTheHour() (gas: 1976265)\n[PASS] test_orientationIsImdZero() (gas: 13657)\n[PASS] test_plainImdOnlyWhenTheCreditReverts() (gas: 1198057)\n[PASS] test_rebalanceRedeemsClaimsIntoTheWall() (gas: 4748773)\n[PASS] test_sellsAndExactOutputOnlyThroughTheGateWhileAlive() (gas: 739243)\n[PASS] test_stackerIsApprovedOnlyForTheCashbackBeingCredited() (gas: 1825322)\n[PASS] test_wallGuardDropsAtOnceAndRisesFourPercentADay() (gas: 34763275)\n[PASS] test_wallGuardIgnoresASellerChosenLimitReachedThroughAnEmptyPool() (gas: 2804216)\n[PASS] test_wallGuardIgnoresTheEmptyPoolsPriceLimit() (gas: 2782672)\n[PASS] test_wallGuardLagsAPumpAndCapsTheWall() (gas: 17191853)\n[PASS] test_wallGuardStillDropsAtOnceToASellerChosenLimitInsideTheBand() (gas: 33547998)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 520.82ms (140.18ms CPU time)\n\nRan 5 tests for test/TribunalTextProperties.t.sol:TribunalTextPropertiesTest\n[PASS] testFuzz_markerPrefixesAreRejectedBeforeAnyPayment(uint16,uint16,bool) (runs: 256, μ: 4860153, ~: 4857219)\n[PASS] testFuzz_theTribunalRefusesExactlyWhatTheGateRefuses(uint256) (runs: 2000, μ: 6337793, ~: 5570032)\n[PASS] testFuzz_utf8AndEscapesSurviveTheOracleBody(bytes32,uint16) (runs: 128, μ: 11862851, ~: 11715531)\n[PASS] test_malformedUtf8ControlsAndInvisibleCharactersAreRejected() (gas: 6488434)\n[PASS] test_oneByteAnd280BytesAcceptButZeroAnd281Reject() (gas: 13550708)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 511.78ms (988.43ms CPU time)\n\nRan 3 tests for test/Run7DistributorLifecycle.t.sol:Run7DistributorLifecycleTest\n[PASS]\nRun7DistributorLifecycleTest invariants:\n[PASS] invariant_noHandoverOrFailedClaimCanMoveTheAllocation\n[PASS] invariant_rootAndAuthorityFollowOnlySuccessfulTransitions\n Run7DistributorLifecycleTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------------------+--------------+-------+---------+----------╮\n| Contract                | Selector     | Calls | Reverts | Discards |\n+=====================================================================+\n| Run7DistributionHandler | accept       | 1231  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | claim        | 1152  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | corruptClaim | 1144  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | donate       | 1164  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | nominate     | 1174  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | publish      | 1179  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | renounce     | 1148  | 0       | 0        |\n╰-------------------------+--------------+-------+---------+----------╯\n\n[PASS] test_handoverBeforeRootThenRenunciationWithPendingNomineeLeavesClaimsLive() (gas: 2382126)\n[PASS] test_replacingAndCancellingNomineesCannotStrandTheUnpublishedAllocation() (gas: 925664)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.49s (1.49s CPU time)\n\nRan 3 tests for test/Run7SeatAccounting.t.sol:Run7SeatAccountingTest\n[PASS]\nRun7SeatAccountingTest invariants:\n[PASS] invariant_imdAndBonusRemainConservedAcrossSeatFailuresAndClose\n[PASS] invariant_pointsAndBestThreeUseSeatsOnlyAtRecordTime\n Run7SeatAccountingTest invariants (runs: 64, calls: 3072, reverts: 0)\n\n╭-----------------+----------------------+-------+---------+----------╮\n| Contract        | Selector             | Calls | Reverts | Discards |\n+=====================================================================+\n| Run7SeatHandler | closeWithLateRecords | 631   | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| Run7SeatHandler | donate               | 629   | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| Run7SeatHandler | issue                | 617   | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| Run7SeatHandler | record               | 590   | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| Run7SeatHandler | setSeat              | 605   | 0       | 0        |\n╰-----------------+----------------------+-------+---------+----------╯\n\n[PASS] test_malformedOrStateChangingSeatAnswersCannotBlockRecordsOrPayouts() (gas: 8738810)\n[PASS] test_receivingOrLosingManySeatsAfterRecordNeverChangesEarnedPoints() (gas: 7418963)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 4.46s (4.47s CPU time)\n\nRan 64 test suites in 4.69s (15.41s CPU time): 667 tests passed, 0 failed, 0 skipped (667 total tests)\n","passed":true},{"durationMs":119,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"CabalGate.appeal(uint256,uint256,string)\",\"CabalGate.appealFor(address,uint256,uint256,uint256,string,uint8,uint256,uint256)\",\"CabalGate.begin()\",\"CabalGate.executeSell(uint256)\",\"CabalGate.executeSellFor(uint256,uint256)\",\"CabalGate.expire(uint256)\",\"CabalGate.onOracleResult(bytes32,(bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"CabalGate.onPleaFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"CabalGate.submitFor(address,uint256,uint256,string,uint8,uint256,uint256)\",\"CabalGate.submitSell(uint256,string)\",\"CabalGate.unlockCallback(bytes)\",\"Letterbox.appealAuto(uint256,string)\",\"Letterbox.deliver(uint256)\",\"Letterbox.fallback()\",\"Letterbox.letter(string)\",\"Letterbox.plead(uint256,string)\",\"Letterbox.setName(string)\",\"Letterbox.settle(uint256)\",\"PLEA.acceptOwnership()\",\"PLEA.allow(address)\",\"PLEA.approve(address,uint256)\",\"PLEA.burn(uint256)\",\"PLEA.courtTake(address,uint256)\",\"PLEA.init(address,address)\",\"PLEA.renounceOwnership()\",\"PLEA.setLauncher(address,address,address)\",\"PLEA.setLetterbox(address)\",\"PLEA.transfer(address,uint256)\",\"PLEA.transferFrom(address,address,uint256)\",\"PLEA.transferOwnership(address)\",\"PleaDistributor.acceptOwnership()\",\"PleaDistributor.claim(uint256,address,uint256,bytes32[])\",\"PleaDistributor.renounceOwnership()\",\"PleaDistributor.setMerkleRoot(bytes32)\",\"PleaDistributor.transferOwnership(address)\",\"PleaHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"PleaHook.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"PleaHook.fundWall(uint256)\",\"PleaHook.rebalance()\",\"PleaHook.seed()\",\"PleaHook.unlockCallback(bytes)\",\"PleaLaunch.deployHook(bytes32,bytes)\",\"PleaLaunch.deployLetterbox(bytes)\",\"PleaLaunch.deployTribunal(bytes)\",\"PleaLaunch.seed()\",\"Seasons.checkpoint()\",\"Seasons.checkpointObjection(uint256,uint256)\",\"Seasons.closeSeason(uint256[])\",\"Seasons.flushToWall()\",\"Seasons.record(uint256)\",\"Seasons.unlockCallback(bytes)\",\"Tribunal.expire(uint256)\",\"Tribunal.object(uint256,string)\",\"Tribunal.onObjectionFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"Tribunal.onOracleResult(bytes32,(bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"Tribunal.settle(uint256)\"],\"files\":{\".gitignore\":5,\"ADAPTATION.md\":189,\"OBJECTIONS.md\":339,\"README.md\":302,\"audit/FINDINGS.md\":158,\"audit/README.md\":35,\"audit/THREAT-MODEL.md\":112,\"audit/jobs/A1.md\":18,\"audit/jobs/A2.md\":23,\"audit/jobs/A3.md\":16,\"audit/jobs/common.md\":14,\"audit/make_jobs.py\":143,\"audit/rounds/1/A1.objective.txt\":26,\"audit/rounds/1/A1.report.md\":130,\"audit/rounds/1/A1.request.json\":9,\"audit/rounds/1/A2.objective.txt\":31,\"audit/rounds/1/A2.report.md\":323,\"audit/rounds/1/A2.request.json\":9,\"audit/rounds/1/A3.objective.txt\":24,\"audit/rounds/1/A3.report.md\":114,\"audit/rounds/1/A3.request.json\":9,\"audit/rounds/1/manifest.json\":87,\"audit/rounds/2/A1.objective.txt\":26,\"audit/rounds/2/A1.report.md\":133,\"audit/rounds/2/A1.request.json\":9,\"audit/rounds/2/A2.objective.txt\":31,\"audit/rounds/2/A2.report.md\":93,\"audit/rounds/2/A2.request.json\":9,\"audit/rounds/2/A3.objective.txt\":24,\"audit/rounds/2/A3.report.md\":142,\"audit/rounds/2/A3.request.json\":9,\"audit/rounds/2/manifest.json\":87,\"audit/rounds/3/A1.objective.txt\":26,\"audit/rounds/3/A1.report.md\":127,\"audit/rounds/3/A1.request.json\":9,\"audit/rounds/3/A2.objective.txt\":31,\"audit/rounds/3/A2.report.md\":192,\"audit/rounds/3/A2.request.json\":9,\"audit/rounds/3/A3.objective.txt\":24,\"audit/rounds/3/A3.report.md\":119,\"audit/rounds/3/A3.request.json\":9,\"audit/rounds/3/manifest.json\":87,\"audit/rounds/4/A1.objective.txt\":26,\"audit/rounds/4/A1.report.md\":88,\"audit/rounds/4/A1.request.json\":9,\"audit/rounds/4/A2.objective.txt\":31,\"audit/rounds/4/A2.report.md\":207,\"audit/rounds/4/A2.request.json\":9,\"audit/rounds/4/A3.objective.txt\":24,\"audit/rounds/4/A3.report.md\":133,\"audit/rounds/4/A3.request.json\":9,\"audit/rounds/4/manifest.json\":87,\"audit/rounds/5/A1.objective.txt\":26,\"audit/rounds/5/A1.report.md\":135,\"audit/rounds/5/A1.request.json\":9,\"audit/rounds/5/A2.objective.txt\":31,\"audit/rounds/5/A2.report.md\":93,\"audit/rounds/5/A2.request.json\":9,\"audit/rounds/5/A3.objective.txt\":24,\"audit/rounds/5/A3.report.md\":73,\"audit/rounds/5/A3.request.json\":9,\"audit/rounds/5/manifest.json\":87,\"audit/rounds/6/A1.objective.txt\":26,\"audit/rounds/6/A1.report.md\":60,\"audit/rounds/6/A1.request.json\":9,\"audit/rounds/6/A2.objective.txt\":31,\"audit/rounds/6/A2.report.md\":161,\"audit/rounds/6/A2.request.json\":9,\"audit/rounds/6/A3.objective.txt\":24,\"audit/rounds/6/A3.request.json\":9,\"audit/rounds/6/manifest.json\":87,\"audit/rounds/7/A1.objective.txt\":26,\"audit/rounds/7/A1.report.md\":132,\"audit/rounds/7/A1.request.json\":9,\"audit/rounds/7/A2.objective.txt\":31,\"audit/rounds/7/A2.report.md\":95,\"audit/rounds/7/A2.request.json\":9,\"audit/rounds/7/A3.objective.txt\":24,\"audit/rounds/7/A3.report.md\":72,\"audit/rounds/7/A3.request.json\":9,\"audit/rounds/7/manifest.json\":87,\"audit/rounds/8/A1.objective.txt\":26,\"audit/rounds/8/A1.report.md\":121,\"audit/rounds/8/A1.request.json\":9,\"audit/rounds/8/A2.objective.txt\":31,\"audit/rounds/8/A2.request.json\":9,\"audit/rounds/8/A3.objective.txt\":24,\"audit/rounds/8/A3.report.md\":114,\"audit/rounds/8/A3.request.json\":9,\"audit/rounds/8/manifest.json\":87,\"foundry.toml\":33,\"launch.json\":58,\"remappings.txt\":4,\"script/Deploy.s.sol\":80,\"script/DeployLetterbox.s.sol\":22,\"script/DeployTribunal.s.sol\":22,\"script/MineSalt.s.sol\":44,\"src/CabalGate.sol\":903,\"src/Letterbox.sol\":757,\"src/OracleAttestation.sol\":227,\"src/PLEA.sol\":151,\"src/PleaDistributor.sol\":60,\"src/PleaHook.sol\":1116,\"src/PleaLaunch.sol\":220,\"src/Seasons.sol\":467,\"src/Tribunal.sol\":561,\"src/interfaces/IPleaParts.sol\":78,\"src/interfaces/IStacker.sol\":12,\"test/AppealRounding.t.sol\":146,\"test/ArtifactDeployment.t.sol\":59,\"test/AuditImported.t.sol\":142,\"test/AuditRevision.t.sol\":336,\"test/AuditRound1.t.sol\":651,\"test/AuditRun3.t.sol\":394,\"test/AuditRun5.t.sol\":186,\"test/BonusInvariant.t.sol\":541,\"test/DistributorAdversarial.t.sol\":342,\"test/DistributorOwnership.t.sol\":71,\"test/GasPass.t.sol\":403,\"test/Gate.t.sol\":472,\"test/GateAdversarial.t.sol\":400,\"test/GateFailureInvariant.t.sol\":330,\"test/Hook.t.sol\":359,\"test/HookAdversarial.t.sol\":257,\"test/HookRevision.t.sol\":553,\"test/JudgeFindings.t.sol\":222,\"test/Launch.t.sol\":249,\"test/LaunchManifest.t.sol\":370,\"test/Letterbox.t.sol\":915,\"test/LetterboxInvariant.t.sol\":447,\"test/MainnetGuard.t.sol\":87,\"test/ManifestInput.t.sol\":84,\"test/OracleConformance.t.sol\":116,\"test/OracleReplay.t.sol\":60,\"test/Orientation.t.sol\":126,\"test/OwnershipTransitionInvariant.t.sol\":238,\"test/Run7Coverage.md\":54,\"test/Run7DistributorLifecycle.t.sol\":276,\"test/Run7ObjectionPoints.t.sol\":204,\"test/Run7SeatAccounting.t.sol\":308,\"test/SeasonAdversarial.t.sol\":211,\"test/SeasonFunds.t.sol\":351,\"test/SeasonInvariant.t.sol\":348,\"test/SeasonRanking.t.sol\":176,\"test/Seasons.t.sol\":290,\"test/SeatMultiplier.t.sol\":167,\"test/Token.t.sol\":80,\"test/TraderAttributionInvariant.t.sol\":287,\"test/TraderFallbackAdversarial.t.sol\":315,\"test/TraderResolution.t.sol\":225,\"test/TraderResolverBoundary.t.sol\":126,\"test/TradingInvariant.t.sol\":496,\"test/Tribunal.t.sol\":615,\"test/TribunalAdversarial.t.sol\":225,\"test/TribunalInvariant.t.sol\":603,\"test/TribunalOracleBoundary.t.sol\":334,\"test/TribunalSeasons.t.sol\":309,\"test/TribunalStanding.t.sol\":217,\"test/TribunalTextProperties.t.sol\":276,\"test/fork/ForkMainnet.t.sol\":406,\"test/fork/ForkTestnet.t.sol\":884,\"test/utils/AdversarialTraderRouter.sol\":38,\"test/utils/ArtifactDeployment.sol\":23,\"test/utils/ClaimTree.sol\":41,\"test/utils/Fixture.sol\":350,\"test/utils/Mocks.sol\":371,\"test/utils/SeasonModel.sol\":117,\"test/utils/SepoliaFixture.sol\":36},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"08acbbe1836f64d1f634fc5fff92b0de787171231158391fd160b9ac5ae46abd","verifiedTreeHash":"f37ddd220891691a2a79a01c1bca0b96f499b099","verifierVersion":"0.1.0+d952fceb"}]}