{"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":"1610bd2c-f250-4427-a0df-c8ca78a5d830","kind":"skill:build-contract-project","nodes":[{"acceptedSubmissionHash":"29be294e6f1ce672288ba781c2fcc32cbe54cbc0c2508b0964dbdf60c1314a0c","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","state":"accepted"}],"objective":"# JOB: Mine CREATE2 salt\n# REPO: (current repo, already cloned)\n# CONSTRAINT: Offline. No external fetches. No live RPC.\n\n## Steps\n1. Run: forge build\n2. Run: forge script script/MineSalt.s.sol --private-key <placeholder>\n   (or however the script accepts the deployer address as input)\n3. Output: the salt value (hex) and the resulting hook address.\n   The address MUST end in 0x1040.\n\n## Parameters\n- Deployer: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n- Required hook bits: 0x1040 (afterInitialize + afterSwap)\n- Chain: Robinhood (4663) — not needed for salt mining, just context\n\n## Output format\nSALT: 0x...\nADDRESS: 0x...1040","parentJobId":"3bc9ffc9-2c14-4259-b152-0359575ece53","planHash":"5e6f2f643f41eb0d3a579bc08bf2cedee7ef7cf9990bc67526185ca15edd9c99","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"3bc9ffc9-2c14-4259-b152-0359575ece53","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2680-uniswap-v4-hook"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52157","feedbackHash":"4b1bbcfe586524a69ab0b66e80130b45dad5a8001c9548b1d94fd7782490fac3","nodeKey":"build_contract_project","submissionHash":"29be294e6f1ce672288ba781c2fcc32cbe54cbc0c2508b0964dbdf60c1314a0c","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"59df97aeeaa89137333b3ed92cbae7eaffc9792874e430be4bbff77d5b829dbe","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"30597ba8c4a12319c6864d351ef9afa1ec7fa23a901c317a32c6438713a2aaee","device":"37eed9f56188ea8b","findings":[],"hash":"29be294e6f1ce672288ba781c2fcc32cbe54cbc0c2508b0964dbdf60c1314a0c","nodeId":"16deb6d3-6df2-4c27-935f-6522720276b7","outcome":"completed","summary":"The salt tool is built, tested and documented, but the final SALT and ADDRESS cannot be printed yet: the brief gives the deployer but not the hook owner, and a CREATE2 address depends on both.\n\n**Why the owner is required.** The address is `keccak256(0xff ‖ deployer ‖ salt ‖ keccak256(initCode))`, and the init code includes the ABI-encoded constructor arguments `(manager, owner, launchToken, factory)`. The owner is not recorded anywhere in the repository or the brief, so a salt mined for any stand-in owner would be wrong for the real deployment. The script therefore takes the owner as its one argument and bakes in everything else.\n\n**What is in the script** (`script/MineSalt.s.sol`):\n- Constants from the brief and pinned inputs: deployer `0x735121A546092F31050A867FD7E3A750C7B0EFF9`, PoolManager `0x8366…0951`, SHK token `0x4fE8…1164`, chain 4663.\n- Assumption: the deployer is the contract that executes CREATE2, so it also fills the hook's `factory_` argument. The full form `mineWith(...)` overrides every value if that is wrong.\n- The search requires the low 16 bits to equal `0x1040`. Uniswap v4 only checks 14 bits, so `0x5040` or `0x9040` endings would pass v4 but not the brief's \"must end in 0x1040\". The stricter predicate implies the v4 flags.\n- The inner loop runs in assembly over a fixed scratch area. The original Solidity loop ran out of gas from memory growth at around 150k attempts.\n- Bare `run()` reverts with `OwnerRequired` and the exact command to use. A missing owner is reported, never guessed.\n\n**To get the output**, run with the owner's address:\n\n```sh\nforge build\nforge script script/MineSalt.s.sol --sig \"mineFor(address)\" <owner>\n```\n\nIt prints `SALT:`, `ADDRESS:` (ending in 1040), `INIT_CODE_HASH:` and each constructor value to cross-check in the deploy transaction. A dry run with a throwaway owner took about 7M gas in simulation.\n\n**Tests** (`test/MineSalt.t.sol`, 20 tests): a small CREATE2 factory is etched at the brief's deployer address, and a real CREATE2 from there lands the hook exactly on the predicted address with the real constructor on an empty chain. Also covered: init code equals the compiled artifact, lowest salt is returned, search resumes, zero arguments and exhausted windows revert, a salt mined for one owner or deployer does not serve another, an unmined salt is rejected by the hook constructor with `HookAddressNotValid`, plus three fuzz tests.\n\n**Verification results:**\n\n| Check | Result |\n| --- | --- |\n| `forge build` | passes, 0 errors |\n| `forge test` with the verifier seed | 135 passed, 0 failed |\n| `forge fmt --check` | passes |\n\n**Documentation** was added to the README (new \"CREATE2 salt mining\" section with the input table, assumptions and operator rules, plus an \"After launch\" item), the test coverage table, and the security record. Operational responsibilities noted there: confirm the deployer is really the CREATE2 executor and not an EOA, confirm the predicted address is empty on chain, confirm the pinned PoolManager and token addresses, and re-mine after any bytecode or argument change.\n\nProtected files were not touched, nothing was deployed, and the changes are left uncommitted in the working tree.","treeHash":"6ea888d9c26cb1f06ea0dff7958f5d19cf68b143","usage":{"cachedInputTokens":1364103,"inputTokens":546,"model":"claude-fable-5-1","outputTokens":50587,"runtime":"claude","turns":41,"wallClockMs":1016724}}],"verification":[{"checks":[{"durationMs":69420,"exitCode":0,"name":"build","output":"Compiling 117 files with Solc 0.8.26\nSolc 0.8.26 finished in 69.30s\nCompiler run successful!\n","passed":true},{"durationMs":7807,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 3 tests for test/SigmaToken.t.sol:SigmaTokenTest\n[PASS] testFuzz_transferAndAllowance(uint256) (runs: 256, μ: 179915, ~: 179831)\nLogs:\n  Bound result 826074471\n\n[PASS] test_fixedSupplyAndMetadata() (gas: 49353)\n[PASS] test_noAdminOrAdditionalMint() (gas: 127664)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 54.77ms (54.09ms CPU time)\n\nRan 4 tests for test/NativeSafety.t.sol:NativeSafetyTest\n[PASS] testFuzz_initialDepositRefundsNativeBudgetAndMatchesFreshPreview(uint64,uint64,int24) (runs: 256, μ: 1051689, ~: 1071044)\nLogs:\n  Bound result 9900000000016584970\n  Bound result 7181251239102489805\n  Bound result -6319\n\n[PASS] test_keeperCallbackCannotReenterAndRejectedBountyRollsBack() (gas: 3006082)\n[PASS] test_ownerRescuesOnlyForcedSurplusAndCannotSweepLPCapital() (gas: 867738)\n[PASS] test_receiveAllowsOnlyManagerOrOnceConfiguredWETH() (gas: 266440)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 129.41ms (114.63ms CPU time)\n\nRan 26 tests for test/SigmaHook.t.sol:SigmaHookTest\n[PASS] testFuzz_donationsDoNotAllowZeroShareDeposit(uint80) (runs: 256, μ: 1008539, ~: 1152596)\nLogs:\n  Bound result 2298\n\n[PASS] testFuzz_roundTripNeverCreatesAssets(uint96,uint96) (runs: 256, μ: 851408, ~: 850892)\nLogs:\n  Bound result 14649245116390\n  Bound result 7236044595837428\n\n[PASS] test_balancingTradeStaysInsideBand() (gas: 1661228)\n[PASS] test_callbacksAndUnlockRefuseUnauthorizedCalls() (gas: 125067)\n[PASS] test_circularFeedUsesPostExecutionSlot0AndWraps() (gas: 2238769)\n[PASS] test_cooldownRequiresFullThirtyMinutesAndDeviation() (gas: 1972218)\n[PASS] test_deepPoolTrendRebalanceDeploysMostCapital() (gas: 1749786)\n[PASS] test_depositAndWithdrawalSlippageDeadlineAndZeroChecks() (gas: 1205584)\n[PASS] test_emergencyFreezesInvestmentButNotSwapsOrShareTransfers() (gas: 1338234)\n[PASS] test_emergencyRemovesAllLiquidityAndWithdrawsProRata() (gas: 1728691)\n[PASS] test_emptiedVaultDoesNotRebalanceUntilSomeoneDepositsAgain() (gas: 2080240)\n[PASS] test_feeOwnershipCannotBeDilutedByNewDepositor() (gas: 1668070)\n[PASS] test_firstDepositAfterPriceMoveUsesFreshBand() (gas: 1231661)\n[PASS] test_firstDepositAndProportionalSecondDeposit() (gas: 1115411)\n[PASS] test_firstDepositPullsOnlyWhatTheBandNeeds() (gas: 832992)\n[PASS] test_minedPermissionsInitializationAndExplicitOwner() (gas: 201414)\n[PASS] test_noBalancingTradeInAnEmptyPool() (gas: 1084747)\n[PASS] test_noDeviationDoesNotRebalanceAfterCooldown() (gas: 909534)\n[PASS] test_otherLpCanCollectZeroDeltaFeesEvenInEmergency() (gas: 1605599)\n[PASS] test_ownerTransferRequiresAcceptanceAndCannotRenounce() (gas: 153947)\n[PASS] test_rebalanceBurnsEntireOldPositionAndKeepsAllCapital() (gas: 1794326)\n[PASS] test_rebalanceCompoundsNetAccruedFeesAndDust() (gas: 1564733)\n[PASS] test_rejectsSecondPoolAndWrongCallbackPool() (gas: 127656)\n[PASS] test_strayEthIsRefusedOnAnErc20Pair() (gas: 116888)\n[PASS] test_trendRebalanceSellsSurplusAndRedeploys() (gas: 9112978)\n[PASS] test_uninitializedFunctionsAndFactoryGate() (gas: 52043657)\nSuite result: ok. 26 passed; 0 failed; 0 skipped; finished in 129.76ms (263.47ms CPU time)\n\nRan 11 tests for test/BandMath.t.sol:BandMathTest\n[PASS] testFuzz_liquiditySizingNeverOverspends(int24,int24,int24,uint128,uint128,uint128) (runs: 256, μ: 30667, ~: 30787)\nLogs:\n  Bound result 14218\n  Bound result 873253\n  Bound result -484113\n\n[PASS] testFuzz_statisticsMatchIndependentIntegerReference(int24[8],uint16) (runs: 256, μ: 108781, ~: 108802)\nLogs:\n  Bound result 3543\n  Bound result -484119\n  Bound result 287180\n  Bound result 2267\n  Bound result 96323\n  Bound result 93\n  Bound result -2763\n  Bound result 15\n  Bound result 3\n\n[PASS] test_extremeTicksStayWithinUsableGrid() (gas: 27507)\n[PASS] test_knownPopulationStatistics() (gas: 37951)\n[PASS] test_lowPriceSizingKeepsPrecision() (gas: 10369)\n[PASS] test_meanRoundsToNearestAndNegativeGridFloors() (gas: 21621)\n[PASS] test_rebalanceTradeTargetsBandRatioAndRespectsDeadband() (gas: 21249)\n[PASS] test_restingTickDoesNotDeviateButOutlierDoes() (gas: 26774)\n[PASS] test_sizingOneSqrtUnitFromUpperAndVeryLowTicks() (gas: 13646)\n[PASS] test_strictTriggerAndHalfIntegerThreshold() (gas: 12405)\n[PASS] test_tradeLimitStopsAtBandEdgeOrCap() (gas: 20709)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 158.64ms (64.14ms CPU time)\n\nRan 9 tests for test/VaultFailurePaths.t.sol:VaultFailurePathsTest\n[PASS] test_allUninitializedVaultEntrypointsRefuseBeforeTokenTransfers() (gas: 51638638)\n[PASS] test_budgetAboveInt128LimitCannotHarvestFeesOrPullTokens() (gas: 1990205)\n[PASS] test_emergencyCannotBeUsedBeforeActivationAndLiveEntrypointsCloseAfterward() (gas: 1846399)\n[PASS] test_invalidPoolAttemptsDoNotPoisonLaterValidInitialization() (gas: 52833723)\n[PASS] test_invalidReceiversAreAtomicInLiveAndEmergencyModes() (gas: 2280645)\n[PASS] test_minSharesFailureAfterHarvestRestoresUncollectedFees() (gas: 2063350)\n[PASS] test_pendingAndFormerOwnerCannotActivateEmergency() (gas: 858546)\n[PASS] test_secondCurrencyWithdrawalMinimumRollsBackBurnAndPosition() (gas: 1976072)\n[PASS] test_secondTokenPullFailureRestoresHarvestMintAndFirstTokenPull() (gas: 2168970)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 158.61ms (83.39ms CPU time)\n\nRan 11 tests for test/Flywheel.t.sol:FlywheelTest\n[PASS] testFuzz_dislocatedPriceStillMintsOrExplicitlyDefers(int24,uint64) (runs: 256, μ: 1659746, ~: 1658728)\nLogs:\n  Bound result 1900\n  Bound result 999999999000007098177\n\n[PASS] test_afterSwapOnlySamplesEvenWhenKeeperIsDue() (gas: 1080138)\n[PASS] test_deferredAssetsRemainWithdrawable() (gas: 1201518)\n[PASS] test_deferredBuybackIsSpentOnlyOnceOnNextEligibleCycle() (gas: 3922094)\n[PASS] test_depositCannotRefreshDeferredRangeToBypassKeeperCooldown() (gas: 1431649)\n[PASS] test_emptyAndEmergencyVaultCannotPayBounty() (gas: 751568)\n[PASS] test_harvestByNewDepositCannotEvadeFeeReservesOrDiluteOldHolder() (gas: 1643344)\n[PASS] test_keeperGatesWrongPoolCooldownDeviationAndReplay() (gas: 1776946)\n[PASS] test_noExternalLiquidityDefersAndPermissionlessRetryRecovers() (gas: 1861360)\n[PASS] test_triSplitUsesFeesOnlyAndPaysActualKeeperBeforeReinvestment() (gas: 1944318)\n[PASS] test_zeroAddressCompatibleTokenUsesRequestedDisposalPath() (gas: 56586067)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 162.93ms (184.03ms CPU time)\n\nRan 7 tests for test/NativeVault.t.sol:NativeVaultTest\n[PASS] testFuzz_freshManagerRebalanceBeforeInputSettlement(bool) (runs: 256, μ: 2563685, ~: 2583563)\n[PASS] test_emergencyRedeemsClaimsAndNeedsNoManagerForWithdrawal() (gas: 1795544)\n[PASS] test_exactInputAndOutputBothDirectionsRemainUsable() (gas: 1271445)\n[PASS] test_nativeDepositRefundAndOrdinaryExit() (gas: 995474)\n[PASS] test_onlyTheManagerMaySendEthToTheHook() (gas: 100811)\n[PASS] test_reentrantEmergencyReceiverCannotRedeemTwice() (gas: 1103756)\n[PASS] test_rejectingEthRecipientRollsBackAndCanChooseAnotherReceiver() (gas: 1045487)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 222.10ms (219.16ms CPU time)\n\nRan 6 tests for test/WethVaultIntegration.t.sol:WethVaultIntegrationTest\n[PASS] test_emergencyReturnsWrappedEtherToChosenReceiverWithoutUnwrapping() (gas: 1108108)\n[PASS] test_firstDepositAfterEmptyPoolMoveRecentresBandOnFeed() (gas: 904744)\n[PASS] test_priceAboveLaunchSoleVaultReserveExactInputRebalance() (gas: 1496306)\n[PASS] test_priceAboveLaunchSoleVaultReserveExactOutputRebalance() (gas: 1495467)\n[PASS] test_priceBelowLaunchSoleVaultReserveExactInputRebalance() (gas: 1496001)\n[PASS] test_priceBelowLaunchSoleVaultReserveExactOutputRebalance() (gas: 1495512)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 231.54ms (6.21ms CPU time)\n\nRan 20 tests for test/MineSalt.t.sol:MineSaltTest\n[PASS] testFuzz_anyOwnerDeploysAtPrediction(address) (runs: 16, μ: 13458207, ~: 12394821)\nLogs:\n  SALT: 0x000000000000000000000000000000000000000000000000000000000001853b\n  ADDRESS: 0xcF9907cA35A940f3Bf589A7609d315Bd7E731040\n  INIT_CODE_HASH: 0xf30ab4ccdd479dccf880f5322c3e490e72082e24bddf5bec36c2fadbbb5d3744\n  DEPLOYER: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xaDcBf6960E66bdD7aaF2D0a58Cac111A7aF4a95e\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n\n[PASS] testFuzz_assemblyPredictionMatchesSolidityFormula(address,bytes32,bytes32) (runs: 64, μ: 17468, ~: 17468)\n[PASS] testFuzz_minedAddressAlwaysEndsIn1040(address,bytes32,uint64) (runs: 24, μ: 8641667, ~: 5522734)\n[PASS] test_briefDeployerCreate2LandsOnPredictedAddress() (gas: 26872838)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000023d4c\n  ADDRESS: 0x4cc3652270eb1Ec323F8e9416ADc2B8974801040\n  INIT_CODE_HASH: 0x37bbefbb6cf3e775d73aeb6f4dc82aa22f0198007f2255acfdf8ad9b2c645109\n  DEPLOYER: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n\n[PASS] test_constantsMatchBriefAndHookPermissions() (gas: 53511)\n[PASS] test_fullFormMatchesLocalDeployer() (gas: 23135936)\nLogs:\n  SALT: 0x000000000000000000000000000000000000000000000000000000000001cd83\n  ADDRESS: 0x79A3e7A1e1C051aDd10bdAd684B9D1fC852D1040\n  INIT_CODE_HASH: 0x52f321737ff00d378f16fc79adb1e8cbed90fd2db33f684e877ead46d97a7d03\n  DEPLOYER: 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a\n  CONSTRUCTOR manager: 0xA5d55E7A556fbA22974479497E6bf7e097D81b5e\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x77D93908Ca1cb75f3Fb71270b066baA9a1075191\n  CONSTRUCTOR factory: 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a\n\n[PASS] test_hookConstructorRejectsUnminedSalt() (gas: 687222)\n[PASS] test_hookConstructorRejectsZeroOwnerEvenAtMinedAddress() (gas: 3634722)\n[PASS] test_initCodeMatchesCompiledArtifact() (gas: 190229)\n[PASS] test_mineIsDeterministicAndReturnsLowestSalt() (gas: 59172352)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000023d4c\n  ADDRESS: 0x4cc3652270eb1Ec323F8e9416ADc2B8974801040\n  INIT_CODE_HASH: 0x37bbefbb6cf3e775d73aeb6f4dc82aa22f0198007f2255acfdf8ad9b2c645109\n  DEPLOYER: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000023d4c\n  ADDRESS: 0x4cc3652270eb1Ec323F8e9416ADc2B8974801040\n  INIT_CODE_HASH: 0x37bbefbb6cf3e775d73aeb6f4dc82aa22f0198007f2255acfdf8ad9b2c645109\n  DEPLOYER: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n\n[PASS] test_mineRefusesWindowThatWraps() (gas: 9143)\n[PASS] test_runWithOwnerMinesAddressEndingIn1040ForBriefDeployer() (gas: 19764869)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000023d4c\n  ADDRESS: 0x4cc3652270eb1Ec323F8e9416ADc2B8974801040\n  INIT_CODE_HASH: 0x37bbefbb6cf3e775d73aeb6f4dc82aa22f0198007f2255acfdf8ad9b2c645109\n  DEPLOYER: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n\n[PASS] test_runWithoutOwnerReverts() (gas: 9738)\n[PASS] test_saltIsBoundToDeployer() (gas: 19771916)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000023d4c\n  ADDRESS: 0x4cc3652270eb1Ec323F8e9416ADc2B8974801040\n  INIT_CODE_HASH: 0x37bbefbb6cf3e775d73aeb6f4dc82aa22f0198007f2255acfdf8ad9b2c645109\n  DEPLOYER: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n\n[PASS] test_saltIsBoundToOwner() (gas: 19770175)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000023d4c\n  ADDRESS: 0x4cc3652270eb1Ec323F8e9416ADc2B8974801040\n  INIT_CODE_HASH: 0x37bbefbb6cf3e775d73aeb6f4dc82aa22f0198007f2255acfdf8ad9b2c645109\n  DEPLOYER: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n\n[PASS] test_searchExhaustedBeforeFirstHit() (gas: 39463572)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000023d4c\n  ADDRESS: 0x4cc3652270eb1Ec323F8e9416ADc2B8974801040\n  INIT_CODE_HASH: 0x37bbefbb6cf3e775d73aeb6f4dc82aa22f0198007f2255acfdf8ad9b2c645109\n  DEPLOYER: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n\n[PASS] test_searchResumesFromStart() (gas: 20296741)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000023d4c\n  ADDRESS: 0x4cc3652270eb1Ec323F8e9416ADc2B8974801040\n  INIT_CODE_HASH: 0x37bbefbb6cf3e775d73aeb6f4dc82aa22f0198007f2255acfdf8ad9b2c645109\n  DEPLOYER: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000024c90\n  ADDRESS: 0xC3Ab87063aE23255a7b65F85647DB90f24C81040\n  INIT_CODE_HASH: 0x37bbefbb6cf3e775d73aeb6f4dc82aa22f0198007f2255acfdf8ad9b2c645109\n  DEPLOYER: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x735121A546092F31050A867FD7E3A750C7B0EFF9\n\n[PASS] test_suffixPredicateIsStricterThanV4Flags() (gas: 47124)\n[PASS] test_zeroArgumentsRevert() (gas: 45247)\n[PASS] test_zeroOwnerReverts() (gas: 9010)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 682.70ms (1.72s CPU time)\n\nRan 8 tests for test/Adversarial.t.sol:AdversarialTest\n[PASS] test_emergencyCannotBurnOtherHoldersShares() (gas: 825183)\n[PASS] test_emptyVaultCanEnterEmergency() (gas: 137845)\n[PASS] test_feeOnTransferDepositIsRejectedAtomically() (gas: 54939204)\n[PASS] test_initializationAtPriceExtremesAndSingleSidedDeposits() (gas: 432365091)\n[PASS] test_liquidityCapacityCannotBlockSwapRebalance() (gas: 2093533)\n[PASS] test_prepayRouterSwapSurvivesARebalance() (gas: 2659513)\n[PASS] test_saltToolUsesExactFactoryAndConstructorArguments() (gas: 18772428)\nLogs:\n  SALT: 0x000000000000000000000000000000000000000000000000000000000000736c\n  ADDRESS: 0x01b78616dcb940a69f297de475Fd8651AcA01040\n  INIT_CODE_HASH: 0x1879b0134f80e48e98f76e8d317307d44c7e95c639ee35c7e48503020967f5f7\n  DEPLOYER: 0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496\n  CONSTRUCTOR manager: 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f\n  CONSTRUCTOR owner: 0x7240b687730BE024bcfD084621f794C2e4F8408f\n  CONSTRUCTOR launchToken: 0x2e234DAe75C793f67A35089C9d99245E1C58470b\n  CONSTRUCTOR factory: 0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496\n\n[PASS] test_tokenCallbackCannotReenterDeposit() (gas: 55361125)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 682.90ms (174.69ms CPU time)\n\nRan 18 tests for test/OperatorParams.t.sol:OperatorParamsTest\n[PASS] testFuzz_bandsEncloseRangeSigmaOnTheSmallestUsableGrid(int256,uint256,uint8) (runs: 1000, μ: 25610, ~: 25751)\nLogs:\n  Bound result -5646691\n  Bound result 7098174\n  Bound result 10\n\n[PASS] testFuzz_triggerIsStrictAtBothSidesForAnyTenthsSetting(uint24,int24,uint8) (runs: 1000, μ: 21695, ~: 21701)\nLogs:\n  Bound result 9\n  Bound result 0\n  Bound result 15\n\n[PASS] test_bandsWidenMonotonicallyWithRangeSigma() (gas: 41219)\n[PASS] test_cooldownGateUsesTheLiveSetting() (gas: 2460884)\n[PASS] test_defaultsMatchTheSprintOneBehaviour() (gas: 46261)\n[PASS] test_firstDepositUsesTheLiveRangeSigma() (gas: 1271749)\n[PASS] test_pauseAndResumeTouchOnlyTheTrigger() (gas: 215606)\n[PASS] test_pausedPresetCooldownNeverElapses() (gas: 1122188)\n[PASS] test_pausedTriggerIsBeyondAnyEightSampleDeviation() (gas: 20132)\n[PASS] test_presetTableIsExactlyAsOrdered() (gas: 79677)\n[PASS] test_rangeSigmaShapesProposedAndDeployedBands() (gas: 1710613)\n[PASS] test_setCooldownBounds() (gas: 238216)\n[PASS] test_setModeLoadsEveryPresetAndEmits() (gas: 462066)\n[PASS] test_setModeRejectsUnknownModeAndNonOwner() (gas: 138403)\n[PASS] test_setRangeSigmaBounds() (gas: 206381)\n[PASS] test_setTriggerSigmaBounds() (gas: 230897)\n[PASS] test_tighterTriggerFiresWhereStandardDoesNot() (gas: 2303064)\n[PASS] test_triggerGateUsesTheLiveSettingAndPauseResume() (gas: 1839934)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 683.24ms (867.95ms CPU time)\n\nRan 9 tests for test/MathProperties.t.sol:MathPropertiesTest\n[PASS] testFuzz_bandsEncloseThreeSigmaOnTheSmallestUsableGrid(int256,uint256) (runs: 1000, μ: 21489, ~: 21753)\nLogs:\n  Bound result 12942\n  Bound result 10487\n\n[PASS] testFuzz_largerBudgetsNeverReduceLiquidity(int24,int24,int24,uint128,uint128,uint128) (runs: 1000, μ: 31083, ~: 31027)\nLogs:\n  Bound result 1892\n  Bound result 885379\n  Bound result 200\n\n[PASS] testFuzz_momentsIgnoreOrderAndReflectAboutZero(int24[8],uint8) (runs: 1000, μ: 106251, ~: 106171)\nLogs:\n  Bound result 6\n  Bound result 6\n  Bound result 1901\n  Bound result 6\n  Bound result 1500\n  Bound result 484117\n  Bound result -60\n  Bound result 2037\n\n[PASS] testFuzz_principalRoundingAndPriceMonotonicity(int24,int24,int24,int24,uint128) (runs: 1000, μ: 42930, ~: 43061)\nLogs:\n  Bound result 421\n  Bound result 3030\n  Bound result 5071\n  Bound result 882401\n\n[PASS] testFuzz_symmetricTwoPointDistributionHasKnownPopulationSigma(int24,uint24) (runs: 1000, μ: 31553, ~: 31513)\nLogs:\n  Bound result 0\n  Bound result 10091\n\n[PASS] testFuzz_triggerIsStrictAtBothSidesOfOneAndAHalfSigma(uint24,int24) (runs: 1000, μ: 17541, ~: 17405)\nLogs:\n  Bound result 358\n  Bound result -4669\n\n[PASS] test_oneWeiFundsOnlyAffordableLiquidityAtExactBandBoundaries() (gas: 11129)\n[PASS] test_triggerUsesTheUnroundedMean() (gas: 13674)\n[PASS] test_zeroLiquidityZeroBudgetsAndZeroCapacity() (gas: 9238)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 683.30ms (2.38s CPU time)\n\nRan 1 test for test/VaultInvariant.t.sol:VaultInvariantTest\n[PASS]\nVaultInvariantTest invariants:\n[PASS] invariant_currencyAndShareConservation\n[PASS] invariant_positionAndFlashAccounting\n VaultInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭--------------+----------------+-------+---------+----------╮\n| Contract     | Selector       | Calls | Reverts | Discards |\n+============================================================+\n| VaultHandler | advanceTime    | 274   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | deposit        | 264   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | donate         | 233   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | emergency      | 248   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | rebalance      | 254   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | trade          | 225   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | transferShares | 251   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | withdraw       | 299   | 0       | 0        |\n╰--------------+----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000002\n  Bound result 446744073727551597\n  Bound result -4\n  Bound result 10\n  Bound result 999999999999007477\n  Bound result 999999999999086402\n  Bound result 251445390996710160\n  Bound result 2863267840\n  Bound result 7106\n  Bound result 1061541997709\n  Bound result 472105998\n  Bound result 442\n  Bound result 300\n  Bound result 7847\n  Bound result 1828360097623889337351\n  Bound result 16750\n  Bound result 139\n  Bound result 1898426379133\n  Bound result 999999999999001492\n  Bound result -60\n  Bound result 6339\n  Bound result 12994\n  Bound result 4160\n  Bound result 2863272000\n  Bound result 46744073709551431\n  Bound result 999999999999005219\n  Bound result 999999999999006971\n  Bound result -499\n  Bound result 1500\n  Bound result 2896\n  Bound result 300\n  Bound result 17404\n  Bound result 419\n  Bound result 1672\n  Bound result 1217307224315159047234\n  Bound result 1\n  Bound result 658620\n  Bound result 2995\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 709.13ms (688.22ms CPU time)\n\nRan 2 tests for test/VaultAccountingInvariant.t.sol:VaultAccountingInvariantTest\n[PASS] invariant_assetsBackedByExternalCashFlows() (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------------+----------------+-------+---------+----------╮\n| Contract          | Selector       | Calls | Reverts | Discards |\n+=================================================================+\n| AccountingHandler | deposit        | 2037  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | donateFees     | 2054  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | donateRaw      | 2054  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | emergency      | 1975  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | roundTrip      | 2071  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | trade          | 2030  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | transferShares | 2107  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | withdraw       | 2056  | 0       | 0        |\n╰-------------------+----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 13674\n  Bound result 9364\n  Bound result 2353\n  Bound result 156\n  Bound result 9623\n  Bound result 2100\n  Bound result 1276506396940824695\n  Bound result 999999999999999980\n  Bound result 5279683593615473179268\n  Bound result 14972\n  Bound result 4999999999999999801\n  Bound result 938532670773082400\n  Bound result 61458199695745963\n  Bound result 5\n  Bound result 11\n  Bound result 2280\n  Bound result 299\n  Bound result 4096\n  Bound result 21298134939405989793\n  Bound result 4999999999999999998\n  Bound result 0\n  Bound result 589\n  Bound result 12000\n  Bound result 6013\n  Bound result 14282\n  Bound result 300\n  Bound result 341\n  Bound result 11\n  Bound result 3867016972\n  Bound result 6003754\n  Bound result 2059741868592896417021\n  Bound result 15185\n  Bound result 14230\n  Bound result 6000000000000000000\n  Bound result 6650\n  Bound result 4161\n  Bound result 42\n  Bound result 550\n  Bound result 120\n  Bound result 887271\n  Bound result 4841875349531262723881\n  Bound result 4076154123158028899\n  Bound result 974631052166199\n  Bound result 1800\n  Bound result 12000\n  Bound result 7911\n  Bound result 16384\n  Bound result 4194304\n  Bound result 100000000000000000\n  Bound result 4999999999999999997\n  Bound result 11584\n  Bound result 722\n  Bound result 60\n  Bound result 499\n  Bound result 741218608\n  Bound result 21357\n  Bound result 128\n  Bound result 7478\n  Bound result 994\n  Bound result -299\n  Bound result 2048\n  Bound result 1445\n  Bound result 143\n  Bound result 13808162001475966234855\n  Bound result 2446\n  Bound result 267\n  Bound result 0\n  Bound result -295\n  Bound result 2003\n  Bound result 377\n  Bound result 1901\n  Bound result 0\n  Bound result 27121241317907629011430\n  Bound result 23552\n  Bound result 1394610168591641231320\n  Bound result 2\n  Bound result -6\n  Bound result 200\n  Bound result 13\n  Bound result -6\n\n[PASS] test_accountingHandlerExercisesEveryActionAndFullExit() (gas: 3553359)\nLogs:\n  Bound result 3000000000000000000\n  Bound result 2000000000000000000\n  Bound result 1000000000000000000\n  Bound result 500000000000000000\n  Bound result 100000000000000000\n  Bound result 200000000000000000\n  Bound result 1002724390519861757235\n  Bound result 1800\n  Bound result 20\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 7.66s (7.63s CPU time)\n\nRan 14 test suites in 7.66s (12.35s CPU time): 135 tests passed, 0 failed, 0 skipped (135 total tests)\n","passed":true},{"durationMs":72,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SigmaHook.acceptOwnership()\",\"SigmaHook.activateEmergencyMode()\",\"SigmaHook.afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)\",\"SigmaHook.afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)\",\"SigmaHook.afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\",\"SigmaHook.afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)\",\"SigmaHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"SigmaHook.approve(address,uint256)\",\"SigmaHook.beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\",\"SigmaHook.beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)\",\"SigmaHook.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\",\"SigmaHook.beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\",\"SigmaHook.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"SigmaHook.deposit(uint256,uint256,uint256,address,uint256)\",\"SigmaHook.emergencyWithdraw()\",\"SigmaHook.emergencyWithdraw(uint256,address)\",\"SigmaHook.flashRebalance((address,address,uint24,int24,address))\",\"SigmaHook.pause()\",\"SigmaHook.receive()\",\"SigmaHook.rescueStrayETH()\",\"SigmaHook.resume()\",\"SigmaHook.retryInvestment((address,address,uint24,int24,address))\",\"SigmaHook.setCooldown(uint32)\",\"SigmaHook.setMode(uint8)\",\"SigmaHook.setRangeSigma(uint8)\",\"SigmaHook.setTriggerSigma(uint8)\",\"SigmaHook.setWETH(address)\",\"SigmaHook.transfer(address,uint256)\",\"SigmaHook.transferFrom(address,address,uint256)\",\"SigmaHook.transferOwnership(address)\",\"SigmaHook.unlockCallback(bytes)\",\"SigmaHook.withdraw(uint256,uint256,uint256,address,uint256)\",\"SigmaToken.approve(address,uint256)\",\"SigmaToken.transfer(address,uint256)\",\"SigmaToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"LICENSE\":21,\"README.md\":165,\"dependencies.lock.json\":64,\"docs/SECURITY.md\":58,\"foundry.toml\":21,\"launch.json\":29,\"remappings.txt\":8,\"script/MineSalt.s.sol\":148,\"src/HookFlags.sol\":30,\"src/PermanentTokenLock.sol\":7,\"src/SigmaHook.sol\":788,\"src/SigmaMath.sol\":103,\"src/SigmaToken.sol\":11,\"src/libraries/BandMath.sol\":81,\"src/libraries/VaultMath.sol\":122,\"test/Adversarial.t.sol\":237,\"test/BandMath.t.sol\":234,\"test/Flywheel.t.sol\":296,\"test/MathProperties.t.sol\":202,\"test/MineSalt.t.sol\":298,\"test/NativeSafety.t.sol\":138,\"test/NativeVault.t.sol\":165,\"test/OperatorParams.t.sol\":446,\"test/README.md\":33,\"test/SigmaHook.t.sol\":553,\"test/SigmaToken.t.sol\":51,\"test/VaultAccountingInvariant.t.sol\":330,\"test/VaultFailurePaths.t.sol\":267,\"test/VaultInvariant.t.sol\":186,\"test/WethVaultIntegration.t.sol\":200,\"test/helpers/Create2Factory.sol\":18,\"test/helpers/Fixture.sol\":117,\"test/helpers/MockERC20.sol\":24,\"test/helpers/TestRouter.sol\":84},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"29be294e6f1ce672288ba781c2fcc32cbe54cbc0c2508b0964dbdf60c1314a0c","verifiedTreeHash":"6ea888d9c26cb1f06ea0dff7958f5d19cf68b143","verifierVersion":"0.1.0+d372f99e"}]}