{"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":"f513dfec-9148-4946-9bac-89bd249fb7aa","kind":"skill:build-contract-project","nodes":[{"acceptedSubmissionHash":"779441f37d1bb863d9b63b08fa679616d9865852a44d8762c12eb04767828d7c","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","state":"accepted"}],"objective":"Add:\n- An immutable custom ERC-20 token named \"Swarm Inu\" with symbol \"SI\", total supply 1,000,000,000 with 18 decimals, minted entirely to the deployer in constructor. No owner, no minting after launch, no fees in token logic.\n- A Uniswap v4 Hook for the SI/IMD pool with a fixed 2% fee taken in the swap input token:\n  * For Buys (IMD in): 80% to SI Community Vault, 20% to creator address <YOUR_WALLET>.\n  * For Sells (SI in): 50% burned to 0x000000000000000000000000000000000000dEaD, 50% sent to SI Community Vault.\n  * Fail-safe design: fee transfers must never revert or block the swap under any condition.\n- An SI Community Vault contract that holds IMD and SI permanently (no withdrawal, no admin, no redeem functions), with public view functions for total IMD held, total SI locked, and total SI burned.\n- Complete Foundry/Hardhat test suite covering buy/sell fee splits, vault holdings, burn metrics, and non-blocking swap error handling.\n- Update README.md with contract addresses, architecture layout, social links (Twitter: https://x.com/swarminu, Website: https://www.swarminu.xyz/), and deployment parameters.\n\nFix:\n- Replace any existing placeholder token logic or generic test code in the repo with the custom SI token, v4 hook, and vault contracts.\n\nRemove:\n- Any unused sample contracts, standard mint/burn owner controls, or upgradeability components from the current codebase.","parentJobId":"1cbe0c09-ce4f-4428-a5ce-a6017c520bad","planHash":"24f33f43ba46a69fc3a1ce1bdac43e0137825d1ab30c65cda0a2786ba40cb7c3","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"019d5d85-5f0a-4d6a-aeae-93163ae147fb","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-826-swarm-inu"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"50904","feedbackHash":"54be196ccf5e28c6824a696fb24aed205e81753f794e3f25d5de6bf2dbdea69a","nodeKey":"build_contract_project","submissionHash":"779441f37d1bb863d9b63b08fa679616d9865852a44d8762c12eb04767828d7c","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"e13f927c9d1535663e2d634585e84b1142aaed24206fb8da9d629e4c5208a9f6","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"1194347c36de968412c22619c1172a5640c672adf5de3be71d080147b36ba8ca","device":"c4f696e22e7a36f7","findings":[],"hash":"779441f37d1bb863d9b63b08fa679616d9865852a44d8762c12eb04767828d7c","nodeId":"05aaaa37-c689-41c5-a845-d7ff21976ff1","outcome":"completed","summary":"Completed locally:\n\n- Corrected token name to **Swarm Inu**, preserving fixed supply and immutable ERC20 behavior.\n- Validated the existing 2% hook and permanent vault; added four payout-failure and recovery tests.\n- Updated architecture, deployment parameters, address status, and validation documentation.\n\n**Checks passed:** `forge build`, `forge test` — **78 tests**, and `forge fmt --check`.\n\nProtected files remain unchanged. Creator wallet and verified deployment addresses remain required inputs. No on-chain transactions were performed.","treeHash":"66ac5f07f3f04b9346a1e931b22f4037e66699fc","usage":{"cachedInputTokens":1287040,"inputTokens":88014,"model":"gpt-6-astra","outputTokens":13028,"runtime":"codex","turns":6,"wallClockMs":438544}}],"verification":[{"checks":[{"durationMs":5457,"exitCode":0,"name":"build","output":"Compiling 90 files with Solc 0.8.26\nSolc 0.8.26 finished in 5.27s\nCompiler run successful!\nwarning[unused-return]: return value of an external call is not used\n   ╭▸ src/LaunchLiquidity.sol:25:33\n   │\n25 │           (BalanceDelta delta,) = manager.modifyLiquidity(\n   │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n26 │ ┃             seed.key,\n27 │ ┃             ModifyLiquidityParams(seed.tickLower, seed.tickUpper, int256(uint256(seed.liquidity)), bytes32(0)),\n28 │ ┃             \"\"\n29 │ ┃         );\n   │ ┗━━━━━━━━━┛\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/LaunchLiquidity.sol:36:51\n   │\n36 │             manager.take(currency, address(this), uint256(int256(delta)));\n   │                                                   ━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint256' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/LaunchLiquidity.sol:38:28\n   │\n38 │             uint256 owed = uint256(-int256(delta));\n   │                            ━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint256' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unused-return]: return value of an external call is not used\n   ╭▸ src/LaunchLiquidity.sol:40:17\n   │\n40 │                 manager.settle{value: owed}();\n   │                 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\nwarning[reentrancy-no-eth]: external call can be reentered before `activePayer` is updated\n   ╭▸ src/SISwapRouter.sol:70:13\n   │\n70 │             poolManager.unlock(abi.encode(Request(key, params, maxInput, minOutput, recipient))), (BalanceDelta)\n   │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/reentrancy-no-eth\n\nwarning[unused-return]: return value of an external call is not used\n   ╭▸ src/LaunchLiquidity.sol:44:17\n   │\n44 │                 manager.settle();\n   │                 ━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n   ╭▸ src/SIFeeHook.sol:61:9\n   │\n61 │         address partialFillRouter_\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n   ╭▸ src/SIFeeHook.sol:57:9\n   │\n57 │         address si_,\n   │         ━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n   ╭▸ src/SIFeeHook.sol:58:9\n   │\n58 │         address imd_,\n   │         ━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n   ╭▸ src/SISwapRouter.sol:62:13\n   │\n62 │         if (block.timestamp > deadline) revert DeadlineExpired();\n   │             ━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/block-timestamp\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SISwapRouter.sol:112:9\n    │\n112 │         emit SwapExecuted(payer, request.recipient, Currency.unwrap(input), inputAmount, outputAmount, refund);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:89:59\n   │\n89 │         if (inputDelta > 0 || outputDelta < 0 || refund > uint256(-inputDelta)) revert InvalidSwapDelta();\n   │                                                           ━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint256' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:94:27\n   │\n94 │             inputDelta += int256(refund);\n   │                           ━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'int256' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:96:34\n   │\n96 │                 ? toBalanceDelta(int128(inputDelta), int128(outputDelta))\n   │                                  ━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'int128' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:96:54\n   │\n96 │                 ? toBalanceDelta(int128(inputDelta), int128(outputDelta))\n   │                                                      ━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'int128' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:97:34\n   │\n97 │                 : toBalanceDelta(int128(outputDelta), int128(inputDelta));\n   │                                  ━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'int128' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:97:55\n   │\n97 │                 : toBalanceDelta(int128(outputDelta), int128(inputDelta));\n   │                                                       ━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'int128' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SISwapRouter.sol:100:31\n    │\n100 │         uint256 inputAmount = uint256(-inputDelta);\n    │                               ━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SISwapRouter.sol:101:32\n    │\n101 │         uint256 outputAmount = uint256(outputDelta);\n    │                                ━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:110:57\n    │\n110 │         uint256 reserved = params.amountSpecified < 0 ? uint256(-params.amountSpecified) / 50 : 0;\n    │                                                         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:111:63\n    │\n111 │         return (IHooks.beforeSwap.selector, toBeforeSwapDelta(int128(int256(reserved)), 0), 0);\n    │                                                               ━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'int128' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:111:70\n    │\n111 │         return (IHooks.beforeSwap.selector, toBeforeSwapDelta(int128(int256(reserved)), 0), 0);\n    │                                                                      ━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'int256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[reentrancy-no-eth]: external call can be reentered before `swapping` is updated\n    ╭▸ src/SIFeeHook.sol:148:13\n    │\n148 │             poolManager.mint(sender, input.toId(), refund);\n    │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-no-eth\n\nwarning[reentrancy-no-eth]: external call can be reentered before `swapping` is updated\n    ╭▸ src/SIFeeHook.sol:190:9\n    │\n190 │         poolManager.mint(address(this), currency.toId(), fee);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-no-eth\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SIFeeHook.sol:197:9\n    │\n197 │         emit FeeAccrued(token, fee);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SIFeeHook.sol:213:25\n    │\n213 │         if (!delivered) emit PayoutDeferred(Currency.unwrap(currency), recipient, amount);\n    │                         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:125:28\n    │\n125 │         uint256 netInput = uint256(-int256(inputDelta));\n    │                            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:128:45\n    │\n128 │             ? _exactInputFee(sender, input, uint256(-params.amountSpecified), netInput)\n    │                                             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:130:59\n    │\n130 │         int128 returnedFee = params.amountSpecified > 0 ? int128(int256(fee)) : int128(0);\n    │                                                           ━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'int128' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:130:66\n    │\n130 │         int128 returnedFee = params.amountSpecified > 0 ? int128(int256(fee)) : int128(0);\n    │                                                                  ━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'int256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SIFeeHook.sol:149:13\n    │\n149 │             emit InputRefund(sender, Currency.unwrap(input), refund);\n    │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SIFeeHook.sol:171:25\n    │\n171 │         if (!delivered) emit PayoutDeferred(currency, recipient, amount);\n    │                         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:157:78\n    │\n157 │         if (amount == 0 || amount > pending[currency][recipient] || amount > uint256(uint128(type(int128).max))) {\n    │                                                                              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:157:86\n    │\n157 │         if (amount == 0 || amount > pending[currency][recipient] || amount > uint256(uint128(type(int128).max))) {\n    │                                                                                      ━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint128' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SIFeeHook.sol:223:9\n    │\n223 │         emit PayoutDelivered(Currency.unwrap(currency), recipient, amount);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\n","passed":true},{"durationMs":19332,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 11 tests for test/TokenVault.t.sol:TokenVaultTest\n[PASS] testFuzz_allowanceConsumptionAndRevocation(uint256,uint256) (runs: 256, μ: 204714, ~: 206466)\nLogs:\n  Bound result 0\n  Bound result 0\n\n[PASS] testFuzz_transferConservesSupplyAndDeliversExactAmount(uint256) (runs: 256, μ: 158625, ~: 158733)\nLogs:\n  Bound result 328618368647\n\n[PASS] test_infiniteAllowanceStaysInfinite() (gas: 121498)\n[PASS] test_invalidZeroAddresses() (gas: 106415)\n[PASS] test_metadataAndConstructorMint() (gas: 80624)\n[PASS] test_noMintOrHolderControl() (gas: 268991)\n[PASS] test_rejectedTransfersPreserveBalancesAndAllowance() (gas: 222407)\n[PASS] test_vaultDirectDonationsAndBurnViews() (gas: 381979)\n[PASS] test_vaultHasNoExitOrApprovalAndCannotBeDrainedByDeployer() (gas: 342327)\n[PASS] test_vaultRejectsInvalidTokenConfiguration() (gas: 6024)\n[PASS] test_zeroAndSelfTransfers() (gas: 73098)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 11.24ms (19.40ms CPU time)\n\nRan 9 tests for test/SIFeeHardening.t.sol:SIFeeHardeningTest\n[PASS] test_bothPayoutsCanExhaustGasWithoutBlockingBuyOrLaterSell() (gas: 953836)\n[PASS] test_creatorCannotBeAProtocolOrSinkAddress() (gas: 15586)\n[PASS] test_deployerAndStrangerCannotChangeFeesPauseUpgradeOrWithdraw() (gas: 1111182)\n[PASS] test_gasGriefRetryIsBoundedReturnsFalseAndReleasesGuard() (gas: 1243732)\n[PASS] test_insufficientRetryGasDefersWithoutLosingDebt() (gas: 557715)\n[PASS] test_lowGasSwapDefersPayoutsAndStillChargesTheFixedFee() (gas: 327908)\n[PASS] test_retryReentryCannotStealOtherDebtOrDoublePay() (gas: 787645)\n[PASS] test_retryReturnBombLeavesDebtBackedAndCanRecover() (gas: 865654)\n[PASS] test_trueReturnWithoutPaymentCannotDestroyRecipientEntitlements() (gas: 980348)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 85.56ms (10.46ms CPU time)\n\nRan 13 tests for test/SIAdversarialBoundaries.t.sol:SIAdversarialBoundariesTest\n[PASS] testFuzz_exactOutputChargesOnlyInputCurrencyAndExactWalletSpend(uint256,bool) (runs: 1000, μ: 406736, ~: 415098)\nLogs:\n  Bound result 1151\n\n[PASS] testFuzz_transferFromSelfConsumesOnlyFiniteAllowance(uint256,uint256) (runs: 1000, μ: 140459, ~: 140802)\nLogs:\n  Bound result 914035874004689911662659\n  Bound result 11134533418358168215022245573229413948638287\n\n[PASS] test_callbackStateMachineRejectsRepetitionAndRecovers() (gas: 633522)\n[PASS] test_everyPoolKeyComponentIsBoundToTheIntendedPool() (gas: 588221)\n[PASS] test_feeAndSplitRoundingAtOneWeiAndEachThreshold() (gas: 13881448)\n[PASS] test_hookConstructorRejectsMismatchedDependenciesAndMissingCode() (gas: 12640)\n[PASS] test_hookRejectsZeroAndOutOfInt128DomainBeforeAnyReservation() (gas: 612631)\n[PASS] test_maximumSupportedBudgetReservationDoesNotOverflow() (gas: 70114)\n[PASS] test_maximumTransferAndFailedDelegatedTransferPreserveState() (gas: 119353)\n[PASS] test_noReturnTransferFromWorksAndOutputGoesToChosenRecipient() (gas: 976762)\n[PASS] test_routerRejectsSelfAndManagerAsRecipientAndUnauthenticatedCallback() (gas: 106805)\n[PASS] test_settlementFailuresRollBackMutationsPayoutsAndFiniteAllowance() (gas: 4572833)\n[PASS] test_transferFromCallbackCannotStartNestedSwap() (gas: 1879323)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 85.71ms (146.91ms CPU time)\n\nRan 23 tests for test/SIFeeHook.t.sol:SIFeeHookTest\n[PASS] testFuzz_feeSplitsAndConservation(uint96,bool) (runs: 256, μ: 435214, ~: 431701)\nLogs:\n  Bound result 3408724957\n\n[PASS] test_alternateRouterFullFillWorksButPartialFillRollsBack() (gas: 623896)\n[PASS] test_callbacksAndDeliveryRejectUnauthorizedCallers() (gas: 182579)\n[PASS] test_emptyLiquidityRefundsEntireReservation() (gas: 744649)\n[PASS] test_exactInputBuysAndSellsChargeInputCurrency() (gas: 765301)\n[PASS] test_exactOutputBuysAndSellsChargeGrossInputFee() (gas: 773853)\n[PASS] test_existingRouterClaimsAreNotSpentByNextTrader() (gas: 404669)\n[PASS] test_failedBurnDoesNotBlockVaultPaymentOrSubsequentSwaps() (gas: 1479008)\n[PASS] test_failedRecipientsDoNotBrickAndFailedRetryIsAtomic() (gas: 1039852)\n[PASS] test_firstSingleSidedBuyDefersThenAnyoneCanFlush() (gas: 41591472)\n[PASS] test_firstSingleSidedExactOutputSellWithReverseOrdering() (gas: 7238346)\n[PASS] test_firstSingleSidedSellDefersBurnUntilInputSettles() (gas: 41900061)\n[PASS] test_flushCannotRedirectOrExceedFixedDebt() (gas: 518238)\n[PASS] test_gasGriefDeferredAndNoReturnSupported() (gas: 615273)\n[PASS] test_partialExactInputRefundsUnusedFeeClaims() (gas: 469122)\n[PASS] test_partialExactOutputHasFeeOnActualInputAndHonorsMinimum() (gas: 424160)\n[PASS] test_poolValidationAndPermissionlessInitialization() (gas: 81877)\n[PASS] test_recipientBalanceQueryFailuresDeferFeesWithoutBlockingBuy() (gas: 863673)\n[PASS] test_reentryDuringPayoutCannotFlushOrCorruptAccounting() (gas: 680481)\n[PASS] test_reverseTokenOrdering() (gas: 6810228)\n[PASS] test_routerDeadlineRecipientAndAllowanceFailures() (gas: 539770)\n[PASS] test_routerLimitsRollbackAllFeeTransfers() (gas: 762561)\n[PASS] test_shortReturnAndReturnBombCannotBrickPayouts() (gas: 654719)\nSuite result: ok. 23 passed; 0 failed; 0 skipped; finished in 97.04ms (196.33ms CPU time)\n\nRan 6 tests for test/LaunchHelpers.t.sol:LaunchHelpersTest\n[PASS] testFuzz_hookFlagsRejectAdditionalPermissions(uint160,uint160) (runs: 256, μ: 3954, ~: 3954)\n[PASS] test_emptySeedRejected() (gas: 46027)\n[PASS] test_guardAllowsOnlyDeployerInitializationThroughManager() (gas: 100695051)\n[PASS] test_nativeSeedAndSwapSettlement() (gas: 548010)\n[PASS] test_seedAndSwapSettleActualManagerBalances() (gas: 545530)\n[PASS] test_seedFailsWithoutFundsAndLeavesPoolUnfunded() (gas: 251047)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 118.49ms (80.50ms CPU time)\n\nRan 5 tests for test/PrepareLaunch.t.sol:PrepareLaunchTest\n[PASS] test_feeOnlyPlanPreservesExistingTokenVaultAndAllowsAnyInitializer() (gas: 361879710)\n[PASS] test_feeOnlyPlanRejectsWrongVaultAndInvalidParameters() (gas: 122425)\n[PASS] test_planDeploysPredictedContractsAndPreservesSupply() (gas: 177160773)\n[PASS] test_pricesMatchIndependentIntegerReferenceForBothCurrencyOrders() (gas: 185112630)\n[PASS] test_rejectsMissingAddressesAndUnsupportedDecimals() (gas: 108565)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 127.29ms (326.39ms CPU time)\n\nRan 2 tests for test/invariant/SIFeeAccountingInvariant.t.sol:SIAsCurrencyOneInvariantTest\n[PASS]\nSIAsCurrencyOneInvariantTest invariants:\n[PASS] invariant_allTokensAreConservedAcrossTradersPoolAndSinks\n[PASS] invariant_deferredFeesAreFullyBackedAndRouterRetainsNoFunds\n[PASS] invariant_feesArePaidOrRemainOwedToExactlyTheIntendedRecipient\n SIAsCurrencyOneInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭----------------------+-------------------+-------+---------+----------╮\n| Contract             | Selector          | Calls | Reverts | Discards |\n+=======================================================================+\n| SIFeeSequenceHandler | donateSI          | 2696  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | flush             | 2709  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | rejectedSwap      | 2741  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | roundTrip         | 2808  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | setPayoutBehavior | 2714  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | swap              | 2716  | 0       | 0        |\n╰----------------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 120000\n  Bound result 100\n  Bound result 3101934468\n  Bound result 4187523965593206900\n  Bound result 50000000000000000000\n  Bound result 757673447068580946117\n  Bound result 18140\n  Bound result 1000000\n  Bound result 7000000000000000000\n  Bound result 71\n  Bound result 826070224987462352661\n  Bound result 53261\n  Bound result 3570988006\n  Bound result 2827\n  Bound result 120000\n  Bound result 4841\n  Bound result 13357\n  Bound result 1239446556\n  Bound result 9468\n  Bound result 6430\n  Bound result 12237\n  Bound result 14129\n  Bound result 315360000\n  Bound result 5490\n  Bound result 200000\n  Bound result 2217\n  Bound result 10100\n  Bound result 160587340303074464591\n  Bound result 826\n  Bound result 1261497\n  Bound result 4388\n  Bound result 17459\n  Bound result 32000000000000000000\n  Bound result 3045\n  Bound result 16797\n  Bound result 8041\n  Bound result 14924524416475\n  Bound result 4795\n  Bound result 36781677417171168754\n  Bound result 4010\n  Bound result 5100\n  Bound result 13838\n  Bound result 7475715444360774440\n  Bound result 255\n  Bound result 202022341876508512450\n  Bound result 2726435372248\n  Bound result 26718134743849086764\n  Bound result 30349020936347581338\n  Bound result 130617848874937608\n\n[PASS] test_sequenceWitnessIncludesFailurePartialFillRecoveryAndRoundTrip() (gas: 3004214)\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 16163266782143934272\n  Bound result 300000000000000000000\n  Bound result 10000000000000000000\n  Bound result 10000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 10.21s (10.20s CPU time)\n\nRan 2 tests for test/invariant/SIFeeAccountingInvariant.t.sol:SIAsCurrencyZeroInvariantTest\n[PASS]\nSIAsCurrencyZeroInvariantTest invariants:\n[PASS] invariant_allTokensAreConservedAcrossTradersPoolAndSinks\n[PASS] invariant_deferredFeesAreFullyBackedAndRouterRetainsNoFunds\n[PASS] invariant_feesArePaidOrRemainOwedToExactlyTheIntendedRecipient\n SIAsCurrencyZeroInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭----------------------+-------------------+-------+---------+----------╮\n| Contract             | Selector          | Calls | Reverts | Discards |\n+=======================================================================+\n| SIFeeSequenceHandler | donateSI          | 2696  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | flush             | 2709  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | rejectedSwap      | 2741  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | roundTrip         | 2808  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | setPayoutBehavior | 2714  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | swap              | 2716  | 0       | 0        |\n╰----------------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 120000\n  Bound result 12111\n  Bound result 4187523965593206900\n  Bound result 50000000000000000000\n  Bound result 757673447068580946117\n  Bound result 4507\n  Bound result 1000000\n  Bound result 7000000000000000000\n  Bound result 17957\n  Bound result 826070224987462352661\n  Bound result 53261\n  Bound result 15740\n  Bound result 2827\n  Bound result 120000\n  Bound result 4592\n  Bound result 8905\n  Bound result 9186\n  Bound result 56849323564263209778\n  Bound result 11980\n  Bound result 18004158106474723952\n  Bound result 315360000\n  Bound result 5324\n  Bound result 200000\n  Bound result 12652\n  Bound result 15168\n  Bound result 11475\n  Bound result 826\n  Bound result 35\n  Bound result 2228\n  Bound result 17218\n  Bound result 32000000000000000000\n  Bound result 3404\n  Bound result 7634\n  Bound result 1\n  Bound result 14924524416475\n  Bound result 691458844644236179503\n  Bound result 36781677417171168754\n  Bound result 503615005\n  Bound result 18498\n  Bound result 13485\n  Bound result 457583992987195700543\n  Bound result 255\n  Bound result 202022341876508512450\n  Bound result 2726435372248\n  Bound result 26718134743849086764\n  Bound result 37028283228281514355\n\n[PASS] test_sequenceWitnessIncludesFailurePartialFillRecoveryAndRoundTrip() (gas: 3005200)\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 16163265149476112832\n  Bound result 300000000000000000000\n  Bound result 10000000000000000000\n  Bound result 10000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 10.35s (10.33s CPU time)\n\nRan 2 tests for test/invariant/TokenVaultInvariant.t.sol:TokenVaultInvariantTest\n[PASS]\nTokenVaultInvariantTest invariants:\n[PASS] invariant_balancesAndAllowancesMatchIndependentLedger\n[PASS] invariant_vaultViewsIncludeAllDonationsAndBurnsForever\n TokenVaultInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------------+-----------------------+-------+---------+----------╮\n| Contract          | Selector              | Calls | Reverts | Discards |\n+========================================================================+\n| TokenVaultHandler | approve               | 2727  | 0       | 0        |\n|-------------------+-----------------------+-------+---------+----------|\n| TokenVaultHandler | attemptEscape         | 2704  | 0       | 0        |\n|-------------------+-----------------------+-------+---------+----------|\n| TokenVaultHandler | invalidTransfer       | 2722  | 0       | 0        |\n|-------------------+-----------------------+-------+---------+----------|\n| TokenVaultHandler | revokeAndAttemptSpend | 2707  | 0       | 0        |\n|-------------------+-----------------------+-------+---------+----------|\n| TokenVaultHandler | transfer              | 2731  | 0       | 0        |\n|-------------------+-----------------------+-------+---------+----------|\n| TokenVaultHandler | transferFrom          | 2793  | 0       | 0        |\n╰-------------------+-----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000\n  Bound result 0\n  Bound result 6241\n  Bound result 1631\n  Bound result 0\n  Bound result 1114\n  Bound result 0\n  Bound result 2827\n  Bound result 2909\n  Bound result 203400076\n  Bound result 0\n  Bound result 1\n  Bound result 957625571\n  Bound result 5282\n  Bound result 3337\n  Bound result 662\n  Bound result 1573\n  Bound result 8633\n  Bound result 100\n  Bound result 112540562167582694236408727\n  Bound result 99\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 10000000000000000000000\n  Bound result 0\n  Bound result 2500\n  Bound result 0\n\n[PASS] test_handlerExercisesFullBalanceInfiniteApprovalAndRejection() (gas: 2373985)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 249999999000000000000000000\n  Bound result 249999999000000000000000000\n  Bound result 315360000\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 19.20s (19.20s CPU time)\n\nRan 9 test suites in 19.20s (40.28s CPU time): 73 tests passed, 0 failed, 0 skipped (73 total tests)\n","passed":true},{"durationMs":92,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SIFeeHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"SIFeeHook.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"SIFeeHook.deliver(address,address,uint256)\",\"SIFeeHook.flush(address,address,uint256)\",\"SIFeeHook.unlockCallback(bytes)\",\"SISwapRouter.swap((address,address,uint24,int24,address),(bool,int256,uint160),uint256,uint256,address,uint256)\",\"SISwapRouter.unlockCallback(bytes)\",\"SwarmInu.approve(address,uint256)\",\"SwarmInu.transfer(address,uint256)\",\"SwarmInu.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":17,\"README.md\":154,\"VALIDATION.md\":26,\"foundry.toml\":16,\"launch.json\":28,\"remappings.txt\":3,\"script/PrepareLaunch.s.sol\":215,\"src/HookFlags.sol\":16,\"src/LaunchLiquidity.sol\":48,\"src/PoolInitializationGuard.sol\":29,\"src/SICommunityVault.sol\":34,\"src/SIFeeHook.sol\":235,\"src/SISwapRouter.sol\":129,\"src/SwarmInu.sol\":12,\"src/interfaces/IERC20.sol\":14,\"src/vendor/openzeppelin/LICENSE\":22,\"src/vendor/openzeppelin/contracts/interfaces/draft-IERC6093.sol\":161,\"src/vendor/openzeppelin/contracts/token/ERC20/ERC20.sol\":316,\"src/vendor/openzeppelin/contracts/token/ERC20/IERC20.sol\":79,\"src/vendor/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":26,\"src/vendor/openzeppelin/contracts/utils/Context.sol\":28,\"test/LaunchHelpers.t.sol\":163,\"test/PrepareLaunch.t.sol\":190,\"test/SIAdversarialBoundaries.t.sol\":303,\"test/SIFeeHardening.t.sol\":178,\"test/SIFeeHook.t.sol\":538,\"test/TESTING.md\":28,\"test/TokenVault.t.sol\":196,\"test/helpers/SIIntegrationFixture.sol\":81,\"test/invariant/SIFeeAccountingInvariant.t.sol\":381,\"test/invariant/TokenVaultInvariant.t.sol\":210,\"test/mocks/AdversarialIMD.sol\":89,\"test/mocks/SettlementIMD.sol\":65},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":1614,"exitCode":0,"name":"slither","output":"[medium/medium] reentrancy-no-eth at src/SISwapRouter.sol:53: Reentrancy in SISwapRouter.swap(PoolKey,SwapParams,uint256,uint256,address,uint256) (src/SISwapRouter.sol#53-73):\n[medium/medium] reentrancy-no-eth at src/SIFeeHook.sol:114: Reentrancy in SIFeeHook.afterSwap(address,PoolKey,SwapParams,BalanceDelta,bytes) (src/SIFeeHook.sol#114-134):\n[medium/medium] unused-return at src/LaunchLiquidity.sol:34: LaunchLiquidity.settle(IPoolManager,Currency,int128) (src/LaunchLiquidity.sol#34-47) ignores return value by manager.settle{value: owed}() (src/LaunchLiquidity.sol#40)\n[medium/medium] unused-return at src/LaunchLiquidity.sol:22: LaunchLiquidity.settleSeed(IPoolManager,bytes) (src/LaunchLiquidity.sol#22-32) ignores return value by (delta,None) = manager.modifyLiquidity(seed.key,ModifyLiquidityParams(seed.tickLower,seed.tickUpper,int256(uint256(seed.liquidity)),bytes32(0)),) (src/LaunchLiquidity.sol#25-29)\n[medium/medium] unused-return at src/LaunchLiquidity.sol:34: LaunchLiquidity.settle(IPoolManager,Currency,int128) (src/LaunchLiquidity.sol#34-47) ignores return value by manager.settle() (src/LaunchLiquidity.sol#44)\n[low/medium] reentrancy-benign at src/SIFeeHook.sol:188: Reentrancy in SIFeeHook._distribute(Currency,uint256) (src/SIFeeHook.sol#188-200):\n[low/medium] reentrancy-events at src/SISwapRouter.sol:76: Reentrancy in SISwapRouter.unlockCallback(bytes) (src/SISwapRouter.sol#76-114):\n[low/medium] reentrancy-events at src/SIFeeHook.sol:216: Reentrancy in SIFeeHook._deliver(Currency,address,uint256) (src/SIFeeHook.sol#216-224):\n[low/medium] reentrancy-events at src/SIFeeHook.sol:188: Reentrancy in SIFeeHook._distribute(Currency,uint256) (src/SIFeeHook.sol#188-200):\n[low/medium] reentrancy-events at src/SIFeeHook.sol:136: Reentrancy in SIFeeHook._exactInputFee(address,Currency,uint256,uint256) (src/SIFeeHook.sol#136-151):\n[low/medium] reentrancy-events at src/SIFeeHook.sol:114: Reentrancy in SIFeeHook.afterSwap(address,PoolKey,SwapParams,BalanceDelta,bytes) (src/SIFeeHook.sol#114-134):\n[low/medium] timestamp at src/SISwapRouter.sol:53: SISwapRouter.swap(PoolKey,SwapParams,uint256,uint256,address,uint256) (src/SISwapRouter.sol#53-73) uses timestamp for comparisons","passed":true},{"durationMs":555,"exitCode":0,"name":"aderyn","output":"[high] reentrancy-state-change at src/SIFeeHook.sol:75: Reentrancy: State change after external call (3 places)\n[high] reused-contract-name at src/interfaces/IERC20.sol:4: Contract Name Reused in Different Files (2 places)\n[low] large-numeric-literal at src/SIFeeHook.sol:26: Large Numeric Literal (5 places)\n[low] literal-instead-of-constant at src/SIFeeHook.sol:110: Literal Instead of Constant (4 places)\n[low] missing-inheritance at src/PoolInitializationGuard.sol:10: Missing Inheritance\n[low] push-zero-opcode at src/vendor/openzeppelin/contracts/interfaces/draft-IERC6093.sol:3: PUSH0 Opcode (5 places)\n[low] state-change-without-event at src/SIFeeHook.sol:97: State Change Without Event (2 places)\n[low] unchecked-return at src/LaunchLiquidity.sol:44: Unchecked Return\n[low] unsafe-erc20-operation at src/LaunchLiquidity.sol:43: Unsafe ERC20 Operation (2 places)\n[low] unspecific-solidity-pragma at src/vendor/openzeppelin/contracts/interfaces/draft-IERC6093.sol:3: Unspecific Solidity Pragma (5 places)\n[low] unused-error at src/vendor/openzeppelin/contracts/interfaces/draft-IERC6093.sol:61: Unused Error (15 places)","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"779441f37d1bb863d9b63b08fa679616d9865852a44d8762c12eb04767828d7c","verifiedTreeHash":"66ac5f07f3f04b9346a1e931b22f4037e66699fc","verifierVersion":"0.1.0+94826a22"}]}