{"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":"5ce54b31-c82f-40a6-8a0a-236d10b31cd4","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"90df83489f2db25adefbe1461f8e5b549bbd13aab4278f908df4d6125863d125","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":"44664345d6451e2ddc0b30274645bec7b2dda536af779d328a7d756f166330a7","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":"fc4ec7fb341d6df0a172409d5440a2e7f733f84924972f091fb4e8bf15b82ee2","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":"8f39decd1afa79b0a25704c41e9dfee647f569ade7eacc39d61af592101275d3","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":"dc2fc12fc2394b376a1f6d70201509314f4b51262dc8a5d24a197cd1ed4ed5e1","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":"2d81264d0ec38470a8b96201986c848c33bd383ea6cb3b8e1e0bc122dab00d51","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":"failed"},{"acceptedSubmissionHash":"5c7e5d5fa58d818d70f489ea61b0961275a8e0a2b79c4f8a11b9ac684593e702","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":"accepted"}],"objective":"Launch PLEA test run 7 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 on Sepolia: run 6's code (branch testnet6 @ 6ef22d1: your run-5 delivery 0f7b870c plus the agreed-clock check moved from CabalGate's constructor to PleaLaunch.seed, the gate scoring an appeal's share band on the lesser of its own share and the original's, and the Tribunal never holding an excluded seller's plea) plus the run-7 batch and the fixes from your audit template's rounds 1 to 4 (audit/FINDINGS.md R1-*, R2-*, R3-*, R4-*; audit/rounds/; tests in test/AuditRound1.t.sol): (1) letters pay no 0.35 IMD auto-sell fee (Letterbox._deliver takes it only from the site's auto-sell box, a plea without the BY_LETTER flag; the 0.70 IMD floor stays for both; new Letterbox hash); (2) an over-long letter is refused with LetterTooLong(bytes, 280); (3) season points are the score times 1.2, rounded down, when the seller holds at least one IMD seat NFT at record time (Seasons' fourth constructor argument = the IMD NFT (test) 0xa0443799c320e16c80801c9c1911f3571260287f on Sepolia; binary, points only, the 60-point bar and the Tribunal's score/need comparison untouched; read with a gas-capped staticcall that never blocks a record); (4) the owner's fee is 0.75% (PleaHook.OWNER_BPS 75; 2.0% in all: 0.5% cashback, 0.75% owner, 0.25% prize pot, 0.25% wall, 0.25% of the PLEA burned); (5) the cap ratchet reaches its 900,000 PLEA floor in 15 days (CAP_DECAY_DAYS 15); (6) PleaDistributor is Ownable2Step and cannot be renounced before its root is set; (7) the need is recalibrated: the fact score is 0-45 (share of the balance sold at most 15%: 16, at most 30%: 9, more: 3; held 7 days: 7, 3 days: 4, 1 day: 2; at a loss: 13, gain at most 50%: 8, at most 200%: 3; 24h trend up: 9, flat: 5, down: 0), need = 71 - fact (PASS_MARK 71; CannotPass above 45), the judges' scale and DEFINITIONS unchanged; letters plead 15% (LETTER_SHARE_BPS 1500); (8) the audit rounds' fixes (FINDINGS.md R1-*, R2-*, R3-*, R4-*). 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 through settle and Seasons.checkpointObjection); a refused or split panel or 20 minutes without a ruling voids it (stake back); the recorded score is the lowest any panel gave; at most two rulings per plea from different wallets; the sale is never touched and rulings never reset the dead-man. Numbers: PLEA.init mints 82% to the hook, 6% to Seasons and 12% to PleaDistributor (one Merkle root for the swarm's 10% and a 2% airdrop); the PLEA bonus is 10,000,000 PLEA for each of the first six seasons; Seasons pays the top 25 wallets with 60 or more points shares from 450 down to 350 basis points in a straight line (Seasons.shareBps). Everything else is run 6's. Build: the whole tree compiles under via_ir as one slow solc job (two contracts sit near the size limit): 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' (each group compiles only its own files); the default Foundry 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 759 tests in 84 suites; test/LaunchManifest.t.sol ties launch.json to both committed code hashes, keeps its notes under the manifest's 4,000-character cap and asserts the launch fits the 16,777,216-gas cap with your factory's 22% headroom (13,534,269 as charged, 16,511,808 with headroom, 265,408 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 (fees 2.0% with owner 0.75, timings, panel 30, quorum 17, 5-hour seasons, 33-hour dead-man, START 1792162800, credit gas 1300000, letters 15%, need 71 minus the fact score with the fact table above, plea 1% to 50% or 2.5M, 0.70 IMD minimum plea value, 95% sale minimum, fee cap +10%, six bonus seasons of 10,000,000 PLEA, the 82/6/12 split, top 25 from 450 to 350 bps, the 1.2 seat multiplier, cap decay 15 days, objection window 20 minutes, stake 0.35 IMD, margin 2, two rulings per plea). If you change the Letterbox or the Tribunal, update its code hash in launch.json. Runtime sizes: CabalGate 24,493 bytes (83 under the EIP-170 limit: do not add code to it), PleaHook 24,358, Letterbox 23,229, Tribunal 20,116, 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":"8ea7bbcbc7f1a0b7c5eca3b86fb927e6ee4eac79d8d662abee5595f4084c806d","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"5ce54b31-c82f-40a6-8a0a-236d10b31cd4","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1843-launch-plea-test-run"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51880","feedbackHash":"1a4da84ac059e1aabb43e1872da6112493286a5d690f7cd8cbc1e4c63c7a0cd9","nodeKey":"adapt_contract_project","submissionHash":"90df83489f2db25adefbe1461f8e5b549bbd13aab4278f908df4d6125863d125","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52190","feedbackHash":"d0fef4f10ea99d6401281ee970381dbaf6c616060fcc4c20417e643e28eb4bfa","nodeKey":"audit_economics","submissionHash":"44664345d6451e2ddc0b30274645bec7b2dda536af779d328a7d756f166330a7","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52586","feedbackHash":"546b63d43cd8a6bb3f3e77d2cb5d89871443ff0d474b285cb9d3ea47ddfe253e","nodeKey":"audit_flow","submissionHash":"fc4ec7fb341d6df0a172409d5440a2e7f733f84924972f091fb4e8bf15b82ee2","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52256","feedbackHash":"e309a8ace9bdadff979c1afceb9d8135f686f3b5b451e0754b440c94aabb5159","nodeKey":"audit_imported_code","submissionHash":"8f39decd1afa79b0a25704c41e9dfee647f569ade7eacc39d61af592101275d3","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52223","feedbackHash":"fe7ce4fd6c84f2a82b4e3f2e29dd0e4363c2ebb4f6e6da8da31a0b01b3fdfee6","nodeKey":"audit_math","submissionHash":"dc2fc12fc2394b376a1f6d70201509314f4b51262dc8a5d24a197cd1ed4ed5e1","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51494","feedbackHash":"dd53b995e4f3b01b6533327e2ca378d753010453116514c8850bccef97c76513","nodeKey":"audit_permissions","submissionHash":"2d81264d0ec38470a8b96201986c848c33bd383ea6cb3b8e1e0bc122dab00d51","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51005","feedbackHash":"f9ad279e2de00bb28c182b33c22658e7c304d92d7ec9244d7affff11a65a5c1c","nodeKey":"write_foundry_tests","submissionHash":"5c7e5d5fa58d818d70f489ea61b0961275a8e0a2b79c4f8a11b9ac684593e702","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"be93a4d35d0c65a2ace4a2d00ac2d7976491dd5f6881b08d671222be309e095a","state":"blocked","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"3a40eaafbd83a6bc","findings":[],"hash":"2d81264d0ec38470a8b96201986c848c33bd383ea6cb3b8e1e0bc122dab00d51","nodeId":"a07a7a45-dff1-422b-bba1-d5b8e902a8b7","outcome":"completed","summary":"The review is complete. The findings file is written and valid, and the working tree has no other changes.\n\n**Result: no reproducible defect in the permissions area.** The findings file at `.imd-findings.json` holds an empty findings list and a coverage record with one row for each of the 56 listed entry points plus four invariant rows, all `holds` with a one-line reason.\n\n**What I covered, per the three guides:**\n\n- **Access Control.** I mapped every role (PLEA owner, launch owner, distributor owner, launcher, Letterbox, Tribunal, Intake, PoolManager) and traced every state-changing entry point to its guard. Every privileged write has exactly one writer path. The launcher, hook, Letterbox and Tribunal registrations are one-shot with committed code. The two Ownable2Step contracts behave as intended, and the distributor cannot be renounced before its root.\n- **Asymmetry.** I diffed the paired surfaces: submitSell against submitFor, appeal against appealFor, executeSell against executeSellFor, record against the close's batch record, object against standing, onOracleResult against onPleaFailure, plead against letters, and the gate's and the Tribunal's text validators. The only differences are the agreed ones, such as letters paying no auto-sell fee. The missing pendingOf check in executeSellFor is not exploitable because an Approved plea is always its seller's pendingOf.\n- **Trust Gap.** The allowlist cannot reach the PoolManager, the gate or the Letterbox, so it cannot bypass the sell gate. The hook's fee beneficiary is immutable, so a PLEA ownership handover cannot un-exclude the team. The fail-open Tribunal and seat reads cannot be starved by a caller's gas choice, since the 63/64 rule leaves the outer record call too little gas to finish.\n\n**Verification run.** The source tree builds under via_ir, and the eight LaunchManifest tests pass on this tree, confirming the launch.json code hashes, argument encoding and gas fit.\n\n**Not reached.** I did not re-derive the hook's economic payouts or the pool math beyond their access paths, which belong to the other three specialists. Points already accepted in the findings ledger, such as the Intake's requestId binding and the record-time seat read, were not re-reported.","treeHash":null,"usage":{"cachedInputTokens":1832110,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":39462,"runtime":"claude","turns":30,"wallClockMs":685416}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"3beb94a990617d46","findings":[],"hash":"44664345d6451e2ddc0b30274645bec7b2dda536af779d328a7d756f166330a7","nodeId":"4270a770-812f-473c-a4a0-dc9f925a5026","outcome":"completed","summary":"The review is complete. No tracked file changed, and the findings file is in place with an empty findings list and a coverage row for all 56 entry points plus 4 invariants.\n\n**Outcome: no reproducible economic defect in the run-7 tree.** I audited the Economic Security, Invariant and Flow Gap failure modes against every value flow and found each guarded, either by code or by a documented and accepted limit in the threat model. The file at `.imd-findings.json` holds `{\"findings\":[]}` and sixty coverage rows, every one `holds` with a one-line reason.\n\n**What I traced and confirmed**\n\n- **Season pot accounting.** The accounted pot always equals open season fees plus rollover and never exceeds what Seasons holds. Checkpoint, objection checkpoint, close and flush all preserve it, and no IMD leaves Seasons unaccounted.\n- **Objection stakes are conserved.** Each stake leaves the Tribunal exactly once, to the objector or to the plea's season pot. A verdict after a season's end belongs to the next season, so the 40-minute hold always ends inside its season's one-hour close grace.\n- **Trade fees.** The hook charges 2.0% on the fill with the agreed split and burns 0.25% of the PLEA leg. Exact-input and exact-output formulas give the same share. Payout decisions key on the pool's own IMD, not the PoolManager balance.\n- **Letterbox custody.** It holds exactly its open escrows' PLEA plus one tip each. Letters pay no auto-sell fee, the site's box pays at most the sale, and every escrow ends once.\n- **Launch manifest.** Constructor arguments match each constructor in order, both code hashes match this tree, and the manifest test confirms the gas fit.\n\n**Verification runs on this tree**\n\n| Suite | Result |\n|---|---|\n| LaunchManifest | 11 passed |\n| TribunalSeasons, SeasonFunds, SeatMultiplier, TribunalInvariant | 35 passed |\n\n**Not reached in depth.** The attestation signature and replay logic in OracleAttestation.sol was outside my area and I did not read it. The two oracle callbacks are marked `holds` for their economic effects only, and the rows say so.\n\n**Leads I checked and dropped.** The seat flash-rental at record time, the two-wallet objection shield, the min-of-panels re-roll, and the trend pump across an hour boundary are all explicitly accepted in the threat model or in OBJECTIONS.md Known limits, so none opens a revision. The static analysis lines in my area (strict equalities, reentrancy orderings in Seasons and the Letterbox) were all behind guards or trusted tokens and produced no failing input.","treeHash":null,"usage":{"cachedInputTokens":1570049,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":34879,"runtime":"claude","turns":25,"wallClockMs":671944}},{"artifacts":[],"attempt":1,"bundleHash":"0b3079fc0a80d8191e309aa652e73e447f7c37d1054040642dc7ac86778142de","device":"9b2fda471b13b14a","findings":[{"description":"Tribunal.standing returns held=true for a non-stale pending objection before reading the seller or calling Seasons.excluded. An eligible seller can receive an approval and an objection, then accept PLEA ownership while the objection is still pending. Seasons.excluded then returns true and Tribunal.status reports 'seller excluded: no points, nothing to object to', but standing still returns held=true. This violates the assignment's requirement that the Tribunal never hold an excluded seller's plea. The demonstrated impact is an inconsistent public standing during the pending interval: Seasons.record still rejects the excluded owner, and this reproduction does not show a sale being reversed or an excluded prize being paid. Checking seller exclusion before the pending-objection return would address the inconsistency; any Tribunal source fix also requires updating its committed creation-code hash in launch.json.","line":192,"path":"src/Tribunal.sol","proof":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.26;\n\nimport {Test} from \"forge-std/Test.sol\";\nimport {PLEA} from \"src/PLEA.sol\";\nimport {Seasons} from \"src/Seasons.sol\";\nimport {CabalGate} from \"src/CabalGate.sol\";\nimport {Tribunal} from \"src/Tribunal.sol\";\nimport {IIntake} from \"src/interfaces/IPleaParts.sol\";\n\ncontract ExcludedSellerAsset {\n    mapping(address => uint256) public balanceOf;\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    function mint(address to, uint256 amount) external { balanceOf[to] += amount; }\n    function approve(address to, uint256 amount) external returns (bool) {\n        allowance[msg.sender][to] = amount;\n        return true;\n    }\n    function transferFrom(address from, address to, uint256 amount) external returns (bool) {\n        allowance[from][msg.sender] -= amount;\n        balanceOf[from] -= amount;\n        balanceOf[to] += amount;\n        return true;\n    }\n}\n\n/// @dev The external oracle has accepted the request and has not answered it yet.\ncontract ExcludedSellerIntake {\n    function requestWithFailure(\n        bytes32, bytes calldata, IIntake.Callback calldata, bytes4, address asset, uint256 amount\n    ) external returns (bytes32) {\n        require(ExcludedSellerAsset(asset).transferFrom(msg.sender, address(this), amount));\n        return bytes32(uint256(1));\n    }\n\n    function requests(bytes32) external pure returns (address, address, bytes4, bool) {\n        return (address(0), address(0), bytes4(0), false);\n    }\n}\n\n/// @dev A fixed, valid approval isolates the pending-objection/ownership transition.\n/// No Tribunal state or Seasons exclusion is mocked.\ncontract ExcludedSellerGate {\n    uint256 public constant SEASON = 18000;\n    uint64 public immutable startedAt;\n    address public immutable seller;\n    address public immutable oracleSigner;\n    address public immutable intake;\n\n    constructor(address seller_, address signer_, address intake_) {\n        seller = seller_;\n        oracleSigner = signer_;\n        intake = intake_;\n        startedAt = uint64(block.timestamp);\n    }\n\n    function result(uint256 id) external view returns (address, uint8, bool, uint64) {\n        return (seller, 45, id == 1, startedAt);\n    }\n\n    function getPlea(uint256) external view returns (CabalGate.Plea memory p) {\n        p.seller = seller;\n        p.need = 35;\n        p.score = 45;\n        p.status = CabalGate.Status.Approved;\n        p.verdictAt = startedAt;\n        p.text = \"A small sale for rent; I keep the rest.\";\n    }\n\n    function question(uint256) external pure returns (string memory) {\n        return \"Score this approved plea again from 0 to 45.\";\n    }\n}\n\ncontract ExcludedSellerLaunch {\n    PLEA public plea;\n    ExcludedSellerGate public gate;\n    Seasons public seasons;\n    ExcludedSellerAsset public imd;\n    ExcludedSellerAsset public oracleAsset;\n    bool public constant mintOracleFee = true;\n    address public tribunal;\n\n    constructor(address owner, address seller, address signer) {\n        imd = new ExcludedSellerAsset();\n        oracleAsset = new ExcludedSellerAsset();\n        gate = new ExcludedSellerGate(seller, signer, address(new ExcludedSellerIntake()));\n        plea = new PLEA(owner);\n        seasons = new Seasons(address(plea), address(gate), address(imd), address(0));\n        plea.setLauncher(address(gate), address(seasons), address(this));\n    }\n\n    function deployTribunal(bytes memory code) external returns (Tribunal t) {\n        address created;\n        assembly (\"memory-safe\") { created := create(0, add(code, 32), mload(code)) }\n        require(created != address(0), \"Tribunal deployment failed\");\n        tribunal = created;\n        return Tribunal(created);\n    }\n}\n\ncontract Run7ExcludedSellerFindingTest is Test {\n    function test_pendingObjectionMustNotHoldSellerAfterAcceptedOwnershipTransfer() public {\n        vm.chainId(11155111);\n        vm.warp(1792162800);\n        address owner = makeAddr(\"initial owner\");\n        address seller = makeAddr(\"approved seller\");\n        address objector = makeAddr(\"eligible objector\");\n        ExcludedSellerLaunch launch = new ExcludedSellerLaunch(owner, seller, makeAddr(\"oracle signer\"));\n        Tribunal tribunal = launch.deployTribunal(vm.getCode(\"Tribunal.sol:Tribunal\"));\n        Seasons seasons = launch.seasons();\n        PLEA plea = launch.plea();\n        ExcludedSellerAsset imd = launch.imd();\n        imd.mint(objector, 0.35e18);\n        vm.prank(objector);\n        imd.approve(address(tribunal), 0.35e18);\n        vm.prank(objector);\n        uint256 objectionId = tribunal.object(1, \"This plea is boilerplate and deserves another panel.\");\n        assertEq(uint8(tribunal.objection(objectionId).ruling), uint8(Tribunal.Ruling.Pending));\n        (bool held,,) = tribunal.standing(1);\n        assertTrue(held);\n\n        vm.prank(owner);\n        plea.transferOwnership(seller);\n        assertFalse(seasons.excluded(seller), \"a mere nomination is not exclusion\");\n        vm.prank(seller);\n        plea.acceptOwnership();\n        assertTrue(seasons.excluded(seller));\n        assertEq(tribunal.status(1), unicode\"Plea #1 · seller excluded: no points, nothing to object to\");\n        vm.expectRevert(Seasons.OwnerExcluded.selector);\n        seasons.record(1);\n\n        (held,,) = tribunal.standing(1);\n        assertFalse(held, \"an excluded seller's plea must never be held, including after ownership acceptance\");\n    }\n}","reproduction":"Save the self-contained proof as test/ExcludedSellerRegression.t.sol and run forge test --match-path test/ExcludedSellerRegression.t.sol --match-test test_pendingObjectionMustNotHoldSellerAfterAcceptedOwnershipTransfer. On local chain 11155111 at timestamp 1792162800, plea 1 is an approved score-45 plea with need 35. An eligible second wallet stakes 0.35 IMD and files an objection. Before its 20-minute expiry, the current PLEA owner nominates the seller and the seller calls acceptOwnership. Expected: Seasons.excluded(seller)=true and Tribunal.standing(1).held=false. Actual: excluded=true, status says the seller is excluded, Seasons.record reverts OwnerExcluded, but standing returns (true,false,255). The supplied proof was executed under the verifier's fuzz seed and fails only at the final assertFalse. A separate local integration reproduction using the real CabalGate, PleaLaunch, PleaHook and PoolManager also failed at the same held assertion after a real score-45 approval and ownership transfer.","severity":"low","title":"Pending objections keep a newly excluded seller marked as held after ownership acceptance"}],"hash":"5c7e5d5fa58d818d70f489ea61b0961275a8e0a2b79c4f8a11b9ac684593e702","nodeId":"b524e1e0-9b75-4fde-af77-b5b2e8a78307","outcome":"completed","summary":"Added failure-path tests and randomized invariants for distributor ownership, seat accounting, and objections.\n\nValidation with the supplied seed: build passed, 621 default tests passed, and 129 full-profile tests passed. Two fork checks skipped without RPC URLs.\n\nReported one confirmed low-severity Tribunal standing bug with a failing proof in `.imd-findings.json`.","treeHash":"b2c5005781cd43b12a0a8a6fc305062276cd71c3","usage":{"cachedInputTokens":6184192,"inputTokens":162384,"model":"gpt-6-astra","outputTokens":44972,"runtime":"codex","turns":13,"wallClockMs":1987065}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"72f49cf84b9ab056","findings":[{"citation":"resolved","description":"Contracts read line by line: src/PLEA.sol, src/PleaLaunch.sol, src/PleaDistributor.sol, src/CabalGate.sol, src/Seasons.sol, src/Tribunal.sol, src/Letterbox.sol, src/PleaHook.sol, src/OracleAttestation.sol, src/interfaces/IPleaParts.sol. Checked against the Pashov SOP (access control, value flow, reentrancy, rounding, time windows, signatures, external dependencies) and the launch's forbidden list: no minting after init (PLEA.init is launcher-only and once; the 82/6/12 split is exact), no pause/freeze/blacklist/seize (the only holder restriction is the Cabal's sell gate, which ends for good at the dead-man), no DELEGATECALL/CALLCODE/SELFDESTRUCT, no proxies or initializers (every setting is a constructor argument or read from the committed deployer; setLauncher/setLetterbox/init are launcher-only one-shots the brief keeps). Run-7 items verified in code: Letterbox._deliver takes the 0.35 IMD fee only when the plea's flags lack BY_LETTER (line 405) and keeps the 0.70 IMD floor for both paths (lines 294, 345); LetterTooLong(bytes, 280) at line 477; Seasons.pointsFor = score * 12000 / 10000 floored, via a 100,000-gas staticcall that cannot block a record (lines 133-144), with the 60-point bar and the Tribunal's need comparison unchanged; PleaHook.OWNER_BPS 75 with IMD_FEE_BPS 175 and PLEA_BURN_BPS 25 (2.0% in all); CAP_DECAY_DAYS 15; PleaDistributor is Ownable2Step and renounceOwnership reverts RootNotSet until the root is set; the fact score bands (16/9/3, 7/4/2, 13/8/3/0, 9/5/0, max 45), PASS_MARK 71 and CannotPass above 45; LETTER_SHARE_BPS 1500; Tribunal OBJECTION_WINDOW 20 min, STAKE 0.35e18, ORACLE_FEE 0.5e18, MARGIN 2, MAX_OBJECTIONS 2 with SameObjector, sustained iff newScore + 2 < need, stake back on sustained/void and to Seasons.checkpointObjection on overruled (booked to the plea's season), rulings never touch lastVerdictAt. Timing: the worst case record (verdict at a season's last second, an objection ruled at +19:59 and a second filed at +20:00 pending to +40:00) ends inside Seasons.CLOSE_GRACE (1 hour), so a plea cannot be locked out of its season by the objection timeline. launch.json: keys kind/contracts/notes only, 5 unique names, argument counts 1/7/4/2/13 match the constructors in order, the 12th and 13th PleaLaunch arguments equal keccak256 of the built Letterbox (0x3c7c...235c) and Tribunal (0x562d...5665) creation code, notes under 4,000 characters. Runtime sizes from the build: CabalGate 24,493, PleaHook 24,358, Letterbox 23,229, Tribunal 20,116, Seasons 12,473 bytes. Test groups run clean: LaunchManifest, TribunalSeasons, SeatMultiplier (30 tests, 0 failed). Not reached: the live Sepolia Intake v2 (0xa43e...DE82), Stacker (0x0457...314d), TestIMD (0x2B69...1E82), the oracle-fee test token (0x44a1...F89A) and the IMD seat NFT (0xA044...287F) are external code whose behaviour (request ids, completion semantics, credit) the contracts trust; the fork suites (test/fork) were not run (no RPC), and the invariant/adversarial suites under FOUNDRY_PROFILE=full were not re-run within the time budget. Documented trust assumptions, not defects: PLEA's owner may add exempt senders (allow, add-only) and holds the early-seed power; PLEA.setLauncher accepts any first caller in PLEA's deployment block (the atomic factory transaction closes it, as the brief requires); the oracle signer decides every verdict and objection; PleaDistributor's owner sets the single Merkle root.","line":30,"path":"src/PleaLaunch.sol","reproduction":"Not a defect. Evidence commands: forge build --skip test --skip script (clean); cast keccak of out/Letterbox.sol/Letterbox.json and out/Tribunal.sol/Tribunal.json bytecode.object equals launch.json arguments 12 and 13; forge test --match-path 'test/{LaunchManifest,TribunalSeasons,SeatMultiplier}.t.sol' passes 30/30.","severity":"info","snippet":"contract PleaLaunch {","title":"Coverage: all nine src contracts read in full; no reproducible defect found in the run-7 batch or the Tribunal; live Sepolia dependencies not reached"}],"hash":"8f39decd1afa79b0a25704c41e9dfee647f569ade7eacc39d61af592101275d3","nodeId":"5c7700e0-87c4-4c5a-95fa-5f1258abfade","outcome":"completed","summary":"The review is complete and the findings file is written. No tracked file was changed.\n\n**Outcome:** no reproducible defect found in the run-7 code. The findings file holds one informational entry recording coverage, the verified run-7 behaviours, and the trust assumptions.\n\n**What was read in full:** all nine contracts under `src/` plus the interfaces. Each was checked against the Pashov checklist and the launch's forbidden list. There is no post-launch minting, pausing, blacklisting or seizing, no delegatecall or selfdestruct, and no proxy or initializer.\n\n**Run-7 items confirmed in code:**\n- Letters pay no auto-sell fee; only a plea without the BY_LETTER flag does, and the 0.70 IMD floor holds for both paths.\n- Over-long letters revert with LetterTooLong(bytes, 280).\n- Seat multiplier is score times 1.2 floored, read through a gas-capped staticcall that cannot block a record.\n- Owner fee 0.75% with 2.0% total, cap decay 15 days, distributor Ownable2Step with renounce blocked before the root.\n- Fact-score bands, PASS_MARK 71, letter share 15%, and every Tribunal number match the brief.\n\n**Checks run:**\n\n| Check | Result |\n|---|---|\n| Source build under via_ir | clean |\n| Letterbox and Tribunal creation-code hashes vs launch.json | match |\n| Runtime sizes vs the brief's five figures | match |\n| LaunchManifest, TribunalSeasons, SeatMultiplier suites | 30 passed, 0 failed |\n\n**Not reached:** the live Sepolia Intake, Stacker, TestIMD, oracle-fee token and seat NFT are external code the contracts trust. The fork suites need RPC URLs, and the full-profile invariant and adversarial suites were not re-run within the time budget.","treeHash":null,"usage":{"cachedInputTokens":1072818,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":28452,"runtime":"claude","turns":19,"wallClockMs":432058}},{"artifacts":[],"attempt":1,"bundleHash":"fc43fc29980deb2103dc6471b02987a8984f94e3f6d2d75d8031e85bcf9208a7","device":"09078b7cdfb673fe","findings":[],"hash":"90df83489f2db25adefbe1461f8e5b549bbd13aab4278f908df4d6125863d125","nodeId":"9129c126-7496-4be4-b8b5-757c94f25c2d","outcome":"completed","summary":"","treeHash":"3ce16df8fde61c81646c675360c9c09e94ff076f","usage":{"cachedInputTokens":3302364,"inputTokens":1380,"model":"claude-fable-5-1","outputTokens":42317,"runtime":"claude","turns":61,"wallClockMs":2247555}},{"artifacts":[],"attempt":2,"bundleHash":null,"device":"ea62f3bebece9304","findings":[],"hash":"ad785847fffa9da04effb097df2b0582ad77d649ee280dae2c548a42534f02a7","nodeId":"09cea72d-d9a9-4741-b212-8247eb204ee4","outcome":"failed","summary":"the local build failed, so this was not submitted:\nforge build exited with 143:\nCompiling 152 files with Solc 0.8.26","treeHash":null,"usage":{"cachedInputTokens":853599,"inputTokens":40,"model":"claude-opus-5-5","outputTokens":8352,"runtime":"claude","turns":20,"wallClockMs":865005}},{"artifacts":[],"attempt":3,"bundleHash":null,"device":"8ad841cd6518a96e","findings":[],"hash":"c13a5d09fbb529a9d9737d20c782b69615f5635289909ce36b3811b4e7cbd0a3","nodeId":"09cea72d-d9a9-4741-b212-8247eb204ee4","outcome":"failed","summary":"git checkout -B imd-submission failed: ","treeHash":null,"usage":{"cachedInputTokens":3854080,"inputTokens":98617,"model":"gpt-6-astra","outputTokens":23855,"runtime":"codex","turns":18,"wallClockMs":1893937}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"f20ec62b0213db3f","findings":[{"citation":"resolved","description":"Seam boundary x precision. `_deliver` computes `minOut` as 95% of the escrow's gross value at the hourly snapshot (`latestPrice`, the pre-trade price of the hour's first trade) and passes it to `CabalGate.executeSellFor`, which compares it with `out`, the IMD the gate receives from the pool. That `out` is already net of the hook's 0.25% PLEA burn on the input, the 1.75% IMD fee on the output and the sale's own price impact (about 0.6% for a 2.5M PLEA sale on the seeded band), so at spot == snapshot a delivery pays about 97.8% of the snapshot value (measured: 9,784 bps for a 15% letter on the default fixture). The floor therefore leaves only about 2.8 percentage points of room: once spot sits ~2.9% or more under the hour's opening price every `deliver` and the writer's own `SELL` revert `SlippageExceeded`, the 7-minute window lapses, the plea is `Lapsed` (4-hour cooldown from the verdict, 0.5 IMD oracle fee spent) and the writer cannot sell by hand (`executeSell` reverts `UseLetterbox` for an AUTO_SELL plea). audit/FINDINGS.md R3-A2-3 records the limit as \"an auto-sell plea cannot be sold while spot sits more than 5% under the snapshot\", which is the gross-vs-gross figure, not the gross-vs-net one the code enforces. Five approved 2.5M PLEA sales in one hour (each ~0.6% of price) are enough to put the sixth letter's delivery out of reach. Fix options that keep every agreed number: compare the floor against the gross pool fill (out before the hook's IMD fee, i.e. `out * BPS / (BPS - IMD_FEE_BPS)`) or document the effective ~3% tolerance; either way the 95% number stays.","line":396,"path":"src/Letterbox.sol","reproduction":"test/scratch/DeliveryTolerance.t.sol (Fixture, default orientation): alice buys 50 IMD, skips a day, sends a letter (15% of her PLEA escrowed), the oracle answers 45. (1) `deliver(id)` at spot == snapshot pays out/gross = 9,784 bps, so the margin to the 9,500 bps floor is 2.84%. (2) Mock `PleaHook.latestPrice()` to spot * 1.032 (a 3.2% dip since the hour's first trade): `letterbox.deliver(id)` reverts `CabalGate.SlippageExceeded(out, minOut)`; at spot * 1.015 it delivers. Expected per FINDINGS R3-A2-3: delivery possible until spot is more than 5% under the snapshot. Actual: blocked from ~2.9%. Both tests pass on the current code (they measure the behaviour); the 7-minute lapse then follows as in test/Letterbox.t.sol test_deliverNeedsAnApprovalInsideTheWindowAndTheMinimum.","severity":"low","snippet":"        uint256 minOut = FullMath.mulDiv(amount, _price(), FixedPoint96.Q96) * MIN_OUT_BPS / BPS;","title":"Letterbox delivery floor tolerates only a ~2.8% intra-hour dip, not the documented 5%: the 95% floor is taken on the gross snapshot value but compared with the sale net of the hook's 2% fees and impac"}],"hash":"dc2fc12fc2394b376a1f6d70201509314f4b51262dc8a5d24a197cd1ed4ed5e1","nodeId":"4b28c1ea-e7ff-4773-8fd1-8964f86002ea","outcome":"completed","summary":"Findings file is complete and valid. Final recap:\n\n**Scope covered.** I audited the arithmetic of all nine contracts against the Pashov Math Precision, Boundary and Numerical Gap guides: fee splits and their rounding at dust sizes, the fact-score bands and need, the Letterbox's escrow, fee-cap and floor clamps, the Seasons prize and bonus shares, the cap ratchet and wall-guard remainder math, the hourly ring, and the Tribunal's margin rule. Where reading left doubt I swept the numbers in Python and ran Foundry scratch tests under `test/scratch/` (nothing there is kept).\n\n**Result: one Low, no Medium or higher.**\n\n- **Low, `src/Letterbox.sol:396`.** The delivery floor is 95% of the escrow's gross snapshot value, but the gate compares it with the sale net of the hook's 2% fees and the price impact. At spot equal to the snapshot a delivery pays 97.84% of the snapshot value, so the floor tolerates only a ~2.8% intra-hour dip. The ledger's R3-A2-3 note says 5%. A 3.2% dip makes `deliver` and `SELL` revert `SlippageExceeded`, and the approval then lapses with the oracle fee spent and a 4-hour cooldown. A fix that keeps the 95% number is to measure the floor against the gross pool fill, or to document the effective tolerance.\n\n**What held.** The hook's IMD fee always covers cashback, owner and prize shares for every fill size at every launch rate (swept exact-in and exact-out fills of 1 to 200,000 wei). The 25 prize shares sum to exactly 10,000 bps on the 450-to-350 line. Every timing boundary (`>` versus `<=`) is consistent between the gate, the Letterbox, the Tribunal and Seasons. The season accounting cannot underflow, late fees after the death land in the last season, and the letter fee cap still admits a letter with the snapshot 8.5% above spot on the Sepolia path.\n\n**Coverage.** All 57 listed entry points have a row, 55 `holds`, 2 `finding` (the delivery path), plus three invariant rows. Not reached in depth: the fork and invariant suites under the full profile, and the mainnet fee path beyond the existing round tests.","treeHash":null,"usage":{"cachedInputTokens":2792784,"inputTokens":482,"model":"claude-fable-5-1","outputTokens":56208,"runtime":"claude","turns":35,"wallClockMs":932023}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a74f2bc0ce11ed16","findings":[],"hash":"e8c7fda071fd158976e3f0e92bbc9b2f638100d1bbed8d498b4085b4c84fe967","nodeId":"09cea72d-d9a9-4741-b212-8247eb204ee4","outcome":"failed","summary":"the local build failed, so this was not submitted:\nforge build exited with 143:\nCompiling 152 files with Solc 0.8.26","treeHash":null,"usage":{"cachedInputTokens":2148096,"inputTokens":140361,"model":"gpt-6-astra","outputTokens":15965,"runtime":"codex","turns":13,"wallClockMs":1653012}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"66ceb1fcb4b0b455","findings":[],"hash":"fc4ec7fb341d6df0a172409d5440a2e7f733f84924972f091fb4e8bf15b82ee2","nodeId":"3f1acb7f-b0de-4226-bd5d-0a415f35fa12","outcome":"completed","summary":"I found no defects I could reproduce. `.imd-findings.json` is written with an empty findings list and one coverage row for each of the 56 entry points, plus two invariant rows. I changed no other files and wrote no scratch tests, since there was nothing to prove.\n\n**Coverage:** 54 entry points are marked `holds` and 2 `unreached`:\n- **`unreached`:** `PleaHook.rebalance()` and the rebalance branch of `PleaHook.unlockCallback`. I didn't trace them within the time.\n- **Hook swap callbacks:** `beforeSwap` and `afterSwap` are marked `holds` for control flow only: how the trader and fee are passed between them, sells allowed only from the gate, exact-output buys refused while the Cabal lives, and when the hourly price snapshot is taken. I did not re-check the fee and cap arithmetic; that belongs to the math and economics reviewers.\n\n**What I traced in depth (Execution Trace, Periphery, First Principles):**\n- **Plea, appeal and sale flow:** pleas and appeals in the gate are scored before the fee swap, so the fee sale can't move the balance or buy record being scored. Callbacks are accepted only from the Intake and only for a pending request. A sale's status is updated before its swap, and a gate swap callback runs only when the gate expects one.\n- **Letterbox:** each escrow is closed before any payout. Letters pay no 0.35 IMD auto-sell fee, the site's auto-sell box does, and the 0.70 IMD floor applies to both. An over-long letter is refused with `LetterTooLong`, and appeal amounts are clamped to the original's share of the balance.\n- **Tribunal and Seasons:**\n  - The 1-hour grace before a season can close covers the 20-minute objection window plus a 20-minute pending objection.\n  - An overruled stake is booked to the plea's own season.\n  - The recorded score is the lowest any panel gave, and a sustained objection blocks the points.\n  - A caller can't use a tight gas limit to make the Tribunal, launcher or seat-NFT read fail and still finish the record. Too little gas would be left for the rest of it.\n- **Accounting:** the prize pot's balance never falls below what Seasons has booked. The PLEA bonus burns are bounded by what Seasons holds.\n- **Periphery:** the gate's hand-written number and address formatting and its text escaping are correct. The distributor's leaves are 84 bytes, so they can't be confused with the tree's 64-byte inner nodes. The launcher's address hashing has a single variable-length input, so the static-analysis \"hash collision\" warning doesn't apply.\n- **Launch wiring:** registration with PLEA, the committed-code checks for the hook, Letterbox and Tribunal, and `seed`'s rule that the current PLEA owner may open trading early.\n\n**Static-analysis leads I rejected:**\n- The \"uninitialized\" storage maps and local variables are mappings and counters that start at zero on purpose.\n- The \"weak PRNG\" warnings are the hourly price ring's `% RING` indexing, not randomness.\n- The \"reentrancy\" warnings involve trusted contracts (PoolManager, Intake, IMD, PLEA) or paths that are already guarded.\n\n**One lead I left unreported:** `Seasons._standing` treats a Tribunal `standing()` call that reverts as \"not held\" with no lowest score. That call can only revert if the external Intake's `requests()` reverts while an objection is pending, and I couldn't make that happen with the Intake as it is.","treeHash":null,"usage":{"cachedInputTokens":1783952,"inputTokens":36,"model":"claude-opus-5-5","outputTokens":28257,"runtime":"claude","turns":21,"wallClockMs":312517}}],"verification":[{"checks":[{"durationMs":233942,"exitCode":0,"name":"build","output":"Compiling 155 files with Solc 0.8.26\nSolc 0.8.26 finished in 233.78s\nCompiler run successful with warnings:\nWarning (8760): This declaration has the same name as another declaration.\n   --> src/Tribunal.sol:322:9:\n    |\n322 |         uint8 status,\n    |         ^^^^^^^^^^^^\nNote: The other declaration is here:\n   --> src/Tribunal.sol:200:5:\n    |\n200 |     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:360:53:\n    |\n360 |     function _void(uint256 id, Objection storage o, uint8 status, bytes32 reason) internal {\n    |                                                     ^^^^^^^^^^^^\nNote: The other declaration is here:\n   --> src/Tribunal.sol:200:5:\n    |\n200 |     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:733:5:\n    |\n733 |     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":4848,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\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 1.19ms (431.16µ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: 1389033)\n[PASS] test_protocolSignatureRecoversToVectorSigner() (gas: 13943)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 1.44ms (623.27µs CPU time)\n\nRan 6 tests for test/SeatMultiplier.t.sol:SeatMultiplierTest\n[PASS] testFuzz_pointsNeverExceedScoreTimesOnePointTwo(uint8,bool) (runs: 32, μ: 45929, ~: 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 5.73ms (4.61ms CPU time)\n\nRan 3 tests for test/MainnetGuard.t.sol:MainnetGuardTest\n[PASS] test_manifestDeploysOnChainOneWithTheFastClock() (gas: 12661)\n[PASS] test_seedOpensOnAnyOtherChain() (gas: 600383)\n[PASS] test_seedRefusesTheFastClockOnChainOne() (gas: 50268)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 6.81ms (309.71µs CPU time)\n\nRan 2 tests for test/AuditRound1.t.sol:AuditRound1SeedOwnerTest\n[PASS] test_theFormerOwnerMayNotSeedEarly() (gas: 46393)\n[PASS] test_theNewPleaOwnerMaySeedEarly() (gas: 601790)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 8.80ms (336.62µs CPU time)\n\nRan 3 tests for test/Letterbox.t.sol:LetterboxMainnetPathTest\n[PASS] test_aMismatchedOracleAssetOrMintingThePoolImdIsRefused() (gas: 971058)\n[PASS] test_letterBuysTheOracleFeeAndTheTipWithPlea() (gas: 9361021)\n[PASS] test_mintingTheFeeIsRefusedOnMainnet() (gas: 962452)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 10.62ms (2.66ms CPU time)\n\nRan 3 tests for test/LaunchManifest.t.sol:RehearsalManifestTest\n[PASS] test_laterBlockCannotRegisterLauncher() (gas: 13932130)\n[PASS] test_separateConstructorCallsInDeploymentBlockStillWork() (gas: 15106679)\n[PASS] test_separateTransactionsLeaveTheAcceptedDeploymentBlockWindow() (gas: 14066504)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 10.71ms (5.69ms 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: 1361632)\n[PASS] test_walletsCannotSendWhileTheCabalWatches() (gas: 331356)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 8.88ms (443.85µs CPU time)\n\nRan 1 test for test/TribunalSeasons.t.sol:TribunalLateDeployTest\n[PASS] test_aPleaRecordedBeforeTheTribunalCannotBeObjectedTo() (gas: 13988818)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 8.85ms (2.32ms CPU time)\n\nRan 2 tests for test/ManifestInput.t.sol:ManifestInputTest\n[PASS] test_everyManifestWordDeploysAtomicallyAndCommitsTheTribunal() (gas: 22015752)\n[PASS] test_failedLastConstructorRollsBackAllEarlierDeploymentsAndCanRetry() (gas: 26909486)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 19.32ms (14.22ms CPU time)\n\nRan 3 tests for test/Letterbox.t.sol:OwnerExclusionTest\n[PASS] test_nobodyGetsAKeeperTip() (gas: 488562)\n[PASS] test_ownerPleasEarnNoPoints() (gas: 5070189)\n[PASS] test_theLaunchOwnerStaysExcludedAfterAHandover() (gas: 5198585)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 9.13ms (1.77ms CPU time)\n\nRan 30 tests for test/Orientation.t.sol:GatePleaIsZeroTest\n[PASS] test_appealClosesAfterFourHoursAndOnlyOnce() (gas: 11760225)\n[PASS] test_appealWithinFourHoursForNoMore() (gas: 9194271)\n[PASS] test_approvedScoreOpensTheSellWindow() (gas: 5751893)\n[PASS] test_badAttestationsAreNotDelivered() (gas: 4940963)\n[PASS] test_bodyIsTheNumericPanelQuestion() (gas: 4994046)\n[PASS] test_callbackFitsTheStipend() (gas: 8077201)\nLogs:\n  approve callback gas: 58981\n  deny callback gas: 83580\n\n[PASS] test_callbackOnlyFromIntakeAndOnlyForAPendingPlea() (gas: 5479861)\n[PASS] test_cannotPassIsRefusedBeforePaying() (gas: 1395466)\n[PASS] test_cooldownAfterExecutedSell() (gas: 8363915)\n[PASS] test_failedAppealCanBeRetried() (gas: 11725438)\n[PASS] test_failureAfterExpireIsRefused() (gas: 4928526)\n[PASS] test_failureClearsThePendingPleaWithoutCooldownOrClock() (gas: 7922610)\n[PASS] test_failureFitsTheMainnetGas() (gas: 4899464)\n[PASS] test_failureForAnUnknownOrSettledRequestDoesNothing() (gas: 5072066)\n[PASS] test_failureOnlyFromTheIntake() (gas: 4867986)\n[PASS] test_noPleasWhileTheCabalSleeps() (gas: 61844)\n[PASS] test_noVerdictIsClearedAtOnceWhenTheIntakeCompletes() (gas: 7905758)\n[PASS] test_onePendingPleaPerWallet() (gas: 4857362)\n[PASS] test_orientationIsPleaZero() (gas: 15963)\n[PASS] test_pendingExpiresAfterTwentyMinutesAndLateCallbacksFail() (gas: 7869263)\n[PASS] test_pleaAsksWithTheFailureFunction() (gas: 4821789)\n[PASS] test_pleaPaysTheIntakeAndNamesTheCallback() (gas: 4867825)\n[PASS] test_prizePleaOnTopOfAWeekOldBuy() (gas: 1793009)\n[PASS] test_refusalClearsThePleaToo() (gas: 4921364)\n[PASS] test_scoreAboveRangeOrWrongTypeIsRefused() (gas: 8008561)\n[PASS] test_scoreBelowNeedDenies() (gas: 5120303)\n[PASS] test_sellWindowLapses() (gas: 7938726)\n[PASS] test_signerWithDelegationCodeStillVerifies() (gas: 4954289)\n[PASS] test_textFilter() (gas: 5300558)\n[PASS] test_wrongSignerIsRefused() (gas: 4918488)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 27.46ms (20.65ms CPU time)\n\nRan 29 tests for test/Gate.t.sol:GateTest\n[PASS] test_appealClosesAfterFourHoursAndOnlyOnce() (gas: 11760203)\n[PASS] test_appealWithinFourHoursForNoMore() (gas: 9194225)\n[PASS] test_approvedScoreOpensTheSellWindow() (gas: 5751893)\n[PASS] test_badAttestationsAreNotDelivered() (gas: 4940941)\n[PASS] test_bodyIsTheNumericPanelQuestion() (gas: 4994024)\n[PASS] test_callbackFitsTheStipend() (gas: 8077179)\nLogs:\n  approve callback gas: 58981\n  deny callback gas: 83580\n\n[PASS] test_callbackOnlyFromIntakeAndOnlyForAPendingPlea() (gas: 5479861)\n[PASS] test_cannotPassIsRefusedBeforePaying() (gas: 1395466)\n[PASS] test_cooldownAfterExecutedSell() (gas: 8363893)\n[PASS] test_failedAppealCanBeRetried() (gas: 11725416)\n[PASS] test_failureAfterExpireIsRefused() (gas: 4928504)\n[PASS] test_failureClearsThePendingPleaWithoutCooldownOrClock() (gas: 7922610)\n[PASS] test_failureFitsTheMainnetGas() (gas: 4899442)\n[PASS] test_failureForAnUnknownOrSettledRequestDoesNothing() (gas: 5072066)\n[PASS] test_failureOnlyFromTheIntake() (gas: 4867986)\n[PASS] test_noPleasWhileTheCabalSleeps() (gas: 61844)\n[PASS] test_noVerdictIsClearedAtOnceWhenTheIntakeCompletes() (gas: 7905758)\n[PASS] test_onePendingPleaPerWallet() (gas: 4857362)\n[PASS] test_pendingExpiresAfterTwentyMinutesAndLateCallbacksFail() (gas: 7869241)\n[PASS] test_pleaAsksWithTheFailureFunction() (gas: 4821767)\n[PASS] test_pleaPaysTheIntakeAndNamesTheCallback() (gas: 4867803)\n[PASS] test_prizePleaOnTopOfAWeekOldBuy() (gas: 1792994)\n[PASS] test_refusalClearsThePleaToo() (gas: 4921364)\n[PASS] test_scoreAboveRangeOrWrongTypeIsRefused() (gas: 8008539)\n[PASS] test_scoreBelowNeedDenies() (gas: 5120303)\n[PASS] test_sellWindowLapses() (gas: 7938726)\n[PASS] test_signerWithDelegationCodeStillVerifies() (gas: 4954267)\n[PASS] test_textFilter() (gas: 5300558)\n[PASS] test_wrongSignerIsRefused() (gas: 4918488)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 31.30ms (20.93ms CPU time)\n\nRan 16 tests for test/SeasonFunds.t.sol:SeasonFundsTest\n[PASS] testFuzz_lateCloseConservesAssets(uint96,uint96,bool) (runs: 32, μ: 1218474, ~: 1178408)\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 31.70ms (30.01ms 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.99ms (1.63ms CPU time)\n\nRan 3 tests for test/AuditRound1.t.sol:AuditRound1MainnetAppealTest\n[PASS] test_aSmallWriterCanAppealByLetterAfterThePriceFell() (gas: 31030384)\n[PASS] test_aSmallWriterCanAppealByLetterOnMainnet() (gas: 10866194)\n[PASS] test_anAppealWhoseFeesDoNotFitTheBalanceIsRefusedAsFeeTooHigh() (gas: 29298606)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 35.55ms (25.10ms CPU time)\n\nRan 13 tests for test/TraderResolution.t.sol:TraderResolutionTest\n[PASS] testFuzz_dirtyHookDataFallsBackToRouterCaller(uint96,bool) (runs: 32, μ: 716539, ~: 703082)\n[PASS] test_dirtyHookDataAfterDeathBuyHasNoTrader() (gas: 487629)\n[PASS] test_dirtyHookDataFallsBackToRouterCallerWhileAlive() (gas: 735913)\n[PASS] test_dirtyHookDataWithoutFallbackWhileAliveRequiresRecipient() (gas: 82108)\n[PASS] test_dirtyHookDataWordFallsThrough() (gas: 1041733)\n[PASS] test_feeSurplusWithoutATraderIsBurnedOrKeptForThePool() (gas: 526956)\n[PASS] test_hookDataNamesTheTrader() (gas: 691907)\n[PASS] test_invalidHookDataFallsBackToTheRouterCaller() (gas: 2741601)\n[PASS] test_noTraderAfterDeathBuyGoesThroughWithoutCashback() (gas: 446120)\n[PASS] test_noTraderAfterDeathSellGoesThroughWithoutCashback() (gas: 582775)\n[PASS] test_routerCallerIsTheTraderWithoutHookData() (gas: 714832)\n[PASS] test_routerCallerStillCreditedAfterDeath() (gas: 637916)\n[PASS] test_routerWithoutMsgSenderNeedsHookDataWhileTheCabalLives() (gas: 149355)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 28.84ms (22.37ms CPU time)\n\nRan 12 tests for test/TribunalSeasons.t.sol:TribunalSeasonsTest\n[PASS] test_aLetterSellsDuringTheHoldAndItsPointsAreRecordedLater() (gas: 10662617)\n[PASS] test_aSustainedPleaIsNeverRecordedEvenByAClose() (gas: 9565860)\n[PASS] test_aVoidAtTheLastSecondLeavesNoRoomForASecondObjection() (gas: 13208504)\n[PASS] test_approvalInTheLastSecondIsRuledAndRecordedInsideTheGrace() (gas: 12861141)\n[PASS] test_closeListsAHeldPleaOfTheRunningSeasonWithoutReverting() (gas: 8457729)\n[PASS] test_closeSeasonSkipsHeldPleasAndRecordsThemLater() (gas: 12758977)\n[PASS] test_recordIsFreeOnceTheWindowClosesWithNoObjection() (gas: 5264176)\n[PASS] test_recordWaitsForTheWindowThenForAPendingObjection() (gas: 9715773)\n[PASS] test_seasonsFindsTheTribunalThroughTheLauncher() (gas: 51285)\n[PASS] test_theLetterboxStatusShowsHeldPendingAndSustainedPoints() (gas: 20723209)\n[PASS] test_theTimingBoundHoldsInsideTheCloseGrace() (gas: 15530)\n[PASS] test_twoRulingsAtTheEdgeStayInsideTheGrace() (gas: 16672347)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 29.07ms (21.32ms CPU time)\n\nRan 3 tests for test/OracleReplay.t.sol:OracleReplayTest\n[PASS] testFuzz_oneSignedRequestCannotSettleTwoPleas(bool,bool) (runs: 32, μ: 8186188, ~: 8175622)\n[PASS] test_deniedRequestCannotBeResignedToApproveItsAppeal() (gas: 8588454)\n[PASS] test_invalidCallbackDoesNotConsumeTheRequest() (gas: 8034827)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 48.26ms (42.82ms CPU time)\n\nRan 30 tests for test/Orientation.t.sol:GateImdIsZeroTest\n[PASS] test_appealClosesAfterFourHoursAndOnlyOnce() (gas: 11760225)\n[PASS] test_appealWithinFourHoursForNoMore() (gas: 9193922)\n[PASS] test_approvedScoreOpensTheSellWindow() (gas: 5751568)\n[PASS] test_badAttestationsAreNotDelivered() (gas: 4940963)\n[PASS] test_bodyIsTheNumericPanelQuestion() (gas: 4994046)\n[PASS] test_callbackFitsTheStipend() (gas: 8077201)\nLogs:\n  approve callback gas: 58981\n  deny callback gas: 83580\n\n[PASS] test_callbackOnlyFromIntakeAndOnlyForAPendingPlea() (gas: 5479861)\n[PASS] test_cannotPassIsRefusedBeforePaying() (gas: 1396207)\n[PASS] test_cooldownAfterExecutedSell() (gas: 8363590)\n[PASS] test_failedAppealCanBeRetried() (gas: 11725438)\n[PASS] test_failureAfterExpireIsRefused() (gas: 4928526)\n[PASS] test_failureClearsThePendingPleaWithoutCooldownOrClock() (gas: 7922610)\n[PASS] test_failureFitsTheMainnetGas() (gas: 4899464)\n[PASS] test_failureForAnUnknownOrSettledRequestDoesNothing() (gas: 5072066)\n[PASS] test_failureOnlyFromTheIntake() (gas: 4867986)\n[PASS] test_noPleasWhileTheCabalSleeps() (gas: 61844)\n[PASS] test_noVerdictIsClearedAtOnceWhenTheIntakeCompletes() (gas: 7905758)\n[PASS] test_onePendingPleaPerWallet() (gas: 4857362)\n[PASS] test_orientationIsImdZero() (gas: 13703)\n[PASS] test_pendingExpiresAfterTwentyMinutesAndLateCallbacksFail() (gas: 7869263)\n[PASS] test_pleaAsksWithTheFailureFunction() (gas: 4821789)\n[PASS] test_pleaPaysTheIntakeAndNamesTheCallback() (gas: 4867825)\n[PASS] test_prizePleaOnTopOfAWeekOldBuy() (gas: 1794405)\n[PASS] test_refusalClearsThePleaToo() (gas: 4921364)\n[PASS] test_scoreAboveRangeOrWrongTypeIsRefused() (gas: 8008561)\n[PASS] test_scoreBelowNeedDenies() (gas: 5120303)\n[PASS] test_sellWindowLapses() (gas: 7938726)\n[PASS] test_signerWithDelegationCodeStillVerifies() (gas: 4954289)\n[PASS] test_textFilter() (gas: 5300558)\n[PASS] test_wrongSignerIsRefused() (gas: 4918488)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 51.29ms (19.80ms CPU time)\n\nRan 17 tests for test/AuditRound1.t.sol:AuditRound1Test\n[PASS] test_aCheckpointOlderThanTwoDaysIsNoDayOldReference() (gas: 1831944)\n[PASS] test_aCreditThatPullsNothingLeavesNoAllowance() (gas: 1120430)\n[PASS] test_aDustFirstBuyDoesNotConsumeTheFirstBuyException() (gas: 1863003)\n[PASS] test_aDustTradeInTheCurrentHourDoesNotEvictTheDayOldReference() (gas: 12204806)\n[PASS] test_aFlashTakenPoolManagerCannotStripThePayouts() (gas: 2866126)\n[PASS] test_aPleaOfTheWholeBalanceIsRefusedAsFeeTooHigh() (gas: 815604)\n[PASS] test_aPriceLimitedExactOutputTradeRevertsInsteadOfAShortDelta() (gas: 1525023)\n[PASS] test_aStalePendingLetterSaysToSettle() (gas: 6641811)\n[PASS] test_appealAutoOfASubFloorGatePleaIsRefused() (gas: 9933147)\n[PASS] test_exactOutputFeeSaleSplitsTheFeeOnTheFill() (gas: 6407021)\n[PASS] test_lapsedStatusCarriesTheEscrowNote() (gas: 6705201)\n[PASS] test_partialFillWithoutATraderRefundsTheRouter() (gas: 1024624)\n[PASS] test_rebalancePlacesNoWallAtASellerChosenDrainedTick() (gas: 2252966)\n[PASS] test_recordedPointsAreShownAsCounted() (gas: 7763908)\n[PASS] test_theOwnersTwoImdOpeningBuyClosesTheOpeningException() (gas: 1582371)\n[PASS] test_zeroFillSwapsInTheEmptyRegionDoNotDragTheReferenceTick() (gas: 5820762)\n[PASS] test_zeroRootIsRefused() (gas: 34916)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 58.09ms (47.07ms CPU time)\n\nRan 7 tests for test/AuditImported.t.sol:AuditImportedPaidFeeTest\n[PASS] test_appealLetterRetriesCompletedRequestWithFailedCallback() (gas: 12952281)\n[PASS] test_appealLetterRetriesLazyTimeoutWithoutSeparateSettlement() (gas: 12885579)\n[PASS] test_autoAppealSurvivesBalanceGrowth() (gas: 9469212)\n[PASS] test_growingBalanceDoesNotEnableDustOrLargerAppeals() (gas: 8665667)\n[PASS] test_rawAppealLetterSurvivesBalanceGrowth() (gas: 9491843)\n[PASS] test_shrinkingBalanceStillUsesCurrentMinimumAndMaximum() (gas: 8265799)\n[PASS] test_siteAppealSurvivesBalanceGrowthAtOriginalMinimum() (gas: 8568723)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 32.13ms (18.71ms CPU time)\n\nRan 23 tests for test/Tribunal.t.sol:TribunalMainnetFeeTest\n[PASS] test_aStalePendingObjectionIsVoidedByTheNextObjector() (gas: 20401949)\n[PASS] test_aStalePendingObjectionNeverHoldsPastTheWindow() (gas: 17702471)\n[PASS] test_aSustainClosesTheCase() (gas: 9408682)\n[PASS] test_anExcludedSellersPleaCannotBeObjectedTo() (gas: 5992789)\n[PASS] test_anExcludedSellersPleaIsNeverHeld() (gas: 5695595)\n[PASS] test_atMostTwoRulingsFromDifferentWallets() (gas: 13674677)\n[PASS] test_callbackFitsTheIntakesGasBudget() (gas: 9262516)\nLogs:\n  gate verdict callback gas: 58981\n  tribunal ruling callback gas: 83885\n\n[PASS] test_executedAndLapsedApprovalsCanBeObjectedTo() (gas: 17315213)\n[PASS] test_expireByTimeAndByACompletedRequest() (gas: 16830100)\n[PASS] test_marginEdge() (gas: 16878889)\n[PASS] test_onlyApprovedPleasCanBeObjectedTo() (gas: 7884617)\n[PASS] test_overruledAboveTheOriginalKeepsTheOriginalScore() (gas: 9545800)\n[PASS] test_overruledObjectionLowersTheScoreToTheLowestPanelAndFeedsThePot() (gas: 9801731)\n[PASS] test_questionAndBody() (gas: 14750075)\n[PASS] test_rulingsNeverResetTheDeadMan() (gas: 9264298)\n[PASS] test_settleNeedsARuling() (gas: 9135989)\n[PASS] test_statusText() (gas: 17393073)\n[PASS] test_sustainedObjectionLeavesNoPointsAndReturnsTheStake() (gas: 9635005)\n[PASS] test_textRules() (gas: 9234130)\n[PASS] test_theObjectorPaysFeeAndStakeInImd() (gas: 9124710)\n[PASS] test_theSellerAndTheOwnersCannotObject() (gas: 5406173)\n[PASS] test_voidObjectionReturnsTheStakeAndFreesTheSlot() (gas: 12980699)\n[PASS] test_windowEdges() (gas: 12563142)\nSuite result: ok. 23 passed; 0 failed; 0 skipped; finished in 69.02ms (56.70ms CPU time)\n\nRan 5 tests for test/LaunchManifest.t.sol:AtomicManifestTest\n[PASS] test_factoryDeploysExactManifestOnAnEmptySepoliaChain() (gas: 53584396)\nLogs:\n  five-contract launch transaction gas through IMD's factory: 13359301\n  gas limit with IMD's headroom: 16298347\n  margin to the 16,777,216 cap: 478869\n\n[PASS] test_launchJsonCommitsToThisLetterbox() (gas: 33949)\n[PASS] test_launchJsonCommitsToThisTribunal() (gas: 29190)\n[PASS] test_launchJsonEncodesOracleMintFlagAsStaticWord() (gas: 10916)\n[PASS] test_launchJsonNotesFitTheManifestCap() (gas: 8895)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 78.18ms (74.66ms CPU time)\n\nRan 9 tests for test/AuditRun5.t.sol:AuditRun5PleaFirstTest\n[PASS] testFuzz_markerPrefixesAreRefusedInAnyCase(uint16,bool,uint8) (runs: 32, μ: 67069, ~: 66856)\n[PASS] testFuzz_settlementAcrossTheBoundaryKeepsThePleasSeason(uint16) (runs: 32, μ: 9736414, ~: 9736414)\n[PASS] test_allNewPleaRoutesRefuseSellerWrittenObjectionMarkers() (gas: 778985)\n[PASS] test_appealRoutesAlsoRefuseForgedObjectionMarkers() (gas: 5655520)\n[PASS] test_lateSettlementFundsThePleasSeasonAndCheckpointsOtherDonations() (gas: 9945924)\n[PASS] test_onlyTheCommittedTribunalCanLabelAFundedApprovedStake() (gas: 5244711)\n[PASS] test_settlementAfterACloseGoesToRolloverOnce() (gas: 10234133)\n[PASS] test_similarWordsAndTruncatedPrefixesStillPass() (gas: 4779291)\n[PASS] test_twoFreshWalletRulingsStillCloseTheCaseAsRequired() (gas: 13588047)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 84.49ms (50.34ms CPU time)\n\nRan 29 tests for test/Letterbox.t.sol:LetterboxTest\n[PASS] testFuzz_namesAreUniqueIdempotentAndReleasedOnClear(uint256,uint8) (runs: 32, μ: 319782, ~: 315509)\n[PASS] test_aBareCommandWordIsNotAPlea() (gas: 6088261)\n[PASS] test_aLapsedApprovalSettlesAndStillCounts() (gas: 5676991)\n[PASS] test_anAppealOfAFloorSizedLetterIsNotRefused() (gas: 10759844)\n[PASS] test_anOverLongLetterIsRefusedByName() (gas: 5938926)\n[PASS] test_anyoneDeliversAnApprovalForTheTip() (gas: 6370233)\n[PASS] test_appealByLetterKeepsTheOriginalShareAndPaysTheWall() (gas: 10466656)\n[PASS] test_appealLetterRetriesAnAppealTheOracleNeverAnswered() (gas: 22093673)\n[PASS] test_autoSellFeeOnlyOnASaleAndNeverMoreThanHalfOfIt() (gas: 9969741)\n[PASS] test_deadCabalRefusesLettersButSettles() (gas: 5415885)\n[PASS] test_deliverNeedsAnApprovalInsideTheWindowAndTheMinimum() (gas: 6181267)\n[PASS] test_deployLetterboxRefusesOtherCode() (gas: 17261889)\n[PASS] test_expiredPendingPleaSettlesAfterTwentyMinutes() (gas: 5283493)\n[PASS] test_explorerLetterIsTheSameAsARawLetter() (gas: 13826843)\n[PASS] test_invalidNamesAndFailedRenamesPreserveTheOldReservation() (gas: 1339350)\n[PASS] test_leaderboardListsTheSeason() (gas: 6573755)\n[PASS] test_letterCommandsParse() (gas: 9021306)\n[PASS] test_letterPleadsFifteenPercentPaysFeesInPleaAndEscrows() (gas: 5366558)\n[PASS] test_letterRefusesEthTinyBalancesAndBadText() (gas: 1430290)\n[PASS] test_letterboxIsDeployedOnceFromTheCommittedCode() (gas: 521909)\n[PASS] test_noFunctionIdCanStartALetter() (gas: 948921)\n[PASS] test_noVerdictSettlesAtOnceAndTheNextLetterSettlesTheOldOne() (gas: 8745278)\n[PASS] test_settleReturnsEscrowAndTipAfterADenial() (gas: 5638137)\n[PASS] test_siteAutoSellPleadsAnyValidAmount() (gas: 10279577)\n[PASS] test_statusTellsEachState() (gas: 10555934)\n[PASS] test_strangersCannotUseTheCourtEntryPoints() (gas: 211057)\n[PASS] test_theGateRefusesAManualSaleOfAnEscrowedPlea() (gas: 5372821)\n[PASS] test_theSellLetterIsTheWritersOwnSale() (gas: 6202710)\n[PASS] test_theSitesAutoSellBoxPaysTheFeeAndALetterDoesNot() (gas: 10924139)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 98.64ms (82.25ms CPU time)\n\nRan 7 tests for test/AuditImported.t.sol:AuditImportedTest\n[PASS] test_appealLetterRetriesCompletedRequestWithFailedCallback() (gas: 13008274)\n[PASS] test_appealLetterRetriesLazyTimeoutWithoutSeparateSettlement() (gas: 12941572)\n[PASS] test_autoAppealSurvivesBalanceGrowth() (gas: 9505864)\n[PASS] test_growingBalanceDoesNotEnableDustOrLargerAppeals() (gas: 8676967)\n[PASS] test_rawAppealLetterSurvivesBalanceGrowth() (gas: 9528495)\n[PASS] test_shrinkingBalanceStillUsesCurrentMinimumAndMaximum() (gas: 8277099)\n[PASS] test_siteAppealSurvivesBalanceGrowthAtOriginalMinimum() (gas: 8580023)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 31.51ms (18.60ms CPU time)\n\nRan 18 tests for test/Orientation.t.sol:AuditRound1ImdIsZeroTest\n[PASS] test_aCheckpointOlderThanTwoDaysIsNoDayOldReference() (gas: 1834256)\n[PASS] test_aCreditThatPullsNothingLeavesNoAllowance() (gas: 1121370)\n[PASS] test_aDustFirstBuyDoesNotConsumeTheFirstBuyException() (gas: 1864984)\n[PASS] test_aDustTradeInTheCurrentHourDoesNotEvictTheDayOldReference() (gas: 12227274)\n[PASS] test_aFlashTakenPoolManagerCannotStripThePayouts() (gas: 2868469)\n[PASS] test_aPleaOfTheWholeBalanceIsRefusedAsFeeTooHigh() (gas: 816068)\n[PASS] test_aPriceLimitedExactOutputTradeRevertsInsteadOfAShortDelta() (gas: 1526673)\n[PASS] test_aStalePendingLetterSaysToSettle() (gas: 6644197)\n[PASS] test_appealAutoOfASubFloorGatePleaIsRefused() (gas: 9935507)\n[PASS] test_exactOutputFeeSaleSplitsTheFeeOnTheFill() (gas: 6409397)\n[PASS] test_lapsedStatusCarriesTheEscrowNote() (gas: 6707587)\n[PASS] test_orientationIsImdZero() (gas: 13901)\n[PASS] test_partialFillWithoutATraderRefundsTheRouter() (gas: 1025604)\n[PASS] test_rebalancePlacesNoWallAtASellerChosenDrainedTick() (gas: 2249993)\n[PASS] test_recordedPointsAreShownAsCounted() (gas: 7766078)\n[PASS] test_theOwnersTwoImdOpeningBuyClosesTheOpeningException() (gas: 1583936)\n[PASS] test_zeroFillSwapsInTheEmptyRegionDoNotDragTheReferenceTick() (gas: 5814073)\n[PASS] test_zeroRootIsRefused() (gas: 34916)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 108.26ms (48.31ms CPU time)\n\nRan 6 tests for test/TraderResolverBoundary.t.sol:TraderResolverBoundaryTest\n[PASS] testFuzz_malformedVaultDiscoveryDoesNotRevertOrTruncate(uint8,uint96) (runs: 256, μ: 162933, ~: 159048)\n[PASS] test_missingRevertingAndZeroVaultDiscoveryAllowsDeployment() (gas: 564784)\n[PASS] test_namedContractWalletIsAcceptedWhenItIsNotTheRouter() (gas: 21098)\n[PASS] test_plainWalletFallbackUsesSenderAndNeverTransactionOrigin() (gas: 62571)\n[PASS] test_plainWalletInfrastructureIsExcludedEvenWithoutCode() (gas: 45946)\n[PASS] test_vaultAddressIsCachedAndIsNotReadAgainDuringResolution() (gas: 169480)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 90.45ms (89.11ms CPU time)\n\nRan 19 tests for test/Hook.t.sol:HookTest\n[PASS] test_aBuyMustAffordTheCredit() (gas: 1261341)\n[PASS] test_aSellAboveTheCapIsTrimmedAndBurned() (gas: 1856252)\n[PASS] test_avgBuyTimeIsBuyWeighted() (gas: 1086290)\n[PASS] test_capDecayIsSetSoTheFloorIsReachableIn15Days() (gas: 22797)\n[PASS] test_capFollowsBuysAtMostOneDayOfDecayPerDay() (gas: 1827949)\n[PASS] test_everyFeeIsPaidInTheSameSwap() (gas: 1307923)\n[PASS] test_factScoreUsesCheckpointsNotSpot() (gas: 1681835)\n[PASS] test_firstBuyWithAnEmptyPoolSendsPayoutsToLiquidity() (gas: 577418)\n[PASS] test_freeTradingWhenTheCabalSleeps() (gas: 1118981)\n[PASS] test_hourlyCheckpointIsNotSetByTheTradeThatOpensTheHour() (gas: 1987336)\n[PASS] test_plainImdOnlyWhenTheCreditReverts() (gas: 1211651)\n[PASS] test_rebalanceRedeemsClaimsIntoTheWall() (gas: 4750766)\n[PASS] test_sellsAndExactOutputOnlyThroughTheGateWhileAlive() (gas: 754427)\n[PASS] test_stackerIsApprovedOnlyForTheCashbackBeingCredited() (gas: 1836865)\n[PASS] test_wallGuardDropsAtOnceAndRisesFourPercentADay() (gas: 34584932)\n[PASS] test_wallGuardIgnoresASellerChosenLimitReachedThroughAnEmptyPool() (gas: 2813781)\n[PASS] test_wallGuardIgnoresTheEmptyPoolsPriceLimit() (gas: 2788424)\n[PASS] test_wallGuardLagsAPumpAndCapsTheWall() (gas: 17134165)\n[PASS] test_wallGuardStillDropsAtOnceToASellerChosenLimitInsideTheBand() (gas: 33374968)\nSuite result: ok. 19 passed; 0 failed; 0 skipped; finished in 115.69ms (110.92ms CPU time)\n\nRan 22 tests for test/Tribunal.t.sol:TribunalTest\n[PASS] test_aStalePendingObjectionIsVoidedByTheNextObjector() (gas: 20501633)\n[PASS] test_aStalePendingObjectionNeverHoldsPastTheWindow() (gas: 17749021)\n[PASS] test_aSustainClosesTheCase() (gas: 9466294)\n[PASS] test_anExcludedSellersPleaCannotBeObjectedTo() (gas: 6017176)\n[PASS] test_anExcludedSellersPleaIsNeverHeld() (gas: 5695573)\n[PASS] test_atMostTwoRulingsFromDifferentWallets() (gas: 13765554)\n[PASS] test_callbackFitsTheIntakesGasBudget() (gas: 9295719)\nLogs:\n  gate verdict callback gas: 58981\n  tribunal ruling callback gas: 83885\n\n[PASS] test_executedAndLapsedApprovalsCanBeObjectedTo() (gas: 17359263)\n[PASS] test_expireByTimeAndByACompletedRequest() (gas: 16876628)\n[PASS] test_marginEdge() (gas: 16925439)\n[PASS] test_onlyApprovedPleasCanBeObjectedTo() (gas: 7918044)\n[PASS] test_overruledAboveTheOriginalKeepsTheOriginalScore() (gas: 9579003)\n[PASS] test_overruledObjectionLowersTheScoreToTheLowestPanelAndFeedsThePot() (gas: 9834934)\n[PASS] test_questionAndBody() (gas: 14783279)\n[PASS] test_rulingsNeverResetTheDeadMan() (gas: 9297501)\n[PASS] test_settleNeedsARuling() (gas: 9169214)\n[PASS] test_statusText() (gas: 17439623)\n[PASS] test_sustainedObjectionLeavesNoPointsAndReturnsTheStake() (gas: 9675960)\n[PASS] test_textRules() (gas: 9242924)\n[PASS] test_theSellerAndTheOwnersCannotObject() (gas: 5445991)\n[PASS] test_voidObjectionReturnsTheStakeAndFreesTheSlot() (gas: 13027226)\n[PASS] test_windowEdges() (gas: 12600876)\nSuite result: ok. 22 passed; 0 failed; 0 skipped; finished in 49.03ms (49.77ms CPU time)\n\nRan 20 tests for test/Orientation.t.sol:HookPleaIsZeroTest\n[PASS] test_aBuyMustAffordTheCredit() (gas: 1261341)\n[PASS] test_aSellAboveTheCapIsTrimmedAndBurned() (gas: 1856274)\n[PASS] test_avgBuyTimeIsBuyWeighted() (gas: 1086290)\n[PASS] test_capDecayIsSetSoTheFloorIsReachableIn15Days() (gas: 22797)\n[PASS] test_capFollowsBuysAtMostOneDayOfDecayPerDay() (gas: 1827949)\n[PASS] test_everyFeeIsPaidInTheSameSwap() (gas: 1307945)\n[PASS] test_factScoreUsesCheckpointsNotSpot() (gas: 1681835)\n[PASS] test_firstBuyWithAnEmptyPoolSendsPayoutsToLiquidity() (gas: 577440)\n[PASS] test_freeTradingWhenTheCabalSleeps() (gas: 1119003)\n[PASS] test_hourlyCheckpointIsNotSetByTheTradeThatOpensTheHour() (gas: 1987336)\n[PASS] test_orientationIsPleaZero() (gas: 15862)\n[PASS] test_plainImdOnlyWhenTheCreditReverts() (gas: 1211651)\n[PASS] test_rebalanceRedeemsClaimsIntoTheWall() (gas: 4750766)\n[PASS] test_sellsAndExactOutputOnlyThroughTheGateWhileAlive() (gas: 754427)\n[PASS] test_stackerIsApprovedOnlyForTheCashbackBeingCredited() (gas: 1836887)\n[PASS] test_wallGuardDropsAtOnceAndRisesFourPercentADay() (gas: 34584932)\n[PASS] test_wallGuardIgnoresASellerChosenLimitReachedThroughAnEmptyPool() (gas: 2813781)\n[PASS] test_wallGuardIgnoresTheEmptyPoolsPriceLimit() (gas: 2788467)\n[PASS] test_wallGuardLagsAPumpAndCapsTheWall() (gas: 17134165)\n[PASS] test_wallGuardStillDropsAtOnceToASellerChosenLimitInsideTheBand() (gas: 33374990)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 118.48ms (112.64ms CPU time)\n\nRan 9 tests for test/AuditRun5.t.sol:AuditRun5Test\n[PASS] testFuzz_markerPrefixesAreRefusedInAnyCase(uint16,bool,uint8) (runs: 32, μ: 66598, ~: 65589)\n[PASS] testFuzz_settlementAcrossTheBoundaryKeepsThePleasSeason(uint16) (runs: 32, μ: 9736414, ~: 9736414)\n[PASS] test_allNewPleaRoutesRefuseSellerWrittenObjectionMarkers() (gas: 778985)\n[PASS] test_appealRoutesAlsoRefuseForgedObjectionMarkers() (gas: 5655520)\n[PASS] test_lateSettlementFundsThePleasSeasonAndCheckpointsOtherDonations() (gas: 9945924)\n[PASS] test_onlyTheCommittedTribunalCanLabelAFundedApprovedStake() (gas: 5244711)\n[PASS] test_settlementAfterACloseGoesToRolloverOnce() (gas: 10234133)\n[PASS] test_similarWordsAndTruncatedPrefixesStillPass() (gas: 4779291)\n[PASS] test_twoFreshWalletRulingsStillCloseTheCaseAsRequired() (gas: 13588047)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 87.95ms (51.57ms CPU time)\n\nRan 12 tests for test/AuditRevision.t.sol:AuditRevisionPleaZeroTest\n[PASS] testFuzz_cumulativeCapDecayStaysWithinElapsedBudget(uint256) (runs: 32, μ: 4065963, ~: 4064239)\n[PASS] test_appealRetryClearsTimedOutPendingAppeal() (gas: 12409582)\n[PASS] test_deadCabalBuyWithoutARecipientSkipsTheCashback() (gas: 2109578)\n[PASS] test_dustBuyDoesNotGiveUntrackedTokensLossOrHoldingPoints() (gas: 1364669)\n[PASS] test_expiredAppealCanBeRetriedWithoutLiftingDenialCooldown() (gas: 12610462)\n[PASS] test_lapsedApprovalCannotBypassCooldown() (gas: 8948434)\n[PASS] test_largeBuyClaimsAreRedeemableAndNextBuyStacksNormally() (gas: 2191654)\n[PASS] test_lateCloseDoesNotPayFutureSeasonFees() (gas: 14174409)\n[PASS] test_sameSecondCapRatchetsCannotReuseFractionalBudget() (gas: 861372)\n[PASS] test_seasonClaimsArePaidAsImdAtClose() (gas: 10687722)\n[PASS] test_secondLargeBuyPreservesEveryPayee() (gas: 1251971)\n[PASS] test_unansweredAppealDoesNotExtendTheOriginalWindow() (gas: 9100946)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 128.95ms (133.35ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingPaidFeeTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7890869, ~: 7894949)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 7993888)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7881614)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23480146)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 133.58ms (114.84ms CPU time)\n\nRan 3 tests for test/LaunchManifest.t.sol:PostLaunchTest\n[PASS] test_committedHookDeploysLaterAndMintsOnlyTheFixedSplit() (gas: 28178291)\n[PASS] test_committedLetterboxDeploysLater() (gas: 10785474)\nLogs:\n  deployLetterbox transaction gas: 5575052\n\n[PASS] test_committedTribunalDeploysLater() (gas: 9697608)\nLogs:\n  deployTribunal transaction gas: 4910592\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 135.76ms (39.80ms CPU time)\n\nRan 11 tests for test/Seasons.t.sol:FastClockTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4929856)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236713)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 1755007)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 43823927)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5915465)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 1316974)\n[PASS] test_fastFullCycle() (gas: 80493724)\n[PASS] test_onlyApprovedPleasScore() (gas: 5039307)\n[PASS] test_secondSeasonScoresSeparately() (gas: 49160207)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 3619759)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 122299087)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 76.12ms (61.23ms CPU time)\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 460.82µs (346.02µs CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7926323, ~: 7930778)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 8027729)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7917442)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23587630)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 147.05ms (116.41ms CPU time)\n\nRan 20 tests for test/Orientation.t.sol:HookImdIsZeroTest\n[PASS] test_aBuyMustAffordTheCredit() (gas: 1262544)\n[PASS] test_aSellAboveTheCapIsTrimmedAndBurned() (gas: 1857536)\n[PASS] test_avgBuyTimeIsBuyWeighted() (gas: 1087873)\n[PASS] test_capDecayIsSetSoTheFloorIsReachableIn15Days() (gas: 22797)\n[PASS] test_capFollowsBuysAtMostOneDayOfDecayPerDay() (gas: 1829511)\n[PASS] test_everyFeeIsPaidInTheSameSwap() (gas: 1308875)\n[PASS] test_factScoreUsesCheckpointsNotSpot() (gas: 1683774)\n[PASS] test_firstBuyWithAnEmptyPoolSendsPayoutsToLiquidity() (gas: 578107)\n[PASS] test_freeTradingWhenTheCabalSleeps() (gas: 1119329)\n[PASS] test_hourlyCheckpointIsNotSetByTheTradeThatOpensTheHour() (gas: 1989646)\n[PASS] test_orientationIsImdZero() (gas: 13575)\n[PASS] test_plainImdOnlyWhenTheCreditReverts() (gas: 1212842)\n[PASS] test_rebalanceRedeemsClaimsIntoTheWall() (gas: 4751240)\n[PASS] test_sellsAndExactOutputOnlyThroughTheGateWhileAlive() (gas: 754937)\n[PASS] test_stackerIsApprovedOnlyForTheCashbackBeingCredited() (gas: 1838827)\n[PASS] test_wallGuardDropsAtOnceAndRisesFourPercentADay() (gas: 34664576)\n[PASS] test_wallGuardIgnoresASellerChosenLimitReachedThroughAnEmptyPool() (gas: 2813978)\n[PASS] test_wallGuardIgnoresTheEmptyPoolsPriceLimit() (gas: 2792414)\n[PASS] test_wallGuardLagsAPumpAndCapsTheWall() (gas: 17159433)\n[PASS] test_wallGuardStillDropsAtOnceToASellerChosenLimitInsideTheBand() (gas: 33453042)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 124.98ms (99.79ms CPU time)\n\nRan 2 tests for test/TribunalOracleBoundary.t.sol:TribunalProtocolVectorTest\n[PASS] test_canonicalProtocolDigestSignatureAndCallbackSelectors() (gas: 92791)\n[PASS] test_supportedVectorAnswerIsDeliveredUnderTwoHundredThousandGas() (gas: 194709)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 56.71ms (508.54µs CPU time)\n\nRan 12 tests for test/AuditRevision.t.sol:AuditRevisionTest\n[PASS] testFuzz_cumulativeCapDecayStaysWithinElapsedBudget(uint256) (runs: 32, μ: 4069020, ~: 4066883)\n[PASS] test_appealRetryClearsTimedOutPendingAppeal() (gas: 12410032)\n[PASS] test_deadCabalBuyWithoutARecipientSkipsTheCashback() (gas: 2110107)\n[PASS] test_dustBuyDoesNotGiveUntrackedTokensLossOrHoldingPoints() (gas: 1365362)\n[PASS] test_expiredAppealCanBeRetriedWithoutLiftingDenialCooldown() (gas: 12610912)\n[PASS] test_lapsedApprovalCannotBypassCooldown() (gas: 8948884)\n[PASS] test_largeBuyClaimsAreRedeemableAndNextBuyStacksNormally() (gas: 2192535)\n[PASS] test_lateCloseDoesNotPayFutureSeasonFees() (gas: 14180551)\n[PASS] test_sameSecondCapRatchetsCannotReuseFractionalBudget() (gas: 862320)\n[PASS] test_seasonClaimsArePaidAsImdAtClose() (gas: 10689580)\n[PASS] test_secondLargeBuyPreservesEveryPayee() (gas: 1252795)\n[PASS] test_unansweredAppealDoesNotExtendTheOriginalWindow() (gas: 9101396)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 171.38ms (179.94ms CPU time)\n\nRan 30 tests for test/Orientation.t.sol:LetterboxImdIsZeroTest\n[PASS] testFuzz_namesAreUniqueIdempotentAndReleasedOnClear(uint256,uint8) (runs: 32, μ: 319329, ~: 314581)\n[PASS] test_aBareCommandWordIsNotAPlea() (gas: 6089428)\n[PASS] test_aLapsedApprovalSettlesAndStillCounts() (gas: 5678158)\n[PASS] test_anAppealOfAFloorSizedLetterIsNotRefused() (gas: 10763539)\n[PASS] test_anOverLongLetterIsRefusedByName() (gas: 5940115)\n[PASS] test_anyoneDeliversAnApprovalForTheTip() (gas: 6371125)\n[PASS] test_appealByLetterKeepsTheOriginalShareAndPaysTheWall() (gas: 10468594)\n[PASS] test_appealLetterRetriesAnAppealTheOracleNeverAnswered() (gas: 22098836)\n[PASS] test_autoSellFeeOnlyOnASaleAndNeverMoreThanHalfOfIt() (gas: 9971631)\n[PASS] test_deadCabalRefusesLettersButSettles() (gas: 5417074)\n[PASS] test_deliverNeedsAnApprovalInsideTheWindowAndTheMinimum() (gas: 6182137)\n[PASS] test_deployLetterboxRefusesOtherCode() (gas: 17261205)\n[PASS] test_expiredPendingPleaSettlesAfterTwentyMinutes() (gas: 5284682)\n[PASS] test_explorerLetterIsTheSameAsARawLetter() (gas: 13829809)\n[PASS] test_invalidNamesAndFailedRenamesPreserveTheOldReservation() (gas: 1339372)\n[PASS] test_leaderboardListsTheSeason() (gas: 6574625)\n[PASS] test_letterCommandsParse() (gas: 9023690)\n[PASS] test_letterPleadsFifteenPercentPaysFeesInPleaAndEscrows() (gas: 5367725)\n[PASS] test_letterRefusesEthTinyBalancesAndBadText() (gas: 1431206)\n[PASS] test_letterboxIsDeployedOnceFromTheCommittedCode() (gas: 521909)\n[PASS] test_noFunctionIdCanStartALetter() (gas: 948943)\n[PASS] test_noVerdictSettlesAtOnceAndTheNextLetterSettlesTheOldOne() (gas: 8747465)\n[PASS] test_orientationIsImdZero() (gas: 14013)\n[PASS] test_settleReturnsEscrowAndTipAfterADenial() (gas: 5639326)\n[PASS] test_siteAutoSellPleadsAnyValidAmount() (gas: 10282292)\n[PASS] test_statusTellsEachState() (gas: 10558007)\n[PASS] test_strangersCannotUseTheCourtEntryPoints() (gas: 211079)\n[PASS] test_theGateRefusesAManualSaleOfAnEscrowedPlea() (gas: 5373988)\n[PASS] test_theSellLetterIsTheWritersOwnSale() (gas: 6203602)\n[PASS] test_theSitesAutoSellBoxPaysTheFeeAndALetterDoesNot() (gas: 10925955)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 108.87ms (69.39ms CPU time)\n\nRan 8 tests for test/TribunalOracleBoundary.t.sol:TribunalOracleBoundaryTest\n[PASS] test_failedReplacementDoesNotVoidTheOldCaseOrTakeAnotherStake() (gas: 899881)\n[PASS] test_invalidAttestationsAreAtomicAndDoNotConsumeTheRequest() (gas: 6237208)\n[PASS] test_issuedAtToleratesExactlyFiveMinutesOfSignerClockDrift() (gas: 155110)\n[PASS] test_revertingCheckpointRollsBackBothTheTransferAndTheSettledFlag() (gas: 628076)\n[PASS] test_revertingRefundIsRetryableAndDoesNotBlockAnUnrelatedStake() (gas: 8220351)\n[PASS] test_signedValidityAndPendingDeadlineAreInclusiveAtTheirExactBoundaries() (gas: 224022)\n[PASS] test_unknownPaidFailureCannotVoidOurStake() (gas: 947289)\n[PASS] test_validTribunalSignatureOnSomebodyElsesPaidRequestCannotRuleOurCase() (gas: 3738541)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 163.85ms (9.99ms CPU time)\n\nRan 5 tests for test/Launch.t.sol:LaunchTest\n[PASS] test_deployHookChecksTheInitCodeAndFlags() (gas: 146430159)\n[PASS] test_eachStepFitsAMainnetTransaction() (gas: 151070236)\nLogs:\n  launch (5 contracts + intake mock): 12660599\n  deployLetterbox: 5204340\n  deployHook: 5692232\n  seed: 618617\n\n[PASS] test_launchWiresEverythingWithoutCallingOutside() (gas: 12782117)\n[PASS] test_ownerMaySeedEarly() (gas: 145583705)\n[PASS] test_seedByOwnerAnyTimeByAnyoneAfterStart() (gas: 145691063)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 242.22ms (334.15ms CPU time)\n\nRan 5 tests for test/SeasonRanking.t.sol:SeasonRankingTest\n[PASS] testFuzz_rankingsMatchSortedResultsInAnyRecordOrder(uint256) (runs: 32, μ: 14505159, ~: 14520534)\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 224.92ms (226.59ms CPU time)\n\nRan 11 tests for test/Orientation.t.sol:SeasonsPleaIsZeroTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4930542)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236802)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 24891266)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 58942459)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5915465)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 12327596)\n[PASS] test_onlyApprovedPleasScore() (gas: 5042142)\n[PASS] test_orientationIsPleaZero() (gas: 15702)\n[PASS] test_secondSeasonScoresSeparately() (gas: 46077562)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 61106225)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 116165615)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 63.30ms (60.48ms CPU time)\n\nRan 11 tests for test/Orientation.t.sol:SeasonsImdIsZeroTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4930542)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236802)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 24891266)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 58942459)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5915009)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 12328520)\n[PASS] test_onlyApprovedPleasScore() (gas: 5042142)\n[PASS] test_orientationIsImdZero() (gas: 13483)\n[PASS] test_secondSeasonScoresSeparately() (gas: 46077562)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 61106225)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 116165615)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 63.74ms (64.94ms CPU time)\n\nRan 12 tests for test/AuditRun3.t.sol:AuditRun3Test\n[PASS] test_F1_appealLetterCannotRetryAnAppealTheOracleNeverAnswered() (gas: 16701022)\n[PASS] test_F2_aCapSizedAutoSellPleaCannotBeAppealedThroughTheLetterbox() (gas: 34680837)\n[PASS] test_F3_aBareCommandWordBecomesAPaidPlea() (gas: 112577)\n[PASS] test_aLetterboxDeployedByAnyoneElseHasNoPowers() (gas: 10594523)\n[PASS] test_autoSellCannotAcceptASpotPriceUnderTheSnapshotFloor() (gas: 6936726)\n[PASS] test_escrowsAfterTheCabalDies() (gas: 13011907)\n[PASS] test_feeSaleIsBoundedAndTheTipReturns() (gas: 5301888)\n[PASS] test_letterParsingEdgeCases() (gas: 21164598)\n[PASS] test_markerRuleUnchanged() (gas: 6414400)\n[PASS] test_oneCapSizedSaleMovesSpotUnderOnePercent() (gas: 27886176)\nLogs:\n  price impact of a 2.5M PLEA sale, bps: 87\n\n[PASS] test_oracleBodyIsValidJsonForHostileTexts() (gas: 26325293)\n[PASS] test_priceViewsEqualAFullRingScan() (gas: 65247699)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 269.76ms (109.26ms CPU time)\n\nRan 13 tests for test/HookRevision.t.sol:HookRevisionPleaIsZeroTest\n[PASS] testFuzz_aGreedyStackerCannotReachTheWallReserve(uint256,uint256) (runs: 32, μ: 1324735, ~: 1324955)\n[PASS] testFuzz_aLimitAnywhereInTheLiquidityFreeRegionNeverMovesTheGuard(uint256,uint256) (runs: 32, μ: 2524831, ~: 2513829)\n[PASS] testFuzz_aLimitInsideTheLiquidMarketBandMovesTheGuardToTheStopTick(uint256) (runs: 32, μ: 5205602, ~: 5205612)\n[PASS] testFuzz_aSameHourPumpCannotMoveAPleasFactScore(uint256) (runs: 32, μ: 3190207, ~: 3192778)\n[PASS] testFuzz_repeatedDrainsToTheExtremeNeverMoveTheGuard(uint8) (runs: 32, μ: 4199910, ~: 3717674)\n[PASS] testFuzz_successfulCreditsNeverAccumulateAllowance(uint256,uint256,uint256) (runs: 32, μ: 2164785, ~: 2157507)\n[PASS] testFuzz_theGuardClimbsAtMost400TicksADay(uint256,uint256,uint8) (runs: 32, μ: 2950828, ~: 2802886)\n[PASS] testFuzz_theHoursFirstTradeRecordsThePriceItFoundWhateverItsSize(uint256,uint256) (runs: 32, μ: 2273820, ~: 2265478)\n[PASS] test_aCreditThatBurnsAllItsGasLeavesNoAllowance() (gas: 1605349)\n[PASS] test_anHourOpeningSellRecordsThePriceItFound() (gas: 2032653)\n[PASS] test_emptyRegionBitmapBoundaryStopsAtTheExactPriceLimit() (gas: 2314822)\n[PASS] test_orientationIsPleaZero() (gas: 15620)\n[PASS] test_wallGuardFollowsASellThatStopsWhereTheMarketHasLiquidity() (gas: 6129482)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 216.40ms (612.82ms CPU time)\n\nRan 6 tests for test/Run7ObjectionPoints.t.sol:Run7ObjectionPointsPleaFirstTest\n[PASS] testFuzz_marginAlwaysUsesRawScoreAndMultiplierOnlyUsesTheRecordingSeat(uint8,bool,bool) (runs: 64, μ: 9686712, ~: 9757829)\n[PASS] test_aBoostedScoreCannotRescueASustainedObjectionOrReverseASale() (gas: 10121517)\n[PASS] test_aLetterCanSellWhilePointsWaitThenUseANewSeatAfterVoid() (gas: 10814135)\n[PASS] test_aSeatCannotTurnADenialIntoAnApprovalOrAnObjectablePlea() (gas: 5079494)\n[PASS] test_pendingObjectionAtFiveHourBoundaryUsesSeatOnLateRecordAndStakeRollsOver() (gas: 14927246)\n[PASS] test_twoRulingsUseTheLowestRawScoreThenTheSeatAtRecordTime() (gas: 13867590)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 114.89ms (93.47ms CPU time)\n\nRan 13 tests for test/HookRevision.t.sol:HookRevisionImdIsZeroTest\n[PASS] testFuzz_aGreedyStackerCannotReachTheWallReserve(uint256,uint256) (runs: 32, μ: 1325720, ~: 1325923)\n[PASS] testFuzz_aLimitAnywhereInTheLiquidityFreeRegionNeverMovesTheGuard(uint256,uint256) (runs: 32, μ: 2539948, ~: 2525705)\n[PASS] testFuzz_aLimitInsideTheLiquidMarketBandMovesTheGuardToTheStopTick(uint256) (runs: 32, μ: 5214186, ~: 5214220)\n[PASS] testFuzz_aSameHourPumpCannotMoveAPleasFactScore(uint256) (runs: 32, μ: 3192941, ~: 3195442)\n[PASS] testFuzz_repeatedDrainsToTheExtremeNeverMoveTheGuard(uint8) (runs: 32, μ: 4043873, ~: 3734004)\n[PASS] testFuzz_successfulCreditsNeverAccumulateAllowance(uint256,uint256,uint256) (runs: 32, μ: 2166038, ~: 2159676)\n[PASS] testFuzz_theGuardClimbsAtMost400TicksADay(uint256,uint256,uint8) (runs: 32, μ: 2756554, ~: 2761921)\n[PASS] testFuzz_theHoursFirstTradeRecordsThePriceItFoundWhateverItsSize(uint256,uint256) (runs: 32, μ: 2276895, ~: 2268515)\n[PASS] test_aCreditThatBurnsAllItsGasLeavesNoAllowance() (gas: 1606540)\n[PASS] test_anHourOpeningSellRecordsThePriceItFound() (gas: 2033129)\n[PASS] test_emptyRegionBitmapBoundaryStopsAtTheExactPriceLimit() (gas: 2321440)\n[PASS] test_orientationIsImdZero() (gas: 13404)\n[PASS] test_wallGuardFollowsASellThatStopsWhereTheMarketHasLiquidity() (gas: 6134426)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 354.95ms (710.30ms CPU time)\n\nRan 5 tests for test/GasPass.t.sol:GasPassTest\n[PASS] testFuzz_bodyEqualsEscapingTheWholeQuestion(uint256) (runs: 500, μ: 5599201, ~: 5578899)\n[PASS] testFuzz_textCheckMatchesTheReferenceRules(uint256) (runs: 5000, μ: 991014, ~: 84395)\n[PASS] test_bodyEqualsEscapingTheWholeQuestion() (gas: 12950113)\n[PASS] test_priceViewsMatchAFullScan() (gas: 207364262)\n[PASS] test_textCheckEdgeCases() (gas: 54236484)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 355.25ms (765.50ms CPU time)\n\nRan 6 tests for test/Run7ObjectionPoints.t.sol:Run7ObjectionPointsTest\n[PASS] testFuzz_marginAlwaysUsesRawScoreAndMultiplierOnlyUsesTheRecordingSeat(uint8,bool,bool) (runs: 64, μ: 9686728, ~: 9757829)\n[PASS] test_aBoostedScoreCannotRescueASustainedObjectionOrReverseASale() (gas: 10121393)\n[PASS] test_aLetterCanSellWhilePointsWaitThenUseANewSeatAfterVoid() (gas: 10815065)\n[PASS] test_aSeatCannotTurnADenialIntoAnApprovalOrAnObjectablePlea() (gas: 5079494)\n[PASS] test_pendingObjectionAtFiveHourBoundaryUsesSeatOnLateRecordAndStakeRollsOver() (gas: 14927122)\n[PASS] test_twoRulingsUseTheLowestRawScoreThenTheSeatAtRecordTime() (gas: 13867590)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 138.19ms (98.91ms CPU time)\n\nRan 10 tests for test/Seasons.t.sol:SeasonsTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4930520)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236691)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 24891244)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 58942459)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5915443)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 12327596)\n[PASS] test_onlyApprovedPleasScore() (gas: 5042120)\n[PASS] test_secondSeasonScoresSeparately() (gas: 46077562)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 61106203)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 116165593)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 346.37ms (56.29ms CPU time)\n\nRan 12 tests for test/HookRevision.t.sol:HookRevisionTest\n[PASS] testFuzz_aGreedyStackerCannotReachTheWallReserve(uint256,uint256) (runs: 64, μ: 1324607, ~: 1324876)\n[PASS] testFuzz_aLimitAnywhereInTheLiquidityFreeRegionNeverMovesTheGuard(uint256,uint256) (runs: 64, μ: 2516174, ~: 2513807)\n[PASS] testFuzz_aLimitInsideTheLiquidMarketBandMovesTheGuardToTheStopTick(uint256) (runs: 64, μ: 5205640, ~: 5205704)\n[PASS] testFuzz_aSameHourPumpCannotMoveAPleasFactScore(uint256) (runs: 64, μ: 3190144, ~: 3192719)\n[PASS] testFuzz_repeatedDrainsToTheExtremeNeverMoveTheGuard(uint8) (runs: 64, μ: 4090216, ~: 3717652)\n[PASS] testFuzz_successfulCreditsNeverAccumulateAllowance(uint256,uint256,uint256) (runs: 64, μ: 2166975, ~: 2157543)\n[PASS] testFuzz_theGuardClimbsAtMost400TicksADay(uint256,uint256,uint8) (runs: 64, μ: 2915656, ~: 2804144)\n[PASS] testFuzz_theHoursFirstTradeRecordsThePriceItFoundWhateverItsSize(uint256,uint256) (runs: 64, μ: 2276311, ~: 2266149)\n[PASS] test_aCreditThatBurnsAllItsGasLeavesNoAllowance() (gas: 1605327)\n[PASS] test_anHourOpeningSellRecordsThePriceItFound() (gas: 2032631)\n[PASS] test_emptyRegionBitmapBoundaryStopsAtTheExactPriceLimit() (gas: 2314800)\n[PASS] test_wallGuardFollowsASellThatStopsWhereTheMarketHasLiquidity() (gas: 6129460)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 487.45ms (1.37s CPU time)\n\nRan 6 tests for test/JudgeFindings.t.sol:JudgeFindingsTest\n[PASS] test_aSmallWriterCanAppealByLetter() (gas: 8100463)\n[PASS] test_appealAutoOfAMinimumPleaStaysAtTheMinimum() (gas: 8771795)\n[PASS] test_appealLetterKeepsTheOriginalShareBand() (gas: 7949076)\n[PASS] test_deliverAfterACrashCapsTheFeeAtTheSale() (gas: 566486335)\n[PASS] test_fiftyPercentCeilingAndShareBands() (gas: 23927202)\n[PASS] test_ownershipTransferNeedsAcceptanceSoALeaderKeepsThePrize() (gas: 7157932)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 502.82ms (309.23ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingPleaZeroTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7925827, ~: 7930705)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 8027729)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7917442)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23587630)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 538.94ms (101.29ms CPU time)\n\nRan 6 tests for test/JudgeFindings.t.sol:JudgeFindingsPleaZeroTest\n[PASS] test_aSmallWriterCanAppealByLetter() (gas: 8100463)\n[PASS] test_appealAutoOfAMinimumPleaStaysAtTheMinimum() (gas: 8771795)\n[PASS] test_appealLetterKeepsTheOriginalShareBand() (gas: 7949076)\n[PASS] test_deliverAfterACrashCapsTheFeeAtTheSale() (gas: 566486335)\n[PASS] test_fiftyPercentCeilingAndShareBands() (gas: 23927202)\n[PASS] test_ownershipTransferNeedsAcceptanceSoALeaderKeepsThePrize() (gas: 7157932)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 440.08ms (290.75ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingPaidFeePleaZeroTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7890841, ~: 7894912)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 7993888)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7881614)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23480146)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 539.19ms (96.93ms 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       | 1230  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | claim        | 1139  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | corruptClaim | 1153  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | donate       | 1191  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | nominate     | 1180  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | publish      | 1149  | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| Run7DistributionHandler | renounce     | 1150  | 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.57s (1.57s 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 | 629   | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| Run7SeatHandler | donate               | 624   | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| Run7SeatHandler | issue                | 606   | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| Run7SeatHandler | record               | 607   | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| Run7SeatHandler | setSeat              | 606   | 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.42s (4.42s CPU time)\n\nRan 4 tests for test/TribunalTextProperties.t.sol:TribunalTextPropertiesTest\n[PASS] testFuzz_markerPrefixesAreRejectedBeforeAnyPayment(uint16,uint16,bool) (runs: 256, μ: 4854504, ~: 4852918)\n[PASS] testFuzz_utf8AndEscapesSurviveTheOracleBody(bytes32,uint16) (runs: 128, μ: 11710786, ~: 11606362)\n[PASS] test_malformedUtf8ControlsAndInvisibleCharactersAreRejected() (gas: 5549472)\n[PASS] test_oneByteAnd280BytesAcceptButZeroAnd281Reject() (gas: 13451791)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.63s (4.91s CPU time)\n\nRan 63 test suites in 4.67s (18.17s CPU time): 621 tests passed, 0 failed, 0 skipped (621 total tests)\n","passed":true},{"durationMs":100,"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\":4,\"ADAPTATION.md\":46,\"OBJECTIONS.md\":339,\"README.md\":301,\"audit/FINDINGS.md\":96,\"audit/README.md\":35,\"audit/THREAT-MODEL.md\":108,\"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,\"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\":884,\"src/Letterbox.sol\":747,\"src/OracleAttestation.sol\":227,\"src/PLEA.sol\":151,\"src/PleaDistributor.sol\":60,\"src/PleaHook.sol\":1093,\"src/PleaLaunch.sol\":195,\"src/Seasons.sol\":467,\"src/Tribunal.sol\":530,\"src/interfaces/IPleaParts.sol\":76,\"src/interfaces/IStacker.sol\":12,\"test/AppealRounding.t.sol\":143,\"test/ArtifactDeployment.t.sol\":59,\"test/AuditImported.t.sol\":142,\"test/AuditRevision.t.sol\":277,\"test/AuditRound1.t.sol\":591,\"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\":342,\"test/Gate.t.sol\":409,\"test/GateAdversarial.t.sol\":400,\"test/GateFailureInvariant.t.sol\":330,\"test/Hook.t.sol\":359,\"test/HookAdversarial.t.sol\":256,\"test/HookRevision.t.sol\":406,\"test/JudgeFindings.t.sol\":221,\"test/Launch.t.sol\":175,\"test/LaunchManifest.t.sol\":370,\"test/Letterbox.t.sol\":915,\"test/LetterboxInvariant.t.sol\":447,\"test/MainnetGuard.t.sol\":61,\"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\":495,\"test/Tribunal.t.sol\":500,\"test/TribunalAdversarial.t.sol\":225,\"test/TribunalInvariant.t.sol\":585,\"test/TribunalOracleBoundary.t.sol\":334,\"test/TribunalSeasons.t.sol\":300,\"test/TribunalStanding.t.sol\":217,\"test/TribunalTextProperties.t.sol\":181,\"test/fork/ForkMainnet.t.sol\":394,\"test/fork/ForkTestnet.t.sol\":871,\"test/utils/AdversarialTraderRouter.sol\":38,\"test/utils/ArtifactDeployment.sol\":23,\"test/utils/ClaimTree.sol\":41,\"test/utils/Fixture.sol\":345,\"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":"5c7e5d5fa58d818d70f489ea61b0961275a8e0a2b79c4f8a11b9ac684593e702","verifiedTreeHash":"b2c5005781cd43b12a0a8a6fc305062276cd71c3","verifierVersion":"0.1.0+8fbf00a5"},{"checks":[{"durationMs":240428,"exitCode":0,"name":"build","output":"Compiling 152 files with Solc 0.8.26\nSolc 0.8.26 finished in 240.26s\nCompiler run successful with warnings:\nWarning (8760): This declaration has the same name as another declaration.\n   --> src/Tribunal.sol:322:9:\n    |\n322 |         uint8 status,\n    |         ^^^^^^^^^^^^\nNote: The other declaration is here:\n   --> src/Tribunal.sol:200:5:\n    |\n200 |     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:360:53:\n    |\n360 |     function _void(uint256 id, Objection storage o, uint8 status, bytes32 reason) internal {\n    |                                                     ^^^^^^^^^^^^\nNote: The other declaration is here:\n   --> src/Tribunal.sol:200:5:\n    |\n200 |     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:733:5:\n    |\n733 |     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":682,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\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 3.18ms (2.58ms CPU time)\n\nRan 1 test for test/TribunalSeasons.t.sol:TribunalLateDeployTest\n[PASS] test_aPleaRecordedBeforeTheTribunalCannotBeObjectedTo() (gas: 13988818)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 10.87ms (2.42ms CPU time)\n\nRan 6 tests for test/SeatMultiplier.t.sol:SeatMultiplierTest\n[PASS] testFuzz_pointsNeverExceedScoreTimesOnePointTwo(uint8,bool) (runs: 32, μ: 45922, ~: 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 11.94ms (10.31ms CPU time)\n\nRan 3 tests for test/LaunchManifest.t.sol:RehearsalManifestTest\n[PASS] test_laterBlockCannotRegisterLauncher() (gas: 13932130)\n[PASS] test_separateConstructorCallsInDeploymentBlockStillWork() (gas: 15106679)\n[PASS] test_separateTransactionsLeaveTheAcceptedDeploymentBlockWindow() (gas: 14066504)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 8.79ms (4.75ms CPU time)\n\nRan 2 tests for test/ManifestInput.t.sol:ManifestInputTest\n[PASS] test_everyManifestWordDeploysAtomicallyAndCommitsTheTribunal() (gas: 22015752)\n[PASS] test_failedLastConstructorRollsBackAllEarlierDeploymentsAndCanRetry() (gas: 26909486)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 16.38ms (10.75ms 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: 1389033)\n[PASS] test_protocolSignatureRecoversToVectorSigner() (gas: 13943)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 746.19µs (407.39µs 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: 1361632)\n[PASS] test_walletsCannotSendWhileTheCabalWatches() (gas: 331356)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 11.06ms (552.22µs CPU time)\n\nRan 3 tests for test/Letterbox.t.sol:LetterboxMainnetPathTest\n[PASS] test_aMismatchedOracleAssetOrMintingThePoolImdIsRefused() (gas: 971058)\n[PASS] test_letterBuysTheOracleFeeAndTheTipWithPlea() (gas: 9361021)\n[PASS] test_mintingTheFeeIsRefusedOnMainnet() (gas: 962452)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 11.92ms (4.81ms CPU time)\n\nRan 2 tests for test/AuditRound1.t.sol:AuditRound1SeedOwnerTest\n[PASS] test_theFormerOwnerMayNotSeedEarly() (gas: 46393)\n[PASS] test_theNewPleaOwnerMaySeedEarly() (gas: 601790)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 27.02ms (439.72µs CPU time)\n\nRan 3 tests for test/Letterbox.t.sol:OwnerExclusionTest\n[PASS] test_nobodyGetsAKeeperTip() (gas: 488562)\n[PASS] test_ownerPleasEarnNoPoints() (gas: 5070189)\n[PASS] test_theLaunchOwnerStaysExcludedAfterAHandover() (gas: 5198585)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 28.64ms (3.17ms CPU time)\n\nRan 29 tests for test/Gate.t.sol:GateTest\n[PASS] test_appealClosesAfterFourHoursAndOnlyOnce() (gas: 11760203)\n[PASS] test_appealWithinFourHoursForNoMore() (gas: 9194225)\n[PASS] test_approvedScoreOpensTheSellWindow() (gas: 5751893)\n[PASS] test_badAttestationsAreNotDelivered() (gas: 4940941)\n[PASS] test_bodyIsTheNumericPanelQuestion() (gas: 4994024)\n[PASS] test_callbackFitsTheStipend() (gas: 8077179)\nLogs:\n  approve callback gas: 58981\n  deny callback gas: 83580\n\n[PASS] test_callbackOnlyFromIntakeAndOnlyForAPendingPlea() (gas: 5479861)\n[PASS] test_cannotPassIsRefusedBeforePaying() (gas: 1395466)\n[PASS] test_cooldownAfterExecutedSell() (gas: 8363893)\n[PASS] test_failedAppealCanBeRetried() (gas: 11725416)\n[PASS] test_failureAfterExpireIsRefused() (gas: 4928504)\n[PASS] test_failureClearsThePendingPleaWithoutCooldownOrClock() (gas: 7922610)\n[PASS] test_failureFitsTheMainnetGas() (gas: 4899442)\n[PASS] test_failureForAnUnknownOrSettledRequestDoesNothing() (gas: 5072066)\n[PASS] test_failureOnlyFromTheIntake() (gas: 4867986)\n[PASS] test_noPleasWhileTheCabalSleeps() (gas: 61844)\n[PASS] test_noVerdictIsClearedAtOnceWhenTheIntakeCompletes() (gas: 7905758)\n[PASS] test_onePendingPleaPerWallet() (gas: 4857362)\n[PASS] test_pendingExpiresAfterTwentyMinutesAndLateCallbacksFail() (gas: 7869241)\n[PASS] test_pleaAsksWithTheFailureFunction() (gas: 4821767)\n[PASS] test_pleaPaysTheIntakeAndNamesTheCallback() (gas: 4867803)\n[PASS] test_prizePleaOnTopOfAWeekOldBuy() (gas: 1792994)\n[PASS] test_refusalClearsThePleaToo() (gas: 4921364)\n[PASS] test_scoreAboveRangeOrWrongTypeIsRefused() (gas: 8008539)\n[PASS] test_scoreBelowNeedDenies() (gas: 5120303)\n[PASS] test_sellWindowLapses() (gas: 7938726)\n[PASS] test_signerWithDelegationCodeStillVerifies() (gas: 4954267)\n[PASS] test_textFilter() (gas: 5300558)\n[PASS] test_wrongSignerIsRefused() (gas: 4918488)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 32.63ms (20.13ms CPU time)\n\nRan 30 tests for test/Orientation.t.sol:GatePleaIsZeroTest\n[PASS] test_appealClosesAfterFourHoursAndOnlyOnce() (gas: 11760225)\n[PASS] test_appealWithinFourHoursForNoMore() (gas: 9194271)\n[PASS] test_approvedScoreOpensTheSellWindow() (gas: 5751893)\n[PASS] test_badAttestationsAreNotDelivered() (gas: 4940963)\n[PASS] test_bodyIsTheNumericPanelQuestion() (gas: 4994046)\n[PASS] test_callbackFitsTheStipend() (gas: 8077201)\nLogs:\n  approve callback gas: 58981\n  deny callback gas: 83580\n\n[PASS] test_callbackOnlyFromIntakeAndOnlyForAPendingPlea() (gas: 5479861)\n[PASS] test_cannotPassIsRefusedBeforePaying() (gas: 1395466)\n[PASS] test_cooldownAfterExecutedSell() (gas: 8363915)\n[PASS] test_failedAppealCanBeRetried() (gas: 11725438)\n[PASS] test_failureAfterExpireIsRefused() (gas: 4928526)\n[PASS] test_failureClearsThePendingPleaWithoutCooldownOrClock() (gas: 7922610)\n[PASS] test_failureFitsTheMainnetGas() (gas: 4899464)\n[PASS] test_failureForAnUnknownOrSettledRequestDoesNothing() (gas: 5072066)\n[PASS] test_failureOnlyFromTheIntake() (gas: 4867986)\n[PASS] test_noPleasWhileTheCabalSleeps() (gas: 61844)\n[PASS] test_noVerdictIsClearedAtOnceWhenTheIntakeCompletes() (gas: 7905758)\n[PASS] test_onePendingPleaPerWallet() (gas: 4857362)\n[PASS] test_orientationIsPleaZero() (gas: 15963)\n[PASS] test_pendingExpiresAfterTwentyMinutesAndLateCallbacksFail() (gas: 7869263)\n[PASS] test_pleaAsksWithTheFailureFunction() (gas: 4821789)\n[PASS] test_pleaPaysTheIntakeAndNamesTheCallback() (gas: 4867825)\n[PASS] test_prizePleaOnTopOfAWeekOldBuy() (gas: 1793009)\n[PASS] test_refusalClearsThePleaToo() (gas: 4921364)\n[PASS] test_scoreAboveRangeOrWrongTypeIsRefused() (gas: 8008561)\n[PASS] test_scoreBelowNeedDenies() (gas: 5120303)\n[PASS] test_sellWindowLapses() (gas: 7938726)\n[PASS] test_signerWithDelegationCodeStillVerifies() (gas: 4954289)\n[PASS] test_textFilter() (gas: 5300558)\n[PASS] test_wrongSignerIsRefused() (gas: 4918488)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 34.13ms (20.42ms CPU time)\n\nRan 3 tests for test/MainnetGuard.t.sol:MainnetGuardTest\n[PASS] test_manifestDeploysOnChainOneWithTheFastClock() (gas: 12661)\n[PASS] test_seedOpensOnAnyOtherChain() (gas: 600383)\n[PASS] test_seedRefusesTheFastClockOnChainOne() (gas: 50268)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 14.04ms (1.14ms CPU time)\n\nRan 12 tests for test/TribunalSeasons.t.sol:TribunalSeasonsTest\n[PASS] test_aLetterSellsDuringTheHoldAndItsPointsAreRecordedLater() (gas: 10662617)\n[PASS] test_aSustainedPleaIsNeverRecordedEvenByAClose() (gas: 9565860)\n[PASS] test_aVoidAtTheLastSecondLeavesNoRoomForASecondObjection() (gas: 13208504)\n[PASS] test_approvalInTheLastSecondIsRuledAndRecordedInsideTheGrace() (gas: 12861141)\n[PASS] test_closeListsAHeldPleaOfTheRunningSeasonWithoutReverting() (gas: 8457729)\n[PASS] test_closeSeasonSkipsHeldPleasAndRecordsThemLater() (gas: 12758977)\n[PASS] test_recordIsFreeOnceTheWindowClosesWithNoObjection() (gas: 5264176)\n[PASS] test_recordWaitsForTheWindowThenForAPendingObjection() (gas: 9715773)\n[PASS] test_seasonsFindsTheTribunalThroughTheLauncher() (gas: 51285)\n[PASS] test_theLetterboxStatusShowsHeldPendingAndSustainedPoints() (gas: 20723209)\n[PASS] test_theTimingBoundHoldsInsideTheCloseGrace() (gas: 15530)\n[PASS] test_twoRulingsAtTheEdgeStayInsideTheGrace() (gas: 16672347)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 35.44ms (27.63ms CPU time)\n\nRan 7 tests for test/AuditImported.t.sol:AuditImportedPaidFeeTest\n[PASS] test_appealLetterRetriesCompletedRequestWithFailedCallback() (gas: 12952281)\n[PASS] test_appealLetterRetriesLazyTimeoutWithoutSeparateSettlement() (gas: 12885579)\n[PASS] test_autoAppealSurvivesBalanceGrowth() (gas: 9469212)\n[PASS] test_growingBalanceDoesNotEnableDustOrLargerAppeals() (gas: 8665667)\n[PASS] test_rawAppealLetterSurvivesBalanceGrowth() (gas: 9491843)\n[PASS] test_shrinkingBalanceStillUsesCurrentMinimumAndMaximum() (gas: 8265799)\n[PASS] test_siteAppealSurvivesBalanceGrowthAtOriginalMinimum() (gas: 8568723)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 47.37ms (16.92ms CPU time)\n\nRan 30 tests for test/Orientation.t.sol:GateImdIsZeroTest\n[PASS] test_appealClosesAfterFourHoursAndOnlyOnce() (gas: 11760225)\n[PASS] test_appealWithinFourHoursForNoMore() (gas: 9193922)\n[PASS] test_approvedScoreOpensTheSellWindow() (gas: 5751568)\n[PASS] test_badAttestationsAreNotDelivered() (gas: 4940963)\n[PASS] test_bodyIsTheNumericPanelQuestion() (gas: 4994046)\n[PASS] test_callbackFitsTheStipend() (gas: 8077201)\nLogs:\n  approve callback gas: 58981\n  deny callback gas: 83580\n\n[PASS] test_callbackOnlyFromIntakeAndOnlyForAPendingPlea() (gas: 5479861)\n[PASS] test_cannotPassIsRefusedBeforePaying() (gas: 1396207)\n[PASS] test_cooldownAfterExecutedSell() (gas: 8363590)\n[PASS] test_failedAppealCanBeRetried() (gas: 11725438)\n[PASS] test_failureAfterExpireIsRefused() (gas: 4928526)\n[PASS] test_failureClearsThePendingPleaWithoutCooldownOrClock() (gas: 7922610)\n[PASS] test_failureFitsTheMainnetGas() (gas: 4899464)\n[PASS] test_failureForAnUnknownOrSettledRequestDoesNothing() (gas: 5072066)\n[PASS] test_failureOnlyFromTheIntake() (gas: 4867986)\n[PASS] test_noPleasWhileTheCabalSleeps() (gas: 61844)\n[PASS] test_noVerdictIsClearedAtOnceWhenTheIntakeCompletes() (gas: 7905758)\n[PASS] test_onePendingPleaPerWallet() (gas: 4857362)\n[PASS] test_orientationIsImdZero() (gas: 13703)\n[PASS] test_pendingExpiresAfterTwentyMinutesAndLateCallbacksFail() (gas: 7869263)\n[PASS] test_pleaAsksWithTheFailureFunction() (gas: 4821789)\n[PASS] test_pleaPaysTheIntakeAndNamesTheCallback() (gas: 4867825)\n[PASS] test_prizePleaOnTopOfAWeekOldBuy() (gas: 1794405)\n[PASS] test_refusalClearsThePleaToo() (gas: 4921364)\n[PASS] test_scoreAboveRangeOrWrongTypeIsRefused() (gas: 8008561)\n[PASS] test_scoreBelowNeedDenies() (gas: 5120303)\n[PASS] test_sellWindowLapses() (gas: 7938726)\n[PASS] test_signerWithDelegationCodeStillVerifies() (gas: 4954289)\n[PASS] test_textFilter() (gas: 5300558)\n[PASS] test_wrongSignerIsRefused() (gas: 4918488)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 58.46ms (26.01ms CPU time)\n\nRan 13 tests for test/TraderResolution.t.sol:TraderResolutionTest\n[PASS] testFuzz_dirtyHookDataFallsBackToRouterCaller(uint96,bool) (runs: 32, μ: 716539, ~: 703082)\n[PASS] test_dirtyHookDataAfterDeathBuyHasNoTrader() (gas: 487629)\n[PASS] test_dirtyHookDataFallsBackToRouterCallerWhileAlive() (gas: 735913)\n[PASS] test_dirtyHookDataWithoutFallbackWhileAliveRequiresRecipient() (gas: 82108)\n[PASS] test_dirtyHookDataWordFallsThrough() (gas: 1041733)\n[PASS] test_feeSurplusWithoutATraderIsBurnedOrKeptForThePool() (gas: 526956)\n[PASS] test_hookDataNamesTheTrader() (gas: 691907)\n[PASS] test_invalidHookDataFallsBackToTheRouterCaller() (gas: 2741601)\n[PASS] test_noTraderAfterDeathBuyGoesThroughWithoutCashback() (gas: 446120)\n[PASS] test_noTraderAfterDeathSellGoesThroughWithoutCashback() (gas: 582775)\n[PASS] test_routerCallerIsTheTraderWithoutHookData() (gas: 714832)\n[PASS] test_routerCallerStillCreditedAfterDeath() (gas: 637916)\n[PASS] test_routerWithoutMsgSenderNeedsHookDataWhileTheCabalLives() (gas: 149355)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 37.64ms (28.41ms CPU time)\n\nRan 3 tests for test/OracleReplay.t.sol:OracleReplayTest\n[PASS] testFuzz_oneSignedRequestCannotSettleTwoPleas(bool,bool) (runs: 32, μ: 8186188, ~: 8175622)\n[PASS] test_deniedRequestCannotBeResignedToApproveItsAppeal() (gas: 8588454)\n[PASS] test_invalidCallbackDoesNotConsumeTheRequest() (gas: 8034827)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 50.04ms (40.17ms CPU time)\n\nRan 7 tests for test/AuditImported.t.sol:AuditImportedTest\n[PASS] test_appealLetterRetriesCompletedRequestWithFailedCallback() (gas: 13008274)\n[PASS] test_appealLetterRetriesLazyTimeoutWithoutSeparateSettlement() (gas: 12941572)\n[PASS] test_autoAppealSurvivesBalanceGrowth() (gas: 9505864)\n[PASS] test_growingBalanceDoesNotEnableDustOrLargerAppeals() (gas: 8676967)\n[PASS] test_rawAppealLetterSurvivesBalanceGrowth() (gas: 9528495)\n[PASS] test_shrinkingBalanceStillUsesCurrentMinimumAndMaximum() (gas: 8277099)\n[PASS] test_siteAppealSurvivesBalanceGrowthAtOriginalMinimum() (gas: 8580023)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 69.80ms (24.40ms CPU time)\n\nRan 5 tests for test/LaunchManifest.t.sol:AtomicManifestTest\n[PASS] test_factoryDeploysExactManifestOnAnEmptySepoliaChain() (gas: 53584396)\nLogs:\n  five-contract launch transaction gas through IMD's factory: 13359301\n  gas limit with IMD's headroom: 16298347\n  margin to the 16,777,216 cap: 478869\n\n[PASS] test_launchJsonCommitsToThisLetterbox() (gas: 33949)\n[PASS] test_launchJsonCommitsToThisTribunal() (gas: 29190)\n[PASS] test_launchJsonEncodesOracleMintFlagAsStaticWord() (gas: 10916)\n[PASS] test_launchJsonNotesFitTheManifestCap() (gas: 8895)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 73.33ms (70.93ms CPU time)\n\nRan 11 tests for test/Seasons.t.sol:FastClockTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4929856)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236713)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 1755007)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 43823927)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5915465)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 1316974)\n[PASS] test_fastFullCycle() (gas: 80493724)\n[PASS] test_onlyApprovedPleasScore() (gas: 5039307)\n[PASS] test_secondSeasonScoresSeparately() (gas: 49160207)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 3619759)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 122299087)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 79.88ms (60.86ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingPaidFeeTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7890813, ~: 7894876)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 7993888)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7881614)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23480146)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 87.19ms (83.03ms 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 851.96µs (324.61µs CPU time)\n\nRan 29 tests for test/Letterbox.t.sol:LetterboxTest\n[PASS] testFuzz_namesAreUniqueIdempotentAndReleasedOnClear(uint256,uint8) (runs: 32, μ: 320242, ~: 315717)\n[PASS] test_aBareCommandWordIsNotAPlea() (gas: 6088261)\n[PASS] test_aLapsedApprovalSettlesAndStillCounts() (gas: 5676991)\n[PASS] test_anAppealOfAFloorSizedLetterIsNotRefused() (gas: 10759844)\n[PASS] test_anOverLongLetterIsRefusedByName() (gas: 5938926)\n[PASS] test_anyoneDeliversAnApprovalForTheTip() (gas: 6370233)\n[PASS] test_appealByLetterKeepsTheOriginalShareAndPaysTheWall() (gas: 10466656)\n[PASS] test_appealLetterRetriesAnAppealTheOracleNeverAnswered() (gas: 22093673)\n[PASS] test_autoSellFeeOnlyOnASaleAndNeverMoreThanHalfOfIt() (gas: 9969741)\n[PASS] test_deadCabalRefusesLettersButSettles() (gas: 5415885)\n[PASS] test_deliverNeedsAnApprovalInsideTheWindowAndTheMinimum() (gas: 6181267)\n[PASS] test_deployLetterboxRefusesOtherCode() (gas: 17261889)\n[PASS] test_expiredPendingPleaSettlesAfterTwentyMinutes() (gas: 5283493)\n[PASS] test_explorerLetterIsTheSameAsARawLetter() (gas: 13826843)\n[PASS] test_invalidNamesAndFailedRenamesPreserveTheOldReservation() (gas: 1339350)\n[PASS] test_leaderboardListsTheSeason() (gas: 6573755)\n[PASS] test_letterCommandsParse() (gas: 9021306)\n[PASS] test_letterPleadsFifteenPercentPaysFeesInPleaAndEscrows() (gas: 5366558)\n[PASS] test_letterRefusesEthTinyBalancesAndBadText() (gas: 1430290)\n[PASS] test_letterboxIsDeployedOnceFromTheCommittedCode() (gas: 521909)\n[PASS] test_noFunctionIdCanStartALetter() (gas: 948921)\n[PASS] test_noVerdictSettlesAtOnceAndTheNextLetterSettlesTheOldOne() (gas: 8745278)\n[PASS] test_settleReturnsEscrowAndTipAfterADenial() (gas: 5638137)\n[PASS] test_siteAutoSellPleadsAnyValidAmount() (gas: 10279577)\n[PASS] test_statusTellsEachState() (gas: 10555934)\n[PASS] test_strangersCannotUseTheCourtEntryPoints() (gas: 211057)\n[PASS] test_theGateRefusesAManualSaleOfAnEscrowedPlea() (gas: 5372821)\n[PASS] test_theSellLetterIsTheWritersOwnSale() (gas: 6202710)\n[PASS] test_theSitesAutoSellBoxPaysTheFeeAndALetterDoesNot() (gas: 10924139)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 90.93ms (64.12ms CPU time)\n\nRan 23 tests for test/Tribunal.t.sol:TribunalMainnetFeeTest\n[PASS] test_aStalePendingObjectionIsVoidedByTheNextObjector() (gas: 20401949)\n[PASS] test_aStalePendingObjectionNeverHoldsPastTheWindow() (gas: 17702471)\n[PASS] test_aSustainClosesTheCase() (gas: 9408682)\n[PASS] test_anExcludedSellersPleaCannotBeObjectedTo() (gas: 5992789)\n[PASS] test_anExcludedSellersPleaIsNeverHeld() (gas: 5695595)\n[PASS] test_atMostTwoRulingsFromDifferentWallets() (gas: 13674677)\n[PASS] test_callbackFitsTheIntakesGasBudget() (gas: 9262516)\nLogs:\n  gate verdict callback gas: 58981\n  tribunal ruling callback gas: 83885\n\n[PASS] test_executedAndLapsedApprovalsCanBeObjectedTo() (gas: 17315213)\n[PASS] test_expireByTimeAndByACompletedRequest() (gas: 16830100)\n[PASS] test_marginEdge() (gas: 16878889)\n[PASS] test_onlyApprovedPleasCanBeObjectedTo() (gas: 7884617)\n[PASS] test_overruledAboveTheOriginalKeepsTheOriginalScore() (gas: 9545800)\n[PASS] test_overruledObjectionLowersTheScoreToTheLowestPanelAndFeedsThePot() (gas: 9801731)\n[PASS] test_questionAndBody() (gas: 14750075)\n[PASS] test_rulingsNeverResetTheDeadMan() (gas: 9264298)\n[PASS] test_settleNeedsARuling() (gas: 9135989)\n[PASS] test_statusText() (gas: 17393073)\n[PASS] test_sustainedObjectionLeavesNoPointsAndReturnsTheStake() (gas: 9635005)\n[PASS] test_textRules() (gas: 9234130)\n[PASS] test_theObjectorPaysFeeAndStakeInImd() (gas: 9124710)\n[PASS] test_theSellerAndTheOwnersCannotObject() (gas: 5406173)\n[PASS] test_voidObjectionReturnsTheStakeAndFreesTheSlot() (gas: 12980699)\n[PASS] test_windowEdges() (gas: 12563142)\nSuite result: ok. 23 passed; 0 failed; 0 skipped; finished in 92.71ms (70.54ms CPU time)\n\nRan 9 tests for test/AuditRun5.t.sol:AuditRun5Test\n[PASS] testFuzz_markerPrefixesAreRefusedInAnyCase(uint16,bool,uint8) (runs: 32, μ: 66873, ~: 65091)\n[PASS] testFuzz_settlementAcrossTheBoundaryKeepsThePleasSeason(uint16) (runs: 32, μ: 9736414, ~: 9736414)\n[PASS] test_allNewPleaRoutesRefuseSellerWrittenObjectionMarkers() (gas: 778985)\n[PASS] test_appealRoutesAlsoRefuseForgedObjectionMarkers() (gas: 5655520)\n[PASS] test_lateSettlementFundsThePleasSeasonAndCheckpointsOtherDonations() (gas: 9945924)\n[PASS] test_onlyTheCommittedTribunalCanLabelAFundedApprovedStake() (gas: 5244711)\n[PASS] test_settlementAfterACloseGoesToRolloverOnce() (gas: 10234133)\n[PASS] test_similarWordsAndTruncatedPrefixesStillPass() (gas: 4779291)\n[PASS] test_twoFreshWalletRulingsStillCloseTheCaseAsRequired() (gas: 13588047)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 98.73ms (47.92ms CPU time)\n\nRan 2 tests for test/TribunalOracleBoundary.t.sol:TribunalProtocolVectorTest\n[PASS] test_canonicalProtocolDigestSignatureAndCallbackSelectors() (gas: 92791)\n[PASS] test_supportedVectorAnswerIsDeliveredUnderTwoHundredThousandGas() (gas: 194709)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 31.02ms (330.34µs CPU time)\n\nRan 17 tests for test/AuditRound1.t.sol:AuditRound1Test\n[PASS] test_aCheckpointOlderThanTwoDaysIsNoDayOldReference() (gas: 1831944)\n[PASS] test_aCreditThatPullsNothingLeavesNoAllowance() (gas: 1120430)\n[PASS] test_aDustFirstBuyDoesNotConsumeTheFirstBuyException() (gas: 1863003)\n[PASS] test_aDustTradeInTheCurrentHourDoesNotEvictTheDayOldReference() (gas: 12204806)\n[PASS] test_aFlashTakenPoolManagerCannotStripThePayouts() (gas: 2866126)\n[PASS] test_aPleaOfTheWholeBalanceIsRefusedAsFeeTooHigh() (gas: 815604)\n[PASS] test_aPriceLimitedExactOutputTradeRevertsInsteadOfAShortDelta() (gas: 1525023)\n[PASS] test_aStalePendingLetterSaysToSettle() (gas: 6641811)\n[PASS] test_appealAutoOfASubFloorGatePleaIsRefused() (gas: 9933147)\n[PASS] test_exactOutputFeeSaleSplitsTheFeeOnTheFill() (gas: 6407021)\n[PASS] test_lapsedStatusCarriesTheEscrowNote() (gas: 6705201)\n[PASS] test_partialFillWithoutATraderRefundsTheRouter() (gas: 1024624)\n[PASS] test_rebalancePlacesNoWallAtASellerChosenDrainedTick() (gas: 2252966)\n[PASS] test_recordedPointsAreShownAsCounted() (gas: 7763908)\n[PASS] test_theOwnersTwoImdOpeningBuyClosesTheOpeningException() (gas: 1582371)\n[PASS] test_zeroFillSwapsInTheEmptyRegionDoNotDragTheReferenceTick() (gas: 5820762)\n[PASS] test_zeroRootIsRefused() (gas: 34916)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 81.28ms (53.98ms CPU time)\n\nRan 8 tests for test/TribunalOracleBoundary.t.sol:TribunalOracleBoundaryTest\n[PASS] test_failedReplacementDoesNotVoidTheOldCaseOrTakeAnotherStake() (gas: 899881)\n[PASS] test_invalidAttestationsAreAtomicAndDoNotConsumeTheRequest() (gas: 6237208)\n[PASS] test_issuedAtToleratesExactlyFiveMinutesOfSignerClockDrift() (gas: 155110)\n[PASS] test_revertingCheckpointRollsBackBothTheTransferAndTheSettledFlag() (gas: 628076)\n[PASS] test_revertingRefundIsRetryableAndDoesNotBlockAnUnrelatedStake() (gas: 8220351)\n[PASS] test_signedValidityAndPendingDeadlineAreInclusiveAtTheirExactBoundaries() (gas: 224022)\n[PASS] test_unknownPaidFailureCannotVoidOurStake() (gas: 947289)\n[PASS] test_validTribunalSignatureOnSomebodyElsesPaidRequestCannotRuleOurCase() (gas: 3738541)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 80.95ms (13.47ms CPU time)\n\nRan 3 tests for test/LaunchManifest.t.sol:PostLaunchTest\n[PASS] test_committedHookDeploysLaterAndMintsOnlyTheFixedSplit() (gas: 28178291)\n[PASS] test_committedLetterboxDeploysLater() (gas: 10785474)\nLogs:\n  deployLetterbox transaction gas: 5575052\n\n[PASS] test_committedTribunalDeploysLater() (gas: 9697608)\nLogs:\n  deployTribunal transaction gas: 4910592\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 89.88ms (39.77ms CPU time)\n\nRan 6 tests for test/TraderResolverBoundary.t.sol:TraderResolverBoundaryTest\n[PASS] testFuzz_malformedVaultDiscoveryDoesNotRevertOrTruncate(uint8,uint96) (runs: 256, μ: 162686, ~: 159048)\n[PASS] test_missingRevertingAndZeroVaultDiscoveryAllowsDeployment() (gas: 564784)\n[PASS] test_namedContractWalletIsAcceptedWhenItIsNotTheRouter() (gas: 21098)\n[PASS] test_plainWalletFallbackUsesSenderAndNeverTransactionOrigin() (gas: 62571)\n[PASS] test_plainWalletInfrastructureIsExcludedEvenWithoutCode() (gas: 45946)\n[PASS] test_vaultAddressIsCachedAndIsNotReadAgainDuringResolution() (gas: 169480)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 85.05ms (84.57ms CPU time)\n\nRan 16 tests for test/SeasonFunds.t.sol:SeasonFundsTest\n[PASS] testFuzz_lateCloseConservesAssets(uint96,uint96,bool) (runs: 32, μ: 1218474, ~: 1178408)\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 20.81ms (26.74ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingPleaZeroTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7925770, ~: 7930705)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 8027729)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7917442)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23587630)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 148.58ms (119.14ms CPU time)\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 149.26ms (1.40ms CPU time)\n\nRan 30 tests for test/Orientation.t.sol:LetterboxImdIsZeroTest\n[PASS] testFuzz_namesAreUniqueIdempotentAndReleasedOnClear(uint256,uint8) (runs: 32, μ: 319768, ~: 315509)\n[PASS] test_aBareCommandWordIsNotAPlea() (gas: 6089428)\n[PASS] test_aLapsedApprovalSettlesAndStillCounts() (gas: 5678158)\n[PASS] test_anAppealOfAFloorSizedLetterIsNotRefused() (gas: 10763539)\n[PASS] test_anOverLongLetterIsRefusedByName() (gas: 5940115)\n[PASS] test_anyoneDeliversAnApprovalForTheTip() (gas: 6371125)\n[PASS] test_appealByLetterKeepsTheOriginalShareAndPaysTheWall() (gas: 10468594)\n[PASS] test_appealLetterRetriesAnAppealTheOracleNeverAnswered() (gas: 22098836)\n[PASS] test_autoSellFeeOnlyOnASaleAndNeverMoreThanHalfOfIt() (gas: 9971631)\n[PASS] test_deadCabalRefusesLettersButSettles() (gas: 5417074)\n[PASS] test_deliverNeedsAnApprovalInsideTheWindowAndTheMinimum() (gas: 6182137)\n[PASS] test_deployLetterboxRefusesOtherCode() (gas: 17261205)\n[PASS] test_expiredPendingPleaSettlesAfterTwentyMinutes() (gas: 5284682)\n[PASS] test_explorerLetterIsTheSameAsARawLetter() (gas: 13829809)\n[PASS] test_invalidNamesAndFailedRenamesPreserveTheOldReservation() (gas: 1339372)\n[PASS] test_leaderboardListsTheSeason() (gas: 6574625)\n[PASS] test_letterCommandsParse() (gas: 9023690)\n[PASS] test_letterPleadsFifteenPercentPaysFeesInPleaAndEscrows() (gas: 5367725)\n[PASS] test_letterRefusesEthTinyBalancesAndBadText() (gas: 1431206)\n[PASS] test_letterboxIsDeployedOnceFromTheCommittedCode() (gas: 521909)\n[PASS] test_noFunctionIdCanStartALetter() (gas: 948943)\n[PASS] test_noVerdictSettlesAtOnceAndTheNextLetterSettlesTheOldOne() (gas: 8747465)\n[PASS] test_orientationIsImdZero() (gas: 14013)\n[PASS] test_settleReturnsEscrowAndTipAfterADenial() (gas: 5639326)\n[PASS] test_siteAutoSellPleadsAnyValidAmount() (gas: 10282292)\n[PASS] test_statusTellsEachState() (gas: 10558007)\n[PASS] test_strangersCannotUseTheCourtEntryPoints() (gas: 211079)\n[PASS] test_theGateRefusesAManualSaleOfAnEscrowedPlea() (gas: 5373988)\n[PASS] test_theSellLetterIsTheWritersOwnSale() (gas: 6203602)\n[PASS] test_theSitesAutoSellBoxPaysTheFeeAndALetterDoesNot() (gas: 10925955)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 150.15ms (80.49ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingPaidFeePleaZeroTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7890784, ~: 7894876)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 7993888)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7881614)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23480146)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 159.10ms (129.77ms CPU time)\n\nRan 19 tests for test/Hook.t.sol:HookTest\n[PASS] test_aBuyMustAffordTheCredit() (gas: 1261341)\n[PASS] test_aSellAboveTheCapIsTrimmedAndBurned() (gas: 1856252)\n[PASS] test_avgBuyTimeIsBuyWeighted() (gas: 1086290)\n[PASS] test_capDecayIsSetSoTheFloorIsReachableIn15Days() (gas: 22797)\n[PASS] test_capFollowsBuysAtMostOneDayOfDecayPerDay() (gas: 1827949)\n[PASS] test_everyFeeIsPaidInTheSameSwap() (gas: 1307923)\n[PASS] test_factScoreUsesCheckpointsNotSpot() (gas: 1681835)\n[PASS] test_firstBuyWithAnEmptyPoolSendsPayoutsToLiquidity() (gas: 577418)\n[PASS] test_freeTradingWhenTheCabalSleeps() (gas: 1118981)\n[PASS] test_hourlyCheckpointIsNotSetByTheTradeThatOpensTheHour() (gas: 1987336)\n[PASS] test_plainImdOnlyWhenTheCreditReverts() (gas: 1211651)\n[PASS] test_rebalanceRedeemsClaimsIntoTheWall() (gas: 4750766)\n[PASS] test_sellsAndExactOutputOnlyThroughTheGateWhileAlive() (gas: 754427)\n[PASS] test_stackerIsApprovedOnlyForTheCashbackBeingCredited() (gas: 1836865)\n[PASS] test_wallGuardDropsAtOnceAndRisesFourPercentADay() (gas: 34584932)\n[PASS] test_wallGuardIgnoresASellerChosenLimitReachedThroughAnEmptyPool() (gas: 2813781)\n[PASS] test_wallGuardIgnoresTheEmptyPoolsPriceLimit() (gas: 2788424)\n[PASS] test_wallGuardLagsAPumpAndCapsTheWall() (gas: 17134165)\n[PASS] test_wallGuardStillDropsAtOnceToASellerChosenLimitInsideTheBand() (gas: 33374968)\nSuite result: ok. 19 passed; 0 failed; 0 skipped; finished in 160.18ms (142.24ms CPU time)\n\nRan 4 tests for test/AppealRounding.t.sol:AppealRoundingTest\n[PASS] testFuzz_minimumPleaAppealsThroughEveryLetterEntry(uint8,uint8) (runs: 32, μ: 7926266, ~: 7930705)\n[PASS] test_cappedMinimumSitePleaCanAppealAfterFeeSale() (gas: 8027729)\n[PASS] test_minimumSitePleaCanAppealAfterFeeSaleRounding() (gas: 7917442)\n[PASS] test_shareBandsAndFiftyPercentClampKeepTheirExistingRounding() (gas: 23587630)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 161.17ms (121.53ms CPU time)\n\nRan 22 tests for test/Tribunal.t.sol:TribunalTest\n[PASS] test_aStalePendingObjectionIsVoidedByTheNextObjector() (gas: 20501633)\n[PASS] test_aStalePendingObjectionNeverHoldsPastTheWindow() (gas: 17749021)\n[PASS] test_aSustainClosesTheCase() (gas: 9466294)\n[PASS] test_anExcludedSellersPleaCannotBeObjectedTo() (gas: 6017176)\n[PASS] test_anExcludedSellersPleaIsNeverHeld() (gas: 5695573)\n[PASS] test_atMostTwoRulingsFromDifferentWallets() (gas: 13765554)\n[PASS] test_callbackFitsTheIntakesGasBudget() (gas: 9295719)\nLogs:\n  gate verdict callback gas: 58981\n  tribunal ruling callback gas: 83885\n\n[PASS] test_executedAndLapsedApprovalsCanBeObjectedTo() (gas: 17359263)\n[PASS] test_expireByTimeAndByACompletedRequest() (gas: 16876628)\n[PASS] test_marginEdge() (gas: 16925439)\n[PASS] test_onlyApprovedPleasCanBeObjectedTo() (gas: 7918044)\n[PASS] test_overruledAboveTheOriginalKeepsTheOriginalScore() (gas: 9579003)\n[PASS] test_overruledObjectionLowersTheScoreToTheLowestPanelAndFeedsThePot() (gas: 9834934)\n[PASS] test_questionAndBody() (gas: 14783279)\n[PASS] test_rulingsNeverResetTheDeadMan() (gas: 9297501)\n[PASS] test_settleNeedsARuling() (gas: 9169214)\n[PASS] test_statusText() (gas: 17439623)\n[PASS] test_sustainedObjectionLeavesNoPointsAndReturnsTheStake() (gas: 9675960)\n[PASS] test_textRules() (gas: 9242924)\n[PASS] test_theSellerAndTheOwnersCannotObject() (gas: 5445991)\n[PASS] test_voidObjectionReturnsTheStakeAndFreesTheSlot() (gas: 13027226)\n[PASS] test_windowEdges() (gas: 12600876)\nSuite result: ok. 22 passed; 0 failed; 0 skipped; finished in 116.54ms (60.63ms CPU time)\n\nRan 12 tests for test/AuditRevision.t.sol:AuditRevisionPleaZeroTest\n[PASS] testFuzz_cumulativeCapDecayStaysWithinElapsedBudget(uint256) (runs: 32, μ: 4070476, ~: 4070729)\n[PASS] test_appealRetryClearsTimedOutPendingAppeal() (gas: 12409582)\n[PASS] test_deadCabalBuyWithoutARecipientSkipsTheCashback() (gas: 2109578)\n[PASS] test_dustBuyDoesNotGiveUntrackedTokensLossOrHoldingPoints() (gas: 1364669)\n[PASS] test_expiredAppealCanBeRetriedWithoutLiftingDenialCooldown() (gas: 12610462)\n[PASS] test_lapsedApprovalCannotBypassCooldown() (gas: 8948434)\n[PASS] test_largeBuyClaimsAreRedeemableAndNextBuyStacksNormally() (gas: 2191654)\n[PASS] test_lateCloseDoesNotPayFutureSeasonFees() (gas: 14174409)\n[PASS] test_sameSecondCapRatchetsCannotReuseFractionalBudget() (gas: 861372)\n[PASS] test_seasonClaimsArePaidAsImdAtClose() (gas: 10687722)\n[PASS] test_secondLargeBuyPreservesEveryPayee() (gas: 1251971)\n[PASS] test_unansweredAppealDoesNotExtendTheOriginalWindow() (gas: 9100946)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 190.48ms (203.13ms CPU time)\n\nRan 12 tests for test/AuditRun3.t.sol:AuditRun3Test\n[PASS] test_F1_appealLetterCannotRetryAnAppealTheOracleNeverAnswered() (gas: 16701022)\n[PASS] test_F2_aCapSizedAutoSellPleaCannotBeAppealedThroughTheLetterbox() (gas: 34680837)\n[PASS] test_F3_aBareCommandWordBecomesAPaidPlea() (gas: 112577)\n[PASS] test_aLetterboxDeployedByAnyoneElseHasNoPowers() (gas: 10594523)\n[PASS] test_autoSellCannotAcceptASpotPriceUnderTheSnapshotFloor() (gas: 6936726)\n[PASS] test_escrowsAfterTheCabalDies() (gas: 13011907)\n[PASS] test_feeSaleIsBoundedAndTheTipReturns() (gas: 5301888)\n[PASS] test_letterParsingEdgeCases() (gas: 21164598)\n[PASS] test_markerRuleUnchanged() (gas: 6414400)\n[PASS] test_oneCapSizedSaleMovesSpotUnderOnePercent() (gas: 27886176)\nLogs:\n  price impact of a 2.5M PLEA sale, bps: 87\n\n[PASS] test_oracleBodyIsValidJsonForHostileTexts() (gas: 26325293)\n[PASS] test_priceViewsEqualAFullRingScan() (gas: 65247699)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 93.97ms (118.00ms CPU time)\n\nRan 9 tests for test/AuditRun5.t.sol:AuditRun5PleaFirstTest\n[PASS] testFuzz_markerPrefixesAreRefusedInAnyCase(uint16,bool,uint8) (runs: 32, μ: 67344, ~: 66856)\n[PASS] testFuzz_settlementAcrossTheBoundaryKeepsThePleasSeason(uint16) (runs: 32, μ: 9736414, ~: 9736414)\n[PASS] test_allNewPleaRoutesRefuseSellerWrittenObjectionMarkers() (gas: 778985)\n[PASS] test_appealRoutesAlsoRefuseForgedObjectionMarkers() (gas: 5655520)\n[PASS] test_lateSettlementFundsThePleasSeasonAndCheckpointsOtherDonations() (gas: 9945924)\n[PASS] test_onlyTheCommittedTribunalCanLabelAFundedApprovedStake() (gas: 5244711)\n[PASS] test_settlementAfterACloseGoesToRolloverOnce() (gas: 10234133)\n[PASS] test_similarWordsAndTruncatedPrefixesStillPass() (gas: 4779291)\n[PASS] test_twoFreshWalletRulingsStillCloseTheCaseAsRequired() (gas: 13588047)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 107.24ms (68.26ms CPU time)\n\nRan 5 tests for test/SeasonRanking.t.sol:SeasonRankingTest\n[PASS] testFuzz_rankingsMatchSortedResultsInAnyRecordOrder(uint256) (runs: 32, μ: 14563081, ~: 14534316)\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 252.34ms (254.14ms CPU time)\n\nRan 20 tests for test/Orientation.t.sol:HookImdIsZeroTest\n[PASS] test_aBuyMustAffordTheCredit() (gas: 1262544)\n[PASS] test_aSellAboveTheCapIsTrimmedAndBurned() (gas: 1857536)\n[PASS] test_avgBuyTimeIsBuyWeighted() (gas: 1087873)\n[PASS] test_capDecayIsSetSoTheFloorIsReachableIn15Days() (gas: 22797)\n[PASS] test_capFollowsBuysAtMostOneDayOfDecayPerDay() (gas: 1829511)\n[PASS] test_everyFeeIsPaidInTheSameSwap() (gas: 1308875)\n[PASS] test_factScoreUsesCheckpointsNotSpot() (gas: 1683774)\n[PASS] test_firstBuyWithAnEmptyPoolSendsPayoutsToLiquidity() (gas: 578107)\n[PASS] test_freeTradingWhenTheCabalSleeps() (gas: 1119329)\n[PASS] test_hourlyCheckpointIsNotSetByTheTradeThatOpensTheHour() (gas: 1989646)\n[PASS] test_orientationIsImdZero() (gas: 13575)\n[PASS] test_plainImdOnlyWhenTheCreditReverts() (gas: 1212842)\n[PASS] test_rebalanceRedeemsClaimsIntoTheWall() (gas: 4751240)\n[PASS] test_sellsAndExactOutputOnlyThroughTheGateWhileAlive() (gas: 754937)\n[PASS] test_stackerIsApprovedOnlyForTheCashbackBeingCredited() (gas: 1838827)\n[PASS] test_wallGuardDropsAtOnceAndRisesFourPercentADay() (gas: 34664576)\n[PASS] test_wallGuardIgnoresASellerChosenLimitReachedThroughAnEmptyPool() (gas: 2813978)\n[PASS] test_wallGuardIgnoresTheEmptyPoolsPriceLimit() (gas: 2792414)\n[PASS] test_wallGuardLagsAPumpAndCapsTheWall() (gas: 17159433)\n[PASS] test_wallGuardStillDropsAtOnceToASellerChosenLimitInsideTheBand() (gas: 33453042)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 275.24ms (129.18ms CPU time)\n\nRan 18 tests for test/Orientation.t.sol:AuditRound1ImdIsZeroTest\n[PASS] test_aCheckpointOlderThanTwoDaysIsNoDayOldReference() (gas: 1834256)\n[PASS] test_aCreditThatPullsNothingLeavesNoAllowance() (gas: 1121370)\n[PASS] test_aDustFirstBuyDoesNotConsumeTheFirstBuyException() (gas: 1864984)\n[PASS] test_aDustTradeInTheCurrentHourDoesNotEvictTheDayOldReference() (gas: 12227274)\n[PASS] test_aFlashTakenPoolManagerCannotStripThePayouts() (gas: 2868469)\n[PASS] test_aPleaOfTheWholeBalanceIsRefusedAsFeeTooHigh() (gas: 816068)\n[PASS] test_aPriceLimitedExactOutputTradeRevertsInsteadOfAShortDelta() (gas: 1526673)\n[PASS] test_aStalePendingLetterSaysToSettle() (gas: 6644197)\n[PASS] test_appealAutoOfASubFloorGatePleaIsRefused() (gas: 9935507)\n[PASS] test_exactOutputFeeSaleSplitsTheFeeOnTheFill() (gas: 6409397)\n[PASS] test_lapsedStatusCarriesTheEscrowNote() (gas: 6707587)\n[PASS] test_orientationIsImdZero() (gas: 13901)\n[PASS] test_partialFillWithoutATraderRefundsTheRouter() (gas: 1025604)\n[PASS] test_rebalancePlacesNoWallAtASellerChosenDrainedTick() (gas: 2249993)\n[PASS] test_recordedPointsAreShownAsCounted() (gas: 7766078)\n[PASS] test_theOwnersTwoImdOpeningBuyClosesTheOpeningException() (gas: 1583936)\n[PASS] test_zeroFillSwapsInTheEmptyRegionDoNotDragTheReferenceTick() (gas: 5814073)\n[PASS] test_zeroRootIsRefused() (gas: 34916)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 254.71ms (42.81ms CPU time)\n\nRan 11 tests for test/Orientation.t.sol:SeasonsImdIsZeroTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4930542)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236802)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 24891266)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 58942459)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5915009)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 12328520)\n[PASS] test_onlyApprovedPleasScore() (gas: 5042142)\n[PASS] test_orientationIsImdZero() (gas: 13483)\n[PASS] test_secondSeasonScoresSeparately() (gas: 46077562)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 61106225)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 116165615)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 194.06ms (75.05ms CPU time)\n\nRan 5 tests for test/Launch.t.sol:LaunchTest\n[PASS] test_deployHookChecksTheInitCodeAndFlags() (gas: 146430159)\n[PASS] test_eachStepFitsAMainnetTransaction() (gas: 151070236)\nLogs:\n  launch (5 contracts + intake mock): 12660599\n  deployLetterbox: 5204340\n  deployHook: 5692232\n  seed: 618617\n\n[PASS] test_launchWiresEverythingWithoutCallingOutside() (gas: 12782117)\n[PASS] test_ownerMaySeedEarly() (gas: 145583705)\n[PASS] test_seedByOwnerAnyTimeByAnyoneAfterStart() (gas: 145691063)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 325.30ms (318.17ms CPU time)\n\nRan 3 tests for test/AuditRound1.t.sol:AuditRound1MainnetAppealTest\n[PASS] test_aSmallWriterCanAppealByLetterAfterThePriceFell() (gas: 31030384)\n[PASS] test_aSmallWriterCanAppealByLetterOnMainnet() (gas: 10866194)\n[PASS] test_anAppealWhoseFeesDoNotFitTheBalanceIsRefusedAsFeeTooHigh() (gas: 29298606)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 368.77ms (38.05ms CPU time)\n\nRan 11 tests for test/Orientation.t.sol:SeasonsPleaIsZeroTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4930542)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236802)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 24891266)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 58942459)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5915465)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 12327596)\n[PASS] test_onlyApprovedPleasScore() (gas: 5042142)\n[PASS] test_orientationIsPleaZero() (gas: 15702)\n[PASS] test_secondSeasonScoresSeparately() (gas: 46077562)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 61106225)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 116165615)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 280.19ms (72.00ms CPU time)\n\nRan 10 tests for test/Seasons.t.sol:SeasonsTest\n[PASS] test_aLateCallbackCannotRevive() (gas: 4930520)\n[PASS] test_aliveFromSeedDeadAfterSilenceForever() (gas: 236691)\n[PASS] test_bestThreeCountAndTopTenOrder() (gas: 24891244)\n[PASS] test_closeSeasonPaysTheTopTen() (gas: 58942459)\n[PASS] test_constructorAcceptsAnyClockOnChainOne() (gas: 5915443)\n[PASS] test_deathEndsTheLastSeasonAndTheRestGoesToTheWall() (gas: 12327596)\n[PASS] test_onlyApprovedPleasScore() (gas: 5042120)\n[PASS] test_secondSeasonScoresSeparately() (gas: 46077562)\n[PASS] test_tiesRankTheEarlierPleaFirstAndALaterTieSlotsInBelow() (gas: 61106203)\n[PASS] test_verdictsKeepItAliveAcrossManySeasons() (gas: 116165593)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 318.10ms (69.29ms CPU time)\n\nRan 20 tests for test/Orientation.t.sol:HookPleaIsZeroTest\n[PASS] test_aBuyMustAffordTheCredit() (gas: 1261341)\n[PASS] test_aSellAboveTheCapIsTrimmedAndBurned() (gas: 1856274)\n[PASS] test_avgBuyTimeIsBuyWeighted() (gas: 1086290)\n[PASS] test_capDecayIsSetSoTheFloorIsReachableIn15Days() (gas: 22797)\n[PASS] test_capFollowsBuysAtMostOneDayOfDecayPerDay() (gas: 1827949)\n[PASS] test_everyFeeIsPaidInTheSameSwap() (gas: 1307945)\n[PASS] test_factScoreUsesCheckpointsNotSpot() (gas: 1681835)\n[PASS] test_firstBuyWithAnEmptyPoolSendsPayoutsToLiquidity() (gas: 577440)\n[PASS] test_freeTradingWhenTheCabalSleeps() (gas: 1119003)\n[PASS] test_hourlyCheckpointIsNotSetByTheTradeThatOpensTheHour() (gas: 1987336)\n[PASS] test_orientationIsPleaZero() (gas: 15862)\n[PASS] test_plainImdOnlyWhenTheCreditReverts() (gas: 1211651)\n[PASS] test_rebalanceRedeemsClaimsIntoTheWall() (gas: 4750766)\n[PASS] test_sellsAndExactOutputOnlyThroughTheGateWhileAlive() (gas: 754427)\n[PASS] test_stackerIsApprovedOnlyForTheCashbackBeingCredited() (gas: 1836887)\n[PASS] test_wallGuardDropsAtOnceAndRisesFourPercentADay() (gas: 34584932)\n[PASS] test_wallGuardIgnoresASellerChosenLimitReachedThroughAnEmptyPool() (gas: 2813781)\n[PASS] test_wallGuardIgnoresTheEmptyPoolsPriceLimit() (gas: 2788467)\n[PASS] test_wallGuardLagsAPumpAndCapsTheWall() (gas: 17134165)\n[PASS] test_wallGuardStillDropsAtOnceToASellerChosenLimitInsideTheBand() (gas: 33374990)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 412.57ms (115.04ms CPU time)\n\nRan 13 tests for test/HookRevision.t.sol:HookRevisionPleaIsZeroTest\n[PASS] testFuzz_aGreedyStackerCannotReachTheWallReserve(uint256,uint256) (runs: 32, μ: 1324782, ~: 1324959)\n[PASS] testFuzz_aLimitAnywhereInTheLiquidityFreeRegionNeverMovesTheGuard(uint256,uint256) (runs: 32, μ: 2519550, ~: 2502443)\n[PASS] testFuzz_aLimitInsideTheLiquidMarketBandMovesTheGuardToTheStopTick(uint256) (runs: 32, μ: 5205615, ~: 5205662)\n[PASS] testFuzz_aSameHourPumpCannotMoveAPleasFactScore(uint256) (runs: 32, μ: 3189782, ~: 3192269)\n[PASS] testFuzz_repeatedDrainsToTheExtremeNeverMoveTheGuard(uint8) (runs: 32, μ: 4025740, ~: 3717674)\n[PASS] testFuzz_successfulCreditsNeverAccumulateAllowance(uint256,uint256,uint256) (runs: 32, μ: 2165057, ~: 2157507)\n[PASS] testFuzz_theGuardClimbsAtMost400TicksADay(uint256,uint256,uint8) (runs: 32, μ: 3123428, ~: 3133513)\n[PASS] testFuzz_theHoursFirstTradeRecordsThePriceItFoundWhateverItsSize(uint256,uint256) (runs: 32, μ: 2272902, ~: 2265396)\n[PASS] test_aCreditThatBurnsAllItsGasLeavesNoAllowance() (gas: 1605349)\n[PASS] test_anHourOpeningSellRecordsThePriceItFound() (gas: 2032653)\n[PASS] test_emptyRegionBitmapBoundaryStopsAtTheExactPriceLimit() (gas: 2314822)\n[PASS] test_orientationIsPleaZero() (gas: 15620)\n[PASS] test_wallGuardFollowsASellThatStopsWhereTheMarketHasLiquidity() (gas: 6129482)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 349.19ms (673.14ms CPU time)\n\nRan 13 tests for test/HookRevision.t.sol:HookRevisionImdIsZeroTest\n[PASS] testFuzz_aGreedyStackerCannotReachTheWallReserve(uint256,uint256) (runs: 32, μ: 1325767, ~: 1325937)\n[PASS] testFuzz_aLimitAnywhereInTheLiquidityFreeRegionNeverMovesTheGuard(uint256,uint256) (runs: 32, μ: 2534626, ~: 2508696)\n[PASS] testFuzz_aLimitInsideTheLiquidMarketBandMovesTheGuardToTheStopTick(uint256) (runs: 32, μ: 5214185, ~: 5214229)\n[PASS] testFuzz_aSameHourPumpCannotMoveAPleasFactScore(uint256) (runs: 32, μ: 3192538, ~: 3194920)\n[PASS] testFuzz_repeatedDrainsToTheExtremeNeverMoveTheGuard(uint8) (runs: 32, μ: 3868700, ~: 3734004)\n[PASS] testFuzz_successfulCreditsNeverAccumulateAllowance(uint256,uint256,uint256) (runs: 32, μ: 2166349, ~: 2159664)\n[PASS] testFuzz_theGuardClimbsAtMost400TicksADay(uint256,uint256,uint8) (runs: 32, μ: 2927139, ~: 2782890)\n[PASS] testFuzz_theHoursFirstTradeRecordsThePriceItFoundWhateverItsSize(uint256,uint256) (runs: 32, μ: 2275978, ~: 2268437)\n[PASS] test_aCreditThatBurnsAllItsGasLeavesNoAllowance() (gas: 1606540)\n[PASS] test_anHourOpeningSellRecordsThePriceItFound() (gas: 2033129)\n[PASS] test_emptyRegionBitmapBoundaryStopsAtTheExactPriceLimit() (gas: 2321440)\n[PASS] test_orientationIsImdZero() (gas: 13404)\n[PASS] test_wallGuardFollowsASellThatStopsWhereTheMarketHasLiquidity() (gas: 6134426)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 413.37ms (678.60ms CPU time)\n\nRan 5 tests for test/GasPass.t.sol:GasPassTest\n[PASS] testFuzz_bodyEqualsEscapingTheWholeQuestion(uint256) (runs: 500, μ: 5601459, ~: 5578392)\n[PASS] testFuzz_textCheckMatchesTheReferenceRules(uint256) (runs: 5000, μ: 952755, ~: 84308)\n[PASS] test_bodyEqualsEscapingTheWholeQuestion() (gas: 12950113)\n[PASS] test_priceViewsMatchAFullScan() (gas: 207364262)\n[PASS] test_textCheckEdgeCases() (gas: 54236484)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 324.82ms (733.12ms CPU time)\n\nRan 4 tests for test/TribunalTextProperties.t.sol:TribunalTextPropertiesTest\n[PASS] testFuzz_markerPrefixesAreRejectedBeforeAnyPayment(uint16,uint16,bool) (runs: 256, μ: 4854749, ~: 4853747)\n[PASS] testFuzz_utf8AndEscapesSurviveTheOracleBody(bytes32,uint16) (runs: 128, μ: 11691517, ~: 11602803)\n[PASS] test_malformedUtf8ControlsAndInvisibleCharactersAreRejected() (gas: 5549472)\n[PASS] test_oneByteAnd280BytesAcceptButZeroAnd281Reject() (gas: 13451791)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 425.48ms (430.72ms CPU time)\n\nRan 6 tests for test/JudgeFindings.t.sol:JudgeFindingsTest\n[PASS] test_aSmallWriterCanAppealByLetter() (gas: 8100463)\n[PASS] test_appealAutoOfAMinimumPleaStaysAtTheMinimum() (gas: 8771795)\n[PASS] test_appealLetterKeepsTheOriginalShareBand() (gas: 7949076)\n[PASS] test_deliverAfterACrashCapsTheFeeAtTheSale() (gas: 566486335)\n[PASS] test_fiftyPercentCeilingAndShareBands() (gas: 23927202)\n[PASS] test_ownershipTransferNeedsAcceptanceSoALeaderKeepsThePrize() (gas: 7157932)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 431.43ms (247.23ms CPU time)\n\nRan 12 tests for test/AuditRevision.t.sol:AuditRevisionTest\n[PASS] testFuzz_cumulativeCapDecayStaysWithinElapsedBudget(uint256) (runs: 32, μ: 4073561, ~: 4068784)\n[PASS] test_appealRetryClearsTimedOutPendingAppeal() (gas: 12410032)\n[PASS] test_deadCabalBuyWithoutARecipientSkipsTheCashback() (gas: 2110107)\n[PASS] test_dustBuyDoesNotGiveUntrackedTokensLossOrHoldingPoints() (gas: 1365362)\n[PASS] test_expiredAppealCanBeRetriedWithoutLiftingDenialCooldown() (gas: 12610912)\n[PASS] test_lapsedApprovalCannotBypassCooldown() (gas: 8948884)\n[PASS] test_largeBuyClaimsAreRedeemableAndNextBuyStacksNormally() (gas: 2192535)\n[PASS] test_lateCloseDoesNotPayFutureSeasonFees() (gas: 14180551)\n[PASS] test_sameSecondCapRatchetsCannotReuseFractionalBudget() (gas: 862320)\n[PASS] test_seasonClaimsArePaidAsImdAtClose() (gas: 10689580)\n[PASS] test_secondLargeBuyPreservesEveryPayee() (gas: 1252795)\n[PASS] test_unansweredAppealDoesNotExtendTheOriginalWindow() (gas: 9101396)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 485.79ms (137.09ms CPU time)\n\nRan 12 tests for test/HookRevision.t.sol:HookRevisionTest\n[PASS] testFuzz_aGreedyStackerCannotReachTheWallReserve(uint256,uint256) (runs: 64, μ: 1324637, ~: 1324883)\n[PASS] testFuzz_aLimitAnywhereInTheLiquidityFreeRegionNeverMovesTheGuard(uint256,uint256) (runs: 64, μ: 2513524, ~: 2502421)\n[PASS] testFuzz_aLimitInsideTheLiquidMarketBandMovesTheGuardToTheStopTick(uint256) (runs: 64, μ: 5205633, ~: 5205704)\n[PASS] testFuzz_aSameHourPumpCannotMoveAPleasFactScore(uint256) (runs: 64, μ: 3190035, ~: 3192693)\n[PASS] testFuzz_repeatedDrainsToTheExtremeNeverMoveTheGuard(uint8) (runs: 64, μ: 4134170, ~: 3717652)\n[PASS] testFuzz_successfulCreditsNeverAccumulateAllowance(uint256,uint256,uint256) (runs: 64, μ: 2167479, ~: 2157501)\n[PASS] testFuzz_theGuardClimbsAtMost400TicksADay(uint256,uint256,uint8) (runs: 64, μ: 2968324, ~: 2878854)\n[PASS] testFuzz_theHoursFirstTradeRecordsThePriceItFoundWhateverItsSize(uint256,uint256) (runs: 64, μ: 2275851, ~: 2265834)\n[PASS] test_aCreditThatBurnsAllItsGasLeavesNoAllowance() (gas: 1605327)\n[PASS] test_anHourOpeningSellRecordsThePriceItFound() (gas: 2032631)\n[PASS] test_emptyRegionBitmapBoundaryStopsAtTheExactPriceLimit() (gas: 2314800)\n[PASS] test_wallGuardFollowsASellThatStopsWhereTheMarketHasLiquidity() (gas: 6129460)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 485.66ms (1.16s CPU time)\n\nRan 6 tests for test/JudgeFindings.t.sol:JudgeFindingsPleaZeroTest\n[PASS] test_aSmallWriterCanAppealByLetter() (gas: 8100463)\n[PASS] test_appealAutoOfAMinimumPleaStaysAtTheMinimum() (gas: 8771795)\n[PASS] test_appealLetterKeepsTheOriginalShareBand() (gas: 7949076)\n[PASS] test_deliverAfterACrashCapsTheFeeAtTheSale() (gas: 566486335)\n[PASS] test_fiftyPercentCeilingAndShareBands() (gas: 23927202)\n[PASS] test_ownershipTransferNeedsAcceptanceSoALeaderKeepsThePrize() (gas: 7157932)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 483.50ms (308.27ms CPU time)\n\nRan 59 test suites in 520.50ms (8.94s CPU time): 603 tests passed, 0 failed, 0 skipped (603 total tests)\n","passed":true},{"durationMs":142,"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\":4,\"ADAPTATION.md\":46,\"OBJECTIONS.md\":339,\"README.md\":301,\"audit/FINDINGS.md\":96,\"audit/README.md\":35,\"audit/THREAT-MODEL.md\":108,\"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,\"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\":884,\"src/Letterbox.sol\":747,\"src/OracleAttestation.sol\":227,\"src/PLEA.sol\":151,\"src/PleaDistributor.sol\":60,\"src/PleaHook.sol\":1093,\"src/PleaLaunch.sol\":195,\"src/Seasons.sol\":467,\"src/Tribunal.sol\":530,\"src/interfaces/IPleaParts.sol\":76,\"src/interfaces/IStacker.sol\":12,\"test/AppealRounding.t.sol\":143,\"test/ArtifactDeployment.t.sol\":59,\"test/AuditImported.t.sol\":142,\"test/AuditRevision.t.sol\":277,\"test/AuditRound1.t.sol\":591,\"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\":342,\"test/Gate.t.sol\":409,\"test/GateAdversarial.t.sol\":400,\"test/GateFailureInvariant.t.sol\":330,\"test/Hook.t.sol\":359,\"test/HookAdversarial.t.sol\":256,\"test/HookRevision.t.sol\":406,\"test/JudgeFindings.t.sol\":221,\"test/Launch.t.sol\":175,\"test/LaunchManifest.t.sol\":370,\"test/Letterbox.t.sol\":915,\"test/LetterboxInvariant.t.sol\":447,\"test/MainnetGuard.t.sol\":61,\"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/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\":495,\"test/Tribunal.t.sol\":500,\"test/TribunalAdversarial.t.sol\":225,\"test/TribunalInvariant.t.sol\":585,\"test/TribunalOracleBoundary.t.sol\":334,\"test/TribunalSeasons.t.sol\":300,\"test/TribunalStanding.t.sol\":217,\"test/TribunalTextProperties.t.sol\":181,\"test/fork/ForkMainnet.t.sol\":394,\"test/fork/ForkTestnet.t.sol\":871,\"test/utils/AdversarialTraderRouter.sol\":38,\"test/utils/ArtifactDeployment.sol\":23,\"test/utils/ClaimTree.sol\":41,\"test/utils/Fixture.sol\":345,\"test/utils/Mocks.sol\":371,\"test/utils/SeasonModel.sol\":117,\"test/utils/SepoliaFixture.sol\":36},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":21198,"exitCode":0,"name":"slither","output":"[high/medium] weak-prng at src/PleaHook.sol:1031: PleaHook._checkpoint(uint160) (src/PleaHook.sol#1031-1041) uses a weak PRNG: \"c = ring[hour % RING] (src/PleaHook.sol#1033)\"\n[high/medium] weak-prng at src/PleaHook.sol:290: PleaHook.price24hAgo() (src/PleaHook.sol#290-304) uses a weak PRNG: \"t = ring[target % RING] (src/PleaHook.sol#293)\"\n[high/medium] weak-prng at src/PleaHook.sol:1004: PleaHook._updateWallGuard(int24) (src/PleaHook.sol#1004-1029) uses a weak PRNG: \"guardRemainder = numerator % 86400 (src/PleaHook.sol#1016)\"\n[high/medium] weak-prng at src/PleaHook.sol:274: PleaHook.latestPrice() (src/PleaHook.sol#274-287) uses a weak PRNG: \"best = ring[lastCheckpointHour % RING].priceX96 (src/PleaHook.sol#277)\"\n[high/high] uninitialized-state at src/Tribunal.sol:181: Tribunal.cases (src/Tribunal.sol#157) is never initialized. It is used in:\n[high/high] uninitialized-state at src/Seasons.sol:127: Seasons._best (src/Seasons.sol#86) is never initialized. It is used in:\n[high/high] uninitialized-state at src/Seasons.sol:260: Seasons._bestPleaIds (src/Seasons.sol#87) is never initialized. It is used in:\n[high/high] uninitialized-state at src/Seasons.sol:112: Seasons._top (src/Seasons.sol#85) is never initialized. It is used in:\n[medium/medium] divide-before-multiply at src/PleaHook.sol:1063: PleaHook._alignUp(int24) (src/PleaHook.sol#1063-1067) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/PleaHook.sol:1069: PleaHook._alignDown(int24) (src/PleaHook.sol#1069-1073) performs a multiplication on the result of a division:\n[medium/high] incorrect-equality at src/PleaHook.sol:825: PleaHook.rebalance() (src/PleaHook.sol#825-831) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/PleaHook.sol:836: PleaHook._rebalance() (src/PleaHook.sol#836-903) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/PleaHook.sol:836: PleaHook._rebalance() (src/PleaHook.sol#836-903) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Seasons.sol:463: Seasons._pay(address,uint256) (src/Seasons.sol#463-466) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/CabalGate.sol:207: CabalGate.restricted() (src/CabalGate.sol#207-209) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/CabalGate.sol:398: CabalGate._open(address,uint256,string,uint256,uint256) (src/CabalGate.sol#398-426) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Seasons.sol:178: Seasons.checkpoint() (src/Seasons.sol#178-189) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/PleaHook.sol:337: PleaHook._pleaIn(PleaHook.Band,uint160) (src/PleaHook.sol#337-349) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/PleaHook.sol:762: PleaHook._applyCap() (src/PleaHook.sol#762-804) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/PleaHook.sol:307: PleaHook.launchExtraBps() (src/PleaHook.sol#307-312) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/PleaHook.sol:762: PleaHook._applyCap() (src/PleaHook.sol#762-804) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Letterbox.sol:448: Letterbox._settleOpen(address) (src/Letterbox.sol#448-453) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Letterbox.sol:425: Letterbox._settle(uint256) (src/Letterbox.sol#425-445) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/PleaHook.sol:290: PleaHook.price24hAgo() (src/PleaHook.sol#290-304) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Letterbox.sol:455: Letterbox._settleable(uint256) (src/Letterbox.sol#455-462) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/CabalGate.sol:212: CabalGate.diedAt() (src/CabalGate.sol#212-215) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Letterbox.sol:455: Letterbox._settleable(uint256) (src/Letterbox.sol#455-462) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Letterbox.sol:385: Letterbox._close(uint256,Letterbox.Escrow) (src/Letterbox.sol#385-389) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Seasons.sol:355: Seasons.flushToWall() (src/Seasons.sol#355-373) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/CabalGate.sol:398: CabalGate._open(address,uint256,string,uint256,uint256) (src/CabalGate.sol#398-426) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Letterbox.sol:425: Letterbox._settle(uint256) (src/Letterbox.sol#425-445) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/PleaHook.sol:967: PleaHook._settleImd(uint256) (src/PleaHook.sol#967-972) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/CabalGate.sol:251: CabalGate._factScore(address,uint256,uint256) (src/CabalGate.sol#251-254) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/PleaHook.sol:905: PleaHook._closeWall() (src/PleaHook.sol#905-922) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Letterbox.sol:425: Letterbox._settle(uint256) (src/Letterbox.sol#425-445) uses a dangerous strict equality:\n[medium/medium] reentrancy-no-eth at src/Letterbox.sol:306: Reentrancy in Letterbox._appeal(address,uint256,string,uint8) (src/Letterbox.sol#306-362):\n[medium/medium] reentrancy-no-eth at src/PleaHook.sol:735: Reentrancy in PleaHook._payCashback(address,uint256) (src/PleaHook.sol#735-754):\n[medium/medium] reentrancy-no-eth at src/PleaHook.sol:762: Reentrancy in PleaHook._applyCap() (src/PleaHook.sol#762-804):\n[medium/medium] reentrancy-no-eth at src/CabalGate.sol:332: Reentrancy in CabalGate.appealFor(address,uint256,uint256,uint256,string,uint8,uint256,uint256) (src/CabalGate.sol#332-347):\n[medium/medium] reentrancy-no-eth at src/Seasons.sol:320: Reentrancy in Seasons.closeSeason(uint256[]) (src/Seasons.sol#320-351):\n[medium/medium] reentrancy-no-eth at src/CabalGate.sol:430: Reentrancy in CabalGate._ask(uint256) (src/CabalGate.sol#430-445):\n[medium/medium] reentrancy-no-eth at src/Letterbox.sol:285: Reentrancy in Letterbox._plead(address,uint256,string,uint8) (src/Letterbox.sol#285-304):\n[medium/medium] reentrancy-no-eth at src/PleaHook.sol:483: Reentrancy in PleaHook.afterSwap(address,PoolKey,SwapParams,BalanceDelta,bytes) (src/PleaHook.sol#483-566):\n[medium/medium] reentrancy-no-eth at src/Tribunal.sol:241: Reentrancy in Tribunal.object(uint256,string) (src/Tribunal.sol#241-282):\n[medium/medium] reentrancy-no-eth at src/CabalGate.sol:298: Reentrancy in CabalGate.submitFor(address,uint256,uint256,string,uint8,uint256,uint256) (src/CabalGate.sol#298-312):\n[medium/medium] reentrancy-no-eth at src/PleaHook.sol:578: Reentrancy in PleaHook._payFees(address,bool,uint256,uint256,uint256,uint160) (src/PleaHook.sol#578-631):\n[medium/medium] reentrancy-no-eth at src/PleaHook.sol:836: Reentrancy in PleaHook._rebalance() (src/PleaHook.sol#836-903):\n[medium/medium] reentrancy-no-eth at src/PleaHook.sol:905: Reentrancy in PleaHook._closeWall() (src/PleaHook.sol#905-922):\n[medium/medium] reentrancy-no-eth at src/Seasons.sol:355: Reentrancy in Seasons.flushToWall() (src/Seasons.sol#355-373):\n[medium/medium] reentrancy-no-eth at src/Letterbox.sol:425: Reentrancy in Letterbox._settle(uint256) (src/Letterbox.sol#425-445):\n[medium/medium] reentrancy-no-eth at src/PleaHook.sol:483: Reentrancy in PleaHook.afterSwap(address,PoolKey,SwapParams,BalanceDelta,bytes) (src/PleaHook.sol#483-566):\n[medium/medium] uninitialized-local at src/Seasons.sol:442: Seasons._payBonus(uint256,Seasons.Entry[25]).paid (src/Seasons.sol#442) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Letterbox.sol:404: Letterbox._deliver(uint256,address).fee (src/Letterbox.sol#404) is a local variable never initialized\n[medium/medium] uninitialized-local at src/PleaHook.sol:587: PleaHook._payFees(address,bool,uint256,uint256,uint256,uint160).toPrize (src/PleaHook.sol#587) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Seasons.sol:267: Seasons._record(uint256,uint256,address,uint8).mi (src/Seasons.sol#267) is a local variable never initialized\n[medium/medium] uninitialized-local at src/PleaHook.sol:296: PleaHook.price24hAgo().bestHour (src/PleaHook.sol#296) is a local variable never initialized\n[medium/medium] uninitialized-local at src/CabalGate.sol:820: CabalGate._validateText(string).len (src/CabalGate.sol#820) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Seasons.sol:335: Seasons.closeSeason(uint256[]).paid (src/Seasons.sol#335) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Seasons.sol:272: Seasons._record(uint256,uint256,address,uint8).pts (src/Seasons.sol#272) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Tribunal.sol:461: Tribunal._validateText(string).len (src/Tribunal.sol#461) is a local variable never initialized\n[medium/medium] uninitialized-local at src/PleaHook.sol:279: PleaHook.latestPrice().bestHour (src/PleaHook.sol#279) is a local variable never initialized\n[medium/medium] unused-return at src/CabalGate.sol:635: CabalGate.unlockCallback(bytes) (src/CabalGate.sol#635-668) ignores return value by pm.settle() (src/CabalGate.sol#665)\n[medium/medium] unused-return at src/Seasons.sol:377: Seasons._redeemClaims() (src/Seasons.sol#377-384) ignores return value by pm.unlock(abi.encode(amount)) (src/Seasons.sol#383)\n[medium/medium] unused-return at src/Letterbox.sol:464: Letterbox._intakeDone(bytes32) (src/Letterbox.sol#464-466) ignores return value by (None,None,None,done) = gate.intake().requests(intakeId) (src/Letterbox.sol#465)\n[medium/medium] unused-return at src/Seasons.sol:194: Seasons.checkpointObjection(uint256,uint256) (src/Seasons.sol#194-207) ignores return value by (None,None,approved,verdictAt) = gate.result(pleaId) (src/Seasons.sol#197)\n[medium/medium] unused-return at src/OracleAttestation.sol:158: OracleAttestationConsumer._verifyAttestation(OracleAttestation.Attestation,bytes) (src/OracleAttestation.sol#158-171) ignores return value by (recovered,err,None) = ECDSA.tryRecover(digest,signature) (src/OracleAttestation.sol#166)\n[medium/medium] unused-return at src/PleaHook.sol:937: PleaHook.unlockCallback(bytes) (src/PleaHook.sol#937-965) ignores return value by (d,None) = poolManager.modifyLiquidity(poolKey(),ModifyLiquidityParams({tickLower:lower,tickUpper:upper,liquidityDelta:int256(uint256(liquidity)),salt:0}),) (src/PleaHook.sol#944-950)\n[medium/medium] unused-return at src/PleaHook.sol:252: PleaHook.currentSqrtPriceX96() (src/PleaHook.sol#252-254) ignores return value by (sqrtPriceX96,None,None,None) = poolManager.getSlot0(poolId()) (src/PleaHook.sol#253)\n[medium/medium] unused-return at src/Tribunal.sol:241: Tribunal.object(uint256,string) (src/Tribunal.sol#241-282) ignores return value by (seller,None,approved,verdictAt) = gate.result(pleaId) (src/Tribunal.sol#243)\n[medium/medium] unused-return at src/Tribunal.sol:368: Tribunal._stale(Tribunal.Objection) (src/Tribunal.sol#368-372) ignores return value by (None,None,None,completed) = intake.requests(o.intakeId) (src/Tribunal.sol#370)\n[medium/medium] unused-return at src/Tribunal.sol:384: Tribunal._question(uint256,bool) (src/Tribunal.sol#384-396) ignores return value by (None,score,None,None) = gate.result(o.pleaId) (src/Tribunal.sol#386)\n[medium/medium] unused-return at src/PleaHook.sol:256: PleaHook.currentTick() (src/PleaHook.sol#256-258) ignores return value by (None,tick,None,None) = poolManager.getSlot0(poolId()) (src/PleaHook.sol#257)\n[medium/medium] unused-return at src/Tribunal.sol:188: Tribunal.standing(uint256) (src/Tribunal.sol#188-197) ignores return value by (seller,None,approved,verdictAt) = gate.result(pleaId) (src/Tribunal.sol#193)\n[medium/medium] unused-return at src/PleaHook.sol:967: PleaHook._settleImd(uint256) (src/PleaHook.sol#967-972) ignores return value by poolManager.settle() (src/PleaHook.sol#971)\n[medium/medium] unused-return at src/PleaHook.sol:806: PleaHook._removeLiquidity(int24,int24,uint256) (src/PleaHook.sol#806-818) ignores return value by (d,None) = poolManager.modifyLiquidity(poolKey(),ModifyLiquidityParams({tickLower:lower,tickUpper:upper,liquidityDelta:- int256(liquidity),salt:0}),) (src/PleaHook.sol#810-814)\n[medium/medium] unused-return at src/Tribunal.sol:285: Tribunal.onOracleResult(bytes32,OracleAttestation.Attestation,bytes) (src/Tribunal.sol#285-317) ignores return value by (None,oldScore,None,None) = gate.result(pleaId) (src/Tribunal.sol#305)\n[medium/medium] unused-return at src/PleaHook.sol:937: PleaHook.unlockCallback(bytes) (src/PleaHook.sol#937-965) ignores return value by poolManager.settle() (src/PleaHook.sol#957)\n[medium/medium] unused-return at src/CabalGate.sol:478: CabalGate._stale(CabalGate.Plea) (src/CabalGate.sol#478-482) ignores return value by (None,None,None,completed) = intake.requests(p.intakeId) (src/CabalGate.sol#480)\n[medium/medium] unused-return at src/PleaHook.sol:836: PleaHook._rebalance() (src/PleaHook.sol#836-903) ignores return value by (d,None) = poolManager.modifyLiquidity(poolKey(),ModifyLiquidityParams({tickLower:lower,tickUpper:upper,liquidityDelta:int256(uint256(liquidity)),salt:0}),) (src/PleaHook.sol#883-889)\n[low/high] shadowing-local at src/Tribunal.sol:200: Tribunal.onObjectionFailure(bytes32,uint8,bytes32,uint16,uint16,bytes).status (src/Tribunal.sol#322) shadows:\n[low/high] shadowing-local at src/Tribunal.sol:200: Tribunal._void(uint256,Tribunal.Objection,uint8,bytes32).status (src/Tribunal.sol#360) shadows:\n[low/medium] missing-zero-check at src/PleaLaunch.sol:87: PleaLaunch.constructor(address,address,address,address,address,address,address,uint256,uint256,address,bool,bytes32,bytes32).oracleAsset_ (src/PleaLaunch.sol#87) lacks a zero-check on :\n[low/medium] missing-zero-check at src/PleaHook.sol:201: PleaHook.constructor(IPoolManager,address,IERC20,IStacker,address,address,uint256).seasons_ (src/PleaHook.sol#201) lacks a zero-check on :\n[low/medium] missing-zero-check at src/Seasons.sol:102: Seasons.constructor(address,address,address,address).seat_ (src/Seasons.sol#102) lacks a zero-check on :\n[low/medium] missing-zero-check at src/PleaLaunch.sol:78: PleaLaunch.constructor(address,address,address,address,address,address,address,uint256,uint256,address,bool,bytes32,bytes32).plea_ (src/PleaLaunch.sol#78) lacks a zero-check on :\n[low/medium] missing-zero-check at src/PleaLaunch.sol:102: PleaLaunch.constructor(address,address,address,address,address,address,address,uint256,uint256,address,bool,bytes32,bytes32).owner_ (src/PleaLaunch.sol#102) lacks a zero-check on :\n[low/medium] missing-zero-check at src/PleaLaunch.sol:82: PleaLaunch.constructor(address,address,address,address,address,address,address,uint256,uint256,address,bool,bytes32,bytes32).poolManager_ (src/PleaLaunch.sol#82) lacks a zero-check on :\n[low/medium] missing-zero-check at src/PleaLaunch.sol:80: PleaLaunch.constructor(address,address,address,address,address,address,address,uint256,uint256,address,bool,bytes32,bytes32).seasons_ (src/PleaLaunch.sol#80) lacks a zero-check on :\n[low/medium] missing-zero-check at src/PleaLaunch.sol:83: PleaLaunch.constructor(address,address,address,address,address,address,address,uint256,uint256,address,bool,bytes32,bytes32).imd_ (src/PleaLaunch.sol#83) lacks a zero-check on :\n[low/medium] missing-zero-check at src/Seasons.sol:139: Seasons.holdsSeat(address).wallet (src/Seasons.sol#139) lacks a zero-check on :\n[low/medium] missing-zero-check at src/PleaLaunch.sol:79: PleaLaunch.constructor(address,address,address,address,address,address,address,uint256,uint256,address,bool,bytes32,bytes32).gate_ (src/PleaLaunch.sol#79) lacks a zero-check on :\n[low/medium] missing-zero-check at src/PleaHook.sol:197: Pl","passed":true},{"durationMs":1365,"exitCode":0,"name":"aderyn","output":"[high] abi-encode-packed-hash-collision at src/PleaLaunch.sol:105: `abi.encodePacked()` Hash Collision\n[high] reentrancy-state-change at src/CabalGate.sol:192: Reentrancy: State change after external call (36 places)\n[high] storage-array-memory-edit at src/PleaHook.sol:315: Storage Array Edited with Memory (6 places)\n[high] unsafe-casting at src/Tribunal.sol:260: Unsafe Casting of integers (2 places)\n[low] centralization-risk at src/PLEA.sol:14: Centralization Risk (5 places)\n[low] costly-loop at src/Seasons.sol:310: Costly operations inside loop (2 places)\n[low] internal-function-used-once at src/Tribunal.sol:34: Internal Function Used Only Once\n[low] large-numeric-literal at src/CabalGate.sol:253: Large Numeric Literal (15 places)\n[low] literal-instead-of-constant at src/CabalGate.sol:253: Literal Instead of Constant (135 places)\n[low] missing-inheritance at src/PleaHook.sol:35: Missing Inheritance (3 places)\n[low] require-revert-in-loop at src/CabalGate.sol:812: Loop Contains `require`/`revert` (6 places)\n[low] state-change-without-event at src/CabalGate.sol:635: State Change Without Event (4 places)\n[low] unchecked-return at src/CabalGate.sol:383: Unchecked Return (8 places)\n[low] uninitialized-local-variable at src/Seasons.sol:294: Uninitialized Local Variable (2 places)\n[low] unsafe-erc20-operation at src/PleaHook.sol:747: Unsafe ERC20 Operation (3 places)\n[low] unused-import at src/PleaLaunch.sol:4: Unused Import (3 places)\n[low] unused-public-function at src/CabalGate.sol:212: Public Function Not Used Internally (9 places)\n[low] unused-state-variable at src/PLEA.sol:29: Unused State Variable (6 places)","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"90df83489f2db25adefbe1461f8e5b549bbd13aab4278f908df4d6125863d125","verifiedTreeHash":"3ce16df8fde61c81646c675360c9c09e94ff076f","verifierVersion":"0.1.0+8fbf00a5"}]}