{"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":"420b1475-e595-4ec0-bdfc-a91079209909","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"718baa8e335f61a1a0bad748212d5678fd1278b98329809056cb6e6a1f996813","dependsOn":["audit_imported_code"],"execution":{"mustProduce":["src/LaunchToken.sol"],"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":"cd13aeccbc9ce1d71b885ea92540f8f90d6579516a1a12f3802d3919733e5fe4","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":"58c09591e18bee68112ad0985d9cb8ae63db19be7469ab783f4e3daa148756ad","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":"6cce9d5add78ac0e6d0fc1024a150562c9a4c5b074843489499fb3b38d2a07fb","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"9897597976b0e72440db7ca402d225aea20f3d37205ba53e7df2400ff80f29cc","skillId":"audit-imported-code","tools":[]},"key":"audit_imported_code","kind":"code","role":"review","skillHash":"9897597976b0e72440db7ca402d225aea20f3d37205ba53e7df2400ff80f29cc","skillId":"audit-imported-code","state":"accepted"},{"acceptedSubmissionHash":null,"dependsOn":["adapt_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"waiting"},{"acceptedSubmissionHash":"6c1fcd9c940cd596cea2cc465f8ab176b0b5fbd566e902cb622225806ad7bb11","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":"14fd35b55427737b9bd2bc11a591c0e0b0ae29f53f494178dfe9876f6f0dc57a","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":null,"dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"failed"},{"acceptedSubmissionHash":"f7bc5a9c7ffe66ead6e1ae5ae3f41037663a2f2514b7fd82c8d6b016e371e592","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 v3.18 L2 on Robinhood Chain (4663). NO SOURCE CHANGES. L1 is deployed (launch 1628): SwarmDesk 0x5cb0686a4475d1f8a6c6e5240579080a4a05b609, EndowmentEscrow 0x11947494c0ba91508eb7409648193818c36521fb.\nSource: commit 86e71d47b12094dc6a37c6a05cd4f84f2f970b78 of identity-md-launches/launch-1544-blackout-swarmdesk-bootstrap-robinhood. Build with the unchanged repo foundry.toml: solc 0.8.26, optimizer 200, cancun, viaIR false, bytecode_hash none.\nDeploy the platform token plus V4Market hook using onchain univ4_hook, pairWith eth, economics poolBps 7000 and remainderTo 0x11947494c0ba91508eb7409648193818c36521fb (the deployed L1 EndowmentEscrow). Platform pool fee 12500, tick spacing 60. Paying wallet 0x6d51cBE774aeAe4dd40bCA2560E9bc2695A0d007 receives the platform 1% via LaunchFactory.claimFees; the platform keeps 0.25%. The hook adds its 1% rewards share after the stepped launch tax and its existing sell surcharge. Omit owner and initialMarketCapWei. Return token, hook, launch number and pool key.\nGAME_CONFIG_HASH: 0x11ed7438974e96ecc962201e9c46422c7bf239d725876863fa25a56c734b20d3.\nExact ordered constructor words and expected creation hash:\n[0] V4Market [\"$poolManager\",\"$token\",\"12500\",\"60\",\"$factory\",\"0x5cb0686a4475d1f8a6c6e5240579080a4a05b609\",\"0x11ed7438974e96ecc962201e9c46422c7bf239d725876863fa25a56c734b20d3\"]\nCreation hash: 0x8d6e02398e351aa4c28486a92d7ec60baf7edc67ccaaa88eed4bd61e9b9092a4\nNo literal IMD protocol addresses may appear as constructor words. Protocol endpoints are compiled in; allowed platform placeholders stay as shown.\nAccepted findings (low/info only, full text in docs/accepted-v318.md; do not change source for them):\n- Exact-input swaps only; v3.18 buys must carry the extreme sqrtPriceLimitX96 4295128740 (PriceLimitedBuy otherwise) and a partial fill reverts (PartialFill), so tax is never paid on unconsumed ETH; routers protect buyers with a minimum output.\n- a3749636 low, manager float: beforeSwap takes the buy tax from the PoolManager before the swapper settles; the live Robinhood PoolManager holds about 24,500 ETH. Remaining a3749636 info items accepted.\n- RewardPool shortfall: repair with a plain token transfer.\n- spot() bounds: zero, underflowed or above-1e40 prices revert.\n- Fixed oracle signer/endpoints: compiled in, no owner rotation.\n- Answers between job A and job B: stored after L3, executed only after all L4 modules are registered; stream-0 answers before role 1 revert NotConfigured and are re-presented later.\n- Future-block randomness: native L2 block entropy, not VRF; enhancement attempts lapse to their worst outcome; grid events re-arm.\n- Reserved Params keys: no gameplay effect.\n- M-2 matching twin and binder liveness: only the pinned binder 0x6d51…d007 can bind, once; it cannot bypass any proof.\n- GameRegistry.register prefill by a byte-identical copy: keeper registers every role immediately and verifies module(role).\n- Season.rollover before finalize: keeper finalizes, then rolls over weekly.\n- FeeRouter.executeSells sweep rollback: repeats on the next success.\n- FarmRewards same-epoch vintage back-dating: at most about 54 bps, self-triggered.\n- Deploy-gate tool takes only the JSON plan.\n- Civic.claimWar rounding dust stays in the game.\n- No max-cost bound on openPack/buyTokenPack.\n- Unused minter/caller permissions incl. Season.recordSpend admitting GridOperator; dead fields; stale FarmRewards budget comment (code reserves 159% against at most 157.5%).\n- PackSale.buyPacksFor gifting: value only flows in.\n- One-shot escrow: forward runs once after the whole remainder has landed.\n- Economy._insert 33-tie lock griefing: no funds at risk.\n- Festival severity band always +15%.\n- 9cab6f32 low: PackSale.resolve sets Mythic eligibility at resolve time (0.3% rolls may be deferred to level 10); no funds move.\n- 9cab6f32 low: SwarmDesk.execute is permissionless; an early call inside the Params cooldown drops that week's single bounded step; the keeper executes after cooldown.\n- askBackup: anyone may spend the Desk's donated IMD once per slot, bounded by the 0.5 IMD cap.\nProject: https://playblackout.xyz\n\nToken name: BLACKOUT\nToken symbol: BLACKOUT","parentJobId":null,"planHash":"7e53d84dcc1b108a474f7afd1211156e8b618153086b0d0709cd7a019df25775","previousHash":"dc3d473cdd8ffdfca644c68b47537bbe33291464a842e39c2082db186a2a998f","projectId":"420b1475-e595-4ec0-bdfc-a91079209909","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1695-blackout"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51325","feedbackHash":"14c618b96b69dce53ac16986e45831b87ea637329ff960de03889a16dd4bfb6a","nodeKey":"write_foundry_tests","submissionHash":"f7bc5a9c7ffe66ead6e1ae5ae3f41037663a2f2514b7fd82c8d6b016e371e592","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"54fa8feefa1d100da9a30f310c94ae1fd127d45059b8204b9e99519da231e753","state":"blocked","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"5739ce0d803a43cd","findings":[],"hash":"14fd35b55427737b9bd2bc11a591c0e0b0ae29f53f494178dfe9876f6f0dc57a","nodeId":"7a0a2a74-ddaa-470a-8595-b11800dd81f6","outcome":"completed","summary":"The review is complete. The findings file is written at the repository root, and no source or configuration file was touched.\n\n**Outcome: no new defects in the permission model.** The findings list is empty. The coverage record answers all 160 listed entry points plus three invariant rows, every one as `holds`, none unreached.\n\n**What I covered in depth (the assigned L2 deliverable):**\n- V4Market: every callback is manager-only against the exact pool id, `afterInitialize` additionally requires the LaunchFactory sender and runs once, `buy` and `sell` are callable only by the bound FeeRouter with the sell recipient pinned to it, `receive` admits only PoolManager, and `unlockCallback` requires both the manager and an active buy or sell flag. `bindFeeRouter` is permissionless but proves the Desk-bound canonical registry, factory CREATE2 initcode, config hash, Params-to-Desk link, market identity and role-6 enrollment, and cannot rebind. `flushFees` can only forward to that proven router.\n- Buy and sell symmetry: the before-swap tax and the after-swap `PartialFill` check derive from the same same-block tax rate, the sell charge is applied to the raw pool output as the unspecified-currency delta, and the hook's own system swaps account for the suppressed callbacks explicitly. The system sell paying only the 1% base is the documented v3.5 design, not a gap.\n- LaunchToken is unmodified OpenZeppelin ERC20 with no privileged function. Constructor words contain no IMD protocol address.\n\n**Wider inventory (Trail of Bits style):** every state-changing function across the thirteen game modules, FeeRouter, RewardPool, Params, GameRegistry, SwarmDesk and EndowmentEscrow was classified by caller and guard. The only privileged role is the SwarmDesk acting as `swarmWallet`, whose powers are all bounded on-chain and originate from attester-signed answers. Each permissionless keeper path has a caller-bounded minimum output tied to TWAP, a size cap, or both, so no keeper can extract value through the function it is allowed to call.\n\n**Static-analysis leads checked and dismissed:** the two `arbitrary-send-eth` lines (destination is the proven router), the Civic `warTop` uninitialized-state line (empty slots read as zero contribution, which is the intended replacement rule), and the aderyn `unprotected-initializer` on MarketFactory (no initializer exists; it is a deterministic CREATE2 helper).\n\n**Not done:** no scratch tests were written, since no finding reached a severity that requires a proof. Numerical, oracle and settlement-math correctness were outside my three guides and are left to the other specialists.","treeHash":null,"usage":{"cachedInputTokens":1685272,"inputTokens":386,"model":"claude-fable-5-1","outputTokens":36238,"runtime":"claude","turns":28,"wallClockMs":563091}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"85f29f4c09dba910","findings":[],"hash":"58c09591e18bee68112ad0985d9cb8ae63db19be7469ab783f4e3daa148756ad","nodeId":"d324eef2-8d5c-45fd-91fb-3eb79909d798","outcome":"completed","summary":"The review is complete and the findings file is written.\n\n**Outcome:** no defect with a concrete failing input was found in the assigned area. The file at `.imd-findings.json` holds an empty findings list plus a coverage record for all 160 listed entry points and four invariants.\n\n**What I traced and confirmed (69 rows marked `holds`)**\n\n- **V4Market and StandardMarket:** every hook callback, the one-shot `bindFeeRouter` proof chain, `buy`, `sell`, `flushFees`, and `receive`. I read the vendored v4-core PoolManager and Hooks code to confirm the before-swap specified delta and after-swap unspecified delta net the hook's `take` calls to zero. A scratch test against the real PoolManager checked the 30-minute step boundary, 1-wei and 11-wei buys in the tax window, a full bind and flush, and a system buy through FeeRouter. ETH balance equalled the three held streams throughout.\n- **FeeRouter, RewardPool, EndowmentEscrow, GameRegistry, LaunchToken, Params.set, Season.depositPot:** access checks, balance-delta accounting, and state-before-external-call ordering all hold. The FeeRouter token split arithmetic cannot underflow.\n- **Periphery libraries:** Robinhood, Errors, GameModule, ModuleCode, SwarmCode, ChainClock, EconomyMath, ItemMath, IV4, Interfaces, OracleAttestation, SignatureCheckerCompat. The hook's Params keys 24 to 26 exist with matching defaults.\n- **Value intake paths** of PackSale, FarmCore.buyTokenPack and lobby, Billboards, and the Civic collapse and lot functions.\n\n**Static-analysis leads checked and rejected:** arbitrary ETH sends go only to the proven FeeRouter; the modulo indices are ring buffers; `GridOperator.lobbyETH` reverts so no ETH locks; `MarketFactory.deploy` sets only immutables.\n\n**Not reached (95 rows):** the L3/L4 game modules outside the hook and fee path, including Farm*, Season claims, Civic wars, Economy, Enhancement, GridOperator resolution, PackSale and StarterClaim entropy, and the SwarmDesk oracle flow. The scratch test directory was removed and no repository file was changed.","treeHash":null,"usage":{"cachedInputTokens":2508796,"inputTokens":578,"model":"claude-fable-5-1","outputTokens":46042,"runtime":"claude","turns":36,"wallClockMs":816879}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"f2101c240e0b52a9","findings":[],"hash":"6c1fcd9c940cd596cea2cc465f8ab176b0b5fbd566e902cb622225806ad7bb11","nodeId":"e05c283c-6f53-454a-aa0e-db15264f58be","outcome":"completed","summary":"The review is complete. The findings file is written and valid.\n\n**Outcome:** no substantiated defect in the assigned area (Math Precision, Boundary, Numerical Gap). The file `.imd-findings.json` holds an empty findings list and a coverage record with 165 rows: all 160 verifier entry points plus five invariant rows. 131 entry points are marked `holds`, 29 `unreached`, which is above the 80% threshold.\n\n**What I traced and found sound**\n\n- **V4Market hook math.** The buy tax in beforeSwap and the expected consumption in afterSwap use the identical floor formula, so a full fill can never trip PartialFill. The fee-shifted delta is bounded by the int128 check. Sell charges are capped at 15% of output. The TWAP ring of 32 one-minute slots always holds minutes M-31 through M after the last observation, and the 31-minute warm-up guarantees the 30-minute lookback never reads an unset slot. The 1e60 inverse-price accumulator keeps at least 1e20 resolution under the 1e40 price bound. The existing v3.18 hook suite passes locally.\n- **FarmRewards reward envelope.** Productive hash after every maximal multiplier (festival 15%, district 15%, war 10%, same lock boost as the committed weight) reaches at most 143.75% of weight, under the 150% allocation cap that would otherwise lock a farm's settlement cursor. Entry epochs are clamped explicitly. Per-epoch allocations sum below the 159% budget plus redistribution, so the dust computation cannot underflow. Vintage eviction only matures credits at least 8 days old.\n- **FeeRouter splits.** Team, pot, heartbeat and reward shares always sum to the deposit. The heartbeat balance can never exceed its cap because the cap is pinned to 1 ETH in Params, which rules out the underflow lead I had in executeSells.\n- **Season, Civic, Economy, PackSale, RewardPool, GridOperator.** Pot splits total exactly 100%, district payout divisor is always at least one, war payout and pool remainder cannot underflow, auction quote never underflows at the 7-day cap, pack price exponent is clamped and bounded by floor and ceiling, drip and reservation accounting is linear, and grid stability divisions are guarded.\n\n**Static-analysis leads.** The weak-PRNG, divide-before-multiply and arbitrary-send lines on V4Market are ring-buffer indexing, negligible truncation, and router-only recipients. None reproduced as a defect.\n\n**Not reached.** Enhancement, StarterClaim, FarmItems, SwarmDesk, GameRegistry.register and GridOperator's entropy resolution were not traced within budget. They are outside the math area and are marked `unreached` in the coverage record.","treeHash":null,"usage":{"cachedInputTokens":1964630,"inputTokens":546,"model":"claude-fable-5-1","outputTokens":45640,"runtime":"claude","turns":27,"wallClockMs":684905}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fa2b7fcb5f53535a","findings":[{"citation":"resolved","description":"Between the L2 launch and the one-time bindFeeRouter call, every buy in the 30-minute launch window moves up to 90% of its ETH into the hook (heldLaunchTax) and every later swap moves 1% (heldBase, heldSellTax). The hook has no owner and only one exit for that ETH: flushFees, which reverts NotConfigured until fees is set. bindFeeRouter can only succeed once _canonical(r) holds, i.e. IHookDesk(desk).registry() == r, which requires the L1 SwarmDesk to have been bound by the pinned binder wallet 0x6d51...d007 after L3. docs/accepted-v318.md accepts binder liveness for the escrowed endowment only; it does not mention that the hook's accumulated ETH (potentially most of the first ten minutes of buy volume) is locked by the same key. Reproduced with the real v4 PoolManager (test/scratch, not kept): a 10 ETH buy in the first minute leaves address(hook).balance == 9 ether and heldLaunchTax == 9 ether, and flushFees() reverts NotConfigured; no other function moves ETH out. Not a code defect under the pinned design (NO SOURCE CHANGES) but a concrete trust/liveness dependency that should be stated in the accepted list and the runbook: the binder key, L3 and L4 must all complete or the launch-window tax is lost forever.","line":199,"path":"src/V4Market.sol","reproduction":"State: hook deployed and pool initialized at T0, fees == address(0). Input: any buyer swaps 10 ETH exact-input at BUY_PRICE_LIMIT at T0+1min. Expected: the 9 ETH launch tax eventually reaches the FeeRouter rewards. Actual: hook holds 9 ETH; flushFees() reverts NotConfigured; bindFeeRouter(router, n, i) reverts InvalidProof at _canonical until SwarmDesk.registry() names the registry, which only the binder wallet can cause; if that key is lost, the ETH is locked permanently.","severity":"low","snippet":"        if (address(fees) == address(0)) revert NotConfigured();","title":"Launch tax and 1% share held by the unbound hook are unrecoverable if the Desk never binds"},{"citation":"resolved","description":"The launch rules supplied with this task say application contracts are fully configured in nonpayable constructors and nothing is configured after deployment. V4Market sets fees and params after deployment through bindFeeRouter. The call is permissionless, one-shot and gated by CREATE2/initcode proofs (registry factory coordinates, gameConfigHash, Params/Desk linkage, Desk canonical binding, FeeRouter enrollment as module 6), so there is no owner or privileged party and the only values written are proven addresses; the FeeRouter cannot be a constructor word because it is created in a later launch (L4). This is a policy-compatibility decision for the adapter and the panel, not a code defect: the requester pins the creation hash 0x8d6e0239... and forbids source changes, and removing or replacing the binding would change that hash. Recorded so the admission step decides explicitly rather than by omission.","line":147,"path":"src/V4Market.sol","reproduction":"State: freshly launched hook, fees == 0, params == 0. Observation: after deployment anyone may call bindFeeRouter(router, launch, index) with a router whose proofs pass; it writes fees and params once (AlreadyDone afterwards). Expected by the launch rules: no post-deployment configuration. Actual: one proof-gated post-deployment write exists by design.","severity":"info","snippet":"    function bindFeeRouter(address router, uint64 registryLaunch, uint256 registryIndex) external nonReentrant {","title":"bindFeeRouter is post-deployment configuration; launch policy expects constructor-only configuration"},{"citation":"resolved","description":"afterSwap records buy volume as the ETH the pool consumed (the input after the 90/50/25% stepped tax), while sells record the full gross ETH output. During the launch window the imbalance meters therefore see roughly a tenth of the ETH buyers actually paid, so the progressive sell surcharge (hour and day components, Params keys 24 and 25) rises faster than the paid flows justify. Measured with the real v4 PoolManager on a 1000-unit full-range pool at 1 token per ETH: a 10 ETH buy at T0 (1 ETH consumed, 9 ETH tax) followed by a 100-token sell gave gross output 90.044 ETH, heldBase 0.9004 ETH and heldSellTax 7.8159 ETH, i.e. a 968 bps total sell charge; counting the 10 ETH the buyer paid would give hour imbalance 7961 bps and day imbalance 7844 bps, a total of about 812 bps, so the seller paid about 1.4 ETH more. Bounded by TOTAL_CAP_BPS (15%) and limited to the 30-minute window; the hook's own comment treats the meters as pool-flow meters, so this may be intended. Reported so the requester confirms the intent; no source change is requested.","line":452,"path":"src/V4Market.sol","reproduction":"State: pool initialized at T0 with full-range liquidity; t = T0 + 1 min. Calls: buyer swaps 10 ETH exact-input at BUY_PRICE_LIMIT (records 1 ETH of buys); seller swaps 100 tokens exact-input at MAX_SQRT_PRICE - 1. Expected (paid-volume accounting): about 812 bps sell charge. Actual: 968 bps (heldSellTax 7.8159 ETH on 90.044 ETH gross).","severity":"info","snippet":"            _record(false, consumed);","title":"Launch-window buys are recorded net of tax while sells are recorded gross, inflating the sell surcharge for 30 minutes"},{"citation":"resolved","description":"_observe back-fills one Observation (two storage words) per elapsed minute, capped at 31, on the first swap after an idle gap, and it runs in beforeSwap so the swapper pays it. Measured with the real v4 PoolManager: a buy immediately after another buy cost 165,237 gas through the manager, the same buy after a 5-day gap cost 533,066 gas. Correctness is unaffected (the 30-minute TWAP only needs the last 31 minutes and the ring check o.minute != minute guards stale slots). Integrators that hard-code a swap gas limit near the hot-path figure will see the first post-idle swap run out of gas; estimateGas handles it. Informational.","line":272,"path":"src/V4Market.sol","reproduction":"State: pool initialized, one swap at T, no swaps until T + 5 days. Input: 1 ETH buy at BUY_PRICE_LIMIT. Expected: gas comparable to a back-to-back swap (about 165k). Actual: about 533k gas because 31 ring entries are written in beforeSwap.","severity":"info","snippet":"        for (uint256 minute = first; minute <= last; ++minute) {","title":"First swap after more than 31 idle minutes writes up to 31 observation slots (about 3.2x gas)"},{"citation":"resolved","description":"The hook pins POOL_FEE = 12500 in the constructor and folds the fee and tick spacing 60 into poolId; afterInitialize and both swap callbacks revert Unauthorized for any other key. The launch rules say the pool opens at the fee the LaunchFactory reads from the chain's LaunchFees contract (1.25% by default) regardless of pool.fee in the manifest. If that network value is anything other than 12500 when the L2 launch runs, the factory's initialize call hits afterInitialize with a key whose hash differs from poolId and the whole launch transaction reverts (fail-safe, no funds move). The adapter should read LaunchFees on Robinhood (4663) right before submission and keep tickSpacing 60. The quote/quoteSell views also assume the 12500 LP fee.","line":129,"path":"src/V4Market.sol","reproduction":"State: LaunchFees on chain 4663 returns a fee other than 12500 (e.g. 10000). Call: LaunchFactory launch with this hook. Expected: pool opens at the network fee. Actual: PoolManager.initialize -> V4Market.afterInitialize -> _check(k) reverts Unauthorized because keccak256(abi.encode(k)) != poolId; the launch transaction reverts.","severity":"info","snippet":"                || desk_ == address(0) || spacing_ <= 0 || spacing_ > 32767 || fee_ != POOL_FEE","title":"Launch requires the network pool fee to be exactly 12500 at launch time; a different LaunchFees value reverts the launch transaction"},{"citation":"resolved","description":"Scope of this L2 review is the hook plus the platform token. Read in full: src/V4Market.sol, src/interfaces/IV4.sol, src/interfaces/ILaunchHook.sol, src/lib/Robinhood.sol, docs/accepted-v318.md, test/AuditV318.t.sol, test/V4Integration.t.sol (setup), test/mocks/MockV4Manager.sol (partial), the FeeRouter deposit and receive paths (src/FeeRouter.sol lines 96-135), the vendored v4-core Hooks.beforeSwap/afterSwap delta handling and Pool.swap delta construction, and the three protected floor tests. Not reached within the budget (not deployed by this step; they are L1/L3/L4 contracts): SwarmDesk, EndowmentEscrow, GameRegistry, Params, FarmCore, FarmEngine, FarmRewards, FarmItems, PackSale, Season, Civic, Economy, Enhancement, GridOperator, Billboards, StarterClaim, RewardPool, StandardAdapter, StandardMarket, MarketFactory, oracle/*. The token: there is no src/LaunchToken.sol in the tree; launch-v39.md says the platform supplies the standard token for L2, and the protected floor takes the token creation code from IMD_TOKEN_CREATION_CODE, so the adapter must confirm that path rather than expect a repository token. Verified: forge build (solc 0.8.26, optimizer 200, cancun, via_ir false, bytecode_hash none) succeeds; keccak256(type(V4Market).creationCode) == 0x8d6e02398e351aa4c28486a92d7ec60baf7edc67ccaaa88eed4bd61e9b9092a4 (matches the task); runtime 21,534 bytes under EIP-170; a linear opcode scan of the runtime (the protected floor's method) finds no DELEGATECALL, CALLCODE or SELFDESTRUCT; the constructor makes no external call (passes the empty-chain floor); seven constructor words, all of supported types, none a literal IMD protocol address; no owner, initializer, proxy, mint, pause or blocklist surface. forge test on test/AuditV318.t.sol: 12 passed, 0 failed. Slither on src (vendor/test/script filtered): V4Market items are arbitrary-send to the proven router, modulo ring indexing flagged as weak PRNG, divide-before-multiply in the harmonic TWAP accumulator (1e60 / price times seconds, bounded by spot()'s 1..1e40 range), and cross-function reentrancy on TWAP state inside the hook's own unlock, all reviewed as non-issues. Aderyn was not run. Checked and found consistent against v4-core: beforeSwap specified-delta fee charged on ETH input equals ethIn - consumed in afterSwap for every step (9000/5000/2500/100 bps), PartialFill and PriceLimitedBuy guards, sell surcharge taken on actual ETH output, hook take/credit nets to zero in every unlock, TWAP ring sufficiency for a 30-minute window, spot() bounds enforce themselves because every swap re-checks in afterSwap. A clean read is not proof of absence of defects.","line":44,"path":"src/V4Market.sol","reproduction":"Not a defect. Commands run: forge build; forge test --match-path test/AuditV318.t.sol; forge test --match-path test/scratch/Probe.t.sol (real PoolManager probes: unbound-hook held tax, idle-gap gas, launch-window sell surcharge, dust buys); slither . --filter-paths vendor|test|script; python opcode scan of out/V4Market.sol/V4Market.json deployedBytecode.","severity":"info","snippet":"contract V4Market is ReentrancyGuard {","title":"Coverage: contracts read, contracts not reached, and verifications run"}],"hash":"6cce9d5add78ac0e6d0fc1024a150562c9a4c5b074843489499fb3b38d2a07fb","nodeId":"4b9c5e15-a25b-4890-be5a-ea0bc10483f9","outcome":"completed","summary":"The review is complete. The findings file is written, every snippet matches its source line, and the working tree holds no other changes.\n\n**Outcome.** No critical, high or medium defect was found in the V4Market hook as it arrived. The findings file at `.imd-findings.json` holds one low finding and five informational entries, including the required coverage statement.\n\n**What was verified**\n- The build under the unchanged repo configuration succeeds, and the hook's creation-code hash equals the task's expected value 0x8d6e…92a4.\n- Runtime is 21,534 bytes, a linear opcode scan finds no DELEGATECALL, CALLCODE or SELFDESTRUCT, and the constructor makes no external call.\n- The v3.18 audit suite passes on the real v4 PoolManager (12 tests, 0 failures). Slither on the hook reported only expected patterns, each reviewed as a non-issue. Aderyn was not run.\n- Traced against vendored v4-core: the beforeSwap ETH charge matches afterSwap's consumed check at every tax step, the hook's take and credit net to zero in every unlock, sell surcharge is taken on actual ETH output, the TWAP ring buffer always covers the 30-minute window, and spot() bounds re-enforce themselves on every swap.\n\n**Findings written**\n- **Low.** ETH held by the unbound hook (up to 90% of launch-window buy volume plus every 1% share) can only leave through flushFees, which reverts until the one-time bind. That bind needs the L1 SwarmDesk to have been bound by the pinned binder wallet. The accepted binder-liveness line covers the escrowed endowment but not this ETH. Reproduced with the real PoolManager: a 10 ETH buy in the first minute locks 9 ETH with no recovery path.\n- **Info.** bindFeeRouter is a proof-gated, permissionless, one-shot post-deployment write, which the launch rules otherwise disallow. Recorded as a policy decision for the adapter and panel, since the requester forbids source changes and pins the creation hash.\n- **Info.** Launch-window buys are recorded net of tax while sells are recorded gross, so the sell surcharge rises faster for 30 minutes. Measured: 968 bps charged versus about 812 bps under paid-volume accounting on the probe scenario.\n- **Info.** The first swap after a 31-minute idle gap writes up to 31 ring slots in beforeSwap. Measured 533k gas versus 165k for a back-to-back swap.\n- **Info.** The hook pins pool fee 12500 and tick spacing 60 into the pool id. If the network LaunchFees value differs at launch, the launch transaction reverts in afterInitialize. The adapter should check that value right before submission.\n- **Info, coverage.** Read in full: V4Market, its interfaces, Robinhood constants, the FeeRouter deposit paths, the v3.18 tests and the protected floor tests. Not reached: the L1, L3 and L4 application modules, which this step does not deploy. There is no src/LaunchToken.sol in the tree; the runbook says the platform supplies the token, which the adapter must confirm.\n\nScratch tests were removed. The next reader is the adapter, who should confirm the token source path and decide on the binding-policy question before the panel review.","treeHash":null,"usage":{"cachedInputTokens":1395344,"inputTokens":482,"model":"claude-fable-5-1","outputTokens":43555,"runtime":"claude","turns":22,"wallClockMs":717059}},{"artifacts":[],"attempt":1,"bundleHash":"c927c82350e76f42a67c137bf52cdcc363af0aae74fa3e53b5b511d1ce637fea","device":"b5d96cb4e4dd8f0e","findings":[],"hash":"718baa8e335f61a1a0bad748212d5678fd1278b98329809056cb6e6a1f996813","nodeId":"6b47d042-b1cb-44d6-bc8c-0c83f8976826","outcome":"completed","summary":"Added the missing `src/LaunchToken.sol`: BLACKOUT, 18 decimals, fixed supply of 1 billion tokens minted to the deploying factory. Updated tests and `ADAPTATION.md`.\n\nExisting contracts, build configuration, and V4Market’s pinned creation hash remain unchanged.\n\nValidation: `forge build` passed; seeded tests: **344 passed, 0 failed, 6 skipped**; supplied token floor: **7 passed**.","treeHash":"2d7e662b902f8087d5c9762e7adbb95740d9b786","usage":{"cachedInputTokens":4286848,"inputTokens":263879,"model":"gpt-6-astra","outputTokens":36930,"runtime":"codex","turns":13,"wallClockMs":1472903}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"c5099ef07f22abee","findings":[],"hash":"99a02eb71694326baafd1e8961ab9df56df4ec936cecbd5cde6115c7da4d55f5","nodeId":"b0dd398f-0af7-4697-8e81-d26531809ee8","outcome":"failed","summary":"needs input: The required V4Market constructor words at indices 0 and 4 are exactly $poolManager and $factory, but this job's evm_project manifest validator rejects both. The brief forbids literal protocol addresses, source changes, and changing kind. The existing launch.json already matches the mandated constructor words, so no manifest-only repair can satisfy both the brief and the validator. — Can you provide an evm_project validation and deployment path that accepts and resolves $poolManager and $factory for this univ4_hook launch, or revise the required constructor words to a supported representation?","treeHash":null,"usage":{"cachedInputTokens":2928000,"inputTokens":131182,"model":"gpt-6-astra","outputTokens":13805,"runtime":"codex","turns":15,"wallClockMs":1333306}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"56b13350bba65fd7","findings":[],"hash":"cd13aeccbc9ce1d71b885ea92540f8f90d6579516a1a12f3802d3919733e5fe4","nodeId":"82b4666d-a0f1-4fda-9e64-e4b853086410","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written at the repository root.\n\n**Result: no new defect in the assigned area.** The economic security, invariant and flow-gap passes over the L2 deployment found nothing beyond the items already accepted in docs/accepted-v318.md. The findings list is empty, so the file reports a clean review with a full coverage record.\n\n**What I verified**\n\n- **Hook ETH conservation.** A scratch test on the real vendored PoolManager ran launch-window buys at two tax steps, external sells, a post-window buy, a system reward buy, a system sell and a flush. At every step the hook's balance equalled the sum of its three held counters, and after the flush the FeeRouter's balance equalled its reward, heartbeat, pot and credit ledgers.\n- **Buy tax accounting.** The beforeSwap charge on the specified input and the afterSwap exact-consumption check agree on the real manager, so the v3.18 fix holds and partial fills cannot occur against full-range liquidity for an ETH-to-token exact-input swap.\n- **Sell surcharge bounds.** The fee never drops below 1% or exceeds 15%, the deviation term uses the post-swap spot against a correctly backfilled 30-minute TWAP, and a wash buy before a dump saves nothing net (17.3 ETH of hook charges versus 13.4 ETH for roughly double the volume).\n- **System swap guards.** Keeper buys and sells are bounded to 1.5% from TWAP, so a sandwich costs the attacker more in fees than the bounded loss it could cause.\n- **L2 to L1 flow.** The 20% remainder sent to the L1 EndowmentEscrow is exactly the 200,000,000 token endowment the registry commits to, so the one-shot forward and RewardPool funding can succeed.\n- **Static-analysis leads.** The arbitrary-send and reentrancy lines on V4Market are false positives: the sell recipient is pinned to the FeeRouter and every value path is guarded or settled before the external call. Two dead leads outside the area were also closed: the heartbeat cap is pinned to exactly 1 ETH, and the epoch reserve is at most 2.4% of the available pool.\n\n**Coverage record**\n\n| Verdict | Rows |\n|---|---|\n| holds | 49 |\n| unreached | 111 |\n| finding | 0 |\n\nAll 160 listed entry points have a row. The `holds` rows cover V4Market, StandardMarket, StandardAdapter, FeeRouter, RewardPool, Economy, EndowmentEscrow, LaunchToken, MarketFactory and Params.set. The `unreached` rows are the L4 game modules (Billboards, Civic, Enhancement, FarmCore, FarmEngine, FarmItems, FarmRewards, GameRegistry, GridOperator, PackSale, Season, StarterClaim, SwarmDesk), which are outside the economic area and were not traced within the budget.\n\nThe scratch test lives under test/scratch/ and is not part of the submission. No source or configuration file was changed.","treeHash":null,"usage":{"cachedInputTokens":2125915,"inputTokens":392,"model":"claude-fable-5-1","outputTokens":29430,"runtime":"claude","turns":30,"wallClockMs":1184987}},{"artifacts":[],"attempt":1,"bundleHash":"91f98f0d618010475ae109886ac1ad191cb2cb8372dff57e9c141871aeb20ba4","device":"33ce0bb3dec09f0b","findings":[],"hash":"f7bc5a9c7ffe66ead6e1ae5ae3f41037663a2f2514b7fd82c8d6b016e371e592","nodeId":"f2bf5fbc-b894-4d66-8982-faa861cb22ff","outcome":"completed","summary":"Added failure-path tests, fuzz tests, and six stateful invariants for hook, fee-router, and reward-pool accounting. Only `test/` changed.\n\n- `forge build`: passed.\n- Required-seed `forge test`: **365 passed, 0 failed, 6 existing fork skips**.\n- New invariant campaigns: **40,960 calls**, zero unexpected reverts.\n\nSource and configuration remain unchanged.","treeHash":"8bf96d62845312ad555da7261bc3211ea66cc042","usage":{"cachedInputTokens":8884992,"inputTokens":190745,"model":"gpt-6-astra","outputTokens":36746,"runtime":"codex","turns":11,"wallClockMs":1701787}}],"verification":[{"checks":[{"durationMs":52375,"exitCode":0,"name":"build","output":"Compiling 200 files with Solc 0.8.26\nSolc 0.8.26 finished in 52.03s\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":67498,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\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 9.65ms (3.62ms 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 10.92ms (5.66ms 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 11.72ms (6.37ms 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 28.46ms (23.20ms 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 49.22ms (12.88ms 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 51.06ms (35.08ms 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 52.09ms (16.34ms CPU time)\n\nRan 1 test for test/LaunchToken.t.sol:LaunchTokenHookTest\n[PASS] testHookConstructionPreservesFactoryTokenSupply() (gas: 21707018)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 59.07ms (54.09ms 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 52.50ms (8.77ms 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 51.60ms (5.87ms 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 4.10ms (3.87ms 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.23ms (1.11ms 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 69.26ms (18.95ms 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 76.99ms (36.73ms 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 77.84ms (41.12ms 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 79.60ms (48.08ms CPU time)\n\nRan 9 tests for test/LaunchToken.t.sol:LaunchTokenTest\n[PASS] testFuzzSelfTransferPreservesBalance(uint256) (runs: 256, μ: 55057, ~: 54766)\nLogs:\n  Bound result 3\n\n[PASS] testFuzzTransferFromSpendsOnlyApprovedAmount(uint256,uint256) (runs: 256, μ: 163310, ~: 165143)\nLogs:\n  Bound result 149\n  Bound result 50\n\n[PASS] testFuzzTransferMovesExactAmountWithoutChangingSupply(uint256) (runs: 256, μ: 92118, ~: 92308)\nLogs:\n  Bound result 3\n\n[PASS] testInfiniteApprovalRemainsUnchanged() (gas: 149447)\n[PASS] testInsufficientBalanceAndAllowanceCannotMoveTokens() (gas: 153092)\n[PASS] testMetadataAndEntireSupplyBelongToDeployer() (gas: 75827)\n[PASS] testNeitherDeployerNorThirdPartyHasMintOrAdminEntrypoints() (gas: 603521)\n[PASS] testRuntimeIsBoundedAndContainsNoForbiddenOpcodes() (gas: 1031094)\n[PASS] testZeroRecipientCannotBurnSupply() (gas: 47579)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 100.87ms (91.96ms 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 50.87ms (22.82ms 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 113.20ms (76.05ms 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, μ: 30107, ~: 30016)\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 117.75ms (84.05ms CPU time)\n\nRan 1 test for test/L2LaunchV318.t.sol:L2V318ArtifactTest\n[PASS] testPinnedSevenWordConstructorWorksOnEmptyChainAndRuntimePassesFloor() (gas: 24419229)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 67.64ms (67.51ms CPU time)\n\nRan 6 tests for test/L2LaunchV318.t.sol:L2V318AuditTest\n[PASS] testIdleObservationBackfillCostsMoreButLeavesTwapUsable() (gas: 2533926)\nLogs:\n  hot swap gas: 163108\n  first swap after five idle days gas: 565137\n\n[PASS] testLaunchWindowMeterEffectOutlivesTheThirtyMinuteTaxWindow() (gas: 1113704)\n[PASS] testLaunchWindowMetersUseNetBuyFlowAndGrossSellFlow() (gas: 844811)\nLogs:\n  gross sell ETH wei: 90044456705534709298\n  pool-flow sell charge bps: 968\n  paid-flow counterfactual bps: 811\n\n[PASS] testNetworkFeeOrSpacingMismatchCannotInitializeAnotherPool() (gas: 213974)\n[PASS] testUnboundLaunchTaxWaitsForBinderThenPermissionlessOneShotHookBinding() (gas: 7868882)\n[PASS] testUnboundPostWindowBaseAndSurchargeAreAlsoHeldUntilBinding() (gas: 2123701)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 13.64ms (7.36ms 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 41.23ms (20.51ms 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 91.68ms (71.29ms 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 60.44ms (43.28ms 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 68.95ms (50.89ms 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 40.37ms (1.38ms 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 27.11ms (9.69ms 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 255.04ms (209.06ms 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 264.19ms (222.03ms 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 278.45ms (236.89ms 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 174.81ms (163.92ms 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, μ: 522870, ~: 524715)\nLogs:\n  Bound result 4506\n  Bound result 50000\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 361.18ms (341.31ms CPU time)\n\nRan 2 tests for test/StandardMarket.t.sol:StandardMarketTest\n[PASS] testFuzzStandardSellNeverAddsProgressiveSurcharge(uint96) (runs: 256, μ: 1806068, ~: 1813963)\nLogs:\n  Bound result 3\n\n[PASS] testStandardBuyOnePercentAllToRewards() (gas: 1673466)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 474.55ms (429.63ms 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, μ: 44939, ~: 45115)\nLogs:\n  Bound result 395\n\n[PASS] testFuzzSplitsConserveEveryWei(uint96) (runs: 256, μ: 207616, ~: 210856)\nLogs:\n  Bound result 3\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 431.20ms (486.22ms 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 520.32ms (817.73ms 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 473.28ms (438.54ms CPU time)\n\nRan 6 tests for test/Market.t.sol:MarketTest\n[PASS] testBuyChargesExactlyOnePercentAllToRewards() (gas: 1730007)\n[PASS] testFuzzTotalFeeHardCap(uint96) (runs: 256, μ: 1805845, ~: 1809180)\nLogs:\n  Bound result 3\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 565.55ms (580.57ms 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 853.68µs (72.92µs 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 95.97ms (51.01ms 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 684.52ms (903.02ms 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 664.94ms (49.39ms 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 812.51ms (2.35ms 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 170.39ms (135.03ms 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, μ: 476459, ~: 477920)\nLogs:\n  Bound result 11\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 861.77ms (839.52ms 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 861.78ms (1.82s 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, μ: 1474202, ~: 1367460)\nLogs:\n  Bound result 99254458094816678182\n  Bound result 7175873692729236725383503880\n  Bound result 1\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 942.34ms (361.55ms 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 638.35ms (806.85ms 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, μ: 1374204, ~: 1374014)\nLogs:\n  Bound result 3\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.02s (1.20s CPU time)\n\nRan 7 tests for test/HeartbeatBpsV313.t.sol:HeartbeatBpsV313Test\n[PASS] testFuzzAnyShareConservesEveryWeiAndNeverMovesTeamOrPot(uint16,uint96) (runs: 256, μ: 1399456, ~: 1628577)\nLogs:\n  Bound result 4749\n  Bound result 12835\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.68s (1.65s 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 1.77s (39.15ms 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 1.77s (2.57s CPU time)\n\nRan 2 tests for test/ReservedEventsV35.t.sol:ReservedEventsV35Test\n[PASS] testFuzzReservedFestivalCannotExceedFifteenPercent(uint16) (runs: 256, μ: 4927535, ~: 4927534)\n[PASS] testReservedHeatwaveExtraCoolingWearAndBothProtections() (gas: 10178642)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.41s (1.45s 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.79s (1.19s 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 1.90s (1.02s 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.65s (8.78s 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, μ: 61457, ~: 63085)\nLogs:\n  Bound result 10800\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 17.76s (574.55ms 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, μ: 88622, ~: 90188)\nLogs:\n  Bound result 10800\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 17.88s (710.12ms 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, μ: 45597943, ~: 45621057)\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 17.88s (18.77s 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   | 580   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | buy       | 603   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | claim     | 569   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | equip     | 630   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | expand    | 642   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | freeClaim | 584   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | fundPot   | 543   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | lock      | 580   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | resolve   | 570   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | rollover  | 562   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | settle    | 587   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | tokenPack | 589   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | unlock    | 571   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | unplace   | 582   | 0       | 0        |\n╰-------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 7436\n  Bound result 7000000000000000000\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 67.06s (67.01s CPU time)\n\nRan 60 test suites in 67.24s (151.58s CPU time): 344 tests passed, 0 failed, 6 skipped (350 total tests)\n","passed":true},{"durationMs":354,"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)\",\"LaunchToken.approve(address,uint256)\",\"LaunchToken.transfer(address,uint256)\",\"LaunchToken.transferFrom(address,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\":164,\"README.md\":91,\"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\":81,\"docs/api-v35.md\":41,\"docs/dependency-provenance.md\":9,\"docs/design.md\":69,\"docs/entropy-v34.md\":31,\"docs/l2-v318-handoff.md\":144,\"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\":263,\"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/LaunchToken.sol\":11,\"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/KeeperProfit.t.sol\":95,\"test/L2LaunchV318.t.sol\":380,\"test/LaunchToken.t.sol\":147,\"test/LazyAccounting.t.sol\":447,\"test/Market.t.sol\":121,\"test/OracleConformanceV37.t.sol\":105,\"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},{"durationMs":17262,"exitCode":0,"name":"slither","output":"[high/medium] arbitrary-send-eth at src/V4Market.sol:516: V4Market._sellCallback(bytes) (src/V4Market.sol#516-539) sends eth to arbitrary user\n[high/medium] arbitrary-send-eth at src/V4Market.sol:198: V4Market.flushFees() (src/V4Market.sol#198-212) sends eth to arbitrary user\n[high/medium] weak-prng at src/V4Market.sol:375: V4Market.nextStepIn() (src/V4Market.sol#375-378) uses a weak PRNG: \"LAUNCH_TAX_STEP - t % LAUNCH_TAX_STEP (src/V4Market.sol#377)\"\n[high/medium] weak-prng at src/V4Market.sol:305: V4Market._record(bool,uint256) (src/V4Market.sol#305-326) uses a weak PRNG: \"delete shortVolumes[p % 12] (src/V4Market.sol#310)\"\n[high/medium] weak-prng at src/V4Market.sol:260: V4Market._observe(uint256) (src/V4Market.sol#260-280) uses a weak PRNG: \"observations[minute % 32] = Observation(uint64(minute),c) (src/V4Market.sol#274)\"\n[high/medium] weak-prng at src/V4Market.sol:305: V4Market._record(bool,uint256) (src/V4Market.sol#305-326) uses a weak PRNG: \"b = longVolumes[p % 24] (src/V4Market.sol#314)\"\n[high/medium] weak-prng at src/V4Market.sol:282: V4Market._cumulativeAt(uint256) (src/V4Market.sol#282-289) uses a weak PRNG: \"o = observations[minute % 32] (src/V4Market.sol#286)\"\n[high/medium] weak-prng at src/V4Market.sol:305: V4Market._record(bool,uint256) (src/V4Market.sol#305-326) uses a weak PRNG: \"a = shortVolumes[p % 12] (src/V4Market.sol#308)\"\n[high/medium] weak-prng at src/V4Market.sol:305: V4Market._record(bool,uint256) (src/V4Market.sol#305-326) uses a weak PRNG: \"delete longVolumes[p % 24] (src/V4Market.sol#316)\"\n[high/medium] incorrect-exp at vendor/openzeppelin/contracts/utils/math/Math.sol:123: Math.mulDiv(uint256,uint256,uint256) (vendor/openzeppelin/contracts/utils/math/Math.sol#123-202) has bitwise-xor operator ^ instead of the exponentiation operator **: \n[high/medium] reentrancy-balance at src/FarmCore.sol:486: Reentrancy in FarmCore._splitCharge(address,uint256,bool) (src/FarmCore.sol#486-496):\n[high/medium] reentrancy-balance at src/Civic.sol:56: Reentrancy in Civic._take(address,uint256) (src/Civic.sol#56-63):\n[high/medium] reentrancy-balance at src/FeeRouter.sol:228: Reentrancy in FeeRouter.executePotBuys(uint256,uint256) (src/FeeRouter.sol#228-242):\n[high/medium] reentrancy-balance at src/PackSale.sol:189: Reentrancy in PackSale._buy(address,address,uint256,uint256,bool) (src/PackSale.sol#189-208):\n[high/medium] reentrancy-balance at src/FeeRouter.sol:287: Reentrancy in FeeRouter.executeBuys(uint256,uint256) (src/FeeRouter.sol#287-312):\n[high/medium] reentrancy-balance at src/FeeRouter.sol:176: Reentrancy in FeeRouter.zapBuy(uint256,address) (src/FeeRouter.sol#176-184):\n[high/medium] reentrancy-balance at src/FarmCore.sol:426: Reentrancy in FarmCore._charge(address,uint256,bool,uint8) (src/FarmCore.sol#426-440):\n[high/medium] reentrancy-balance at src/RewardPool.sol:87: Reentrancy in RewardPool.donate(uint256) (src/RewardPool.sol#87-94):\n[high/medium] reentrancy-balance at src/PackSale.sol:189: Reentrancy in PackSale._buy(address,address,uint256,uint256,bool) (src/PackSale.sol#189-208):\n[high/medium] reentrancy-balance at src/StandardAdapter.sol:53: Reentrancy in StandardAdapter.buy(uint256,address) (src/StandardAdapter.sol#53-62):\n[high/medium] reentrancy-balance at src/Economy.sol:137: Reentrancy in Economy.lock(uint256,uint256) (src/Economy.sol#137-154):\n[high/medium] reentrancy-balance at src/Billboards.sol:55: Reentrancy in Billboards._take(address,uint256) (src/Billboards.sol#55-62):\n[high/medium] reentrancy-eth at src/Civic.sol:238: Reentrancy in Civic.fundCollapse(uint256) (src/Civic.sol#238-244):\n[high/medium] reentrancy-eth at src/FarmCore.sol:474: Reentrancy in FarmCore.buyTokenPack(bool) (src/FarmCore.sol#474-484):\n[high/medium] reentrancy-eth at src/FarmCore.sol:100: Reentrancy in FarmCore.buyRoom(uint256,bool) (src/FarmCore.sol#100-109):\n[high/medium] reentrancy-eth at src/Civic.sol:288: Reentrancy in Civic.buyLot(uint256) (src/Civic.sol#288-301):\n[high/medium] reentrancy-eth at src/FarmCore.sol:474: Reentrancy in FarmCore.buyTokenPack(bool) (src/FarmCore.sol#474-484):\n[high/medium] reentrancy-eth at src/FarmCore.sol:451: Reentrancy in FarmCore.repairCable(bool) (src/FarmCore.sol#451-459):\n[high/high] uninitialized-state at src/Civic.sol:149: Civic.warTop (src/Civic.sol#124) is never initialized. It is used in:\n[medium/medium] boolean-cst at src/Enhancement.sol:55: Enhancement.announceCap(uint8,string) (src/Enhancement.sol#55-66) uses a Boolean constant improperly:\n[medium/medium] divide-before-multiply at vendor/openzeppelin/contracts/utils/Base64.sol:18: Base64.encode(bytes) (vendor/openzeppelin/contracts/utils/Base64.sol#18-94) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/FarmEngine.sol:157: FarmEngine._accumulate(FarmEngine.Snapshot,uint256,uint256,FarmEngine.RoomStats,FarmEngine.Acc) (src/FarmEngine.sol#157-172) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at vendor/openzeppelin/contracts/utils/math/Math.sol:123: Math.mulDiv(uint256,uint256,uint256) (vendor/openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/Economy.sol:89: Economy.itemDaily(uint256) (src/Economy.sol#89-95) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at vendor/openzeppelin/contracts/utils/math/Math.sol:123: Math.mulDiv(uint256,uint256,uint256) (vendor/openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/PackSale.sol:129: PackSale.priceAt(uint256) (src/PackSale.sol#129-148) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/V4Market.sol:260: V4Market._observe(uint256) (src/V4Market.sol#260-280) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/FarmRewards.sol:169: FarmRewards.advanceEpoch() (src/FarmRewards.sol#169-243) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/V4Market.sol:282: V4Market._cumulativeAt(uint256) (src/V4Market.sol#282-289) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/V4Market.sol:260: V4Market._observe(uint256) (src/V4Market.sol#260-280) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/FarmCore.sol:506: FarmCore.scrap(uint256,uint256) (src/FarmCore.sol#506-517) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at vendor/openzeppelin/contracts/utils/math/Math.sol:123: Math.mulDiv(uint256,uint256,uint256) (vendor/openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/FarmEngine.sol:157: FarmEngine._accumulate(FarmEngine.Snapshot,uint256,uint256,FarmEngine.RoomStats,FarmEngine.Acc) (src/FarmEngine.sol#157-172) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at vendor/openzeppelin/contracts/utils/math/Math.sol:123: Math.mulDiv(uint256,uint256,uint256) (vendor/openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at vendor/openzeppelin/contracts/utils/math/Math.sol:123: Math.mulDiv(uint256,uint256,uint256) (vendor/openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/Economy.sol:89: Economy.itemDaily(uint256) (src/Economy.sol#89-95) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/FarmEngine.sol:157: FarmEngine._accumulate(FarmEngine.Snapshot,uint256,uint256,FarmEngine.RoomStats,FarmEngine.Acc) (src/FarmEngine.sol#157-172) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at vendor/openzeppelin/contracts/utils/math/Math.sol:123: Math.mulDiv(uint256,uint256,uint256) (vendor/openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/V4Market.sol:489: V4Market.quoteSell(uint256) (src/V4Market.sol#489-493) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/FarmCore.sol:506: FarmCore.scrap(uint256,uint256) (src/FarmCore.sol#506-517) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at vendor/openzeppelin/contracts/utils/math/Math.sol:123: Math.mulDiv(uint256,uint256,uint256) (vendor/openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at vendor/openzeppelin/contracts/utils/math/Math.sol:123: Math.mulDiv(uint256,uint256,uint256) (vendor/openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/FeeRouter.sol:193: FeeRouter.executeSells(uint256,uint256) (src/FeeRouter.sol#193-226) performs a multiplication on the result of a division:\n[medium/high] incorrect-equality at src/Enhancement.sol:55: Enhancement.announceCap(uint8,string) (src/Enhancement.sol#55-66) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/FarmCore.sol:309: FarmCore._roll(address,uint256) (src/FarmCore.sol#309-324) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/FarmRewards.sol:317: FarmRewards.beginMining(address,uint256) (src/FarmRewards.sol#317-330) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/FarmCore.sol:216: FarmCore.maxLevelByAge(address) (src/FarmCore.sol#216-223) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/V4Market.sol:357: V4Market.sinceLaunch() (src/V4Market.sol#357-359) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/FarmCore.sol:506: FarmCore.scrap(uint256,uint256) (src/FarmCore.sol#506-517) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/V4Market.sol:291: V4Market.twap() (src/V4Market.sol#291-296) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/V4Market.sol:260: V4Market._observe(uint256) (src/V4Market.sol#260-280) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Civic.sol:83: Civic.enable(uint256) (src/Civic.sol#83-89) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/V4Market.sol:260: V4Market._observe(uint256) (src/V4Market.sol#260-280) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/EndowmentEscrow.sol:61: EndowmentEscrow.forward(address,uint64,uint256,bytes,uint64,uint256,bytes) (src/EndowmentEscrow.sol#61-89) uses a dangerous strict equality:\n[medium/high] locked-ether at src/GridOperator.sol:148: Contract locking ether found:\n[medium/medium] reentrancy-no-eth at src/StarterClaim.sol:134: Reentrancy in StarterClaim.resolve(uint256) (src/StarterClaim.sol#134-148):\n[medium/medium] reentrancy-no-eth at src/FarmCore.sol:86: Reentrancy in FarmCore.civicPurchase(address,uint256) (src/FarmCore.sol#86-93):\n[medium/medium] reentrancy-no-eth at src/FarmCore.sol:352: Reentrancy in FarmCore.place(uint256,uint256,uint256) (src/FarmCore.sol#352-386):\n[medium/medium] reentrancy-no-eth at src/FarmCore.sol:524: Reentrancy in FarmCore.process(address,uint256) (src/FarmCore.sol#524-556):\n[medium/medium] reentrancy-no-eth at src/FeeRouter.sol:193: Reentrancy in FeeRouter.executeSells(uint256,uint256) (src/FeeRouter.sol#193-226):\n[medium/medium] reentrancy-no-eth at src/FarmRewards.sol:435: Reentrancy in FarmRewards._reward(address,uint256,FarmRewards.Share,uint256,uint256) (src/FarmRewards.sol#435-467):\n[medium/medium] reentrancy-no-eth at src/FarmRewards.sol:364: Reentrancy in FarmRewards._settle(address,uint256) (src/FarmRewards.sol#364-379):\n[medium/medium] reentrancy-no-eth at src/V4Market.sol:541: Reentrancy in V4Market.unlockCallback(bytes) (src/V4Market.sol#541-564):\n[medium/medium] reentrancy-no-eth at src/V4Market.sol:516: Reentrancy in V4Market._sellCallback(bytes) (src/V4Market.sol#516-539):\n[medium/medium] reentrancy-no-eth at src/Economy.sol:159: Reentrancy in Economy.unlock() (src/Economy.sol#159-177):\n[medium/medium] reentrancy-no-eth at src/FarmCore.sol:388: Reentrancy in FarmCore.unplace(uint256,uint256) (src/FarmCore.sol#388-398):\n[medium/medium] reentrancy-no-eth at src/PackSale.sol:275: Reentrancy in PackSale.resolve(uint256,uint256) (src/PackSale.sol#275-292):\n[medium/medium] reentrancy-no-eth at src/FarmRewards.sol:169: Reentrancy in FarmRewards.advanceEpoch() (src/FarmRewards.sol#169-243):\n[medium/medium] reentrancy-no-eth at src/FarmCore.sol:352: Reentrancy in FarmCore.place(uint256,uint256,uint256) (src/FarmCore.sol#352-386):\n[medium/medium] reentrancy-no-eth at src/FarmRewards.sol:555: Reentrancy in FarmRewards.claim(uint256) (src/FarmRewards.sol#555-565):\n[medium/medium] reentrancy-no-eth at src/FarmRewards.sol:381: Reentrancy in FarmRewards._settleOne(address,uint256) (src/FarmRewards.sol#381-406):\n[medium/medium] reentrancy-no-eth at src/GridOperator.sol:163: Reentrancy in GridOperator.shift(uint256) (src/GridOperator.sol#163-175):\n[medium/medium] reentrancy-no-eth at src/FeeRouter.sol:193: Reentrancy in FeeRouter.executeSells(uint256,uint256) (src/FeeRouter.sol#193-226):\n[medium/medium] reentrancy-no-eth at src/FarmCore.sol:119: Reentrancy in FarmCore.autoRepair(address,uint256) (src/FarmCore.sol#119-129):\n[medium/medium] reentrancy-no-eth at src/FarmCore.sol:292: Reentrancy in FarmCore._prepare(address) (src/FarmCore.sol#292-298):\n[medium/medium] reentrancy-no-eth at src/Enhancement.sol:152: Reentrancy in Enhancement.resolve(uint256) (src/Enhancement.sol#152-163):\n[medium/medium] reentrancy-no-eth at src/FarmRewards.sol:169: Reentrancy in FarmRewards.advanceEpoch() (src/FarmRewards.sol#169-243):\n[medium/medium] reentrancy-no-eth at src/FarmCore.sol:326: Reentrancy in FarmCore.paidPackBought(address,uint256,uint256) (src/FarmCore.sol#326-334):\n[medium/medium] reentrancy-no-eth at src/FarmRewards.sol:435: Reentrancy in FarmRewards._reward(address,uint256,FarmRewards.Share,uint256,uint256) (src/FarmRewards.sol#435-467):\n[medium/medium] reentrancy-no-eth at src/Enhancement.sol:77: Reentrancy in Enhancement.commit(uint256,uint256,bool) (src/Enhancement.sol#77-93):\n[medium/medium] reentrancy-no-eth at src/FarmRewards.sol:169: Reentrancy in FarmRewards.advanceEpoch() (src/FarmRewards.sol#169-243):\n[medium/medium] uninitialized-local at src/Economy.sol:187: Economy._insert(uint256,address).prev (src/Economy.sol#187) is a local variable never initialized\n[medium/medium] uninitialized-local at src/FarmEngine.sol:122: FarmEngine._stats(FarmEngine.Snapshot,uint256,bool,uint256).a (src/FarmEngine.sol#122) is a local variable never initialized\n[medium/medium] uninitialized-local at src/GridOperator.sol:122: GridOperator.gridStability(uint256).total (src/GridOperator.sol#122) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Civic.sol:159: Civic.fundWar(uint256).slot (src/Civic.sol#159) is a local variable never initialized\n[medium/medium] uninitialized-local at src/FarmCore.sol:545: FarmCore.process(address,uint256).removed (src/FarmCore.sol#545) is a local variable never initialized\n[medium/medium] uninitialized-local at src/GridOperator.sol:214: GridOperator._resolve(uint256,address).repeated (src/GridOperator.sol#214) is a local variable never initialized\n[medium/medium] uninitialized-local at src/GridOperator.sol:123: GridOperator.gridStability(uint256).largest (src/GridOperator.sol#123) is a local variable never initialized\n[medium/medium] uninitialized-local at sr","passed":true},{"durationMs":2678,"exitCode":0,"name":"aderyn","output":"[high] contract-locks-ether at src/GridOperator.sol:13: Contract locks Ether without a withdraw function (2 places)\n[high] eth-send-unchecked-address at src/Billboards.sol:94: ETH transferred without address checks (12 places)\n[high] misused-boolean at src/PackSale.sol:121: Misused boolean with logical operators (2 places)\n[high] reentrancy-state-change at src/Billboards.sol:98: Reentrancy: State change after external call (98 places)\n[high] reused-contract-name at src/Billboards.sol:15: Contract Name Reused in Different Files (7 places)\n[high] unprotected-initializer at src/MarketFactory.sol:18: Unprotected initializer\n[high] unsafe-casting at src/Economy.sol:143: Unsafe Casting of integers (2 places)\n[low] costly-loop at src/FarmCore.sol:318: Costly operations inside loop (15 places)\n[low] division-before-multiplication at src/FarmCore.sol:513: Incorrect Order of Division and Multiplication (2 places)\n[low] large-numeric-literal at src/Civic.sol:187: Large Numeric Literal (131 places)\n[low] literal-instead-of-constant at src/Billboards.sol:48: Literal Instead of Constant (676 places)\n[low] local-variable-shadowing at src/FarmRewards.sol:39: Local Variable Shadows State Variable (4 places)\n[low] missing-inheritance at src/Params.sol:6: Missing Inheritance\n[low] non-reentrant-not-first at src/FarmRewards.sol:586: `nonReentrant` is Not the First Modifier (2 places)\n[low] require-revert-in-loop at src/Billboards.sol:78: Loop Contains `require`/`revert` (13 places)\n[low] state-change-without-event at src/Billboards.sol:128: State Change Without Event (22 places)\n[low] unchecked-return at src/Enhancement.sol:98: Unchecked Return (18 places)\n[low] uninitialized-local-variable at src/Billboards.sol:78: Uninitialized Local Variable (36 places)\n[low] unused-import at src/Billboards.sol:8: Unused Import (6 places)\n[low] unused-public-function at src/Billboards.sol:47: Public Function Not Used Internally (19 places)","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"718baa8e335f61a1a0bad748212d5678fd1278b98329809056cb6e6a1f996813","verifiedTreeHash":"2d7e662b902f8087d5c9762e7adbb95740d9b786","verifierVersion":"0.1.0+67c588fa"},{"checks":[{"durationMs":58313,"exitCode":0,"name":"build","output":"Compiling 204 files with Solc 0.8.26\nSolc 0.8.26 finished in 57.98s\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 (5159): \"selfdestruct\" has been deprecated. Note that, starting from the Cancun hard fork, the underlying opcode no longer deletes the code and data associated with an account and only transfers its Ether to the beneficiary, unless executed in the same transaction in which the contract was created (see EIP-6780). Any use in newly deployed contracts is strongly discouraged even if the new behavior is taken into account. Future changes to the EVM might further reduce the functionality of the opcode.\n  --> test/V4CustodyStatefulV318.t.sol:16:9:\n   |\n16 |         selfdestruct(recipient);\n   |         ^^^^^^^^^^^^\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":64983,"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 595.49µs (360.84µ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.75ms (1.20ms 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 18.54ms (18.39ms 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 36.57ms (10.29ms 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 41.29ms (6.54ms 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 43.07ms (17.18ms 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 45.75ms (31.20ms 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 47.68ms (16.08ms 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 72.05ms (48.45ms 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 30.40ms (1.45ms 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 99.60ms (47.47ms 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 104.43ms (68.94ms 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 109.24ms (65.86ms 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 117.56ms (67.93ms 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, μ: 44939, ~: 45115)\nLogs:\n  Bound result 389\n\n[PASS] testFuzzSplitsConserveEveryWei(uint96) (runs: 256, μ: 207616, ~: 210856)\nLogs:\n  Bound result 3\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 134.81ms (112.03ms 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, μ: 30104, ~: 30016)\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 142.66ms (118.52ms 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 147.22ms (120.51ms 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 68.95ms (56.02ms 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 23.67ms (6.64ms 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 592.06µs (65.68µs CPU time)\n\nRan 1 test for test/L2LaunchV318.t.sol:L2V318ArtifactTest\n[PASS] testPinnedSevenWordConstructorWorksOnEmptyChainAndRuntimePassesFloor() (gas: 24419229)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 235.85ms (235.66ms 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 268.25ms (214.75ms 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 136.67µs (23.95µs 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 307.82ms (271.74ms CPU time)\n\nRan 6 tests for test/L2LaunchV318.t.sol:L2V318AuditTest\n[PASS] testIdleObservationBackfillCostsMoreButLeavesTwapUsable() (gas: 2533926)\nLogs:\n  hot swap gas: 163108\n  first swap after five idle days gas: 565137\n\n[PASS] testLaunchWindowMeterEffectOutlivesTheThirtyMinuteTaxWindow() (gas: 1113704)\n[PASS] testLaunchWindowMetersUseNetBuyFlowAndGrossSellFlow() (gas: 844811)\nLogs:\n  gross sell ETH wei: 90044456705534709298\n  pool-flow sell charge bps: 968\n  paid-flow counterfactual bps: 811\n\n[PASS] testNetworkFeeOrSpacingMismatchCannotInitializeAnotherPool() (gas: 213974)\n[PASS] testUnboundLaunchTaxWaitsForBinderThenPermissionlessOneShotHookBinding() (gas: 7868882)\n[PASS] testUnboundPostWindowBaseAndSurchargeAreAlsoHeldUntilBinding() (gas: 2123701)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 74.96ms (18.59ms 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 321.69ms (204.90ms 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 66.59ms (32.79ms 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, μ: 61412, ~: 63085)\nLogs:\n  Bound result 385\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 330.93ms (427.18ms 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 82.20ms (66.77ms CPU time)\n\nRan 2 tests for test/StandardMarket.t.sol:StandardMarketTest\n[PASS] testFuzzStandardSellNeverAddsProgressiveSurcharge(uint96) (runs: 256, μ: 1806068, ~: 1813963)\nLogs:\n  Bound result 3\n\n[PASS] testStandardBuyOnePercentAllToRewards() (gas: 1673466)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 346.94ms (321.89ms 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.62ms (1.74ms 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 32.77ms (6.79ms CPU time)\n\nRan 6 tests for test/Market.t.sol:MarketTest\n[PASS] testBuyChargesExactlyOnePercentAllToRewards() (gas: 1730007)\n[PASS] testFuzzTotalFeeHardCap(uint96) (runs: 256, μ: 1805845, ~: 1809180)\nLogs:\n  Bound result 3\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 427.80ms (455.31ms 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 34.64ms (19.35ms 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.75ms (1.57ms 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 964.64µs (853.93µs 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 18.39ms (1.86ms CPU time)\n\nRan 9 tests for test/LaunchToken.t.sol:LaunchTokenTest\n[PASS] testFuzzSelfTransferPreservesBalance(uint256) (runs: 256, μ: 55059, ~: 54766)\nLogs:\n  Bound result 3\n\n[PASS] testFuzzTransferFromSpendsOnlyApprovedAmount(uint256,uint256) (runs: 256, μ: 163199, ~: 165143)\nLogs:\n  Bound result 149\n  Bound result 50\n\n[PASS] testFuzzTransferMovesExactAmountWithoutChangingSupply(uint256) (runs: 256, μ: 92120, ~: 92296)\nLogs:\n  Bound result 3\n\n[PASS] testInfiniteApprovalRemainsUnchanged() (gas: 149447)\n[PASS] testInsufficientBalanceAndAllowanceCannotMoveTokens() (gas: 153092)\n[PASS] testMetadataAndEntireSupplyBelongToDeployer() (gas: 75827)\n[PASS] testNeitherDeployerNorThirdPartyHasMintOrAdminEntrypoints() (gas: 603521)\n[PASS] testRuntimeIsBoundedAndContainsNoForbiddenOpcodes() (gas: 1031094)\n[PASS] testZeroRecipientCannotBurnSupply() (gas: 47579)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 50.16ms (56.92ms 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 553.39ms (565.86ms 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 48.31ms (33.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, μ: 88571, ~: 90188)\nLogs:\n  Bound result 385\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 535.22ms (545.16ms CPU time)\n\nRan 1 test for test/LaunchToken.t.sol:LaunchTokenHookTest\n[PASS] testHookConstructionPreservesFactoryTokenSupply() (gas: 21707018)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 306.82ms (306.69ms 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 632.29ms (889.15ms 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 384.59ms (369.11ms CPU time)\n\nRan 6 tests for test/RewardPoolStatefulV318.t.sol:RewardPoolFailuresV318Test\n[PASS] testDonationZeroAndUnapprovedTransferLeaveAccountingUntouched() (gas: 103340)\n[PASS] testFuzzDonationReserveRecyclePayRoundTripConservesTokens(uint256,uint256) (runs: 1000, μ: 764265, ~: 766193)\nLogs:\n  Bound result 869\n  Bound result 621\n  Bound result 200000000000000000000000000\n  Bound result 869\n  Bound result 869\n  Bound result 621\n  Bound result 248\n\n[PASS] testHandlerReachesFundingReservationsRecycleAndFullPayment() (gas: 1136684)\nLogs:\n  Bound result 17000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 17000000000000000000\n  Bound result 7000000000000000000\n  Bound result 10000000000000000000\n  Bound result 604800\n  Bound result 33333340333333333333333333\n  Bound result 33333340333333333333333333\n\n[PASS] testInvalidRecipientsAndOverpaymentPreserveAnExistingReservation() (gas: 762680)\nLogs:\n  Bound result 200000000000000000000000000\n  Bound result 100\n  Bound result 100\n  Bound result 100\n\n[PASS] testPrincipalOneWeiShortCannotStartEvenWithOrdinaryDonations() (gas: 604795)\nLogs:\n  Bound result 199999999999999999999999999\n  Bound result 200000000000000000000000000\n  Bound result 1\n\n[PASS] testReservePayRecycleAndRecordInflowRequireTheRightModule() (gas: 150202)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 569.25ms (573.27ms 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, μ: 476459, ~: 477920)\nLogs:\n  Bound result 11\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 697.19ms (696.38ms 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.02s (1.05s 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, μ: 1474189, ~: 1367460)\nLogs:\n  Bound result 76978844621386701393\n  Bound result 4295128741\n  Bound result 1\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 1.04s (443.69ms 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, μ: 522724, ~: 524715)\nLogs:\n  Bound result 4606429\n  Bound result 3\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 1.08s (1.01s 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 1.28s (1.83s CPU time)\n\nRan 7 tests for test/HeartbeatBpsV313.t.sol:HeartbeatBpsV313Test\n[PASS] testFuzzAnyShareConservesEveryWeiAndNeverMovesTeamOrPot(uint16,uint96) (runs: 256, μ: 1381316, ~: 1609154)\nLogs:\n  Bound result 203\n  Bound result 1\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.32s (1.23s 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, μ: 1374196, ~: 1374014)\nLogs:\n  Bound result 3\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.36s (1.43s CPU time)\n\nRan 12 tests for test/V4FailuresV318.t.sol:V4FailuresV318Test\n[PASS] testBeforeAndAfterCallbacksRejectForeignCallerOrKey() (gas: 504915)\n[PASS] testExactOutputBothDirectionsAndZeroInputCannotMoveValue() (gas: 501394)\n[PASS] testFlushFailureIsAtomicAndTheSameFundsCanBeRetried() (gas: 3251764)\n[PASS] testFuzzBuyThenSellCannotExtractETH(uint96) (runs: 1000, μ: 2076970, ~: 2077165)\nLogs:\n  Bound result 4999999999000002980\n\n[PASS] testFuzzRouterMinimumOutputRevertsTheEntireBuy(uint96,uint16) (runs: 1000, μ: 2121033, ~: 1506404)\nLogs:\n  Bound result 4999999999999004572\n  Bound result 794\n\n[PASS] testInitializationCannotBeReplayedOrAuthorizedByASpoofedSender() (gas: 106699)\n[PASS] testInsufficientManagerFloatRejectsBuyWithoutChargingAnything() (gas: 447756)\n[PASS] testRealLiquidityExhaustionRollsBackTheTaxAndEveryBalance() (gas: 1315015)\n[PASS] testReentrantKeeperCannotWithdrawTheSameCreditTwice() (gas: 3271552)\n[PASS] testRejectingKeeperPreservesCreditAndCannotBlockOtherRecipients() (gas: 3354675)\n[PASS] testSystemBuyCannotStartDuringWarmupOrIgnoreMinimumOutput() (gas: 1893593)\n[PASS] testUnauthorizedSystemTradingAndUnsolicitedCallbackLeaveHeldFeesIntact() (gas: 906371)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 1.40s (1.82s 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 1.09s (2.12ms 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 875.19ms (27.86ms 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 1.44s (1.48s CPU time)\n\nRan 1 test for test/RewardPoolStatefulV318.t.sol:RewardPoolStatefulV318Test\n[PASS]\nRewardPoolStatefulV318Test invariants:\n[PASS] invariant_ActualCustodyEqualsAllInflowsLessPayments\n[PASS] invariant_FixedSupplyStaysInsideTheClosedActorSet\n[PASS] invariant_ReleasedPrincipalAndDonationsBackEveryReservation\n RewardPoolStatefulV318Test invariants (runs: 256, calls: 24576, reverts: 0)\n\n╭-----------------------+---------------------+-------+---------+----------╮\n| Contract              | Selector            | Calls | Reverts | Discards |\n+==========================================================================+\n| RewardPoolV318Handler | advance             | 2785  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| RewardPoolV318Handler | donate              | 2696  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| RewardPoolV318Handler | overReserve         | 2712  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| RewardPoolV318Handler | pay                 | 2701  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| RewardPoolV318Handler | recycle             | 2741  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| RewardPoolV318Handler | reserve             | 2694  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| RewardPoolV318Handler | sendPrincipal       | 2768  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| RewardPoolV318Handler | startDrip           | 2799  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| RewardPoolV318Handler | unauthorizedPayment | 2680  | 0       | 0        |\n╰-----------------------+---------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 503275\n  Bound result 8000000000000000000\n  Bound result 2490\n  Bound result 24576\n  Bound result 2043\n  Bound result 176432203496054783114447400\n  Bound result 80049548288903779982100112\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 7900\n  Bound result 17000000000000000000\n  Bound result 316\n  Bound result 2330\n  Bound result 0\n  Bound result 3447218264\n  Bound result 0\n  Bound result 7926\n  Bound result 0\n  Bound result 0\n  Bound result 144\n  Bound result 903\n  Bound result 2980839431\n  Bound result 73655970458089233741591132\n  Bound result 44\n  Bound result 0\n  Bound result 0\n  Bound result 9849\n  Bound result 999999999999999999999999998\n  Bound result 350\n  Bound result 2457\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 96\n  Bound result 0\n  Bound result 99\n  Bound result 0\n  Bound result 0\n  Bound result 10648\n  Bound result 0\n  Bound result 0\n  Bound result 86401\n  Bound result 2022\n  Bound result 10844\n  Bound result 0\n  Bound result 1761649582\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1800000000\n  Bound result 501000000000000000000\n  Bound result 11000\n  Bound result 0\n  Bound result 0\n  Bound result 900\n  Bound result 0\n  Bound result 6048000\n  Bound result 3000000000000000000\n  Bound result 6550\n  Bound result 0\n  Bound result 0\n  Bound result 2999\n  Bound result 23100000000000000000000\n  Bound result 65400359868343948264470174\n  Bound result 5000000000000000000000\n  Bound result 149735\n  Bound result 1001\n  Bound result 248716235605313683\n  Bound result 62\n  Bound result 9676\n  Bound result 31084118203821611229474191\n  Bound result 8203\n  Bound result 0\n  Bound result 23100000000000000000000\n  Bound result 0\n  Bound result 178812949553536180172214843\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.86s (5.85s 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 9.65s (9.78s 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.01s (588.73ms 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.01s (1.24s 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 18.33s (2.11s 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, μ: 45599021, ~: 45616668)\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 18.34s (18.99s CPU time)\n\nRan 2 tests for test/V4CustodyStatefulV318.t.sol:V4CustodyStatefulV318Test\n[PASS]\nV4CustodyStatefulV318Test invariants:\n[PASS] invariant_ETHAndFixedTokenSupplyAreConserved\n[PASS] invariant_EveryCollectedWeiIsHeldRoutedOrSpent\n[PASS] invariant_InitializedPoolAndOneShotBindingStayFixed\n V4CustodyStatefulV318Test invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------------+--------------------+-------+---------+----------╮\n| Contract           | Selector           | Calls | Reverts | Discards |\n+======================================================================+\n| V318CustodyHandler | advance            | 1488  | 0       | 0        |\n|--------------------+--------------------+-------+---------+----------|\n| V318CustodyHandler | bind               | 1405  | 0       | 0        |\n|--------------------+--------------------+-------+---------+----------|\n| V318CustodyHandler | buy                | 1506  | 0       | 0        |\n|--------------------+--------------------+-------+---------+----------|\n| V318CustodyHandler | flush              | 1511  | 0       | 0        |\n|--------------------+--------------------+-------+---------+----------|\n| V318CustodyHandler | forcedDonation     | 1464  | 0       | 0        |\n|--------------------+--------------------+-------+---------+----------|\n| V318CustodyHandler | rejectedPriceLimit | 1490  | 0       | 0        |\n|--------------------+--------------------+-------+---------+----------|\n| V318CustodyHandler | rewardBuy          | 1512  | 0       | 0        |\n|--------------------+--------------------+-------+---------+----------|\n| V318CustodyHandler | routeTokens        | 1524  | 0       | 0        |\n|--------------------+--------------------+-------+---------+----------|\n| V318CustodyHandler | sell               | 1535  | 0       | 0        |\n|--------------------+--------------------+-------+---------+----------|\n| V318CustodyHandler | systemSell         | 1472  | 0       | 0        |\n|--------------------+--------------------+-------+---------+----------|\n| V318CustodyHandler | withdraw           | 1477  | 0       | 0        |\n╰--------------------+--------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 2000000000000000000\n  Bound result 4999999999900005719\n  Bound result 4133247089825586598\n  Bound result 4999999999900004664\n  Bound result 10337\n  Bound result 3960000000000000000\n  Bound result 1546\n  Bound result 79228162514264337593093423166\n  Bound result 65536\n  Bound result 18058\n  Bound result 79228162514264337593543950336\n  Bound result 8590257480\n  Bound result 50000000000000040\n  Bound result 4999999999999999997\n  Bound result 30000000000000\n  Bound result 1067335371\n  Bound result 2655878344\n  Bound result 24\n  Bound result 616\n  Bound result 79228162514264337593543950336\n  Bound result 16096\n  Bound result 30000000000000000\n  Bound result 17452\n  Bound result 8590257480\n  Bound result 142386482640905498\n  Bound result 79228162514264337589248833686\n  Bound result 50000000000013134\n  Bound result 42951287400000\n  Bound result 79228162514264337589248828872\n  Bound result 217\n  Bound result 645\n  Bound result 50000000000002612\n  Bound result 4295128741\n  Bound result 4295128741\n  Bound result 3196814598\n  Bound result 30000266\n  Bound result 99999999999990101\n  Bound result 3917147628962134041\n  Bound result 50000000000014343\n\n[PASS] testHandlerExercisesAllCustodyTransitions() (gas: 5272138)\nLogs:\n  Bound result 10000\n  Bound result 1000000000000000000\n  Bound result 5000000000000000000\n  Bound result 50000000000000000\n  Bound result 100000000000000000000\n  Bound result 7\n  Bound result 4295128741\n  Bound result 660\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 26.72s (26.65s 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   | 580   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | buy       | 603   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | claim     | 569   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | equip     | 630   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | expand    | 642   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | freeClaim | 584   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | fundPot   | 543   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | lock      | 580   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | resolve   | 570   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | rollover  | 562   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | settle    | 587   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | tokenPack | 589   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | unlock    | 571   | 0       | 0        |\n|-------------+-----------+-------+---------+----------|\n| GameHandler | unplace   | 582   | 0       | 0        |\n╰-------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 7436\n  Bound result 14000000000000000000\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 64.55s (64.51s CPU time)\n\nRan 64 test suites in 64.67s (183.01s CPU time): 365 tests passed, 0 failed, 6 skipped (371 total tests)\n","passed":true},{"durationMs":465,"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)\",\"LaunchToken.approve(address,uint256)\",\"LaunchToken.transfer(address,uint256)\",\"LaunchToken.transferFrom(address,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\":164,\"README.md\":91,\"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\":81,\"docs/api-v35.md\":41,\"docs/dependency-provenance.md\":9,\"docs/design.md\":69,\"docs/entropy-v34.md\":31,\"docs/l2-v318-handoff.md\":144,\"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\":263,\"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/LaunchToken.sol\":11,\"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/KeeperProfit.t.sol\":95,\"test/L2LaunchV318.t.sol\":380,\"test/LaunchToken.t.sol\":147,\"test/LazyAccounting.t.sol\":447,\"test/Market.t.sol\":121,\"test/OracleConformanceV37.t.sol\":105,\"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/RewardPoolStatefulV318.t.sol\":311,\"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/V318-coverage.md\":57,\"test/V33.t.sol\":561,\"test/V34.t.sol\":315,\"test/V39.t.sol\":213,\"test/V4CustodyStatefulV318.t.sol\":332,\"test/V4FailuresV318.t.sol\":329,\"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/helpers/V318ValueFixture.sol\":204,\"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":"f7bc5a9c7ffe66ead6e1ae5ae3f41037663a2f2514b7fd82c8d6b016e371e592","verifiedTreeHash":"8bf96d62845312ad555da7261bc3211ea66cc042","verifierVersion":"0.1.0+67c588fa"}]}