{"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":"ecdced72-cf6c-4732-b8f0-2c8b366d39ee","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"284e1d1a344d8f5e8b52bab577d59ae9bf138824045747beb0d1594be4a395f5","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":"233d02f427bfdf417e6619a2389ba9c36b45b9c2035872f28d0daa1a6154df64","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":"df44d5a025df01b9737d91a2d188e844f126b2034280fb1999f7bb87e9ab2292","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":"d7b1573e9fe0ebb6c8eca5875b18eb030e34418504a00ff0a8e77c8be3bb76db","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":"9286c7a7138368144bce1dc1008883c2e00ad70f4cb6c3041e92f7a600a1892e","dependsOn":["adapt_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"2bd883e433f460f877c7d4a8dac05c7fc2fce53d196125907e93629ba828a6c7","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":"ea5cb0dc41ee8ff8d612bd28ca60899d8c0c284945da3060493ffeefdaa1ccd4","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":"ea2c8a27f90e1afa74f434e4b5ff8c4b198909dabb4fa24779a5bf781fc686a2","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"4879fe3e97feed37cc32a05f677cee959f088e1d69d6162d8331f5e3f41c3be8","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":"BLACKOUT L3 (job A) on Robinhood Chain (4663). NO SOURCE CHANGES: every contract is pinned (ModuleCode -> GameRegistry -> the deployed L1 Desk), so any source edit makes the launch unusable. Findings below are accepted, not to be fixed in source.\nSource: this commit (v3.18; the eight L3 contracts are byte-identical to v3.17). Build with the unchanged repo foundry.toml: solc 0.8.26, optimizer 200, cancun, viaIR false, bytecode_hash none.\nDeploy job A as ONE evm_contracts launch of eight contracts in exactly the listed order. Resolve $contract:Params and $contract:GameRegistry by name inside this launch. Return all addresses, indices and the launch number.\nRecorded inputs: L1 launch 1628 SwarmDesk 0x5cb0686a4475d1f8a6c6e5240579080a4a05b609, EndowmentEscrow 0x11947494c0ba91508eb7409648193818c36521fb. L2 launch 1710 token 0x38b05971c79e738f64452be83c78ec3d66535b7a, hook V4Market 0x3c9599670893546a3def98608259a8e6582790cc (pool ETH/token, fee 12500, tick spacing 60).\nGAME_CONFIG_HASH 0x11ed7438974e96ecc962201e9c46422c7bf239d725876863fa25a56c734b20d3 = keccak256(abi.encode(STARTER_ROOT, FREE_ROOT, SNAPSHOT_BLOCK, 200000000000000000000000000)) with the words below; it is already committed in the deployed Desk and hook.\nExact ordered constructor words and expected creation hashes:\n[0] Params [\"0x5cb0686a4475d1f8a6c6e5240579080a4a05b609\",\"200\",\"1000000000000000000\"]\nCreation hash: 0x26c9f36af040b02eba9644f52daeed84fae4e42eab9bdb23277d0bb28c6dc6c0\n[1] GameRegistry [\"0x38b05971c79e738f64452be83c78ec3d66535b7a\",\"$contract:Params\",\"0x3c9599670893546a3def98608259a8e6582790cc\",\"0xb7d282d1c46f6062963bf2d134d058aa4de3af4cb7b092c5a0fd12ed74dc0f2c\",\"0xdc0842e9fd0017b08be09e787e877c53cfb446ca52aabdb9770e5c33b49d1325\",\"26182375\",\"200000000000000000000000000\"]\nCreation hash: 0xe41104da4edfb9a746e9080ce7b1885b5fe7609674a3a68fc5addbfd5a871531\n[2] RewardPool [\"$contract:GameRegistry\"]\nCreation hash: 0xecf3ae5ebb791318703b5e79960cfd243b7d89bdffa0e0501bee5146623764de\n[3] FarmRewards [\"$contract:GameRegistry\"]\nCreation hash: 0xfa1a4087722916aeefae66aaf3400299a5e4cb8f4fc8e516a17cec7754e07506\n[4] FarmCore [\"$contract:GameRegistry\"]\nCreation hash: 0xc390b07ef7a9ab65bef3a1ec3b39c1a16e117543c9565fedc9342526aa57aa47\n[5] FarmItems [\"$contract:GameRegistry\"]\nCreation hash: 0x98f7224201d9e7e3d16bd8996c29a522cac5bd1b375181de8cfdc2c6b9639e76\n[6] PackSale [\"$contract:GameRegistry\"]\nCreation hash: 0x7ecf36d55a73c01094e4434de085dfb39f17a1deda39a52ee38954f3a8e8737a\n[7] StarterClaim [\"$contract:GameRegistry\"]\nCreation hash: 0x960e2782608b572a1385ec22ed3e1fb49cd0cccd9b3455ce7bf7f22e990dbd90\nNo literal IMD protocol addresses appear as constructor words; protocol endpoints are compiled in.\nAfter this launch is recorded, the binder wallet 0x6d51cBE774aeAe4dd40bCA2560E9bc2695A0d007 signs SwarmDesk.bind(REGISTRY, registryCode, paramsCode, N_A, 1, N_A, 0, 1710), where N_A is this launch number and 1710 the L2 token launch; no other account can bind. Then roles 0-5 are registered permissionlessly.\nAccepted findings (in full in docs/accepted-v318.md, plus the c0e1b0b6 items):\n- c0e1b0b6 import medium, FarmRewards.claim re-commits the stored nextWeight after an Economy.unlock that skipped the resync: reachable only through Economy.lock, which reverts FeatureDisabled until Civic feature 4 is enabled; feature 4 is disabled at launch and needs a swarm announcement plus 48 h notice. The premium is bounded by the lock boost (at most 20% of that farm's weight) and moves no funds. No source fix is possible in this launch: FarmRewards is pinned in GameRegistry, which is pinned in the deployed L1 Desk (launch 1628).\n- c0e1b0b6 low, PackSale.resolve mints Season prize items with the starter flag: metadata and scrap restriction while unpaid only, no funds move.\n- c0e1b0b6 info, swarm wallet may pause pack sales up to 72 of every 144 h: bounded trust assumption.\n- RewardPool shortfall: repair with a plain token transfer; donate is not the repair path.\n- Exact-input swaps only; buys must carry sqrtPriceLimitX96 4295128740 (PriceLimitedBuy) and afterSwap refuses partial fills (PartialFill).\n- a3749636 low, manager float: beforeSwap takes the buy tax from the PoolManager before settlement.\n- spot() bounds: zero, underflowed or above-1e40 prices revert.\n- Fixed oracle signer/endpoints, no rotation.\n- Answers between job A and job B: stored after L3, executable only once all L4 modules are registered.\n- Future-block randomness, not VRF; enhancement attempts lapse to their worst outcome (v3.17).\n- Reserved Params keys: no gameplay effect; proposals may still consume cooldown.\n- M-2 matching twin: only the pinned binder can bind (docs/m2-trust-assumption.md).\n- 031c93c4 low 2, GameRegistry.register prefill by a byte-identical copy: same pinned code; registration follows immediately.\n- 031c93c4 low 3, Season.rollover before finalize; low 4, FeeRouter.executeSells sweep rollback; info 5, FarmRewards same-epoch vintage (at most about 54 bps, self-triggered); info 6, deploy-gate tool takes only the JSON plan.\n- 339b6b19 info 5-8: Civic.claimWar dust, no max-cost bound on openPack/buyTokenPack, unused minter/caller permissions (all pinned modules), dead fields.\n- L1 judge: PackSale.buyPacksFor gifting, one-shot escrow forward, Festival band clamp 5000-7000, Economy._insert 33-tie lock griefing (atomic revert), stream-0 answers before role 1 (stored until wiring).\n- Binder liveness: a lost binder key leaves the Desk unbound and the endowment in escrow; the binder cannot bypa","parentJobId":null,"planHash":"51389b8219eee9d0b59689d335f9a58367ba6a2c7b2836dd58e99bb6c13e873c","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"ecdced72-cf6c-4732-b8f0-2c8b366d39ee","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1722-blackout-l3-job-robinhood"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51171","feedbackHash":"0b39970481a1533ed5a7b29848f47a9cb640f96fce7ce34ea22a3704f8970e7e","nodeKey":"adapt_contract_project","submissionHash":"284e1d1a344d8f5e8b52bab577d59ae9bf138824045747beb0d1594be4a395f5","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51339","feedbackHash":"8f4ec3094ccfb812e041f8cf00be43657deb7cfde7987c3822b727b2e7456e2f","nodeKey":"audit_economics","submissionHash":"233d02f427bfdf417e6619a2389ba9c36b45b9c2035872f28d0daa1a6154df64","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"53924","feedbackHash":"a6b67805b68282c5bad10f59d541aab796228e74583a120805ef72ab8d443c73","nodeKey":"audit_flow","submissionHash":"df44d5a025df01b9737d91a2d188e844f126b2034280fb1999f7bb87e9ab2292","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51342","feedbackHash":"d45e7b8b2ce9ff564787e792744e8b476e2908049767b7d7b235696e1e608c2a","nodeKey":"audit_imported_code","submissionHash":"d7b1573e9fe0ebb6c8eca5875b18eb030e34418504a00ff0a8e77c8be3bb76db","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51451","feedbackHash":"367820c7a4efaa55410d00755a0be4daa2bad4d6b202e71452a7aab2eba33d4a","nodeKey":"audit_judge","submissionHash":"9286c7a7138368144bce1dc1008883c2e00ad70f4cb6c3041e92f7a600a1892e","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52188","feedbackHash":"43ebcc8d4d4174c9c84a30119d04ff48771eff80ec846f0e59a6a3679637eee8","nodeKey":"audit_math","submissionHash":"2bd883e433f460f877c7d4a8dac05c7fc2fce53d196125907e93629ba828a6c7","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51214","feedbackHash":"aeb831bf491b577fcf84128ab69c489c9ab15fc985659b2f4f2788b6fc2fd049","nodeKey":"audit_permissions","submissionHash":"ea5cb0dc41ee8ff8d612bd28ca60899d8c0c284945da3060493ffeefdaa1ccd4","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52143","feedbackHash":"f08aef9ba2c1cc20df52be5c8bec41002596b7f1b8c2993dd75d867dc15e805b","nodeKey":"manifest","submissionHash":"ea2c8a27f90e1afa74f434e4b5ff8c4b198909dabb4fa24779a5bf781fc686a2","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51749","feedbackHash":"16565df30cef73f7f9db6aea7b161effff2f3abe9f859094a8fc23ffe3528746","nodeKey":"write_foundry_tests","submissionHash":"4879fe3e97feed37cc32a05f677cee959f088e1d69d6162d8331f5e3f41c3be8","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"ed6964f21d61ec621a24d166097c6d8de5106d3622ac9795f9f39b041a53b75c","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"75052237a39b6e12","findings":[{"citation":"resolved","description":"PackSale.priceAt (src/PackSale.sol:144, `p = Economy(registry.module(10)).averageDaily() * daysPrice / 1 ether;`) and priceBounds (src/PackSale.sol:52-53) price every pack in days of `averageDaily`, which is max(3000e18, FarmRewards.lastAverageDaily). lastAverageDaily is net mining divided by activeFarmCount, the count of farms with any committed weight, not by hash. Registration is free (FarmCore.register(self)), items are soulbound so a whale must spread items over many wallets anyway, and every farm with a single common item (hash 10000) counts as one. The denominator therefore grows with the number of wallets holding any item while the numerator is fixed by the pool, so pack revenue per pack falls toward the floor independently of what a pack's items actually earn. Economic effect: the protocol's pack revenue (90% of which flows back to RewardPool as emission for everyone) and the team's 10% are set by wallet count, not by yield; a buyer who splits purchases across fresh wallets lowers the price of every subsequent pack for themselves and all others, and small holders (500 free packs, starter claims) dilute it structurally. No funds are lost or misdirected; the quoted 'yield-days' meaning of the price (PackSale.profileParams comment) is not what is charged. Design observation within the accepted 'no whale soft cap' rule; reported because the price formula's intent (price = days of a farm's yield) and its behaviour diverge in a way an ordinary buyer can steer.","line":199,"path":"src/FarmRewards.sol","reproduction":"Foundry, BaseTest fixture with launchFeatures()=false, fund(50_000_000 ether). (1) place(alice,0,0,0); place(bob,0,0,0); calmNext(); step(); calmNext(); step(). Observed lastAverageDaily = 738,153.28e18 and PackSale.price() = 2,896,206.12e18 tokens. (2) place one common GPU on 18 fresh addresses (same total hash class, one item each); calmNext(); step(); calmNext(); step(). Observed lastAverageDaily = 72,708.59e18 (10x lower) and price() = 223,862.59e18 (12.9x lower). Expected under the stated 'yield-days' pricing: a pack whose items earn the same per-hash yield costs the same; actual: the price is divided by the number of wallets that hold any item. Test: test/scratch/Dilution.t.sol testPackPriceFallsWhenHashIsSplitAcrossFarms (passes, logs the four numbers).","severity":"low","snippet":"                    lastAverageDaily = old.mining * (10000 - old.tariff) / 10000 * 4 / activeFarmCount[epoch];","title":"Pack price basis is a per-farm arithmetic mean, so splitting hash across one-item farms drives the curve to its floor"},{"citation":"resolved","description":"The comment (and docs/design.md line 19, 'A 116% budget reserves mining') describes the pre-v3.5 envelope. Since MAX_OUTPUT_BPS = 15000 the per-farm allocation is maxGross*1.05 + redis share, so the aggregate attribution is at most 150%*1.05 + 1% = 158.5% of mining and the code correctly reserves 159%. I verified the bound: productive <= 1.4375 x committed weight (Festival 15% x district 25% max, Green 10%), tier <= 1, epoch params <= their upper bounds used by allocationHash, so `spent > o.allocation` (line 446) is unreachable through the pinned modules and the 159% reservation never underfunds the dust recycle at line 478. Documentation drift only; no behaviour change. Left as information so the next reviewer does not re-derive it from the stale comment.","line":187,"path":"src/FarmRewards.sol","reproduction":"Read src/FarmRewards.sol:186-189: old.budget = old.mining * 159 / 100 while the comment two lines above says 116.5%. Check: allocation per farm (line 431-432) = floor(rph*floor(w*1.5)/P)*1.05 + redis*w/raw; summed over a fully settled epoch <= 1.575*mining + redis; plus prize mining/100 (line 193-195) = 1.585*mining + redis <= budget + redis. Expected: comment matches code; actual: comment describes 116.5%.","severity":"info","snippet":"                // 110% Green gross + 5% referral + 1% season = 116.5% maximum, before tariff.\n                old.budget = old.mining * 159 / 100;","title":"Reservation comment states a 116.5% envelope while the code reserves 159% of mining"}],"hash":"233d02f427bfdf417e6619a2389ba9c36b45b9c2035872f28d0daa1a6154df64","nodeId":"de1f365a-16c1-4d6a-9c5b-8d1ce5ea0561","outcome":"completed","summary":"Review complete. The findings file is written and validated; the working tree has no source changes.\n\n**Outcome**\n\nThe L3 economics hold up. I found no fund-loss, misdirection or settlement-bricking defect in the eight launched contracts. The file `.imd-findings.json` holds two findings and a coverage row for every listed entry point.\n\n**Findings**\n\n- **Low, pack price dilution.** The pack price basis is net mining divided by the number of farms with any committed weight, not by hash. Splitting the same items across one-item wallets lowers every subsequent pack's price. In a Foundry run the basis fell about tenfold and the price went from roughly 2.9M to 224k tokens after 18 one-item farms joined two real ones. No funds move wrongly; it is a pricing-intent gap under the accepted no-whale-cap rule. Scratch test at `test/scratch/Dilution.t.sol` reproduces it.\n- **Info, stale reservation comment.** The code reserves 159% of mining while the comment above it still says 116.5%. I verified the 159% is correct and sufficient.\n\n**What I verified in depth**\n\n- Reserve conservation across every reserve, recycle, pay and credit path, including scrap allowance, season prize, referral and claim tax redistribution.\n- The per-farm envelope cannot be exceeded. Event, district and festival boosts combine to at most 1.4375 times committed weight against a 1.5 limit, so the settlement revert that would lock a cursor is unreachable through the pinned modules.\n- Weight commitment generations, expiry buckets and pro-rata entry reconcile with the epoch denominator.\n- The loadout snapshot cannot be re-rolled within an epoch, so productive hash always derives from the loadout the weight was committed from.\n- Launch inputs: all eight creation hashes match the task list and the ModuleCode pins, and the recomputed GAME_CONFIG_HASH matches.\n\n**Coverage**\n\n| Verdict | Rows |\n|---|---|\n| holds | 139 |\n| finding | 1 |\n| unreached | 21 |\n\nThe unreached rows are the V4Market hook callbacks, the FeeRouter ETH deposit paths, GridOperator resolution and a few Season lottery functions. They are outside the assigned area and were not traced within the time budget.","treeHash":null,"usage":{"cachedInputTokens":3114176,"inputTokens":834,"model":"claude-fable-5-1","outputTokens":60228,"runtime":"claude","turns":32,"wallClockMs":977437}},{"artifacts":[],"attempt":1,"bundleHash":"29d3b96e4e68466ea117ed7ef9a675791c557817304d8c1ae0bd22ba2bad939a","device":"194b47a372650d59","findings":[],"hash":"284e1d1a344d8f5e8b52bab577d59ae9bf138824045747beb0d1594be4a395f5","nodeId":"3171baf6-5f89-4b1d-a434-ce34c734257e","outcome":"completed","summary":"Prepared job A with production sources and build configuration unchanged. All eight creation hashes match.\n\nCorrected the Mythic documentation and added four passing regression/launch tests. Exact launch inputs and binder handoff are in [ADAPTATION.md](/home/imd-worker/.identitymd/work/ecdced72-cf6c-4732-b8f0-2c8b366d39ee/3171baf6-5f89-4b1d-a434-ce34c734257e/ADAPTATION.md).\n\n`forge build` passed. Seeded `forge test`: **331 passed, 0 failed, 6 fork tests skipped**.\n\nProduction addresses and the launch number remain pending IMD’s deployment receipt.","treeHash":"7c7e27dcdc6412df3d9d5a89e36ec61103d2d09a","usage":{"cachedInputTokens":1824000,"inputTokens":120771,"model":"gpt-6-astra","outputTokens":17041,"runtime":"codex","turns":6,"wallClockMs":449060}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"d4b53d656a3fbe07","findings":[{"citation":"resolved","description":"Boundary guide, deadline/expiry edges. The documented age gate and the coded age gate disagree. maxLevelByAge returns 4 below 1 day, 6 at >= 1 day, 9 at >= 3 days and 10 at >= 5 days (src/FarmCore.sol:216-223). The NatSpec on level() promises 5 at 1 day and 7 at 3 days. Level gates item placement (rarity 3 needs level 5, rarity 4 needs level 10 at src/FarmCore.sol:361), room 2 (level 7) and room 3 (level 10), the mythic pack flag (level >= 10 at src/PackSale.sol:281) and enhancement targets (level 7 / 10 in Enhancement.commit). A player or UI relying on the comment computes the wrong eligibility: a 1-day-old farm with 1200 XP is level 6 (not 5) and can place rarity-3 items; a 3-day-old farm with 2400 XP is level 9 (not 7) and can buy room 2 and commit level-6+ enhancements. No funds move and the code is the pinned behaviour, so this is documentation only; it is reported because the comment is the only statement of the age curve and the sim/UI may have been written from it.","line":209,"path":"src/FarmCore.sol","reproduction":"State: farm registered at T0 with xp = 2800 (veteran fixture). At T0 + 1 day: level(p) == 6 (comment says 5). At T0 + 3 days: level(p) == 9 (comment says 7). At T0 + 5 days: 10 (matches). Expected per NatSpec: 5 and 7. Actual: 6 and 9. Fix is to correct the comment (no source change needed for the pinned launch).","severity":"info","snippet":"    /// @notice XP level, capped by farm age: level 5 needs 1 day, level 7 needs 3 days, level 10 needs 5 days.","title":"FarmCore.level NatSpec states age caps (5 at 1 day, 7 at 3 days) that maxLevelByAge does not implement (6 and 9)"},{"citation":"resolved","description":"Boundary guide, sentinel branch walked on both sides. resolve returns early unless _capture returned true, and _capture only returns true after writing a non-zero entropyHash[tokenId] (src/StarterClaim.sol:106-115: a zero hash either reverts NotConfigured or re-arms and returns false). So at the emit, h == bytes32(0) can never hold and the event's second field is always false. Off-chain readers (keeper, UI) that key on `expired` to detect a lapsed starter claim will never see one; the only lapse signal is StarterRearmed. No on-chain effect; matches the accepted dead-field class (339b6b19 info 8) but this one is an event field consumers may rely on.","line":147,"path":"src/StarterClaim.sol","reproduction":"Call StarterClaim.claim(tokenId, proof) at launchTime+48h, wait 300 blocks without capturing (hash window lapses), call resolve(tokenId): _capture re-arms and resolve returns without emitting. Two blocks later call resolve again: entropyHash is non-zero, items are minted and StarterResolved(tokenId, false) is emitted even though the original window expired. Expected per event name: expired == true for a claim whose first window lapsed. Actual: always false.","severity":"info","snippet":"        emit StarterResolved(tokenId, h == bytes32(0));","title":"StarterClaim.resolve emits StarterResolved(tokenId, expired) with a constant-false expired flag"}],"hash":"2bd883e433f460f877c7d4a8dac05c7fc2fce53d196125907e93629ba828a6c7","nodeId":"546b7aca-a7b6-4713-9df9-9d506386ef17","outcome":"completed","summary":"The review is complete and the findings file is in place. Nothing in the source tree was changed.\n\n**Outcome: no fund-moving or settlement-locking math defect found in the eight L3 contracts.** The file `.imd-findings.json` holds 2 informational findings and 160 coverage rows.\n\n**What I verified in depth (Math Precision, Boundary, Numerical Gap guides)**\n\n- **Output envelope.** The `InvalidValue` guard in FarmRewards settlement would permanently lock a farm's cursor if productive hash exceeded 150% of committed weight. I bounded every multiplier: allocation hash uses the upper Params bounds and full health, event bonus tops out at 15% (Festival clamp), district boost at 25% (season 1500 bps plus war 1000 bps), and lock boost cancels on both sides. Worst stacking is 1.4375, below 1.5. Overclock cannot change under a committed weight because enhancement requires an unequipped, unlocked item.\n- **Budget conservation.** Allocations sum to at most 1.585 × mining against a 1.59 × mining reservation, redistribution shares are floor-summed, so the final dust recycle never underflows and reserve never reverts (mining is at most 1.5% of available).\n- **Vintage ring.** Any credit older than 7 days matures directly, so a slot collision only ever evicts a vintage at least 8 days old. The pending equals matured plus vintages invariant holds on every path, so the assert in consume cannot fire.\n- **Division and overflow edges.** Every divisor (epoch raw, active farm count, farm daily, target) is provably non-zero where used. PackSale's exponent is clamped to ±10e18 before wadExp. All 45 Params defaults sit inside their bounds.\n- **Entry-epoch pro-rata**, beginMining zero-rounding, block-hash window boundaries, payable branches of PackSale, and the 18-decimal balance-delta checks all behave as intended.\n\n**Findings reported (both info)**\n\n1. FarmCore.level NatSpec documents age caps of 5 at one day and 7 at three days; the code gives 6 and 9. Concrete: a 1-day-old farm with 1200 XP is level 6 and may place rarity-3 items.\n2. StarterClaim.resolve emits an `expired` flag that is always false, since capture only succeeds with a non-zero hash.\n\n**Coverage**: all 81 L3 and traced-L4 entry points plus three invariants are marked holds or finding. The 79 L1/L2/L4 entry points outside the math area are honestly marked unreached. Existing LazyAccounting tests were run and pass (9 of 9). No proof test files were needed since no finding is high or critical.","treeHash":null,"usage":{"cachedInputTokens":1564026,"inputTokens":386,"model":"claude-fable-5-1","outputTokens":45392,"runtime":"claude","turns":32,"wallClockMs":803433}},{"artifacts":[],"attempt":1,"bundleHash":"c6ad6a09e63ab64ca0a17ddb573d40480796666de36a44685e3159e875568a15","device":"f6c59a24920668f6","findings":[],"hash":"4879fe3e97feed37cc32a05f677cee959f088e1d69d6162d8331f5e3f41c3be8","nodeId":"ae66e70c-22ef-45f2-94ac-efc370257055","outcome":"completed","summary":"Added failure-path tests and three stateful invariant campaigns. [Coverage and limitations](test/JobA-TESTING.md).\n\nValidation passed: `forge build`, seeded full suite (**369 passed, 0 failed, 6 fork tests skipped**), and final targeted checks.\n\nPinned sources and configuration remain unchanged. No deployment was broadcast.","treeHash":"6665e7df2eeb1acd39ad8eec7f6448ae6edcff17","usage":{"cachedInputTokens":8051968,"inputTokens":177919,"model":"gpt-6-astra","outputTokens":46505,"runtime":"codex","turns":13,"wallClockMs":1445903}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"79373c79d1351eba","findings":[{"citation":"resolved","description":"PackSale.priceAt (src/PackSale.sol:144) and priceBounds (src/PackSale.sol:52-53) price every pack in days of Economy.averageDaily(), which is max(3000e18, FarmRewards.lastAverageDaily). lastAverageDaily is net epoch mining times 4 divided by activeFarmCount[epoch], the number of farms with any committed weight, not by hash. Registration is free (FarmCore.register(self)), a farm with a single common GPU (hash 10000) counts as one, and every settled epoch rewrites the basis. The denominator therefore grows with the number of wallets holding any item while the numerator is fixed by the pool, so the pack price falls toward the floor independently of what a pack's items actually earn. A buyer who spreads items over fresh wallets lowers the price of every later pack for themselves and everyone else, and the 500 free packs and starter claims dilute it structurally. No funds are lost or misdirected; the protocol's pack revenue (90% back to RewardPool, 10% to the team) and the yield-days meaning of the price (PackSale.profileParams comment) are what diverge. Reported by audit_economics; reproduced here with the same test. No source fix is possible in this launch (FarmRewards and PackSale are pinned in ModuleCode); the operator should model pack revenue on wallet count, not on yield.","line":199,"path":"src/FarmRewards.sol","reproduction":"Foundry, BaseTest fixture with launchFeatures()=false, fund(50_000_000 ether). (1) place(alice,0,0,0); place(bob,0,0,0); calmNext(); step(); calmNext(); step(). Observed: lastAverageDaily = 738153281250000000000000 (738,153e18), PackSale.price() = 2896206122382961973713192 (2,896,206e18). (2) place one common GPU (kind 0, rarity 0) on 18 fresh addresses, calmNext(); step(); calmNext(); step(). Observed: lastAverageDaily = 72708587275808408203125 (72,708e18, 10.2x lower), price() = 223862591698985012842334 (223,862e18, 12.9x lower). Expected under yield-days pricing: a pack whose items earn the same per-hash yield costs the same whatever the number of wallets; actual: the price is divided by the number of wallets that hold any item. Test run this review: test/scratch/Dilution.t.sol testPackPriceFallsWhenHashIsSplitAcrossFarms, asserting avg20*5 < avg2 and price20*5 < price2, passes with the logged numbers above.","severity":"low","snippet":"                    lastAverageDaily = old.mining * (10000 - old.tariff) / 10000 * 4 / activeFarmCount[epoch];","title":"Pack price basis is a per-farm arithmetic mean, so splitting hash across one-item farms drives the pack curve toward its floor"},{"citation":"resolved","description":"The comment (and docs/design.md, 'A 116% budget reserves mining') describes the pre-v3.5 envelope. Since MAX_OUTPUT_BPS = 15000 the per-farm allocation at src/FarmRewards.sol:431-432 is maxGross*1.05 + redis share, so a fully settled epoch attributes at most 1.575 x mining + redis plus the 1% prize, and the code correctly reserves mining*159/100 on the next line. Documentation drift only; no behaviour change. Reported by audit_economics; reproduced by reading lines 186-189 and 431-432.","line":187,"path":"src/FarmRewards.sol","reproduction":"Read src/FarmRewards.sol:187-188: the comment says 116.5% while `old.budget = old.mining * 159 / 100;`. Per-farm allocation (lines 431-432) = mulDiv(rph, w*15000/10000, 1e27)*1.05 + mulDiv(redis, w, raw); summed over raw = sum(w) gives <= 1.575*mining + redis; plus prize mining/100 (lines 193-195) = 1.585*mining + redis <= budget + redis. Expected: comment matches the 159% code; actual: comment describes 116.5%.","severity":"info","snippet":"                // 110% Green gross + 5% referral + 1% season = 116.5% maximum, before tariff.","title":"Reservation comment states a 116.5% envelope while the code reserves 159% of mining"},{"citation":"resolved","description":"maxLevelByAge (src/FarmCore.sol:216-223) returns 4 below 1 day, 6 at >= 1 day, 9 at >= 3 days and 10 at >= 5 days, while the NatSpec on level() promises 5 at 1 day and 7 at 3 days. Level gates rarity-3 placement (level 5) and rarity-4 placement (level 10) at line 361, room 2 (level 7) and room 3 (level 10) at lines 262-263, the mythic pack flag (level >= 10, src/PackSale.sol:281) and enhancement targets. A UI or player relying on the comment computes the wrong eligibility: a 1-day-old farm with 1200 XP is level 6, not 5, and may place rarity-3 items; a 3-day-old farm with 2400 XP is level 9, not 7, and may buy room 2. The code is the pinned behaviour, so this is documentation only. Reported by audit_math; reproduced by reading.","line":209,"path":"src/FarmCore.sol","reproduction":"State: farm registered at T0 with xp = 2800 (BaseTest.veteran fixture sets 2800 XP). At T0 + 1 day: level(p) == 6 (comment says 5). At T0 + 3 days: level(p) == 9 (comment says 7). At T0 + 5 days: 10 (matches). Expected per NatSpec: 5 and 7; actual: 6 and 9. Fix is the comment only; no source change for the pinned launch.","severity":"info","snippet":"    /// @notice XP level, capped by farm age: level 5 needs 1 day, level 7 needs 3 days, level 10 needs 5 days.","title":"FarmCore.level NatSpec states age caps (5 at 1 day, 7 at 3 days) that maxLevelByAge does not implement (6 and 9)"},{"citation":"resolved","description":"resolve returns early unless _capture returned true, and _capture only returns true after writing a non-zero entropyHash[tokenId] (src/StarterClaim.sol:106-115: a zero hash either reverts NotConfigured or re-arms and returns false). So at the emit h is never zero and the event's second field is always false. Off-chain readers that key on `expired` to detect a lapsed starter claim never see one; the only lapse signal is StarterRearmed. No on-chain effect; same class as accepted 339b6b19 info 8 (dead fields) but this is an event field consumers may rely on. Reported by audit_math; reproduced by reading.","line":147,"path":"src/StarterClaim.sol","reproduction":"Call StarterClaim.claim(tokenId, proof) at launchTime+48h; roll 300 blocks without capturing so ChainClock.hash(target) is zero; call resolve(tokenId): _capture re-arms (StarterRearmed) and resolve returns without emitting. Roll 3 more blocks and call resolve again: entropyHash is non-zero, three items are minted and StarterResolved(tokenId, false) is emitted although the original window expired. Expected per event name: expired == true for a claim whose first window lapsed; actual: always false.","severity":"info","snippet":"        emit StarterResolved(tokenId, h == bytes32(0));","title":"StarterClaim.resolve emits StarterResolved(tokenId, expired) with a constant-false expired flag"}],"hash":"9286c7a7138368144bce1dc1008883c2e00ad70f4cb6c3041e92f7a600a1892e","nodeId":"5308a855-46c9-4a48-96f7-6574e46febb2","outcome":"completed","summary":"Review complete. The findings file is written at the repository root with four findings and a 157-row coverage record.\n\n**What I verified**\n\n- All eight creation-code hashes from the local build match the task's expected hashes and the pins in ModuleCode. Runtime sizes are all under the 24,576-byte limit, with FarmCore the largest at 22,361 bytes.\n- The recomputed GAME_CONFIG_HASH from the four manifest words matches the stated value.\n- The manifest in launch.json has only the schema keys, eight unique contracts in dependency order, string arguments, and backward references.\n- Constructor words pass every constructor guard: heartbeat 200 is inside 200..5000, the cap is exactly 1e18, both roots are non-zero, and the 200M endowment is under the 250M ceiling.\n\n**Specialist findings, settled**\n\n- Kept, low: pack price is a per-farm mean, so splitting hash across one-item wallets drives the curve toward its floor. I re-ran the scenario in a scratch test and got the same numbers the specialist reported, roughly a 10x drop in average daily and 12.9x in price going from 2 to 20 farms.\n- Kept, info: the 116.5% reservation comment versus the 159% code, the level NatSpec age caps that disagree with maxLevelByAge, and the StarterResolved expired flag that can never be true. Each reproduced by reading the cited lines.\n- Dropped: the audit_flow medium about the escrow holding zero tokens. I queried Robinhood Chain at block 88284865. The escrow now holds the full 200M principal plus dust, the binder wallet holds zero, and forwarded is still false. The runbook's step-2 precondition is met, so the finding no longer reproduces.\n\n**Coverage**\n\nAll 157 entry points have a row. The 72 job A entry points and 24 of the L4 entry points that job A calls directly are marked holds or finding with a one-line reason. The remaining 61 rows, mostly Civic, Billboards, Enhancement, Season claims, the V4Market hook and the Desk oracle paths, are honestly marked unreached as outside this launch and beyond the budget.\n\nNo critical or high findings, so no proof files were attached. The scratch test directory was removed and no repository file was changed.","treeHash":null,"usage":{"cachedInputTokens":1488354,"inputTokens":450,"model":"claude-fable-5-1","outputTokens":30762,"runtime":"claude","turns":32,"wallClockMs":478922}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"cbc83f8151b8340d","findings":[{"citation":"resolved","description":"resolve() reads the player's level when the pack is opened, not when it was bought. docs/design.md line 39 states 'Paid-account/mythic eligibility is fixed at commitment', but docs/report-v34.md (L-5) records the reveal-time check as the intended fix since v3.4, so this is a stale specification line rather than a code defect. The gameplay consequence is worth stating for the adapter and the panel: the seed becomes public once captureEntropy fixes it, every item of the receipt is then deterministic, and a holder below level 10 who sees that a slot would roll rarity 4 can simply keep the receipt unopened until they reach level 10 (five days of farm age plus 2800 XP), at which point the same seed yields a Mythic (800000 base hash) instead of a Common (10000). No funds move, no other player is affected, and the fix if the committed-time rule is wanted is to set c.mythic in _commit (PackSale is pinned, so this would be a documentation fix for this launch). Reproduced in a scratch test on this tree: alice at level 1 buys a pack, captureEntropy fixes the seed, the farm is then aged to level 10, resolve(id, 1) stores commits(id).mythic == true although it was false at purchase.","line":281,"path":"src/PackSale.sol","reproduction":"Fixture: BaseTest with fund(10_000_000 ether). 1) assert d.farm.level(alice) == 1; id = d.packs.openPack(1) as alice; commits(id).mythic == false. 2) roll 3 blocks, set blockhashes, d.packs.captureEntropy(id): seed fixed, visible on chain. 3) make alice level 10 (born five days ago, xp 2800). 4) d.packs.resolve(id, 1). Expected under docs/design.md: mythic flag false, rarity-4 rolls fall to Common. Actual: commits(id).mythic == true and a slot with (uint256(keccak256(abi.encode(seed, i))) >> 64) % 10000 >= 9970 mints rarity 4.","severity":"info","snippet":"        c.mythic = farm().level(c.player) >= 10;","title":"PackSale mythic eligibility is decided at open time, while docs/design.md still says it is fixed at commitment"},{"citation":"resolved","description":"Contracts read in full: Params, GameRegistry, RewardPool, FarmRewards, FarmCore, FarmItems, PackSale, StarterClaim, plus the libraries they compile in (ChainClock, EconomyMath, Errors, GameModule, ItemMath, ItemMetadata, ModuleCode, Robinhood, SwarmCode) and the interfaces. Pinned job B modules read where an L3 call path depends on them: Economy (autoRepair, boostAt, lock/unlock, farmDaily floor), FarmEngine (allocationHash, process, _output), FeeRouter (routeTokens, zapBuy, payBounty, payWork), GridOperator (shift, outputBonus, severity bounds), Civic (outputBonus, grantDistrictBoost), Season (recordSpend, recordActivity, complete, addPrize). Not reached within budget: SwarmDesk, V4Market, EndowmentEscrow, Enhancement, Billboards, StandardMarket/Adapter, MarketFactory, the oracle attestation code, and the keeper/ui/tools directories. Checks performed on this tree with the unchanged foundry.toml: keccak256 of each of the eight creation codes equals the listed creation hash (Params 0x26c9..., GameRegistry 0xe411..., RewardPool 0xecf3..., FarmRewards 0xfa1a..., FarmCore 0xc390..., FarmItems 0x98f7..., PackSale 0x7ecf..., StarterClaim 0x960e...); runtime sizes are 3118/2864/4234/17002/22361/13861/12538/5477 bytes, all under 24576; the source contains no DELEGATECALL, CALLCODE or SELFDESTRUCT and no proxy or initializer; every constructor is nonpayable, makes no external call, and takes only static words, so the empty-chain rehearsal cannot park the launch; Params constructor words (SwarmDesk, 200, 1e18) satisfy its bounds and GameRegistry words (nonzero token, params, market, both roots, snapshot 26182375, endowment 200000000e18 <= 250000000e18) satisfy its checks. Traced and found sound: the 150% output envelope that _reward enforces (productive is bounded by allocationHash at parameter upper bounds times at most 1.15 Festival times at most 1.25 district boost, i.e. 1.4375, and the lock boost is always already in the committed weight because Economy.lock re-syncs and boostAt is monotone in the lock window); reserved-token conservation across reserve/recycle/pay/spend/scrap/redis/prize; the two-generation weight commitment and expiry buckets in _commit/farmWeight/advanceEpoch; the vintage ring eviction (an evicted slot is always at least eight days old); Merkle leaf second-preimage on both StarterClaim trees (64-byte leaves need a 96-zero-bit address, infeasible); ERC-1155 soulbound custody and receiver reentrancy paths (all guarded); PackSale and StarterClaim capture/rearm windows under ChainClock. Every accepted item in docs/accepted-v318.md and the c0e1b0b6 lines was re-read against the code and none is reported again. Known limits: no fuzzing or invariant run of my own beyond the repository suite; Season and SwarmDesk internals were taken as pinned and not re-derived.","line":19,"path":"src/GameRegistry.sol","reproduction":"Run forge test --match-path test/scratch/Pins.t.sol on this tree: it asserts the eight creation-code hashes against the task list and logs runtime sizes; it passes.","severity":"info","snippet":"contract GameRegistry is IGameRegistry {","title":"Review coverage: all eight job A contracts read; pins and sizes verified; no new reproducible defect found"}],"hash":"d7b1573e9fe0ebb6c8eca5875b18eb030e34418504a00ff0a8e77c8be3bb76db","nodeId":"b22a97db-5ba6-4aa5-9ef6-acd17215dfcd","outcome":"completed","summary":"The review is complete and the findings file is written. No source file changed; only `.imd-findings.json` and the scratch tests under `test/scratch/` are new.\n\n**Outcome: no new reproducible defect in the eight job A contracts.** The findings file holds two info entries: one stale-documentation note with a reproduction, and one coverage statement.\n\n**What I read.** All eight launch contracts in full: Params, GameRegistry, RewardPool, FarmRewards, FarmCore, FarmItems, PackSale, StarterClaim, plus their compiled-in libraries and interfaces. I also read the pinned job B code every L3 call path depends on: Economy, FarmEngine, and the relevant functions of FeeRouter, GridOperator, Civic and Season. Not reached: SwarmDesk, V4Market, EndowmentEscrow, Enhancement, Billboards, the standard market adapters, the oracle attestation code, and the keeper, ui and tools directories.\n\n**What I verified on this tree with the unchanged foundry.toml.**\n- The keccak256 of each of the eight creation codes equals the listed creation hash, so the pins in ModuleCode and SwarmCode match the build.\n- Every runtime is under the EIP-170 limit. The largest, FarmCore, is well inside it.\n- No DELEGATECALL, CALLCODE, SELFDESTRUCT, proxy or initializer. All constructors are nonpayable, make no external call and take static words, so the empty-chain rehearsal cannot park the launch.\n- The Params and GameRegistry constructor words satisfy their own range checks.\n\n**What I traced and found sound.** The 150% output envelope that settlement enforces holds with a worst case near 1.44, because the lock boost is always already in the committed weight and district plus Festival boosts multiply to at most 1.25 × 1.15. Reserved-token conservation across reserve, recycle, pay, spend, scrap, redistribution and season prizes balances. The two-generation weight commitment and expiry buckets stay consistent across re-commit, expiry and re-entry. The vintage ring only ever evicts slots at least eight days old. Both Merkle trees are safe from second-preimage leaves. ERC-1155 custody is soulbound and every receiver-callback path is guarded. Every accepted item in the v3.18 list and the c0e1b0b6 lines was re-read against the code and none is reported again.\n\n**The one recorded observation.** PackSale decides Mythic eligibility when a pack is opened, not when it is bought. docs/design.md still says eligibility is fixed at commitment, while report-v34 records open-time as the intended v3.4 fix. A holder below level 10 who captures entropy can read the seed and hold the receipt until level 10 to turn a would-be Common into a Mythic. No funds move, so this is an info-level documentation mismatch for the adapter to correct, not a source change.","treeHash":null,"usage":{"cachedInputTokens":2686060,"inputTokens":610,"model":"claude-fable-5-1","outputTokens":52119,"runtime":"claude","turns":29,"wallClockMs":893586}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a7ac9f7a7687c25e","findings":[{"citation":"resolved","description":"The runbook (launch-v39.md step 2 and step 5) requires the L2 token launch 1710 to deliver the 30% remainder to the L1 EndowmentEscrow 0x11947494c0ba91508eb7409648193818c36521fb, and after job A the keeper calls EndowmentEscrow.forward (one-shot, sends the escrow's whole balance to the proven RewardPool) and then RewardPool.fundEndowment. On Robinhood Chain (4663) at block time 1791971016 (2026-10-14) the recorded state is: token 0x38b05971c79e738f64452be83c78ec3d66535b7a totalSupply 1e27; balanceOf(escrow) = 0; escrow.forwarded() = false; balanceOf(PoolManager 0x8366a39C...) = 616,679,711.58e18; balanceOf(0x6d51cBE774aeAe4dd40bCA2560E9bc2695A0d007, the binder/team wallet) = 200,000,000.000000000000004955e18; balanceOf(LaunchFactory) = 0; balanceOf(SwarmDesk) = 0. The exact 200M principal (GameRegistry constructor word [1][6] = 200000000000000000000000000) is therefore in an EOA, not in the escrow, so the custody-free route the L1 escrow was built for cannot execute. Consequences for the job A graph: EndowmentEscrow.forward reverts InsufficientBalance (line 85) and must not be retried until the escrow is funded; RewardPool.fundEndowment reverts InsufficientBalance at src/RewardPool.sol:68 because balance - otherInflow < 200M; RewardPool.available() returns 0 while !endowed (src/RewardPool.sol:56) so every FarmRewards.advanceEpoch closes with mining = 0; PackSale._requireReady reverts NotConfigured (src/PackSale.sol:220) so openPack/buyPackFor/buyPacksFor/buyWithETH/tokenPack never succeed. Nothing in the pinned contracts can move the tokens; only the holder of 0x6d51...d007 can repair the state by transferring exactly (or at least) 200,000,000e18 tokens to the escrow before forward, or by a plain ERC20 transfer straight to the deployed RewardPool (donate() does not count: it adds to otherInflow, src/RewardPool.sol:92). This is a launch-state defect, not a source defect, and no source fix is possible; the runbook's step-2 check ('The escrow must hold at least 200,000,000e18 tokens') currently fails and must be resolved and published before bind/forward/fundEndowment.","line":85,"path":"src/EndowmentEscrow.sol","reproduction":"State: Robinhood Chain 4663, any block after the L2 launch 1710. Calls (read-only, reproduced with cast against https://robinhood.drpc.org): cast call 0x38b0...5b7a 'balanceOf(address)' 0x1194...21fb -> 0; cast call 0x1194...21fb 'forwarded()' -> false; cast call 0x38b0...5b7a 'balanceOf(address)' 0x6d51...d007 -> 200000000000000000000004955. Expected per runbook step 2: escrow balance >= 200000000000000000000000000. Actual: 0. Consequence after job A is deployed and bound: EndowmentEscrow.forward(REGISTRY, N_A, 1, registryCode, N_A, 2, poolCode) reverts InsufficientBalance; RewardPool.fundEndowment() reverts InsufficientBalance; PackSale.openPack(1) reverts NotConfigured; FarmRewards.advanceEpoch() reserves 0 and emits EpochClosed with budget 0. Passing state: after the 0x6d51 wallet transfers 200,000,000e18 to the escrow, forward succeeds and fundEndowment emits Endowed.","severity":"medium","snippet":"        if (amount == 0) revert InsufficientBalance();","title":"Endowment funding precondition is not met on the live chain: EndowmentEscrow holds 0 tokens, the 200M principal sits in the binder wallet, so forward and fundEndowment revert and the game cannot open"}],"hash":"df44d5a025df01b9737d91a2d188e844f126b2034280fb1999f7bb87e9ab2292","nodeId":"93d67d75-a98f-49c6-a53d-af385383048a","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written in the repository root. No source or test files were changed.\n\n**Outcome**\n\nOne finding, severity medium, with a coverage record for all 157 listed entry points.\n\n- **Live endowment precondition fails.** The runbook requires the escrow at `0x1194…21fb` to hold at least 200M tokens before the keeper forwards them to RewardPool. On Robinhood Chain today the escrow holds zero, `forwarded()` is false, and the exact 200M principal sits in the binder wallet `0x6d51…d007`. Until that wallet moves the tokens, `EndowmentEscrow.forward` and `RewardPool.fundEndowment` revert, every epoch closes with a zero budget, and all pack sale paths revert because the pool is never endowed. The finding cites the escrow's zero-balance revert and includes the exact read calls that reproduce the state. No source fix exists; the repair is a transfer from the binder wallet to the escrow before forwarding, or a plain transfer to RewardPool. The `donate` path does not count toward the principal.\n\n**What I verified as holding**\n\n- The config hash recomputes exactly from the four constructor words, and the eight creation hashes in the brief match this build via the existing job A launch test, which passes.\n- All job A contracts were traced against the Execution Trace, Periphery and First Principles guides: the two-generation weight bookkeeping in FarmRewards, the settlement envelope (I confirmed the 1.5x cap cannot be exceeded because event and district multipliers top out at about 1.32x and the active boost never exceeds the committed boost), vintage tax slots, the reserve and recycle conservation across claim, spend, scrap and autoRepair, pack and starter entropy state machines, item custody guards, and the Params defaults against enum order and bounds.\n- The escrow's zero-balance revert means a premature forward call cannot consume the one-shot, so there is no permanent trap.\n\n**Coverage summary**\n\n| Verdict | Rows |\n|---|---|\n| holds | 142 |\n| finding | 2 |\n| unreached | 13 |\n\nThe unreached rows are job B and L2 internals that job A calls into (Season, GridOperator, Enhancement, FeeRouter market execution) and were not traced in depth within the budget.","treeHash":null,"usage":{"cachedInputTokens":2292863,"inputTokens":514,"model":"claude-fable-5-1","outputTokens":57515,"runtime":"claude","turns":37,"wallClockMs":832253}},{"artifacts":[],"attempt":1,"bundleHash":"4741d54041041f8fac6e3d4ce08a0be1694b095ac3c6f01aac05c83ea1091770","device":"f138d40b9355e7bf","findings":[],"hash":"ea2c8a27f90e1afa74f434e4b5ff8c4b198909dabb4fa24779a5bf781fc686a2","nodeId":"eaecca0f-62f0-40b9-a993-b71b137e294a","outcome":"completed","summary":"Created [launch.json](/root/.identitymd/work/ecdced72-cf6c-4732-b8f0-2c8b366d39ee/eaecca0f-62f0-40b9-a993-b71b137e294a/launch.json) with the eight contracts in exact order and the approved constructor arguments.\n\n- All eight creation hashes match.\n- `forge build` passed.\n- Seeded `forge test`: 331 passed, 0 failed, 6 live-chain tests skipped.\n- No source or configuration files changed.\n\nNew addresses and the launch number remain pending deployment; indices 0–7 and the binder handoff are recorded in the manifest.","treeHash":"937300a579db3cda509d22112eb6e54eb6c00675","usage":{"cachedInputTokens":1102976,"inputTokens":66296,"model":"gpt-6-astra","outputTokens":9591,"runtime":"codex","turns":8,"wallClockMs":421068}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"dd2ee4882a1be950","findings":[],"hash":"ea5cb0dc41ee8ff8d612bd28ca60899d8c0c284945da3060493ffeefdaa1ccd4","nodeId":"fd22140f-36b9-4e6a-8311-77e659a7a3ef","outcome":"completed","summary":"The review is complete and the findings file is written. The only change in the tree is `.imd-findings.json`, which the repo excludes from tracking.\n\n**Outcome: no new defect in the assigned area.** The permission model of the eight job A contracts holds against the Access Control, Trust Gap and Asymmetry guides, so the findings list is empty.\n\nWhat I verified:\n\n- **Guard map.** Every state-changing function in Params, GameRegistry, RewardPool, FarmRewards, FarmCore, FarmItems, PackSale and StarterClaim was classified by caller. No storage variable has a writer with a weaker guard than its intended one.\n- **Confused-deputy paths.** Every L4 call into L3 that names a player passes msg.sender or an opt-in value. Beneficiaries are never caller-chosen.\n- **Paired surfaces.** Wallet and pending charge paths, pack purchase variants, equip and unequip, claim and claimFree, and the pause cooldown were diffed. Differences found are conservative or already accepted.\n- **Launch inputs.** All eight creation-code hashes, the six ModuleCode pins and the game config hash recompute from this build and the stated constructor words. The pin test passes.\n- **Escrow and bind.** The escrow pays the module at role 0 of the Desk-bound registry, which confirms the accepted twin-race reasoning.\n\nCoverage record:\n\n| Verdict | Rows |\n|---|---|\n| holds | 94 |\n| unreached | 66 |\n\nAll 157 listed entry points have a row. The unreached rows are job B, L1 and L2 contracts outside this area that none of the L3 guards depend on. Three extra rows record the invariants checked.","treeHash":null,"usage":{"cachedInputTokens":2590045,"inputTokens":578,"model":"claude-fable-5-1","outputTokens":56265,"runtime":"claude","turns":46,"wallClockMs":867547}}],"verification":[{"checks":[{"durationMs":29884,"exitCode":0,"name":"build","output":"Compiling 199 files with Solc 0.8.26\nSolc 0.8.26 finished in 29.72s\nCompiler run successful with warnings:\nWarning (2519): This declaration shadows an existing declaration.\n  --> src/lib/EconomyMath.sol:17:48:\n   |\n17 |         returns (uint256 chance, uint256 burn, uint256 bonus, uint256 daysWad)\n   |                                                ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n  --> src/lib/EconomyMath.sol:44:5:\n   |\n44 |     function bonus(uint256 level) internal pure returns (uint256 b) {\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/V4Market.sol:305:22:\n    |\n305 |     function _record(bool sell, uint256 amount) private {\n    |                      ^^^^^^^^^\nNote: The other declaration is here:\n   --> src/V4Market.sol:504:5:\n    |\n504 |     function sell(uint256 amount, uint256 minOut, address recipient) external nonReentrant returns (uint256 received) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (8760): This declaration has the same name as another declaration.\n  --> test/mocks/MockSwarmIntake.sol:26:9:\n   |\n26 |         bytes4 failure,\n   |         ^^^^^^^^^^^^^^\nNote: The other declaration is here:\n  --> test/mocks/MockSwarmIntake.sol:44:5:\n   |\n44 |     function failure(bytes32 id, uint8 status, bytes32 reason) external returns (bool) {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2072): Unused local variable.\n  --> test/EndowmentEscrowV38.t.sol:28:9:\n   |\n28 |         LocalApplicationFactory f = LocalApplicationFactory(address(d.registry.factory()));\n   |         ^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWarning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> test/EndowmentEscrowV38.t.sol:121:82:\n    |\n121 |     function _registryArgs(address gameToken, address params, uint256 endowment, address factory)\n    |                                                                                  ^^^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/Events.t.sol:213:9:\n    |\n213 |         uint256 price = d.packs.quote(112);\n    |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n --> test/Gas.t.sol:9:9:\n  |\n9 |         uint256 price = d.packs.price();\n  |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Gas.t.sol:75:9:\n   |\n75 |         uint256 q = d.packs.quote(112);\n   |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Invariants.t.sol:56:9:\n   |\n56 |         uint256 price = d.packs.price();\n   |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Items.t.sol:76:9:\n   |\n76 |         uint256 cost = d.packs.quote(112);\n   |         ^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/Items.t.sol:106:9:\n    |\n106 |         uint256 q = d.packs.quote(16);\n    |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/LazyAccounting.t.sol:186:13:\n    |\n186 |             uint256 quote = d.packs.quote(112);\n    |             ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/LazyAccounting.t.sol:421:9:\n    |\n421 |         uint256 quote = d.packs.quote(112);\n    |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Packs.t.sol:37:9:\n   |\n37 |         uint256 quote = d.packs.quote(200);\n   |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Packs.t.sol:64:9:\n   |\n64 |         uint256 q = d.packs.quote(6);\n   |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Pause.t.sol:35:9:\n   |\n35 |         uint256 q = d.packs.quote(1);\n   |         ^^^^^^^^^\n\nWarning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> test/Registry.t.sol:49:21:\n   |\n49 |     function _fresh(LocalApplicationFactory f) private returns (GameRegistry) {\n   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Regression.t.sol:73:9:\n   |\n73 |         uint256 previous = d.items.data(id).durability;\n   |         ^^^^^^^^^^^^^^^^\n\nWarning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> test/SwarmDeskV37.t.sol:485:65:\n    |\n485 |     function _registryArgs(address params, bytes32 starterRoot, address factory) private view returns (bytes memory) {\n    |                                                                 ^^^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/V33.t.sol:254:13:\n    |\n254 |             uint256 q = d.packs.quote(16);\n    |             ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/V33.t.sol:431:9:\n    |\n431 |         uint256 price = d.packs.price();\n    |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/V34.t.sol:78:9:\n   |\n78 |         uint256 q = d.packs.price();\n   |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/V39.t.sol:186:9:\n    |\n186 |         LocalApplicationFactory f = LocalApplicationFactory(address(d.registry.factory()));\n    |         ^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> src/FarmRewards.sol:149:5:\n    |\n149 |     function ready() public view returns (bool) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to view\n   --> test/Base.t.sol:106:5:\n    |\n106 |     function oracleFixture() internal returns (SwarmDesk.OracleConfig memory o) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to view\n   --> test/AuditV315.t.sol:187:5:\n    |\n187 |     function testFixtureDeskBoundAgainstItsTokenLaunchRecord() public {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> test/fork/RehearsalV311.t.sol:224:5:\n    |\n224 |     function _oracle() internal view returns (SwarmDesk.OracleConfig memory o) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> test/fork/RehearsalV311.t.sol:283:5:\n    |\n283 |     function _mineHookSalt(bytes memory initCode) internal view returns (bytes32 salt, address hook) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","passed":true},{"durationMs":36931,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/Clock.t.sol:ClockTest\n[PASS] testLocalEvmFutureBlockAnd256BlockBoundary() (gas: 225376)\n[PASS] testRobinhoodUsesArbSysNotL1EstimateAndHandlesExpiry() (gas: 238560)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 358.83µs (214.90µs CPU time)\n\nRan 1 test for test/fork/RobinhoodFork.t.sol:RobinhoodForkTest\n[SKIP] testForkArbSysAndHistoricalHash() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 185.85µs (53.63µs CPU time)\n\nRan 2 tests for test/V310.t.sol:ToolchainPinsV310Test\n[PASS] testEveryModuleOfThisBuildMatchesOneToolchainPin() (gas: 168471)\n[PASS] testPinsAreOneToolchainAndRejectUnknownCode() (gas: 164239)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 3.59ms (1.53ms CPU time)\n\nRan 4 tests for test/OracleConformanceV37.t.sol:OracleConformanceV37Test\n[PASS] testAcceptsOriginalProtocolSignature() (gas: 17934)\n[PASS] testDigestMatchesUnmodifiedProtocolVector() (gas: 13636)\n[PASS] testFreshVectorSignerSignature() (gas: 30385)\n[PASS] testSelectorsExactlyMatchLiveProtocol() (gas: 3520)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 7.02ms (1.13ms CPU time)\n\nRan 1 test for test/PredictionV34.t.sol:PredictionV34Test\n[PASS] testFullGraphPredictsPoolBeforeRegistryDeployment() (gas: 4162727)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 12.61ms (623.25µs CPU time)\n\nRan 1 test for test/DeployGateV314.t.sol:DeployGateV314Test\n[PASS] testAllLaunchConstructorsWorkWithNoProtocolCode() (gas: 47296062)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 16.12ms (15.93ms CPU time)\n\nRan 5 tests for test/fork/RehearsalV311.t.sol:RehearsalV311Test\n[SKIP] testRehearsalAttestedAnswerChangesPlanWithinBand() (gas: 0)\n[SKIP] testRehearsalGasPerLaunchUnderPlatformCeiling() (gas: 0)\n[SKIP] testRehearsalKeeperPassAdvancesEpochsRevealsEntropyAndClaimFeesPaysTeam() (gas: 0)\n[SKIP] testRehearsalLaunchTaxThenOnePercentAndSurcharge() (gas: 0)\n[SKIP] testRehearsalPacksOpenOneHourAfterLaunch() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 1.32ms (162.01µs CPU time)\n\nRan 3 tests for test/PotV35.t.sol:PotV35Test\n[PASS] testPotDepositRequiresActualTokensAndAuthority() (gas: 256924)\n[PASS] testPotSplitAndLotteryCommitSurvivesFullInventory() (gas: 11851210)\n[PASS] testPotUnclaimedRolloverOnlyAfterFourWeeksNoDoubleClaim() (gas: 6429769)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 28.92ms (18.00ms CPU time)\n\nRan 2 tests for test/PackMythicTiming.t.sol:PackMythicTimingTest\n[PASS] testCapturedSeedCanYieldMythicAfterLevelTen() (gas: 2558167)\n[PASS] testPartialReceiptRechecksLevelAndKeepsCapturedSeed() (gas: 3649411)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 29.13ms (17.51ms CPU time)\n\nRan 3 tests for test/AuditV318.t.sol:AuditV318PartialFillTest\n[PASS] testAfterSwapAcceptsExactFillAtEveryStep() (gas: 2199373)\n[PASS] testAfterSwapRefusesAPartialFill() (gas: 415962)\n[PASS] testMockBeforeSwapRefusesNonExtremeLimitAndKeepsExactOutputRefusal() (gas: 197452)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 29.58ms (4.29ms CPU time)\n\nRan 6 tests for test/CivicV35.t.sol:CivicV35Test\n[PASS] testBillboardsBidRefundTextRulesAndPoolOnly() (gas: 945608)\n[PASS] testBlackMarketDescendingLimitedAndPause() (gas: 3828638)\n[PASS] testCollapseSuccessAndSingleOutageFailure() (gas: 810762)\n[PASS] testDormantDisabledAndNoticeOnce() (gas: 303076)\n[PASS] testOnceSeasonBoostBoundsAndSnapshot() (gas: 1722528)\n[PASS] testWarFreezeScoresConservationAndPayoutOnlyOnce() (gas: 1365382)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 30.37ms (17.41ms CPU time)\n\nRan 3 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] testConstructorRejectsMissingInputsAndDoesNotCallExternalContracts() (gas: 3994)\n[PASS] testForeignCallerDoesNotGetAnyAuthority() (gas: 43053059)\n[PASS] testImmutableGraphAndEip170Sizes() (gas: 187323)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 32.89ms (7.32ms CPU time)\n\nRan 6 tests for test/ForeignTokenTwin.t.sol:ForeignTokenTwinTest\n[PASS] testBinderBindsTheGenuineRegistryThenAlreadyDone() (gas: 2793358)\n[PASS] testBinderCannotBypassAnyProof() (gas: 7228653)\n[PASS] testForeignTwinCannotBindFromTheAttacker() (gas: 1433024)\n[PASS] testForeignTwinIsSelfConsistentAndPassesEveryProofExceptTheBinder() (gas: 137061)\n[PASS] testNoNonBinderCanBindEitherRegistry() (gas: 2005687)\n[PASS] testZeroBinderRevertsAtConstruction() (gas: 673051)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 20.12ms (9.09ms CPU time)\n\nRan 5 tests for test/AuditV315.t.sol:AuditV315Test\n[PASS] testAttackerLaunchRecordNamesAnotherTokenAndIsRefused() (gas: 10743754)\n[PASS] testFakeMarketEchoingDeskTokenAndHashCannotBind() (gas: 6952035)\n[PASS] testFixtureDeskBoundAgainstItsTokenLaunchRecord() (gas: 58275)\n[PASS] testRealHookRecordedByTheLaunchFactoryBinds() (gas: 12111396)\n[PASS] testRecordWithOtherHookOrOtherPairCurrencyIsRefused() (gas: 6245556)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 41.23ms (14.14ms CPU time)\n\nRan 2 tests for test/Factory.t.sol:FactoryTest\n[PASS] testFactoryInvalidSearchRange() (gas: 4937)\n[PASS] testHookFactoryFlagsImmutableConfigAndIdempotence() (gas: 7975916)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 44.03ms (32.50ms CPU time)\n\nRan 3 tests for test/Pause.t.sol:PauseTest\n[PASS] testOnlySwarmBoundedDurationAndCannotExtendPause() (gas: 242972)\n[PASS] testSalePausedWhileEntropyClaimsWithdrawalsAndEpochsContinue() (gas: 15148717)\n[PASS] testUnpauseCannotResetNextPauseCooldown() (gas: 194647)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 44.89ms (33.96ms CPU time)\n\nRan 2 tests for test/AutoRepairReviewV35.t.sol:IndependentAutoRepairReview\n[PASS] testAutomaticRepairRecordsHistoricalWeekBeforeCompletion() (gas: 5411876)\n[PASS] testLateAutomaticRepairCannotReopenSeasonEligibility() (gas: 4275820)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 45.49ms (29.88ms CPU time)\n\nRan 6 tests for test/EndowmentEscrowV38.t.sol:EndowmentEscrowV38Test\n[PASS] testConstructorRejectsMissingInputs() (gas: 3911)\n[PASS] testForwardRejectsBadProofs() (gas: 2647974)\n[PASS] testForwardRequiresBalance() (gas: 748474)\n[PASS] testForwardSendsWholeBalanceOnceToAuthenticatedPoolAndFundsEndowment() (gas: 1702540)\n[PASS] testForwardWithRealEndowmentActivatesDrip() (gas: 12904786)\n[PASS] testTwinWithForeignTokenCannotDrainEscrow() (gas: 12918283)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 51.47ms (20.24ms CPU time)\n\nRan 5 tests for test/ReviewV34.t.sol:ReviewV34Test\n[PASS] testCanonicalCompetingRegistryCannotTakeOverBinding() (gas: 9502782)\n[PASS] testDustBuyCannotConsumeGlobalBuyInterval() (gas: 336156)\n[PASS] testLateGreenEntrySettlesWithinReservedEnvelope() (gas: 4441470)\n[PASS] testMeaningfulSmallBuyCanUseLessThanMaximumBatch() (gas: 263646)\n[PASS] testSameConfigurationAtUncommittedCoordinatesCannotBind() (gas: 9589277)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 18.39ms (10.63ms CPU time)\n\nRan 7 tests for test/V33.t.sol:LaunchProtectionTest\n[PASS] testBuyTaxHasImmutableSteps() (gas: 97111)\n[PASS] testLaunchTaxChargedAndRoutedEntirelyToPool() (gas: 228216)\n[PASS] testNoBuySizeLimitAtAnyLaunchStep() (gas: 1691893)\n[PASS] testNormalBuyAfterDecayHasNoLaunchTax() (gas: 1479627)\n[PASS] testSellsPayNormalFeeDuringLaunch() (gas: 339677)\n[PASS] testSnipersSplittingBuysStillPayTheCurve() (gas: 657970)\n[PASS] testViewsBeforeInitialization() (gas: 4786746)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 47.77ms (9.63ms CPU time)\n\nRan 2 tests for test/GridV35.t.sol:GridV35Test\n[PASS] testGreenAndCheapBothFavorTheStableDistrict() (gas: 4110886)\n[PASS] testReservedEventsHaveZeroLaunchWeightAndPlanOnlyWhenEnabled() (gas: 723024)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 39.43ms (16.52ms CPU time)\n\nRan 8 tests for test/PhasedReleaseV36.t.sol:PhasedReleaseV36Test\n[PASS] testBillboardsDisabledThenEnabled() (gas: 414524)\n[PASS] testEnableIsNoticedOnceNeverOffAndSwarmOnly() (gas: 355991)\n[PASS] testEnhancementDisabledThenEnabledOnce() (gas: 1098908)\n[PASS] testEverythingDeploysDisabledAndCoreStillWorks() (gas: 8179262)\n[PASS] testFuzzUnannouncedFeatureCannotBeEnabled(uint256) (runs: 256, μ: 30071, ~: 29968)\n[PASS] testLocksStakeAndLobbyDisabledThenEnabled() (gas: 2861203)\n[PASS] testPotDisabledFollowsV34RoutingThenEnabled() (gas: 455827)\n[PASS] testReservedEventsDisabledThenEnabled() (gas: 557745)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 40.50ms (32.61ms CPU time)\n\nRan 14 tests for test/V34.t.sol:V34Test\n[PASS] testBestFarmCapsAbsoluteSpendAndBreaksTiesByAddress() (gas: 4665724)\n[PASS] testBestFarmNeedsTwentyEpochsAndUsesCappedAbsoluteSpend() (gas: 4144232)\n[PASS] testBuybackSlippage150BpsMaxAndIntervalCannotBeBypassed() (gas: 756212)\n[PASS] testDonationsAndOrdinaryInflowsCannotPretendToBeEndowment() (gas: 1520675)\n[PASS] testEntropyAt256BoundaryAndAt257RearmsWithoutPayOrMint() (gas: 3283396)\n[PASS] testFirstRewardStartsCurrentEpochAtHalfTimeAndSnapshotCannotBeReplaced() (gas: 4843822)\n[PASS] testFreeFarmDoesNotDiluteDistrictOrClaimPaidPrize() (gas: 4739687)\n[PASS] testGameReadinessBothChecksRollbackEthAndTokenPurchase() (gas: 3618362)\n[PASS] testHookUninitializedCannotOpenOrStartEpochAndCallerCannotStartClock() (gas: 5948895)\n[PASS] testLaunchTaxExactBoundaries() (gas: 5831609)\n[PASS] testMythicGateEvaluatedAtRevealNotAtPayment() (gas: 1624053)\n[PASS] testPackOpeningFollowsHookAndNotLegacyDeployTimestamp() (gas: 101151)\n[PASS] testRemainderTransferredToPredictedPoolBeforeDeploymentAndNoApprovalNeeded() (gas: 2463041)\n[PASS] testStarterEntropyRearmsAfterClaimWindowAndNoDoubleMint() (gas: 772310)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 48.90ms (41.34ms CPU time)\n\nRan 8 tests for test/FeesParams.t.sol:FeesParamsTest\n[PASS] testAllDefaultParamsWithinHardBounds() (gas: 1255771)\n[PASS] testBuyBackPoolOnlySlippageFailureRollbackAndDustGriefBlocked() (gas: 774066)\n[PASS] testExactEthSplitsHeartbeatCapAndPullPayments() (gas: 512724)\n[PASS] testFuzzNoStepAboveTenPercent(uint96) (runs: 256, μ: 44972, ~: 45115)\nLogs:\n  Bound result 962\n\n[PASS] testFuzzSplitsConserveEveryWei(uint96) (runs: 256, μ: 207976, ~: 210856)\nLogs:\n  Bound result 70330818848049767\n\n[PASS] testHeartbeatCapFixedAtOneEth() (gas: 207904)\n[PASS] testParamsStepCooldownBoundsAuthorityAndLetter() (gas: 195823)\n[PASS] testPoolNoPublicReserveRecycleOrPayment() (gas: 135304)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 123.60ms (98.86ms CPU time)\n\nRan 3 tests for test/HookBinding.t.sol:HookBindingTest\n[PASS] testHoldBeforeGameExistsThenBindOnceAndFlushExactStreams() (gas: 43435048)\n[PASS] testLookAlikeCannotBindEvenWhenTeamCalls() (gas: 1908201)\n[PASS] testWrongRouterAndMissingCodeRejectedBeforePermanentBind() (gas: 41150218)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 19.18ms (10.59ms CPU time)\n\nRan 2 tests for test/JobALaunch.t.sol:JobALaunchTest\n[PASS] testJobABatchOnEmptyChainPreservesReferencesAndRegistersRoles() (gas: 87225121)\n[PASS] testJobAPinsMatchTheBriefAndDeskPins() (gas: 166973)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 105.46ms (105.32ms CPU time)\n\nRan 5 tests for test/KeeperProfit.t.sol:KeeperProfitTest\n[PASS] testPaidPackEntropyKeeperProfit() (gas: 1182284)\nLogs:\n  paid pack entropy execution gas: 139616\n  paid pack entropy bounty wei: 3380475000000\n  paid pack entropy execution plus 21000 gas cost wei: 3212320000000\n\n[PASS] testPlanEntropyKeeperProfit() (gas: 1665588)\nLogs:\n  plan entropy execution gas: 163211\n  plan entropy bounty wei: 4474800000000\n  plan entropy execution plus 21000 gas cost wei: 3684220000000\n\n[PASS] testSeasonFinalizeThreeWinnersAndPrizeKeeperProfit() (gas: 3451194)\nLogs:\n  season finalize three winners and prize execution gas: 644073\n  season finalize three winners and prize bounty wei: 15825700000000\n  season finalize three winners and prize execution plus 21000 gas cost wei: 13301460000000\n\n[PASS] testSeasonPrepareIsConstantUnpaidWork() (gas: 1342777)\n[PASS] testStarterEntropyKeeperProfit() (gas: 324487)\nLogs:\n  starter entropy execution gas: 142744\n  starter entropy bounty wei: 3380150000000\n  starter entropy execution plus 21000 gas cost wei: 3274880000000\n\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 19.56ms (12.96ms CPU time)\n\nRan 5 tests for test/AuditV314.t.sol:AuditV314Test\n[PASS] testDustAmountCannotReduceExecutedBatchAndEmptyQueueReverts() (gas: 1383695)\n[PASS] testLaterSameEpochCreditKeepsEarlierTaxVintage() (gas: 608585)\n[PASS] testLockInsertionWalkIsBoundedAndFailureIsAtomic() (gas: 30159768)\n[PASS] testOnlyFarmerCanRetireEvenAnEmptyFarm() (gas: 4306920)\n[PASS] testStaleSellAmountUsesCurrentDepthAndEnforcesCurrentMinimum() (gas: 1624852)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 160.29ms (148.72ms CPU time)\n\nRan 3 tests for test/StandardAdapter.t.sol:StandardAdapterTest\n[PASS] testExistingHookKeyPreservedAndNoExtraFee() (gas: 330662)\n[PASS] testRequiresThirtyMinutesFreshOracleAndAuthorizedCallback() (gas: 198351)\n[PASS] testSettlementSlippageFailurePreservesCredits() (gas: 240594)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 16.14ms (1.54ms CPU time)\n\nRan 8 tests for test/V39.t.sol:V39Test\n[PASS] testBaseDepositsAreEntirelyRewardEth() (gas: 190166)\n[PASS] testGridAcceptsSeverityFromThreeThousandAndRejectsBelow() (gas: 2948508)\n[PASS] testHookAddsExactlyOnePercentOnBuysAndSellsAfterLaunchWindow() (gas: 2181038)\n[PASS] testHookHasNoNetworkShareRecipientOrWithdrawal() (gas: 107668)\n[PASS] testMarketFactoryConfigHasNoNetworkRecipient() (gas: 10171661)\n[PASS] testRegistryAcceptsEitherToolchainPinAndNothingElse() (gas: 590544)\n[PASS] testSellSurchargeStillProgressiveAndCappedAtFifteenPercent() (gas: 1832534)\n[PASS] testStepLaunchTaxUnchangedAndFullyToRewards() (gas: 1292225)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 161.88ms (114.24ms CPU time)\n\nRan 1 test for test/WarReviewV35.t.sol:IndependentWarReview\n[PASS] testWarWinnerCannotChangeAfterDeadline() (gas: 5734360)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 931.42µs (798.83µs CPU time)\n\nRan 1 test for test/YieldFloorReviewV35.t.sol:IndependentYieldFloorReview\n[PASS] testFirstEpochItemQuotesKeepNonzeroFloorAtCorrectScale() (gas: 673277)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 582.64µs (521.72µs CPU time)\n\nRan 10 tests for test/Bounties.t.sol:BountiesTest\n[PASS] testBuyBountyProportionalCapNoDustCreditAndFailureRollback() (gas: 680020)\n[PASS] testEmptyRosterAndInvalidBatchReceiveNothing() (gas: 1419248)\n[PASS] testEveryWorkKindBoundedByHeartbeatAndAuthorizedProducer() (gas: 64315585)\n[PASS] testLazySettlementUnpaidAndCannotReplay() (gas: 6970276)\n[PASS] testOnlyFinalizePaidOnceAndEmptyWeekUnpaid() (gas: 2292196)\n[PASS] testPackEntropyCapturedOnceWithFullInventoryAndThroughPause() (gas: 3713527)\n[PASS] testPlanResolutionPaidOnceIncludingAdvanceForwarding() (gas: 2934177)\n[PASS] testRemovedWorkBountiesRejectedEvenFromOldProducer() (gas: 179981)\n[PASS] testStarterEntropySurvivesFullInventoryExpiryAndPauseWithoutReplayPayment() (gas: 5324477)\n[PASS] testWorkCreditRespectsZeroGasPricePriceCeilingAndUnitCap() (gas: 333726)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 148.11ms (150.86ms CPU time)\n\nRan 6 tests for test/Market.t.sol:MarketTest\n[PASS] testBuyChargesExactlyOnePercentAllToRewards() (gas: 1730007)\n[PASS] testFuzzTotalFeeHardCap(uint96) (runs: 256, μ: 1806228, ~: 1809180)\nLogs:\n  Bound result 70330818848049767\n\n[PASS] testOnlyManagerCorrectPoolExactInputAndHookAddress() (gas: 111284)\n[PASS] testSingleDumpIncludesItselfAndFeeDecaysWithoutGriefReset() (gas: 17163513)\n[PASS] testTwapAveragesEthPriceAcrossUnequalPrices() (gas: 2330865)\n[PASS] testTwapWarmupAndFlashManipulationResistance() (gas: 1883323)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 201.18ms (231.42ms CPU time)\n\nRan 1 test for test/EndowmentGame.t.sol:EndowmentGameTest\n[PASS] testRealMiningCannotSpendFutureEndowment() (gas: 130998353)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 255.60ms (227.98ms CPU time)\n\nRan 8 tests for test/V4Integration.t.sol:V4IntegrationTest\n[PASS] testRealV4BuyAndSingleSwapSellTaxConserveSettlement() (gas: 2269731)\n[PASS] testRealV4ManipulatedSpotCannotInstantlySetBuybackQuote() (gas: 1909871)\n[PASS] testRealV4SmallBuyPaysPositiveKeeperMargin() (gas: 2072687)\nLogs:\n  real V4 0.2ETH buy gas: 1933528\n  real V4 buy bounty wei: 48651375000000\n\n[PASS] testRealV4SystemBuyUsesTwapAndOnlySystemFunds() (gas: 2078498)\n[PASS] testRealV4SystemSalesUseDepthTwapNormalFeesAndConserveTokens() (gas: 2247043)\n[PASS] testSystemBuybackOffsetsRecordedSellImbalance() (gas: 2509612)\n[PASS] testTenEthPoolRewardBuyAtSpotTwapIncludesLpFee() (gas: 2151712)\n[PASS] testTenEthPoolSystemSellAtSpotTwapIncludesLpFee() (gas: 4120061)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 254.33ms (16.94ms CPU time)\n\nRan 7 tests for test/HeartbeatBpsV313.t.sol:HeartbeatBpsV313Test\n[PASS] testFuzzAnyShareConservesEveryWeiAndNeverMovesTeamOrPot(uint16,uint96) (runs: 256, μ: 1430241, ~: 1609838)\nLogs:\n  Bound result 203\n  Bound result 40888371348\n\n[PASS] testLaunchDefaultIsTwoPercentAndSplitUnchanged() (gas: 230935)\n[PASS] testLoweredShareBackToFloorAndFloorIsHard() (gas: 401104)\n[PASS] testMaximumShareWithPotEnabledIsClippedToWhatIsLeft() (gas: 1867739)\n[PASS] testOnlyTheSwarmWithinBoundsStepAndCooldownCanMoveTheShare() (gas: 341795)\n[PASS] testRaisedShareStillStopsAtTheOneEthCap() (gas: 480520)\n[PASS] testSwarmSet220CreditsTwoPointTwoPercentOfSurchargeAndTokens() (gas: 543701)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 412.81ms (412.44ms CPU time)\n\nRan 9 tests for test/AuditV318.t.sol:AuditV318Test\n[PASS] testAuditPriceLimitedBuyRevertsInsteadOfPayingTaxOnUnconsumedEth() (gas: 132927)\n[PASS] testBeforeSwapNamesThePriceLimitedBuyError() (gas: 63433)\n[PASS] testFullFillBuysPayEachStepExactly() (gas: 2527120)\n[PASS] testFullFillTenEthBuyPaysExactlyNinetyPercentInTheFirstStep() (gas: 413400)\n[PASS] testFuzzOnlyTheExtremeBoundBuysAndPaysTheFlooredTax(uint96,uint160,uint8) (runs: 256, μ: 1588550, ~: 1367460)\nLogs:\n  Bound result 21671\n  Bound result 17180514964\n  Bound result 0\n\n[PASS] testPriceLimitedBuyRefusedAfterLaunchWindowToo() (gas: 4642431)\n[PASS] testPriceLimitedSellStillFillsPartiallyAndIsChargedOnActualOutput() (gas: 2237288)\n[PASS] testPublicInterfaceUnchanged() (gas: 108830)\n[PASS] testSystemRewardBuyStillFills() (gas: 1992012)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 482.63ms (87.66ms CPU time)\n\nRan 2 tests for test/StandardMarket.t.sol:StandardMarketTest\n[PASS] testFuzzStandardSellNeverAddsProgressiveSurcharge(uint96) (runs: 256, μ: 1806816, ~: 1813969)\nLogs:\n  Bound result 70330818848049767\n\n[PASS] testStandardBuyOnePercentAllToRewards() (gas: 1673466)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 375.41ms (356.29ms CPU time)\n\nRan 20 tests for test/V33.t.sol:V33Test\n[PASS] testActionBeforeExpiryMovesBucketWithoutDoubleCount() (gas: 25983504)\n[PASS] testAdvanceIsConstantInExpiringFarms() (gas: 38430108)\n[PASS] testAgeCapsAtBoundaries() (gas: 204552)\n[PASS] testClaimDoesNotRecommitWhileBehind() (gas: 37239808)\n[PASS] testClaimRecommitsAndPackRecommits() (gas: 60787577)\n[PASS] testDistrictScoreAveragePerFarmAndTenPercentWalletCap() (gas: 4607489)\n[PASS] testHeartbeatCapExcessGoesToPoolAndBaseFeeIsAllRewards() (gas: 270973)\n[PASS] testIdleFarmLeavesDenominatorAfterTwelveEpochs() (gas: 23504929)\n[PASS] testLaunchTaxDepositIsAllPoolAndMarketOnly() (gas: 137567)\n[PASS] testMergeRemoved() (gas: 512630)\n[PASS] testPackLobbySellSplit88Team10Heartbeat2() (gas: 407960)\n[PASS] testPackSaleOpensSixtyMinutesAfterLaunch() (gas: 1264387)\n[PASS] testPaidXpCannotBypassAgeGates() (gas: 59083319)\n[PASS] testPaidXpCappedPerDayActivityUncapped() (gas: 13264967)\n[PASS] testPartialRoomIsClippedNotReverted() (gas: 2156541)\n[PASS] testRewardsEarnedBeforeExpiryAreNeverLost() (gas: 47725769)\n[PASS] testSingleWhaleDistrictCannotWinAlone() (gas: 4534340)\n[PASS] testSyncRecommitsFromNextEpoch() (gas: 33379218)\n[PASS] testTokenPacksAlsoWaitForOpening() (gas: 59864)\n[PASS] testTopSpenderTrackingIsExact() (gas: 5411751)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 456.23ms (1.10s CPU time)\n\nRan 6 tests for test/Endowment.t.sol:EndowmentTest\n[PASS] testDirectTransferCannotBypassOrBackdateDrip() (gas: 368166)\n[PASS] testExactFundingFullLinearDripAndConservation() (gas: 832168)\n[PASS] testFuzzCumulativePaymentsCannotExceedVestedPrincipal(uint32,uint128) (runs: 256, μ: 522805, ~: 524763)\nLogs:\n  Bound result 7\n  Bound result 16644447909644436\n\n[PASS] testNoTeamDonorOrSwarmWithdrawalOrReserveAuthority() (gas: 614309)\n[PASS] testParamsSnapshotCannotAccelerateOrRelockExistingEndowment() (gas: 303686)\n[PASS] testUnderfundingCannotActivateAndDonationsStayConserved() (gas: 453428)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 535.54ms (516.35ms CPU time)\n\nRan 6 tests for test/Regression.t.sol:RegressionTest\n[PASS] testCableRepairRestoresOnlyRemainingHalfEpoch() (gas: 11818095)\n[PASS] testEmptyEpochPreservesLastSettledRateButResetsScrapAllowance() (gas: 11008366)\n[PASS] testFuzzCableRepairBlendHandlesNonMonotonicRarityBonuses(uint16) (runs: 256, μ: 1374183, ~: 1374014)\nLogs:\n  Bound result 103\n\n[PASS] testRegisterOnlyAccountsDoNotAddSettlementWorkAndEmptyFarmCanRetire() (gas: 2037709)\n[PASS] testRepairAndPaidPackCannotRetroactivelyBoostEpoch() (gas: 9562743)\n[PASS] testUnlimitedFreshPacksCannotDrainPoolByScrapping() (gas: 9668475)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 559.51ms (609.65ms CPU time)\n\nRan 6 tests for test/SeasonAudit.t.sol:SeasonAuditTest\n[PASS] testAuditThresholdStrictAndNoWhaleSoftCap() (gas: 40508248)\n[PASS] testLotteryEntitlementSurvivesFullInventory() (gas: 131721528)\n[PASS] testPackSupplyDropOnlyActiveFarmsAtDoublePace() (gas: 11743280)\n[PASS] testParameterChangesCannotChangeClosedEpochBetweenBatches() (gas: 12523805)\n[PASS] testSeasonCannotFinalizeEarlyAndExpiredLotteryMustRearm() (gas: 124179117)\n[PASS] testWeeklyThreeDistinctTicketWinnersFuturePackAndBestPrize() (gas: 124934770)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 558.57ms (1.32s CPU time)\n\nRan 3 tests for test/Gas.t.sol:GasTest\n[PASS] testGasCommonActions() (gas: 10873117)\nLogs:\n  buy token pack: 925868\n  open one pack: 514873\n  equip: 966814\n  repair wallet: 614735\n  enhancement commit: 568464\n  expand: 390489\n  token pack wallet: 655187\n  withdraw: 255483\n  unequip: 407017\n\n[PASS] testGasFullFarmLongIdleBoundedChunks() (gas: 119295605)\nLogs:\n  settle full 24-item farm eight epochs after 40 idle: 12496054\n\n[PASS] testGasTypicalFarmSettlementHasNoBounty() (gas: 8944774)\nLogs:\n  settle typical three-item farm one epoch: 923830\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 607.50ms (609.47ms CPU time)\n\nRan 1 test for test/StandardV4Integration.t.sol:StandardV4IntegrationTest\n[PASS] testStandardAdapterRealPoolPaysExistingHookExactlyOnce() (gas: 1949215)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 351.13ms (891.04µs CPU time)\n\nRan 8 tests for test/TwinCaptureV312.t.sol:TwinCaptureV312Test\n[PASS] testBinderChoosingTwinOrphansHonestGame() (gas: 12068523)\n[PASS] testBinderChosenTwinCannotPayAttacker() (gas: 12034732)\n[PASS] testEOAMarketCannotBind() (gas: 5759282)\n[PASS] testHonestBindThenForwardReachesHonestPool() (gas: 6532903)\n[PASS] testHookWithForeignConfigurationCannotBind() (gas: 5801492)\n[PASS] testTwinCannotWinTheBindRace() (gas: 13565631)\n[PASS] testTwinWithForeignMarketCannotBind() (gas: 12270581)\n[PASS] testTwinWithForeignTokenCannotBind() (gas: 12441654)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 373.31ms (19.66ms CPU time)\n\nRan 2 tests for test/ReservedEventsV35.t.sol:ReservedEventsV35Test\n[PASS] testFuzzReservedFestivalCannotExceedFifteenPercent(uint16) (runs: 256, μ: 4927537, ~: 4927534)\n[PASS] testReservedHeatwaveExtraCoolingWearAndBothProtections() (gas: 10178642)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 848.56ms (859.03ms CPU time)\n\nRan 9 tests for test/Epochs.t.sol:EpochsTest\n[PASS] testCannotAdvanceEarlyAndBountyOnce() (gas: 2513731)\n[PASS] testClaimsEveryEpochAndRedistributionIsNextEpoch() (gas: 12010062)\n[PASS] testGasAdvanceIndependentOfRoster() (gas: 895978527)\nLogs:\n  advance empty roster: 1284212\n  advance 1000 farms: 1473392\n\n[PASS] testNoCatchupEmissionDuringGap() (gas: 6270392)\n[PASS] testNoRetroactiveEquipmentAndBoundedBatches() (gas: 5790681)\n[PASS] testNoWhaleCapHashShares() (gas: 10182869)\n[PASS] testReferralOneLevelSetOnceNoSelf() (gas: 7531610)\n[PASS] testTaxCurveExactAndFloor() (gas: 34112)\n[PASS] testWithdrawFailureRollsBackAndReentrancyCannotClaimTwice() (gas: 7446317)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 5.80s (5.91s CPU time)\n\nRan 11 tests for test/Items.t.sol:ItemsTest\n[PASS] testComputeHashSupportHashAndBonusesReplaceDuo() (gas: 4715342)\n[PASS] testDurabilityWearRepairAndEnhancementMetadataPreserved() (gas: 8393341)\n[PASS] testEquipRarityGatesAndMythicGate() (gas: 4162922)\n[PASS] testFullStackRarityCapAndRoomFlags() (gas: 7665589)\n[PASS] testInventoryMintCannotExceedCapacityAndExpansionRises() (gas: 3356807)\n[PASS] testLockedItemCannotBeScrappedUntilEpochRolls() (gas: 5989066)\n[PASS] testOffgridSavings() (gas: 2711135)\n[PASS] testPaidXpCannotBypassRoomTwoAgeGate() (gas: 3746447)\n[PASS] testRoomGatesAndLevelProgression() (gas: 78475814)\n[PASS] testScrapPaysPoolYieldAndCannotRepeat() (gas: 7561671)\n[PASS] testSoulboundOnlyOwnFarmAndNoDuplicateTypes() (gas: 2265957)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 10.73s (423.95ms CPU time)\n\nRan 21 tests for test/SwarmDeskV37.t.sol:SwarmDeskV37Test\n[PASS] testBackupFailureUnknownFailureDeadlineAndPriceCap() (gas: 751317)\n[PASS] testBackupPullsExactPriceRecordsRequestAndRestrictsBodyAndCadence() (gas: 1207764)\n[PASS] testDeskSetHeartbeatBpsMovesFeeRouterShare() (gas: 945834)\n[PASS] testEmptyChainConstructorAndAuthenticatedBindingRejectSpoofs() (gas: 12683178)\n[PASS] testEventClampingAndFallbackWithoutAnswer() (gas: 1117363)\n[PASS] testExpiredOldSlotOldEpochAndUnexecutedAnswersNeverAct() (gas: 852773)\n[PASS] testFlatConstructorRejectsUnusedPackedBits() (gas: 7335783)\n[PASS] testForgedTamperedWrongSignerWrongDomainAndCallerRejected() (gas: 359833)\n[PASS] testFutureIssueWrongTypeMalformedLengthAndPriceNeverConsume() (gas: 327553)\n[PASS] testFuzzEveryParamHardBoundsAndTenPercentStep(uint8,uint248) (runs: 256, μ: 476143, ~: 477834)\nLogs:\n  Bound result 0\n\n[PASS] testNextSlotAcceptsSameQuestionAndChangedExecutionBytesReject() (gas: 1146136)\n[PASS] testNoAdminPathsAndEntireGraphUsesDesk() (gas: 428356)\n[PASS] testNoopRegulatorAcceptedAndParamsCooldownPreserved() (gas: 452656)\n[PASS] testRegulatorClampsParamsAnnouncesPhasesAndThirtyDayCaps() (gas: 1146623)\n[PASS] testRegulatorSkipsOutOfRangeKeysInsteadOfClampingToFortyFive() (gas: 501093)\n[PASS] testReplayDifferentSourceAndSecondAnswerSameSlotIgnored() (gas: 1068212)\n[PASS] testRobinhoodNativeClockCallbackWithin200k() (gas: 352907)\n[PASS] testScheduleDeliveryStoresUnder200kThenExecutesTwoPlans() (gas: 984580)\n[PASS] testSubmitRelayAcceptsAttestedAnswerFromAnyoneOnce() (gas: 1092075)\n[PASS] testSubmitRelayRejectsForgedWrongQuestionStaleAndMalformed() (gas: 1843104)\n[PASS] testWrongQuestionUnknownRequestWeakPanelAndWindowRejected() (gas: 364850)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 10.67s (150.86ms CPU time)\n\nRan 5 tests for test/FarmDailyBasisV317.t.sol:FarmDailyBasisV317Test\n[PASS] testBasisRisesAtOnceToAHigherSettledYield() (gas: 15550655)\n[PASS] testDecayConstantIsExposed() (gas: 8403)\n[PASS] testProRataEntryEpochIsScaledToItsFullEpochEquivalent() (gas: 8748921)\n[PASS] testStarvingForManyEpochsDecaysGeometricallyNotToTheFloor() (gas: 28087075)\n[PASS] testZeroNetEpochOnlyDecaysTheBasisByOneStep() (gas: 14591209)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 10.88s (189.70ms CPU time)\n\nRan 18 tests for test/EconomyV35.t.sol:EconomyV35Test\n[PASS] testAllEnhancementTableEndpointsAndGlobalBonusCap() (gas: 1477864)\n[PASS] testDurabilityBoundariesAndIdleNoWear() (gas: 38169181)\n[PASS] testEnhanceBurnFailureAndLevelGate() (gas: 1218579)\n[PASS] testEnhanceCapsNoticeUpwardOnlyAndThirtyDays() (gas: 355848)\n[PASS] testEnhanceCommitCannotPlaceScrapOrRetryAndLapsesAsWorstOutcome() (gas: 2423527)\n[PASS] testFeeSalesDepthSlippageCadenceAndNormalFeePot() (gas: 1737855)\n[PASS] testFreeAllowlistOnceWindowStarterScrapAndMetadata() (gas: 3102778)\n[PASS] testFreeRootRemainsFrozenAfterSevenDays() (gas: 43976)\n[PASS] testFreeRootWindowAndIndexLimit() (gas: 55991)\n[PASS] testFuzzPriceCurveDaysBounds(uint32,uint32) (runs: 256, μ: 88692, ~: 90188)\nLogs:\n  Bound result 2196\n\n[PASS] testLockBonusRedistributesWithinReservedEmission() (gas: 11683136)\n[PASS] testLockEscrowNoEarlyExitAndWalletCap() (gas: 5394589)\n[PASS] testQuoteScalesLastSettlementAndHasFloor() (gas: 4285279)\n[PASS] testRepairYieldQuoteAndAutoRepairCreditsOnly() (gas: 10812876)\n[PASS] testRoomsChargeYieldDaysAndRetainAgeGates() (gas: 2618884)\n[PASS] testSystemSellDustCannotOccupyCadenceAndCappedHeartbeatReturnsTokens() (gas: 1562949)\n[PASS] testTokenOnlyGiftSplitsNoEthPeg() (gas: 1738156)\n[PASS] testZapAtomicMinOutPauseAndRefund() (gas: 1441448)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 10.88s (324.13ms CPU time)\n\nRan 5 tests for test/Registry.t.sol:RegistryTest\n[PASS] testAllModulePinsMatchExactPinnedCompilerArtifacts() (gas: 1068880)\n[PASS] testAuthenticatedEnrollmentRejectsUncreatedWrongCodeAndWrongRegistry() (gas: 2930598)\n[PASS] testConstructorAcceptsEmptyGraphWithoutExternalCalls() (gas: 13657)\n[PASS] testCounterfeitRuntimeAtAnotherFactoryCannotEnroll() (gas: 1542191)\n[PASS] testCounterfeitRuntimeWithPoisonedCreditCannotEnroll() (gas: 5876476)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 10.88s (4.23ms CPU time)\n\nRan 9 tests for test/Packs.t.sol:PacksTest\n[PASS] testExactPaymentAndFutureBlockRequired() (gas: 1671228)\n[PASS] testExactRarityThresholdsAndMythicGate() (gas: 282935)\n[PASS] testExpiryRearmsWithoutMintingAndInventoryOpeningLimit() (gas: 3797222)\n[PASS] testFuzzVrgdaAlwaysBounded(uint32,uint32) (runs: 256, μ: 61535, ~: 63085)\nLogs:\n  Bound result 2196\n\n[PASS] testItemTypeDistributionExact() (gas: 626492)\n[PASS] testNoWalletGlobalOrTokenPackDailyLimit() (gas: 4392810)\n[PASS] testStarterWindowProofTokenIdOnceAndInventoryFailureRetry() (gas: 881490)\n[PASS] testTokenPackSameQuoteAndSplitWhenUsingWalletOrCredits() (gas: 76592671)\n[PASS] testVrgdaInitialStepDecayFloorCeilingAndBulkPricing() (gas: 1299987)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 10.88s (295.52ms CPU time)\n\nRan 13 tests for test/Events.t.sol:EventsTest\n[PASS] testCheapTariffAppliesCitywide() (gas: 6431880)\n[PASS] testColdPowerFireImmuneAndCleanPowerSurgeImmune() (gas: 7916395)\n[PASS] testFallbackAndExpiredSeedIndependentOfSwarmNumber() (gas: 1788804)\n[PASS] testFireNoCoolingZeroYieldColdPowerImmune() (gas: 6156432)\n[PASS] testGreenWaveRaisesDistrictMiningTenPercent() (gas: 6433957)\n[PASS] testLobbyOwnDistrictSplitDecayAndMinimumWeight() (gas: 1083530)\n[PASS] testOutageAndOffgridRoomMitigation() (gas: 7068792)\n[PASS] testPlansOnlyNextTwoOnceAndBoundedSeverity() (gas: 344926)\n[PASS] testRollingCapsAndInitialPositiveQuotaWithHostilePlans() (gas: 102269963)\n[PASS] testSurgeCanDestroyCommonButNeverLegendary() (gas: 6422908)\n[PASS] testSurgeDamagesExactlyOneItemAndCleanPowerImmune() (gas: 6305934)\n[PASS] testSurgeNeverDestroysLegendaryOrMythic() (gas: 9523164)\n[PASS] testTheftRouterDisabledAndRepairRestores() (gas: 6862770)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 10.84s (348.55ms CPU time)\n\nRan 9 tests for test/LazyAccounting.t.sol:LazyAccountingTest\n[PASS] testAuditChargesTenPercentEvenAtHalfSeverityAndThresholdIsFrozen() (gas: 6161890)\n[PASS] testClaimCatchesUpWhilePacksPausedAndDoesNotEraseRemainingHistory() (gas: 25641763)\n[PASS] testExhaustedFarmCannotCollectRedistributionByRemainingIdle() (gas: 15191242)\n[PASS] testFuzzLazyEqualsIndependentEagerForRandomFarmsAndAllEvents(uint256) (runs: 256, μ: 45598615, ~: 45605410)\n[PASS] testGlobalAccumulatorAndWeightsAreSnapshottedBeforeMutations() (gas: 9311279)\n[PASS] testLateSeasonSettlementPaysMiningWithoutChangingFrozenWinners() (gas: 59490917)\n[PASS] testOneWeiMiningGreenCannotLockSettlementThroughEnvelopeRounding() (gas: 11069658)\n[PASS] testSparseMatureVintageConsumedBeforeRecentSlotAfterWrap() (gas: 43222421)\n[PASS] testStaleActionsRequireChunksAndNeverBlockGlobalAdvance() (gas: 40505475)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 10.88s (11.21s CPU time)\n\nRan 12 tests for test/AuditV317.t.sol:AuditV317Test\n[PASS] testAdvanceEpochDefersUntilTheRearmedEventResolves() (gas: 1433172)\n[PASS] testDestroyedItemResyncWaitsUntilTheFarmIsCaughtUp() (gas: 12580622)\n[PASS] testDestroyedItemWeightStale() (gas: 10356036)\n[PASS] testEnhancementInsideWindowStillCapturesAndResolvesNormally() (gas: 1164136)\n[PASS] testEnhancementLapseEmitsResolvedAsFailureAndKeepsSoulboundChecks() (gas: 2005877)\n[PASS] testEnhancementRearmGrind() (gas: 53784157)\n[PASS] testOwnerActionClearsThePendingResync() (gas: 8345887)\n[PASS] testSubmittedPlanDiscardedAfterHashWindow() (gas: 1740590)\n[PASS] testUnlockBlockedWhileEpochStale() (gas: 895813)\n[PASS] testUnlockLiveAndCaughtUpStillResyncsWeight() (gas: 58436968)\n[PASS] testUnlockWhileBehindReturnsPrincipalAndSkipsResync() (gas: 56212427)\n[PASS] testUnplannedLapsedWindowAlsoRearmsAndNeverUsesAPrecomputableSeed() (gas: 230726)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 10.88s (501.12ms CPU time)\n\nRan 1 test for test/Invariants.t.sol:InvariantsTest\n[PASS]\nInvariantsTest invariants:\n[PASS] invariantAllowlistRootAndWalletLimit\n[PASS] invariantInventoryAndEthLiabilities\n[PASS] invariantLocksAndPotAlwaysBacked\n[PASS] invariantPriceAndParamsBounds\n[PASS] invariantReceiptsNeverForfeitOrFixMissingEntropy\n[PASS] invariantReservesBackedAndPendingCovered\n[PASS] invariantTokenConservationNoBurns\n InvariantsTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+-----------+-------+---------+----------╮\n| Contract    | Selector  | Calls | Reverts | Discards |\n+======================================================+\n| GameHandler | advance   | 562   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | buy       | 605   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | claim     | 593   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | equip     | 572   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | expand    | 622   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | freeClaim | 594   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | fundPot   | 601   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | lock      | 569   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | resolve   | 590   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | rollover  | 604   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | settle    | 599   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | tokenPack | 598   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | unlock    | 521   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | unplace   | 562   | 0       | 0        |\n╰-------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 10800\n  Bound result 13756\n  Bound result 7535\n  Bound result 315360000\n  Bound result 2159\n  Bound result 32000\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 36.77s (36.75s CPU time)\n\nRan 58 test suites in 36.77s (147.76s CPU time): 331 tests passed, 0 failed, 6 skipped (337 total tests)\n","passed":true},{"durationMs":208,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Billboards.bidBillboard(uint256,uint256,string,string)\",\"Billboards.settleBillboard(uint256,uint256)\",\"Billboards.withdrawRefund()\",\"Civic.announce(uint256,string)\",\"Civic.buyLot(uint256)\",\"Civic.claimWar(uint256)\",\"Civic.consumeCityEvent()\",\"Civic.enable(uint256)\",\"Civic.finishCollapse()\",\"Civic.finishWar()\",\"Civic.fundCollapse(uint256)\",\"Civic.fundWar(uint256)\",\"Civic.grantDistrictBoost(uint256,uint16,string)\",\"Civic.listLot(uint8,uint8,uint8)\",\"Civic.startCollapse(uint256)\",\"Civic.startWar(uint8,uint8)\",\"Economy.autoRepair(address,uint256,uint256[24])\",\"Economy.lock(uint256,uint256)\",\"Economy.unlock()\",\"EndowmentEscrow.forward(address,uint64,uint256,bytes,uint64,uint256,bytes)\",\"Enhancement.activateCap()\",\"Enhancement.announceCap(uint8,string)\",\"Enhancement.capture(uint256)\",\"Enhancement.commit(uint256,uint256,bool)\",\"Enhancement.resolve(uint256)\",\"FarmCore.activity(address,uint256,uint256,uint256)\",\"FarmCore.autoRepair(address,uint256)\",\"FarmCore.buyRoom(uint256,bool)\",\"FarmCore.buyTokenPack(bool)\",\"FarmCore.civicPurchase(address,uint256)\",\"FarmCore.claimDrop()\",\"FarmCore.expand(bool)\",\"FarmCore.grantDrop(address,bytes32)\",\"FarmCore.lobby(uint256,bool)\",\"FarmCore.paidPackBought(address,uint256,uint256)\",\"FarmCore.place(uint256,uint256,uint256)\",\"FarmCore.prepareEnhancement(address,uint256,uint256,bool)\",\"FarmCore.process(address,uint256)\",\"FarmCore.register(address)\",\"FarmCore.repair(uint256,bool)\",\"FarmCore.repairCable(bool)\",\"FarmCore.retire(address)\",\"FarmCore.scrap(uint256,uint256)\",\"FarmCore.setAutoRepair(bool,uint16)\",\"FarmCore.setReferrer(address)\",\"FarmCore.sync()\",\"FarmCore.syncFor(address)\",\"FarmCore.unplace(uint256,uint256)\",\"FarmEngine.process(address,uint256,(uint256[24],uint8[24],uint16[24],bool,uint64,uint16))\",\"FarmItems.destroy(uint256)\",\"FarmItems.equip(address,uint256)\",\"FarmItems.expand(address)\",\"FarmItems.maintain(uint256,uint16,uint8)\",\"FarmItems.mint(address,uint8,uint8,bool)\",\"FarmItems.mintDrop(address,bytes32)\",\"FarmItems.safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\",\"FarmItems.safeTransferFrom(address,address,uint256,uint256,bytes)\",\"FarmItems.unequip(address,uint256)\",\"FarmRewards.advanceEpoch()\",\"FarmRewards.award(address,uint256)\",\"FarmRewards.beginMining(address,uint256)\",\"FarmRewards.claim(uint256)\",\"FarmRewards.flagResync(address)\",\"FarmRewards.initialize(address)\",\"FarmRewards.recordSales(uint256)\",\"FarmRewards.releasePrize(uint256)\",\"FarmRewards.scrap(address,uint256,uint256)\",\"FarmRewards.setReferrer(address,address)\",\"FarmRewards.setWeight(address,uint256)\",\"FarmRewards.settle(address,uint256)\",\"FarmRewards.spend(address,uint256)\",\"FarmRewards.spendTo(address,uint256,address)\",\"FeeRouter.depositBaseFee()\",\"FeeRouter.depositLaunchTax()\",\"FeeRouter.depositLobby()\",\"FeeRouter.depositPack()\",\"FeeRouter.depositSellTax()\",\"FeeRouter.executeBuys(uint256,uint256)\",\"FeeRouter.executePotBuys(uint256,uint256)\",\"FeeRouter.executeSells(uint256,uint256)\",\"FeeRouter.payBounty(address)\",\"FeeRouter.payWork(address,uint8,uint256,uint256)\",\"FeeRouter.receive()\",\"FeeRouter.routeTokens(uint256)\",\"FeeRouter.withdraw()\",\"FeeRouter.zapBuy(uint256,address)\",\"GameRegistry.register(uint256,uint64,uint256,bytes)\",\"GridOperator.lobbyETH()\",\"GridOperator.resolve(uint256)\",\"GridOperator.resolveFor(uint256,address)\",\"GridOperator.shift(uint256)\",\"GridOperator.submitPlan(uint256,uint8,uint16,bytes32,string)\",\"GridOperator.tokenLobby(address,uint256)\",\"MarketFactory.deploy((address,address,int24,address,address,bytes32),bytes32)\",\"PackSale.buyPackFor(address)\",\"PackSale.buyPacksFor(address,uint256,uint256)\",\"PackSale.buyWithETH(address,uint256,uint256,uint256)\",\"PackSale.captureEntropy(uint256)\",\"PackSale.openPack(uint256)\",\"PackSale.pause(uint256)\",\"PackSale.rearm(uint256)\",\"PackSale.resolve(uint256,uint256)\",\"PackSale.rewardPack(address)\",\"PackSale.tokenPack(address)\",\"PackSale.unpause()\",\"Params.set(uint8,uint256,string)\",\"RewardPool.donate(uint256)\",\"RewardPool.fundEndowment()\",\"RewardPool.pay(address,uint256)\",\"RewardPool.recordInflow(uint256)\",\"RewardPool.recycle(uint256)\",\"RewardPool.reserve(uint256)\",\"Season.addPrize(uint256,uint256)\",\"Season.claimBest(uint256)\",\"Season.claimDistrict(uint256)\",\"Season.claimLottery(uint256)\",\"Season.complete(address,uint256)\",\"Season.depositPot(uint256)\",\"Season.finalize(uint256)\",\"Season.prepare(uint256,uint256)\",\"Season.rearm(uint256)\",\"Season.recordActivity(address,uint256,uint256,uint256)\",\"Season.recordRepair(address,uint256,uint256)\",\"Season.recordSpend(address,uint256,bool)\",\"Season.rollover(uint256)\",\"StandardAdapter.buy(uint256,address)\",\"StandardAdapter.unlockCallback(bytes)\",\"StandardMarket.afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\",\"StandardMarket.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"StandardMarket.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"StandardMarket.bindFeeRouter(address,uint64,uint256)\",\"StandardMarket.buy(uint256,address)\",\"StandardMarket.flushFees()\",\"StandardMarket.receive()\",\"StandardMarket.sell(uint256,uint256,address)\",\"StandardMarket.unlockCallback(bytes)\",\"StarterClaim.captureEntropy(uint256)\",\"StarterClaim.claim(uint256,bytes32[])\",\"StarterClaim.claimFree(uint256,bytes32[])\",\"StarterClaim.rearm(uint256)\",\"StarterClaim.resolve(uint256)\",\"SwarmDesk.askBackup(uint8,bytes)\",\"SwarmDesk.bind(address,bytes,bytes,uint64,uint8,uint64,uint8,uint64)\",\"SwarmDesk.clearExpired(bytes32)\",\"SwarmDesk.execute(uint8,bytes)\",\"SwarmDesk.onOracleFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"SwarmDesk.onOracleResult(bytes32,(bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"SwarmDesk.submit((bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"V4Market.afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\",\"V4Market.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"V4Market.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"V4Market.bindFeeRouter(address,uint64,uint256)\",\"V4Market.buy(uint256,address)\",\"V4Market.flushFees()\",\"V4Market.receive()\",\"V4Market.sell(uint256,uint256,address)\",\"V4Market.unlockCallback(bytes)\"],\"files\":{\".gitignore\":8,\"ADAPTATION.md\":131,\"README.md\":82,\"artifacts/build-lint-v3.txt\":2369,\"artifacts/build-v3.txt\":3,\"artifacts/economic-targets-v3.json\":9,\"artifacts/fmt-v3.txt\":0,\"artifacts/foundry-v3.txt\":845,\"artifacts/funded-sensitivity/simulation-v3.json\":13928,\"artifacts/funded-sensitivity/simulation-v3.md\":51,\"artifacts/funding-sensitivity-v3.json\":342,\"artifacts/gas-actions-v3.txt\":15,\"artifacts/policy-sensitivity-v3.json\":554,\"artifacts/python-tests-v3.txt\":18,\"artifacts/regulator-example.json\":59,\"artifacts/robinhood-fork-v3.txt\":7,\"artifacts/runtime-sizes-v3.json\":23,\"artifacts/simulation-v3.json\":13928,\"artifacts/simulation-v3.md\":51,\"artifacts/tuned-funded/simulation-v3.json\":13928,\"artifacts/tuned-funded/simulation-v3.md\":51,\"artifacts/v2/README.md\":3,\"artifacts/v2/foundry-tests.txt\":178,\"artifacts/v2/offline-tests.txt\":187,\"artifacts/v2/offline-verification.json\":21,\"artifacts/v2/previous-README.md\":108,\"artifacts/v2/previous-design.md\":120,\"artifacts/v2/previous-report.md\":75,\"artifacts/v2/previous-security-review.md\":29,\"artifacts/v2/previous-simulation-assumptions.md\":52,\"artifacts/v2/robinhood-fork.txt\":7,\"artifacts/v2/rpc-probe.json\":16,\"artifacts/v2/runtime-sizes.json\":21,\"artifacts/v2/simulation.md\":95,\"artifacts/v2/verification.json\":110,\"artifacts/v31/allocation-summary.md\":6,\"artifacts/v31/baseline-budget.md\":14,\"artifacts/v31/boundary-checks.json\":10880,\"artifacts/v31/candidate-stress/simulation.json\":32636,\"artifacts/v31/evidence/factory-prediction.json\":14,\"artifacts/v31/evidence/launch-and-cost-facts.json\":130,\"artifacts/v31/evidence/standalone-hook-build.json\":38,\"artifacts/v31/final/comparison.md\":50,\"artifacts/v31/funded/comparison.md\":52,\"artifacts/v31/funded/replay.json\":290,\"artifacts/v31/funding-comparison.md\":8,\"artifacts/v31/regulator-example.json\":73,\"artifacts/v31/stress-comparison.md\":20,\"artifacts/v31/summary.json\":13,\"artifacts/v31/validation.json\":250,\"artifacts/v310/forge-test-launch.txt\":496,\"artifacts/v310/forge-test-repo-changed-suites.txt\":115,\"artifacts/v310/forge-test-repo-full-before-new-tests.txt\":437,\"artifacts/v310/pins-check.txt\":2,\"artifacts/v311/rehearsal.log\":377,\"artifacts/v312/forge-fmt.txt\":1,\"artifacts/v312/forge-test-launch.txt\":381,\"artifacts/v312/forge-test-repo.txt\":384,\"artifacts/v312/launch-creation-hashes.txt\":5,\"artifacts/v312/node-tests.txt\":10,\"artifacts/v312/pins-check.txt\":2,\"artifacts/v312/python-tests.txt\":3,\"artifacts/v312/rehearsal.log\":368,\"artifacts/v313/forge-fmt.txt\":0,\"artifacts/v313/forge-test.txt\":468,\"artifacts/v313/launch-creation-hashes.txt\":6,\"artifacts/v313/module-pins.txt\":15,\"artifacts/v313/pins-check.txt\":2,\"artifacts/v314/authority-check.txt\":1,\"artifacts/v314/consistency-check.txt\":1,\"artifacts/v314/creation-hashes.json\":21,\"artifacts/v314/deploy-gate.txt\":1,\"artifacts/v314/flatten-build.txt\":871,\"artifacts/v314/flatten-check.txt\":2,\"artifacts/v314/forge-build.txt\":4752,\"artifacts/v314/forge-fmt.txt\":0,\"artifacts/v314/forge-test.txt\":487,\"artifacts/v314/launch-creation-hashes.txt\":20,\"artifacts/v314/module-pins-check.txt\":1,\"artifacts/v314/node-tests.txt\":22,\"artifacts/v314/python-tests.txt\":39,\"artifacts/v314/rehearsal-build.log\":4895,\"artifacts/v314/rehearsal.log\":352,\"artifacts/v314/runtime-sizes.json\":21,\"artifacts/v314/swarm-pins-check.txt\":1,\"artifacts/v315/creation-hashes.json\":21,\"artifacts/v315/deploy-gate.txt\":1,\"artifacts/v315/forge-build.txt\":1062,\"artifacts/v315/forge-fmt.txt\":0,\"artifacts/v315/forge-test.txt\":412,\"artifacts/v315/launch-creation-hashes.txt\":20,\"artifacts/v315/module-pins-check.txt\":1,\"artifacts/v315/node-tests.txt\":22,\"artifacts/v315/python-tests.txt\":39,\"artifacts/v315/rehearsal-build.log\":4921,\"artifacts/v315/rehearsal.log\":387,\"artifacts/v315/runtime-sizes.json\":21,\"artifacts/v315/swarm-pins-check.txt\":1,\"artifacts/v316/creation-hashes.json\":21,\"artifacts/v316/deploy-gate.txt\":1,\"artifacts/v316/forge-build.txt\":4736,\"artifacts/v316/forge-fmt.txt\":0,\"artifacts/v316/forge-test.txt\":505,\"artifacts/v316/launch-creation-hashes.txt\":20,\"artifacts/v316/module-pins-check.txt\":1,\"artifacts/v316/node-tests.txt\":7,\"artifacts/v316/python-tests.txt\":3,\"artifacts/v316/rehearsal-build.log\":4921,\"artifacts/v316/rehearsal.log\":392,\"artifacts/v316/runtime-sizes.json\":21,\"artifacts/v316/swarm-pins-check.txt\":1,\"artifacts/v317/creation-hashes.json\":21,\"artifacts/v317/deploy-gate.txt\":1,\"artifacts/v317/forge-fmt.txt\":0,\"artifacts/v317/forge-test.txt\":442,\"artifacts/v317/launch-creation-hashes.txt\":20,\"artifacts/v317/module-pins-check.txt\":1,\"artifacts/v317/node-tests.txt\":14,\"artifacts/v317/python-tests.txt\":5,\"artifacts/v317/rehearsal-build.log\":4959,\"artifacts/v317/rehearsal.log\":392,\"artifacts/v317/runtime-sizes.json\":21,\"artifacts/v317/swarm-pins-check.txt\":1,\"artifacts/v318/creation-hashes.json\":21,\"artifacts/v318/deploy-gate.txt\":1,\"artifacts/v318/forge-fmt.txt\":0,\"artifacts/v318/forge-test.txt\":487,\"artifacts/v318/launch-creation-hashes.txt\":20,\"artifacts/v318/module-pins-check.txt\":1,\"artifacts/v318/node-tests.txt\":24,\"artifacts/v318/rehearsal-build.log\":4973,\"artifacts/v318/rehearsal.log\":392,\"artifacts/v318/runtime-sizes.json\":21,\"artifacts/v318/swarm-pins-check.txt\":1,\"artifacts/v32/contract-sizes.json\":54,\"artifacts/v32/forge-build.log\":2734,\"artifacts/v32/forge-fmt.log\":0,\"artifacts/v32/forge-test.log\":310,\"artifacts/v32/model-checks.log\":5,\"artifacts/v32/module-pins.log\":1,\"artifacts/v32/python-tests.log\":25,\"artifacts/v32/regulator-example.json\":73,\"artifacts/v32/simulation-checks.json\":11,\"artifacts/v32/simulation-checks.log\":11,\"artifacts/v32/validation.json\":61,\"artifacts/v32/verified-baseline/comparison.md\":8,\"artifacts/v32/verified-baseline/simulation.json\":22622,\"artifacts/v32/verified-sensitivities/comparison.md\":68,\"artifacts/v33/simulation.json\":116,\"artifacts/v34/build.txt\":2931,\"artifacts/v34/format.txt\":0,\"artifacts/v34/pins.txt\":1,\"artifacts/v34/python-tests.txt\":5,\"artifacts/v34/reveal-test.txt\":1,\"artifacts/v34/simulation.json\":91766,\"artifacts/v34/simulation.md\":43,\"artifacts/v34/tests.txt\":306,\"artifacts/v35/simulation.json\":22605,\"artifacts/v35/simulation.md\":104,\"artifacts/v35/verification.json\":132,\"artifacts/v36/simulation-phases.json\":179,\"artifacts/v36/simulation-phases.md\":13,\"artifacts/v37/byte-sizes.json\":131,\"artifacts/v37/verification.json\":28,\"artifacts/v39/forge-build-repo.txt\":3,\"artifacts/v39/forge-fmt.txt\":1,\"artifacts/v39/forge-test-launch.txt\":8,\"artifacts/v39/forge-test-repo.txt\":390,\"artifacts/v39/pins-check.txt\":2,\"artifacts/v39/pins.json\":68,\"artifacts/v39/runtime-sizes.json\":197,\"artifacts/v39/simulation.json\":381,\"artifacts/v39/simulation.md\":29,\"artifacts/verification-v3.json\":67,\"docs/accepted-v314.md\":10,\"docs/accepted-v315.md\":22,\"docs/accepted-v316.md\":24,\"docs/accepted-v317.md\":46,\"docs/accepted-v318.md\":56,\"docs/api-v35.md\":41,\"docs/dependency-provenance.md\":9,\"docs/design.md\":69,\"docs/entropy-v34.md\":31,\"docs/launch-v31.md\":121,\"docs/launch-v314-plan.json\":196,\"docs/launch-v34.md\":44,\"docs/launch-v35.md\":40,\"docs/lazy-accounting-v32.md\":48,\"docs/m2-trust-assumption.md\":121,\"docs/oracle-v37/event.json\":1,\"docs/oracle-v37/oracle-config.json\":21,\"docs/oracle-v37/regulator.json\":1,\"docs/params-keys-v313.md\":113,\"docs/report-v3.md\":143,\"docs/report-v31.md\":128,\"docs/report-v32.md\":138,\"docs/report-v33.md\":107,\"docs/report-v34.md\":58,\"docs/report-v36.md\":89,\"docs/report-v38.md\":83,\"docs/research/b94e6839-platform-report.md\":238,\"docs/review-v31.md\":77,\"docs/review-v32.md\":32,\"docs/review-v33.md\":19,\"docs/review-v34.md\":30,\"docs/review-v35-independent.md\":69,\"docs/review-v37-independent.md\":44,\"docs/review-v39-independent.md\":105,\"docs/security-review.md\":29,\"docs/simulation-assumptions.md\":43,\"docs/simulation-v3-historical.md\":44,\"docs/simulation-v34.md\":34,\"foundry.toml\":21,\"keeper/README.md\":120,\"keeper/blackout-keeper.service\":23,\"keeper/keeper.env.example\":18,\"keeper/keeper.mjs\":578,\"keeper/lib/abi.mjs\":95,\"keeper/lib/eth.mjs\":186,\"keeper/lib/oracle.mjs\":57,\"keeper/wiring.example.json\":17,\"launch-v31.md\":3,\"launch-v36.md\":34,\"launch-v37.md\":144,\"launch-v38.md\":57,\"launch-v39.md\":255,\"launch/V4Market.sol\":1894,\"operations/dormant-v35.md\":17,\"regulator.md\":60,\"report.md\":537,\"script/Deploy.s.sol\":252,\"script/DeployMarket.s.sol\":15,\"script/PredictGame.s.sol\":49,\"script/SwarmArgs.sol\":38,\"sim/blackout_sim_v2.py\":509,\"sim/blackout_sim_v3.py\":338,\"sim/blackout_sim_v31.py\":24,\"sim/blackout_sim_v32.py\":380,\"sim/blackout_sim_v33.py\":395,\"sim/blackout_sim_v34.py\":444,\"sim/candidate_stress_v31.py\":21,\"sim/heartbeat_boundaries_v31.py\":25,\"sim/heartbeat_sweep_v31.py\":46,\"sim/policy_sensitivity_v3.py\":19,\"sim/run_v32.py\":34,\"sim/run_v33.py\":58,\"sim/run_v34.py\":54,\"sim/run_v35.py\":273,\"sim/run_v36.py\":83,\"sim/run_v39.py\":153,\"sim/tune_v3.py\":16,\"src/Billboards.sol\":135,\"src/Civic.sol\":302,\"src/Economy.sol\":222,\"src/EndowmentEscrow.sol\":111,\"src/Enhancement.sol\":164,\"src/FarmCore.sol\":611,\"src/FarmEngine.sol\":299,\"src/FarmItems.sol\":165,\"src/FarmRewards.sol\":607,\"src/FeeRouter.sol\":313,\"src/GameRegistry.sol\":101,\"src/GridOperator.sol\":276,\"src/MarketFactory.sol\":61,\"src/PackSale.sol\":293,\"src/Params.sol\":181,\"src/RewardPool.sol\":113,\"src/Season.sol\":368,\"src/StandardAdapter.sol\":77,\"src/StandardMarket.sol\":22,\"src/StarterClaim.sol\":149,\"src/SwarmDesk.sol\":548,\"src/V4Market.sol\":565,\"src/interfaces/IGame.sol\":53,\"src/interfaces/IGameRegistry.sol\":15,\"src/interfaces/ILaunchHook.sol\":7,\"src/interfaces/IV4.sol\":26,\"src/interfaces/Interfaces.sol\":20,\"src/lib/ChainClock.sol\":22,\"src/lib/EconomyMath.sol\":48,\"src/lib/Errors.sol\":13,\"src/lib/GameModule.sol\":17,\"src/lib/ItemMath.sol\":31,\"src/lib/ItemMetadata.sol\":79,\"src/lib/ModuleCode.sol\":49,\"src/lib/Robinhood.sol\":15,\"src/lib/SwarmCode.sol\":18,\"src/oracle/OracleAttestation.sol\":221,\"src/oracle/SignatureCheckerCompat.sol\":14,\"test/AuditV314.t.sol\":116,\"test/AuditV315.t.sol\":199,\"test/AuditV317.t.sol\":359,\"test/AuditV318.t.sol\":319,\"test/AutoRepairReviewV35.t.sol\":39,\"test/Base.t.sol\":310,\"test/Bounties.t.sol\":290,\"test/CivicV35.t.sol\":224,\"test/Clock.t.sol\":54,\"test/DeployGateV314.t.sol\":94,\"test/Deployment.t.sol\":94,\"test/EconomyV35.t.sol\":398,\"test/Endowment.t.sol\":123,\"test/EndowmentEscrowV38.t.sol\":200,\"test/EndowmentGame.t.sol\":51,\"test/Epochs.t.sol\":177,\"test/Events.t.sol\":252,\"test/Factory.t.sol\":31,\"test/FarmDailyBasisV317.t.sol\":146,\"test/FeesParams.t.sol\":135,\"test/ForeignTokenTwin.t.sol\":288,\"test/Gas.t.sol\":110,\"test/GridV35.t.sol\":66,\"test/HeartbeatBpsV313.t.sol\":149,\"test/HookBinding.t.sol\":113,\"test/Invariants.t.sol\":211,\"test/Items.t.sol\":246,\"test/JobALaunch.t.sol\":154,\"test/KeeperProfit.t.sol\":95,\"test/LazyAccounting.t.sol\":447,\"test/Market.t.sol\":121,\"test/OracleConformanceV37.t.sol\":105,\"test/PackMythicTiming.t.sol\":88,\"test/Packs.t.sol\":167,\"test/Pause.t.sol\":76,\"test/PhasedReleaseV36.t.sol\":165,\"test/PotV35.t.sol\":106,\"test/PredictionV34.t.sol\":46,\"test/Registry.t.sol\":140,\"test/Regression.t.sol\":156,\"test/ReservedEventsV35.t.sol\":41,\"test/ReviewV34.t.sol\":145,\"test/SeasonAudit.t.sol\":204,\"test/StandardAdapter.t.sol\":81,\"test/StandardMarket.t.sol\":63,\"test/StandardV4Integration.t.sol\":128,\"test/SwarmDeskV37.t.sol\":705,\"test/TwinCaptureV312.t.sol\":255,\"test/V310.t.sol\":79,\"test/V33.t.sol\":561,\"test/V34.t.sol\":315,\"test/V39.t.sol\":213,\"test/V4Integration.t.sol\":229,\"test/WarReviewV35.t.sol\":69,\"test/YieldFloorReviewV35.t.sol\":31,\"test/deploy-gate-v314.test.mjs\":42,\"test/fixtures/keeper-v39-vectors.json\":56,\"test/fixtures/oracle-hash-vectors.json\":102,\"test/fork/RehearsalV311.t.sol\":812,\"test/fork/RobinhoodFork.t.sol\":39,\"test/keeper-v39.test.mjs\":34,\"test/mocks/MockGameRegistry.sol\":52,\"test/mocks/MockMarket.sol\":74,\"test/mocks/MockOracleSigner.sol\":17,\"test/mocks/MockSwarmIntake.sol\":67,\"test/mocks/MockToken.sol\":38,\"test/mocks/MockV4Manager.sol\":118,\"test/oracle-v310.test.mjs\":22,\"test/oracle-v37.test.mjs\":42,\"test/python/test_entropy_bot.py\":31,\"test/python/test_merkle.py\":19,\"test/python/test_regulator.py\":30,\"test/python/test_v31.py\":38,\"test/python/test_v32.py\":58,\"test/python/test_v34.py\":33,\"test/python/test_v35.py\":71,\"test/reveal.test.mjs\":24,\"test/ui-v35.test.mjs\":27,\"tools/check_deploy_gate.mjs\":48,\"tools/check_v32_results.py\":52,\"tools/check_v37_authority.py\":20,\"tools/entropy_bot.py\":106,\"tools/freepack_merkle.py\":20,\"tools/make_oracle_bodies.mjs\":45,\"tools/oracle_question_hash.mjs\":80,\"tools/pin_module_code.py\":95,\"tools/pin_swarm_code.py\":48,\"tools/regulator.py\":81,\"tools/rehearse_v311.sh\":28,\"tools/report_v31.py\":55,\"tools/schedule_bodies.mjs\":16,\"tools/starter_merkle.py\":72,\"tools/swarm_constructor_args.mjs\":57,\"ui/app.js\":178,\"ui/index.html\":22,\"ui/reveal.js\":34,\"ui/style.css\":3},\"excluded\":[\"vendor/\",\"node_modules/\"],\"truncated\":true}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"284e1d1a344d8f5e8b52bab577d59ae9bf138824045747beb0d1594be4a395f5","verifiedTreeHash":"7c7e27dcdc6412df3d9d5a89e36ec61103d2d09a","verifierVersion":"0.1.0+67c588fa"},{"checks":[{"durationMs":31868,"exitCode":0,"name":"build","output":"Compiling 206 files with Solc 0.8.26\nSolc 0.8.26 finished in 31.68s\nCompiler run successful with warnings:\nWarning (2519): This declaration shadows an existing declaration.\n  --> src/lib/EconomyMath.sol:17:48:\n   |\n17 |         returns (uint256 chance, uint256 burn, uint256 bonus, uint256 daysWad)\n   |                                                ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n  --> src/lib/EconomyMath.sol:44:5:\n   |\n44 |     function bonus(uint256 level) internal pure returns (uint256 b) {\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/V4Market.sol:305:22:\n    |\n305 |     function _record(bool sell, uint256 amount) private {\n    |                      ^^^^^^^^^\nNote: The other declaration is here:\n   --> src/V4Market.sol:504:5:\n    |\n504 |     function sell(uint256 amount, uint256 minOut, address recipient) external nonReentrant returns (uint256 received) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (8760): This declaration has the same name as another declaration.\n  --> test/mocks/MockSwarmIntake.sol:26:9:\n   |\n26 |         bytes4 failure,\n   |         ^^^^^^^^^^^^^^\nNote: The other declaration is here:\n  --> test/mocks/MockSwarmIntake.sol:44:5:\n   |\n44 |     function failure(bytes32 id, uint8 status, bytes32 reason) external returns (bool) {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2072): Unused local variable.\n  --> test/EndowmentEscrowV38.t.sol:28:9:\n   |\n28 |         LocalApplicationFactory f = LocalApplicationFactory(address(d.registry.factory()));\n   |         ^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWarning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> test/EndowmentEscrowV38.t.sol:121:82:\n    |\n121 |     function _registryArgs(address gameToken, address params, uint256 endowment, address factory)\n    |                                                                                  ^^^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/Events.t.sol:213:9:\n    |\n213 |         uint256 price = d.packs.quote(112);\n    |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n --> test/Gas.t.sol:9:9:\n  |\n9 |         uint256 price = d.packs.price();\n  |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Gas.t.sol:75:9:\n   |\n75 |         uint256 q = d.packs.quote(112);\n   |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Invariants.t.sol:56:9:\n   |\n56 |         uint256 price = d.packs.price();\n   |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Items.t.sol:76:9:\n   |\n76 |         uint256 cost = d.packs.quote(112);\n   |         ^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/Items.t.sol:106:9:\n    |\n106 |         uint256 q = d.packs.quote(16);\n    |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/LazyAccounting.t.sol:186:13:\n    |\n186 |             uint256 quote = d.packs.quote(112);\n    |             ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/LazyAccounting.t.sol:421:9:\n    |\n421 |         uint256 quote = d.packs.quote(112);\n    |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Packs.t.sol:37:9:\n   |\n37 |         uint256 quote = d.packs.quote(200);\n   |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Packs.t.sol:64:9:\n   |\n64 |         uint256 q = d.packs.quote(6);\n   |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Pause.t.sol:35:9:\n   |\n35 |         uint256 q = d.packs.quote(1);\n   |         ^^^^^^^^^\n\nWarning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> test/Registry.t.sol:49:21:\n   |\n49 |     function _fresh(LocalApplicationFactory f) private returns (GameRegistry) {\n   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Regression.t.sol:73:9:\n   |\n73 |         uint256 previous = d.items.data(id).durability;\n   |         ^^^^^^^^^^^^^^^^\n\nWarning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> test/SwarmDeskV37.t.sol:485:65:\n    |\n485 |     function _registryArgs(address params, bytes32 starterRoot, address factory) private view returns (bytes memory) {\n    |                                                                 ^^^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/V33.t.sol:254:13:\n    |\n254 |             uint256 q = d.packs.quote(16);\n    |             ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/V33.t.sol:431:9:\n    |\n431 |         uint256 price = d.packs.price();\n    |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/V34.t.sol:78:9:\n   |\n78 |         uint256 q = d.packs.price();\n   |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/V39.t.sol:186:9:\n    |\n186 |         LocalApplicationFactory f = LocalApplicationFactory(address(d.registry.factory()));\n    |         ^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> src/FarmRewards.sol:149:5:\n    |\n149 |     function ready() public view returns (bool) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to view\n   --> test/Base.t.sol:106:5:\n    |\n106 |     function oracleFixture() internal returns (SwarmDesk.OracleConfig memory o) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to view\n   --> test/AuditV315.t.sol:187:5:\n    |\n187 |     function testFixtureDeskBoundAgainstItsTokenLaunchRecord() public {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> test/fork/RehearsalV311.t.sol:224:5:\n    |\n224 |     function _oracle() internal view returns (SwarmDesk.OracleConfig memory o) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> test/fork/RehearsalV311.t.sol:283:5:\n    |\n283 |     function _mineHookSalt(bytes memory initCode) internal view returns (bytes32 salt, address hook) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","passed":true},{"durationMs":37614,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/Clock.t.sol:ClockTest\n[PASS] testLocalEvmFutureBlockAnd256BlockBoundary() (gas: 225376)\n[PASS] testRobinhoodUsesArbSysNotL1EstimateAndHandlesExpiry() (gas: 238560)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 547.46µs (347.56µs CPU time)\n\nRan 1 test for test/fork/RobinhoodFork.t.sol:RobinhoodForkTest\n[SKIP] testForkArbSysAndHistoricalHash() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 131.06µs (52.78µs CPU time)\n\nRan 4 tests for test/OracleConformanceV37.t.sol:OracleConformanceV37Test\n[PASS] testAcceptsOriginalProtocolSignature() (gas: 17934)\n[PASS] testDigestMatchesUnmodifiedProtocolVector() (gas: 13636)\n[PASS] testFreshVectorSignerSignature() (gas: 30385)\n[PASS] testSelectorsExactlyMatchLiveProtocol() (gas: 3520)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.76ms (1.31ms CPU time)\n\nRan 1 test for test/DeployGateV314.t.sol:DeployGateV314Test\n[PASS] testAllLaunchConstructorsWorkWithNoProtocolCode() (gas: 47296062)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.59ms (4.43ms CPU time)\n\nRan 1 test for test/PredictionV34.t.sol:PredictionV34Test\n[PASS] testFullGraphPredictsPoolBeforeRegistryDeployment() (gas: 4162727)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 9.35ms (636.82µs CPU time)\n\nRan 3 tests for test/AuditV318.t.sol:AuditV318PartialFillTest\n[PASS] testAfterSwapAcceptsExactFillAtEveryStep() (gas: 2199373)\n[PASS] testAfterSwapRefusesAPartialFill() (gas: 415962)\n[PASS] testMockBeforeSwapRefusesNonExtremeLimitAndKeepsExactOutputRefusal() (gas: 197452)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 12.94ms (2.31ms CPU time)\n\nRan 3 tests for test/StandardAdapter.t.sol:StandardAdapterTest\n[PASS] testExistingHookKeyPreservedAndNoExtraFee() (gas: 330662)\n[PASS] testRequiresThirtyMinutesFreshOracleAndAuthorizedCallback() (gas: 198351)\n[PASS] testSettlementSlippageFailurePreservesCredits() (gas: 240594)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 15.10ms (1.07ms CPU time)\n\nRan 3 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] testConstructorRejectsMissingInputsAndDoesNotCallExternalContracts() (gas: 3994)\n[PASS] testForeignCallerDoesNotGetAnyAuthority() (gas: 43053059)\n[PASS] testImmutableGraphAndEip170Sizes() (gas: 187323)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 15.89ms (5.54ms CPU time)\n\nRan 3 tests for test/HookBinding.t.sol:HookBindingTest\n[PASS] testHoldBeforeGameExistsThenBindOnceAndFlushExactStreams() (gas: 43435048)\n[PASS] testLookAlikeCannotBindEvenWhenTeamCalls() (gas: 1908201)\n[PASS] testWrongRouterAndMissingCodeRejectedBeforePermanentBind() (gas: 41150218)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 20.77ms (11.81ms CPU time)\n\nRan 5 tests for test/Registry.t.sol:RegistryTest\n[PASS] testAllModulePinsMatchExactPinnedCompilerArtifacts() (gas: 1068880)\n[PASS] testAuthenticatedEnrollmentRejectsUncreatedWrongCodeAndWrongRegistry() (gas: 2930598)\n[PASS] testConstructorAcceptsEmptyGraphWithoutExternalCalls() (gas: 13657)\n[PASS] testCounterfeitRuntimeAtAnotherFactoryCannotEnroll() (gas: 1542191)\n[PASS] testCounterfeitRuntimeWithPoisonedCreditCannotEnroll() (gas: 5876476)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 12.88ms (4.44ms CPU time)\n\nRan 5 tests for test/AuditV315.t.sol:AuditV315Test\n[PASS] testAttackerLaunchRecordNamesAnotherTokenAndIsRefused() (gas: 10743754)\n[PASS] testFakeMarketEchoingDeskTokenAndHashCannotBind() (gas: 6952035)\n[PASS] testFixtureDeskBoundAgainstItsTokenLaunchRecord() (gas: 58275)\n[PASS] testRealHookRecordedByTheLaunchFactoryBinds() (gas: 12111396)\n[PASS] testRecordWithOtherHookOrOtherPairCurrencyIsRefused() (gas: 6245556)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 23.59ms (11.84ms CPU time)\n\nRan 5 tests for test/ReviewV34.t.sol:ReviewV34Test\n[PASS] testCanonicalCompetingRegistryCannotTakeOverBinding() (gas: 9502782)\n[PASS] testDustBuyCannotConsumeGlobalBuyInterval() (gas: 336156)\n[PASS] testLateGreenEntrySettlesWithinReservedEnvelope() (gas: 4441470)\n[PASS] testMeaningfulSmallBuyCanUseLessThanMaximumBatch() (gas: 263646)\n[PASS] testSameConfigurationAtUncommittedCoordinatesCannotBind() (gas: 9589277)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 24.56ms (14.60ms CPU time)\n\nRan 2 tests for test/AutoRepairReviewV35.t.sol:IndependentAutoRepairReview\n[PASS] testAutomaticRepairRecordsHistoricalWeekBeforeCompletion() (gas: 5411876)\n[PASS] testLateAutomaticRepairCannotReopenSeasonEligibility() (gas: 4275820)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 28.28ms (18.26ms CPU time)\n\nRan 5 tests for test/fork/RehearsalV311.t.sol:RehearsalV311Test\n[SKIP] testRehearsalAttestedAnswerChangesPlanWithinBand() (gas: 0)\n[SKIP] testRehearsalGasPerLaunchUnderPlatformCeiling() (gas: 0)\n[SKIP] testRehearsalKeeperPassAdvancesEpochsRevealsEntropyAndClaimFeesPaysTeam() (gas: 0)\n[SKIP] testRehearsalLaunchTaxThenOnePercentAndSurcharge() (gas: 0)\n[SKIP] testRehearsalPacksOpenOneHourAfterLaunch() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 466.40µs (59.47µs CPU time)\n\nRan 8 tests for test/JobAStarterBoundaries.t.sol:JobAStarterBoundariesTest\n[PASS] testDuplicateWalletAndDuplicateIndexCannotClaimTwiceWithValidProofs() (gas: 574900)\n[PASS] testFreeClaimUpperIndexAndExactDeadline() (gas: 378613)\n[PASS] testFreeProofBindsBothIndexAndCallerWithoutConsumingEligibility() (gas: 390228)\n[PASS] testPackNativeEntropyBoundaryAndCaptureIsIdempotent() (gas: 1806550)\n[PASS] testSnapshotClaimClosesAtExactlySixteenDays() (gas: 59167)\n[PASS] testSnapshotClaimWindowAndNamespaceCannotOverlapFreeReceipts() (gas: 473253)\n[PASS] testStarterRearmBoundaryPreservesClaimAndRequiresFreshFutureBlock() (gas: 902930)\n[PASS] testStarterUsesNativeHeightAndNeverSubstitutesMissingEntropy() (gas: 944914)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 30.63ms (15.07ms CPU time)\n\nRan 3 tests for test/PotV35.t.sol:PotV35Test\n[PASS] testPotDepositRequiresActualTokensAndAuthority() (gas: 256924)\n[PASS] testPotSplitAndLotteryCommitSurvivesFullInventory() (gas: 11851210)\n[PASS] testPotUnclaimedRolloverOnlyAfterFourWeeksNoDoubleClaim() (gas: 6429769)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 28.23ms (20.47ms CPU time)\n\nRan 8 tests for test/TwinCaptureV312.t.sol:TwinCaptureV312Test\n[PASS] testBinderChoosingTwinOrphansHonestGame() (gas: 12068523)\n[PASS] testBinderChosenTwinCannotPayAttacker() (gas: 12034732)\n[PASS] testEOAMarketCannotBind() (gas: 5759282)\n[PASS] testHonestBindThenForwardReachesHonestPool() (gas: 6532903)\n[PASS] testHookWithForeignConfigurationCannotBind() (gas: 5801492)\n[PASS] testTwinCannotWinTheBindRace() (gas: 13565631)\n[PASS] testTwinWithForeignMarketCannotBind() (gas: 12270581)\n[PASS] testTwinWithForeignTokenCannotBind() (gas: 12441654)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 35.11ms (23.69ms CPU time)\n\nRan 2 tests for test/V310.t.sol:ToolchainPinsV310Test\n[PASS] testEveryModuleOfThisBuildMatchesOneToolchainPin() (gas: 168471)\n[PASS] testPinsAreOneToolchainAndRejectUnknownCode() (gas: 164239)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 2.38ms (1.33ms CPU time)\n\nRan 8 tests for test/PhasedReleaseV36.t.sol:PhasedReleaseV36Test\n[PASS] testBillboardsDisabledThenEnabled() (gas: 414524)\n[PASS] testEnableIsNoticedOnceNeverOffAndSwarmOnly() (gas: 355991)\n[PASS] testEnhancementDisabledThenEnabledOnce() (gas: 1098908)\n[PASS] testEverythingDeploysDisabledAndCoreStillWorks() (gas: 8179262)\n[PASS] testFuzzUnannouncedFeatureCannotBeEnabled(uint256) (runs: 256, μ: 30063, ~: 29968)\n[PASS] testLocksStakeAndLobbyDisabledThenEnabled() (gas: 2861203)\n[PASS] testPotDisabledFollowsV34RoutingThenEnabled() (gas: 455827)\n[PASS] testReservedEventsDisabledThenEnabled() (gas: 557745)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 44.84ms (36.22ms CPU time)\n\nRan 5 tests for test/KeeperProfit.t.sol:KeeperProfitTest\n[PASS] testPaidPackEntropyKeeperProfit() (gas: 1182284)\nLogs:\n  paid pack entropy execution gas: 139616\n  paid pack entropy bounty wei: 3380475000000\n  paid pack entropy execution plus 21000 gas cost wei: 3212320000000\n\n[PASS] testPlanEntropyKeeperProfit() (gas: 1665588)\nLogs:\n  plan entropy execution gas: 163211\n  plan entropy bounty wei: 4474800000000\n  plan entropy execution plus 21000 gas cost wei: 3684220000000\n\n[PASS] testSeasonFinalizeThreeWinnersAndPrizeKeeperProfit() (gas: 3451194)\nLogs:\n  season finalize three winners and prize execution gas: 644073\n  season finalize three winners and prize bounty wei: 15825700000000\n  season finalize three winners and prize execution plus 21000 gas cost wei: 13301460000000\n\n[PASS] testSeasonPrepareIsConstantUnpaidWork() (gas: 1342777)\n[PASS] testStarterEntropyKeeperProfit() (gas: 324487)\nLogs:\n  starter entropy execution gas: 142744\n  starter entropy bounty wei: 3380150000000\n  starter entropy execution plus 21000 gas cost wei: 3274880000000\n\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 19.77ms (8.43ms CPU time)\n\nRan 6 tests for test/JobAPoolFailurePaths.t.sol:JobAPoolFailurePathsTest\n[PASS] testFalseAndPausedTokenDonationsRevertWithoutAccountingChanges() (gas: 203598)\n[PASS] testNoReturnERC20DonationAndPaymentUseActualBalances() (gas: 539692)\n[PASS] testOneWeiFundingShortfallUsesPlainTransferAndCannotBackdateDrip() (gas: 461417)\n[PASS] testRejectedRecipientsOverdrawAndTokenFailurePreserveReservation() (gas: 761405)\n[PASS] testShortIncomingTransferRevertsWithoutCountingOrKeepingDonation() (gas: 223819)\n[PASS] testZeroDonationAndUnreservedPaymentCannotCreateFunds() (gas: 369313)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 1.52ms (851.09µs CPU time)\n\nRan 2 tests for test/PackMythicTiming.t.sol:PackMythicTimingTest\n[PASS] testCapturedSeedCanYieldMythicAfterLevelTen() (gas: 2558167)\n[PASS] testPartialReceiptRechecksLevelAndKeepsCapturedSeed() (gas: 3649411)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 56.46ms (40.05ms CPU time)\n\nRan 7 tests for test/V33.t.sol:LaunchProtectionTest\n[PASS] testBuyTaxHasImmutableSteps() (gas: 97111)\n[PASS] testLaunchTaxChargedAndRoutedEntirelyToPool() (gas: 228216)\n[PASS] testNoBuySizeLimitAtAnyLaunchStep() (gas: 1691893)\n[PASS] testNormalBuyAfterDecayHasNoLaunchTax() (gas: 1479627)\n[PASS] testSellsPayNormalFeeDuringLaunch() (gas: 339677)\n[PASS] testSnipersSplittingBuysStillPayTheCurve() (gas: 657970)\n[PASS] testViewsBeforeInitialization() (gas: 4786746)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 19.48ms (5.92ms CPU time)\n\nRan 14 tests for test/V34.t.sol:V34Test\n[PASS] testBestFarmCapsAbsoluteSpendAndBreaksTiesByAddress() (gas: 4665724)\n[PASS] testBestFarmNeedsTwentyEpochsAndUsesCappedAbsoluteSpend() (gas: 4144232)\n[PASS] testBuybackSlippage150BpsMaxAndIntervalCannotBeBypassed() (gas: 756212)\n[PASS] testDonationsAndOrdinaryInflowsCannotPretendToBeEndowment() (gas: 1520675)\n[PASS] testEntropyAt256BoundaryAndAt257RearmsWithoutPayOrMint() (gas: 3283396)\n[PASS] testFirstRewardStartsCurrentEpochAtHalfTimeAndSnapshotCannotBeReplaced() (gas: 4843822)\n[PASS] testFreeFarmDoesNotDiluteDistrictOrClaimPaidPrize() (gas: 4739687)\n[PASS] testGameReadinessBothChecksRollbackEthAndTokenPurchase() (gas: 3618362)\n[PASS] testHookUninitializedCannotOpenOrStartEpochAndCallerCannotStartClock() (gas: 5948895)\n[PASS] testLaunchTaxExactBoundaries() (gas: 5831609)\n[PASS] testMythicGateEvaluatedAtRevealNotAtPayment() (gas: 1624053)\n[PASS] testPackOpeningFollowsHookAndNotLegacyDeployTimestamp() (gas: 101151)\n[PASS] testRemainderTransferredToPredictedPoolBeforeDeploymentAndNoApprovalNeeded() (gas: 2463041)\n[PASS] testStarterEntropyRearmsAfterClaimWindowAndNoDoubleMint() (gas: 772310)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 53.91ms (45.00ms CPU time)\n\nRan 3 tests for test/Pause.t.sol:PauseTest\n[PASS] testOnlySwarmBoundedDurationAndCannotExtendPause() (gas: 242972)\n[PASS] testSalePausedWhileEntropyClaimsWithdrawalsAndEpochsContinue() (gas: 15148717)\n[PASS] testUnpauseCannotResetNextPauseCooldown() (gas: 194647)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 40.53ms (32.54ms CPU time)\n\nRan 6 tests for test/EndowmentEscrowV38.t.sol:EndowmentEscrowV38Test\n[PASS] testConstructorRejectsMissingInputs() (gas: 3911)\n[PASS] testForwardRejectsBadProofs() (gas: 2647974)\n[PASS] testForwardRequiresBalance() (gas: 748474)\n[PASS] testForwardSendsWholeBalanceOnceToAuthenticatedPoolAndFundsEndowment() (gas: 1702540)\n[PASS] testForwardWithRealEndowmentActivatesDrip() (gas: 12904786)\n[PASS] testTwinWithForeignTokenCannotDrainEscrow() (gas: 12918283)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 80.12ms (14.90ms CPU time)\n\nRan 10 tests for test/Bounties.t.sol:BountiesTest\n[PASS] testBuyBountyProportionalCapNoDustCreditAndFailureRollback() (gas: 680020)\n[PASS] testEmptyRosterAndInvalidBatchReceiveNothing() (gas: 1419248)\n[PASS] testEveryWorkKindBoundedByHeartbeatAndAuthorizedProducer() (gas: 64315585)\n[PASS] testLazySettlementUnpaidAndCannotReplay() (gas: 6970276)\n[PASS] testOnlyFinalizePaidOnceAndEmptyWeekUnpaid() (gas: 2292196)\n[PASS] testPackEntropyCapturedOnceWithFullInventoryAndThroughPause() (gas: 3713527)\n[PASS] testPlanResolutionPaidOnceIncludingAdvanceForwarding() (gas: 2934177)\n[PASS] testRemovedWorkBountiesRejectedEvenFromOldProducer() (gas: 179981)\n[PASS] testStarterEntropySurvivesFullInventoryExpiryAndPauseWithoutReplayPayment() (gas: 5324477)\n[PASS] testWorkCreditRespectsZeroGasPricePriceCeilingAndUnitCap() (gas: 333726)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 95.30ms (96.25ms CPU time)\n\nRan 6 tests for test/Endowment.t.sol:EndowmentTest\n[PASS] testDirectTransferCannotBypassOrBackdateDrip() (gas: 368166)\n[PASS] testExactFundingFullLinearDripAndConservation() (gas: 832168)\n[PASS] testFuzzCumulativePaymentsCannotExceedVestedPrincipal(uint32,uint128) (runs: 256, μ: 522747, ~: 524757)\nLogs:\n  Bound result 0\n  Bound result 0\n\n[PASS] testNoTeamDonorOrSwarmWithdrawalOrReserveAuthority() (gas: 614309)\n[PASS] testParamsSnapshotCannotAccelerateOrRelockExistingEndowment() (gas: 303686)\n[PASS] testUnderfundingCannotActivateAndDonationsStayConserved() (gas: 453428)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 96.69ms (85.08ms CPU time)\n\nRan 6 tests for test/CivicV35.t.sol:CivicV35Test\n[PASS] testBillboardsBidRefundTextRulesAndPoolOnly() (gas: 945608)\n[PASS] testBlackMarketDescendingLimitedAndPause() (gas: 3828638)\n[PASS] testCollapseSuccessAndSingleOutageFailure() (gas: 810762)\n[PASS] testDormantDisabledAndNoticeOnce() (gas: 303076)\n[PASS] testOnceSeasonBoostBoundsAndSnapshot() (gas: 1722528)\n[PASS] testWarFreezeScoresConservationAndPayoutOnlyOnce() (gas: 1365382)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 42.04ms (22.02ms CPU time)\n\nRan 6 tests for test/ForeignTokenTwin.t.sol:ForeignTokenTwinTest\n[PASS] testBinderBindsTheGenuineRegistryThenAlreadyDone() (gas: 2793358)\n[PASS] testBinderCannotBypassAnyProof() (gas: 7228653)\n[PASS] testForeignTwinCannotBindFromTheAttacker() (gas: 1433024)\n[PASS] testForeignTwinIsSelfConsistentAndPassesEveryProofExceptTheBinder() (gas: 137061)\n[PASS] testNoNonBinderCanBindEitherRegistry() (gas: 2005687)\n[PASS] testZeroBinderRevertsAtConstruction() (gas: 673051)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 30.39ms (14.26ms CPU time)\n\nRan 5 tests for test/AuditV314.t.sol:AuditV314Test\n[PASS] testDustAmountCannotReduceExecutedBatchAndEmptyQueueReverts() (gas: 1383695)\n[PASS] testLaterSameEpochCreditKeepsEarlierTaxVintage() (gas: 608585)\n[PASS] testLockInsertionWalkIsBoundedAndFailureIsAtomic() (gas: 30159768)\n[PASS] testOnlyFarmerCanRetireEvenAnEmptyFarm() (gas: 4306920)\n[PASS] testStaleSellAmountUsesCurrentDepthAndEnforcesCurrentMinimum() (gas: 1624852)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 104.80ms (92.59ms CPU time)\n\nRan 6 tests for test/JobAParamsBoundaries.t.sol:JobAParamsBoundariesTest\n[PASS] testConstructorRejectsBadDeskHeartbeatRateAndCap() (gas: 4014)\n[PASS] testEveryKeyRejectsPublicCallerWithoutChangingValueOrCooldown() (gas: 2478099)\n[PASS] testFuzz_EachMutableKeyChangesOnlyAfterItsOwnExactCooldown(uint8,uint96) (runs: 1000, μ: 144562, ~: 143937)\nLogs:\n  Bound result 108\n\n[PASS] testFuzz_OutOfBoundsOrOverTenPercentChangesAreAtomic(uint8,bool) (runs: 512, μ: 96048, ~: 95681)\n[PASS] testHeartbeatCapCannotChangeEvenAfterCooldown() (gas: 138973)\n[PASS] testLetterLimitsAndNoOpDoNotConsumeCooldown() (gas: 167896)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 99.86ms (99.61ms CPU time)\n\nRan 8 tests for test/V39.t.sol:V39Test\n[PASS] testBaseDepositsAreEntirelyRewardEth() (gas: 190166)\n[PASS] testGridAcceptsSeverityFromThreeThousandAndRejectsBelow() (gas: 2948508)\n[PASS] testHookAddsExactlyOnePercentOnBuysAndSellsAfterLaunchWindow() (gas: 2181038)\n[PASS] testHookHasNoNetworkShareRecipientOrWithdrawal() (gas: 107668)\n[PASS] testMarketFactoryConfigHasNoNetworkRecipient() (gas: 10171661)\n[PASS] testRegistryAcceptsEitherToolchainPinAndNothingElse() (gas: 590544)\n[PASS] testSellSurchargeStillProgressiveAndCappedAtFifteenPercent() (gas: 1832534)\n[PASS] testStepLaunchTaxUnchangedAndFullyToRewards() (gas: 1292225)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 92.19ms (77.95ms CPU time)\n\nRan 1 test for test/EndowmentGame.t.sol:EndowmentGameTest\n[PASS] testRealMiningCannotSpendFutureEndowment() (gas: 130998353)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 178.58ms (168.85ms CPU time)\n\nRan 2 tests for test/Factory.t.sol:FactoryTest\n[PASS] testFactoryInvalidSearchRange() (gas: 4937)\n[PASS] testHookFactoryFlagsImmutableConfigAndIdempotence() (gas: 7975916)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 42.44ms (33.83ms CPU time)\n\nRan 5 tests for test/FarmDailyBasisV317.t.sol:FarmDailyBasisV317Test\n[PASS] testBasisRisesAtOnceToAHigherSettledYield() (gas: 15550655)\n[PASS] testDecayConstantIsExposed() (gas: 8403)\n[PASS] testProRataEntryEpochIsScaledToItsFullEpochEquivalent() (gas: 8748921)\n[PASS] testStarvingForManyEpochsDecaysGeometricallyNotToTheFloor() (gas: 28087075)\n[PASS] testZeroNetEpochOnlyDecaysTheBasisByOneStep() (gas: 14591209)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 200.93ms (191.78ms CPU time)\n\nRan 18 tests for test/EconomyV35.t.sol:EconomyV35Test\n[PASS] testAllEnhancementTableEndpointsAndGlobalBonusCap() (gas: 1477864)\n[PASS] testDurabilityBoundariesAndIdleNoWear() (gas: 38169181)\n[PASS] testEnhanceBurnFailureAndLevelGate() (gas: 1218579)\n[PASS] testEnhanceCapsNoticeUpwardOnlyAndThirtyDays() (gas: 355848)\n[PASS] testEnhanceCommitCannotPlaceScrapOrRetryAndLapsesAsWorstOutcome() (gas: 2423527)\n[PASS] testFeeSalesDepthSlippageCadenceAndNormalFeePot() (gas: 1737855)\n[PASS] testFreeAllowlistOnceWindowStarterScrapAndMetadata() (gas: 3102778)\n[PASS] testFreeRootRemainsFrozenAfterSevenDays() (gas: 43976)\n[PASS] testFreeRootWindowAndIndexLimit() (gas: 55991)\n[PASS] testFuzzPriceCurveDaysBounds(uint32,uint32) (runs: 256, μ: 88786, ~: 90188)\nLogs:\n  Bound result 2196\n\n[PASS] testLockBonusRedistributesWithinReservedEmission() (gas: 11683136)\n[PASS] testLockEscrowNoEarlyExitAndWalletCap() (gas: 5394589)\n[PASS] testQuoteScalesLastSettlementAndHasFloor() (gas: 4285279)\n[PASS] testRepairYieldQuoteAndAutoRepairCreditsOnly() (gas: 10812876)\n[PASS] testRoomsChargeYieldDaysAndRetainAgeGates() (gas: 2618884)\n[PASS] testSystemSellDustCannotOccupyCadenceAndCappedHeartbeatReturnsTokens() (gas: 1562949)\n[PASS] testTokenOnlyGiftSplitsNoEthPeg() (gas: 1738156)\n[PASS] testZapAtomicMinOutPauseAndRefund() (gas: 1441448)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 291.91ms (295.96ms CPU time)\n\nRan 2 tests for test/StandardMarket.t.sol:StandardMarketTest\n[PASS] testFuzzStandardSellNeverAddsProgressiveSurcharge(uint96) (runs: 256, μ: 1806816, ~: 1813969)\nLogs:\n  Bound result 70330818848049767\n\n[PASS] testStandardBuyOnePercentAllToRewards() (gas: 1673466)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 285.22ms (268.73ms CPU time)\n\nRan 2 tests for test/JobALaunch.t.sol:JobALaunchTest\n[PASS] testJobABatchOnEmptyChainPreservesReferencesAndRegistersRoles() (gas: 87225121)\n[PASS] testJobAPinsMatchTheBriefAndDeskPins() (gas: 166973)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 138.55ms (138.79ms CPU time)\n\nRan 2 tests for test/GridV35.t.sol:GridV35Test\n[PASS] testGreenAndCheapBothFavorTheStableDistrict() (gas: 4110886)\n[PASS] testReservedEventsHaveZeroLaunchWeightAndPlanOnlyWhenEnabled() (gas: 723024)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 16.94ms (8.42ms CPU time)\n\nRan 6 tests for test/Market.t.sol:MarketTest\n[PASS] testBuyChargesExactlyOnePercentAllToRewards() (gas: 1730007)\n[PASS] testFuzzTotalFeeHardCap(uint96) (runs: 256, μ: 1806228, ~: 1809180)\nLogs:\n  Bound result 70330818848049767\n\n[PASS] testOnlyManagerCorrectPoolExactInputAndHookAddress() (gas: 111284)\n[PASS] testSingleDumpIncludesItselfAndFeeDecaysWithoutGriefReset() (gas: 17163513)\n[PASS] testTwapAveragesEthPriceAcrossUnequalPrices() (gas: 2330865)\n[PASS] testTwapWarmupAndFlashManipulationResistance() (gas: 1883323)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 342.29ms (356.79ms CPU time)\n\nRan 8 tests for test/FeesParams.t.sol:FeesParamsTest\n[PASS] testAllDefaultParamsWithinHardBounds() (gas: 1255771)\n[PASS] testBuyBackPoolOnlySlippageFailureRollbackAndDustGriefBlocked() (gas: 774066)\n[PASS] testExactEthSplitsHeartbeatCapAndPullPayments() (gas: 512724)\n[PASS] testFuzzNoStepAboveTenPercent(uint96) (runs: 256, μ: 44972, ~: 45115)\nLogs:\n  Bound result 962\n\n[PASS] testFuzzSplitsConserveEveryWei(uint96) (runs: 256, μ: 207976, ~: 210856)\nLogs:\n  Bound result 70330818848049767\n\n[PASS] testHeartbeatCapFixedAtOneEth() (gas: 207904)\n[PASS] testParamsStepCooldownBoundsAuthorityAndLetter() (gas: 195823)\n[PASS] testPoolNoPublicReserveRecycleOrPayment() (gas: 135304)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 83.04ms (74.47ms CPU time)\n\nRan 9 tests for test/Packs.t.sol:PacksTest\n[PASS] testExactPaymentAndFutureBlockRequired() (gas: 1671228)\n[PASS] testExactRarityThresholdsAndMythicGate() (gas: 282935)\n[PASS] testExpiryRearmsWithoutMintingAndInventoryOpeningLimit() (gas: 3797222)\n[PASS] testFuzzVrgdaAlwaysBounded(uint32,uint32) (runs: 256, μ: 61611, ~: 63085)\nLogs:\n  Bound result 2196\n\n[PASS] testItemTypeDistributionExact() (gas: 626492)\n[PASS] testNoWalletGlobalOrTokenPackDailyLimit() (gas: 4392810)\n[PASS] testStarterWindowProofTokenIdOnceAndInventoryFailureRetry() (gas: 881490)\n[PASS] testTokenPackSameQuoteAndSplitWhenUsingWalletOrCredits() (gas: 76592671)\n[PASS] testVrgdaInitialStepDecayFloorCeilingAndBulkPricing() (gas: 1299987)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 360.37ms (273.88ms CPU time)\n\nRan 1 test for test/WarReviewV35.t.sol:IndependentWarReview\n[PASS] testWarWinnerCannotChangeAfterDeadline() (gas: 5734360)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.02ms (888.44µs CPU time)\n\nRan 1 test for test/YieldFloorReviewV35.t.sol:IndependentYieldFloorReview\n[PASS] testFirstEpochItemQuotesKeepNonzeroFloorAtCorrectScale() (gas: 673277)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 621.78µs (557.22µs CPU time)\n\nRan 13 tests for test/Events.t.sol:EventsTest\n[PASS] testCheapTariffAppliesCitywide() (gas: 6431880)\n[PASS] testColdPowerFireImmuneAndCleanPowerSurgeImmune() (gas: 7916395)\n[PASS] testFallbackAndExpiredSeedIndependentOfSwarmNumber() (gas: 1788804)\n[PASS] testFireNoCoolingZeroYieldColdPowerImmune() (gas: 6156432)\n[PASS] testGreenWaveRaisesDistrictMiningTenPercent() (gas: 6433957)\n[PASS] testLobbyOwnDistrictSplitDecayAndMinimumWeight() (gas: 1083530)\n[PASS] testOutageAndOffgridRoomMitigation() (gas: 7068792)\n[PASS] testPlansOnlyNextTwoOnceAndBoundedSeverity() (gas: 344926)\n[PASS] testRollingCapsAndInitialPositiveQuotaWithHostilePlans() (gas: 102269963)\n[PASS] testSurgeCanDestroyCommonButNeverLegendary() (gas: 6422908)\n[PASS] testSurgeDamagesExactlyOneItemAndCleanPowerImmune() (gas: 6305934)\n[PASS] testSurgeNeverDestroysLegendaryOrMythic() (gas: 9523164)\n[PASS] testTheftRouterDisabledAndRepairRestores() (gas: 6862770)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 371.55ms (373.04ms CPU time)\n\nRan 1 test for test/StandardV4Integration.t.sol:StandardV4IntegrationTest\n[PASS] testStandardAdapterRealPoolPaysExistingHookExactlyOnce() (gas: 1949215)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 325.24ms (1.27ms CPU time)\n\nRan 20 tests for test/V33.t.sol:V33Test\n[PASS] testActionBeforeExpiryMovesBucketWithoutDoubleCount() (gas: 25983504)\n[PASS] testAdvanceIsConstantInExpiringFarms() (gas: 38430108)\n[PASS] testAgeCapsAtBoundaries() (gas: 204552)\n[PASS] testClaimDoesNotRecommitWhileBehind() (gas: 37239808)\n[PASS] testClaimRecommitsAndPackRecommits() (gas: 60787577)\n[PASS] testDistrictScoreAveragePerFarmAndTenPercentWalletCap() (gas: 4607489)\n[PASS] testHeartbeatCapExcessGoesToPoolAndBaseFeeIsAllRewards() (gas: 270973)\n[PASS] testIdleFarmLeavesDenominatorAfterTwelveEpochs() (gas: 23504929)\n[PASS] testLaunchTaxDepositIsAllPoolAndMarketOnly() (gas: 137567)\n[PASS] testMergeRemoved() (gas: 512630)\n[PASS] testPackLobbySellSplit88Team10Heartbeat2() (gas: 407960)\n[PASS] testPackSaleOpensSixtyMinutesAfterLaunch() (gas: 1264387)\n[PASS] testPaidXpCannotBypassAgeGates() (gas: 59083319)\n[PASS] testPaidXpCappedPerDayActivityUncapped() (gas: 13264967)\n[PASS] testPartialRoomIsClippedNotReverted() (gas: 2156541)\n[PASS] testRewardsEarnedBeforeExpiryAreNeverLost() (gas: 47725769)\n[PASS] testSingleWhaleDistrictCannotWinAlone() (gas: 4534340)\n[PASS] testSyncRecommitsFromNextEpoch() (gas: 33379218)\n[PASS] testTokenPacksAlsoWaitForOpening() (gas: 59864)\n[PASS] testTopSpenderTrackingIsExact() (gas: 5411751)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 366.98ms (870.39ms CPU time)\n\nRan 8 tests for test/V4Integration.t.sol:V4IntegrationTest\n[PASS] testRealV4BuyAndSingleSwapSellTaxConserveSettlement() (gas: 2269731)\n[PASS] testRealV4ManipulatedSpotCannotInstantlySetBuybackQuote() (gas: 1909871)\n[PASS] testRealV4SmallBuyPaysPositiveKeeperMargin() (gas: 2072687)\nLogs:\n  real V4 0.2ETH buy gas: 1933528\n  real V4 buy bounty wei: 48651375000000\n\n[PASS] testRealV4SystemBuyUsesTwapAndOnlySystemFunds() (gas: 2078498)\n[PASS] testRealV4SystemSalesUseDepthTwapNormalFeesAndConserveTokens() (gas: 2247043)\n[PASS] testSystemBuybackOffsetsRecordedSellImbalance() (gas: 2509612)\n[PASS] testTenEthPoolRewardBuyAtSpotTwapIncludesLpFee() (gas: 2151712)\n[PASS] testTenEthPoolSystemSellAtSpotTwapIncludesLpFee() (gas: 4120061)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 291.19ms (13.87ms CPU time)\n\nRan 12 tests for test/AuditV317.t.sol:AuditV317Test\n[PASS] testAdvanceEpochDefersUntilTheRearmedEventResolves() (gas: 1433172)\n[PASS] testDestroyedItemResyncWaitsUntilTheFarmIsCaughtUp() (gas: 12580622)\n[PASS] testDestroyedItemWeightStale() (gas: 10356036)\n[PASS] testEnhancementInsideWindowStillCapturesAndResolvesNormally() (gas: 1164136)\n[PASS] testEnhancementLapseEmitsResolvedAsFailureAndKeepsSoulboundChecks() (gas: 2005877)\n[PASS] testEnhancementRearmGrind() (gas: 53784157)\n[PASS] testOwnerActionClearsThePendingResync() (gas: 8345887)\n[PASS] testSubmittedPlanDiscardedAfterHashWindow() (gas: 1740590)\n[PASS] testUnlockBlockedWhileEpochStale() (gas: 895813)\n[PASS] testUnlockLiveAndCaughtUpStillResyncsWeight() (gas: 58436968)\n[PASS] testUnlockWhileBehindReturnsPrincipalAndSkipsResync() (gas: 56212427)\n[PASS] testUnplannedLapsedWindowAlsoRearmsAndNeverUsesAPrecomputableSeed() (gas: 230726)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 519.13ms (498.77ms CPU time)\n\nRan 7 tests for test/HeartbeatBpsV313.t.sol:HeartbeatBpsV313Test\n[PASS] testFuzzAnyShareConservesEveryWeiAndNeverMovesTeamOrPot(uint16,uint96) (runs: 256, μ: 1428808, ~: 1609838)\nLogs:\n  Bound result 200\n  Bound result 267153995745\n\n[PASS] testLaunchDefaultIsTwoPercentAndSplitUnchanged() (gas: 230935)\n[PASS] testLoweredShareBackToFloorAndFloorIsHard() (gas: 401104)\n[PASS] testMaximumShareWithPotEnabledIsClippedToWhatIsLeft() (gas: 1867739)\n[PASS] testOnlyTheSwarmWithinBoundsStepAndCooldownCanMoveTheShare() (gas: 341795)\n[PASS] testRaisedShareStillStopsAtTheOneEthCap() (gas: 480520)\n[PASS] testSwarmSet220CreditsTwoPointTwoPercentOfSurchargeAndTokens() (gas: 543701)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 277.77ms (274.24ms CPU time)\n\nRan 3 tests for test/Gas.t.sol:GasTest\n[PASS] testGasCommonActions() (gas: 10873117)\nLogs:\n  buy token pack: 925868\n  open one pack: 514873\n  equip: 966814\n  repair wallet: 614735\n  enhancement commit: 568464\n  expand: 390489\n  token pack wallet: 655187\n  withdraw: 255483\n  unequip: 407017\n\n[PASS] testGasFullFarmLongIdleBoundedChunks() (gas: 119295605)\nLogs:\n  settle full 24-item farm eight epochs after 40 idle: 12496054\n\n[PASS] testGasTypicalFarmSettlementHasNoBounty() (gas: 8944774)\nLogs:\n  settle typical three-item farm one epoch: 923830\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 522.99ms (549.54ms CPU time)\n\nRan 11 tests for test/Items.t.sol:ItemsTest\n[PASS] testComputeHashSupportHashAndBonusesReplaceDuo() (gas: 4715342)\n[PASS] testDurabilityWearRepairAndEnhancementMetadataPreserved() (gas: 8393341)\n[PASS] testEquipRarityGatesAndMythicGate() (gas: 4162922)\n[PASS] testFullStackRarityCapAndRoomFlags() (gas: 7665589)\n[PASS] testInventoryMintCannotExceedCapacityAndExpansionRises() (gas: 3356807)\n[PASS] testLockedItemCannotBeScrappedUntilEpochRolls() (gas: 5989066)\n[PASS] testOffgridSavings() (gas: 2711135)\n[PASS] testPaidXpCannotBypassRoomTwoAgeGate() (gas: 3746447)\n[PASS] testRoomGatesAndLevelProgression() (gas: 78475814)\n[PASS] testScrapPaysPoolYieldAndCannotRepeat() (gas: 7561671)\n[PASS] testSoulboundOnlyOwnFarmAndNoDuplicateTypes() (gas: 2265957)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 605.54ms (336.21ms CPU time)\n\nRan 6 tests for test/SeasonAudit.t.sol:SeasonAuditTest\n[PASS] testAuditThresholdStrictAndNoWhaleSoftCap() (gas: 40508248)\n[PASS] testLotteryEntitlementSurvivesFullInventory() (gas: 131721528)\n[PASS] testPackSupplyDropOnlyActiveFarmsAtDoublePace() (gas: 11743280)\n[PASS] testParameterChangesCannotChangeClosedEpochBetweenBatches() (gas: 12523805)\n[PASS] testSeasonCannotFinalizeEarlyAndExpiredLotteryMustRearm() (gas: 124179117)\n[PASS] testWeeklyThreeDistinctTicketWinnersFuturePackAndBestPrize() (gas: 124934770)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 655.78ms (1.28s CPU time)\n\nRan 6 tests for test/Regression.t.sol:RegressionTest\n[PASS] testCableRepairRestoresOnlyRemainingHalfEpoch() (gas: 11818095)\n[PASS] testEmptyEpochPreservesLastSettledRateButResetsScrapAllowance() (gas: 11008366)\n[PASS] testFuzzCableRepairBlendHandlesNonMonotonicRarityBonuses(uint16) (runs: 256, μ: 1374191, ~: 1374014)\nLogs:\n  Bound result 1860\n\n[PASS] testRegisterOnlyAccountsDoNotAddSettlementWorkAndEmptyFarmCanRetire() (gas: 2037709)\n[PASS] testRepairAndPaidPackCannotRetroactivelyBoostEpoch() (gas: 9562743)\n[PASS] testUnlimitedFreshPacksCannotDrainPoolByScrapping() (gas: 9668475)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 730.34ms (762.46ms CPU time)\n\nRan 21 tests for test/SwarmDeskV37.t.sol:SwarmDeskV37Test\n[PASS] testBackupFailureUnknownFailureDeadlineAndPriceCap() (gas: 751317)\n[PASS] testBackupPullsExactPriceRecordsRequestAndRestrictsBodyAndCadence() (gas: 1207764)\n[PASS] testDeskSetHeartbeatBpsMovesFeeRouterShare() (gas: 945834)\n[PASS] testEmptyChainConstructorAndAuthenticatedBindingRejectSpoofs() (gas: 12683178)\n[PASS] testEventClampingAndFallbackWithoutAnswer() (gas: 1117363)\n[PASS] testExpiredOldSlotOldEpochAndUnexecutedAnswersNeverAct() (gas: 852773)\n[PASS] testFlatConstructorRejectsUnusedPackedBits() (gas: 7335783)\n[PASS] testForgedTamperedWrongSignerWrongDomainAndCallerRejected() (gas: 359833)\n[PASS] testFutureIssueWrongTypeMalformedLengthAndPriceNeverConsume() (gas: 327553)\n[PASS] testFuzzEveryParamHardBoundsAndTenPercentStep(uint8,uint248) (runs: 256, μ: 476143, ~: 477834)\nLogs:\n  Bound result 1\n\n[PASS] testNextSlotAcceptsSameQuestionAndChangedExecutionBytesReject() (gas: 1146136)\n[PASS] testNoAdminPathsAndEntireGraphUsesDesk() (gas: 428356)\n[PASS] testNoopRegulatorAcceptedAndParamsCooldownPreserved() (gas: 452656)\n[PASS] testRegulatorClampsParamsAnnouncesPhasesAndThirtyDayCaps() (gas: 1146623)\n[PASS] testRegulatorSkipsOutOfRangeKeysInsteadOfClampingToFortyFive() (gas: 501093)\n[PASS] testReplayDifferentSourceAndSecondAnswerSameSlotIgnored() (gas: 1068212)\n[PASS] testRobinhoodNativeClockCallbackWithin200k() (gas: 352907)\n[PASS] testScheduleDeliveryStoresUnder200kThenExecutesTwoPlans() (gas: 984580)\n[PASS] testSubmitRelayAcceptsAttestedAnswerFromAnyoneOnce() (gas: 1092075)\n[PASS] testSubmitRelayRejectsForgedWrongQuestionStaleAndMalformed() (gas: 1843104)\n[PASS] testWrongQuestionUnknownRequestWeakPanelAndWindowRejected() (gas: 364850)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 464.16ms (472.88ms CPU time)\n\nRan 9 tests for test/AuditV318.t.sol:AuditV318Test\n[PASS] testAuditPriceLimitedBuyRevertsInsteadOfPayingTaxOnUnconsumedEth() (gas: 132927)\n[PASS] testBeforeSwapNamesThePriceLimitedBuyError() (gas: 63433)\n[PASS] testFullFillBuysPayEachStepExactly() (gas: 2527120)\n[PASS] testFullFillTenEthBuyPaysExactlyNinetyPercentInTheFirstStep() (gas: 413400)\n[PASS] testFuzzOnlyTheExtremeBoundBuysAndPaysTheFlooredTax(uint96,uint160,uint8) (runs: 256, μ: 1588550, ~: 1367460)\nLogs:\n  Bound result 21671\n  Bound result 17180514964\n  Bound result 0\n\n[PASS] testPriceLimitedBuyRefusedAfterLaunchWindowToo() (gas: 4642431)\n[PASS] testPriceLimitedSellStillFillsPartiallyAndIsChargedOnActualOutput() (gas: 2237288)\n[PASS] testPublicInterfaceUnchanged() (gas: 108830)\n[PASS] testSystemRewardBuyStillFills() (gas: 1992012)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 809.36ms (558.77ms CPU time)\n\nRan 14 tests for test/JobAFailurePaths.t.sol:JobAFailurePathsTest\n[PASS] testClaimZeroOrAboveCreditCannotConsumeTaxOrReservations() (gas: 5892498)\n[PASS] testERC1155CallbackCannotResolveReceiptTwice() (gas: 2557838)\n[PASS] testERC20CallbackCannotBuyASecondPackDuringPayment() (gas: 1931041)\n[PASS] testETHGiftRefundGoesToPayerAndCannotSpendPreexistingPackTokens() (gas: 1230532)\n[PASS] testFuzz_MaxCostFailureDoesNotConsumePaymentOrCreateGift(uint8) (runs: 512, μ: 1698004, ~: 1659102)\nLogs:\n  Bound result 10\n\n[PASS] testInvalidResolveCountsCannotCaptureEntropyOrMintItems() (gas: 1392189)\n[PASS] testMissingAllowanceRollsBackEffectsBeforeTransferFrom() (gas: 1225443)\n[PASS] testPublicCallersCannotManufactureCreditOrItems() (gas: 557477)\n[PASS] testRejectedPurchaseInputsLeaveNoReceiptOrRegisteredFarm() (gas: 490878)\n[PASS] testSecondItemReceiverFailureRollsBackEntireResolutionAndCanRetry() (gas: 2637651)\n[PASS] testUnfundedPoolAndWrongHookRouterRefusePayment() (gas: 672715)\n[PASS] test_ERC20PaymentFailureRollsBackGiftXPAndSalesBeforeRetry() (gas: 2312311)\n[PASS] test_ETHGiftFailureUndoesCompletedMarketSwap() (gas: 652027)\n[PASS] test_UnplaceFailureKeepsCustodyAndLoadoutWhenInventoryIsFull() (gas: 3855748)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 735.75ms (752.20ms CPU time)\n\nRan 2 tests for test/ReservedEventsV35.t.sol:ReservedEventsV35Test\n[PASS] testFuzzReservedFestivalCannotExceedFifteenPercent(uint16) (runs: 256, μ: 4927536, ~: 4927534)\n[PASS] testReservedHeatwaveExtraCoolingWearAndBothProtections() (gas: 10178642)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 986.97ms (1.00s CPU time)\n\nRan 1 test for test/JobARewardPoolInvariant.t.sol:JobAPoolUnfundedInvariantTest\n[PASS]\nJobAPoolUnfundedInvariantTest invariants:\n[PASS] invariant_CashAndReservationsMatchIndependentFlows\n[PASS] invariant_FixedTokenSupplyIsConserved\n[PASS] invariant_PrincipalIsLockedUntilFundedAndScheduleIsFrozen\n JobAPoolUnfundedInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-----------------+----------------------+-------+---------+----------╮\n| Contract        | Selector             | Calls | Reverts | Discards |\n+=====================================================================+\n| JobAPoolHandler | activate             | 1303  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | changeFutureDrip     | 1442  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | donate               | 1408  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | elapse               | 1337  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | notifiedInflow       | 1434  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | pay                  | 1363  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | recycle              | 1330  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | rejectOverdraw       | 1315  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | rejectPaymentFailure | 1395  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | rejectUnprivileged   | 1356  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | reserve              | 1326  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | transferPrincipal    | 1375  | 0       | 0        |\n╰-----------------+----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 100000000000000000000000000\n  Bound result 100000000000000000000000000\n  Bound result 199999999999999999999999999\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 96584444378688767337169116\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5000000000001\n  Bound result 1382400\n  Bound result 192\n  Bound result 0\n  Bound result 4513656427539\n  Bound result 134576335433\n  Bound result 180184719558\n  Bound result 156000422208\n  Bound result 339\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2056\n  Bound result 441347\n  Bound result 0\n  Bound result 12506\n  Bound result 6109930816\n  Bound result 784\n  Bound result 9214264864\n  Bound result 20\n  Bound result 425590376\n  Bound result 748641\n  Bound result 16711680\n  Bound result 496584444378688617622426075\n  Bound result 496584444378688626650903226\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.12s (3.12s CPU time)\n\nRan 1 test for test/JobARewardPoolInvariant.t.sol:JobAPoolFundedInvariantTest\n[PASS]\nJobAPoolFundedInvariantTest invariants:\n[PASS] invariant_CashAndReservationsMatchIndependentFlows\n[PASS] invariant_FixedTokenSupplyIsConserved\n[PASS] invariant_PrincipalIsLockedUntilFundedAndScheduleIsFrozen\n JobAPoolFundedInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-----------------+----------------------+-------+---------+----------╮\n| Contract        | Selector             | Calls | Reverts | Discards |\n+=====================================================================+\n| JobAPoolHandler | activate             | 1303  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | changeFutureDrip     | 1442  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | donate               | 1408  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | elapse               | 1337  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | notifiedInflow       | 1434  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | pay                  | 1363  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | recycle              | 1330  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | rejectOverdraw       | 1315  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | rejectPaymentFailure | 1395  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | rejectUnprivileged   | 1356  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | reserve              | 1326  | 0       | 0        |\n|-----------------+----------------------+-------+---------+----------|\n| JobAPoolHandler | transferPrincipal    | 1375  | 0       | 0        |\n╰-----------------+----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 200000000000000000000000000\n  Bound result 86400\n  Bound result 1000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 100000000000000000000\n  Bound result 86501080971061521168230551\n  Bound result 539291369\n  Bound result 37854783097355901721681828\n  Bound result 14092538535806304015003673\n  Bound result 791\n  Bound result 0\n  Bound result 0\n  Bound result 8604193284445350203424497\n  Bound result 250\n  Bound result 0\n  Bound result 172800\n  Bound result 0\n  Bound result 12408\n  Bound result 7\n  Bound result 7692415408268746183765980\n  Bound result 2518\n  Bound result 1382400\n  Bound result 192\n  Bound result 2222717146316147719423852\n  Bound result 0\n  Bound result 2281878132679108455284614\n  Bound result 3645944783934945299990097\n  Bound result 346538907827875394188625\n  Bound result 41426386134420981632075\n  Bound result 488\n  Bound result 0\n  Bound result 1471260285679858524087650\n  Bound result 0\n  Bound result 2056\n  Bound result 441347\n  Bound result 0\n  Bound result 13029\n  Bound result 2000000000000000000\n  Bound result 13878\n  Bound result 182\n  Bound result 27750959583235577731997\n  Bound result 20\n  Bound result 20000000000000000000000\n  Bound result 171811\n  Bound result 794\n  Bound result 325250439675693880693465881\n  Bound result 325315572592655087853105896\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.69s (3.68s CPU time)\n\nRan 9 tests for test/Epochs.t.sol:EpochsTest\n[PASS] testCannotAdvanceEarlyAndBountyOnce() (gas: 2513731)\n[PASS] testClaimsEveryEpochAndRedistributionIsNextEpoch() (gas: 12010062)\n[PASS] testGasAdvanceIndependentOfRoster() (gas: 895978527)\nLogs:\n  advance empty roster: 1284212\n  advance 1000 farms: 1473392\n\n[PASS] testNoCatchupEmissionDuringGap() (gas: 6270392)\n[PASS] testNoRetroactiveEquipmentAndBoundedBatches() (gas: 5790681)\n[PASS] testNoWhaleCapHashShares() (gas: 10182869)\n[PASS] testReferralOneLevelSetOnceNoSelf() (gas: 7531610)\n[PASS] testTaxCurveExactAndFloor() (gas: 34112)\n[PASS] testWithdrawFailureRollsBackAndReentrancyCannotClaimTwice() (gas: 7446317)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 5.91s (6.00s CPU time)\n\nRan 2 tests for test/JobAItemsInvariant.t.sol:JobAItemsInvariantTest\n[PASS]\nJobAItemsInvariantTest invariants:\n[PASS] invariant_EveryLiveItemHasExactlyOneUnitInCorrectCustody\n[PASS] invariant_OwnerEnumerationContainsEveryLiveItemOnce\n JobAItemsInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭------------------+----------------------+-------+---------+----------╮\n| Contract         | Selector             | Calls | Reverts | Discards |\n+======================================================================+\n| JobAItemsHandler | destroy              | 1782  | 0       | 0        |\n|------------------+----------------------+-------+---------+----------|\n| JobAItemsHandler | equip                | 1835  | 0       | 0        |\n|------------------+----------------------+-------+---------+----------|\n| JobAItemsHandler | expand               | 1852  | 0       | 0        |\n|------------------+----------------------+-------+---------+----------|\n| JobAItemsHandler | maintain             | 1791  | 0       | 0        |\n|------------------+----------------------+-------+---------+----------|\n| JobAItemsHandler | mint                 | 1874  | 0       | 0        |\n|------------------+----------------------+-------+---------+----------|\n| JobAItemsHandler | rejectDirectTransfer | 1876  | 0       | 0        |\n|------------------+----------------------+-------+---------+----------|\n| JobAItemsHandler | rejectPublicMutation | 1796  | 0       | 0        |\n|------------------+----------------------+-------+---------+----------|\n| JobAItemsHandler | rejectWrongOwner     | 1786  | 0       | 0        |\n|------------------+----------------------+-------+---------+----------|\n| JobAItemsHandler | unequip              | 1792  | 0       | 0        |\n╰------------------+----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1\n  Bound result 3\n  Bound result 3\n  Bound result 2\n  Bound result 1\n  Bound result 3\n  Bound result 3\n  Bound result 1\n  Bound result 2\n  Bound result 3\n  Bound result 3\n  Bound result 3\n  Bound result 2\n  Bound result 1\n  Bound result 3\n  Bound result 3\n  Bound result 3\n  Bound result 5\n  Bound result 1\n  Bound result 2\n  Bound result 5\n  Bound result 4\n  Bound result 2\n  Bound result 5\n  Bound result 4\n  Bound result 4\n  Bound result 1\n  Bound result 6\n  Bound result 6\n  Bound result 5\n  Bound result 5\n  Bound result 5\n  Bound result 7\n  Bound result 7\n  Bound result 8\n  Bound result 2909\n  Bound result 3\n  Bound result 7\n  Bound result 1\n  Bound result 7900\n  Bound result 4\n  Bound result 1\n  Bound result 4\n  Bound result 5\n  Bound result 2\n  Bound result 8\n  Bound result 1\n  Bound result 1\n  Bound result 1\n  Bound result 8\n  Bound result 4\n  Bound result 6\n  Bound result 4\n\n[PASS] testSwapAndPopOfMiddleAndLastItemsPreservesEnumeration() (gas: 2276703)\nLogs:\n  Bound result 1\n  Bound result 4\n  Bound result 5\n  Bound result 1\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 9.77s (9.77s CPU time)\n\nRan 9 tests for test/LazyAccounting.t.sol:LazyAccountingTest\n[PASS] testAuditChargesTenPercentEvenAtHalfSeverityAndThresholdIsFrozen() (gas: 6161890)\n[PASS] testClaimCatchesUpWhilePacksPausedAndDoesNotEraseRemainingHistory() (gas: 25641763)\n[PASS] testExhaustedFarmCannotCollectRedistributionByRemainingIdle() (gas: 15191242)\n[PASS] testFuzzLazyEqualsIndependentEagerForRandomFarmsAndAllEvents(uint256) (runs: 256, μ: 45602704, ~: 45607849)\n[PASS] testGlobalAccumulatorAndWeightsAreSnapshottedBeforeMutations() (gas: 9311279)\n[PASS] testLateSeasonSettlementPaysMiningWithoutChangingFrozenWinners() (gas: 59490917)\n[PASS] testOneWeiMiningGreenCannotLockSettlementThroughEnvelopeRounding() (gas: 11069658)\n[PASS] testSparseMatureVintageConsumedBeforeRecentSlotAfterWrap() (gas: 43222421)\n[PASS] testStaleActionsRequireChunksAndNeverBlockGlobalAdvance() (gas: 40505475)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 11.47s (11.84s CPU time)\n\nRan 1 test for test/Invariants.t.sol:InvariantsTest\n[PASS]\nInvariantsTest invariants:\n[PASS] invariantAllowlistRootAndWalletLimit\n[PASS] invariantInventoryAndEthLiabilities\n[PASS] invariantLocksAndPotAlwaysBacked\n[PASS] invariantPriceAndParamsBounds\n[PASS] invariantReceiptsNeverForfeitOrFixMissingEntropy\n[PASS] invariantReservesBackedAndPendingCovered\n[PASS] invariantTokenConservationNoBurns\n InvariantsTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+-----------+-------+---------+----------╮\n| Contract    | Selector  | Calls | Reverts | Discards |\n+======================================================+\n| GameHandler | advance   | 562   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | buy       | 605   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | claim     | 593   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | equip     | 572   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | expand    | 622   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | freeClaim | 594   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | fundPot   | 601   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | lock      | 569   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | resolve   | 590   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | rollover  | 604   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | settle    | 599   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | tokenPack | 598   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | unlock    | 521   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | unplace   | 562   | 0       | 0        |\n╰-------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 385\n  Bound result 13756\n  Bound result 7518\n  Bound result 2811760177\n  Bound result 2159\n  Bound result 1900\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 37.43s (37.41s CPU time)\n\nRan 65 test suites in 37.46s (82.15s CPU time): 369 tests passed, 0 failed, 6 skipped (375 total tests)\n","passed":true},{"durationMs":205,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Billboards.bidBillboard(uint256,uint256,string,string)\",\"Billboards.settleBillboard(uint256,uint256)\",\"Billboards.withdrawRefund()\",\"Civic.announce(uint256,string)\",\"Civic.buyLot(uint256)\",\"Civic.claimWar(uint256)\",\"Civic.consumeCityEvent()\",\"Civic.enable(uint256)\",\"Civic.finishCollapse()\",\"Civic.finishWar()\",\"Civic.fundCollapse(uint256)\",\"Civic.fundWar(uint256)\",\"Civic.grantDistrictBoost(uint256,uint16,string)\",\"Civic.listLot(uint8,uint8,uint8)\",\"Civic.startCollapse(uint256)\",\"Civic.startWar(uint8,uint8)\",\"Economy.autoRepair(address,uint256,uint256[24])\",\"Economy.lock(uint256,uint256)\",\"Economy.unlock()\",\"EndowmentEscrow.forward(address,uint64,uint256,bytes,uint64,uint256,bytes)\",\"Enhancement.activateCap()\",\"Enhancement.announceCap(uint8,string)\",\"Enhancement.capture(uint256)\",\"Enhancement.commit(uint256,uint256,bool)\",\"Enhancement.resolve(uint256)\",\"FarmCore.activity(address,uint256,uint256,uint256)\",\"FarmCore.autoRepair(address,uint256)\",\"FarmCore.buyRoom(uint256,bool)\",\"FarmCore.buyTokenPack(bool)\",\"FarmCore.civicPurchase(address,uint256)\",\"FarmCore.claimDrop()\",\"FarmCore.expand(bool)\",\"FarmCore.grantDrop(address,bytes32)\",\"FarmCore.lobby(uint256,bool)\",\"FarmCore.paidPackBought(address,uint256,uint256)\",\"FarmCore.place(uint256,uint256,uint256)\",\"FarmCore.prepareEnhancement(address,uint256,uint256,bool)\",\"FarmCore.process(address,uint256)\",\"FarmCore.register(address)\",\"FarmCore.repair(uint256,bool)\",\"FarmCore.repairCable(bool)\",\"FarmCore.retire(address)\",\"FarmCore.scrap(uint256,uint256)\",\"FarmCore.setAutoRepair(bool,uint16)\",\"FarmCore.setReferrer(address)\",\"FarmCore.sync()\",\"FarmCore.syncFor(address)\",\"FarmCore.unplace(uint256,uint256)\",\"FarmEngine.process(address,uint256,(uint256[24],uint8[24],uint16[24],bool,uint64,uint16))\",\"FarmItems.destroy(uint256)\",\"FarmItems.equip(address,uint256)\",\"FarmItems.expand(address)\",\"FarmItems.maintain(uint256,uint16,uint8)\",\"FarmItems.mint(address,uint8,uint8,bool)\",\"FarmItems.mintDrop(address,bytes32)\",\"FarmItems.safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\",\"FarmItems.safeTransferFrom(address,address,uint256,uint256,bytes)\",\"FarmItems.unequip(address,uint256)\",\"FarmRewards.advanceEpoch()\",\"FarmRewards.award(address,uint256)\",\"FarmRewards.beginMining(address,uint256)\",\"FarmRewards.claim(uint256)\",\"FarmRewards.flagResync(address)\",\"FarmRewards.initialize(address)\",\"FarmRewards.recordSales(uint256)\",\"FarmRewards.releasePrize(uint256)\",\"FarmRewards.scrap(address,uint256,uint256)\",\"FarmRewards.setReferrer(address,address)\",\"FarmRewards.setWeight(address,uint256)\",\"FarmRewards.settle(address,uint256)\",\"FarmRewards.spend(address,uint256)\",\"FarmRewards.spendTo(address,uint256,address)\",\"FeeRouter.depositBaseFee()\",\"FeeRouter.depositLaunchTax()\",\"FeeRouter.depositLobby()\",\"FeeRouter.depositPack()\",\"FeeRouter.depositSellTax()\",\"FeeRouter.executeBuys(uint256,uint256)\",\"FeeRouter.executePotBuys(uint256,uint256)\",\"FeeRouter.executeSells(uint256,uint256)\",\"FeeRouter.payBounty(address)\",\"FeeRouter.payWork(address,uint8,uint256,uint256)\",\"FeeRouter.receive()\",\"FeeRouter.routeTokens(uint256)\",\"FeeRouter.withdraw()\",\"FeeRouter.zapBuy(uint256,address)\",\"GameRegistry.register(uint256,uint64,uint256,bytes)\",\"GridOperator.lobbyETH()\",\"GridOperator.resolve(uint256)\",\"GridOperator.resolveFor(uint256,address)\",\"GridOperator.shift(uint256)\",\"GridOperator.submitPlan(uint256,uint8,uint16,bytes32,string)\",\"GridOperator.tokenLobby(address,uint256)\",\"MarketFactory.deploy((address,address,int24,address,address,bytes32),bytes32)\",\"PackSale.buyPackFor(address)\",\"PackSale.buyPacksFor(address,uint256,uint256)\",\"PackSale.buyWithETH(address,uint256,uint256,uint256)\",\"PackSale.captureEntropy(uint256)\",\"PackSale.openPack(uint256)\",\"PackSale.pause(uint256)\",\"PackSale.rearm(uint256)\",\"PackSale.resolve(uint256,uint256)\",\"PackSale.rewardPack(address)\",\"PackSale.tokenPack(address)\",\"PackSale.unpause()\",\"Params.set(uint8,uint256,string)\",\"RewardPool.donate(uint256)\",\"RewardPool.fundEndowment()\",\"RewardPool.pay(address,uint256)\",\"RewardPool.recordInflow(uint256)\",\"RewardPool.recycle(uint256)\",\"RewardPool.reserve(uint256)\",\"Season.addPrize(uint256,uint256)\",\"Season.claimBest(uint256)\",\"Season.claimDistrict(uint256)\",\"Season.claimLottery(uint256)\",\"Season.complete(address,uint256)\",\"Season.depositPot(uint256)\",\"Season.finalize(uint256)\",\"Season.prepare(uint256,uint256)\",\"Season.rearm(uint256)\",\"Season.recordActivity(address,uint256,uint256,uint256)\",\"Season.recordRepair(address,uint256,uint256)\",\"Season.recordSpend(address,uint256,bool)\",\"Season.rollover(uint256)\",\"StandardAdapter.buy(uint256,address)\",\"StandardAdapter.unlockCallback(bytes)\",\"StandardMarket.afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\",\"StandardMarket.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"StandardMarket.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"StandardMarket.bindFeeRouter(address,uint64,uint256)\",\"StandardMarket.buy(uint256,address)\",\"StandardMarket.flushFees()\",\"StandardMarket.receive()\",\"StandardMarket.sell(uint256,uint256,address)\",\"StandardMarket.unlockCallback(bytes)\",\"StarterClaim.captureEntropy(uint256)\",\"StarterClaim.claim(uint256,bytes32[])\",\"StarterClaim.claimFree(uint256,bytes32[])\",\"StarterClaim.rearm(uint256)\",\"StarterClaim.resolve(uint256)\",\"SwarmDesk.askBackup(uint8,bytes)\",\"SwarmDesk.bind(address,bytes,bytes,uint64,uint8,uint64,uint8,uint64)\",\"SwarmDesk.clearExpired(bytes32)\",\"SwarmDesk.execute(uint8,bytes)\",\"SwarmDesk.onOracleFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"SwarmDesk.onOracleResult(bytes32,(bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"SwarmDesk.submit((bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"V4Market.afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\",\"V4Market.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"V4Market.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"V4Market.bindFeeRouter(address,uint64,uint256)\",\"V4Market.buy(uint256,address)\",\"V4Market.flushFees()\",\"V4Market.receive()\",\"V4Market.sell(uint256,uint256,address)\",\"V4Market.unlockCallback(bytes)\"],\"files\":{\".gitignore\":8,\"ADAPTATION.md\":131,\"README.md\":82,\"artifacts/build-lint-v3.txt\":2369,\"artifacts/build-v3.txt\":3,\"artifacts/economic-targets-v3.json\":9,\"artifacts/fmt-v3.txt\":0,\"artifacts/foundry-v3.txt\":845,\"artifacts/funded-sensitivity/simulation-v3.json\":13928,\"artifacts/funded-sensitivity/simulation-v3.md\":51,\"artifacts/funding-sensitivity-v3.json\":342,\"artifacts/gas-actions-v3.txt\":15,\"artifacts/policy-sensitivity-v3.json\":554,\"artifacts/python-tests-v3.txt\":18,\"artifacts/regulator-example.json\":59,\"artifacts/robinhood-fork-v3.txt\":7,\"artifacts/runtime-sizes-v3.json\":23,\"artifacts/simulation-v3.json\":13928,\"artifacts/simulation-v3.md\":51,\"artifacts/tuned-funded/simulation-v3.json\":13928,\"artifacts/tuned-funded/simulation-v3.md\":51,\"artifacts/v2/README.md\":3,\"artifacts/v2/foundry-tests.txt\":178,\"artifacts/v2/offline-tests.txt\":187,\"artifacts/v2/offline-verification.json\":21,\"artifacts/v2/previous-README.md\":108,\"artifacts/v2/previous-design.md\":120,\"artifacts/v2/previous-report.md\":75,\"artifacts/v2/previous-security-review.md\":29,\"artifacts/v2/previous-simulation-assumptions.md\":52,\"artifacts/v2/robinhood-fork.txt\":7,\"artifacts/v2/rpc-probe.json\":16,\"artifacts/v2/runtime-sizes.json\":21,\"artifacts/v2/simulation.md\":95,\"artifacts/v2/verification.json\":110,\"artifacts/v31/allocation-summary.md\":6,\"artifacts/v31/baseline-budget.md\":14,\"artifacts/v31/boundary-checks.json\":10880,\"artifacts/v31/candidate-stress/simulation.json\":32636,\"artifacts/v31/evidence/factory-prediction.json\":14,\"artifacts/v31/evidence/launch-and-cost-facts.json\":130,\"artifacts/v31/evidence/standalone-hook-build.json\":38,\"artifacts/v31/final/comparison.md\":50,\"artifacts/v31/funded/comparison.md\":52,\"artifacts/v31/funded/replay.json\":290,\"artifacts/v31/funding-comparison.md\":8,\"artifacts/v31/regulator-example.json\":73,\"artifacts/v31/stress-comparison.md\":20,\"artifacts/v31/summary.json\":13,\"artifacts/v31/validation.json\":250,\"artifacts/v310/forge-test-launch.txt\":496,\"artifacts/v310/forge-test-repo-changed-suites.txt\":115,\"artifacts/v310/forge-test-repo-full-before-new-tests.txt\":437,\"artifacts/v310/pins-check.txt\":2,\"artifacts/v311/rehearsal.log\":377,\"artifacts/v312/forge-fmt.txt\":1,\"artifacts/v312/forge-test-launch.txt\":381,\"artifacts/v312/forge-test-repo.txt\":384,\"artifacts/v312/launch-creation-hashes.txt\":5,\"artifacts/v312/node-tests.txt\":10,\"artifacts/v312/pins-check.txt\":2,\"artifacts/v312/python-tests.txt\":3,\"artifacts/v312/rehearsal.log\":368,\"artifacts/v313/forge-fmt.txt\":0,\"artifacts/v313/forge-test.txt\":468,\"artifacts/v313/launch-creation-hashes.txt\":6,\"artifacts/v313/module-pins.txt\":15,\"artifacts/v313/pins-check.txt\":2,\"artifacts/v314/authority-check.txt\":1,\"artifacts/v314/consistency-check.txt\":1,\"artifacts/v314/creation-hashes.json\":21,\"artifacts/v314/deploy-gate.txt\":1,\"artifacts/v314/flatten-build.txt\":871,\"artifacts/v314/flatten-check.txt\":2,\"artifacts/v314/forge-build.txt\":4752,\"artifacts/v314/forge-fmt.txt\":0,\"artifacts/v314/forge-test.txt\":487,\"artifacts/v314/launch-creation-hashes.txt\":20,\"artifacts/v314/module-pins-check.txt\":1,\"artifacts/v314/node-tests.txt\":22,\"artifacts/v314/python-tests.txt\":39,\"artifacts/v314/rehearsal-build.log\":4895,\"artifacts/v314/rehearsal.log\":352,\"artifacts/v314/runtime-sizes.json\":21,\"artifacts/v314/swarm-pins-check.txt\":1,\"artifacts/v315/creation-hashes.json\":21,\"artifacts/v315/deploy-gate.txt\":1,\"artifacts/v315/forge-build.txt\":1062,\"artifacts/v315/forge-fmt.txt\":0,\"artifacts/v315/forge-test.txt\":412,\"artifacts/v315/launch-creation-hashes.txt\":20,\"artifacts/v315/module-pins-check.txt\":1,\"artifacts/v315/node-tests.txt\":22,\"artifacts/v315/python-tests.txt\":39,\"artifacts/v315/rehearsal-build.log\":4921,\"artifacts/v315/rehearsal.log\":387,\"artifacts/v315/runtime-sizes.json\":21,\"artifacts/v315/swarm-pins-check.txt\":1,\"artifacts/v316/creation-hashes.json\":21,\"artifacts/v316/deploy-gate.txt\":1,\"artifacts/v316/forge-build.txt\":4736,\"artifacts/v316/forge-fmt.txt\":0,\"artifacts/v316/forge-test.txt\":505,\"artifacts/v316/launch-creation-hashes.txt\":20,\"artifacts/v316/module-pins-check.txt\":1,\"artifacts/v316/node-tests.txt\":7,\"artifacts/v316/python-tests.txt\":3,\"artifacts/v316/rehearsal-build.log\":4921,\"artifacts/v316/rehearsal.log\":392,\"artifacts/v316/runtime-sizes.json\":21,\"artifacts/v316/swarm-pins-check.txt\":1,\"artifacts/v317/creation-hashes.json\":21,\"artifacts/v317/deploy-gate.txt\":1,\"artifacts/v317/forge-fmt.txt\":0,\"artifacts/v317/forge-test.txt\":442,\"artifacts/v317/launch-creation-hashes.txt\":20,\"artifacts/v317/module-pins-check.txt\":1,\"artifacts/v317/node-tests.txt\":14,\"artifacts/v317/python-tests.txt\":5,\"artifacts/v317/rehearsal-build.log\":4959,\"artifacts/v317/rehearsal.log\":392,\"artifacts/v317/runtime-sizes.json\":21,\"artifacts/v317/swarm-pins-check.txt\":1,\"artifacts/v318/creation-hashes.json\":21,\"artifacts/v318/deploy-gate.txt\":1,\"artifacts/v318/forge-fmt.txt\":0,\"artifacts/v318/forge-test.txt\":487,\"artifacts/v318/launch-creation-hashes.txt\":20,\"artifacts/v318/module-pins-check.txt\":1,\"artifacts/v318/node-tests.txt\":24,\"artifacts/v318/rehearsal-build.log\":4973,\"artifacts/v318/rehearsal.log\":392,\"artifacts/v318/runtime-sizes.json\":21,\"artifacts/v318/swarm-pins-check.txt\":1,\"artifacts/v32/contract-sizes.json\":54,\"artifacts/v32/forge-build.log\":2734,\"artifacts/v32/forge-fmt.log\":0,\"artifacts/v32/forge-test.log\":310,\"artifacts/v32/model-checks.log\":5,\"artifacts/v32/module-pins.log\":1,\"artifacts/v32/python-tests.log\":25,\"artifacts/v32/regulator-example.json\":73,\"artifacts/v32/simulation-checks.json\":11,\"artifacts/v32/simulation-checks.log\":11,\"artifacts/v32/validation.json\":61,\"artifacts/v32/verified-baseline/comparison.md\":8,\"artifacts/v32/verified-baseline/simulation.json\":22622,\"artifacts/v32/verified-sensitivities/comparison.md\":68,\"artifacts/v33/simulation.json\":116,\"artifacts/v34/build.txt\":2931,\"artifacts/v34/format.txt\":0,\"artifacts/v34/pins.txt\":1,\"artifacts/v34/python-tests.txt\":5,\"artifacts/v34/reveal-test.txt\":1,\"artifacts/v34/simulation.json\":91766,\"artifacts/v34/simulation.md\":43,\"artifacts/v34/tests.txt\":306,\"artifacts/v35/simulation.json\":22605,\"artifacts/v35/simulation.md\":104,\"artifacts/v35/verification.json\":132,\"artifacts/v36/simulation-phases.json\":179,\"artifacts/v36/simulation-phases.md\":13,\"artifacts/v37/byte-sizes.json\":131,\"artifacts/v37/verification.json\":28,\"artifacts/v39/forge-build-repo.txt\":3,\"artifacts/v39/forge-fmt.txt\":1,\"artifacts/v39/forge-test-launch.txt\":8,\"artifacts/v39/forge-test-repo.txt\":390,\"artifacts/v39/pins-check.txt\":2,\"artifacts/v39/pins.json\":68,\"artifacts/v39/runtime-sizes.json\":197,\"artifacts/v39/simulation.json\":381,\"artifacts/v39/simulation.md\":29,\"artifacts/verification-v3.json\":67,\"docs/accepted-v314.md\":10,\"docs/accepted-v315.md\":22,\"docs/accepted-v316.md\":24,\"docs/accepted-v317.md\":46,\"docs/accepted-v318.md\":56,\"docs/api-v35.md\":41,\"docs/dependency-provenance.md\":9,\"docs/design.md\":69,\"docs/entropy-v34.md\":31,\"docs/launch-v31.md\":121,\"docs/launch-v314-plan.json\":196,\"docs/launch-v34.md\":44,\"docs/launch-v35.md\":40,\"docs/lazy-accounting-v32.md\":48,\"docs/m2-trust-assumption.md\":121,\"docs/oracle-v37/event.json\":1,\"docs/oracle-v37/oracle-config.json\":21,\"docs/oracle-v37/regulator.json\":1,\"docs/params-keys-v313.md\":113,\"docs/report-v3.md\":143,\"docs/report-v31.md\":128,\"docs/report-v32.md\":138,\"docs/report-v33.md\":107,\"docs/report-v34.md\":58,\"docs/report-v36.md\":89,\"docs/report-v38.md\":83,\"docs/research/b94e6839-platform-report.md\":238,\"docs/review-v31.md\":77,\"docs/review-v32.md\":32,\"docs/review-v33.md\":19,\"docs/review-v34.md\":30,\"docs/review-v35-independent.md\":69,\"docs/review-v37-independent.md\":44,\"docs/review-v39-independent.md\":105,\"docs/security-review.md\":29,\"docs/simulation-assumptions.md\":43,\"docs/simulation-v3-historical.md\":44,\"docs/simulation-v34.md\":34,\"foundry.toml\":21,\"keeper/README.md\":120,\"keeper/blackout-keeper.service\":23,\"keeper/keeper.env.example\":18,\"keeper/keeper.mjs\":578,\"keeper/lib/abi.mjs\":95,\"keeper/lib/eth.mjs\":186,\"keeper/lib/oracle.mjs\":57,\"keeper/wiring.example.json\":17,\"launch-v31.md\":3,\"launch-v36.md\":34,\"launch-v37.md\":144,\"launch-v38.md\":57,\"launch-v39.md\":255,\"launch/V4Market.sol\":1894,\"operations/dormant-v35.md\":17,\"regulator.md\":60,\"report.md\":537,\"script/Deploy.s.sol\":252,\"script/DeployMarket.s.sol\":15,\"script/PredictGame.s.sol\":49,\"script/SwarmArgs.sol\":38,\"sim/blackout_sim_v2.py\":509,\"sim/blackout_sim_v3.py\":338,\"sim/blackout_sim_v31.py\":24,\"sim/blackout_sim_v32.py\":380,\"sim/blackout_sim_v33.py\":395,\"sim/blackout_sim_v34.py\":444,\"sim/candidate_stress_v31.py\":21,\"sim/heartbeat_boundaries_v31.py\":25,\"sim/heartbeat_sweep_v31.py\":46,\"sim/policy_sensitivity_v3.py\":19,\"sim/run_v32.py\":34,\"sim/run_v33.py\":58,\"sim/run_v34.py\":54,\"sim/run_v35.py\":273,\"sim/run_v36.py\":83,\"sim/run_v39.py\":153,\"sim/tune_v3.py\":16,\"src/Billboards.sol\":135,\"src/Civic.sol\":302,\"src/Economy.sol\":222,\"src/EndowmentEscrow.sol\":111,\"src/Enhancement.sol\":164,\"src/FarmCore.sol\":611,\"src/FarmEngine.sol\":299,\"src/FarmItems.sol\":165,\"src/FarmRewards.sol\":607,\"src/FeeRouter.sol\":313,\"src/GameRegistry.sol\":101,\"src/GridOperator.sol\":276,\"src/MarketFactory.sol\":61,\"src/PackSale.sol\":293,\"src/Params.sol\":181,\"src/RewardPool.sol\":113,\"src/Season.sol\":368,\"src/StandardAdapter.sol\":77,\"src/StandardMarket.sol\":22,\"src/StarterClaim.sol\":149,\"src/SwarmDesk.sol\":548,\"src/V4Market.sol\":565,\"src/interfaces/IGame.sol\":53,\"src/interfaces/IGameRegistry.sol\":15,\"src/interfaces/ILaunchHook.sol\":7,\"src/interfaces/IV4.sol\":26,\"src/interfaces/Interfaces.sol\":20,\"src/lib/ChainClock.sol\":22,\"src/lib/EconomyMath.sol\":48,\"src/lib/Errors.sol\":13,\"src/lib/GameModule.sol\":17,\"src/lib/ItemMath.sol\":31,\"src/lib/ItemMetadata.sol\":79,\"src/lib/ModuleCode.sol\":49,\"src/lib/Robinhood.sol\":15,\"src/lib/SwarmCode.sol\":18,\"src/oracle/OracleAttestation.sol\":221,\"src/oracle/SignatureCheckerCompat.sol\":14,\"test/AuditV314.t.sol\":116,\"test/AuditV315.t.sol\":199,\"test/AuditV317.t.sol\":359,\"test/AuditV318.t.sol\":319,\"test/AutoRepairReviewV35.t.sol\":39,\"test/Base.t.sol\":310,\"test/Bounties.t.sol\":290,\"test/CivicV35.t.sol\":224,\"test/Clock.t.sol\":54,\"test/DeployGateV314.t.sol\":94,\"test/Deployment.t.sol\":94,\"test/EconomyV35.t.sol\":398,\"test/Endowment.t.sol\":123,\"test/EndowmentEscrowV38.t.sol\":200,\"test/EndowmentGame.t.sol\":51,\"test/Epochs.t.sol\":177,\"test/Events.t.sol\":252,\"test/Factory.t.sol\":31,\"test/FarmDailyBasisV317.t.sol\":146,\"test/FeesParams.t.sol\":135,\"test/ForeignTokenTwin.t.sol\":288,\"test/Gas.t.sol\":110,\"test/GridV35.t.sol\":66,\"test/HeartbeatBpsV313.t.sol\":149,\"test/HookBinding.t.sol\":113,\"test/Invariants.t.sol\":211,\"test/Items.t.sol\":246,\"test/JobA-TESTING.md\":59,\"test/JobAFailurePaths.t.sol\":353,\"test/JobAItemsInvariant.t.sol\":265,\"test/JobALaunch.t.sol\":154,\"test/JobAParamsBoundaries.t.sol\":123,\"test/JobAPoolFailurePaths.t.sol\":188,\"test/JobARewardPoolInvariant.t.sol\":304,\"test/JobAStarterBoundaries.t.sol\":225,\"test/KeeperProfit.t.sol\":95,\"test/LazyAccounting.t.sol\":447,\"test/Market.t.sol\":121,\"test/OracleConformanceV37.t.sol\":105,\"test/PackMythicTiming.t.sol\":88,\"test/Packs.t.sol\":167,\"test/Pause.t.sol\":76,\"test/PhasedReleaseV36.t.sol\":165,\"test/PotV35.t.sol\":106,\"test/PredictionV34.t.sol\":46,\"test/Registry.t.sol\":140,\"test/Regression.t.sol\":156,\"test/ReservedEventsV35.t.sol\":41,\"test/ReviewV34.t.sol\":145,\"test/SeasonAudit.t.sol\":204,\"test/StandardAdapter.t.sol\":81,\"test/StandardMarket.t.sol\":63,\"test/StandardV4Integration.t.sol\":128,\"test/SwarmDeskV37.t.sol\":705,\"test/TwinCaptureV312.t.sol\":255,\"test/V310.t.sol\":79,\"test/V33.t.sol\":561,\"test/V34.t.sol\":315,\"test/V39.t.sol\":213,\"test/V4Integration.t.sol\":229,\"test/WarReviewV35.t.sol\":69,\"test/YieldFloorReviewV35.t.sol\":31,\"test/deploy-gate-v314.test.mjs\":42,\"test/fixtures/keeper-v39-vectors.json\":56,\"test/fixtures/oracle-hash-vectors.json\":102,\"test/fork/RehearsalV311.t.sol\":812,\"test/fork/RobinhoodFork.t.sol\":39,\"test/keeper-v39.test.mjs\":34,\"test/mocks/MockGameRegistry.sol\":52,\"test/mocks/MockMarket.sol\":74,\"test/mocks/MockOracleSigner.sol\":17,\"test/mocks/MockSwarmIntake.sol\":67,\"test/mocks/MockToken.sol\":38,\"test/mocks/MockV4Manager.sol\":118,\"test/oracle-v310.test.mjs\":22,\"test/oracle-v37.test.mjs\":42,\"test/python/test_entropy_bot.py\":31,\"test/python/test_merkle.py\":19,\"test/python/test_regulator.py\":30,\"test/python/test_v31.py\":38,\"test/python/test_v32.py\":58,\"test/python/test_v34.py\":33,\"test/python/test_v35.py\":71,\"test/reveal.test.mjs\":24,\"test/ui-v35.test.mjs\":27,\"tools/check_deploy_gate.mjs\":48,\"tools/check_v32_results.py\":52,\"tools/check_v37_authority.py\":20,\"tools/entropy_bot.py\":106,\"tools/freepack_merkle.py\":20,\"tools/make_oracle_bodies.mjs\":45,\"tools/oracle_question_hash.mjs\":80,\"tools/pin_module_code.py\":95,\"tools/pin_swarm_code.py\":48,\"tools/regulator.py\":81,\"tools/rehearse_v311.sh\":28,\"tools/report_v31.py\":55,\"tools/schedule_bodies.mjs\":16,\"tools/starter_merkle.py\":72,\"tools/swarm_constructor_args.mjs\":57,\"ui/app.js\":178,\"ui/index.html\":22,\"ui/reveal.js\":34,\"ui/style.css\":3},\"excluded\":[\"vendor/\",\"node_modules/\"],\"truncated\":true}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"4879fe3e97feed37cc32a05f677cee959f088e1d69d6162d8331f5e3f41c3be8","verifiedTreeHash":"6665e7df2eeb1acd39ad8eec7f6448ae6edcff17","verifierVersion":"0.1.0+67c588fa"},{"checks":[{"durationMs":49850,"exitCode":0,"name":"build","output":"Compiling 199 files with Solc 0.8.26\nSolc 0.8.26 finished in 49.58s\nCompiler run successful with warnings:\nWarning (2519): This declaration shadows an existing declaration.\n  --> src/lib/EconomyMath.sol:17:48:\n   |\n17 |         returns (uint256 chance, uint256 burn, uint256 bonus, uint256 daysWad)\n   |                                                ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n  --> src/lib/EconomyMath.sol:44:5:\n   |\n44 |     function bonus(uint256 level) internal pure returns (uint256 b) {\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/V4Market.sol:305:22:\n    |\n305 |     function _record(bool sell, uint256 amount) private {\n    |                      ^^^^^^^^^\nNote: The other declaration is here:\n   --> src/V4Market.sol:504:5:\n    |\n504 |     function sell(uint256 amount, uint256 minOut, address recipient) external nonReentrant returns (uint256 received) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (8760): This declaration has the same name as another declaration.\n  --> test/mocks/MockSwarmIntake.sol:26:9:\n   |\n26 |         bytes4 failure,\n   |         ^^^^^^^^^^^^^^\nNote: The other declaration is here:\n  --> test/mocks/MockSwarmIntake.sol:44:5:\n   |\n44 |     function failure(bytes32 id, uint8 status, bytes32 reason) external returns (bool) {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2072): Unused local variable.\n  --> test/EndowmentEscrowV38.t.sol:28:9:\n   |\n28 |         LocalApplicationFactory f = LocalApplicationFactory(address(d.registry.factory()));\n   |         ^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWarning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> test/EndowmentEscrowV38.t.sol:121:82:\n    |\n121 |     function _registryArgs(address gameToken, address params, uint256 endowment, address factory)\n    |                                                                                  ^^^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/Events.t.sol:213:9:\n    |\n213 |         uint256 price = d.packs.quote(112);\n    |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n --> test/Gas.t.sol:9:9:\n  |\n9 |         uint256 price = d.packs.price();\n  |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Gas.t.sol:75:9:\n   |\n75 |         uint256 q = d.packs.quote(112);\n   |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Invariants.t.sol:56:9:\n   |\n56 |         uint256 price = d.packs.price();\n   |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Items.t.sol:76:9:\n   |\n76 |         uint256 cost = d.packs.quote(112);\n   |         ^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/Items.t.sol:106:9:\n    |\n106 |         uint256 q = d.packs.quote(16);\n    |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/LazyAccounting.t.sol:186:13:\n    |\n186 |             uint256 quote = d.packs.quote(112);\n    |             ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/LazyAccounting.t.sol:421:9:\n    |\n421 |         uint256 quote = d.packs.quote(112);\n    |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Packs.t.sol:37:9:\n   |\n37 |         uint256 quote = d.packs.quote(200);\n   |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Packs.t.sol:64:9:\n   |\n64 |         uint256 q = d.packs.quote(6);\n   |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Pause.t.sol:35:9:\n   |\n35 |         uint256 q = d.packs.quote(1);\n   |         ^^^^^^^^^\n\nWarning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> test/Registry.t.sol:49:21:\n   |\n49 |     function _fresh(LocalApplicationFactory f) private returns (GameRegistry) {\n   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/Regression.t.sol:73:9:\n   |\n73 |         uint256 previous = d.items.data(id).durability;\n   |         ^^^^^^^^^^^^^^^^\n\nWarning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> test/SwarmDeskV37.t.sol:485:65:\n    |\n485 |     function _registryArgs(address params, bytes32 starterRoot, address factory) private view returns (bytes memory) {\n    |                                                                 ^^^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/V33.t.sol:254:13:\n    |\n254 |             uint256 q = d.packs.quote(16);\n    |             ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/V33.t.sol:431:9:\n    |\n431 |         uint256 price = d.packs.price();\n    |         ^^^^^^^^^^^^^\n\nWarning (2072): Unused local variable.\n  --> test/V34.t.sol:78:9:\n   |\n78 |         uint256 q = d.packs.price();\n   |         ^^^^^^^^^\n\nWarning (2072): Unused local variable.\n   --> test/V39.t.sol:186:9:\n    |\n186 |         LocalApplicationFactory f = LocalApplicationFactory(address(d.registry.factory()));\n    |         ^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> src/FarmRewards.sol:149:5:\n    |\n149 |     function ready() public view returns (bool) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to view\n   --> test/Base.t.sol:106:5:\n    |\n106 |     function oracleFixture() internal returns (SwarmDesk.OracleConfig memory o) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to view\n   --> test/AuditV315.t.sol:187:5:\n    |\n187 |     function testFixtureDeskBoundAgainstItsTokenLaunchRecord() public {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> test/fork/RehearsalV311.t.sol:224:5:\n    |\n224 |     function _oracle() internal view returns (SwarmDesk.OracleConfig memory o) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> test/fork/RehearsalV311.t.sol:283:5:\n    |\n283 |     function _mineHookSalt(bytes memory initCode) internal view returns (bytes32 salt, address hook) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","passed":true},{"durationMs":56431,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 1 test for test/fork/RobinhoodFork.t.sol:RobinhoodForkTest\n[SKIP] testForkArbSysAndHistoricalHash() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 199.98µs (65.56µs CPU time)\n\nRan 1 test for test/YieldFloorReviewV35.t.sol:IndependentYieldFloorReview\n[PASS] testFirstEpochItemQuotesKeepNonzeroFloorAtCorrectScale() (gas: 673277)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.12ms (985.65µs CPU time)\n\nRan 1 test for test/WarReviewV35.t.sol:IndependentWarReview\n[PASS] testWarWinnerCannotChangeAfterDeadline() (gas: 5734360)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 8.09ms (7.84ms CPU time)\n\nRan 3 tests for test/AuditV318.t.sol:AuditV318PartialFillTest\n[PASS] testAfterSwapAcceptsExactFillAtEveryStep() (gas: 2199373)\n[PASS] testAfterSwapRefusesAPartialFill() (gas: 415962)\n[PASS] testMockBeforeSwapRefusesNonExtremeLimitAndKeepsExactOutputRefusal() (gas: 197452)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 15.87ms (3.92ms CPU time)\n\nRan 1 test for test/DeployGateV314.t.sol:DeployGateV314Test\n[PASS] testAllLaunchConstructorsWorkWithNoProtocolCode() (gas: 47296062)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 15.34ms (15.16ms CPU time)\n\nRan 3 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] testConstructorRejectsMissingInputsAndDoesNotCallExternalContracts() (gas: 3994)\n[PASS] testForeignCallerDoesNotGetAnyAuthority() (gas: 43053059)\n[PASS] testImmutableGraphAndEip170Sizes() (gas: 187323)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 27.18ms (9.05ms CPU time)\n\nRan 3 tests for test/StandardAdapter.t.sol:StandardAdapterTest\n[PASS] testExistingHookKeyPreservedAndNoExtraFee() (gas: 330662)\n[PASS] testRequiresThirtyMinutesFreshOracleAndAuthorizedCallback() (gas: 198351)\n[PASS] testSettlementSlippageFailurePreservesCredits() (gas: 240594)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 21.93ms (1.70ms CPU time)\n\nRan 7 tests for test/V33.t.sol:LaunchProtectionTest\n[PASS] testBuyTaxHasImmutableSteps() (gas: 97111)\n[PASS] testLaunchTaxChargedAndRoutedEntirelyToPool() (gas: 228216)\n[PASS] testNoBuySizeLimitAtAnyLaunchStep() (gas: 1691893)\n[PASS] testNormalBuyAfterDecayHasNoLaunchTax() (gas: 1479627)\n[PASS] testSellsPayNormalFeeDuringLaunch() (gas: 339677)\n[PASS] testSnipersSplittingBuysStillPayTheCurve() (gas: 657970)\n[PASS] testViewsBeforeInitialization() (gas: 4786746)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 31.04ms (6.53ms CPU time)\n\nRan 2 tests for test/PackMythicTiming.t.sol:PackMythicTimingTest\n[PASS] testCapturedSeedCanYieldMythicAfterLevelTen() (gas: 2558167)\n[PASS] testPartialReceiptRechecksLevelAndKeepsCapturedSeed() (gas: 3649411)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 47.24ms (33.80ms CPU time)\n\nRan 3 tests for test/HookBinding.t.sol:HookBindingTest\n[PASS] testHoldBeforeGameExistsThenBindOnceAndFlushExactStreams() (gas: 43435048)\n[PASS] testLookAlikeCannotBindEvenWhenTeamCalls() (gas: 1908201)\n[PASS] testWrongRouterAndMissingCodeRejectedBeforePermanentBind() (gas: 41150218)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 48.67ms (20.28ms CPU time)\n\nRan 1 test for test/PredictionV34.t.sol:PredictionV34Test\n[PASS] testFullGraphPredictsPoolBeforeRegistryDeployment() (gas: 4162727)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 12.45ms (749.94µs CPU time)\n\nRan 3 tests for test/Pause.t.sol:PauseTest\n[PASS] testOnlySwarmBoundedDurationAndCannotExtendPause() (gas: 242972)\n[PASS] testSalePausedWhileEntropyClaimsWithdrawalsAndEpochsContinue() (gas: 15148717)\n[PASS] testUnpauseCannotResetNextPauseCooldown() (gas: 194647)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 75.31ms (51.01ms CPU time)\n\nRan 5 tests for test/Registry.t.sol:RegistryTest\n[PASS] testAllModulePinsMatchExactPinnedCompilerArtifacts() (gas: 1068880)\n[PASS] testAuthenticatedEnrollmentRejectsUncreatedWrongCodeAndWrongRegistry() (gas: 2930598)\n[PASS] testConstructorAcceptsEmptyGraphWithoutExternalCalls() (gas: 13657)\n[PASS] testCounterfeitRuntimeAtAnotherFactoryCannotEnroll() (gas: 1542191)\n[PASS] testCounterfeitRuntimeWithPoisonedCreditCannotEnroll() (gas: 5876476)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 17.88ms (6.29ms CPU time)\n\nRan 8 tests for test/TwinCaptureV312.t.sol:TwinCaptureV312Test\n[PASS] testBinderChoosingTwinOrphansHonestGame() (gas: 12068523)\n[PASS] testBinderChosenTwinCannotPayAttacker() (gas: 12034732)\n[PASS] testEOAMarketCannotBind() (gas: 5759282)\n[PASS] testHonestBindThenForwardReachesHonestPool() (gas: 6532903)\n[PASS] testHookWithForeignConfigurationCannotBind() (gas: 5801492)\n[PASS] testTwinCannotWinTheBindRace() (gas: 13565631)\n[PASS] testTwinWithForeignMarketCannotBind() (gas: 12270581)\n[PASS] testTwinWithForeignTokenCannotBind() (gas: 12441654)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 83.05ms (65.12ms CPU time)\n\nRan 5 tests for test/fork/RehearsalV311.t.sol:RehearsalV311Test\n[SKIP] testRehearsalAttestedAnswerChangesPlanWithinBand() (gas: 0)\n[SKIP] testRehearsalGasPerLaunchUnderPlatformCeiling() (gas: 0)\n[SKIP] testRehearsalKeeperPassAdvancesEpochsRevealsEntropyAndClaimFeesPaysTeam() (gas: 0)\n[SKIP] testRehearsalLaunchTaxThenOnePercentAndSurcharge() (gas: 0)\n[SKIP] testRehearsalPacksOpenOneHourAfterLaunch() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 5 skipped; finished in 709.43µs (59.20µs CPU time)\n\nRan 2 tests for test/AutoRepairReviewV35.t.sol:IndependentAutoRepairReview\n[PASS] testAutomaticRepairRecordsHistoricalWeekBeforeCompletion() (gas: 5411876)\n[PASS] testLateAutomaticRepairCannotReopenSeasonEligibility() (gas: 4275820)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 133.28ms (80.16ms CPU time)\n\nRan 8 tests for test/PhasedReleaseV36.t.sol:PhasedReleaseV36Test\n[PASS] testBillboardsDisabledThenEnabled() (gas: 414524)\n[PASS] testEnableIsNoticedOnceNeverOffAndSwarmOnly() (gas: 355991)\n[PASS] testEnhancementDisabledThenEnabledOnce() (gas: 1098908)\n[PASS] testEverythingDeploysDisabledAndCoreStillWorks() (gas: 8179262)\n[PASS] testFuzzUnannouncedFeatureCannotBeEnabled(uint256) (runs: 256, μ: 30071, ~: 29968)\n[PASS] testLocksStakeAndLobbyDisabledThenEnabled() (gas: 2861203)\n[PASS] testPotDisabledFollowsV34RoutingThenEnabled() (gas: 455827)\n[PASS] testReservedEventsDisabledThenEnabled() (gas: 557745)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 69.59ms (56.63ms CPU time)\n\nRan 6 tests for test/CivicV35.t.sol:CivicV35Test\n[PASS] testBillboardsBidRefundTextRulesAndPoolOnly() (gas: 945608)\n[PASS] testBlackMarketDescendingLimitedAndPause() (gas: 3828638)\n[PASS] testCollapseSuccessAndSingleOutageFailure() (gas: 810762)\n[PASS] testDormantDisabledAndNoticeOnce() (gas: 303076)\n[PASS] testOnceSeasonBoostBoundsAndSnapshot() (gas: 1722528)\n[PASS] testWarFreezeScoresConservationAndPayoutOnlyOnce() (gas: 1365382)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 148.48ms (73.93ms CPU time)\n\nRan 2 tests for test/Factory.t.sol:FactoryTest\n[PASS] testFactoryInvalidSearchRange() (gas: 4937)\n[PASS] testHookFactoryFlagsImmutableConfigAndIdempotence() (gas: 7975916)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 149.60ms (115.31ms CPU time)\n\nRan 3 tests for test/PotV35.t.sol:PotV35Test\n[PASS] testPotDepositRequiresActualTokensAndAuthority() (gas: 256924)\n[PASS] testPotSplitAndLotteryCommitSurvivesFullInventory() (gas: 11851210)\n[PASS] testPotUnclaimedRolloverOnlyAfterFourWeeksNoDoubleClaim() (gas: 6429769)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 166.28ms (97.77ms CPU time)\n\nRan 8 tests for test/V39.t.sol:V39Test\n[PASS] testBaseDepositsAreEntirelyRewardEth() (gas: 190166)\n[PASS] testGridAcceptsSeverityFromThreeThousandAndRejectsBelow() (gas: 2948508)\n[PASS] testHookAddsExactlyOnePercentOnBuysAndSellsAfterLaunchWindow() (gas: 2181038)\n[PASS] testHookHasNoNetworkShareRecipientOrWithdrawal() (gas: 107668)\n[PASS] testMarketFactoryConfigHasNoNetworkRecipient() (gas: 10171661)\n[PASS] testRegistryAcceptsEitherToolchainPinAndNothingElse() (gas: 590544)\n[PASS] testSellSurchargeStillProgressiveAndCappedAtFifteenPercent() (gas: 1832534)\n[PASS] testStepLaunchTaxUnchangedAndFullyToRewards() (gas: 1292225)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 173.52ms (132.48ms CPU time)\n\nRan 5 tests for test/ReviewV34.t.sol:ReviewV34Test\n[PASS] testCanonicalCompetingRegistryCannotTakeOverBinding() (gas: 9502782)\n[PASS] testDustBuyCannotConsumeGlobalBuyInterval() (gas: 336156)\n[PASS] testLateGreenEntrySettlesWithinReservedEnvelope() (gas: 4441470)\n[PASS] testMeaningfulSmallBuyCanUseLessThanMaximumBatch() (gas: 263646)\n[PASS] testSameConfigurationAtUncommittedCoordinatesCannotBind() (gas: 9589277)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 36.28ms (21.02ms CPU time)\n\nRan 2 tests for test/JobALaunch.t.sol:JobALaunchTest\n[PASS] testJobABatchOnEmptyChainPreservesReferencesAndRegistersRoles() (gas: 87225121)\n[PASS] testJobAPinsMatchTheBriefAndDeskPins() (gas: 166973)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 181.70ms (181.51ms CPU time)\n\nRan 5 tests for test/KeeperProfit.t.sol:KeeperProfitTest\n[PASS] testPaidPackEntropyKeeperProfit() (gas: 1182284)\nLogs:\n  paid pack entropy execution gas: 139616\n  paid pack entropy bounty wei: 3380475000000\n  paid pack entropy execution plus 21000 gas cost wei: 3212320000000\n\n[PASS] testPlanEntropyKeeperProfit() (gas: 1665588)\nLogs:\n  plan entropy execution gas: 163211\n  plan entropy bounty wei: 4474800000000\n  plan entropy execution plus 21000 gas cost wei: 3684220000000\n\n[PASS] testSeasonFinalizeThreeWinnersAndPrizeKeeperProfit() (gas: 3451194)\nLogs:\n  season finalize three winners and prize execution gas: 644073\n  season finalize three winners and prize bounty wei: 15825700000000\n  season finalize three winners and prize execution plus 21000 gas cost wei: 13301460000000\n\n[PASS] testSeasonPrepareIsConstantUnpaidWork() (gas: 1342777)\n[PASS] testStarterEntropyKeeperProfit() (gas: 324487)\nLogs:\n  starter entropy execution gas: 142744\n  starter entropy bounty wei: 3380150000000\n  starter entropy execution plus 21000 gas cost wei: 3274880000000\n\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 39.16ms (19.57ms CPU time)\n\nRan 4 tests for test/OracleConformanceV37.t.sol:OracleConformanceV37Test\n[PASS] testAcceptsOriginalProtocolSignature() (gas: 17934)\n[PASS] testDigestMatchesUnmodifiedProtocolVector() (gas: 13636)\n[PASS] testFreshVectorSignerSignature() (gas: 30385)\n[PASS] testSelectorsExactlyMatchLiveProtocol() (gas: 3520)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 1.44ms (461.60µs CPU time)\n\nRan 14 tests for test/V34.t.sol:V34Test\n[PASS] testBestFarmCapsAbsoluteSpendAndBreaksTiesByAddress() (gas: 4665724)\n[PASS] testBestFarmNeedsTwentyEpochsAndUsesCappedAbsoluteSpend() (gas: 4144232)\n[PASS] testBuybackSlippage150BpsMaxAndIntervalCannotBeBypassed() (gas: 756212)\n[PASS] testDonationsAndOrdinaryInflowsCannotPretendToBeEndowment() (gas: 1520675)\n[PASS] testEntropyAt256BoundaryAndAt257RearmsWithoutPayOrMint() (gas: 3283396)\n[PASS] testFirstRewardStartsCurrentEpochAtHalfTimeAndSnapshotCannotBeReplaced() (gas: 4843822)\n[PASS] testFreeFarmDoesNotDiluteDistrictOrClaimPaidPrize() (gas: 4739687)\n[PASS] testGameReadinessBothChecksRollbackEthAndTokenPurchase() (gas: 3618362)\n[PASS] testHookUninitializedCannotOpenOrStartEpochAndCallerCannotStartClock() (gas: 5948895)\n[PASS] testLaunchTaxExactBoundaries() (gas: 5831609)\n[PASS] testMythicGateEvaluatedAtRevealNotAtPayment() (gas: 1624053)\n[PASS] testPackOpeningFollowsHookAndNotLegacyDeployTimestamp() (gas: 101151)\n[PASS] testRemainderTransferredToPredictedPoolBeforeDeploymentAndNoApprovalNeeded() (gas: 2463041)\n[PASS] testStarterEntropyRearmsAfterClaimWindowAndNoDoubleMint() (gas: 772310)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 265.27ms (221.55ms CPU time)\n\nRan 10 tests for test/Bounties.t.sol:BountiesTest\n[PASS] testBuyBountyProportionalCapNoDustCreditAndFailureRollback() (gas: 680020)\n[PASS] testEmptyRosterAndInvalidBatchReceiveNothing() (gas: 1419248)\n[PASS] testEveryWorkKindBoundedByHeartbeatAndAuthorizedProducer() (gas: 64315585)\n[PASS] testLazySettlementUnpaidAndCannotReplay() (gas: 6970276)\n[PASS] testOnlyFinalizePaidOnceAndEmptyWeekUnpaid() (gas: 2292196)\n[PASS] testPackEntropyCapturedOnceWithFullInventoryAndThroughPause() (gas: 3713527)\n[PASS] testPlanResolutionPaidOnceIncludingAdvanceForwarding() (gas: 2934177)\n[PASS] testRemovedWorkBountiesRejectedEvenFromOldProducer() (gas: 179981)\n[PASS] testStarterEntropySurvivesFullInventoryExpiryAndPauseWithoutReplayPayment() (gas: 5324477)\n[PASS] testWorkCreditRespectsZeroGasPricePriceCeilingAndUnitCap() (gas: 333726)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 186.80ms (157.67ms CPU time)\n\nRan 2 tests for test/V310.t.sol:ToolchainPinsV310Test\n[PASS] testEveryModuleOfThisBuildMatchesOneToolchainPin() (gas: 168471)\n[PASS] testPinsAreOneToolchainAndRejectUnknownCode() (gas: 164239)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 323.19ms (1.54ms CPU time)\n\nRan 1 test for test/EndowmentGame.t.sol:EndowmentGameTest\n[PASS] testRealMiningCannotSpendFutureEndowment() (gas: 130998353)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 349.03ms (323.21ms CPU time)\n\nRan 6 tests for test/Endowment.t.sol:EndowmentTest\n[PASS] testDirectTransferCannotBypassOrBackdateDrip() (gas: 368166)\n[PASS] testExactFundingFullLinearDripAndConservation() (gas: 832168)\n[PASS] testFuzzCumulativePaymentsCannotExceedVestedPrincipal(uint32,uint128) (runs: 256, μ: 522805, ~: 524763)\nLogs:\n  Bound result 7\n  Bound result 16644447909644436\n\n[PASS] testNoTeamDonorOrSwarmWithdrawalOrReserveAuthority() (gas: 614309)\n[PASS] testParamsSnapshotCannotAccelerateOrRelockExistingEndowment() (gas: 303686)\n[PASS] testUnderfundingCannotActivateAndDonationsStayConserved() (gas: 453428)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 270.99ms (258.58ms CPU time)\n\nRan 6 tests for test/EndowmentEscrowV38.t.sol:EndowmentEscrowV38Test\n[PASS] testConstructorRejectsMissingInputs() (gas: 3911)\n[PASS] testForwardRejectsBadProofs() (gas: 2647974)\n[PASS] testForwardRequiresBalance() (gas: 748474)\n[PASS] testForwardSendsWholeBalanceOnceToAuthenticatedPoolAndFundsEndowment() (gas: 1702540)\n[PASS] testForwardWithRealEndowmentActivatesDrip() (gas: 12904786)\n[PASS] testTwinWithForeignTokenCannotDrainEscrow() (gas: 12918283)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 31.39ms (16.50ms CPU time)\n\nRan 2 tests for test/StandardMarket.t.sol:StandardMarketTest\n[PASS] testFuzzStandardSellNeverAddsProgressiveSurcharge(uint96) (runs: 256, μ: 1806816, ~: 1813969)\nLogs:\n  Bound result 70330818848049767\n\n[PASS] testStandardBuyOnePercentAllToRewards() (gas: 1673466)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 535.33ms (469.68ms CPU time)\n\nRan 1 test for test/StandardV4Integration.t.sol:StandardV4IntegrationTest\n[PASS] testStandardAdapterRealPoolPaysExistingHookExactlyOnce() (gas: 1949215)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 561.67ms (1.65ms CPU time)\n\nRan 2 tests for test/GridV35.t.sol:GridV35Test\n[PASS] testGreenAndCheapBothFavorTheStableDistrict() (gas: 4110886)\n[PASS] testReservedEventsHaveZeroLaunchWeightAndPlanOnlyWhenEnabled() (gas: 723024)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 30.64ms (15.36ms CPU time)\n\nRan 6 tests for test/ForeignTokenTwin.t.sol:ForeignTokenTwinTest\n[PASS] testBinderBindsTheGenuineRegistryThenAlreadyDone() (gas: 2793358)\n[PASS] testBinderCannotBypassAnyProof() (gas: 7228653)\n[PASS] testForeignTwinCannotBindFromTheAttacker() (gas: 1433024)\n[PASS] testForeignTwinIsSelfConsistentAndPassesEveryProofExceptTheBinder() (gas: 137061)\n[PASS] testNoNonBinderCanBindEitherRegistry() (gas: 2005687)\n[PASS] testZeroBinderRevertsAtConstruction() (gas: 673051)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 39.76ms (17.72ms CPU time)\n\nRan 8 tests for test/FeesParams.t.sol:FeesParamsTest\n[PASS] testAllDefaultParamsWithinHardBounds() (gas: 1255771)\n[PASS] testBuyBackPoolOnlySlippageFailureRollbackAndDustGriefBlocked() (gas: 774066)\n[PASS] testExactEthSplitsHeartbeatCapAndPullPayments() (gas: 512724)\n[PASS] testFuzzNoStepAboveTenPercent(uint96) (runs: 256, μ: 44972, ~: 45115)\nLogs:\n  Bound result 962\n\n[PASS] testFuzzSplitsConserveEveryWei(uint96) (runs: 256, μ: 207976, ~: 210856)\nLogs:\n  Bound result 70330818848049767\n\n[PASS] testHeartbeatCapFixedAtOneEth() (gas: 207904)\n[PASS] testParamsStepCooldownBoundsAuthorityAndLetter() (gas: 195823)\n[PASS] testPoolNoPublicReserveRecycleOrPayment() (gas: 135304)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 143.55ms (128.06ms CPU time)\n\nRan 11 tests for test/Items.t.sol:ItemsTest\n[PASS] testComputeHashSupportHashAndBonusesReplaceDuo() (gas: 4715342)\n[PASS] testDurabilityWearRepairAndEnhancementMetadataPreserved() (gas: 8393341)\n[PASS] testEquipRarityGatesAndMythicGate() (gas: 4162922)\n[PASS] testFullStackRarityCapAndRoomFlags() (gas: 7665589)\n[PASS] testInventoryMintCannotExceedCapacityAndExpansionRises() (gas: 3356807)\n[PASS] testLockedItemCannotBeScrappedUntilEpochRolls() (gas: 5989066)\n[PASS] testOffgridSavings() (gas: 2711135)\n[PASS] testPaidXpCannotBypassRoomTwoAgeGate() (gas: 3746447)\n[PASS] testRoomGatesAndLevelProgression() (gas: 78475814)\n[PASS] testScrapPaysPoolYieldAndCannotRepeat() (gas: 7561671)\n[PASS] testSoulboundOnlyOwnFarmAndNoDuplicateTypes() (gas: 2265957)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 422.76ms (487.02ms CPU time)\n\nRan 5 tests for test/FarmDailyBasisV317.t.sol:FarmDailyBasisV317Test\n[PASS] testBasisRisesAtOnceToAHigherSettledYield() (gas: 15550655)\n[PASS] testDecayConstantIsExposed() (gas: 8403)\n[PASS] testProRataEntryEpochIsScaledToItsFullEpochEquivalent() (gas: 8748921)\n[PASS] testStarvingForManyEpochsDecaysGeometricallyNotToTheFloor() (gas: 28087075)\n[PASS] testZeroNetEpochOnlyDecaysTheBasisByOneStep() (gas: 14591209)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 513.23ms (466.18ms CPU time)\n\nRan 12 tests for test/AuditV317.t.sol:AuditV317Test\n[PASS] testAdvanceEpochDefersUntilTheRearmedEventResolves() (gas: 1433172)\n[PASS] testDestroyedItemResyncWaitsUntilTheFarmIsCaughtUp() (gas: 12580622)\n[PASS] testDestroyedItemWeightStale() (gas: 10356036)\n[PASS] testEnhancementInsideWindowStillCapturesAndResolvesNormally() (gas: 1164136)\n[PASS] testEnhancementLapseEmitsResolvedAsFailureAndKeepsSoulboundChecks() (gas: 2005877)\n[PASS] testEnhancementRearmGrind() (gas: 53784157)\n[PASS] testOwnerActionClearsThePendingResync() (gas: 8345887)\n[PASS] testSubmittedPlanDiscardedAfterHashWindow() (gas: 1740590)\n[PASS] testUnlockBlockedWhileEpochStale() (gas: 895813)\n[PASS] testUnlockLiveAndCaughtUpStillResyncsWeight() (gas: 58436968)\n[PASS] testUnlockWhileBehindReturnsPrincipalAndSkipsResync() (gas: 56212427)\n[PASS] testUnplannedLapsedWindowAlsoRearmsAndNeverUsesAPrecomputableSeed() (gas: 230726)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 748.28ms (1.15s CPU time)\n\nRan 9 tests for test/Packs.t.sol:PacksTest\n[PASS] testExactPaymentAndFutureBlockRequired() (gas: 1671228)\n[PASS] testExactRarityThresholdsAndMythicGate() (gas: 282935)\n[PASS] testExpiryRearmsWithoutMintingAndInventoryOpeningLimit() (gas: 3797222)\n[PASS] testFuzzVrgdaAlwaysBounded(uint32,uint32) (runs: 256, μ: 61535, ~: 63085)\nLogs:\n  Bound result 2196\n\n[PASS] testItemTypeDistributionExact() (gas: 626492)\n[PASS] testNoWalletGlobalOrTokenPackDailyLimit() (gas: 4392810)\n[PASS] testStarterWindowProofTokenIdOnceAndInventoryFailureRetry() (gas: 881490)\n[PASS] testTokenPackSameQuoteAndSplitWhenUsingWalletOrCredits() (gas: 76592671)\n[PASS] testVrgdaInitialStepDecayFloorCeilingAndBulkPricing() (gas: 1299987)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 769.29ms (618.35ms CPU time)\n\nRan 20 tests for test/V33.t.sol:V33Test\n[PASS] testActionBeforeExpiryMovesBucketWithoutDoubleCount() (gas: 25983504)\n[PASS] testAdvanceIsConstantInExpiringFarms() (gas: 38430108)\n[PASS] testAgeCapsAtBoundaries() (gas: 204552)\n[PASS] testClaimDoesNotRecommitWhileBehind() (gas: 37239808)\n[PASS] testClaimRecommitsAndPackRecommits() (gas: 60787577)\n[PASS] testDistrictScoreAveragePerFarmAndTenPercentWalletCap() (gas: 4607489)\n[PASS] testHeartbeatCapExcessGoesToPoolAndBaseFeeIsAllRewards() (gas: 270973)\n[PASS] testIdleFarmLeavesDenominatorAfterTwelveEpochs() (gas: 23504929)\n[PASS] testLaunchTaxDepositIsAllPoolAndMarketOnly() (gas: 137567)\n[PASS] testMergeRemoved() (gas: 512630)\n[PASS] testPackLobbySellSplit88Team10Heartbeat2() (gas: 407960)\n[PASS] testPackSaleOpensSixtyMinutesAfterLaunch() (gas: 1264387)\n[PASS] testPaidXpCannotBypassAgeGates() (gas: 59083319)\n[PASS] testPaidXpCappedPerDayActivityUncapped() (gas: 13264967)\n[PASS] testPartialRoomIsClippedNotReverted() (gas: 2156541)\n[PASS] testRewardsEarnedBeforeExpiryAreNeverLost() (gas: 47725769)\n[PASS] testSingleWhaleDistrictCannotWinAlone() (gas: 4534340)\n[PASS] testSyncRecommitsFromNextEpoch() (gas: 33379218)\n[PASS] testTokenPacksAlsoWaitForOpening() (gas: 59864)\n[PASS] testTopSpenderTrackingIsExact() (gas: 5411751)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 780.11ms (1.34s CPU time)\n\nRan 6 tests for test/Market.t.sol:MarketTest\n[PASS] testBuyChargesExactlyOnePercentAllToRewards() (gas: 1730007)\n[PASS] testFuzzTotalFeeHardCap(uint96) (runs: 256, μ: 1806228, ~: 1809180)\nLogs:\n  Bound result 145652529753\n\n[PASS] testOnlyManagerCorrectPoolExactInputAndHookAddress() (gas: 111284)\n[PASS] testSingleDumpIncludesItselfAndFeeDecaysWithoutGriefReset() (gas: 17163513)\n[PASS] testTwapAveragesEthPriceAcrossUnequalPrices() (gas: 2330865)\n[PASS] testTwapWarmupAndFlashManipulationResistance() (gas: 1883323)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 833.98ms (817.06ms CPU time)\n\nRan 9 tests for test/AuditV318.t.sol:AuditV318Test\n[PASS] testAuditPriceLimitedBuyRevertsInsteadOfPayingTaxOnUnconsumedEth() (gas: 132927)\n[PASS] testBeforeSwapNamesThePriceLimitedBuyError() (gas: 63433)\n[PASS] testFullFillBuysPayEachStepExactly() (gas: 2527120)\n[PASS] testFullFillTenEthBuyPaysExactlyNinetyPercentInTheFirstStep() (gas: 413400)\n[PASS] testFuzzOnlyTheExtremeBoundBuysAndPaysTheFlooredTax(uint96,uint160,uint8) (runs: 256, μ: 1588550, ~: 1367460)\nLogs:\n  Bound result 21671\n  Bound result 17180514964\n  Bound result 0\n\n[PASS] testPriceLimitedBuyRefusedAfterLaunchWindowToo() (gas: 4642431)\n[PASS] testPriceLimitedSellStillFillsPartiallyAndIsChargedOnActualOutput() (gas: 2237288)\n[PASS] testPublicInterfaceUnchanged() (gas: 108830)\n[PASS] testSystemRewardBuyStillFills() (gas: 1992012)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 834.92ms (331.35ms CPU time)\n\nRan 5 tests for test/AuditV315.t.sol:AuditV315Test\n[PASS] testAttackerLaunchRecordNamesAnotherTokenAndIsRefused() (gas: 10743754)\n[PASS] testFakeMarketEchoingDeskTokenAndHashCannotBind() (gas: 6952035)\n[PASS] testFixtureDeskBoundAgainstItsTokenLaunchRecord() (gas: 58275)\n[PASS] testRealHookRecordedByTheLaunchFactoryBinds() (gas: 12111396)\n[PASS] testRecordWithOtherHookOrOtherPairCurrencyIsRefused() (gas: 6245556)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 964.33ms (23.33ms CPU time)\n\nRan 21 tests for test/SwarmDeskV37.t.sol:SwarmDeskV37Test\n[PASS] testBackupFailureUnknownFailureDeadlineAndPriceCap() (gas: 751317)\n[PASS] testBackupPullsExactPriceRecordsRequestAndRestrictsBodyAndCadence() (gas: 1207764)\n[PASS] testDeskSetHeartbeatBpsMovesFeeRouterShare() (gas: 945834)\n[PASS] testEmptyChainConstructorAndAuthenticatedBindingRejectSpoofs() (gas: 12683178)\n[PASS] testEventClampingAndFallbackWithoutAnswer() (gas: 1117363)\n[PASS] testExpiredOldSlotOldEpochAndUnexecutedAnswersNeverAct() (gas: 852773)\n[PASS] testFlatConstructorRejectsUnusedPackedBits() (gas: 7335783)\n[PASS] testForgedTamperedWrongSignerWrongDomainAndCallerRejected() (gas: 359833)\n[PASS] testFutureIssueWrongTypeMalformedLengthAndPriceNeverConsume() (gas: 327553)\n[PASS] testFuzzEveryParamHardBoundsAndTenPercentStep(uint8,uint248) (runs: 256, μ: 476143, ~: 477834)\nLogs:\n  Bound result 1\n\n[PASS] testNextSlotAcceptsSameQuestionAndChangedExecutionBytesReject() (gas: 1146136)\n[PASS] testNoAdminPathsAndEntireGraphUsesDesk() (gas: 428356)\n[PASS] testNoopRegulatorAcceptedAndParamsCooldownPreserved() (gas: 452656)\n[PASS] testRegulatorClampsParamsAnnouncesPhasesAndThirtyDayCaps() (gas: 1146623)\n[PASS] testRegulatorSkipsOutOfRangeKeysInsteadOfClampingToFortyFive() (gas: 501093)\n[PASS] testReplayDifferentSourceAndSecondAnswerSameSlotIgnored() (gas: 1068212)\n[PASS] testRobinhoodNativeClockCallbackWithin200k() (gas: 352907)\n[PASS] testScheduleDeliveryStoresUnder200kThenExecutesTwoPlans() (gas: 984580)\n[PASS] testSubmitRelayAcceptsAttestedAnswerFromAnyoneOnce() (gas: 1092075)\n[PASS] testSubmitRelayRejectsForgedWrongQuestionStaleAndMalformed() (gas: 1843104)\n[PASS] testWrongQuestionUnknownRequestWeakPanelAndWindowRejected() (gas: 364850)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 989.03ms (993.48ms CPU time)\n\nRan 6 tests for test/Regression.t.sol:RegressionTest\n[PASS] testCableRepairRestoresOnlyRemainingHalfEpoch() (gas: 11818095)\n[PASS] testEmptyEpochPreservesLastSettledRateButResetsScrapAllowance() (gas: 11008366)\n[PASS] testFuzzCableRepairBlendHandlesNonMonotonicRarityBonuses(uint16) (runs: 256, μ: 1374183, ~: 1374014)\nLogs:\n  Bound result 509\n\n[PASS] testRegisterOnlyAccountsDoNotAddSettlementWorkAndEmptyFarmCanRetire() (gas: 2037709)\n[PASS] testRepairAndPaidPackCannotRetroactivelyBoostEpoch() (gas: 9562743)\n[PASS] testUnlimitedFreshPacksCannotDrainPoolByScrapping() (gas: 9668475)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 1.05s (1.10s CPU time)\n\nRan 8 tests for test/V4Integration.t.sol:V4IntegrationTest\n[PASS] testRealV4BuyAndSingleSwapSellTaxConserveSettlement() (gas: 2269731)\n[PASS] testRealV4ManipulatedSpotCannotInstantlySetBuybackQuote() (gas: 1909871)\n[PASS] testRealV4SmallBuyPaysPositiveKeeperMargin() (gas: 2072687)\nLogs:\n  real V4 0.2ETH buy gas: 1933528\n  real V4 buy bounty wei: 48651375000000\n\n[PASS] testRealV4SystemBuyUsesTwapAndOnlySystemFunds() (gas: 2078498)\n[PASS] testRealV4SystemSalesUseDepthTwapNormalFeesAndConserveTokens() (gas: 2247043)\n[PASS] testSystemBuybackOffsetsRecordedSellImbalance() (gas: 2509612)\n[PASS] testTenEthPoolRewardBuyAtSpotTwapIncludesLpFee() (gas: 2151712)\n[PASS] testTenEthPoolSystemSellAtSpotTwapIncludesLpFee() (gas: 4120061)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 1.08s (22.73ms CPU time)\n\nRan 3 tests for test/Gas.t.sol:GasTest\n[PASS] testGasCommonActions() (gas: 10873117)\nLogs:\n  buy token pack: 925868\n  open one pack: 514873\n  equip: 966814\n  repair wallet: 614735\n  enhancement commit: 568464\n  expand: 390489\n  token pack wallet: 655187\n  withdraw: 255483\n  unequip: 407017\n\n[PASS] testGasFullFarmLongIdleBoundedChunks() (gas: 119295605)\nLogs:\n  settle full 24-item farm eight epochs after 40 idle: 12496054\n\n[PASS] testGasTypicalFarmSettlementHasNoBounty() (gas: 8944774)\nLogs:\n  settle typical three-item farm one epoch: 923830\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.10s (1.09s CPU time)\n\nRan 5 tests for test/AuditV314.t.sol:AuditV314Test\n[PASS] testDustAmountCannotReduceExecutedBatchAndEmptyQueueReverts() (gas: 1383695)\n[PASS] testLaterSameEpochCreditKeepsEarlierTaxVintage() (gas: 608585)\n[PASS] testLockInsertionWalkIsBoundedAndFailureIsAtomic() (gas: 30159768)\n[PASS] testOnlyFarmerCanRetireEvenAnEmptyFarm() (gas: 4306920)\n[PASS] testStaleSellAmountUsesCurrentDepthAndEnforcesCurrentMinimum() (gas: 1624852)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.28s (154.44ms CPU time)\n\nRan 13 tests for test/Events.t.sol:EventsTest\n[PASS] testCheapTariffAppliesCitywide() (gas: 6431880)\n[PASS] testColdPowerFireImmuneAndCleanPowerSurgeImmune() (gas: 7916395)\n[PASS] testFallbackAndExpiredSeedIndependentOfSwarmNumber() (gas: 1788804)\n[PASS] testFireNoCoolingZeroYieldColdPowerImmune() (gas: 6156432)\n[PASS] testGreenWaveRaisesDistrictMiningTenPercent() (gas: 6433957)\n[PASS] testLobbyOwnDistrictSplitDecayAndMinimumWeight() (gas: 1083530)\n[PASS] testOutageAndOffgridRoomMitigation() (gas: 7068792)\n[PASS] testPlansOnlyNextTwoOnceAndBoundedSeverity() (gas: 344926)\n[PASS] testRollingCapsAndInitialPositiveQuotaWithHostilePlans() (gas: 102269963)\n[PASS] testSurgeCanDestroyCommonButNeverLegendary() (gas: 6422908)\n[PASS] testSurgeDamagesExactlyOneItemAndCleanPowerImmune() (gas: 6305934)\n[PASS] testSurgeNeverDestroysLegendaryOrMythic() (gas: 9523164)\n[PASS] testTheftRouterDisabledAndRepairRestores() (gas: 6862770)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 1.23s (594.49ms CPU time)\n\nRan 7 tests for test/HeartbeatBpsV313.t.sol:HeartbeatBpsV313Test\n[PASS] testFuzzAnyShareConservesEveryWeiAndNeverMovesTeamOrPot(uint16,uint96) (runs: 256, μ: 1430241, ~: 1609838)\nLogs:\n  Bound result 203\n  Bound result 40888371348\n\n[PASS] testLaunchDefaultIsTwoPercentAndSplitUnchanged() (gas: 230935)\n[PASS] testLoweredShareBackToFloorAndFloorIsHard() (gas: 401104)\n[PASS] testMaximumShareWithPotEnabledIsClippedToWhatIsLeft() (gas: 1867739)\n[PASS] testOnlyTheSwarmWithinBoundsStepAndCooldownCanMoveTheShare() (gas: 341795)\n[PASS] testRaisedShareStillStopsAtTheOneEthCap() (gas: 480520)\n[PASS] testSwarmSet220CreditsTwoPointTwoPercentOfSurchargeAndTokens() (gas: 543701)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 1.56s (1.55s CPU time)\n\nRan 2 tests for test/ReservedEventsV35.t.sol:ReservedEventsV35Test\n[PASS] testFuzzReservedFestivalCannotExceedFifteenPercent(uint16) (runs: 256, μ: 4927537, ~: 4927534)\n[PASS] testReservedHeatwaveExtraCoolingWearAndBothProtections() (gas: 10178642)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.56s (1.64s CPU time)\n\nRan 9 tests for test/Epochs.t.sol:EpochsTest\n[PASS] testCannotAdvanceEarlyAndBountyOnce() (gas: 2513731)\n[PASS] testClaimsEveryEpochAndRedistributionIsNextEpoch() (gas: 12010062)\n[PASS] testGasAdvanceIndependentOfRoster() (gas: 895978527)\nLogs:\n  advance empty roster: 1284212\n  advance 1000 farms: 1473392\n\n[PASS] testNoCatchupEmissionDuringGap() (gas: 6270392)\n[PASS] testNoRetroactiveEquipmentAndBoundedBatches() (gas: 5790681)\n[PASS] testNoWhaleCapHashShares() (gas: 10182869)\n[PASS] testReferralOneLevelSetOnceNoSelf() (gas: 7531610)\n[PASS] testTaxCurveExactAndFloor() (gas: 34112)\n[PASS] testWithdrawFailureRollsBackAndReentrancyCannotClaimTwice() (gas: 7446317)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 8.38s (8.70s CPU time)\n\nRan 2 tests for test/Clock.t.sol:ClockTest\n[PASS] testLocalEvmFutureBlockAnd256BlockBoundary() (gas: 225376)\n[PASS] testRobinhoodUsesArbSysNotL1EstimateAndHandlesExpiry() (gas: 238560)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 15.77s (571.85µs CPU time)\n\nRan 6 tests for test/SeasonAudit.t.sol:SeasonAuditTest\n[PASS] testAuditThresholdStrictAndNoWhaleSoftCap() (gas: 40508248)\n[PASS] testLotteryEntitlementSurvivesFullInventory() (gas: 131721528)\n[PASS] testPackSupplyDropOnlyActiveFarmsAtDoublePace() (gas: 11743280)\n[PASS] testParameterChangesCannotChangeClosedEpochBetweenBatches() (gas: 12523805)\n[PASS] testSeasonCannotFinalizeEarlyAndExpiredLotteryMustRearm() (gas: 124179117)\n[PASS] testWeeklyThreeDistinctTicketWinnersFuturePackAndBestPrize() (gas: 124934770)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 15.77s (3.28s CPU time)\n\nRan 18 tests for test/EconomyV35.t.sol:EconomyV35Test\n[PASS] testAllEnhancementTableEndpointsAndGlobalBonusCap() (gas: 1477864)\n[PASS] testDurabilityBoundariesAndIdleNoWear() (gas: 38169181)\n[PASS] testEnhanceBurnFailureAndLevelGate() (gas: 1218579)\n[PASS] testEnhanceCapsNoticeUpwardOnlyAndThirtyDays() (gas: 355848)\n[PASS] testEnhanceCommitCannotPlaceScrapOrRetryAndLapsesAsWorstOutcome() (gas: 2423527)\n[PASS] testFeeSalesDepthSlippageCadenceAndNormalFeePot() (gas: 1737855)\n[PASS] testFreeAllowlistOnceWindowStarterScrapAndMetadata() (gas: 3102778)\n[PASS] testFreeRootRemainsFrozenAfterSevenDays() (gas: 43976)\n[PASS] testFreeRootWindowAndIndexLimit() (gas: 55991)\n[PASS] testFuzzPriceCurveDaysBounds(uint32,uint32) (runs: 256, μ: 88692, ~: 90188)\nLogs:\n  Bound result 2196\n\n[PASS] testLockBonusRedistributesWithinReservedEmission() (gas: 11683136)\n[PASS] testLockEscrowNoEarlyExitAndWalletCap() (gas: 5394589)\n[PASS] testQuoteScalesLastSettlementAndHasFloor() (gas: 4285279)\n[PASS] testRepairYieldQuoteAndAutoRepairCreditsOnly() (gas: 10812876)\n[PASS] testRoomsChargeYieldDaysAndRetainAgeGates() (gas: 2618884)\n[PASS] testSystemSellDustCannotOccupyCadenceAndCappedHeartbeatReturnsTokens() (gas: 1562949)\n[PASS] testTokenOnlyGiftSplitsNoEthPeg() (gas: 1738156)\n[PASS] testZapAtomicMinOutPauseAndRefund() (gas: 1441448)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 15.75s (544.39ms CPU time)\n\nRan 9 tests for test/LazyAccounting.t.sol:LazyAccountingTest\n[PASS] testAuditChargesTenPercentEvenAtHalfSeverityAndThresholdIsFrozen() (gas: 6161890)\n[PASS] testClaimCatchesUpWhilePacksPausedAndDoesNotEraseRemainingHistory() (gas: 25641763)\n[PASS] testExhaustedFarmCannotCollectRedistributionByRemainingIdle() (gas: 15191242)\n[PASS] testFuzzLazyEqualsIndependentEagerForRandomFarmsAndAllEvents(uint256) (runs: 256, μ: 45598615, ~: 45605410)\n[PASS] testGlobalAccumulatorAndWeightsAreSnapshottedBeforeMutations() (gas: 9311279)\n[PASS] testLateSeasonSettlementPaysMiningWithoutChangingFrozenWinners() (gas: 59490917)\n[PASS] testOneWeiMiningGreenCannotLockSettlementThroughEnvelopeRounding() (gas: 11069658)\n[PASS] testSparseMatureVintageConsumedBeforeRecentSlotAfterWrap() (gas: 43222421)\n[PASS] testStaleActionsRequireChunksAndNeverBlockGlobalAdvance() (gas: 40505475)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 16.45s (17.20s CPU time)\n\nRan 1 test for test/Invariants.t.sol:InvariantsTest\n[PASS]\nInvariantsTest invariants:\n[PASS] invariantAllowlistRootAndWalletLimit\n[PASS] invariantInventoryAndEthLiabilities\n[PASS] invariantLocksAndPotAlwaysBacked\n[PASS] invariantPriceAndParamsBounds\n[PASS] invariantReceiptsNeverForfeitOrFixMissingEntropy\n[PASS] invariantReservesBackedAndPendingCovered\n[PASS] invariantTokenConservationNoBurns\n InvariantsTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+-----------+-------+---------+----------╮\n| Contract    | Selector  | Calls | Reverts | Discards |\n+======================================================+\n| GameHandler | advance   | 562   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | buy       | 605   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | claim     | 593   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | equip     | 572   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | expand    | 622   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | freeClaim | 594   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | fundPot   | 601   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | lock      | 569   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | resolve   | 590   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | rollover  | 604   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | settle    | 599   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | tokenPack | 598   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | unlock    | 521   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | unplace   | 562   | 0       | 0        |\n╰-------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 10800\n  Bound result 13756\n  Bound result 7535\n  Bound result 315360000\n  Bound result 2159\n  Bound result 32000\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 56.17s (55.87s CPU time)\n\nRan 58 test suites in 56.19s (148.25s CPU time): 331 tests passed, 0 failed, 6 skipped (337 total tests)\n","passed":true},{"durationMs":422,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Billboards.bidBillboard(uint256,uint256,string,string)\",\"Billboards.settleBillboard(uint256,uint256)\",\"Billboards.withdrawRefund()\",\"Civic.announce(uint256,string)\",\"Civic.buyLot(uint256)\",\"Civic.claimWar(uint256)\",\"Civic.consumeCityEvent()\",\"Civic.enable(uint256)\",\"Civic.finishCollapse()\",\"Civic.finishWar()\",\"Civic.fundCollapse(uint256)\",\"Civic.fundWar(uint256)\",\"Civic.grantDistrictBoost(uint256,uint16,string)\",\"Civic.listLot(uint8,uint8,uint8)\",\"Civic.startCollapse(uint256)\",\"Civic.startWar(uint8,uint8)\",\"Economy.autoRepair(address,uint256,uint256[24])\",\"Economy.lock(uint256,uint256)\",\"Economy.unlock()\",\"EndowmentEscrow.forward(address,uint64,uint256,bytes,uint64,uint256,bytes)\",\"Enhancement.activateCap()\",\"Enhancement.announceCap(uint8,string)\",\"Enhancement.capture(uint256)\",\"Enhancement.commit(uint256,uint256,bool)\",\"Enhancement.resolve(uint256)\",\"FarmCore.activity(address,uint256,uint256,uint256)\",\"FarmCore.autoRepair(address,uint256)\",\"FarmCore.buyRoom(uint256,bool)\",\"FarmCore.buyTokenPack(bool)\",\"FarmCore.civicPurchase(address,uint256)\",\"FarmCore.claimDrop()\",\"FarmCore.expand(bool)\",\"FarmCore.grantDrop(address,bytes32)\",\"FarmCore.lobby(uint256,bool)\",\"FarmCore.paidPackBought(address,uint256,uint256)\",\"FarmCore.place(uint256,uint256,uint256)\",\"FarmCore.prepareEnhancement(address,uint256,uint256,bool)\",\"FarmCore.process(address,uint256)\",\"FarmCore.register(address)\",\"FarmCore.repair(uint256,bool)\",\"FarmCore.repairCable(bool)\",\"FarmCore.retire(address)\",\"FarmCore.scrap(uint256,uint256)\",\"FarmCore.setAutoRepair(bool,uint16)\",\"FarmCore.setReferrer(address)\",\"FarmCore.sync()\",\"FarmCore.syncFor(address)\",\"FarmCore.unplace(uint256,uint256)\",\"FarmEngine.process(address,uint256,(uint256[24],uint8[24],uint16[24],bool,uint64,uint16))\",\"FarmItems.destroy(uint256)\",\"FarmItems.equip(address,uint256)\",\"FarmItems.expand(address)\",\"FarmItems.maintain(uint256,uint16,uint8)\",\"FarmItems.mint(address,uint8,uint8,bool)\",\"FarmItems.mintDrop(address,bytes32)\",\"FarmItems.safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\",\"FarmItems.safeTransferFrom(address,address,uint256,uint256,bytes)\",\"FarmItems.unequip(address,uint256)\",\"FarmRewards.advanceEpoch()\",\"FarmRewards.award(address,uint256)\",\"FarmRewards.beginMining(address,uint256)\",\"FarmRewards.claim(uint256)\",\"FarmRewards.flagResync(address)\",\"FarmRewards.initialize(address)\",\"FarmRewards.recordSales(uint256)\",\"FarmRewards.releasePrize(uint256)\",\"FarmRewards.scrap(address,uint256,uint256)\",\"FarmRewards.setReferrer(address,address)\",\"FarmRewards.setWeight(address,uint256)\",\"FarmRewards.settle(address,uint256)\",\"FarmRewards.spend(address,uint256)\",\"FarmRewards.spendTo(address,uint256,address)\",\"FeeRouter.depositBaseFee()\",\"FeeRouter.depositLaunchTax()\",\"FeeRouter.depositLobby()\",\"FeeRouter.depositPack()\",\"FeeRouter.depositSellTax()\",\"FeeRouter.executeBuys(uint256,uint256)\",\"FeeRouter.executePotBuys(uint256,uint256)\",\"FeeRouter.executeSells(uint256,uint256)\",\"FeeRouter.payBounty(address)\",\"FeeRouter.payWork(address,uint8,uint256,uint256)\",\"FeeRouter.receive()\",\"FeeRouter.routeTokens(uint256)\",\"FeeRouter.withdraw()\",\"FeeRouter.zapBuy(uint256,address)\",\"GameRegistry.register(uint256,uint64,uint256,bytes)\",\"GridOperator.lobbyETH()\",\"GridOperator.resolve(uint256)\",\"GridOperator.resolveFor(uint256,address)\",\"GridOperator.shift(uint256)\",\"GridOperator.submitPlan(uint256,uint8,uint16,bytes32,string)\",\"GridOperator.tokenLobby(address,uint256)\",\"MarketFactory.deploy((address,address,int24,address,address,bytes32),bytes32)\",\"PackSale.buyPackFor(address)\",\"PackSale.buyPacksFor(address,uint256,uint256)\",\"PackSale.buyWithETH(address,uint256,uint256,uint256)\",\"PackSale.captureEntropy(uint256)\",\"PackSale.openPack(uint256)\",\"PackSale.pause(uint256)\",\"PackSale.rearm(uint256)\",\"PackSale.resolve(uint256,uint256)\",\"PackSale.rewardPack(address)\",\"PackSale.tokenPack(address)\",\"PackSale.unpause()\",\"Params.set(uint8,uint256,string)\",\"RewardPool.donate(uint256)\",\"RewardPool.fundEndowment()\",\"RewardPool.pay(address,uint256)\",\"RewardPool.recordInflow(uint256)\",\"RewardPool.recycle(uint256)\",\"RewardPool.reserve(uint256)\",\"Season.addPrize(uint256,uint256)\",\"Season.claimBest(uint256)\",\"Season.claimDistrict(uint256)\",\"Season.claimLottery(uint256)\",\"Season.complete(address,uint256)\",\"Season.depositPot(uint256)\",\"Season.finalize(uint256)\",\"Season.prepare(uint256,uint256)\",\"Season.rearm(uint256)\",\"Season.recordActivity(address,uint256,uint256,uint256)\",\"Season.recordRepair(address,uint256,uint256)\",\"Season.recordSpend(address,uint256,bool)\",\"Season.rollover(uint256)\",\"StandardAdapter.buy(uint256,address)\",\"StandardAdapter.unlockCallback(bytes)\",\"StandardMarket.afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\",\"StandardMarket.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"StandardMarket.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"StandardMarket.bindFeeRouter(address,uint64,uint256)\",\"StandardMarket.buy(uint256,address)\",\"StandardMarket.flushFees()\",\"StandardMarket.receive()\",\"StandardMarket.sell(uint256,uint256,address)\",\"StandardMarket.unlockCallback(bytes)\",\"StarterClaim.captureEntropy(uint256)\",\"StarterClaim.claim(uint256,bytes32[])\",\"StarterClaim.claimFree(uint256,bytes32[])\",\"StarterClaim.rearm(uint256)\",\"StarterClaim.resolve(uint256)\",\"SwarmDesk.askBackup(uint8,bytes)\",\"SwarmDesk.bind(address,bytes,bytes,uint64,uint8,uint64,uint8,uint64)\",\"SwarmDesk.clearExpired(bytes32)\",\"SwarmDesk.execute(uint8,bytes)\",\"SwarmDesk.onOracleFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"SwarmDesk.onOracleResult(bytes32,(bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"SwarmDesk.submit((bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"V4Market.afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\",\"V4Market.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"V4Market.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"V4Market.bindFeeRouter(address,uint64,uint256)\",\"V4Market.buy(uint256,address)\",\"V4Market.flushFees()\",\"V4Market.receive()\",\"V4Market.sell(uint256,uint256,address)\",\"V4Market.unlockCallback(bytes)\"],\"files\":{\".gitignore\":8,\"ADAPTATION.md\":131,\"README.md\":82,\"artifacts/build-lint-v3.txt\":2369,\"artifacts/build-v3.txt\":3,\"artifacts/economic-targets-v3.json\":9,\"artifacts/fmt-v3.txt\":0,\"artifacts/foundry-v3.txt\":845,\"artifacts/funded-sensitivity/simulation-v3.json\":13928,\"artifacts/funded-sensitivity/simulation-v3.md\":51,\"artifacts/funding-sensitivity-v3.json\":342,\"artifacts/gas-actions-v3.txt\":15,\"artifacts/policy-sensitivity-v3.json\":554,\"artifacts/python-tests-v3.txt\":18,\"artifacts/regulator-example.json\":59,\"artifacts/robinhood-fork-v3.txt\":7,\"artifacts/runtime-sizes-v3.json\":23,\"artifacts/simulation-v3.json\":13928,\"artifacts/simulation-v3.md\":51,\"artifacts/tuned-funded/simulation-v3.json\":13928,\"artifacts/tuned-funded/simulation-v3.md\":51,\"artifacts/v2/README.md\":3,\"artifacts/v2/foundry-tests.txt\":178,\"artifacts/v2/offline-tests.txt\":187,\"artifacts/v2/offline-verification.json\":21,\"artifacts/v2/previous-README.md\":108,\"artifacts/v2/previous-design.md\":120,\"artifacts/v2/previous-report.md\":75,\"artifacts/v2/previous-security-review.md\":29,\"artifacts/v2/previous-simulation-assumptions.md\":52,\"artifacts/v2/robinhood-fork.txt\":7,\"artifacts/v2/rpc-probe.json\":16,\"artifacts/v2/runtime-sizes.json\":21,\"artifacts/v2/simulation.md\":95,\"artifacts/v2/verification.json\":110,\"artifacts/v31/allocation-summary.md\":6,\"artifacts/v31/baseline-budget.md\":14,\"artifacts/v31/boundary-checks.json\":10880,\"artifacts/v31/candidate-stress/simulation.json\":32636,\"artifacts/v31/evidence/factory-prediction.json\":14,\"artifacts/v31/evidence/launch-and-cost-facts.json\":130,\"artifacts/v31/evidence/standalone-hook-build.json\":38,\"artifacts/v31/final/comparison.md\":50,\"artifacts/v31/funded/comparison.md\":52,\"artifacts/v31/funded/replay.json\":290,\"artifacts/v31/funding-comparison.md\":8,\"artifacts/v31/regulator-example.json\":73,\"artifacts/v31/stress-comparison.md\":20,\"artifacts/v31/summary.json\":13,\"artifacts/v31/validation.json\":250,\"artifacts/v310/forge-test-launch.txt\":496,\"artifacts/v310/forge-test-repo-changed-suites.txt\":115,\"artifacts/v310/forge-test-repo-full-before-new-tests.txt\":437,\"artifacts/v310/pins-check.txt\":2,\"artifacts/v311/rehearsal.log\":377,\"artifacts/v312/forge-fmt.txt\":1,\"artifacts/v312/forge-test-launch.txt\":381,\"artifacts/v312/forge-test-repo.txt\":384,\"artifacts/v312/launch-creation-hashes.txt\":5,\"artifacts/v312/node-tests.txt\":10,\"artifacts/v312/pins-check.txt\":2,\"artifacts/v312/python-tests.txt\":3,\"artifacts/v312/rehearsal.log\":368,\"artifacts/v313/forge-fmt.txt\":0,\"artifacts/v313/forge-test.txt\":468,\"artifacts/v313/launch-creation-hashes.txt\":6,\"artifacts/v313/module-pins.txt\":15,\"artifacts/v313/pins-check.txt\":2,\"artifacts/v314/authority-check.txt\":1,\"artifacts/v314/consistency-check.txt\":1,\"artifacts/v314/creation-hashes.json\":21,\"artifacts/v314/deploy-gate.txt\":1,\"artifacts/v314/flatten-build.txt\":871,\"artifacts/v314/flatten-check.txt\":2,\"artifacts/v314/forge-build.txt\":4752,\"artifacts/v314/forge-fmt.txt\":0,\"artifacts/v314/forge-test.txt\":487,\"artifacts/v314/launch-creation-hashes.txt\":20,\"artifacts/v314/module-pins-check.txt\":1,\"artifacts/v314/node-tests.txt\":22,\"artifacts/v314/python-tests.txt\":39,\"artifacts/v314/rehearsal-build.log\":4895,\"artifacts/v314/rehearsal.log\":352,\"artifacts/v314/runtime-sizes.json\":21,\"artifacts/v314/swarm-pins-check.txt\":1,\"artifacts/v315/creation-hashes.json\":21,\"artifacts/v315/deploy-gate.txt\":1,\"artifacts/v315/forge-build.txt\":1062,\"artifacts/v315/forge-fmt.txt\":0,\"artifacts/v315/forge-test.txt\":412,\"artifacts/v315/launch-creation-hashes.txt\":20,\"artifacts/v315/module-pins-check.txt\":1,\"artifacts/v315/node-tests.txt\":22,\"artifacts/v315/python-tests.txt\":39,\"artifacts/v315/rehearsal-build.log\":4921,\"artifacts/v315/rehearsal.log\":387,\"artifacts/v315/runtime-sizes.json\":21,\"artifacts/v315/swarm-pins-check.txt\":1,\"artifacts/v316/creation-hashes.json\":21,\"artifacts/v316/deploy-gate.txt\":1,\"artifacts/v316/forge-build.txt\":4736,\"artifacts/v316/forge-fmt.txt\":0,\"artifacts/v316/forge-test.txt\":505,\"artifacts/v316/launch-creation-hashes.txt\":20,\"artifacts/v316/module-pins-check.txt\":1,\"artifacts/v316/node-tests.txt\":7,\"artifacts/v316/python-tests.txt\":3,\"artifacts/v316/rehearsal-build.log\":4921,\"artifacts/v316/rehearsal.log\":392,\"artifacts/v316/runtime-sizes.json\":21,\"artifacts/v316/swarm-pins-check.txt\":1,\"artifacts/v317/creation-hashes.json\":21,\"artifacts/v317/deploy-gate.txt\":1,\"artifacts/v317/forge-fmt.txt\":0,\"artifacts/v317/forge-test.txt\":442,\"artifacts/v317/launch-creation-hashes.txt\":20,\"artifacts/v317/module-pins-check.txt\":1,\"artifacts/v317/node-tests.txt\":14,\"artifacts/v317/python-tests.txt\":5,\"artifacts/v317/rehearsal-build.log\":4959,\"artifacts/v317/rehearsal.log\":392,\"artifacts/v317/runtime-sizes.json\":21,\"artifacts/v317/swarm-pins-check.txt\":1,\"artifacts/v318/creation-hashes.json\":21,\"artifacts/v318/deploy-gate.txt\":1,\"artifacts/v318/forge-fmt.txt\":0,\"artifacts/v318/forge-test.txt\":487,\"artifacts/v318/launch-creation-hashes.txt\":20,\"artifacts/v318/module-pins-check.txt\":1,\"artifacts/v318/node-tests.txt\":24,\"artifacts/v318/rehearsal-build.log\":4973,\"artifacts/v318/rehearsal.log\":392,\"artifacts/v318/runtime-sizes.json\":21,\"artifacts/v318/swarm-pins-check.txt\":1,\"artifacts/v32/contract-sizes.json\":54,\"artifacts/v32/forge-build.log\":2734,\"artifacts/v32/forge-fmt.log\":0,\"artifacts/v32/forge-test.log\":310,\"artifacts/v32/model-checks.log\":5,\"artifacts/v32/module-pins.log\":1,\"artifacts/v32/python-tests.log\":25,\"artifacts/v32/regulator-example.json\":73,\"artifacts/v32/simulation-checks.json\":11,\"artifacts/v32/simulation-checks.log\":11,\"artifacts/v32/validation.json\":61,\"artifacts/v32/verified-baseline/comparison.md\":8,\"artifacts/v32/verified-baseline/simulation.json\":22622,\"artifacts/v32/verified-sensitivities/comparison.md\":68,\"artifacts/v33/simulation.json\":116,\"artifacts/v34/build.txt\":2931,\"artifacts/v34/format.txt\":0,\"artifacts/v34/pins.txt\":1,\"artifacts/v34/python-tests.txt\":5,\"artifacts/v34/reveal-test.txt\":1,\"artifacts/v34/simulation.json\":91766,\"artifacts/v34/simulation.md\":43,\"artifacts/v34/tests.txt\":306,\"artifacts/v35/simulation.json\":22605,\"artifacts/v35/simulation.md\":104,\"artifacts/v35/verification.json\":132,\"artifacts/v36/simulation-phases.json\":179,\"artifacts/v36/simulation-phases.md\":13,\"artifacts/v37/byte-sizes.json\":131,\"artifacts/v37/verification.json\":28,\"artifacts/v39/forge-build-repo.txt\":3,\"artifacts/v39/forge-fmt.txt\":1,\"artifacts/v39/forge-test-launch.txt\":8,\"artifacts/v39/forge-test-repo.txt\":390,\"artifacts/v39/pins-check.txt\":2,\"artifacts/v39/pins.json\":68,\"artifacts/v39/runtime-sizes.json\":197,\"artifacts/v39/simulation.json\":381,\"artifacts/v39/simulation.md\":29,\"artifacts/verification-v3.json\":67,\"docs/accepted-v314.md\":10,\"docs/accepted-v315.md\":22,\"docs/accepted-v316.md\":24,\"docs/accepted-v317.md\":46,\"docs/accepted-v318.md\":56,\"docs/api-v35.md\":41,\"docs/dependency-provenance.md\":9,\"docs/design.md\":69,\"docs/entropy-v34.md\":31,\"docs/launch-v31.md\":121,\"docs/launch-v314-plan.json\":196,\"docs/launch-v34.md\":44,\"docs/launch-v35.md\":40,\"docs/lazy-accounting-v32.md\":48,\"docs/m2-trust-assumption.md\":121,\"docs/oracle-v37/event.json\":1,\"docs/oracle-v37/oracle-config.json\":21,\"docs/oracle-v37/regulator.json\":1,\"docs/params-keys-v313.md\":113,\"docs/report-v3.md\":143,\"docs/report-v31.md\":128,\"docs/report-v32.md\":138,\"docs/report-v33.md\":107,\"docs/report-v34.md\":58,\"docs/report-v36.md\":89,\"docs/report-v38.md\":83,\"docs/research/b94e6839-platform-report.md\":238,\"docs/review-v31.md\":77,\"docs/review-v32.md\":32,\"docs/review-v33.md\":19,\"docs/review-v34.md\":30,\"docs/review-v35-independent.md\":69,\"docs/review-v37-independent.md\":44,\"docs/review-v39-independent.md\":105,\"docs/security-review.md\":29,\"docs/simulation-assumptions.md\":43,\"docs/simulation-v3-historical.md\":44,\"docs/simulation-v34.md\":34,\"foundry.toml\":21,\"keeper/README.md\":120,\"keeper/blackout-keeper.service\":23,\"keeper/keeper.env.example\":18,\"keeper/keeper.mjs\":578,\"keeper/lib/abi.mjs\":95,\"keeper/lib/eth.mjs\":186,\"keeper/lib/oracle.mjs\":57,\"keeper/wiring.example.json\":17,\"launch-v31.md\":3,\"launch-v36.md\":34,\"launch-v37.md\":144,\"launch-v38.md\":57,\"launch-v39.md\":255,\"launch.json\":62,\"launch/V4Market.sol\":1894,\"operations/dormant-v35.md\":17,\"regulator.md\":60,\"report.md\":537,\"script/Deploy.s.sol\":252,\"script/DeployMarket.s.sol\":15,\"script/PredictGame.s.sol\":49,\"script/SwarmArgs.sol\":38,\"sim/blackout_sim_v2.py\":509,\"sim/blackout_sim_v3.py\":338,\"sim/blackout_sim_v31.py\":24,\"sim/blackout_sim_v32.py\":380,\"sim/blackout_sim_v33.py\":395,\"sim/blackout_sim_v34.py\":444,\"sim/candidate_stress_v31.py\":21,\"sim/heartbeat_boundaries_v31.py\":25,\"sim/heartbeat_sweep_v31.py\":46,\"sim/policy_sensitivity_v3.py\":19,\"sim/run_v32.py\":34,\"sim/run_v33.py\":58,\"sim/run_v34.py\":54,\"sim/run_v35.py\":273,\"sim/run_v36.py\":83,\"sim/run_v39.py\":153,\"sim/tune_v3.py\":16,\"src/Billboards.sol\":135,\"src/Civic.sol\":302,\"src/Economy.sol\":222,\"src/EndowmentEscrow.sol\":111,\"src/Enhancement.sol\":164,\"src/FarmCore.sol\":611,\"src/FarmEngine.sol\":299,\"src/FarmItems.sol\":165,\"src/FarmRewards.sol\":607,\"src/FeeRouter.sol\":313,\"src/GameRegistry.sol\":101,\"src/GridOperator.sol\":276,\"src/MarketFactory.sol\":61,\"src/PackSale.sol\":293,\"src/Params.sol\":181,\"src/RewardPool.sol\":113,\"src/Season.sol\":368,\"src/StandardAdapter.sol\":77,\"src/StandardMarket.sol\":22,\"src/StarterClaim.sol\":149,\"src/SwarmDesk.sol\":548,\"src/V4Market.sol\":565,\"src/interfaces/IGame.sol\":53,\"src/interfaces/IGameRegistry.sol\":15,\"src/interfaces/ILaunchHook.sol\":7,\"src/interfaces/IV4.sol\":26,\"src/interfaces/Interfaces.sol\":20,\"src/lib/ChainClock.sol\":22,\"src/lib/EconomyMath.sol\":48,\"src/lib/Errors.sol\":13,\"src/lib/GameModule.sol\":17,\"src/lib/ItemMath.sol\":31,\"src/lib/ItemMetadata.sol\":79,\"src/lib/ModuleCode.sol\":49,\"src/lib/Robinhood.sol\":15,\"src/lib/SwarmCode.sol\":18,\"src/oracle/OracleAttestation.sol\":221,\"src/oracle/SignatureCheckerCompat.sol\":14,\"test/AuditV314.t.sol\":116,\"test/AuditV315.t.sol\":199,\"test/AuditV317.t.sol\":359,\"test/AuditV318.t.sol\":319,\"test/AutoRepairReviewV35.t.sol\":39,\"test/Base.t.sol\":310,\"test/Bounties.t.sol\":290,\"test/CivicV35.t.sol\":224,\"test/Clock.t.sol\":54,\"test/DeployGateV314.t.sol\":94,\"test/Deployment.t.sol\":94,\"test/EconomyV35.t.sol\":398,\"test/Endowment.t.sol\":123,\"test/EndowmentEscrowV38.t.sol\":200,\"test/EndowmentGame.t.sol\":51,\"test/Epochs.t.sol\":177,\"test/Events.t.sol\":252,\"test/Factory.t.sol\":31,\"test/FarmDailyBasisV317.t.sol\":146,\"test/FeesParams.t.sol\":135,\"test/ForeignTokenTwin.t.sol\":288,\"test/Gas.t.sol\":110,\"test/GridV35.t.sol\":66,\"test/HeartbeatBpsV313.t.sol\":149,\"test/HookBinding.t.sol\":113,\"test/Invariants.t.sol\":211,\"test/Items.t.sol\":246,\"test/JobALaunch.t.sol\":154,\"test/KeeperProfit.t.sol\":95,\"test/LazyAccounting.t.sol\":447,\"test/Market.t.sol\":121,\"test/OracleConformanceV37.t.sol\":105,\"test/PackMythicTiming.t.sol\":88,\"test/Packs.t.sol\":167,\"test/Pause.t.sol\":76,\"test/PhasedReleaseV36.t.sol\":165,\"test/PotV35.t.sol\":106,\"test/PredictionV34.t.sol\":46,\"test/Registry.t.sol\":140,\"test/Regression.t.sol\":156,\"test/ReservedEventsV35.t.sol\":41,\"test/ReviewV34.t.sol\":145,\"test/SeasonAudit.t.sol\":204,\"test/StandardAdapter.t.sol\":81,\"test/StandardMarket.t.sol\":63,\"test/StandardV4Integration.t.sol\":128,\"test/SwarmDeskV37.t.sol\":705,\"test/TwinCaptureV312.t.sol\":255,\"test/V310.t.sol\":79,\"test/V33.t.sol\":561,\"test/V34.t.sol\":315,\"test/V39.t.sol\":213,\"test/V4Integration.t.sol\":229,\"test/WarReviewV35.t.sol\":69,\"test/YieldFloorReviewV35.t.sol\":31,\"test/deploy-gate-v314.test.mjs\":42,\"test/fixtures/keeper-v39-vectors.json\":56,\"test/fixtures/oracle-hash-vectors.json\":102,\"test/fork/RehearsalV311.t.sol\":812,\"test/fork/RobinhoodFork.t.sol\":39,\"test/keeper-v39.test.mjs\":34,\"test/mocks/MockGameRegistry.sol\":52,\"test/mocks/MockMarket.sol\":74,\"test/mocks/MockOracleSigner.sol\":17,\"test/mocks/MockSwarmIntake.sol\":67,\"test/mocks/MockToken.sol\":38,\"test/mocks/MockV4Manager.sol\":118,\"test/oracle-v310.test.mjs\":22,\"test/oracle-v37.test.mjs\":42,\"test/python/test_entropy_bot.py\":31,\"test/python/test_merkle.py\":19,\"test/python/test_regulator.py\":30,\"test/python/test_v31.py\":38,\"test/python/test_v32.py\":58,\"test/python/test_v34.py\":33,\"test/python/test_v35.py\":71,\"test/reveal.test.mjs\":24,\"test/ui-v35.test.mjs\":27,\"tools/check_deploy_gate.mjs\":48,\"tools/check_v32_results.py\":52,\"tools/check_v37_authority.py\":20,\"tools/entropy_bot.py\":106,\"tools/freepack_merkle.py\":20,\"tools/make_oracle_bodies.mjs\":45,\"tools/oracle_question_hash.mjs\":80,\"tools/pin_module_code.py\":95,\"tools/pin_swarm_code.py\":48,\"tools/regulator.py\":81,\"tools/rehearse_v311.sh\":28,\"tools/report_v31.py\":55,\"tools/schedule_bodies.mjs\":16,\"tools/starter_merkle.py\":72,\"tools/swarm_constructor_args.mjs\":57,\"ui/app.js\":178,\"ui/index.html\":22,\"ui/reveal.js\":34,\"ui/style.css\":3},\"excluded\":[\"vendor/\",\"node_modules/\"],\"truncated\":true}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"ea2c8a27f90e1afa74f434e4b5ff8c4b198909dabb4fa24779a5bf781fc686a2","verifiedTreeHash":"937300a579db3cda509d22112eb6e54eb6c00675","verifierVersion":"0.1.0+67c588fa"}]}