{"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":"bcd02eb0-0e38-4e32-a784-ca14f03e19e0","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"731db5b8451ca2c77e90c0d7b93bdb982e9055029855ee44f536791f3f3bc54a","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"6b037a7b6601e883cf8a906c1520c0624817d42d8310b65c2f43679204608af3","skillId":"adversarial-review","tools":[]},"key":"adversarial_review","kind":"code","role":"review","skillHash":"6b037a7b6601e883cf8a906c1520c0624817d42d8310b65c2f43679204608af3","skillId":"adversarial-review","state":"accepted"},{"acceptedSubmissionHash":"ac2efd80eac9d971dbaebeddf1b3153e042599a838d2141c3ddbc69d02ef4a5a","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":"Two steps, one worker each; a worker sees only this objective and its own step text; the other step's text is deliberately not here, never ask for it. DECIDE, DO NOT ASK: a needs_input blocks the whole job and costs the payer; when a rule below conflicts with a required check, make the smallest change that satisfies the check, keep everything else, and report it. Project: Sworn (SWORN), an ownerless ERC-721 registry of facts about wallets, Foundry, three contracts (Registry, Composer, Renderer); your starting tree is the project's newest result. Four corrections found by a launch rehearsal: the launch pipeline first deploys the three contracts through a factory on an EMPTY chain (no code at the Curator, IDMD, IMD, Intake or executor addresses) and checks runtime size <= 24,576 and the absence of DELEGATECALL, CALLCODE and SELFDESTRUCT outside push data; a constructor that calls a dependency or checks its code reverts there and the launch parks. Its audit also flagged abandon() (anyone may discard a late valid answer), the question body's consumer chain pinned to 1, and the deploy script's Sepolia addresses.\n\nCHANGE 1, src/Registry.sol constructor. After the existing zero-address check and `curator = IWhitelistCurator(curator_);` replace the three bare checks with: `bool floor = curator_.code.length == 0 && idmd_.code.length == 0 && imd_.code.length == 0 && intake_.code.length == 0; if (!floor) { if (idmd_.code.length == 0) revert DependencyHasNoCode(); require(curator.isSettled(), \"Curator not settled\"); require(IIntake(intake_).priceOf(ACTION, imd_) != 0, \"Intake price\"); if (burnExecutor_ != address(0) && burnExecutor_.code.length == 0) revert ExecutorHasNoCode(); }` with a new `error DependencyHasNoCode();`. Meaning: all four dependencies without code is the empty floor and nothing is checked; on any real chain the checks run, so one mistyped address still reverts construction. Constructor code is init-only: runtime size unchanged.\n\nCHANGE 2, abandon(). After the TooEarly check add `if (p.claimant != address(0) && msg.sender != p.claimant) revert NotClaimant();` with `error NotClaimant();`: after 14 days a personal pending pair is cleared only by its claimant; a shared fact (claimant zero) stays public cleanup. Nothing else about abandon, _clear, retained allowances or late callbacks moves.\n\nCHANGE 3, question chains. Registry: `uint256 internal constant QUESTION_CHAIN_ID = 1;` and in _check compare `a.chainId != QUESTION_CHAIN_ID` (reason 3) instead of block.chainid: every question is about Ethereum mainnet. Composer: the body's consumer.chainId becomes the deployment chain, `bytes(Strings.toString(block.chainid))` (OpenZeppelin Strings) in place of the literal 1, so compose and encodeBody turn pure into view with unchanged selectors; the top-level \"chainId\": 1, the question text, windows and the canonical question hash stay; on chain 1 every byte of every body is unchanged.\n\nCHANGE 4, script/Deploy.s.sol. Constants SEPOLIA_CURATOR 0x0919ba50b206c3f31d516de818b1fbc7da21653d, SEPOLIA_IDMD 0x2c3013c90a1bb65573aae9a7c64fafb82697e4e4, SEPOLIA_IMD 0x44a1cd38474fb1748400e7deb5f8d786cce3f89a, SEPOLIA_BURN_EXECUTOR 0x097A19e0f021BBA5072701132625ad2401043A2E (a BurnExecutor V1 on Sepolia: coded, its previewBridge() reverts, so the burn rule skips with code 1 there; never the zero address, which the launch manifest validator rejects); a `deployForChain()` that run() uses: chain 11155111 takes those with the same Intake and attester, every other chain the mainnet constants.\n\nRULES. Touch only src/Registry.sol, src/Composer.sol, script/Deploy.s.sol, test/ (any test the changes require, plus the new floor test), CATALOG.md, CONCEPT.md, INTEGRATION.md, README.md, DISCLOSURE.md, TEMPLATES.md, test/NOTES.md. Renderer, Types, the generator, the goldens, template fixtures (they keep the mainnet domain), foundry.toml and the lib submodules stay byte-equal. No new production contract, no compiler-setting change, no removed behaviour. SIZE, measured on a copy before this job: Registry 24,495 -> 24,561 B (15 B under EIP-170), Composer 23,377 -> 23,402 B, Renderer unchanged; report all three after the change; if the Registry does not fit, stop and report, never remove behaviour. CHECKS for every step: forge build, forge fmt --check, forge test (offline; 170 pass today, 17 fork skips), python3 tools/gen_template.py --check (28 artifacts), python3 -m unittest discover -s tools (18). The opt-in fork tests stay exactly as they are (no environment reads offline). Never publish anything.\n\nDOCS (step 1). README (constructor paragraph, abandon, the floor), INTEGRATION (constructor requirements, who abandons, consumer.chainId = deployment chain, question chainId = 1), CATALOG (abandon: by its claimant; a shared fact by anyone), CONCEPT, DISCLOSURE (the executor residual stays as stated; the floor), TEMPLATES (consumer.chainId) and test/NOTES.md say what is true after the change, in the repository's existing voice; say that the checks are skipped only when all four dependencies lack code.","parentJobId":"610d1be1-f3fa-4dfd-9165-a0edacb19016","planHash":"6990c6ea125a72b0ab31f486c4dbca81dd5feca47513a34bf5d0104a7b725fd8","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"27391f0e-0419-4d15-a5d5-bb182f137bd9","publication":{"commit":null,"deliveredAt":null,"repoUrl":null},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52479","feedbackHash":"911ce32eacdd33147726a5c79c0622952e3e2a9f0bb30b95e91748ae5b81708d","nodeKey":"adversarial_review","submissionHash":"731db5b8451ca2c77e90c0d7b93bdb982e9055029855ee44f536791f3f3bc54a","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52655","feedbackHash":"2c352f02105b20529c49edc563752e7be39cca9fa5f2963336edf197c616b8e2","nodeKey":"build_contract_project","submissionHash":"ac2efd80eac9d971dbaebeddf1b3153e042599a838d2141c3ddbc69d02ef4a5a","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"88df4940e93cbcebeb98a990c9f4364839139030fc9a86fa57cbcc1ed149383f","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"dfa08759ca0424de","findings":[],"hash":"731db5b8451ca2c77e90c0d7b93bdb982e9055029855ee44f536791f3f3bc54a","nodeId":"56c71212-b19b-4ca7-a20c-2f47cf2db651","outcome":"completed","summary":"The review found no defects. The findings file holds an empty list and a coverage row for all 16 entry points plus five invariants. The working tree is unchanged apart from that file.\n\n**What I verified**\n\n- **Constructor floor.** A scratch test deployed the Registry through a CREATE2 factory under all 16 combinations of code presence among Curator, IDMD, IMD and Intake, each with a zero, bare and coded executor. Only the all-bare and all-coded masks deploy. Every partial mask reverts, including a coded Curator with a code-less IDMD. On the live set, a bare nonzero executor reverts and an unsettled Curator reverts. A hostile factory cannot alter code presence at the real addresses, so it cannot force the floor on a live chain.\n- **Live launch sets.** Public RPC queries show all five mainnet and all five Sepolia addresses coded, both Curators settled, and both Intakes quoting 0.5 IMD for the action. Neither correct deployment reverts.\n- **Runtime.** Sizes are Registry 24,561 B, Composer 23,402 B, Renderer 21,570 B, matching the report. An independent opcode walk found no CALLCODE, DELEGATECALL or SELFDESTRUCT outside push data in any of the three.\n- **abandon.** The new claimant gate sits after the 14-day check and only applies when the claimant is nonzero. Clearing, retained allowances and the late-callback path are untouched, and the suite proves a stranger cannot discard a late valid answer.\n- **Chains.** The question chain is pinned to 1 in the Registry and the reference confirms the attestation's chainId is the question's chain. Chain-1 bodies match the committed fixtures byte for byte, Sepolia bodies differ only in the consumer chain, and question hashes are equal.\n- **Byte-equality and checks.** Renderer, Types, generator, goldens, fixtures, foundry.toml and submodules have no diff against the parent. Build, fmt, the offline suite, the generator check and the unittest all pass.\n- **Docs.** README, INTEGRATION, CATALOG, CONCEPT, DISCLOSURE, TEMPLATES and the test notes state the floor, abandon and chain rules as implemented and promise nothing beyond them.","treeHash":null,"usage":{"cachedInputTokens":1088253,"inputTokens":482,"model":"claude-fable-5-1","outputTokens":16587,"runtime":"claude","turns":16,"wallClockMs":396450}},{"artifacts":[],"attempt":1,"bundleHash":"2d20ed4aeae0b3bed3428eee3765e4fc91ae0ec65056126e9c9e7723d72ea42c","device":"f121f0a8f8340392","findings":[],"hash":"ac2efd80eac9d971dbaebeddf1b3153e042599a838d2141c3ddbc69d02ef4a5a","nodeId":"577147e6-7818-4f0b-b536-4ff8c6ed70ae","outcome":"completed","summary":"Implemented all four corrections, regression tests, and documentation.\n\n| Runtime | Before | After |\n|---|---:|---:|\n| Registry | 24,495 B | 24,561 B |\n| Composer | 23,377 B | 23,402 B |\n| Renderer | 21,570 B | 21,570 B |\n\nRegistry fits EIP-170 with **15 B remaining**.\n\nChecks passed:\n\n- `forge build --offline` — pinned solc 0.8.24.\n- `forge test --offline` — **174 passed, 0 failed, 17 fork skips**, using the supplied fuzz seed.\n- `forge fmt --check`.\n- Generator check — **28 artifacts** unchanged.\n- Python unittest discovery — **18 passed**.\n\nAdded `Floor.t.sol`. Adapted `Artifacts`, `Attestations`, `RegistryRules`, `Registry`, `Adversarial`, `Templates`, `ReReview`, `ReviewChanges`, and `InvariantsExtended` tests. Exact test names and results are recorded in [test/NOTES.md](/home/imd2/.identitymd/work/bcd02eb0-0e38-4e32-a784-ca14f03e19e0/577147e6-7818-4f0b-b536-4ff8c6ed70ae/test/NOTES.md).\n\nProtected files, goldens, fixtures, fork tests, and Renderer runtime remain byte-identical. Sepolia address literals use Solidity-required checksum casing without changing their values. Nothing was deployed or published.","treeHash":"65709d9da81ec1c6878c23fded000063adfaad42","usage":{"cachedInputTokens":2050304,"inputTokens":137743,"model":"gpt-6-astra","outputTokens":24794,"runtime":"codex","turns":6,"wallClockMs":714169}}],"verification":[{"checks":[{"durationMs":15771,"exitCode":0,"name":"build","output":"Compiling 82 files with Solc 0.8.24\nSolc 0.8.24 finished in 15.36s\nCompiler run successful with warnings:\nWarning (5159): \"selfdestruct\" has been deprecated. Note that, starting from the Cancun hard fork, the underlying opcode no longer deletes the code and data associated with an account and only transfers its Ether to the beneficiary, unless executed in the same transaction in which the contract was created (see EIP-6780). Any use in newly deployed contracts is strongly discouraged even if the new behavior is taken into account. Future changes to the EVM might further reduce the functionality of the opcode.\n  --> test/mocks/MockBurnExecutor.sol:10:9:\n   |\n10 |         selfdestruct(payable(to));\n   |         ^^^^^^^^^^^^\n\nWarning (2018): Function state mutability can be restricted to pure\n  --> test/Goldens.t.sol:67:5:\n   |\n67 |     function _widthCard() internal view returns (Card memory c) {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (2018): Function state mutability can be restricted to pure\n   --> test/Goldens.t.sol:345:5:\n    |\n345 |     function _card(\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","passed":true},{"durationMs":14030,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 11 tests for test/fork/Mainnet.fork.t.sol:MainnetForkTest\n[SKIP] test_fork_attestationSignedForAnotherConsumerMissesOnTheRealIntake() (gas: 0)\n[SKIP] test_fork_curatorIsSettledWithTheBriefsConstants() (gas: 0)\n[SKIP] test_fork_firstContributorIsAnHourZeroEarlyBird() (gas: 0)\n[SKIP] test_fork_intakeV2SellsTheActionAsTheBriefRecords() (gas: 0)\n[SKIP] test_fork_lastContributorIsNoEarlyBird() (gas: 0)\n[SKIP] test_fork_memberMintsAndRendersAgainstTheRealCurator() (gas: 0)\n[SKIP] test_fork_nonMemberReadsZeroFalseAndHasNoCuratorTrait() (gas: 0)\n[SKIP] test_fork_operatorTraitReadsTheRealCollectionAndGuardsZero() (gas: 0)\n[SKIP] test_fork_pinnedBlockIsTheOneRecorded() (gas: 0)\n[SKIP] test_fork_thousandthContributorJoinedInsideTheFirstThousandWindow() (gas: 0)\n[SKIP] test_fork_upgradeThroughTheRealIntakeThenCompleteFromTheWriter() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 11 skipped; finished in 524.47µs (699.38µs CPU time)\n\nRan 7 tests for test/Templates.t.sol:TemplatesTest\n[PASS] test_allTenBodiesAreByteExact() (gas: 1456996)\n[PASS] test_allTenQuestionHashesEqualThePlanes() (gas: 2185240)\n[PASS] test_bodyIsDeterministicInClaimantAndDiffersAcrossClaimants() (gas: 464040)\n[PASS] test_directAndUnknownIdsHaveNoBody() (gas: 60713)\n[PASS] test_hexMinAndCatalogWindows() (gas: 146951)\n[PASS] test_sepoliaChangesOnlyConsumerChainAcrossAllTenBodies() (gas: 3074114)\n[PASS] test_traitNamesAndClasses() (gas: 112489)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 19.10ms (16.04ms CPU time)\n\nRan 10 tests for test/ReReview.t.sol:ReReviewTest\n[PASS] test_coldGas_firstCommunityVerificationWithACard() (gas: 2415567)\nLogs:\n  cold onResult gas, first community verification with a card: 133357\n\n[PASS] test_coldGas_sharedFact64Catalog() (gas: 1740070)\nLogs:\n  cold onResult gas, 64-address shared fact (catalog 1201): 164088\n\n[PASS] test_coldGas_sharedFact64Community() (gas: 2108968)\nLogs:\n  cold onResult gas, 64-address shared fact (community T3): 170446\n\n[PASS] test_communityAttributesAppearOnlyForVerifiedSpecs() (gas: 4751664)\n[PASS] test_constructorReadsIsSettledWithoutWriting() (gas: 137310)\n[PASS] test_hugeSignatureOnCommunitySharedFactAndCardRequestClearsUnderStipend() (gas: 12243074)\n[PASS] test_lowerOrdinalAcquiredLaterReplacesTheHigherOne() (gas: 8479392)\n[PASS] test_sameSignedEvidenceSatisfiesAnotherRequestWithTheSameQuestion() (gas: 3262641)\n[PASS] test_specIdsEndAt65534() (gas: 909553)\n[PASS] test_unusedFixedValIsRefusedAndAnEmptyFilterIsNotSerialised() (gas: 1334433)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 41.98ms (39.37ms CPU time)\n\nRan 8 tests for test/Artifacts.t.sol:ArtifactsTest\n[PASS] test_constructorAcceptsUnavailableCuratorOnEmptyFloor() (gas: 16156)\n[PASS] test_constructorRejectsUnsettledOrUnavailableCurator() (gas: 262986)\n[PASS] test_constructorRejectsZeroAddressesAndStoresTheRest() (gas: 8024)\n[PASS] test_deployScriptUsesMainnetConstantsOnEveryOtherChain() (gas: 60455489)\n[PASS] test_deployScriptUsesSepoliaConstantsAndNonzeroExecutor() (gas: 31103316)\n[PASS] test_noForbiddenOpcodesInRuntime() (gas: 56163984)\n[PASS] test_noImmutableReferencesInAnyArtifact() (gas: 91585297)\n[PASS] test_twoDeploymentsHaveIdenticalRuntimeCode() (gas: 3576039)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 140.76ms (143.59ms CPU time)\n\nRan 29 tests for test/Registry.t.sol:RegistryTest\n[PASS] test_abandonOnlyAfterFourteenDaysAndStaleCallbackLeavesSuccessor() (gas: 3333197)\n[PASS] test_anyoneReadsAnyWalletAndNothingUsesTxOrigin() (gas: 1943609)\n[PASS] test_attestationForAnotherConsumerOrChainIsNeverAccepted() (gas: 3213484)\n[PASS] test_callbacksRejectEveryoneButTheIntake() (gas: 1630253)\n[PASS] test_claimSponsoredRules() (gas: 5263554)\n[PASS] test_directTraitsAreLiveAndNeedNoCard() (gas: 606480)\n[PASS] test_fuzz_tiersAreMonotone(uint8,bool,uint32,uint128,uint32,uint8) (runs: 256, μ: 707062, ~: 698080)\n[PASS] test_mainnetQuestionAcceptedUnderSepoliaConsumerDomain() (gas: 1726494)\n[PASS] test_mainnetSignatureCannotAnswerSepoliaConsumer() (gas: 1667363)\n[PASS] test_malformedEnvelopeIsNotDeliveredAndStaysPending() (gas: 1561024)\n[PASS] test_mintOncePerWalletAndTransfersKeepClaimant() (gas: 956472)\n[PASS] test_mintWithoutFeeReverts() (gas: 47096)\n[PASS] test_missReasons() (gas: 29437089)\n[PASS] test_noReceiveOrFallback() (gas: 57774)\n[PASS] test_nonMemberIsNeverAnEarlyBird() (gas: 232815)\n[PASS] test_onFailureClearsAndAllowsRetry() (gas: 3005968)\n[PASS] test_onResultGasWorstCase() (gas: 2334276)\nLogs:\n  onResult worst-case gas: 164955\n\n[PASS] test_poolIsTheBalanceAndOnlyLeavesThroughSponsoredRequests() (gas: 5657440)\n[PASS] test_reentrantTokenCannotReenterMint() (gas: 2358744)\n[PASS] test_registerSpecAssignsSequentialIdsAndIsImmutable() (gas: 1231885)\n[PASS] test_sepoliaQuestionMissesWithReasonThreeUnderSepoliaDomain() (gas: 1654191)\n[PASS] test_sharedFactBadEnvelopeIsAMissAndCanBeRequestedAgain() (gas: 6924648)\n[PASS] test_sharedFactFlow() (gas: 2477894)\n[PASS] test_specGuards() (gas: 1337022)\n[PASS] test_strangerCannotDiscardLateValidAnswer() (gas: 1727512)\n[PASS] test_supportsERC4906AndERC721() (gas: 25952)\n[PASS] test_upgradeGuards() (gas: 6034510)\n[PASS] test_upgradeHappyPathMarksTraitAndRefreshesCard() (gas: 2537251)\n[PASS] test_upgradeWithoutCardAttachesToClaimant() (gas: 1895072)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 145.87ms (107.06ms CPU time)\n\nRan 2 tests for test/Floor.t.sol:FloorTest\n[PASS] test_mainnetEmptyChainFloor() (gas: 72441196)\n[PASS] test_sepoliaEmptyChainFloor() (gas: 72441164)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 156.39ms (262.44ms CPU time)\n\nRan 17 tests for test/RegistryRules.t.sol:RegistryRulesTest\n[PASS] test_constructorPriceCheckIsPassiveAndAcceptsAnyNonzeroPrice() (gas: 147502)\n[PASS] test_constructorRejectsEachSingleMistypedDependency() (gas: 19912)\n[PASS] test_constructorRejectsPartiallyCodedDependencyFloor() (gas: 19824)\n[PASS] test_constructorRejectsUnavailableIntake() (gas: 26489)\n[PASS] test_constructorRejectsWrongAsset() (gas: 548859)\n[PASS] test_constructorRejectsZeroIntakePrice() (gas: 42182)\n[PASS] test_fuzz_bothPoolPathsShareOneAllowancePerUtcDay(bool,bool,uint32) (runs: 256, μ: 3241794, ~: 3226711)\nLogs:\n  Bound result 21661\n\n[PASS] test_idmdCounterFollowsTransfersAndStopsAtNine() (gas: 15433240)\n[PASS] test_idmdHolderMustAlsoBeAListMember() (gas: 1763863)\n[PASS] test_memberClaimsOnDeploymentDayWithoutCardOrIdmd() (gas: 1674934)\n[PASS] test_noVerdictConsumesTheDayAndLifetimePair() (gas: 3269326)\n[PASS] test_paidUpgradeAndSharedFactDoNotUseOrObeyPoolDailyLimit() (gas: 8188766)\n[PASS] test_revertingIntakeDoesNotConsumePoolAllowances() (gas: 2028416)\n[PASS] test_specAndFirstClaimCostSixPointNineIMD() (gas: 1880800)\n[PASS] test_specRequiresFullFeeAndAllowance() (gas: 798817)\n[PASS] test_sponsoredUpgradeRequiresExactlyOneTrait() (gas: 1780238)\n[PASS] test_switchingIdmdDoesNotBypassDailyLimit() (gas: 3191854)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 225.12ms (234.35ms CPU time)\n\nRan 19 tests for test/Goldens.t.sol:GoldensTest\n[PASS] test_escapeJsonNeutralisesMarkup() (gas: 42645)\n[PASS] test_goldenSyntheticCollector() (gas: 20831323)\n[PASS] test_goldenSyntheticDirect() (gas: 5079487)\n[PASS] test_goldenSyntheticFullhouse() (gas: 21514473)\n[PASS] test_goldenSyntheticHoney() (gas: 23746288)\n[PASS] test_goldenSyntheticNewcomer() (gas: 3219081)\n[PASS] test_goldenSyntheticOracle() (gas: 8916232)\n[PASS] test_goldenSyntheticOutsider() (gas: 5211326)\n[PASS] test_goldenSyntheticWidthThroughTheRenderer() (gas: 24718798)\n[PASS] test_imageCommunityPathFollowsTheStepTable() (gas: 13547491)\n[PASS] test_imageIdsOutsideTheCatalogRenderWithoutReverting() (gas: 763825)\n[PASS] test_imageIsPureAndDeterministic() (gas: 16076101)\n[PASS] test_imageOverflowPathAbsentAtOrBelow39AndNeverOverflows() (gas: 13459611)\n[PASS] test_imageRareDotOnlyAtATopTierRareId() (gas: 17170837)\n[PASS] test_imageRingsByCommunityCount() (gas: 5559349)\n[PASS] test_imageStepsUseExponentiationNotXor() (gas: 6674005)\n[PASS] test_reportRendererRuntimeSize() (gas: 129606)\nLogs:\n  Renderer runtime bytes: 21570\n\n[PASS] test_reportTokenURIGas() (gas: 29841499)\nLogs:\n  tokenURI gas synthetic_width: 10810085\n  tokenURI gas synthetic_fullhouse: 9147472\n  tokenURI gas synthetic_honey: 9589924\n\n[PASS] test_templateArtifactsMatchTheCompiledConstants() (gas: 297819)\nSuite result: ok. 19 passed; 0 failed; 0 skipped; finished in 256.61ms (483.47ms CPU time)\n\nRan 24 tests for test/BurnRule.t.sol:BurnRuleTest\n[PASS] testFuzz_belowThresholdRefundsWithoutFee(bool,uint96,uint96) (runs: 256, μ: 1561569, ~: 1547362)\nLogs:\n  Bound result 212\n  Bound result 68993034897788051\n\n[PASS] testFuzz_dueForwardsWholeValueAndExecutorForceRefunds(bool,uint96,uint96) (runs: 256, μ: 1830623, ~: 1816132)\nLogs:\n  Bound result 79228162445264337593543950548\n  Bound result 68993034897788051\n\n[PASS] testFuzz_dueWithoutEnoughFeeRevertsAtomically(bool,uint96,uint96) (runs: 256, μ: 3241055, ~: 3211183)\nLogs:\n  Bound result 79228162514264337593543950335\n  Bound result 200\n\n[PASS] testFuzz_failedPreviewOrBridgeSkipsAndRefunds(bool,uint8,uint96) (runs: 256, μ: 1751632, ~: 1597611)\nLogs:\n  Bound result 1\n  Bound result 68993034897788051\n\n[PASS] testFuzz_nonpayableContractWorksWithNoValueExactFeeAndSurplus(bool,uint8) (runs: 256, μ: 1939435, ~: 1976316)\nLogs:\n  Bound result 0\n\n[PASS] testFuzz_previewExceedingTheBudgetSkipsWithCodeOneAndRefunds(bool,uint96) (runs: 256, μ: 2165064, ~: 2150609)\nLogs:\n  Bound result 264337514315787820\n\n[PASS] testFuzz_quoteAboveCapSkipsWithCodeThree(bool,uint96,uint96) (runs: 256, μ: 1565432, ~: 1551036)\nLogs:\n  Bound result 79228162514259337593543950547\n  Bound result 68993034897788051\n\n[PASS] testFuzz_unsetExecutorDisablesBurnAndRefunds(bool,uint96) (runs: 256, μ: 1581697, ~: 1567348)\nLogs:\n  Bound result 264337514315787820\n\n[PASS] test_constantsAndStorage() (gas: 29216)\n[PASS] test_constructorRejectsNonzeroExecutorWithoutCodeAndAcceptsZeroOrCode() (gas: 22214)\n[PASS] test_exactFeeAndCapAreInclusive() (gas: 1708522)\n[PASS] test_executorReentryIsGuarded() (gas: 1770433)\n[PASS] test_executorSurplusCallReentryIsGuarded() (gas: 2351802)\n[PASS] test_executorSurplusIsForcedOnARejectingRecipient() (gas: 1984874)\n[PASS] test_existingChecksAndIntakeFailurePrecedeBurnFeeCheck() (gas: 579665)\n[PASS] test_gasArgumentsIncludeOnlyTheValueStipend() (gas: 1694311)\n[PASS] test_noFeeAtExactThresholdReverts() (gas: 1537187)\n[PASS] test_nonpayableContractAcceptsZeroRefundOnPreviewFailure() (gas: 1791251)\n[PASS] test_paidFunctionsRejectOneWeiWhereZeroValueSucceeds() (gas: 3763206)\n[PASS] test_previewUsingMostOfTheBudgetIsQuotedAndBurns() (gas: 2236677)\n[PASS] test_registryRefundReentryIsGuarded() (gas: 2174351)\n[PASS] test_rejectedNonzeroRegistryRefundRevertsAllEffects() (gas: 1949325)\n[PASS] test_zeroQuoteStillTriggersWhenDue() (gas: 1643668)\n[PASS] test_zeroValueHasNoStipend() (gas: 1564768)\nSuite result: ok. 24 passed; 0 failed; 0 skipped; finished in 369.56ms (1.43s CPU time)\n\nRan 10 tests for test/ReviewChanges.t.sol:ReviewChangesTest\n[PASS] test_fuzz_emptyFixedArgRequiresZeroValueForT1AndT2(uint256) (runs: 256, μ: 3038834, ~: 3038581)\nLogs:\n  Bound result 3052442557715\n\n[PASS] test_fuzz_ordinalShowsLowestVerifiedId(uint8) (runs: 256, μ: 4654810, ~: 4865907)\nLogs:\n  Bound result 0\n\n[PASS] test_hugeAnswerClearsUintBoolAndSharedRequestsUnderStipend() (gas: 26378702)\n[PASS] test_hugeSignatureClearsPendingAndAllowsImmediateRetry() (gas: 6837849)\n[PASS] test_metadataReportsMinimaEvenWhenSignedPanelIsLarger() (gas: 6306452)\n[PASS] test_scalarAnswerLengthPrecedesChainSignerAndClaimedType() (gas: 17765774)\n[PASS] test_sharedAnswerUpperBoundPrecedesChainAndSigner() (gas: 4502989)\n[PASS] test_signatureLengthPrecedesAnswerLengthAndChain() (gas: 37651315)\n[PASS] test_unknownRequestStillPrecedesDynamicSizeChecks() (gas: 12871553)\n[PASS] test_validationPrecedenceAfterSizes() (gas: 18084381)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 415.20ms (650.73ms CPU time)\n\nRan 6 tests for test/fork/BurnRule.fork.t.sol:BurnRuleForkTest\n[SKIP] test_fork_coldFreeClaimExactFeeFromNonpayableContractClaimant() (gas: 0)\n[SKIP] test_fork_coldFreeClaimWithSurplusBurnsAndExecutorReturnsTheSurplus() (gas: 0)\n[SKIP] test_fork_coldFreeClaimWithoutTheFeeReverts() (gas: 0)\n[SKIP] test_fork_executorConfigurationAndPinnedQuote() (gas: 0)\n[SKIP] test_fork_realExecutorAndOFTForceRefundSurplusToNonpayableRecipient() (gas: 0)\n[SKIP] test_fork_realExecutorExactFeeForNonpayableRecipient() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 6 skipped; finished in 415.34ms (139.77µs CPU time)\n\nRan 3 tests for test/Attestations.t.sol:AttestationsTest\n[PASS] test_allFiveRecoverTheAttesterUnderTheirOwnDomainOnly() (gas: 5269883)\n[PASS] test_loaderRejectsUnknownAnswerTypeNames() (gas: 4845)\n[PASS] test_protocolVectorDigestAndSelector() (gas: 2162970)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 415.37ms (17.08ms CPU time)\n\nRan 32 tests for test/Adversarial.t.sol:AdversarialTest\n[PASS] test_abandonedSharedFactCanBeRequestedAgainAndTheLateAnswerIsIgnored() (gas: 3063183)\n[PASS] test_attestationForAnotherClaimantIsAMissForThisRequest() (gas: 3243937)\n[PASS] test_attestationForAnotherTraitWithTheSameWindowIsAMiss() (gas: 3246988)\n[PASS] test_callbackStarvedOfGasIsNotDeliveredAndStaysPending() (gas: 1692772)\n[PASS] test_cardShowsAtMostThirtyTwoCommunityIdsAndCountsThemAll() (gas: 86215648)\n[PASS] test_claimSponsoredWhilePendingOrVerifiedReverts() (gas: 2104349)\n[PASS] test_communityT3SpecIsASharedFactWithItsOwnHead() (gas: 2423000)\n[PASS] test_everyTemplateVerifiesUnderTheStipendWithACard() (gas: 11730108)\n[PASS] test_expiryAtTheExactSecondStillPassesAndOneLaterDoesNot() (gas: 3241176)\n[PASS] test_fuzz_abandonedPoolRequestKeepsPoolUsedAndLateCallbackIsIgnored(bool) (runs: 256, μ: 1907425, ~: 1891824)\n[PASS] test_fuzz_anyFieldAlteredAfterSigningIsASignatureMiss(uint8,uint256) (runs: 512, μ: 1652802, ~: 1654225)\nLogs:\n  Bound result 6\n\n[PASS] test_fuzz_applySharedFactOnlyWithinTheHead(uint8,uint8) (runs: 256, μ: 1778209, ~: 1765382)\nLogs:\n  Bound result 1\n  Bound result 0\n\n[PASS] test_fuzz_boolAnswerMustBeExactlyZeroOrOne(uint256) (runs: 512, μ: 2076146, ~: 2075601)\n[PASS] test_fuzz_countAnswerAgainstTheThreshold(uint256,bytes1,bool) (runs: 512, μ: 1654646, ~: 1637557)\n[PASS] test_fuzz_expiryAndClockSkewBoundaries(uint64,uint64) (runs: 512, μ: 1650910, ~: 1641290)\n[PASS] test_fuzz_hasTraitAndTraitsOfNeverRevert(address,uint16,uint8,bool,uint8) (runs: 512, μ: 322306, ~: 333365)\n[PASS] test_fuzz_maximalSpecRegistersComposesAndFitsTheBody(uint8,uint256,uint256) (runs: 64, μ: 2417411, ~: 2682559)\nLogs:\n  Bound result 1\n  Bound result 46227195752546261605119575812514094171683898080954789119653024409910464483449\n\n[PASS] test_fuzz_panelAndQuorumBoundaries(uint16,uint16,uint16) (runs: 512, μ: 1654683, ~: 1640258)\n[PASS] test_fuzz_panelTraitNeedsElevenAndSeven(uint16,uint16,uint16) (runs: 512, μ: 2083704, ~: 2069243)\n[PASS] test_fuzz_specBodyIsDeterministicAndClaimantBound(address,address) (runs: 256, μ: 864570, ~: 864570)\n[PASS] test_fuzz_upgradeChargesExactlyKTimesPriceAndLeavesThePoolAlone(uint8,uint256) (runs: 256, μ: 5243987, ~: 4218147)\nLogs:\n  Bound result 2\n  Bound result 6440\n\n[PASS] test_fuzz_upgradeRejectsEveryIdThatIsNotAnOracleTrait(uint16) (runs: 256, μ: 209825, ~: 209282)\n[PASS] test_fuzz_windowMustEqualTheCanonicalOne(uint64,uint64) (runs: 512, μ: 1640822, ~: 1640815)\n[PASS] test_onFailureRecordsWhatItIsToldAndStoresNothing() (gas: 3064022)\n[PASS] test_questionHashIsBoundToTheClaimantAndTheTrait() (gas: 689833)\n[PASS] test_reentrantTokenCannotReenterAnyIMDMovingFunction() (gas: 7516833)\n[PASS] test_sharedFactWorstCaseEnvelopeUnderTheStipend() (gas: 3983678)\n[PASS] test_signatureShapesThatDoNotRecover() (gas: 9337010)\n[PASS] test_tokenURIDependsOnlyOnTheClaimantsFacts() (gas: 14703083)\n[PASS] test_traitClassForEveryCatalogIdAndRevertsForUnknown() (gas: 703103)\n[PASS] test_upgradeSponsoredDrawsAllNineOverNineDaysAndRefusesDuplicates() (gas: 12559890)\n[PASS] test_verifiedWindowIsTheCanonicalWindowForEveryOracleId() (gas: 16462663)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 415.50ms (3.15s CPU time)\n\nRan 8 tests for test/Rename.t.sol:RenameTest\n[PASS] test_catalogSpecNamesMatchTheTable() (gas: 495517)\n[PASS] test_collectionNameAndSymbol() (gas: 25005)\n[PASS] test_composerStaysUnderTheSizeLimitWithHeadroom() (gas: 13473)\n[PASS] test_metadataCarriesTheFinalFamilyNames() (gas: 3753859)\n[PASS] test_nameTableIsTheFinalTable() (gas: 609580)\n[PASS] test_noWorkingNameSurvivesInTheNameTable() (gas: 1060323)\n[PASS] test_unknownIdHasNoName() (gas: 25179)\n[PASS] test_upgradeRefusesTopWeightsAsASharedFact() (gas: 1641356)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 415.41ms (18.21ms CPU time)\n\nRan 1 test for test/Invariants.t.sol:InvariantsTest\n[PASS]\nInvariantsTest invariants:\n[PASS] invariant_oneCardPerClaimantWithImmutableClaimant\n[PASS] invariant_poolOnlyLeavesThroughSponsoredRequests\n InvariantsTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭----------+-------------------+-------+---------+----------╮\n| Contract | Selector          | Calls | Reverts | Discards |\n+===========================================================+\n| Handler  | claimSponsored    | 3225  | 0       | 0        |\n|----------+-------------------+-------+---------+----------|\n| Handler  | mintCard          | 3292  | 0       | 0        |\n|----------+-------------------+-------+---------+----------|\n| Handler  | sponsor           | 3304  | 0       | 0        |\n|----------+-------------------+-------+---------+----------|\n| Handler  | transfer          | 3370  | 0       | 0        |\n|----------+-------------------+-------+---------+----------|\n| Handler  | upgradeAndDeliver | 3193  | 0       | 0        |\n╰----------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1740\n  Bound result 425677263789452125\n  Bound result 407412063752644703\n  Bound result 22323\n  Bound result 1\n  Bound result 461433780220883452\n  Bound result 1424399730627735404\n  Bound result 759720451646626725\n  Bound result 1111311302217307589\n  Bound result 1298372971105689230\n  Bound result 6068\n  Bound result 61439949246188960\n  Bound result 10395\n  Bound result 1252\n  Bound result 1544842135439412132\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.81s (5.81s CPU time)\n\nRan 1 test for test/BurnInvariant.t.sol:BurnInvariantTest\n[PASS] invariant_registryRetainsNoClaimETHAndPoolOnlyFundsOracleRequests() (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------+----------+-------+---------+----------╮\n| Contract    | Selector | Calls | Reverts | Discards |\n+=====================================================+\n| BurnHandler | claim    | 16384 | 0       | 0        |\n╰-------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 74264337592978034889\n  Bound result 15530\n  Bound result 4333632135824622\n  Bound result 69984613780582821803\n  Bound result 605481212553896\n  Bound result 1\n  Bound result 12369\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 16532\n  Bound result 19214\n  Bound result 528\n  Bound result 5556\n  Bound result 4333632135824622\n  Bound result 74264337592978034887\n  Bound result 0\n  Bound result 2443304301956138\n  Bound result 74264337592978034889\n  Bound result 3721\n  Bound result 3464\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 1828656538\n  Bound result 285\n  Bound result 3019\n  Bound result 4333632135824622\n  Bound result 16255953408166577159\n  Bound result 3549\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 130178016878664\n  Bound result 4329670727698909\n  Bound result 17233\n  Bound result 119742800494810334256\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 3519\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 2975\n  Bound result 3775022653\n  Bound result 6392190220459743\n  Bound result 74264337592978034889\n  Bound result 2403\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 63431217821624\n  Bound result 638212884\n  Bound result 472\n  Bound result 4329670727698909\n  Bound result 2671407626939988\n  Bound result 74264337592978034889\n  Bound result 4751084984293849\n  Bound result 4333632135824622\n  Bound result 2228\n  Bound result 14442\n  Bound result 6871\n  Bound result 4120\n  Bound result 3061718425582184\n  Bound result 17668259291645683\n  Bound result 13713\n  Bound result 4360\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 1905863756\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 8707720047008772\n  Bound result 4333632135824622\n  Bound result 12388\n  Bound result 4329670727698909\n  Bound result 16288\n  Bound result 13902\n  Bound result 4329670727698909\n  Bound result 18833\n  Bound result 2788\n  Bound result 5637\n  Bound result 10238432891099760\n  Bound result 65613628005918542606\n  Bound result 883\n  Bound result 4333632135824622\n  Bound result 17634671\n  Bound result 4329670727698906\n  Bound result 2078436154656819\n  Bound result 957625572\n  Bound result 1209601\n  Bound result 4333632135824622\n  Bound result 505\n  Bound result 69124277504766\n  Bound result 436\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 1118\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 11550\n  Bound result 23886\n  Bound result 74264337592978034889\n  Bound result 671\n  Bound result 4333632135824622\n  Bound result 41202672070761447011\n  Bound result 5386316879488733\n  Bound result 92\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 11265492500686368\n  Bound result 1507\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 95114331517087307951\n  Bound result 1487264720600099\n  Bound result 2315\n  Bound result 1169\n  Bound result 21095\n  Bound result 8951659340245941\n  Bound result 33049569847167315099\n  Bound result 5128\n  Bound result 4333632135824622\n  Bound result 6101\n  Bound result 502911635220589\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4570634679021979\n  Bound result 653\n  Bound result 19932230066220911989\n  Bound result 4329670727698909\n  Bound result 2601\n  Bound result 6207\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4462\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 2860\n  Bound result 4329670727698909\n  Bound result 4150\n  Bound result 2318\n  Bound result 9999999999998801\n  Bound result 4333632135824622\n  Bound result 103463936187020531445\n  Bound result 26884097\n  Bound result 10841911533704231\n  Bound result 4\n  Bound result 185254\n  Bound result 4333632135824622\n  Bound result 67228685538497151196\n  Bound result 2448\n  Bound result 16047640846989898\n  Bound result 138465984997600342096\n  Bound result 6605\n  Bound result 7821\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 19999999999950526\n  Bound result 89603174676927766280\n  Bound result 4329670727698909\n  Bound result 18957550992404923\n  Bound result 16113\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 2672070761442890\n  Bound result 3715296815363236\n  Bound result 103996198505434713927\n  Bound result 4329670727698909\n  Bound result 19515763638258723\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 1311\n  Bound result 3357504803545219\n  Bound result 122680006762801729528\n  Bound result 9939398532799\n  Bound result 2562529257172327\n  Bound result 5721\n  Bound result 643369670225280\n  Bound result 8285267958290430\n  Bound result 10329\n  Bound result 4329670727698909\n  Bound result 12548356522315531\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 11.58s (11.58s CPU time)\n\nRan 3 tests for test/InvariantsExtended.t.sol:InvariantsExtendedTest\n[PASS]\nInvariantsExtendedTest invariants:\n[PASS] invariant_markedExactlyWhenAPassingAttestationWasDelivered\n[PASS] invariant_oneCardPerClaimant\n[PASS] invariant_poolDailyAndLifetimeLimits\n[PASS] invariant_poolIsFeesPlusDonationsMinusSponsoredRequests\n[PASS] invariant_sharedFactsAreHashesStoredOnlyOnDelivery\n[PASS] invariant_specsAreImmutable\n InvariantsExtendedTest invariants (runs: 96, calls: 4608, reverts: 0)\n\n╭-------------+-------------------+-------+---------+----------╮\n| Contract    | Selector          | Calls | Reverts | Discards |\n+==============================================================+\n| FullHandler | abandonLate       | 287   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | advanceTime       | 306   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | applyShared       | 255   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | claimSponsored    | 288   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | deliverFalse      | 283   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | deliverTampered   | 281   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | deliverTrue       | 270   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | donate            | 278   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | failRequest       | 274   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | mintCard          | 274   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | registerSpec      | 254   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | replayConsumed    | 244   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | requestSharedFact | 263   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | sponsor           | 277   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | transfer          | 260   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | upgradePaid       | 244   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | upgradeSponsored  | 270   | 0       | 0        |\n╰-------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 5\n  Bound result 5\n  Bound result 400000000000021939\n  Bound result 1\n  Bound result 12811673112604714\n  Bound result 19\n  Bound result 1\n  Bound result 801\n  Bound result 20091183522498549\n  Bound result 0\n  Bound result 9238\n  Bound result 4\n  Bound result 1714\n  Bound result 14007\n  Bound result 1\n  Bound result 236354179036648315\n  Bound result 2\n  Bound result 158165196708799884\n  Bound result 2\n\n[PASS] test_handlerReplayOfAConsumedIdChangesNothing() (gas: 1920489)\n[PASS] test_handlerSponsoredSelectionAcceptsMaxSeed() (gas: 1763915)\nLogs:\n  Bound result 3000000000000000000\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 13.80s (13.80s CPU time)\n\nRan 17 test suites in 13.80s (34.63s CPU time): 174 tests passed, 0 failed, 17 skipped (191 total tests)\n","passed":true},{"durationMs":259,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Registry.abandon(bytes32)\",\"Registry.applySharedFact(uint16,address[])\",\"Registry.approve(address,uint256)\",\"Registry.claimSponsored(uint16)\",\"Registry.mintCard()\",\"Registry.onFailure(bytes32,uint8,bytes32,uint16,uint16,bytes)\",\"Registry.onResult(bytes32,(bytes32,uint256,bytes32,uint8,bytes,uint256,uint64,uint64,bytes32,bytes32,uint16,uint16,uint16,uint64,uint64),bytes)\",\"Registry.registerSpec((uint8,address,string,string,string,uint256,string,uint8,uint256,uint64,uint64,string))\",\"Registry.requestSharedFact(uint16,uint256)\",\"Registry.safeTransferFrom(address,address,uint256)\",\"Registry.safeTransferFrom(address,address,uint256,bytes)\",\"Registry.setApprovalForAll(address,bool)\",\"Registry.sponsor(uint256)\",\"Registry.transferFrom(address,address,uint256)\",\"Registry.upgrade(uint16[],uint256)\",\"Registry.upgradeSponsored(uint256,uint16[])\"],\"files\":{\".gitignore\":8,\".gitmodules\":6,\"CATALOG.md\":268,\"CONCEPT.md\":262,\"DISCLOSURE.md\":58,\"INTEGRATION.md\":441,\"LICENSE\":21,\"README.md\":419,\"TEMPLATES.md\":158,\"foundry.toml\":44,\"reference/Intake.sol\":5175,\"reference/IntakeV2.sol\":5240,\"reference/PROVENANCE.md\":44,\"reference/abi/IMD.json\":1684,\"reference/abi/IdentityMD.json\":894,\"reference/abi/Intake.json\":955,\"reference/abi/IntakeV2.json\":1070,\"reference/abi/WhitelistCurator.json\":794,\"reference/anchors/headers.json\":61,\"reference/attestations/2026-10-10-link-pilot.json\":92,\"reference/attestations/2026-10-10-meatbag-consumer.json\":104,\"reference/attestations/2026-10-11-feed-consumer-v2.json\":105,\"reference/attestations/2026-10-11-nonce-false.json\":92,\"reference/attestations/2026-10-11-nonce-true.json\":92,\"reference/attestations/README.md\":29,\"reference/burn/BurnExecutorV2.sol.txt\":314,\"reference/burn/abi.json\":1001,\"reference/burn/provenance.json\":17,\"reference/intake/completions.json\":147,\"reference/list-record/src/ListRecord.sol\":169,\"reference/list-record/src/ListRecordRenderer.sol\":126,\"reference/list-record/src/interfaces/IListRecordRenderer.sol\":29,\"reference/list-record/src/lib/SSTORE2.sol\":39,\"reference/list-record/src/lib/Str.sol\":54,\"reference/list-record/test/Renderer.t.sol\":165,\"reference/list-record/test/RendererMechanism.t.sol\":203,\"reference/list-record/test/Template.t.sol\":293,\"reference/list-record/test/fixtures/golden_synthetic_held_svg.txt\":1,\"reference/list-record/test/fixtures/golden_synthetic_held_uri.txt\":1,\"reference/list-record/test/fixtures/golden_synthetic_transferred_svg.txt\":1,\"reference/list-record/test/fixtures/golden_synthetic_transferred_uri.txt\":1,\"reference/list-record/test/fixtures/golden_synthetic_width_svg.txt\":1,\"reference/list-record/test/fixtures/golden_synthetic_width_uri.txt\":1,\"reference/plane/checks/1001-hour-savior.json\":81,\"reference/plane/checks/1102-ordinal-1000.json\":81,\"reference/plane/checks/1105-first-thousand.json\":81,\"reference/plane/checks/1201-top-32.json\":82,\"reference/plane/checks/1301-not-born-yesterday.json\":86,\"reference/plane/checks/701-still-here.json\":81,\"reference/plane/checks/801-last-stand.json\":81,\"reference/plane/checks/T2-log-sum-composed.json\":81,\"reference/plane/checks/T4-call-compare-reference.json\":81,\"reference/plane/checks/T5-community-composed.json\":86,\"reference/plane/questionHashes.json\":92,\"reference/plane/quotes/1001-hour-savior.json\":20,\"reference/plane/quotes/1102-ordinal-1000.json\":20,\"reference/plane/quotes/1105-first-thousand.json\":20,\"reference/plane/quotes/1201-top-32.json\":20,\"reference/plane/quotes/1301-not-born-yesterday.json\":20,\"reference/plane/quotes/701-still-here.json\":20,\"reference/plane/quotes/801-last-stand.json\":20,\"reference/plane/quotes/T2-log-sum-composed.json\":20,\"reference/plane/quotes/T4-call-compare-reference.json\":20,\"reference/plane/quotes/T5-community-composed.json\":20,\"remappings.txt\":2,\"script/Deploy.s.sol\":48,\"src/Composer.sol\":629,\"src/HiveData.sol\":75,\"src/Registry.sol\":761,\"src/Renderer.sol\":427,\"src/TemplateData.sol\":16,\"src/Types.sol\":41,\"src/interfaces/IBurnExecutor.sol\":12,\"src/interfaces/IIDMD.sol\":8,\"src/interfaces/IIntake.sol\":29,\"src/interfaces/IOracleConsumer.sol\":38,\"src/interfaces/IWhitelistCurator.sol\":53,\"template/blob.hex\":1,\"template/offsets.txt\":1,\"templates/fixtures/1001-hour-savior.json\":22,\"templates/fixtures/1102-ordinal-1000.json\":22,\"templates/fixtures/1105-first-thousand.json\":22,\"templates/fixtures/1201-top-32.json\":22,\"templates/fixtures/1301-not-born-yesterday.json\":24,\"templates/fixtures/701-still-here.json\":22,\"templates/fixtures/801-last-stand.json\":22,\"templates/fixtures/T2-log-sum-composed.json\":23,\"templates/fixtures/T4-call-compare-reference.json\":21,\"templates/fixtures/T5-community-composed.json\":24,\"test/.gitkeep\":0,\"test/Adversarial.t.sol\":832,\"test/Artifacts.t.sol\":209,\"test/Attestations.t.sol\":196,\"test/Base.t.sol\":158,\"test/BurnInvariant.t.sol\":120,\"test/BurnRule.t.sol\":405,\"test/Floor.t.sol\":109,\"test/Goldens.t.sol\":444,\"test/Invariants.t.sol\":124,\"test/InvariantsExtended.t.sol\":520,\"test/NOTES.md\":495,\"test/ReReview.t.sol\":263,\"test/Registry.t.sol\":822,\"test/RegistryRules.t.sol\":335,\"test/Rename.t.sol\":224,\"test/ReviewChanges.t.sol\":215,\"test/Templates.t.sol\":171,\"test/fixtures/golden_synthetic_collector_preimage.txt\":1,\"test/fixtures/golden_synthetic_collector_svg.txt\":1,\"test/fixtures/golden_synthetic_collector_uri.txt\":1,\"test/fixtures/golden_synthetic_direct_preimage.txt\":1,\"test/fixtures/golden_synthetic_direct_svg.txt\":1,\"test/fixtures/golden_synthetic_direct_uri.txt\":1,\"test/fixtures/golden_synthetic_fullhouse_preimage.txt\":1,\"test/fixtures/golden_synthetic_fullhouse_svg.txt\":1,\"test/fixtures/golden_synthetic_fullhouse_uri.txt\":1,\"test/fixtures/golden_synthetic_honey_preimage.txt\":1,\"test/fixtures/golden_synthetic_honey_svg.txt\":1,\"test/fixtures/golden_synthetic_honey_uri.txt\":1,\"test/fixtures/golden_synthetic_newcomer_preimage.txt\":1,\"test/fixtures/golden_synthetic_newcomer_svg.txt\":1,\"test/fixtures/golden_synthetic_newcomer_uri.txt\":1,\"test/fixtures/golden_synthetic_oracle_preimage.txt\":1,\"test/fixtures/golden_synthetic_oracle_svg.txt\":1,\"test/fixtures/golden_synthetic_oracle_uri.txt\":1,\"test/fixtures/golden_synthetic_outsider_preimage.txt\":1,\"test/fixtures/golden_synthetic_outsider_svg.txt\":1,\"test/fixtures/golden_synthetic_outsider_uri.txt\":1,\"test/fixtures/golden_synthetic_width_preimage.txt\":1,\"test/fixtures/golden_synthetic_width_svg.txt\":1,\"test/fixtures/golden_synthetic_width_uri.txt\":1,\"test/fork/BurnRule.fork.t.sol\":193,\"test/fork/Mainnet.fork.t.sol\":338,\"test/mocks/MockBurnExecutor.sol\":157,\"test/mocks/Mocks.sol\":231,\"tools/gen_template.py\":898,\"tools/test_gen_template.py\":334},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":4772,"exitCode":0,"name":"slither","output":"[medium/high] incorrect-equality at src/Registry.sol:718: Registry._fromPool(uint16) (src/Registry.sol#718-731) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:509: Registry.onFailure(bytes32,uint8,bytes32,uint16,uint16,bytes) (src/Registry.sol#509-521) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:524: Registry._rule(uint16) (src/Registry.sol#524-538) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:524: Registry._rule(uint16) (src/Registry.sol#524-538) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:421: Registry.abandon(bytes32) (src/Registry.sol#421-428) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:524: Registry._rule(uint16) (src/Registry.sol#524-538) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:484: Registry.onResult(bytes32,OracleAttestation,bytes) (src/Registry.sol#484-506) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:524: Registry._rule(uint16) (src/Registry.sol#524-538) uses a dangerous strict equality:\n[medium/medium] reentrancy-no-eth at src/Registry.sol:446: Reentrancy in Registry._request(address,uint16,uint256) (src/Registry.sol#446-468):\n[medium/medium] uninitialized-local at src/Composer.sol:543: Composer.encodeBody(Composer.Question,address).defs (src/Composer.sol#543) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Registry.sol:269: Registry.cardOf(uint256).k (src/Registry.sol#269) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Renderer.sol:407: Renderer.escapeJson(bytes).o (src/Renderer.sol#407) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Registry.sol:659: Registry.applySharedFact(uint16,address[]).found (src/Registry.sol#659) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Composer.sol:615: Composer.hexMin(uint256).n (src/Composer.sol#615) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Composer.sol:187: Composer.traitsOf(address,address).n (src/Composer.sol#187) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Renderer.sol:318: Renderer._communityAttributes(Card).name (src/Renderer.sol#318) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Registry.sol:264: Registry.cardOf(uint256).n (src/Registry.sol#264) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Composer.sol:588: Composer.canonical(Composer.Question).defs (src/Composer.sol#588) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Renderer.sol:399: Renderer.escapeJson(bytes).extra (src/Renderer.sol#399) is a local variable never initialized\n[medium/medium] unused-return at src/Registry.sol:713: Registry._requireMember() (src/Registry.sol#713-716) ignores return value by (None,joined) = curator.firstHourOf(msg.sender) (src/Registry.sol#714)\n[medium/medium] unused-return at src/Registry.sol:541: Registry._check(Registry.Pending,OracleAttestation,bytes,uint8,uint64,uint64) (src/Registry.sol#541-569) ignores return value by (signer,err,None) = ECDSA.tryRecover(attestationDigest(a),v,r,s) (src/Registry.sol#560)\n[medium/medium] unused-return at src/Registry.sol:735: Registry._burnOrRefund() (src/Registry.sol#735-760) ignores return value by (amount,fee) = burnExecutor.previewBridge{gas: PREVIEW_GAS}() (src/Registry.sol#737-754)\n[low/medium] calls-loop at src/Registry.sol:371: Registry.specOf(uint16) (src/Registry.sol#371-379) has external calls inside a loop: composer.catalogSpec(traitId,address(curator)) (src/Registry.sol#378)\n[low/medium] calls-loop at src/Composer.sol:158: Composer.traitsOf(address,address) (src/Composer.sol#158-195) has external calls inside a loop: ICatalogRegistry(registry).hasTrait(wallet,all[i]) (src/Composer.sol#189)\n[low/medium] calls-loop at src/Registry.sol:371: Registry.specOf(uint16) (src/Registry.sol#371-379) has external calls inside a loop: composer.catalogSpec(traitId,address(curator)) (src/Registry.sol#378)\n[low/medium] calls-loop at src/Registry.sol:446: Registry._request(address,uint16,uint256) (src/Registry.sol#446-468) has external calls inside a loop: requestId = intake.requestWithFailure(ACTION,body,IIntake.Callback(address(this),this.onResult.selector),this.onFailure.selector,address(imd),price) (src/Registry.sol#456-463)\n[low/medium] calls-loop at src/Registry.sol:371: Registry.specOf(uint16) (src/Registry.sol#371-379) has external calls inside a loop: composer.catalogSpec(traitId,address(curator)) (src/Registry.sol#378)\n[low/medium] calls-loop at src/Registry.sol:382: Registry.composeBody(uint16,address) (src/Registry.sol#382-389) has external calls inside a loop: composer.compose(s,claimant,address(this),traitId == 1301,address(curator)) (src/Registry.sol#388)\n[low/medium] reentrancy-benign at src/Registry.sol:446: Reentrancy in Registry._request(address,uint16,uint256) (src/Registry.sol#446-468):\n[low/medium] timestamp at src/Registry.sol:484: Registry.onResult(bytes32,OracleAttestation,bytes) (src/Registry.sol#484-506) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:596: Registry._mark(address,uint16,bytes32,bytes32) (src/Registry.sol#596-602) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:509: Registry.onFailure(bytes32,uint8,bytes32,uint16,uint16,bytes) (src/Registry.sol#509-521) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:524: Registry._rule(uint16) (src/Registry.sol#524-538) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:718: Registry._fromPool(uint16) (src/Registry.sol#718-731) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:471: Registry._clear(bytes32,Registry.Pending) (src/Registry.sol#471-478) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:421: Registry.abandon(bytes32) (src/Registry.sol#421-428) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:541: Registry._check(Registry.Pending,OracleAttestation,bytes,uint8,uint64,uint64) (src/Registry.sol#541-569) uses timestamp for comparisons","passed":true},{"durationMs":954,"exitCode":0,"name":"aderyn","output":"[high] abi-encode-packed-hash-collision at src/Renderer.sol:62: `abi.encodePacked()` Hash Collision\n[high] reentrancy-state-change at src/Registry.sol:207: Reentrancy: State change after external call (4 places)\n[low] costly-loop at src/Registry.sol:404: Costly operations inside loop\n[low] internal-function-used-once at src/Composer.sol:335: Internal Function Used Only Once (4 places)\n[low] large-numeric-literal at src/Composer.sol:99: Large Numeric Literal (4 places)\n[low] literal-instead-of-constant at src/Composer.sol:76: Literal Instead of Constant (248 places)\n[low] require-revert-in-loop at src/Composer.sol:244: Loop Contains `require`/`revert` (7 places)\n[low] state-variable-could-be-immutable at src/Registry.sol:94: State Variable Could Be Immutable (9 places)\n[low] unchecked-return at src/Registry.sol:415: Unchecked Return (2 places)\n[low] uninitialized-local-variable at src/Composer.sol:615: Uninitialized Local Variable (5 places)\n[low] unsafe-oz-erc721-mint at src/Registry.sol:232: Unsafe `ERC721::_mint()`\n[low] unused-public-function at src/Composer.sol:307: Public Function Not Used Internally (4 places)\n[low] unused-state-variable at src/Registry.sol:64: Unused State Variable (2 places)","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"ac2efd80eac9d971dbaebeddf1b3153e042599a838d2141c3ddbc69d02ef4a5a","verifiedTreeHash":"65709d9da81ec1c6878c23fded000063adfaad42","verifierVersion":"0.1.0+d952fceb"}]}