{"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":"39cbc332-bccf-42a4-977d-3dd95440ffab","kind":"skill:build-contract-project","nodes":[{"acceptedSubmissionHash":"2286ebe2337831173a9fb205e1a2db6cbd7d2361b9ac50d22ac32a757a1ff425","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","state":"accepted"}],"objective":"Fix all actionable findings in audit 1053af02-a430-49b3-a914-75620c17c801 on commit 64e40684: prevent a requester from expiring/discarding a retained NotPassed receipt; provide safe owner recovery for a misdelivered receipt and an unused UUID reservation; reduce and test receipt-first callback gas against the 200k limit with a realistic ERC-1271 signer. Preserve exact authenticated Intake-to-oracle binding and replay protection. Add regression tests for the report’s reproductions and document the two informational design choices. Do not deploy","parentJobId":"a4dcf4d1-b883-4fcf-8bf0-0538935e6dea","planHash":"250bbd94cde00e0973feb24f330c122829354239211ab813a7c1f2f9660d400b","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"28e81139-f2a5-4a5a-a239-b6c315b58e01","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1811-build-technical-foundation-hooks"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52647","feedbackHash":"e4af785ef5d71880d6ac25146b224f778beab10d38001bf2e9f9471bc4b4e9da","nodeKey":"build_contract_project","submissionHash":"2286ebe2337831173a9fb205e1a2db6cbd7d2361b9ac50d22ac32a757a1ff425","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"8d01df173f7f0d33a168d91e1eaf4421a14c570cace4016959d21004c57cb6a2","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"82aac14a853fc0b2804a2a118d9dad6004dde019fbfe084db9f4808d60eca910","device":"db7554a772b3fbf3","findings":[],"hash":"2286ebe2337831173a9fb205e1a2db6cbd7d2361b9ac50d22ac32a757a1ff425","nodeId":"3f2dec5d-096d-4c4b-9233-2c6c0fca7c7f","outcome":"completed","summary":"Implemented all four actionable fixes: blocked requester expiry of retained receipts, added guarded owner recovery for misdeliveries and unused UUID reservations, and preserved exact binding and replay protection.\n\nCold callbacks use 170,359 gas with the 5-of-7 signer and 187,513 with the audit stress case—both below 200k.\n\n`forge build`, all 197 tests under both seeds, and `forge fmt --check` pass. Recovery procedures and both informational choices are documented in `docs/AUDIT_1053AF02.md`.\n\nNothing deployed.","treeHash":"91df918d38f1ca49184a848051aa205cc732251f","usage":{"cachedInputTokens":4286720,"inputTokens":165657,"model":"gpt-6-astra","outputTokens":49355,"runtime":"codex","turns":10,"wallClockMs":1502323}}],"verification":[{"checks":[{"durationMs":8878,"exitCode":0,"name":"build","output":"Compiling 125 files with Solc 0.8.26\nSolc 0.8.26 finished in 8.77s\nCompiler run successful!\n","passed":true},{"durationMs":27438,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/ReviewBinding.t.sol:RequesterOwnershipTest\n[PASS] testMistypedHandoverCanBeCancelledOrReplacedAndOnlyNomineeAccepts() (gas: 430360)\n[PASS] testZeroAndSelfHandoversRefusedWithoutLosingControl() (gas: 103658)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.62ms (401.34µs CPU time)\n\nRan 4 tests for test/OracleConformance.t.sol:OracleConformanceTest\n[PASS] testProtocolSignatureVerifiesBeforeItsNonBoolAnswerIsRefused() (gas: 2030254)\n[PASS] test_acceptsAFreshSignatureFromTheVectorKeyAsDelivered() (gas: 2108226)\n[PASS] test_callbackSelectorsAreCanonical() (gas: 3965)\n[PASS] test_digestMatchesTheProtocol() (gas: 13912)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.54ms (1.91ms CPU time)\n\nRan 6 tests for test/OracleSigner.t.sol:OracleSignerTest\n[PASS] testContractSignerUsesErc1271FallbackUnderTheStipend() (gas: 2591662)\n[PASS] testDelegatedSignerStillRejectsWrongKeyTamperingAndMalformedEcdsa() (gas: 2482818)\n[PASS] testEcdsaKeyRemainsValidEvenIfItsCodeRejectsErc1271() (gas: 2221067)\n[PASS] testEip7702DesignatorDoesNotDisableTheSignersEcdsaKey() (gas: 2235228)\n[PASS] testErc1271RevocationRevertAndShortReturnFailClosedAndDoNotConsume() (gas: 3013222)\n[PASS] testFutureAttestationIsRefusedWithoutConsumingIt() (gas: 2157529)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 15.85ms (8.61ms CPU time)\n\nRan 3 tests for test/DeployHookJobRequester.t.sol:DeployHookJobRequesterTest\n[PASS] testCheckRefusesAddressesWithoutCodeAndUnsoldActions() (gas: 136080)\n[PASS] testDeployThenConfigureGivesAWorkingRequesterOwnedByTheNamedOwner() (gas: 6391713)\n[PASS] testRunRefusesZeroBroadcaster() (gas: 86380)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 27.84ms (3.50ms CPU time)\n\nRan 29 tests for test/HookJobRequester.t.sol:HookJobRequesterTest\n[PASS] testAnswerSignedForAnotherConsumerRefused() (gas: 2161408)\n[PASS] testBodyIsExactTemplateWithStepsSpecAndQuotedBrief() (gas: 933414)\n[PASS] testBriefValidation() (gas: 1852880)\n[PASS] testCallbackWithUnexpectedAbiFailsSafeAndJobCanExpire() (gas: 1131304)\n[PASS] testCallbacksFitTheIntakeStipend() (gas: 1820807)\n[PASS] testConstructorRefusesZeroAddresses() (gas: 10461)\n[PASS] testForgedExpiredWeakOrMistypedAnswersRefused() (gas: 2770039)\n[PASS] testFuzzPrintableAsciiBriefAcceptedUnlessReserved(bytes32,uint8) (runs: 256, μ: 499338, ~: 854088)\nLogs:\n  Bound result 20\n\n[PASS] testJobFailureClosesJobOnceAndIsNotAVerdict() (gas: 1129777)\n[PASS] testJobIdCollidingWithPendingReviewAskRefused() (gas: 2420039)\n[PASS] testOpenJobPaysOncePullsExactPriceAndTracksRequestId() (gas: 1139237)\n[PASS] testOwnerSettersAreOwnerOnlyAndValidated() (gas: 573511)\n[PASS] testPriceCeilingProtectsStandingAllowance() (gas: 3022172)\n[PASS] testResultAcceptedOnceFromIntakeOnly() (gas: 1098342)\n[PASS] testReusedRequestIdRefused() (gas: 1214250)\n[PASS] testReviewExpiryByRequesterOnly() (gas: 2261113)\n[PASS] testReviewFailureLeavesNoVerdictAndAllowsRetry() (gas: 3445077)\n[PASS] testReviewNotPassedIsStoredNotReverted() (gas: 2247374)\n[PASS] testReviewOnlyForDeliveredOrExpiredJobsByRequester() (gas: 2376672)\n[PASS] testReviewPassedOnlyFromSignedOracleAnswer() (gas: 2466118)\n[PASS] testSameAttestationCannotSettleASecondAsk() (gas: 4228584)\n[PASS] testSignerRotationTakesEffect() (gas: 2325959)\n[PASS] testStaticSiteReadContract() (gas: 1002513)\n[PASS] testSweepRecoversStrayTokens() (gas: 125809)\n[PASS] testUnconfiguredRequesterRefusesUntilOwnerSetsTemplates() (gas: 1545112)\n[PASS] testUnknownRequestIdRefused() (gas: 141554)\n[PASS] testUnpricedActionAndVersion1IntakeRefusedWithoutPayment() (gas: 464316)\n[PASS] testVersion1IntakeWorksWithTheFailureHookOff() (gas: 3196352)\n[PASS] testWalletMustApproveAndPay() (gas: 360607)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 47.67ms (60.09ms CPU time)\n\nRan 15 tests for test/HookIntegration.t.sol:HookIntegrationTest\n[PASS] testAllDirectionsAndExactModesAcceptLimit() (gas: 650218)\n[PASS] testDuplicatePoolInitializationFails() (gas: 41653)\n[PASS] testDynamicFeePoolRejectedAtomically() (gas: 97839)\n[PASS] testFuzzHookDataHasNoAuthority(bytes) (runs: 256, μ: 210245, ~: 210028)\n[PASS] testFuzzRealSwapsSettleAndConserve(uint128,bool,bool,bool) (runs: 256, μ: 280996, ~: 278533)\nLogs:\n  Bound result 4373\n\n[PASS] testFuzzSignedBoundaryAndNeutralReturn(int256,bytes) (runs: 256, μ: 30794, ~: 29816)\n[PASS] testFuzzUnauthorizedCallbacks(address) (runs: 256, μ: 94960, ~: 95102)\n[PASS] testIntMinIntMaxAndZeroFailClearly() (gas: 88270)\n[PASS] testLimitCapsOnlySpecifiedSideNotUnspecifiedSide() (gas: 427039)\n[PASS] testLiquidityWithdrawalRemainsAvailableAfterRejectedSwap() (gas: 184825)\n[PASS] testOverLimitRevertsThroughManagerInAllModes() (gas: 253819)\n[PASS] testSettlementFailureRollsBackCounterAndPoolState() (gas: 388376)\n[PASS] testTwoNewPoolsReuseOneDeployedHook() (gas: 624953)\n[PASS] testUnusedCallbacksAlwaysRevert() (gas: 209241)\n[PASS] testWrongHookAndUnknownPoolRejected() (gas: 124522)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 122.61ms (132.56ms CPU time)\n\nRan 5 tests for test/FeaturedTransfer.t.sol:FeaturedTransferTest\n[PASS] testBuyerCanClearSellersAdAndBuyItsOwnWhileOnlySellerGetsRefund() (gas: 3188812)\n[PASS] testFuzzNewOwnerCancellationConservesAllCredits(uint256) (runs: 256, μ: 1712140, ~: 1713805)\nLogs:\n  Bound result 604797\n\n[PASS] testIntermediateOwnerLosesCancellationPowerButOriginalPayerKeepsIt() (gas: 1869005)\n[PASS] testNewOwnerCannotCancelAtExpiryAndCanRenewBeforeOldSettlement() (gas: 2169353)\n[PASS] testProposedOwnerCannotCancelUntilAcceptingAndAdminCannotCancel() (gas: 1838309)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 125.28ms (32.98ms CPU time)\n\nRan 25 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] testAllNamedMainnetsAndUnknownChainsRejected() (gas: 4440)\n[PASS] testAnyoneMayDeployIdenticalPlanWithoutTakingOwnership() (gas: 3340102)\n[PASS] testChangedConstructorSettingsInvalidateCachedPlan() (gas: 2452880)\n[PASS] testChangingManagerChangesCommitments() (gas: 4456007)\n[PASS] testDuplicateDeploymentRejectedAndMinerSkipsOccupiedAddress() (gas: 3409894)\n[PASS] testFuzzOnlyExactPermissionMaskAccepted(uint160) (runs: 256, μ: 30093, ~: 30225)\n[PASS] testFuzzPredictionMatchesIndependentCreate2Formula(address,bytes32,bytes32) (runs: 256, μ: 3933, ~: 3933)\n[PASS] testFuzzSpecLimitCommitsToExactConstructor(uint128,bytes32) (runs: 256, μ: 44323, ~: 44323)\n[PASS] testInvalidSearchRanges() (gas: 100769)\n[PASS] testInvalidSpecFieldsRejected() (gas: 161488)\n[PASS] testManagerCodeChangeFailsClosed() (gas: 2410875)\n[PASS] testManagerMustHaveExpectedCode() (gas: 68520)\n[PASS] testPredictionDeploymentPermissionsSettingsAndBytecodeAgree() (gas: 3496937)\n[PASS] testPrefundedPredictedAddressStillDeploys() (gas: 3331370)\n[PASS] testScriptUsesSamePlanAndDeploymentAsStore() (gas: 7192658)\n[PASS] testScriptsRejectMissingBroadcaster() (gas: 7147621)\n[PASS] testSearchExhaustionAndResume() (gas: 6291072)\n[PASS] testStaleOrForgedScriptPlansRejected() (gas: 6271704)\n[PASS] testTestnetPolicyIdsOnlyLocalSimulation() (gas: 7542)\n[PASS] testVerificationDetectsCorruptedConstructorStorage() (gas: 3314813)\n[PASS] testVerificationDetectsCorruptedRuntime() (gas: 3308499)\n[PASS] testVerifyUndeployedOrWrongAddressRejected() (gas: 2430633)\n[PASS] testWrongChainRejected() (gas: 29640)\n[PASS] testWrongExpectedAddressAndHashRejected() (gas: 2458895)\n[PASS] testWrongSaltRejectedByFactoryAndConstructor() (gas: 98469)\nSuite result: ok. 25 passed; 0 failed; 0 skipped; finished in 162.59ms (145.66ms CPU time)\n\nRan 13 tests for test/ReviewBinding.t.sol:ReviewBindingTest\n[PASS] testAnswerAtDeadlineAcceptedAndExcessiveBackwardSkewRefused() (gas: 2353648)\n[PASS] testBindingRequiresOwnerAndExactRecordedBodyAndCannotBeOverwritten() (gas: 2180723)\n[PASS] testExpiredAskAnswerCannotSettleRetryOfIdenticalQuestion() (gas: 3528577)\n[PASS] testFuzzIntakeIdCannotBeReusedAfterReviewCloses(uint8) (runs: 256, μ: 2739093, ~: 2772778)\nLogs:\n  Bound result 1\n\n[PASS] testFuzzOracleIdReservationSurvivesFailureExpiryAndSettlement(uint8) (runs: 256, μ: 4191084, ~: 4176501)\nLogs:\n  Bound result 1\n\n[PASS] testInvalidOrUnknownBindingsRefused() (gas: 2037254)\n[PASS] testLateValidAnswerAndLateBindingAllowedUntilExplicitExpiry() (gas: 4409542)\n[PASS] testOwnerRotationPowersApplyToAlreadyPendingRequestsAsDocumented() (gas: 3233832)\n[PASS] testSignedPanelQuorumAndCountsMustBeConsistent() (gas: 2212632)\n[PASS] testSignedWrongQuestionIdChainOrWindowCannotSettle() (gas: 2818065)\n[PASS] testSwappedHonestAnswersLeaveBothPendingThenSettleTheirOwnAsks() (gas: 4619253)\n[PASS] testTemplateAndTimeoutChangesDoNotChangePendingAskContext() (gas: 2539822)\n[PASS] testUnboundReceiptDoesNotTrustMatchingIntakeIdAndRawBodyHash() (gas: 2391125)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 165.33ms (263.12ms CPU time)\n\nRan 5 tests for test/ReviewReceiptGas.t.sol:ReviewReceiptGasTest\n[PASS] testAudit22ColdReadsNowRetainsOneShotReceiptAndBoundVerdict() (gas: 4406566)\nLogs:\n  Cold audit registry +22 reads receipt minimum forwarded gas: 187513\n  Cold audit registry +22 reads bound minimum forwarded gas: 152310\n\n[PASS] testColdEoaReceiptGasAndExactStipend() (gas: 1520410)\nLogs:\n  Cold EOA receipt minimum forwarded gas: 125266\n\n[PASS] testColdFiveOfSevenReceiptAndBoundCallbacksFitStipend() (gas: 4985703)\nLogs:\n  Cold 5-of-7 receipt minimum forwarded gas: 170359\n  Cold 5-of-7 bound minimum forwarded gas: 135137\n\n[PASS] testFuzzMultisignerRefusesWrongKeyDuplicateRevokedExpiredOrInsufficientSignatures(uint8) (runs: 256, μ: 376042, ~: 378597)\nLogs:\n  Bound result 0\n\n[PASS] testOverBudgetSignerStillFailsClosedAndLosesSingleAttemptWithoutPartialReceipt() (gas: 644460)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 184.72ms (153.47ms CPU time)\n\nRan 24 tests for test/ReviewDelivery.t.sol:ReviewDeliveryTest\n[PASS] testAnswerAtExactSignatureExpiryCanBeRetainedAndConfirmedLater() (gas: 2320099)\n[PASS] testConfirmedReceiptCannotBeReplayedOrRebound() (gas: 2371074)\n[PASS] testEarlyEip7702KeyReceiptFitsColdStipend() (gas: 2320600)\n[PASS] testEarlyErc1271ReceiptFitsColdStipendAndSurvivesLaterRevocation() (gas: 2844242)\n[PASS] testFreshLateAnswerRejectedIfRequesterExpiresFirst() (gas: 2242865)\n[PASS] testFuzzBindingMustMatchEveryRetainedFieldAndFailedBindingCanBeCorrected(uint8) (runs: 256, μ: 2563979, ~: 2564176)\nLogs:\n  Bound result 3\n\n[PASS] testFuzzClockSkewToleranceIsSymmetricAtAskTime(int16,bool) (runs: 256, μ: 2276549, ~: 2294906)\nLogs:\n  Bound result 94\n\n[PASS] testFuzzEarlyOneAttemptCallbackRetainedThenConfirmedWithoutAnotherFee(bool) (runs: 256, μ: 2766785, ~: 2766785)\n[PASS] testFuzzFreshLateAnswerAcceptedUntilExplicitExpiry(bool,uint32) (runs: 256, μ: 2390237, ~: 2372307)\nLogs:\n  Bound result 1\n\n[PASS] testFuzzInvalidEarlyAnswerNeverCreatesReceiptOrVerdict(uint8) (runs: 256, μ: 1994087, ~: 1996172)\nLogs:\n  Bound result 2\n\n[PASS] testFuzzRequesterCannotDiscardRetainedAnswerOrBuyAnotherReview(bool) (runs: 256, μ: 2553203, ~: 2553203)\n[PASS] testIntakeFailureBeforeReceiptIsTerminalAndBindingCannotInventAnAnswer() (gas: 2023715)\n[PASS] testInvalidOneAttemptCallbackLosesFeeAndCannotRetryOrCreateReceipt() (gas: 3479459)\n[PASS] testMalformedOneShotCallbackCannotCreateReceipt() (gas: 1859015)\n[PASS] testOneSecondBackwardSkewAndExactFiveMinuteBoundaryAccepted() (gas: 4554393)\n[PASS] testOnlyCurrentIntakeMayRetainAndOnlyOwnerMayConfirm() (gas: 2519357)\n[PASS] testReceiptBindingStillRequiresExactBodyFingerprint() (gas: 2325065)\n[PASS] testReceiptCanBeConfirmedAfterSignatureExpiryTimeoutAndAuthorityRotation() (gas: 2585348)\n[PASS] testReceiptCannotBeOverwrittenOrClearedBySecondIntakeCallback() (gas: 2559092)\n[PASS] testReservedOrConsumedUuidCannotBeDeliveredToAnotherUnboundAsk() (gas: 5875969)\n[PASS] testSignatureExpiryStillControlsArrivalEvenAfterAskDeadline() (gas: 1992372)\n[PASS] testSwappedEarlyYesAndNoAnswersCannotBecomeVerdicts() (gas: 4295867)\n[PASS] testTimestampExtremesDoNotOverflowSkewCheck() (gas: 2379396)\n[PASS] testUnconfirmedDuplicateCannotReserveOrConsumeTheActualAsksUuid() (gas: 4311231)\nSuite result: ok. 24 passed; 0 failed; 0 skipped; finished in 184.80ms (802.18ms CPU time)\n\nRan 21 tests for test/FeaturedPlacements.t.sol:FeaturedPlacementsTest\n[PASS] testAdminRotationIsTwoStepAndDoesNotControlCustody() (gas: 805868)\n[PASS] testBadTokenConfigurationAndConstructorArguments() (gas: 1022284)\n[PASS] testCancelledPlacementCannotSettleOrCancelTwice() (gas: 1586722)\n[PASS] testDepositWithdrawBelongsToDepositorAndCannotBeSwept() (gas: 693423)\n[PASS] testDirectTransfersAreNotCreditsAndCannotBeSwept() (gas: 496850)\n[PASS] testEditingInvalidatesStalePurchaseAndFeeDisclosuresAreSnapshotted() (gas: 1995083)\n[PASS] testExpirySettlementIsPermissionlessAndCannotBeRepeatedOrRefunded() (gas: 1830989)\n[PASS] testFeaturedOrderingPaginationAndLabelsSkipCancelledAndExpired() (gas: 3095145)\n[PASS] testFuzzCancellationConservesFundsAndRoundsInPayersFavor(uint256) (runs: 256, μ: 1590173, ~: 1591843)\nLogs:\n  Bound result 2585\n\n[PASS] testHalfDurationCancellationSplitsFeeAndProceedsArePullBased() (gas: 1742376)\n[PASS] testImmediateCancellationFullyRefundsThenOwnerCanWithdraw() (gas: 1648242)\n[PASS] testOnlyListingOwnerCanBuyAndUnrelatedAccountsCannotCancelIncludingAdmin() (gas: 1766171)\n[PASS] testPurchaseCostsExactlyPointOneImdAndHasSevenDayAdLabel() (gas: 1481632)\n[PASS] testRecipientRotationInvalidatesStalePurchaseBeforeFundsAreLocked() (gas: 1453614)\n[PASS] testRecipientsAreSnapshottedAndChangingThemCannotTakeOldFunds() (gas: 2414968)\n[PASS] testSingleLivePlacementButCanRenewUnsettledExpiredOrCancelledPlacement() (gas: 2497512)\n[PASS] testSnapshotSurvivesEditingArchivingTransferAndRefundStaysWithPayer() (gas: 2399315)\n[PASS] testStaleTermsInactiveListingInsufficientBalanceAndDeadlineFailBeforeDebit() (gas: 1405175)\n[PASS] testUnknownIdsAndInvalidPagesFail() (gas: 228111)\n[PASS] testUnsetConfigurationAndTokenCanOnlyBeChosenOnce() (gas: 703556)\n[PASS] testZeroAmountsInvalidRecipientsAndExcessWithdrawalsFail() (gas: 629582)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 191.29ms (133.44ms CPU time)\n\nRan 7 tests for test/FeaturedAdversarial.t.sol:FeaturedAdversarialTest\n[PASS] testFalseRevertingMalformedAndNoMovementTokensCannotCreateCredit() (gas: 1201538)\n[PASS] testMissingTokenCodeAfterConfigurationCannotFakeTransfer() (gas: 68113)\n[PASS] testNoReturnTokenWorksForDepositsAndWithdrawals() (gas: 264270)\n[PASS] testProceedsWithdrawalAlsoGuardsReentrancy() (gas: 1621022)\n[PASS] testRecipientCannotBlockCancellationOrSettlementAndFailedClaimRollsBack() (gas: 2093568)\n[PASS] testTaxedOrFailedWithdrawalRollsBackAndRemainsRetryable() (gas: 1194337)\n[PASS] testTokenCallbacksCannotReenterAnyCustodyMutation() (gas: 3108803)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 205.73ms (4.22ms CPU time)\n\nRan 11 tests for test/ReviewRecovery.t.sol:ReviewRecoveryTest\n[PASS] testBoundOrTerminalAsksCannotBeDiscarded() (gas: 2339255)\n[PASS] testDiscardingDuplicateReceiptDoesNotClearGenuineConsumedUuid() (gas: 4312667)\n[PASS] testExpiredJobFalseVerdictRemainsTerminalEvenIfReviewLaterCompletes() (gas: 2355595)\n[PASS] testFuzzOwnerCanRecoverMismatchInAnyContextField(uint8) (runs: 256, μ: 2224563, ~: 2224732)\nLogs:\n  Bound result 0\n\n[PASS] testFuzzOwnerCannotDiscardReceiptWithMatchingContext(bool) (runs: 256, μ: 2338194, ~: 2338194)\n[PASS] testFuzzReleaseUnusedReservationAfterExpiryOrFailureThenFinalizeRetry(bool,bool) (runs: 256, μ: 5604001, ~: 5637802)\n[PASS] testLateNotPassedReceiptCannotBeFrontRunByRequesterExpiry() (gas: 2379595)\n[PASS] testRecoveryRequiresCurrentOwnerExactBodyValidContextAndReceipt() (gas: 2536673)\n[PASS] testReservationReleaseRejectsUnknownUnboundAndPendingHolderEvenPastDeadline() (gas: 3897888)\n[PASS] testSignerRotationPreservesRetainedVerificationButRejectsUndeliveredOldSignature() (gas: 4410261)\n[PASS] testSwappedReceiptOwnerClosesWrongAskWithoutStrandingGenuineUuid() (gas: 6062560)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 205.65ms (593.17ms CPU time)\n\nRan 11 tests for test/HookListingRegistry.t.sol:HookListingRegistryTest\n[PASS] testAuditUrlAndAuditLabelNeverConferVerification() (gas: 1866291)\n[PASS] testFreeCreateAndEditPersistAllFieldsAndHistory() (gas: 1618302)\n[PASS] testFuzzUnauthorizedCallerCannotModifyListing(address) (runs: 256, μ: 842654, ~: 842726)\n[PASS] testFuzzValidLabelsRemainSearchable(uint128) (runs: 256, μ: 747348, ~: 746840)\n[PASS] testInvalidIdentityUnknownRecordsAndPagesRevert() (gas: 931804)\n[PASS] testInvalidMetadataIsAtomicAndReferencesMayBeAbsent() (gas: 1106108)\n[PASS] testLabelValidationBoundsAndDuplicates() (gas: 965451)\n[PASS] testSameHookCanHaveIndependentOwnersButNoOwnerDuplicates() (gas: 2284749)\n[PASS] testSearchByLabelChainOwnerAndVisibilityUsesBoundedAscendingCursor() (gas: 2329424)\n[PASS] testTransferCanBeCancelledOrReplaced() (gas: 1022369)\n[PASS] testTwoStepListingTransferAndDuplicateProtection() (gas: 1824321)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 205.78ms (85.23ms CPU time)\n\nRan 3 tests for test/ReviewReceiptPacking.t.sol:ReviewReceiptPackingTest\n[PASS] testAllocatedMetadataIsNotAnAnswerAndReadAbiRemainsTenWords() (gas: 1840948)\n[PASS] testFuzzReceiptPreservesFullContextAndPackedFields(uint64,uint64,uint64,uint16,uint16,bool,uint256) (runs: 256, μ: 2351665, ~: 2351670)\nLogs:\n  Bound result 0\n  Bound result 5\n  Bound result 5\n\n[PASS] testReceiptPackingMaximumValuesDoNotLeakIntoAdjacentFields() (gas: 2341629)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 477.56ms (474.90ms CPU time)\n\nRan 11 tests for test/AuditFixes.t.sol:AuditFixesTest\n[PASS] testAllowedTestnetsDeployAndVerifyEndToEnd() (gas: 7765983)\n[PASS] testBaseMainnetRejectedOnEveryReleasePath() (gas: 9450397)\n[PASS] testEthereumMainnetRejectedOnEveryReleasePath() (gas: 9450443)\n[PASS] testFullPageCompletesOrResumesUnderTypicalCallGasCap() (gas: 4696895)\n[PASS] testFuzzUnknownChainsRejectedOnEveryReleasePath(uint64) (runs: 256, μ: 9453605, ~: 9453605)\n[PASS] testHookConstructorStillBindsSpecToActualChain() (gas: 19895)\n[PASS] testHookTemplateStaysChainAgnosticForFutureMainnetRelease() (gas: 1388790)\n[PASS] testMaxPageGasWithinBudgetWhenUncapped() (gas: 2338692)\n[PASS] testRobinhoodMainnetRejectedOnEveryReleasePath() (gas: 9450442)\n[PASS] testTooLittleGasForOneCandidateRevertsClearly() (gas: 17619788)\n[PASS] testTruncatedPageReportsFirstUncheckedNonce() (gas: 1946363)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 477.85ms (545.73ms CPU time)\n\nRan 1 test for test/FeaturedTransferInvariant.t.sol:FeaturedTransferInvariantTest\n[PASS] invariantEveryTokenIsAccountedForAndEveryCreditHasBacking() (runs: 256, calls: 128000, reverts: 0)\n\n╭-------------------------+------------------------+-------+---------+----------╮\n| Contract                | Selector               | Calls | Reverts | Discards |\n+===============================================================================+\n| FeaturedTransferHandler | advanceTime            | 11546 | 0       | 0        |\n|-------------------------+------------------------+-------+---------+----------|\n| FeaturedTransferHandler | cancel                 | 11611 | 0       | 0        |\n|-------------------------+------------------------+-------+---------+----------|\n| FeaturedTransferHandler | cancelAsCurrentOwner   | 11850 | 0       | 0        |\n|-------------------------+------------------------+-------+---------+----------|\n| FeaturedTransferHandler | claim                  | 11725 | 0       | 0        |\n|-------------------------+------------------------+-------+---------+----------|\n| FeaturedTransferHandler | deposit                | 11528 | 0       | 0        |\n|-------------------------+------------------------+-------+---------+----------|\n| FeaturedTransferHandler | purchaseAsCurrentOwner | 11566 | 0       | 0        |\n|-------------------------+------------------------+-------+---------+----------|\n| FeaturedTransferHandler | rotateRecipient        | 11577 | 0       | 0        |\n|-------------------------+------------------------+-------+---------+----------|\n| FeaturedTransferHandler | settle                 | 11707 | 0       | 0        |\n|-------------------------+------------------------+-------+---------+----------|\n| FeaturedTransferHandler | toggleCurrentListing   | 11731 | 0       | 0        |\n|-------------------------+------------------------+-------+---------+----------|\n| FeaturedTransferHandler | transferListing        | 11629 | 0       | 0        |\n|-------------------------+------------------------+-------+---------+----------|\n| FeaturedTransferHandler | withdraw               | 11530 | 0       | 0        |\n╰-------------------------+------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 225820091276669328\n  Bound result 1473\n  Bound result 286186293615491085\n  Bound result 537819\n  Bound result 1132\n  Bound result 97\n  Bound result 300\n  Bound result 10661\n  Bound result 5\n  Bound result 2000\n  Bound result 5777963\n  Bound result 11165\n  Bound result 9802\n  Bound result 4175\n  Bound result 3604\n  Bound result 546603\n  Bound result 30000\n  Bound result 438314\n  Bound result 195000\n  Bound result 290740339967630715\n  Bound result 157198259\n  Bound result 1842\n  Bound result 26032843126637871\n  Bound result 4096\n  Bound result 65\n  Bound result 3793\n  Bound result 212006384886397715\n  Bound result 2\n  Bound result 6295\n  Bound result 224\n  Bound result 55\n  Bound result 1165434483480\n  Bound result 2079\n  Bound result 56\n  Bound result 609140697912155354\n  Bound result 194968580861567446\n  Bound result 7742\n  Bound result 294\n  Bound result 480\n  Bound result 15\n  Bound result 74450\n  Bound result 540\n  Bound result 16711935\n  Bound result 777600\n  Bound result 46488147517742579\n  Bound result 719206529\n  Bound result 3798\n  Bound result 26589396833310015\n  Bound result 6294\n  Bound result 17179883264\n  Bound result 58125517265229938\n  Bound result 5555\n  Bound result 4115\n  Bound result 315\n  Bound result 88\n  Bound result 626814\n  Bound result 1000\n  Bound result 459248\n  Bound result 292539217066958302\n  Bound result 127\n  Bound result 1000000000000\n  Bound result 6174\n  Bound result 8911\n  Bound result 6099\n  Bound result 4516789331877806\n  Bound result 14755365456855389\n  Bound result 160\n  Bound result 76171195136475135\n  Bound result 1800604799\n  Bound result 6099\n  Bound result 12235203227163971\n  Bound result 103222606\n  Bound result 1310\n  Bound result 13094584764197639\n  Bound result 57343\n  Bound result 97\n  Bound result 3000\n  Bound result 1800538221\n  Bound result 8878\n  Bound result 745509\n  Bound result 1365\n  Bound result 95\n  Bound result 3289149546313595\n  Bound result 19294501274159962\n  Bound result 23\n  Bound result 115428911151845857\n  Bound result 3113\n  Bound result 1000\n  Bound result 10191442326167092\n  Bound result 4288\n  Bound result 777598\n  Bound result 88089784346296679\n  Bound result 167934543576446635\n  Bound result 1\n  Bound result 137\n  Bound result 2592000\n  Bound result 131072\n  Bound result 16384\n  Bound result 4962\n  Bound result 6737048805\n  Bound result 284634302914454324\n  Bound result 1636875848462431\n  Bound result 211956781717560371\n  Bound result 11155111\n  Bound result 838816040787815955\n  Bound result 71\n  Bound result 448120919896\n  Bound result 2845\n  Bound result 4599\n  Bound result 20064672075043701\n  Bound result 5814\n  Bound result 8164\n  Bound result 7288\n  Bound result 676730\n  Bound result 141521099596496896\n  Bound result 91896372574586522\n  Bound result 4026\n  Bound result 1616\n  Bound result 152424451185408989\n  Bound result 31337\n  Bound result 202232\n  Bound result 78571895664118348\n  Bound result 160\n  Bound result 2752070565786958\n  Bound result 33060692010136244\n  Bound result 391\n  Bound result 111432378845040\n  Bound result 660992\n  Bound result 210\n  Bound result 232\n  Bound result 336510\n  Bound result 555710\n  Bound result 9881942910925607\n  Bound result 594280\n  Bound result 4374\n  Bound result 672259\n  Bound result 24\n  Bound result 2646\n  Bound result 1900\n  Bound result 1300958875084694\n  Bound result 16\n  Bound result 400000\n  Bound result 22440765087041105\n  Bound result 54960701404759629\n  Bound result 11920\n  Bound result 7310\n  Bound result 2778\n  Bound result 35031625721560542\n  Bound result 25656853480002258\n  Bound result 10594\n  Bound result 224\n  Bound result 9359\n  Bound result 917718745595662\n  Bound result 299998064329424640\n  Bound result 653906675248\n  Bound result 11812\n  Bound result 676\n  Bound result 20732706159671641\n  Bound result 2846\n  Bound result 10593\n  Bound result 244\n  Bound result 2438\n  Bound result 3575\n  Bound result 596365\n  Bound result 213845706268122588\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 26.12s (26.12s CPU time)\n\nRan 1 test for test/FeaturedInvariant.t.sol:FeaturedInvariantTest\n[PASS] invariantEveryTokenIsAccountedForAndEveryCreditHasBacking() (runs: 256, calls: 128000, reverts: 0)\n\n╭-----------------+-----------------+-------+---------+----------╮\n| Contract        | Selector        | Calls | Reverts | Discards |\n+================================================================+\n| FeaturedHandler | advanceTime     | 14053 | 0       | 0        |\n|-----------------+-----------------+-------+---------+----------|\n| FeaturedHandler | cancel          | 14187 | 0       | 0        |\n|-----------------+-----------------+-------+---------+----------|\n| FeaturedHandler | claim           | 14209 | 0       | 0        |\n|-----------------+-----------------+-------+---------+----------|\n| FeaturedHandler | deposit         | 14094 | 0       | 0        |\n|-----------------+-----------------+-------+---------+----------|\n| FeaturedHandler | purchase        | 14187 | 0       | 0        |\n|-----------------+-----------------+-------+---------+----------|\n| FeaturedHandler | rotateRecipient | 14101 | 0       | 0        |\n|-----------------+-----------------+-------+---------+----------|\n| FeaturedHandler | settle          | 14296 | 0       | 0        |\n|-----------------+-----------------+-------+---------+----------|\n| FeaturedHandler | toggleListing   | 14538 | 0       | 0        |\n|-----------------+-----------------+-------+---------+----------|\n| FeaturedHandler | withdraw        | 14335 | 0       | 0        |\n╰-----------------+-----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 8791\n  Bound result 9318\n  Bound result 1624\n  Bound result 5806\n  Bound result 3792478064\n  Bound result 133180\n  Bound result 3964\n  Bound result 1088\n  Bound result 96\n  Bound result 8453\n  Bound result 5812\n  Bound result 30000\n  Bound result 1964512920\n  Bound result 718\n  Bound result 2\n  Bound result 174607431768211456\n  Bound result 61698\n  Bound result 60000\n  Bound result 4965\n  Bound result 8148\n  Bound result 3653\n  Bound result 311022\n  Bound result 1024\n  Bound result 239615396\n  Bound result 270933325407007564\n  Bound result 212910\n  Bound result 475\n  Bound result 1040551135\n  Bound result 71\n  Bound result 947\n  Bound result 444890\n  Bound result 12\n  Bound result 14080\n  Bound result 96\n  Bound result 17179883264\n  Bound result 100000000000000000\n  Bound result 1000000\n  Bound result 277511596451062893\n  Bound result 10\n  Bound result 79270827053202652\n  Bound result 96622345127791844\n  Bound result 88\n  Bound result 8192\n  Bound result 62\n  Bound result 22595111\n  Bound result 336\n  Bound result 1668535018\n  Bound result 444557084864773578\n  Bound result 241745\n  Bound result 4753\n  Bound result 1632\n  Bound result 20583\n  Bound result 55\n  Bound result 3540\n  Bound result 40000\n  Bound result 8037\n  Bound result 11124438924025377\n  Bound result 1474\n  Bound result 25081287907632391\n  Bound result 512\n  Bound result 9325\n  Bound result 8027\n  Bound result 4515\n  Bound result 40\n  Bound result 8\n  Bound result 4188\n  Bound result 322786\n  Bound result 216\n  Bound result 46557340199934\n  Bound result 844440684\n  Bound result 2000\n  Bound result 166396385831493665\n  Bound result 3036676560435927\n  Bound result 216\n  Bound result 512\n  Bound result 2\n  Bound result 2530302663956\n  Bound result 2276\n  Bound result 16383\n  Bound result 75644250940394395\n  Bound result 322\n  Bound result 10040075140407846\n  Bound result 6145\n  Bound result 2274\n  Bound result 157198258\n  Bound result 137880\n  Bound result 371636862\n  Bound result 28\n  Bound result 18\n  Bound result 6569\n  Bound result 87\n  Bound result 4381\n  Bound result 194549907276901183\n  Bound result 155631823579132688\n  Bound result 40000\n  Bound result 3809229177\n  Bound result 62\n  Bound result 336510\n  Bound result 140000\n  Bound result 80\n  Bound result 3\n  Bound result 17901693693111422\n  Bound result 778\n  Bound result 8228299158620643\n  Bound result 14942051180953673\n  Bound result 7866\n  Bound result 2\n  Bound result 318\n  Bound result 2592000\n  Bound result 7167\n  Bound result 20000\n  Bound result 140000\n  Bound result 225684821632784055\n  Bound result 200420022278068370\n  Bound result 34023635602135982\n  Bound result 146744073706959615\n  Bound result 5511\n  Bound result 30000\n  Bound result 1300\n  Bound result 127035603870986413\n  Bound result 128\n  Bound result 177737877320944740\n  Bound result 195000\n  Bound result 1888\n  Bound result 11605493167625245\n  Bound result 4000\n  Bound result 5425365478424\n  Bound result 6859\n  Bound result 900946824488\n  Bound result 7424\n  Bound result 4\n  Bound result 162265903\n  Bound result 230304381176537400\n  Bound result 103955069343\n  Bound result 6816\n  Bound result 4294967040\n  Bound result 172648361505980415\n  Bound result 9021\n  Bound result 259\n  Bound result 2493\n  Bound result 1964514103\n  Bound result 8302\n  Bound result 464\n  Bound result 103099963574770720\n  Bound result 1\n  Bound result 31337\n  Bound result 5357\n  Bound result 316964\n  Bound result 16186906963\n  Bound result 8605319904999847\n  Bound result 23\n  Bound result 96\n  Bound result 490568\n  Bound result 8537\n  Bound result 253\n  Bound result 71777214294589695\n  Bound result 1056290820\n  Bound result 10040075140407846\n  Bound result 798020858\n  Bound result 84532\n  Bound result 353931135\n  Bound result 768\n  Bound result 56\n  Bound result 92\n  Bound result 60000\n  Bound result 152830940528988442\n  Bound result 561440\n  Bound result 19236231376722084\n  Bound result 208394965837152255\n  Bound result 4964\n  Bound result 603\n  Bound result 400\n  Bound result 4838\n  Bound result 543452\n  Bound result 293782792835301375\n  Bound result 6439\n  Bound result 8216\n  Bound result 3067\n  Bound result 52068074436598631\n  Bound result 74933817976944513\n  Bound result 22712113537518021\n  Bound result 1287054948886940145\n  Bound result 100628936792090363\n  Bound result 103105417507401493\n  Bound result 2105\n  Bound result 958\n  Bound result 1717\n  Bound result 6412\n  Bound result 2078793299436911\n  Bound result 2952\n  Bound result 120\n  Bound result 8\n  Bound result 143932\n  Bound result 63829931943915037\n  Bound result 49087643067710\n  Bound result 7200\n  Bound result 2950\n  Bound result 255444464034512895\n  Bound result 2722\n  Bound result 195000\n  Bound result 645788\n  Bound result 1064470259\n  Bound result 125169935154903511\n  Bound result 32\n  Bound result 4056\n  Bound result 519224\n  Bound result 30326570628484691\n  Bound result 360\n  Bound result 5575\n  Bound result 34847224227002637\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 27.34s (27.33s CPU time)\n\nRan 19 test suites in 27.34s (56.26s CPU time): 197 tests passed, 0 failed, 0 skipped (197 total tests)\n","passed":true},{"durationMs":84,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BoundedSwapHook.afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\",\"BoundedSwapHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"FeaturedPlacements.acceptOwnership()\",\"FeaturedPlacements.cancel(uint256)\",\"FeaturedPlacements.cancelOwnershipTransfer()\",\"FeaturedPlacements.configureToken(address)\",\"FeaturedPlacements.deposit(uint256)\",\"FeaturedPlacements.purchase(uint256,uint256,address,uint256)\",\"FeaturedPlacements.setProceedsRecipient(address)\",\"FeaturedPlacements.settle(uint256)\",\"FeaturedPlacements.transferOwnership(address)\",\"FeaturedPlacements.withdraw(uint256,address)\",\"FeaturedPlacements.withdrawProceeds(uint256,address)\",\"HookJobRequester.acceptOwnership()\",\"HookJobRequester.bindReview(bytes32,bytes32,bytes32,bytes32,uint256,uint64,uint64)\",\"HookJobRequester.cancelOwnershipTransfer()\",\"HookJobRequester.discardReviewReceipt(bytes32,bytes32,bytes32,bytes32,uint256,uint64,uint64)\",\"HookJobRequester.expireJob(bytes32)\",\"HookJobRequester.expireReview(bytes32)\",\"HookJobRequester.onJobFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"HookJobRequester.onJobResult(bytes32,bytes)\",\"HookJobRequester.onReviewFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"HookJobRequester.onReviewResult(bytes32,(bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"HookJobRequester.openJob(bytes32,bytes)\",\"HookJobRequester.releaseReservation(bytes32)\",\"HookJobRequester.requestReview(bytes32)\",\"HookJobRequester.setFailureHook(bool)\",\"HookJobRequester.setIntake(address)\",\"HookJobRequester.setJobTemplate(bytes32,bytes,bytes,bytes)\",\"HookJobRequester.setOracleSigner(address)\",\"HookJobRequester.setPayment(address,uint256)\",\"HookJobRequester.setReviewTemplate(bytes32,bytes,bytes,uint16,uint16)\",\"HookJobRequester.setTimeouts(uint64,uint64)\",\"HookJobRequester.sweep(address,address,uint256)\",\"HookJobRequester.transferOwnership(address)\",\"HookListingRegistry.acceptListingOwnership(uint256)\",\"HookListingRegistry.cancelListingTransfer(uint256)\",\"HookListingRegistry.createListing(uint256,address,(string,string,string,string,string,uint160,string,string,string,string[]))\",\"HookListingRegistry.proposeListingOwner(uint256,address)\",\"HookListingRegistry.setListingActive(uint256,bool)\",\"HookListingRegistry.updateListing(uint256,(string,string,string,string,string,uint160,string,string,string,string[]))\",\"HooksStoreFactory.deploy((uint32,bytes32,uint256,address,bytes32,uint160,uint128),bytes32,address,bytes32)\"],\"files\":{\".gitignore\":6,\"LICENSE\":24,\"README.md\":108,\"dependencies.lock.json\":20,\"docs/AUDIT_1053AF02.md\":104,\"docs/AUDIT_5F43F94D.md\":91,\"docs/AUDIT_D9970905.md\":77,\"docs/CHAINS.md\":18,\"docs/DEPENDENCIES.md\":22,\"docs/DEPLOYMENT.md\":69,\"docs/HOOK_SPEC.md\":63,\"docs/IMD_INTEGRATION.md\":295,\"docs/LISTINGS_AND_ADS.md\":214,\"docs/STORE_API.md\":69,\"docs/THREAT_MODEL.md\":68,\"docs/VERIFICATION.md\":267,\"docs/build-fingerprints.json\":28,\"docs/checksums/FORMAT_ONLY.txt\":24,\"docs/checksums/UPSTREAM.sha256\":96,\"docs/checksums/VENDORED.sha256\":96,\"foundry.toml\":22,\"remappings.txt\":3,\"schemas/hook-spec.v1.schema.json\":17,\"script/DeployHook.s.sol\":38,\"script/DeployHookJobRequester.s.sol\":86,\"script/DeployStore.s.sol\":19,\"script/verify-vendored.sh\":15,\"sdk/hooks_store.py\":306,\"site/index.html\":171,\"site/listings.html\":56,\"site/listings.js\":212,\"src/BoundedSwapHook.sol\":97,\"src/DisabledCallbacks.sol\":63,\"src/HookSpec.sol\":61,\"src/HooksStoreFactory.sol\":114,\"src/deployment/DeploymentPolicy.sol\":21,\"src/deployment/HookDeployment.sol\":44,\"src/deployment/HookMiner.sol\":63,\"src/imd/HookJobRequester.sol\":844,\"src/imd/IIntake.sol\":27,\"src/imd/OracleAttestation.sol\":230,\"src/interfaces/IHooksStore.sol\":36,\"src/store/ExactStoreToken.sol\":48,\"src/store/FeaturedPlacements.sol\":270,\"src/store/HookListingRegistry.sol\":217,\"src/store/StoreAdmin.sol\":46,\"src/vendor/openzeppelin/LICENSE\":22,\"src/vendor/openzeppelin/interfaces/IERC1271.sol\":17,\"src/vendor/openzeppelin/interfaces/IERC5267.sol\":28,\"src/vendor/openzeppelin/interfaces/IERC7913.sol\":18,\"src/vendor/openzeppelin/utils/Bytes.sol\":247,\"src/vendor/openzeppelin/utils/Panic.sol\":57,\"src/vendor/openzeppelin/utils/ShortStrings.sol\":122,\"src/vendor/openzeppelin/utils/StorageSlot.sol\":143,\"src/vendor/openzeppelin/utils/Strings.sol\":515,\"src/vendor/openzeppelin/utils/cryptography/ECDSA.sol\":285,\"src/vendor/openzeppelin/utils/cryptography/EIP712.sol\":160,\"src/vendor/openzeppelin/utils/cryptography/MessageHashUtils.sol\":100,\"src/vendor/openzeppelin/utils/cryptography/SignatureChecker.sol\":162,\"src/vendor/openzeppelin/utils/math/Math.sol\":758,\"src/vendor/openzeppelin/utils/math/SafeCast.sol\":1162,\"src/vendor/openzeppelin/utils/math/SignedMath.sol\":68,\"test/AuditFixes.t.sol\":192,\"test/DeployHookJobRequester.t.sol\":104,\"test/Deployment.t.sol\":329,\"test/FeaturedAdversarial.t.sol\":151,\"test/FeaturedInvariant.t.sol\":186,\"test/FeaturedPlacements.t.sol\":443,\"test/FeaturedTransfer.t.sol\":120,\"test/FeaturedTransferInvariant.t.sol\":80,\"test/HookIntegration.t.sol\":294,\"test/HookJobRequester.t.sol\":758,\"test/HookListingRegistry.t.sol\":265,\"test/OracleConformance.t.sol\":135,\"test/OracleSigner.t.sol\":125,\"test/ReviewBinding.t.sol\":349,\"test/ReviewDelivery.t.sol\":490,\"test/ReviewReceiptGas.t.sol\":201,\"test/ReviewReceiptPacking.t.sol\":97,\"test/ReviewRecovery.t.sol\":326,\"test/helpers/Fixture.sol\":46,\"test/helpers/ImdTemplates.sol\":19,\"test/helpers/MockIntake.sol\":111,\"test/helpers/PoolRouter.sol\":76,\"test/helpers/ReceiptSigners.sol\":75,\"test/helpers/StoreFixture.sol\":81,\"test/helpers/StoreTokenMock.sol\":82,\"test/helpers/TestToken.sol\":13,\"test/listings-reader.test.cjs\":97,\"test/test_store_sdk.py\":193},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":4187,"exitCode":0,"name":"slither","output":"[high/medium] incorrect-exp at src/vendor/openzeppelin/utils/math/Math.sol:204: Math.mulDiv(uint256,uint256,uint256) (src/vendor/openzeppelin/utils/math/Math.sol#204-275) has bitwise-xor operator ^ instead of the exponentiation operator **: \n[medium/medium] divide-before-multiply at src/vendor/openzeppelin/utils/math/Math.sol:204: Math.mulDiv(uint256,uint256,uint256) (src/vendor/openzeppelin/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/vendor/openzeppelin/utils/math/Math.sol:204: Math.mulDiv(uint256,uint256,uint256) (src/vendor/openzeppelin/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/vendor/openzeppelin/utils/math/Math.sol:204: Math.mulDiv(uint256,uint256,uint256) (src/vendor/openzeppelin/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/vendor/openzeppelin/utils/math/Math.sol:204: Math.mulDiv(uint256,uint256,uint256) (src/vendor/openzeppelin/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/vendor/openzeppelin/utils/math/Math.sol:204: Math.mulDiv(uint256,uint256,uint256) (src/vendor/openzeppelin/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/vendor/openzeppelin/utils/math/Math.sol:315: Math.invMod(uint256,uint256) (src/vendor/openzeppelin/utils/math/Math.sol#315-363) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/vendor/openzeppelin/utils/math/Math.sol:204: Math.mulDiv(uint256,uint256,uint256) (src/vendor/openzeppelin/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/vendor/openzeppelin/utils/math/Math.sol:204: Math.mulDiv(uint256,uint256,uint256) (src/vendor/openzeppelin/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:\n[medium/medium] divide-before-multiply at src/vendor/openzeppelin/utils/math/Math.sol:204: Math.mulDiv(uint256,uint256,uint256) (src/vendor/openzeppelin/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:\n[medium/high] incorrect-equality at src/store/FeaturedPlacements.sol:219: FeaturedPlacements.getPlacement(uint256) (src/store/FeaturedPlacements.sol#219-222) uses a dangerous strict equality:\n[medium/medium] reentrancy-no-eth at src/imd/HookJobRequester.sol:341: Reentrancy in HookJobRequester.requestReview(bytes32) (src/imd/HookJobRequester.sol#341-365):\n[medium/medium] uninitialized-local at src/imd/HookJobRequester.sol:795: HookJobRequester._validateBrief(bytes).cp (src/imd/HookJobRequester.sol#795) is a local variable never initialized\n[medium/medium] uninitialized-local at src/imd/HookJobRequester.sol:794: HookJobRequester._validateBrief(bytes).len (src/imd/HookJobRequester.sol#794) is a local variable never initialized\n[medium/medium] unused-return at src/store/FeaturedPlacements.sol:104: FeaturedPlacements.configureToken(address) (src/store/FeaturedPlacements.sol#104-113) ignores return value by ExactStoreToken.balance(token,address(this)) (src/store/FeaturedPlacements.sol#110)\n[medium/medium] unused-return at src/vendor/openzeppelin/utils/cryptography/SignatureChecker.sol:44: SignatureChecker.isValidSignatureNowCalldata(address,bytes32,bytes) (src/vendor/openzeppelin/utils/cryptography/SignatureChecker.sol#44-55) ignores return value by (recovered,err,None) = ECDSA.tryRecoverCalldata(hash,signature) (src/vendor/openzeppelin/utils/cryptography/SignatureChecker.sol#50)\n[medium/medium] unused-return at src/imd/OracleAttestation.sol:159: OracleAttestationConsumer._verifyAttestation(OracleAttestation.Attestation,bytes) (src/imd/OracleAttestation.sol#159-174) ignores return value by (recovered,err,None) = ECDSA.tryRecoverCalldata(digest,signature) (src/imd/OracleAttestation.sol#169)\n[medium/medium] unused-return at src/vendor/openzeppelin/utils/cryptography/SignatureChecker.sol:32: SignatureChecker.isValidSignatureNow(address,bytes32,bytes) (src/vendor/openzeppelin/utils/cryptography/SignatureChecker.sol#32-39) ignores return value by (recovered,err,None) = ECDSA.tryRecover(hash,signature) (src/vendor/openzeppelin/utils/cryptography/SignatureChecker.sol#34)\n[low/medium] reentrancy-benign at src/imd/HookJobRequester.sol:341: Reentrancy in HookJobRequester.requestReview(bytes32) (src/imd/HookJobRequester.sol#341-365):\n[low/medium] reentrancy-benign at src/store/FeaturedPlacements.sol:123: Reentrancy in FeaturedPlacements.deposit(uint256) (src/store/FeaturedPlacements.sol#123-131):\n[low/medium] reentrancy-benign at src/imd/HookJobRequester.sol:270: Reentrancy in HookJobRequester.openJob(bytes32,bytes) (src/imd/HookJobRequester.sol#270-288):\n[low/medium] timestamp at src/store/FeaturedPlacements.sol:197: FeaturedPlacements.settle(uint256) (src/store/FeaturedPlacements.sol#197-206) uses timestamp for comparisons\n[low/medium] timestamp at src/imd/HookJobRequester.sol:324: HookJobRequester.expireJob(bytes32) (src/imd/HookJobRequester.sol#324-332) uses timestamp for comparisons\n[low/medium] timestamp at src/store/FeaturedPlacements.sol:145: FeaturedPlacements.purchase(uint256,uint256,address,uint256) (src/store/FeaturedPlacements.sol#145-173) uses timestamp for comparisons\n[low/medium] timestamp at src/imd/OracleAttestation.sol:159: OracleAttestationConsumer._verifyAttestation(OracleAttestation.Attestation,bytes) (src/imd/OracleAttestation.sol#159-174) uses timestamp for comparisons\n[low/medium] timestamp at src/store/FeaturedPlacements.sol:224: FeaturedPlacements.isActive(uint256) (src/store/FeaturedPlacements.sol#224-227) uses timestamp for comparisons\n[low/medium] timestamp at src/store/FeaturedPlacements.sol:177: FeaturedPlacements.cancel(uint256) (src/store/FeaturedPlacements.sol#177-194) uses timestamp for comparisons\n[low/medium] timestamp at src/imd/HookJobRequester.sol:602: HookJobRequester.expireReview(bytes32) (src/imd/HookJobRequester.sol#602-615) uses timestamp for comparisons\n[low/medium] timestamp at src/store/FeaturedPlacements.sol:219: FeaturedPlacements.getPlacement(uint256) (src/store/FeaturedPlacements.sol#219-222) uses timestamp for comparisons","passed":true},{"durationMs":779,"exitCode":0,"name":"aderyn","output":"[high] abi-encode-packed-hash-collision at src/vendor/openzeppelin/utils/cryptography/MessageHashUtils.sol:63: `abi.encodePacked()` Hash Collision (2 places)\n[high] incorrect-caret-operator at src/vendor/openzeppelin/utils/math/Math.sol:257: Incorrect use of caret operator\n[high] incorrect-shift-order at src/deployment/HookMiner.sol:27: Incorrect Assembly Shift Parameter Order\n[high] reentrancy-state-change at src/imd/HookJobRequester.sol:276: Reentrancy: State change after external call (4 places)\n[high] reused-contract-name at src/vendor/openzeppelin/utils/math/SafeCast.sol:19: Contract Name Reused in Different Files\n[high] unsafe-casting at src/vendor/openzeppelin/utils/Strings.sol:432: Unsafe Casting of integers\n[low] centralization-risk at src/imd/HookJobRequester.sol:382: Centralization Risk (15 places)\n[low] costly-loop at src/store/HookListingRegistry.sol:175: Costly operations inside loop (2 places)\n[low] ecrecover at src/vendor/openzeppelin/utils/cryptography/ECDSA.sol:191: `ecrecover` Signature Malleability\n[low] internal-function-used-once at src/HookSpec.sol:35: Internal Function Used Only Once (33 places)\n[low] large-numeric-literal at src/deployment/HookMiner.sol:9: Large Numeric Literal (2 places)\n[low] literal-instead-of-constant at src/imd/HookJobRequester.sol:557: Literal Instead of Constant (221 places)\n[low] local-variable-shadowing at src/imd/HookJobRequester.sol:67: Local Variable Shadows State Variable (2 places)\n[low] non-reentrant-not-first at src/store/FeaturedPlacements.sol:104: `nonReentrant` is Not the First Modifier\n[low] push-zero-opcode at src/vendor/openzeppelin/interfaces/IERC1271.sol:4: PUSH0 Opcode (15 places)\n[low] require-revert-in-loop at src/deployment/HookMiner.sol:51: Loop Contains `require`/`revert` (6 places)\n[low] state-no-address-check at src/BoundedSwapHook.sol:43: Address State Variable Set Without Checks\n[low] state-variable-could-be-immutable at src/BoundedSwapHook.sol:21: State Variable Could Be Immutable (5 places)\n[low] unchecked-return at src/store/FeaturedPlacements.sol:110: Unchecked Return (4 places)\n[low] uninitialized-local-variable at src/imd/HookJobRequester.sol:824: Uninitialized Local Variable (6 places)\n[low] unsafe-erc20-operation at src/store/ExactStoreToken.sol:43: Unsafe ERC20 Operation\n[low] unspecific-solidity-pragma at src/vendor/openzeppelin/interfaces/IERC1271.sol:4: Unspecific Solidity Pragma (4 places)","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"2286ebe2337831173a9fb205e1a2db6cbd7d2361b9ac50d22ac32a757a1ff425","verifiedTreeHash":"91df918d38f1ca49184a848051aa205cc732251f","verifierVersion":"0.1.0+d952fceb"}]}