{"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":"b29e6c95-8a83-411b-9690-062573688a89","kind":"skill:build-contract-project","nodes":[{"acceptedSubmissionHash":"f62df1befc46a825532394d1d784a635bd422a2db2076f4f3657e511fffea57e","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":"Continue from 575e8a8f74da581298a8527f493e9eab8a45901f. Targeted patch, not a rebuild. Code/local tests only; no deployment or spending.\n\nProtocol: https://imdnotdead.fun/docs/ specifies job callback arguments (bytes32 requestId, bytes32 resultHash, string uri), not (bytes32,bytes). The current fixture repeats the wrong format.\n\nRED FIRST: add this test to a contract inheriting HookJobRequesterFixture; retain its failure output before changing production code:\nfunction testProtocolTuple() public {\n bytes32 id = _open();\n bytes32 h = keccak256(\"result document\");\n assertTrue(intake.complete(id, abi.encode(id,h,\"ipfs://fixture\")));\n assertEq(requester.getJob(id).resultHash,h);\n}\n\nIn src/imd/HookJobRequester.sol keep JobDelivered, add:\nevent JobResultURI(bytes32 indexed requestId,string uri);\nReplace onJobResult with:\nfunction onJobResult(bytes32 requestId,bytes32 resultHash,string calldata uri) external onlyIntake {\n Job storage job=jobs[requestId];\n if(job.status!=JobStatus.Open && job.status!=JobStatus.Expired) revert UnknownOrSettled(requestId);\n job.status=JobStatus.Delivered;\n job.resultHash=resultHash;\n emit JobDelivered(requestId,resultHash);\n emit JobResultURI(requestId,uri);\n}\n\nMigrate existing job-callback fixtures/callers to the protocol tuple; do not alter oracle tuples. Regenerate site ABI; expose URI safely via its event, not string storage. Update docs, readers and fingerprints. Preserve owner-trust disclosures; delivery is not review approval.\n\nShow RED then GREEN logs. Test exact hash, URI event, unauthorized/duplicate/malformed callbacks and late completion. Run full Foundry, gas and site/ABI suites. Preserve all existing assertions; no skipped tests or mock translation. Keep pinned compiler settings, 200k callback budget and runtime below 24,576 bytes. Report remaining live-Intake assumptions honestly. Return commit, diff and actual command results.","parentJobId":"e192a6f6-197f-488f-9792-c32e8eb3d7b5","planHash":"863b217e849c3cae466477f43e90636b306a34b8b88142ce3f08ef104ebdebb1","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":"51568","feedbackHash":"b1a1610a7c0e597c81930ba6b36d7eb982e004c2f5fb4d59c244c3cd0e3239cd","nodeKey":"build_contract_project","submissionHash":"f62df1befc46a825532394d1d784a635bd422a2db2076f4f3657e511fffea57e","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"32f8b0b608aedaa24cdbc390bbb843bc81f9ef33be662389f38bbb8b0f98dcf2","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"2a936e75f52c7dd137b6308e7826e5a229d9e7091d5042d4c3d515eebbdc868b","device":"3111534b6da56538","findings":[],"hash":"f62df1befc46a825532394d1d784a635bd422a2db2076f4f3657e511fffea57e","nodeId":"ba1d5cc3-e7ed-4fb6-bdcf-87289ff0b534","outcome":"completed","summary":"Implemented the tuple callback, exact hash storage, URI event, safe site display, ABI, docs and fingerprints. [Review diff](docs/checks/job-protocol-tuple/implementation.patch).\n\n- [RED](docs/checks/job-protocol-tuple/red.log): 1 failed → [GREEN](docs/checks/job-protocol-tuple/green.log): 1 passed.\n- `forge build` and `forge fmt --check`: passed.\n- Full Foundry: **252 passed**.\n- Supplied-seed full gas run: **252 passed**.\n- Site/ABI: **18 passed**; SDK: **10 passed**.\n- Runtime: **24,117 bytes**. Cold 4-KiB URI callback: **67,052 gas**.\n\n[Actual commands, logs and remaining assumptions](docs/checks/job-protocol-tuple/README.md). Live Intake delivery, document availability, oracle mapping and production signer gas remain unverified. Owner-trust disclosures remain; delivery is not review approval. Nothing deployed or spent.\n\nBase commit: `575e8a8f74da581298a8527f493e9eab8a45901f`. No new commit was created because your rules prohibit `.git/` writes.","treeHash":"f7775d30127523075d608dd0a052dc207bcdc81d","usage":{"cachedInputTokens":4034432,"inputTokens":166879,"model":"gpt-6-astra","outputTokens":34556,"runtime":"codex","turns":10,"wallClockMs":850385}}],"verification":[{"checks":[{"durationMs":12676,"exitCode":0,"name":"build","output":"Compiling 131 files with Solc 0.8.26\nSolc 0.8.26 finished in 12.55s\nCompiler run successful!\n","passed":true},{"durationMs":29023,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/ReviewBinding.t.sol:RequesterOwnershipTest\n[PASS] testMistypedHandoverCanBeCancelledOrReplacedAndOnlyNomineeAccepts() (gas: 430359)\n[PASS] testZeroAndSelfHandoversRefusedWithoutLosingControl() (gas: 103680)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.60ms (393.70µs CPU time)\n\nRan 1 test for test/AuditExpiryProof.t.sol:ExpiryFrontRunShoppingTest\n[PASS] testRequesterFrontRunsLateNotPassedWithExpiryAndReasks() (gas: 1278383)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.31ms (1.12ms CPU time)\n\nRan 1 test for test/AuditReceiptConflictProof.t.sol:StuckReceiptProofTest\n[PASS] testOwnerCanCloseReceiptWhoseUuidWasConsumedElsewhere() (gas: 2596747)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.81ms (1.75ms CPU time)\n\nRan 4 tests for test/OracleConformance.t.sol:OracleConformanceTest\n[PASS] testProtocolSignatureVerifiesBeforeItsNonBoolAnswerIsRefused() (gas: 2060648)\n[PASS] test_acceptsAFreshSignatureFromTheVectorKeyAsDelivered() (gas: 2136385)\n[PASS] test_callbackSelectorsAreCanonical() (gas: 3965)\n[PASS] test_digestMatchesTheProtocol() (gas: 13912)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 3.08ms (1.63ms CPU time)\n\nRan 1 test for test/JobProtocolTuple.t.sol:JobProtocolGasTest\n[PASS] testColdTupleWithLongURIFits200kAndRuntimeLimit() (gas: 894390)\nLogs:\n  Cold job tuple with 4096-byte URI minimum forwarded gas: 67052\n  Requester deployed runtime bytes: 24117\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.39ms (823.44µs CPU time)\n\nRan 3 tests for test/DeployHookJobRequester.t.sol:DeployHookJobRequesterTest\n[PASS] testCheckRefusesAddressesWithoutCodeAndUnsoldActions() (gas: 136180)\n[PASS] testDeployThenConfigureGivesAWorkingRequesterOwnedByTheNamedOwner() (gas: 7241222)\n[PASS] testRunRefusesZeroBroadcaster() (gas: 86380)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.70ms (2.23ms 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 6.12ms (4.42ms CPU time)\n\nRan 6 tests for test/OracleSigner.t.sol:OracleSignerTest\n[PASS] testContractSignerUsesErc1271FallbackUnderTheStipend() (gas: 2627221)\n[PASS] testDelegatedSignerStillRejectsWrongKeyTamperingAndMalformedEcdsa() (gas: 2511895)\n[PASS] testEcdsaKeyRemainsValidEvenIfItsCodeRejectsErc1271() (gas: 2249328)\n[PASS] testEip7702DesignatorDoesNotDisableTheSignersEcdsaKey() (gas: 2263466)\n[PASS] testErc1271RevocationRevertAndShortReturnFailClosedAndDoNotConsume() (gas: 3047340)\n[PASS] testFutureAttestationIsRefusedWithoutConsumingIt() (gas: 2187980)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 8.10ms (6.72ms 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, μ: 747355, ~: 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 72.49ms (129.40ms CPU time)\n\nRan 29 tests for test/HookJobRequester.t.sol:HookJobRequesterTest\n[PASS] testAnswerSignedForAnotherConsumerRefused() (gas: 2191898)\n[PASS] testBodyIsExactTemplateWithStepsSpecAndQuotedBrief() (gas: 947576)\n[PASS] testBriefValidation() (gas: 1870180)\n[PASS] testCallbackWithUnexpectedAbiFailsSafeAndJobCanExpire() (gas: 1202748)\n[PASS] testCallbacksFitTheIntakeStipend() (gas: 1859307)\n[PASS] testConstructorRefusesZeroAddresses() (gas: 10483)\n[PASS] testForgedExpiredWeakOrMistypedAnswersRefused() (gas: 2799455)\n[PASS] testFuzzPrintableAsciiBriefAcceptedUnlessReserved(bytes32,uint8) (runs: 256, μ: 515411, ~: 868182)\nLogs:\n  Bound result 20\n\n[PASS] testJobFailureClosesJobOnceAndIsNotAVerdict() (gas: 1954526)\n[PASS] testJobIdCollidingWithPendingReviewAskRefused() (gas: 2464996)\n[PASS] testOpenJobPaysOncePullsExactPriceAndTracksRequestId() (gas: 1153399)\n[PASS] testOwnerSettersAreOwnerOnlyAndValidated() (gas: 638330)\n[PASS] testPriceCeilingProtectsStandingAllowance() (gas: 3071134)\n[PASS] testResultAcceptedOnceFromIntakeOnly() (gas: 1116520)\n[PASS] testReusedRequestIdRefused() (gas: 1242437)\n[PASS] testReviewExpiryRequestedByRequesterAndConfirmedByOwner() (gas: 2378290)\n[PASS] testReviewFailureLeavesNoVerdictAndAllowsRetry() (gas: 3487817)\n[PASS] testReviewNotPassedIsStoredNotReverted() (gas: 2275740)\n[PASS] testReviewOnlyForDeliveredOrExpiredJobsByRequester() (gas: 2404055)\n[PASS] testReviewPassedOnlyFromSignedOracleAnswer() (gas: 2494788)\n[PASS] testSameAttestationCannotSettleASecondAsk() (gas: 4306375)\n[PASS] testSignerRotationTakesEffect() (gas: 2361296)\n[PASS] testStaticSiteReadContract() (gas: 1019818)\n[PASS] testSweepRecoversStrayTokens() (gas: 137069)\n[PASS] testUnconfiguredRequesterRefusesUntilOwnerSetsTemplates() (gas: 1560555)\n[PASS] testUnknownRequestIdRefused() (gas: 142556)\n[PASS] testUnpricedActionAndVersion1IntakeRefusedWithoutPayment() (gas: 472643)\n[PASS] testVersion1IntakeWorksWithTheFailureHookOff() (gas: 3249057)\n[PASS] testWalletMustApproveAndPay() (gas: 373289)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 72.97ms (81.24ms CPU time)\n\nRan 5 tests for test/FeaturedTransfer.t.sol:FeaturedTransferTest\n[PASS] testBuyerCanClearSellersAdAndBuyItsOwnWhileOnlySellerGetsRefund() (gas: 3188812)\n[PASS] testFuzzNewOwnerCancellationConservesAllCredits(uint256) (runs: 256, μ: 1712282, ~: 1713805)\nLogs:\n  Bound result 15161\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 131.63ms (132.54ms 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, μ: 210227, ~: 210022)\n[PASS] testFuzzRealSwapsSettleAndConserve(uint128,bool,bool,bool) (runs: 256, μ: 281008, ~: 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 258.15ms (145.53ms CPU time)\n\nRan 11 tests for test/ReviewRecovery.t.sol:ReviewRecoveryTest\n[PASS] testBoundOrTerminalAsksCannotBeDiscarded() (gas: 2367570)\n[PASS] testDiscardingDuplicateReceiptDoesNotClearGenuineConsumedUuid() (gas: 4380228)\n[PASS] testExpiredJobFalseVerdictRemainsTerminalEvenIfReviewLaterCompletes() (gas: 2444007)\n[PASS] testFuzzOwnerCannotDiscardReceiptWithMatchingContext(bool) (runs: 256, μ: 2375614, ~: 2375614)\n[PASS] testFuzzReleaseUnusedReservationAfterExpiryOrFailureThenFinalizeRetry(bool,bool) (runs: 256, μ: 5648635, ~: 5653544)\n[PASS] testFuzzSameUuidFieldMismatchCannotDiscardReceipt(uint8) (runs: 256, μ: 2237566, ~: 2237762)\nLogs:\n  Bound result 4\n\n[PASS] testLateNotPassedReceiptCannotBeFrontRunByRequesterExpiry() (gas: 2412823)\n[PASS] testRecoveryRequiresCurrentOwnerExactBodyValidContextAndReceipt() (gas: 2571619)\n[PASS] testReservationReleaseRejectsUnknownUnboundAndPendingHolderEvenPastDeadline() (gas: 4038072)\n[PASS] testSignerRotationPreservesRetainedVerificationButRejectsUndeliveredOldSignature() (gas: 4480967)\n[PASS] testSwappedReceiptOwnerClosesWrongAskWithoutStrandingGenuineUuid() (gas: 6144659)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 402.37ms (988.90ms CPU time)\n\nRan 12 tests for test/AuditContextMismatchProof.t.sol:AuditContextMismatchProofTest\n[PASS] testAsynchronousRefusalAfterPaymentClosesWithoutRefund() (gas: 2749066)\n[PASS] testContextMismatchRecoveryCannotSetAsideAMatchingVerdictOrBeCalledByRequester() (gas: 2689591)\n[PASS] testContextMismatchRecoveryNeedsAnUnboundPendingAskWithAReceipt() (gas: 2545315)\n[PASS] testFuzzAcceptedTemplateNamesEveryStepInEveryAssembledBody(bytes32,uint16,uint8) (runs: 256, μ: 1633241, ~: 1642620)\nLogs:\n  Bound result 204\n\n[PASS] testFuzzBodyQuorumBelowConfiguredMinimumNoLongerBurnsAnAgreedAnswer(uint16,uint16,bool,bool) (runs: 256, μ: 2328008, ~: 2272917)\nLogs:\n  Bound result 6\n  Bound result 3\n\n[PASS] testFuzzPanelStrengthMinimumsStillRefuseWeakAnswersInOneShot(uint8) (runs: 256, μ: 2432635, ~: 2432664)\nLogs:\n  Bound result 0\n\n[PASS] testFuzzSameUuidOtherSignedContextWasStuckAndNowClosesHonestly(uint8,bool) (runs: 256, μ: 4070493, ~: 4070568)\nLogs:\n  Bound result 0\n\n[PASS] testFuzzStepMarkerSplitAcrossFragmentsIsRefused(uint8,uint8,uint8) (runs: 256, μ: 1111628, ~: 1114052)\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 1\n\n[PASS] testFuzzSynchronousIntakeRefusalRevertsTheWholeAskWithoutDebit(bytes4,bool) (runs: 256, μ: 2551493, ~: 2551487)\n[PASS] testMarkersOnlyACreatorBriefCouldSupplyDoNotSatisfyTheTemplate() (gas: 960879)\n[PASS] testReceiptAcknowledgmentCommitsToTheVerdict() (gas: 2195626)\n[PASS] testReproductionQuorumOneWithSixAgreedIsAValidAnswer() (gas: 2278852)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 416.24ms (1.60s 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 416.06ms (143.76ms CPU time)\n\nRan 13 tests for test/ReviewBinding.t.sol:ReviewBindingTest\n[PASS] testAnswerAtDeadlineAcceptedAndExcessiveBackwardSkewRefused() (gas: 2382031)\n[PASS] testBindingRequiresOwnerAndExactRecordedBodyAndCannotBeOverwritten() (gas: 2211557)\n[PASS] testExpiredAskAnswerCannotSettleRetryOfIdenticalQuestion() (gas: 3656740)\n[PASS] testFuzzIntakeIdCannotBeReusedAfterReviewCloses(uint8) (runs: 256, μ: 2809198, ~: 2831866)\nLogs:\n  Bound result 1\n\n[PASS] testFuzzOracleIdReservationSurvivesFailureExpiryAndSettlement(uint8) (runs: 256, μ: 4268589, ~: 4295404)\nLogs:\n  Bound result 2\n\n[PASS] testInvalidOrUnknownBindingsRefused() (gas: 2068064)\n[PASS] testLateValidAnswerAndLateBindingAllowedUntilExplicitExpiry() (gas: 4466236)\n[PASS] testOwnerRotationPowersApplyToAlreadyPendingRequestsAsDocumented() (gas: 3317082)\n[PASS] testSignedPanelQuorumAndCountsMustBeConsistent() (gas: 2243442)\n[PASS] testSignedWrongQuestionIdChainOrWindowCannotSettle() (gas: 3719940)\n[PASS] testSwappedHonestAnswersLeaveBothPendingThenSettleTheirOwnAsks() (gas: 5021773)\n[PASS] testTemplateAndTimeoutChangesDoNotChangePendingAskContext() (gas: 2568227)\n[PASS] testUnboundReceiptDoesNotTrustMatchingIntakeIdAndRawBodyHash() (gas: 2428721)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 415.98ms (737.80ms CPU time)\n\nRan 24 tests for test/ReviewDelivery.t.sol:ReviewDeliveryTest\n[PASS] testAnswerAtExactSignatureExpiryCanBeRetainedAndConfirmedLater() (gas: 2353047)\n[PASS] testConfirmedReceiptCannotBeReplayedOrRebound() (gas: 2404078)\n[PASS] testEarlyEip7702KeyReceiptFitsColdStipend() (gas: 2353570)\n[PASS] testEarlyErc1271ReceiptFitsColdStipendAndSurvivesLaterRevocation() (gas: 2884531)\n[PASS] testFreshLateAnswerAcceptedIfRequesterRequestsExpiryFirst() (gas: 2369641)\n[PASS] testFuzzBindingMustMatchEveryRetainedFieldAndFailedBindingCanBeCorrected(uint8) (runs: 256, μ: 2599518, ~: 2599721)\nLogs:\n  Bound result 4\n\n[PASS] testFuzzClockSkewToleranceIsSymmetricAtAskTime(int16,bool) (runs: 256, μ: 2310053, ~: 2323088)\nLogs:\n  Bound result -126\n\n[PASS] testFuzzEarlyOneAttemptCallbackRetainedThenConfirmedWithoutAnotherFee(bool) (runs: 256, μ: 2800122, ~: 2800122)\n[PASS] testFuzzFreshLateAnswerAcceptedUntilExplicitExpiry(bool,uint32) (runs: 256, μ: 2420812, ~: 2400533)\nLogs:\n  Bound result 32260\n\n[PASS] testFuzzInvalidEarlyAnswerNeverCreatesReceiptOrVerdict(uint8) (runs: 256, μ: 2024165, ~: 2026580)\nLogs:\n  Bound result 16\n\n[PASS] testFuzzRequesterCannotDiscardRetainedAnswerOrBuyAnotherReview(bool) (runs: 256, μ: 2586628, ~: 2586628)\n[PASS] testIntakeFailureBeforeReceiptIsTerminalAndBindingCannotInventAnAnswer() (gas: 2054289)\n[PASS] testInvalidOneAttemptCallbackLosesFeeAndCannotRetryOrCreateReceipt() (gas: 3581878)\n[PASS] testMalformedOneShotCallbackCannotCreateReceipt() (gas: 1889525)\n[PASS] testOneSecondBackwardSkewAndExactFiveMinuteBoundaryAccepted() (gas: 4620310)\n[PASS] testOnlyCurrentIntakeMayRetainAndOnlyOwnerMayConfirm() (gas: 2552393)\n[PASS] testReceiptBindingStillRequiresExactBodyFingerprint() (gas: 2358125)\n[PASS] testReceiptCanBeConfirmedAfterSignatureExpiryTimeoutAndAuthorityRotation() (gas: 2637612)\n[PASS] testReceiptCannotBeOverwrittenOrClearedBySecondIntakeCallback() (gas: 2592195)\n[PASS] testReservedUuidRetainedWithoutVerdictButConsumedUuidRefused() (gas: 6131275)\n[PASS] testSignatureExpiryStillControlsArrivalEvenAfterAskDeadline() (gas: 2022594)\n[PASS] testSwappedEarlyYesAndNoAnswersCannotBecomeVerdicts() (gas: 4361713)\n[PASS] testTimestampExtremesDoNotOverflowSkewCheck() (gas: 2412099)\n[PASS] testUnconfirmedDuplicateCannotReserveOrConsumeTheActualAsksUuid() (gas: 4374316)\nSuite result: ok. 24 passed; 0 failed; 0 skipped; finished in 425.11ms (1.16s CPU time)\n\nRan 11 tests for test/JobProtocolTuple.t.sol:JobProtocolTupleTest\n[PASS] testDuplicateCannotReplaceHashOrURI() (gas: 1092073)\n[PASS] testEmptyURICanBeReportedWithoutReviewApproval() (gas: 1026753)\n[PASS] testFuzzLateTupleWorksBeforeOrAfterLocalExpiry(bool) (runs: 256, μ: 1104328, ~: 1104328)\n[PASS] testFuzzSuppliedHashAndURIBytesArePreserved(bytes32,uint16) (runs: 256, μ: 1118894, ~: 1089528)\nLogs:\n  Bound result 66\n\n[PASS] testLateTuplePreservesFinalizedNegativeReview() (gas: 2468528)\n[PASS] testMalformedTuplesLoseOnlyTheSingleIntakeAttempt() (gas: 6654115)\n[PASS] testObsoleteSelectorIsNotAnAlias() (gas: 1024978)\n[PASS] testProtocolTuple() (gas: 996399)\n[PASS] testRegisteredSelectorAndResultEventsMatchProtocol() (gas: 1102173)\n[PASS] testUnauthorizedTupleLeavesJobAndLogsUntouched() (gas: 1117916)\n[PASS] testUnknownTupleCannotDeliverAnotherRequest() (gas: 1029152)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 450.41ms (217.03ms CPU time)\n\nRan 6 tests for test/RequesterMvpAudit.t.sol:RequesterMvpPaymentTest\n[PASS] testCallerLimitZeroFailsAndLowerQuoteChargesOnlyQuote() (gas: 1077278)\n[PASS] testExistingDonationsCannotHideUnderpaymentOrBecomeCallerFunds() (gas: 1829601)\n[PASS] testFuzzCallerLimitSurvivesOwnerCeilingIncreaseAndIntakePriceMove(bool,uint96) (runs: 256, μ: 1610959, ~: 2075185)\nLogs:\n  Bound result 1\n\n[PASS] testFuzzInexactIncomingTokensCannotSpendPreexistingDonations(uint8) (runs: 256, μ: 1209027, ~: 1210500)\nLogs:\n  Bound result 1\n\n[PASS] testFuzzUnderspendingIntakeRollsBackAllStateAndLeavesNothingSweepable(uint256,bool,bool) (runs: 256, μ: 2410870, ~: 2880819)\nLogs:\n  Bound result 25647596775635\n\n[PASS] testTokenCallbackCannotReenterSweepOrChangePaymentConfiguration() (gas: 4055234)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 450.28ms (537.24ms CPU time)\n\nRan 7 tests for test/ReviewAuditRegression.t.sol:ReviewAuditRegressionTest\n[PASS] testExpiryNeedsDeadlineAndCurrentOwnerApprovalForExactAsk() (gas: 3755978)\n[PASS] testExpiryRequestAllowsBindingBeforeLateDelivery() (gas: 2447036)\n[PASS] testFuzzExactConflictRecoveryPreservesOtherAskAndReplayProtection(bool,bool,bool) (runs: 256, μ: 5951954, ~: 5951946)\n[PASS] testFuzzExpiryAndDeliveryBothOrdersPreserveVerdictAndBlockRetries(bool,bool,bool) (runs: 256, μ: 2690485, ~: 2779070)\n[PASS] testFuzzSameUuidTypoCannotDiscardGenuineNegativeEvenWithConflict(uint8,bool) (runs: 256, μ: 3470637, ~: 2580490)\nLogs:\n  Bound result 1\n\n[PASS] testFuzzUnavailableDifferentTrueUuidCannotDiscardGenuineNegative(uint8) (runs: 256, μ: 4592470, ~: 4592976)\nLogs:\n  Bound result 0\n\n[PASS] testIntakeFailureAfterExpiryRequestAllowsRetryAndInvalidatesOldApproval() (gas: 3259741)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 450.46ms (1.15s CPU time)\n\nRan 8 tests for test/ReviewReceiptGas.t.sol:ReviewReceiptGasTest\n[PASS] testAudit22ColdReadsNowRetainsOneShotReceiptAndBoundVerdict() (gas: 4150823)\nLogs:\n  Cold audit registry +22 reads receipt minimum forwarded gas: 187231\n  Cold audit registry +22 reads bound minimum forwarded gas: 149726\n\n[PASS] testColdEoaReceiptGasAndExactStipend() (gas: 1521757)\nLogs:\n  Cold EOA receipt minimum forwarded gas: 124984\n\n[PASS] testColdFiveOfSevenReceiptAfterExpiryRequestFitsStipend() (gas: 2836682)\nLogs:\n  Cold 5-of-7 receipt after expiry request minimum forwarded gas: 170077\n\n[PASS] testColdFiveOfSevenReceiptAndBoundCallbacksFitStipend() (gas: 4114308)\nLogs:\n  Cold 5-of-7 receipt minimum forwarded gas: 170077\n  Cold 5-of-7 bound minimum forwarded gas: 132553\n\n[PASS] testColdFiveOfSevenRetryReceiptBeforeReservationReleaseFitsStipend() (gas: 2938567)\nLogs:\n  Cold 5-of-7 reserved retry receipt minimum forwarded gas: 170077\n\n[PASS] testColdWrongPrebindingRetainsReceiptWithFiveOfSevenAndAuditSigner() (gas: 4934759)\nLogs:\n  Cold 5-of-7 mismatched pre-binding minimum forwarded gas: 175123\n  Cold audit +22 reads mismatched pre-binding minimum forwarded gas: 192286\n\n[PASS] testFuzzMultisignerRefusesWrongKeyDuplicateRevokedExpiredOrInsufficientSignatures(uint8) (runs: 256, μ: 382595, ~: 385495)\nLogs:\n  Bound result 3\n\n[PASS] testOverBudgetSignerStillFailsClosedAndLosesSingleAttemptWithoutPartialReceipt() (gas: 711516)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 599.34ms (607.53ms CPU time)\n\nRan 3 tests for test/ReviewReceiptPacking.t.sol:ReviewReceiptPackingTest\n[PASS] testAllocatedMetadataIsNotAnAnswerAndReadAbiRemainsTenWords() (gas: 1882167)\n[PASS] testFuzzReceiptPreservesFullContextAndPackedFields(uint64,uint64,uint64,uint16,uint16,bool,uint256) (runs: 256, μ: 2402641, ~: 2402643)\nLogs:\n  Bound result 0\n  Bound result 5\n  Bound result 5\n\n[PASS] testReceiptPackingMaximumValuesDoNotLeakIntoAdjacentFields() (gas: 2392631)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 599.46ms (598.45ms CPU time)\n\nRan 13 tests for test/RequesterMvpAudit.t.sol:RequesterMvpLifecycleTest\n[PASS] testAbandonedAskReceiptBlocksClosureWithoutRequesterExpiryRequest() (gas: 2356137)\n[PASS] testBindingResetRequiresOwnerExactBodyAndPendingBoundAsk() (gas: 2745439)\n[PASS] testFuzzCompromisedEpochBlocksRetainedAnswersAndAllowsHonestClosure(bool,bool) (runs: 256, μ: 4036298, ~: 4164280)\n[PASS] testFuzzJobFailureAndExpiryOrderingCannotChangeReviewEligibility(uint8,bool) (runs: 256, μ: 2487818, ~: 2499057)\nLogs:\n  Bound result 2\n\n[PASS] testFuzzWrongPrebindingRetainsOneShotAnswerAndCanBeCorrected(uint8,bool) (runs: 256, μ: 2890019, ~: 2889581)\nLogs:\n  Bound result 0\n\n[PASS] testIncidentRevocationIsExplicitAndCannotUndoFinalizedVerdicts() (gas: 2491813)\n[PASS] testLateFailureCannotClearFinalizedNegativeReview() (gas: 2409318)\n[PASS] testOwnerClosesAbandonedAskOnlyAfterDeadlineAndCannotCloseItsRetry() (gas: 3679361)\n[PASS] testRevocationFreezesEveryOldReceiptButNotANewEpochReceipt() (gas: 6624254)\n[PASS] testRevocationValidatesAuthorityEpochAndEvidence() (gas: 238952)\n[PASS] testRevokedBoundMismatchClosesWithoutResetAndReservationReleasePreservesHistory() (gas: 2650887)\n[PASS] testSwappedPreboundDeliveriesStayPendingAndNeverConsumeEachOthersUuid() (gas: 4996492)\n[PASS] testUnknownOrMissingReceiptCannotBeIncidentClosed() (gas: 1869944)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 599.55ms (1.35s 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, μ: 1590315, ~: 1591843)\nLogs:\n  Bound result 14099\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 599.47ms (604.00ms 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 599.80ms (723.33ms 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 194\n  Bound result 1132\n  Bound result 227437\n  Bound result 300\n  Bound result 10540\n  Bound result 292634\n  Bound result 86400\n  Bound result 11053\n  Bound result 3590\n  Bound result 2588\n  Bound result 546603\n  Bound result 26\n  Bound result 259899\n  Bound result 95455\n  Bound result 290740339967630715\n  Bound result 223\n  Bound result 6973\n  Bound result 50\n  Bound result 2001\n  Bound result 2594\n  Bound result 2\n  Bound result 4695\n  Bound result 476\n  Bound result 386327742733292059\n  Bound result 3885\n  Bound result 239\n  Bound result 167059740999273287\n  Bound result 653\n  Bound result 7241\n  Bound result 8121\n  Bound result 14080\n  Bound result 5888\n  Bound result 446\n  Bound result 50446562004994644\n  Bound result 50\n  Bound result 128969933702342360\n  Bound result 28\n  Bound result 3\n  Bound result 279802261666647697\n  Bound result 9\n  Bound result 5546\n  Bound result 3626\n  Bound result 5192\n  Bound result 11132\n  Bound result 80\n  Bound result 626814\n  Bound result 459248\n  Bound result 292539217066958302\n  Bound result 239\n  Bound result 99\n  Bound result 5509\n  Bound result 531\n  Bound result 3103609129329193\n  Bound result 76171195136475135\n  Bound result 2104\n  Bound result 8025\n  Bound result 6091\n  Bound result 5570016718002142\n  Bound result 143049246507948448\n  Bound result 644841269889120\n  Bound result 289939\n  Bound result 2338\n  Bound result 8244\n  Bound result 721185\n  Bound result 12114\n  Bound result 30000000\n  Bound result 396012090588147762\n  Bound result 18817057809620471\n  Bound result 63141518161494337\n  Bound result 115428911151845857\n  Bound result 2789\n  Bound result 24405502756761050\n  Bound result 994555941503918\n  Bound result 541440\n  Bound result 777598\n  Bound result 2744\n  Bound result 167934543576446635\n  Bound result 1\n  Bound result 11075\n  Bound result 2835717307\n  Bound result 131072\n  Bound result 86400\n  Bound result 668985\n  Bound result 6737048805\n  Bound result 284634302914454324\n  Bound result 184\n  Bound result 2298\n  Bound result 84532\n  Bound result 152\n  Bound result 30\n  Bound result 448120919896\n  Bound result 12317\n  Bound result 4255\n  Bound result 28971159091683472\n  Bound result 5316\n  Bound result 7626\n  Bound result 6915\n  Bound result 676730\n  Bound result 87\n  Bound result 165049797456368561\n  Bound result 3254\n  Bound result 496109339476876176\n  Bound result 179802261666652651\n  Bound result 31337\n  Bound result 2568\n  Bound result 10000000\n  Bound result 654074\n  Bound result 156673997418846305\n  Bound result 1000000\n  Bound result 62772216387483024\n  Bound result 4278255360\n  Bound result 607166\n  Bound result 210\n  Bound result 232\n  Bound result 100390\n  Bound result 555710\n  Bound result 5636844427425359\n  Bound result 183244\n  Bound result 3696\n  Bound result 5888\n  Bound result 8\n  Bound result 483\n  Bound result 1900\n  Bound result 19671419570454126\n  Bound result 2\n  Bound result 95\n  Bound result 16765938643057407\n  Bound result 54960701404759629\n  Bound result 12282\n  Bound result 527\n  Bound result 2163\n  Bound result 3706190428028067\n  Bound result 35765903825508754\n  Bound result 8473\n  Bound result 224\n  Bound result 7549\n  Bound result 8063989794277110\n  Bound result 74966859414961920\n  Bound result 653906675248\n  Bound result 10569\n  Bound result 745161\n  Bound result 9282202902061953\n  Bound result 11547\n  Bound result 8508\n  Bound result 336510\n  Bound result 2370\n  Bound result 2580\n  Bound result 348604\n  Bound result 213845706268122588\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 27.63s (27.63s 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 5813\n  Bound result 3792478064\n  Bound result 133180\n  Bound result 3964\n  Bound result 1024\n  Bound result 168\n  Bound result 7200\n  Bound result 5806\n  Bound result 26\n  Bound result 2080\n  Bound result 718\n  Bound result 2\n  Bound result 4\n  Bound result 277196\n  Bound result 1992\n  Bound result 4771\n  Bound result 8105\n  Bound result 3801\n  Bound result 311022\n  Bound result 270395\n  Bound result 4788\n  Bound result 777600\n  Bound result 212910\n  Bound result 475\n  Bound result 152\n  Bound result 30\n  Bound result 853\n  Bound result 444890\n  Bound result 1420633312\n  Bound result 1024\n  Bound result 259899\n  Bound result 1024\n  Bound result 10000000\n  Bound result 2678400\n  Bound result 277511596451062893\n  Bound result 100\n  Bound result 7585306\n  Bound result 92794150882269084\n  Bound result 66482869645213695\n  Bound result 47\n  Bound result 63\n  Bound result 22595111\n  Bound result 709598\n  Bound result 777600\n  Bound result 2643839\n  Bound result 19572\n  Bound result 28\n  Bound result 841\n  Bound result 227437\n  Bound result 30\n  Bound result 854\n  Bound result 835\n  Bound result 771811\n  Bound result 128786870819583002\n  Bound result 3805\n  Bound result 24\n  Bound result 256\n  Bound result 8337\n  Bound result 216\n  Bound result 3025\n  Bound result 604800\n  Bound result 251200317610907084\n  Bound result 216\n  Bound result 13\n  Bound result 209288831112979585\n  Bound result 40\n  Bound result 734806\n  Bound result 75644250940394395\n  Bound result 322\n  Bound result 367191\n  Bound result 5674\n  Bound result 6973\n  Bound result 3464\n  Bound result 624060\n  Bound result 23\n  Bound result 670233715355337\n  Bound result 17\n  Bound result 393\n  Bound result 652444\n  Bound result 158641059155422483\n  Bound result 8792\n  Bound result 2001\n  Bound result 1039\n  Bound result 63\n  Bound result 634882\n  Bound result 140000\n  Bound result 72\n  Bound result 3\n  Bound result 31\n  Bound result 4129\n  Bound result 1186771\n  Bound result 827259\n  Bound result 513462039\n  Bound result 68059368426729606\n  Bound result 262961\n  Bound result 5312020697361940\n  Bound result 6629\n  Bound result 97\n  Bound result 140000\n  Bound result 225684821632784055\n  Bound result 22413446788267098\n  Bound result 251200317610907085\n  Bound result 146744073706959615\n  Bound result 4742\n  Bound result 26\n  Bound result 1000\n  Bound result 127035603870986413\n  Bound result 120\n  Bound result 281931301775895105\n  Bound result 195000\n  Bound result 929\n  Bound result 1320049\n  Bound result 260000\n  Bound result 16637931622860\n  Bound result 6378\n  Bound result 377893246737218\n  Bound result 6413\n  Bound result 100000000000000000\n  Bound result 1064470259\n  Bound result 230304381176537400\n  Bound result 780\n  Bound result 5726\n  Bound result 4351\n  Bound result 299502532662132735\n  Bound result 438071173\n  Bound result 9022\n  Bound result 9641\n  Bound result 690\n  Bound result 7452\n  Bound result 313\n  Bound result 2413120722000\n  Bound result 1\n  Bound result 31337\n  Bound result 4571\n  Bound result 316964\n  Bound result 14395609139943\n  Bound result 58130539098154083\n  Bound result 23\n  Bound result 88\n  Bound result 497269\n  Bound result 6484\n  Bound result 4431\n  Bound result 141521116776380160\n  Bound result 1056290820\n  Bound result 238548383963725968\n  Bound result 2417\n  Bound result 46630\n  Bound result 56\n  Bound result 13\n  Bound result 48\n  Bound result 71\n  Bound result 60000\n  Bound result 44813604307174426\n  Bound result 561440\n  Bound result 604800958452\n  Bound result 208\n  Bound result 4328\n  Bound result 519\n  Bound result 87358\n  Bound result 308846\n  Bound result 543452\n  Bound result 293782792835301375\n  Bound result 3296\n  Bound result 7321\n  Bound result 2077\n  Bound result 30000\n  Bound result 184978412818\n  Bound result 27355163701973938\n  Bound result 84481394295099093\n  Bound result 1082178862813120\n  Bound result 58130539111700070\n  Bound result 6932\n  Bound result 6236\n  Bound result 1632\n  Bound result 7376\n  Bound result 8750\n  Bound result 1988\n  Bound result 112\n  Bound result 256\n  Bound result 176\n  Bound result 100358277693161270\n  Bound result 58957643844188968\n  Bound result 400000\n  Bound result 8156\n  Bound result 192\n  Bound result 2389\n  Bound result 195000\n  Bound result 645788\n  Bound result 992875658492067\n  Bound result 125169935154903511\n  Bound result 16\n  Bound result 3395723175\n  Bound result 519224\n  Bound result 1778115988043895\n  Bound result 31338\n  Bound result 5259\n  Bound result 3347886862339246\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 28.90s (28.90s CPU time)\n\nRan 27 test suites in 28.90s (63.53s CPU time): 252 tests passed, 0 failed, 0 skipped (252 total tests)\n","passed":true},{"durationMs":78,"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.closeRevokedReviewReceipt(bytes32)\",\"HookJobRequester.confirmReviewExpiry(bytes32)\",\"HookJobRequester.discardMismatchedReviewReceipt(bytes32,bytes32,bytes32,bytes32,uint256,uint64,uint64)\",\"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,bytes32,string)\",\"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,uint256)\",\"HookJobRequester.releaseReservation(bytes32)\",\"HookJobRequester.requestReview(bytes32,uint256)\",\"HookJobRequester.resetReviewBinding(bytes32,bytes32)\",\"HookJobRequester.revokeSignerEpoch(uint32,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\":148,\"dependencies.lock.json\":20,\"docs/AUDIT_1053AF02.md\":106,\"docs/AUDIT_5F43F94D.md\":94,\"docs/AUDIT_648BA2E5.md\":61,\"docs/AUDIT_6B607200.md\":76,\"docs/AUDIT_D9970905.md\":79,\"docs/AUDIT_EF1F6915.md\":127,\"docs/CHAINS.md\":18,\"docs/DEPENDENCIES.md\":22,\"docs/DEPLOYMENT.md\":85,\"docs/HOOK_SPEC.md\":63,\"docs/IMD_INTEGRATION.md\":432,\"docs/LISTINGS_AND_ADS.md\":214,\"docs/STORE_API.md\":101,\"docs/THREAT_MODEL.md\":72,\"docs/VERIFICATION.md\":442,\"docs/build-fingerprints.json\":28,\"docs/checks/job-protocol-tuple/README.md\":112,\"docs/checks/job-protocol-tuple/assignment-seed-gas.log\":1494,\"docs/checks/job-protocol-tuple/build.log\":2256,\"docs/checks/job-protocol-tuple/cold-gas.log\":46,\"docs/checks/job-protocol-tuple/fmt.log\":0,\"docs/checks/job-protocol-tuple/foundry.log\":386,\"docs/checks/job-protocol-tuple/green.log\":60,\"docs/checks/job-protocol-tuple/implementation.patch\":998,\"docs/checks/job-protocol-tuple/red.log\":113,\"docs/checks/job-protocol-tuple/sdk.log\":15,\"docs/checks/job-protocol-tuple/site-abi.log\":26,\"docs/checks/job-protocol-tuple/tuple-tests.log\":30,\"docs/checks/job-protocol-tuple/vendored-retry.log\":1,\"docs/checks/job-protocol-tuple/vendored.log\":1,\"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/HookJobRequester.abi.json\":2834,\"site/index.html\":222,\"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\":1074,\"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/AuditContextMismatchProof.t.sol\":444,\"test/AuditExpiryProof.t.sol\":168,\"test/AuditFixes.t.sol\":192,\"test/AuditReceiptConflictProof.t.sol\":197,\"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\":775,\"test/HookListingRegistry.t.sol\":265,\"test/JobProtocolTuple.t.sol\":220,\"test/OracleConformance.t.sol\":135,\"test/OracleSigner.t.sol\":125,\"test/RequesterMvpAudit.t.sol\":508,\"test/ReviewAuditRegression.t.sol\":295,\"test/ReviewBinding.t.sol\":359,\"test/ReviewDelivery.t.sol\":500,\"test/ReviewReceiptGas.t.sol\":284,\"test/ReviewReceiptPacking.t.sol\":99,\"test/ReviewRecovery.t.sol\":341,\"test/helpers/Fixture.sol\":46,\"test/helpers/ImdTemplates.sol\":19,\"test/helpers/MockIntake.sol\":127,\"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/requester-abi.test.cjs\":206,\"test/test_store_sdk.py\":193},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":4658,"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:377: Reentrancy in HookJobRequester.requestReview(bytes32,uint256) (src/imd/HookJobRequester.sol#377-405):\n[medium/medium] uninitialized-local at src/imd/HookJobRequester.sol:1017: HookJobRequester._validateBrief(bytes).cp (src/imd/HookJobRequester.sol#1017) is a local variable never initialized\n[medium/medium] uninitialized-local at src/imd/HookJobRequester.sol:1016: HookJobRequester._validateBrief(bytes).len (src/imd/HookJobRequester.sol#1016) 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:377: Reentrancy in HookJobRequester.requestReview(bytes32,uint256) (src/imd/HookJobRequester.sol#377-405):\n[low/medium] reentrancy-benign at src/imd/HookJobRequester.sol:302: Reentrancy in HookJobRequester.openJob(bytes32,bytes,uint256) (src/imd/HookJobRequester.sol#302-324):\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] timestamp at src/imd/HookJobRequester.sol:801: HookJobRequester.confirmReviewExpiry(bytes32) (src/imd/HookJobRequester.sol#801-813) uses timestamp for comparisons\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/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/imd/HookJobRequester.sol:359: HookJobRequester.expireJob(bytes32) (src/imd/HookJobRequester.sol#359-367) 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/imd/HookJobRequester.sol:781: HookJobRequester.expireReview(bytes32) (src/imd/HookJobRequester.sol#781-794) 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/store/FeaturedPlacements.sol:219: FeaturedPlacements.getPlacement(uint256) (src/store/FeaturedPlacements.sol#219-222) uses timestamp for comparisons","passed":true},{"durationMs":890,"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:312: 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:423: Centralization Risk (20 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:735: Literal Instead of Constant (226 places)\n[low] local-variable-shadowing at src/imd/HookJobRequester.sol:68: Local Variable Shadows State Variable (2 places)\n[low] non-reentrant-not-first at src/imd/HookJobRequester.sol:870: `nonReentrant` is Not the First Modifier (4 places)\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-change-without-event at src/imd/HookJobRequester.sol:955: State Change Without Event\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:1044: Uninitialized Local Variable (7 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":"f62df1befc46a825532394d1d784a635bd422a2db2076f4f3657e511fffea57e","verifiedTreeHash":"f7775d30127523075d608dd0a052dc207bcdc81d","verifierVersion":"0.1.0+d952fceb"}]}