{"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":"6d479997-0416-4d2d-93b1-020290a0e09d","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"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":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"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":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"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":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"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":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"587567a5ef71546b5973ceaf6ef1dbbd590f49503b5ac9a6973ed86b89584857","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"587567a5ef71546b5973ceaf6ef1dbbd590f49503b5ac9a6973ed86b89584857","skillId":"build-contract-project","state":"failed"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","state":"waiting"}],"objective":"[SIMD-LAUNCH]\nToken name: SIMDTEST\nToken symbol: SIMDTEST\n\nThe token is named SIMDTEST with symbol SIMDTEST. It is launched paired with IMD on Uniswap v4. A total fixed supply of 1,000,000,000 tokens with 18 decimals is minted; 10% goes to the swarm, and 90% seeds the pool. The SIMDTESTHook contract acts on the onUniv4Swap callback to implement two key fees: first, during the initial 10 blocks after the pool opening, an anti-snipe swap fee starts at 30% and linearly decays to 0%, this fee is not burned but donated back to the pool's liquidity range via PoolManager's donate function; second, a fixed 1% fee on all swaps is collected in the paired currency IMD and forwarded to the SIMDTESTVault. The vault allows holders to stake SIMDTEST tokens and earn IMD rewards proportional to their stake and staking duration; users can stake, unstake, and claim IMD rewards at any time. The hook and vault contracts are immutable with no owner, no upgrades, and no pausability, ensuring transparency and trustlessness. Testing must cover the anti-snipe fee decay over the first 10 blocks, correct fee routing for both anti-snipe and staking components, staking and claiming mechanics in the vault, and verifying no unintended token burns or owner privileges are possible.\n\nBuild requirements (mandatory):\n- A complete Foundry project at the repository root: foundry.toml with solc 0.8.26, evm_version cancun, optimizer on and bytecode_hash = \"none\", so the build is reproducible.\n- Contracts: SIMDTESTHook, SIMDTESTVault. The hook is the hook of this launch's pool; keep its creation code within the EIP-3860 size limit.\n- No selfdestruct and no delegatecall anywhere in runtime code. No proxies, no owner, no upgradeability.\n- Chain: Ethereum mainnet (chainId 1). Uniswap v4 PoolManager: 0x000000000004444c5dc75cB358380D2e3dE08A90 (pass it to the hook constructor).\n- Paired currency: IMD, the ERC-20 at 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7 on Ethereum mainnet (18 decimals).\n- Every address the hook needs is known now and fixed at deployment; nothing may require an owner or a setter after launch.\n- launch.json pool: pairedCurrency 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 12500, tickSpacing 60, initialPrice \"79228162514264337593543950336\" (provenance only; the launch factory sets the opening price from the economics).","parentJobId":null,"planHash":"52aa9a0c9b66ff6ec642fcf6f078d327893b71f7b1a10fb688a4040d8ce032a4","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"6d479997-0416-4d2d-93b1-020290a0e09d","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-973-simdtest"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51489","feedbackHash":"96a883dde233f5bcadca28780f67ff315fa9d2be9b99a4fbaef79799e837fca9","nodeKey":"build_contract_project","submissionHash":"f693e8da0cb85c779bd0150f8e413b3117f3cb10cd6013e686f7bf17a70c3fb1","tag1":"verification:checks","tag2":"acceptance-v2","value":0}],"site":null,"snapshotHash":"e3462e123603cfc1376a518534b2a6feb805d336814340a1f862b51f62d54467","state":"blocked","submissions":[{"artifacts":[],"attempt":2,"bundleHash":null,"device":"d6981b1e15db2f76","findings":[],"hash":"0c45620a6ba89d196b7acdc7dbd8a6ef4fc5df9a35481aa6062c7d2ff2aba561","nodeId":"e65bd80c-4db3-494d-a3f3-8f42433795fd","outcome":"failed","summary":"needs input: The Ethereum mainnet recipient address for the swarm's 10% allocation (100,000,000 SIMDTEST) is missing; the brief provides no supported swarm placeholder or owner-settable setting. — Which Ethereum mainnet address should receive the swarm's 100,000,000 SIMDTEST allocation?","treeHash":null,"usage":{"cachedInputTokens":79488,"inputTokens":36864,"model":"gpt-6.1-sol","outputTokens":788,"runtime":"codex","turns":2,"wallClockMs":31546}},{"artifacts":[],"attempt":1,"bundleHash":"b9ebeaf952679d105adebc2be510a1d9d7ced5c5af06760cbe878c114281b3f1","device":"e8b60b2d2d013a4d","findings":[],"hash":"f693e8da0cb85c779bd0150f8e413b3117f3cb10cd6013e686f7bf17a70c3fb1","nodeId":"e65bd80c-4db3-494d-a3f3-8f42433795fd","outcome":"completed","summary":"Implemented SIMDTEST, the immutable v4 fee hook, staking vault, launch manifest, and vendored dependencies.\n\nVerified:\n- `forge build` — passes, including clean offline build\n- `forge test` — 30 tests pass\n- `forge fmt --check` — passes\n- Hook initcode — 9,948 bytes including arguments, below EIP-3860\n\n[README.md](/home/imd2/.identitymd/work/6d479997-0416-4d2d-93b1-020290a0e09d/e65bd80c-4db3-494d-a3f3-8f42433795fd/README.md) documents deployment, one-day reward streaming, and the launch factory’s responsibility for the 10% swarm / 90% pool allocation.","treeHash":"5714d951cce62876cf5c3e0cc00b216a84812ca6","usage":{"cachedInputTokens":1584768,"inputTokens":95018,"model":"gpt-6-astra","outputTokens":31486,"runtime":"codex","turns":7,"wallClockMs":990546}}],"verification":[{"checks":[{"durationMs":1861,"exitCode":0,"name":"build","output":"Compiling 86 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.74s\nCompiler run successful!\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n   ╭▸ src/SIMDTESTHook.sol:44:40\n   │\n44 │     constructor(IPoolManager manager_, address token_, address factory_) {\n   │                                        ━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n   ╭▸ src/SIMDTESTVault.sol:73:9\n   │\n73 │         emit Staked(msg.sender, amount);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[incorrect-strict-equality]: dangerous strict equality check on an externally-influenced value\n   ╭▸ src/SIMDTESTVault.sol:72:13\n   │\n72 │         if (stakingToken.balanceOf(address(this)) - previous != amount) revert UnsupportedTransfer();\n   │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/incorrect-strict-equality\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n   ╭▸ src/SIMDTESTVault.sol:84:9\n   │\n84 │         emit Unstaked(msg.sender, amount);\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/SIMDTESTVault.sol:94:13\n   │\n94 │             emit RewardPaid(msg.sender, amount);\n   │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n    ╭▸ src/SIMDTESTVault.sol:114:13\n    │\n114 │         if (elapsed > remainingScaled / rewardRateScaled) return remainingScaled;\n    │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/block-timestamp\n\nwarning[uninitialized-local]: local variable is read before being initialized\n   ╭▸ src/SIMDTESTHook.sol:99:77\n   │\n99 │         return (IHooks.beforeSwap.selector, toBeforeSwapDelta(int128(int256(fee)), 0), 0);\n   │                                                                             ━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/uninitialized-local\n\nwarning[non-reentrant-not-first]: `nonReentrant` is not the first modifier\n   ╭▸ src/SIMDTESTHook.sol:89:9\n   │\n89 │         nonReentrant\n   │         ━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/non-reentrant-not-first\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SIMDTESTHook.sol:99:63\n   │\n99 │         return (IHooks.beforeSwap.selector, toBeforeSwapDelta(int128(int256(fee)), 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/SIMDTESTHook.sol:99:70\n   │\n99 │         return (IHooks.beforeSwap.selector, toBeforeSwapDelta(int128(int256(fee)), 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[non-reentrant-not-first]: `nonReentrant` is not the first modifier\n    ╭▸ src/SIMDTESTHook.sol:108:32\n    │\n108 │     ) external onlyPoolManager nonReentrant returns (bytes4, int128) {\n    │                                ━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/non-reentrant-not-first\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIMDTESTHook.sol:114:54\n    │\n114 │             if (imdDelta != params.amountSpecified + int256(donation + staking)) revert PartialFill();\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/SIMDTESTHook.sol:117:24\n    │\n117 │         uint256 base = uint256(imdDelta < 0 ? -imdDelta : imdDelta);\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/SIMDTESTHook.sol:121:44\n    │\n121 │         return (IHooks.afterSwap.selector, int128(int256(donationFee + stakingFee)));\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/SIMDTESTHook.sol:121:51\n    │\n121 │         return (IHooks.afterSwap.selector, int128(int256(donationFee + stakingFee)));\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/SIMDTESTHook.sol:135:9\n    │\n135 │         emit SwapFees(donation, staking);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unused-return]: return value of an external call is not used\n    ╭▸ src/SIMDTESTHook.sol:129:13\n    │\n129 │             poolManager.donate(key, pairIs0 ? donation : 0, pairIs0 ? 0 : donation, \"\");\n    │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\nwarning[divide-before-multiply]: division before multiplication may lose precision\n    ╭▸ src/SIMDTESTHook.sol:149:46\n    │\n149 │             staking = anti == 0 ? totalFee : gross * STAKING_FEE_BPS / BPS;\n    │                                              ━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/divide-before-multiply\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIMDTESTHook.sol:139:24\n    │\n139 │         uint256 base = uint256(specified < 0 ? -specified : specified);\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/SIMDTESTHook.sol:151:25\n    │\n151 │             if (gross > uint256(uint128(type(int128).max))) revert InvalidSwapAmount();\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/SIMDTESTHook.sol:151:33\n    │\n151 │             if (gross > uint256(uint128(type(int128).max))) revert InvalidSwapAmount();\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\n","passed":true},{"durationMs":150,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 3 tests for test/Token.t.sol:TokenTest\n[PASS] testFuzzTransferConservation(uint256) (runs: 256, μ: 105866, ~: 105864)\nLogs:\n  Bound result 123507901516120552534318374\n\n[PASS] testMetadataFixedSupplyAndFactoryAllocation() (gas: 196366)\n[PASS] testZeroRecipientAndOverspendingRevert() (gas: 95277)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 5.45ms (5.76ms CPU time)\n\nRan 11 tests for test/Vault.t.sol:VaultTest\n[PASS] testDirectTransfersDoNotCreateStakeOrUnfundedRewards() (gas: 372759)\n[PASS] testEmptyVaultPausesStreamAndDoesNotGiftHistory() (gas: 759372)\n[PASS] testFuzzConservation(uint96,uint96,uint32,uint96) (runs: 256, μ: 1006513, ~: 1037105)\nLogs:\n  Bound result 731\n  Bound result 957625572\n  Bound result 19753\n  Bound result 13\n\n[PASS] testInvalidActionsAndAccountingRollback() (gas: 689699)\n[PASS] testReentrancyAndNonstandardTransferFailure() (gas: 1330523)\n[PASS] testRejectsInvalidTokens() (gas: 8247)\n[PASS] testRewardReentrancyAndFailureCannotTrapPrincipal() (gas: 1656691)\n[PASS] testSameTransactionStakeAndClaimCannotCaptureFees() (gas: 427191)\n[PASS] testStakeAmountAndTimeProportions() (gas: 858498)\n[PASS] testTopUpPreservesAccruedRewards() (gas: 604309)\n[PASS] testUnstakeAnyTimeAndClaimAfterExit() (gas: 720435)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 19.61ms (22.21ms CPU time)\n\nRan 16 tests for test/Hook.t.sol:HookTest\n[PASS] testDecayEveryBlockAndAllSwapModes() (gas: 20085255)\n[PASS] testDonationAccruesToLPAndCanBeCollected() (gas: 443275)\n[PASS] testExactOutputPartialFillReverts() (gas: 286005)\n[PASS] testFuzzFeeRouting(bool,bool,uint96,uint8) (runs: 256, μ: 503981, ~: 497880)\nLogs:\n  Bound result 9999999999999000106959\n\n[PASS] testHookInitcodeBelowEIP3860() (gas: 5413)\n[PASS] testInitializationAndPoolBinding() (gas: 206530)\n[PASS] testInvalidDeploymentAndUnminedHookAddress() (gas: 7635)\n[PASS] testInvalidSwapBoundsAndUninitializedPool() (gas: 7566852)\n[PASS] testNoLiquidityCannotCollectFees() (gas: 196200)\n[PASS] testNoOwnerUpgradePauseMintOrBurnPrivileges() (gas: 7163586)\n[PASS] testOnlyFactoryCanOpenNewPool() (gas: 7604342)\n[PASS] testOppositeCurrencyOrdering() (gas: 23277503)\n[PASS] testSpecifiedPairPartialFillRevertsAtomically() (gas: 304066)\n[PASS] testSwapFeeCanBeClaimedByStaker() (gas: 707800)\n[PASS] testUnauthorizedCallbacks() (gas: 128273)\n[PASS] testUnspecifiedPairPartialFillChargesActualAmount() (gas: 336048)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 69.40ms (87.20ms CPU time)\n\nRan 3 test suites in 70.15ms (94.46ms CPU time): 30 tests passed, 0 failed, 0 skipped (30 total tests)\n","passed":true},{"durationMs":45,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SIMDTEST.approve(address,uint256)\",\"SIMDTEST.transfer(address,uint256)\",\"SIMDTEST.transferFrom(address,address,uint256)\",\"SIMDTESTHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"SIMDTESTHook.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\",\"SIMDTESTHook.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"SIMDTESTVault.claim()\",\"SIMDTESTVault.notifyRewardAmount(uint256)\",\"SIMDTESTVault.stake(uint256)\",\"SIMDTESTVault.unstake(uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":14,\"DEPENDENCY-SHA256SUMS\":92,\"README.md\":98,\"foundry.toml\":21,\"launch.json\":39,\"script/prepare-launch.py\":50,\"src/SIMDTEST.sol\":11,\"src/SIMDTESTHook.sol\":180,\"src/SIMDTESTVault.sol\":136,\"test/Hook.t.sol\":381,\"test/Token.t.sol\":51,\"test/Vault.t.sol\":278,\"test/helpers/Fixtures.sol\":84},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":1308,"exitCode":0,"name":"slither","output":"[high/medium] weak-prng at src/SIMDTESTVault.sol:128: SIMDTESTVault._checkpoint(address) (src/SIMDTESTVault.sol#128-135) uses a weak PRNG: \"rewardRemainder[account] = fraction % PRECISION (src/SIMDTESTVault.sol#133)\"\n[medium/medium] divide-before-multiply at src/SIMDTESTHook.sol:138: SIMDTESTHook._specifiedFees(int256) (src/SIMDTESTHook.sol#138-153) performs a multiplication on the result of a division:\n[medium/high] incorrect-equality at src/SIMDTESTHook.sol:138: SIMDTESTHook._specifiedFees(int256) (src/SIMDTESTHook.sol#138-153) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/SIMDTESTVault.sol:110: SIMDTESTVault._emittedScaled() (src/SIMDTESTVault.sol#110-116) uses a dangerous strict equality:\n[medium/medium] uninitialized-local at src/SIMDTESTHook.sol:93: SIMDTESTHook.beforeSwap(address,PoolKey,IPoolManager.SwapParams,bytes).fee (src/SIMDTESTHook.sol#93) is a local variable never initialized\n[medium/medium] unused-return at src/SIMDTESTHook.sol:125: SIMDTESTHook.onUniv4Swap(PoolKey,uint256,uint256) (src/SIMDTESTHook.sol#125-136) ignores return value by poolManager.donate(key,0,donation,) (src/SIMDTESTHook.sol#129)\n[medium/medium] unused-return at src/SIMDTESTHook.sol:125: SIMDTESTHook.onUniv4Swap(PoolKey,uint256,uint256) (src/SIMDTESTHook.sol#125-136) ignores return value by poolManager.donate(key,donation,0,) (src/SIMDTESTHook.sol#129)\n[low/medium] timestamp at src/SIMDTESTVault.sol:110: SIMDTESTVault._emittedScaled() (src/SIMDTESTVault.sol#110-116) uses timestamp for comparisons\n[low/medium] timestamp at src/SIMDTESTVault.sol:87: SIMDTESTVault.claim() (src/SIMDTESTVault.sol#87-96) uses timestamp for comparisons","passed":true},{"durationMs":390,"exitCode":0,"name":"aderyn","output":"[high] reentrancy-state-change at src/SIMDTESTVault.sol:68: Reentrancy: State change after external call (2 places)\n[low] large-numeric-literal at src/SIMDTEST.sol:9: Large Numeric Literal (2 places)\n[low] non-reentrant-not-first at src/SIMDTESTHook.sol:89: `nonReentrant` is Not the First Modifier (2 places)\n[low] unchecked-return at src/SIMDTESTHook.sol:129: Unchecked Return","passed":true}],"detail":"launch.json is not a valid launch manifest: kind: Invalid discriminator value. Expected 'univ4_hook' | 'evm_project' | 'custom_token' | 'evm_contracts'","evaluation":"checks","profile":"foundry","status":"rejected","submissionHash":"f693e8da0cb85c779bd0150f8e413b3117f3cb10cd6013e686f7bf17a70c3fb1","verifiedTreeHash":"5714d951cce62876cf5c3e0cc00b216a84812ca6","verifierVersion":"0.1.0+ad90ce4c"}]}