{"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":"6e8264fd-0574-4350-8fb0-9058496d00f3","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":null,"dependsOn":["build_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":"working"},{"acceptedSubmissionHash":null,"dependsOn":["build_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":"working"},{"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":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_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":"working"},{"acceptedSubmissionHash":null,"dependsOn":["build_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":"working"},{"acceptedSubmissionHash":"42d9230343d8c7e947d57a31376c532b8a1a7e811d3986023f3e8e47f8be3ce5","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"6b8d2c2ebd3301cff2be8edb1e1cc6ba65c858c02fe7247be81722b969842265","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"6b8d2c2ebd3301cff2be8edb1e1cc6ba65c858c02fe7247be81722b969842265","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"failed"},{"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":"working"}],"objective":"A custom token: Democratizing Collectable Acquisions (DCA).\nToken name: Democratizing Collectable Acquisions\nToken symbol: DCA\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.\nWhat it does: A custom token: Democratizing Collectable Acquisions (DCA).\n\nToken name: Democratizing Collectable Acquisions\n\nToken symbol: DCA\n\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.\n\nWhat it does: Add a fixed 5% hook fee on both buys and sells in the launch pool. This is additional to IMD’s mandatory platform/pool fee.\n\nCollect the hook fee exclusively in FWA:\n\nOn buys, take it from the FWA paid in.\n\nOn sells, take it from the FWA paid out.\n\nAll FWA collected by this hook belongs to this fixed fee recipient:\n\n0xCAE0B01E56cB164ce866A137d3528658b2FCBd4b\n\nKeep collected fees in the hook until a permissionless claimFees() call sends them only to that recipient. Neither the fee percentage nor recipient can be changed.\n\nUse a standard token with no wallet-to-wallet transfer tax. No anti-sniper tax, blacklist, wallet limits, router whitelist, NFT functionality, oracle, staking, website, image or socials.","parentJobId":null,"planHash":"e67266be9d116bcac2e31cc406fe611ba6738c9c12874318b0f42df7d67f192b","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"6e8264fd-0574-4350-8fb0-9058496d00f3","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1464-democratizing-collectable-acquisions"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51190","feedbackHash":"bbda1f0db69e481b4d1a98a72bfa62b591cdd4588eb1d8c7033a864c02e6bb4b","nodeKey":"build_contract_project","submissionHash":"42d9230343d8c7e947d57a31376c532b8a1a7e811d3986023f3e8e47f8be3ce5","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"9184e9457f7e78515504e94c54c3cc9fea784928f0104db62eb2fecd7c088a2d","state":"blocked","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e54711bd1fbb0d02","findings":[],"hash":"2301a2b74e5c28d619bcda26cfcee36dd36219bba35a6234749f4d51539c806c","nodeId":"86dc7a9a-47e0-40c9-b938-cd011af6ab46","outcome":"failed","summary":"needs input: The accepted implementation cannot deliver the required 5% FWA fee through a manifest-only custom_token repair. DCAHook's constructor requires an address whose low 14 bits are 0x20cc, but custom_token application deployment does not mine its salt. The accepted production contracts contain no callable hook deployer: HookMiner is an internal library and PrepareHook only calculates salts. The permitted manifest fields cannot select a hook salt or attach DCAHook to the launch pool; the supplied protected harness initializes that pool with PoolInitializationGuard. Removing DCAHook would omit the requested fee. A prerequisite accepted implementation and deployment integration must support mined hook deployment and selection of DCAHook when initializing the launch pool. This requires work outside the only authorized deliverable, launch.json. The existing manifest and accepted files were left unchanged. forge build succeeded and forge test reported 76 passed, 0 failed; these local tests do not","treeHash":null,"usage":{"cachedInputTokens":624640,"inputTokens":76900,"model":"gpt-6-astra","outputTokens":8974,"runtime":"codex","turns":8,"wallClockMs":285914}},{"artifacts":[],"attempt":1,"bundleHash":"a31a377c40c9ab73187bbfba5d2acfd25421b5a8a7096dbccfcbf9d8b4063c20","device":"107def308610130e","findings":[],"hash":"42d9230343d8c7e947d57a31376c532b8a1a7e811d3986023f3e8e47f8be3ce5","nodeId":"02cbe075-81b6-42c8-93a6-eb1069ba3bc0","outcome":"completed","summary":"Implemented the fixed-supply DCA token and immutable 5% FWA fee hook, with permissionless claims paying only the specified recipient.\n\nVerified offline: build passed, 76 tests passed, formatting passed.\n\nDeployment requirements and partial-fill behavior are documented in [README.md](/home/imd/.identitymd/work/6e8264fd-0574-4350-8fb0-9058496d00f3/02cbe075-81b6-42c8-93a6-eb1069ba3bc0/README.md). The launch pool must be configured to use `DCAHook`.","treeHash":"978c4e6e72825cde2f400e5139d5bad57f0fbc4a","usage":{"cachedInputTokens":1859456,"inputTokens":120278,"model":"gpt-6-astra","outputTokens":34322,"runtime":"codex","turns":7,"wallClockMs":885957}}],"verification":[{"checks":[{"durationMs":5452,"exitCode":0,"name":"build","output":"Compiling 88 files with Solc 0.8.26\nSolc 0.8.26 finished in 5.21s\nCompiler run successful!\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/DCAHook.sol:106:30\n    │\n106 │                 ? feeOnGross(uint256(-params.amountSpecified))\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/DCAHook.sol:107:28\n    │\n107 │                 : feeOnNet(uint256(params.amountSpecified));\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/DCAHook.sol:132:36\n    │\n132 │             fee = buy ? feeOnGross(uint256(-params.amountSpecified)) : feeOnNet(uint256(params.amountSpecified));\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/DCAHook.sol:132:81\n    │\n132 │             fee = buy ? feeOnGross(uint256(-params.amountSpecified)) : feeOnNet(uint256(params.amountSpecified));\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/DCAHook.sol:134:54\n    │\n134 │             if (fwaDelta != params.amountSpecified + int256(fee)) 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/DCAHook.sol:135:27\n    │\n135 │             gross = buy ? uint256(-params.amountSpecified) : uint256(fwaDelta);\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/DCAHook.sol:135:62\n    │\n135 │             gross = buy ? uint256(-params.amountSpecified) : uint256(fwaDelta);\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/DCAHook.sol:137:27\n    │\n137 │             uint256 net = uint256(-fwaDelta);\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/DCAHook.sol:141:21\n    │\n141 │             gross = uint256(fwaDelta);\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[reentrancy-no-eth]: external call can be reentered before `_status` is updated\n    ╭▸ src/DCAHook.sol:182:9\n    │\n182 │         poolManager.unlock(\"\");\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/DCAHook.sol:182:9\n    │\n182 │         poolManager.unlock(\"\");\n    │         ━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\n","passed":true},{"durationMs":1818,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 7 tests for test/DCAToken.t.sol:DCATokenTest\n[PASS] testFuzz_WalletTransfersAreUntaxed(uint256) (runs: 256, μ: 150857, ~: 151640)\nLogs:\n  Bound result 2176\n\n[PASS] test_ApprovalTransferFromAndInfiniteApproval() (gas: 285319)\n[PASS] test_FactoryReceivesSupplyAndLaunchAllocationsArriveWhole() (gas: 504856)\n[PASS] test_InsufficientBalanceAndAllowanceRevert() (gas: 124739)\n[PASS] test_MetadataAndEntireSupplyMintedOnce() (gas: 64311)\n[PASS] test_NoMintPauseBlacklistSeizeOrUpgradePowers() (gas: 619116)\n[PASS] test_ZeroRecipientRevertsAndSelfTransferPreservesBalance() (gas: 72110)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 8.59ms (8.80ms CPU time)\n\nRan 31 tests for test/DCAHook.t.sol:DCAHookFwaCurrency1Test\n[PASS] testFuzz_FeeConservationAcrossSwapModes(bool,bool,uint256) (runs: 256, μ: 524546, ~: 517864)\nLogs:\n  Bound result 281965910671161320188\n\n[PASS] testFuzz_RoundingInverseIsMinimalAndExactlyFivePercent(uint256) (runs: 256, μ: 13870, ~: 13675)\nLogs:\n  Bound result 8869\n\n[PASS] test_BatchedSwapsCollectOncePerSwapAndSettle() (gas: 351448)\n[PASS] test_BuyExactInputChargesFivePercentOfFwaPaidIn() (gas: 513243)\n[PASS] test_BuyExactOutputIncludesFeeInTotalFwaPaid() (gas: 513479)\n[PASS] test_CallbackFromManagerWithoutClaimReverts() (gas: 36787)\n[PASS] test_ClaimBeforeFeesIsNoop() (gas: 37441)\n[PASS] test_ClaimIncludesDonatedFwaClaims() (gas: 344370)\n[PASS] test_ClaimInsideAnExistingUnlockRevertsWithoutLosingFees() (gas: 349458)\n[PASS] test_ClaimsAboveSignedDeltaLimitRemainClaimableInChunks() (gas: 406508)\n[PASS] test_ClaimsCannotBeStolenByAnOperatorOrAllowance() (gas: 250825)\n[PASS] test_DirectCallbacksRequireManager() (gas: 101627)\n[PASS] test_DustBuyRoundsFeeDown() (gas: 339135)\n[PASS] test_FailedPayoutPreservesAllClaimsAndCanRetry() (gas: 454025)\n[PASS] test_FeeAndRecipientCannotBeChanged() (gas: 188763)\n[PASS] test_FwaMockRejectsOrdinaryTransferButClaimSucceeds() (gas: 360952)\n[PASS] test_InitializationCannotBeFrontRun() (gas: 49536)\n[PASS] test_LiquidityHasNoHookFeeAndCanBeRemoved() (gas: 152484)\n[PASS] test_PartialExactInputBuyRevertsAndRollsBack() (gas: 161984)\n[PASS] test_PartialExactInputSellOnlyTaxesActualFwaOutput() (gas: 215811)\n[PASS] test_PartialExactOutputBuyOnlyTaxesActualFwaInput() (gas: 196865)\n[PASS] test_PartialExactOutputSellRevertsAndRollsBack() (gas: 126282)\n[PASS] test_PayoutReentrancyCannotClaimTwice() (gas: 391211)\n[PASS] test_PermissionlessClaimPaysOnlyFixedRecipientAndRepeatIsNoop() (gas: 788207)\n[PASS] test_PermissionsMatchActualMinedAddress() (gas: 34997)\n[PASS] test_RejectsOtherFeeTickSpacingCurrencyAndHook() (gas: 189810)\n[PASS] test_RejectsZeroAndOutOfRangeAmounts() (gas: 115377)\n[PASS] test_SellExactInputChargesFivePercentOfGrossFwaOutput() (gas: 529072)\n[PASS] test_SellExactOutputReceivesRequestedNetFwa() (gas: 528495)\n[PASS] test_SingleSidedLaunchSeedsWithoutFwaAndFirstBuyCanFundItsFee() (gas: 988086)\n[PASS] test_SwapCallbacksRejectDifferentPoolEvenFromManager() (gas: 57749)\nSuite result: ok. 31 passed; 0 failed; 0 skipped; finished in 95.29ms (75.58ms CPU time)\n\nRan 31 tests for test/DCAHook.t.sol:DCAHookFwaCurrency0Test\n[PASS] testFuzz_FeeConservationAcrossSwapModes(bool,bool,uint256) (runs: 256, μ: 524354, ~: 522750)\nLogs:\n  Bound result 296862148282949569536\n\n[PASS] testFuzz_RoundingInverseIsMinimalAndExactlyFivePercent(uint256) (runs: 256, μ: 13870, ~: 13675)\nLogs:\n  Bound result 13513\n\n[PASS] test_BatchedSwapsCollectOncePerSwapAndSettle() (gas: 357149)\n[PASS] test_BuyExactInputChargesFivePercentOfFwaPaidIn() (gas: 525785)\n[PASS] test_BuyExactOutputIncludesFeeInTotalFwaPaid() (gas: 523411)\n[PASS] test_CallbackFromManagerWithoutClaimReverts() (gas: 36787)\n[PASS] test_ClaimBeforeFeesIsNoop() (gas: 37441)\n[PASS] test_ClaimIncludesDonatedFwaClaims() (gas: 350672)\n[PASS] test_ClaimInsideAnExistingUnlockRevertsWithoutLosingFees() (gas: 355760)\n[PASS] test_ClaimsAboveSignedDeltaLimitRemainClaimableInChunks() (gas: 406508)\n[PASS] test_ClaimsCannotBeStolenByAnOperatorOrAllowance() (gas: 257127)\n[PASS] test_DirectCallbacksRequireManager() (gas: 101436)\n[PASS] test_DustBuyRoundsFeeDown() (gas: 346307)\n[PASS] test_FailedPayoutPreservesAllClaimsAndCanRetry() (gas: 460327)\n[PASS] test_FeeAndRecipientCannotBeChanged() (gas: 188763)\n[PASS] test_FwaMockRejectsOrdinaryTransferButClaimSucceeds() (gas: 367254)\n[PASS] test_InitializationCannotBeFrontRun() (gas: 49536)\n[PASS] test_LiquidityHasNoHookFeeAndCanBeRemoved() (gas: 152484)\n[PASS] test_PartialExactInputBuyRevertsAndRollsBack() (gas: 168120)\n[PASS] test_PartialExactInputSellOnlyTaxesActualFwaOutput() (gas: 209754)\n[PASS] test_PartialExactOutputBuyOnlyTaxesActualFwaInput() (gas: 202712)\n[PASS] test_PartialExactOutputSellRevertsAndRollsBack() (gas: 120268)\n[PASS] test_PayoutReentrancyCannotClaimTwice() (gas: 397513)\n[PASS] test_PermissionlessClaimPaysOnlyFixedRecipientAndRepeatIsNoop() (gas: 794501)\n[PASS] test_PermissionsMatchActualMinedAddress() (gas: 34997)\n[PASS] test_RejectsOtherFeeTickSpacingCurrencyAndHook() (gas: 189810)\n[PASS] test_RejectsZeroAndOutOfRangeAmounts() (gas: 115344)\n[PASS] test_SellExactInputChargesFivePercentOfGrossFwaOutput() (gas: 516342)\n[PASS] test_SellExactOutputReceivesRequestedNetFwa() (gas: 518375)\n[PASS] test_SingleSidedLaunchSeedsWithoutFwaAndFirstBuyCanFundItsFee() (gas: 1000479)\n[PASS] test_SwapCallbacksRejectDifferentPoolEvenFromManager() (gas: 57558)\nSuite result: ok. 31 passed; 0 failed; 0 skipped; finished in 124.42ms (78.79ms CPU time)\n\nRan 5 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] test_InvalidConstructorArgumentsRevert() (gas: 5417)\n[PASS] test_NoExternalCallsEvenIfTokenIsNotYetDeployed() (gas: 3960430)\n[PASS] test_PreparationDeploysExactPredictedAddressOnEmptyChain() (gas: 101709516)\n[PASS] test_PreparationRejectsMissingAddressesAndExhaustedSearch() (gas: 1707581)\n[PASS] test_WrongHookAddressBitsAreRejected() (gas: 251808)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 139.58ms (153.27ms CPU time)\n\nRan 1 test for test/DCAInvariant.t.sol:DCAInvariantFwa1Test\n[PASS]\nDCAInvariantFwa1Test invariants:\n[PASS] invariant_ConservationOfBothTokensAndFixedSupply\n[PASS] invariant_FeeClaimsPlusPayoutsEqualAllAccruedFees\n[PASS] invariant_TransientAccountingAlwaysSettled\n DCAInvariantFwa1Test invariants (runs: 128, calls: 4096, reverts: 0)\n\n╭------------+----------+-------+---------+----------╮\n| Contract   | Selector | Calls | Reverts | Discards |\n+====================================================+\n| FeeHandler | claim    | 2010  | 0       | 0        |\n|------------+----------+-------+---------+----------|\n| FeeHandler | swap     | 2086  | 0       | 0        |\n╰------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 99999999999999999985\n  Bound result 44361084823705962269\n  Bound result 11939906005600446012\n  Bound result 17966\n  Bound result 500\n  Bound result 500\n  Bound result 500\n  Bound result 72770655728687944097\n  Bound result 12500\n  Bound result 15002\n  Bound result 85\n  Bound result 17421\n  Bound result 2717559728142005332\n  Bound result 85470547260055645128\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.62s (1.56s CPU time)\n\nRan 1 test for test/DCAInvariant.t.sol:DCAInvariantFwa0Test\n[PASS]\nDCAInvariantFwa0Test invariants:\n[PASS] invariant_ConservationOfBothTokensAndFixedSupply\n[PASS] invariant_FeeClaimsPlusPayoutsEqualAllAccruedFees\n[PASS] invariant_TransientAccountingAlwaysSettled\n DCAInvariantFwa0Test invariants (runs: 128, calls: 4096, reverts: 0)\n\n╭------------+----------+-------+---------+----------╮\n| Contract   | Selector | Calls | Reverts | Discards |\n+====================================================+\n| FeeHandler | claim    | 2010  | 0       | 0        |\n|------------+----------+-------+---------+----------|\n| FeeHandler | swap     | 2086  | 0       | 0        |\n╰------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 99999999999999999985\n  Bound result 44361084823705962269\n  Bound result 11939906005600446012\n  Bound result 95153711438512253658\n  Bound result 500\n  Bound result 500\n  Bound result 500\n  Bound result 72770655728687944097\n  Bound result 12500\n  Bound result 15962\n  Bound result 3280\n  Bound result 18576\n  Bound result 2717559728142005332\n  Bound result 1282\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.66s (1.55s CPU time)\n\nRan 6 test suites in 1.67s (3.65s CPU time): 76 tests passed, 0 failed, 0 skipped (76 total tests)\n","passed":true},{"durationMs":81,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"DCAHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"DCAHook.claimFees()\",\"DCAHook.unlockCallback(bytes)\",\"DCAToken.approve(address,uint256)\",\"DCAToken.transfer(address,uint256)\",\"DCAToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.json\":130,\"README.md\":117,\"SECURITY.md\":39,\"foundry.toml\":19,\"remappings.txt\":4,\"script/PrepareHook.s.sol\":20,\"src/DCAHook.sol\":208,\"src/DCAToken.sol\":14,\"src/HookMiner.sol\":21,\"test/DCAHook.t.sol\":391,\"test/DCAInvariant.t.sol\":113,\"test/DCAToken.t.sol\":126,\"test/Deployment.t.sol\":98,\"test/helpers/HookTestBase.sol\":101,\"test/helpers/PoolRouter.sol\":112,\"test/helpers/RestrictedFWA.sol\":43},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":2059,"exitCode":0,"name":"slither","output":"[medium/medium] unused-return at src/DCAHook.sol:176: DCAHook.claimFees() (src/DCAHook.sol#176-183) ignores return value by poolManager.unlock() (src/DCAHook.sol#182)","passed":true},{"durationMs":856,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/DCAHook.sol:26: Large Numeric Literal (2 places)\n[low] state-change-without-event at src/DCAHook.sol:185: State Change Without Event\n[low] unchecked-return at src/DCAHook.sol:182: Unchecked Return\n[low] uninitialized-local-variable at src/HookMiner.sol:13: Uninitialized Local Variable","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"42d9230343d8c7e947d57a31376c532b8a1a7e811d3986023f3e8e47f8be3ce5","verifiedTreeHash":"978c4e6e72825cde2f400e5139d5bad57f0fbc4a","verifierVersion":"0.1.0+7ff5db2c"}]}