{"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":"2d77649d-e6d2-454f-96ca-060dc9923771","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"0365e2195961d044c0713d0433c7ddfff99b314858fe7d9259632bd058bcd20e","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":"bc8735cabf084f6119b3a1881673cf07d1181557eb8f45b1a1d0a475958881da","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.\n\nWHY. The Sepolia rehearsal of the launch (IMD launch 1953) ran this tree through the launch pipeline. Its independent review reproduced two blocking findings, both the same mistake: a question that is about Ethereum mainnet by decision was still built from the deployment chain. (1) Catalog questions named the registry's curator argument as the mainnet contract, so on Sepolia every catalog oracle trait was a guaranteed miss. (2) A community spec's window (mainnet blocks) was bounded by the deployment chain's block.number, so on Sepolia every game window was BadSpec(\"window\"). The pipeline's adapt step fixed both in src/Composer.sol only and the plane admitted the result. This job ports that accepted fix here unchanged, so the mainnet launch has nothing to adapt. On chain 1 with the mainnet Curator nothing changes.\n\nREFERENCE. Public repository https://github.com/identity-md-launches/launch-1953-launch-sworn-registry-symbol at commit 94369920d76bf7bfc0bb8aa1b3138b40246f3ae0. Preferred path: copy src/Composer.sol (sha256 ea5ddbbc7774546c3ec7b80cee23a48dc252e656bedbaa85aa944d7514f3f39c), test/SepoliaRehearsal.t.sol (c30f30a343af91a8cb4a248e2fb77cce352e5ba19cc9b55b0cab4de0bcdb1fb0) and test/Floor.t.sol (39860218355158704f10a2c076ea9d0a8e17ea634b0defb9823ef2270d278105) from it byte-equal, and apply its hunks to README.md, INTEGRATION.md, CATALOG.md and test/NOTES.md as the step text corrects them. If the repository is unreachable, apply the changes from this text; the result is judged by bytecode, not by the path taken.\n\nCHANGE 1, src/Composer.sol. (a) After B_DEPLOY_HASH: `address public constant MAINNET_CURATOR = 0xcB0b0531e86A9aC36Fa865cA8e3dbccF047FDA91;` and `uint256 internal constant MERGE_BLOCK = 15_537_395; uint256 internal constant MERGE_TIME = 1_663_224_191; uint256 internal constant SLOT_SECONDS = 12;`. (b) `catalogSpec(uint16 traitId, address)`: second parameter unnamed and unused, `s.target = MAINNET_CURATOR;`. (c) `validateSpec(Spec calldata s, uint256 blockNumber) external view`, first statement `if (block.chainid != 1) blockNumber = mainnetHeightBound();`, every guard after it unchanged. (d) Between validateSpec and _charset: `function mainnetHeightBound() public view returns (uint256) { if (block.timestamp <= MERGE_TIME) return MERGE_BLOCK; return MERGE_BLOCK + (block.timestamp - MERGE_TIME) / SLOT_SECONDS; }` (one block per 12-second slot since block 15,537,395: with 12 s slots and a correct clock never below the real mainnet height, about 0.3 % above it). (e) `compose(Spec memory s, address claimant, address consumer, bool catalogNonce, address)`: fifth parameter unnamed and unused, calls `question(s, claimant, catalogNonce)`. (f) `question(Spec memory s, address claimant, bool catalogNonce) internal pure` loses its curator parameter; the trait-1301 parenthesis prints `Strings.toHexString(MAINNET_CURATOR)`. Selectors and the Registry stay unchanged.\n\nACCEPTANCE (solc 0.8.24 as configured; no metadata hash, so comments do not move bytes): keccak256 of each deployed bytecode (`forge inspect <Name> deployedBytecode`, then `cast keccak`) is Composer 0x79359a04f91e52693816feb7a9d90b4c75e44abb838f9061e8eee209f6ca417e (23,655 B, the Composer the plane admitted for launch 1953), Registry 0x9c88410fb6463610043b3adeea1ab857096e83ca8e0aea4f73f63433fbfb42d2 (24,561 B) and Renderer 0x1fb854135321f70bb61cefbd688f8375179cdb7c4fb2af2009583786f7d47efb (21,570 B), both unchanged. If the Composer hash differs, compare with the reference and fix the difference; if it still differs, deliver and report both hashes.\n\nRULES. Touch only src/Composer.sol, test/SepoliaRehearsal.t.sol (new), test/Floor.t.sol, README.md, INTEGRATION.md, CATALOG.md, test/NOTES.md, and any other doc line that states the Composer's size, the window rule or the catalog target. Registry, Renderer, Types, script/, the generator, goldens, template fixtures, foundry.toml and the lib submodules stay byte-equal. Do not copy the launch's ADAPTATION.md, launch.json, .imd-responses.json or its other Sepolia tests; where copied text cites ADAPTATION.md, cite the reference repository instead. CHECKS for every step: forge build, forge fmt --check, forge test (offline: 188 pass after this change, 17 fork skips), python3 tools/gen_template.py --check (28 artifacts), python3 -m unittest discover -s tools (18). Never publish anything.","parentJobId":"bcd02eb0-0e38-4e32-a784-ca14f03e19e0","planHash":"8d71428bb826bc72310dda6b79a9f2613fc3b087ee71d6b7db3abc1f0d560188","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":"52265","feedbackHash":"b49f1315ad00a2391dfc80d2058b492117c871eab47efd788eaadb1178261167","nodeKey":"adversarial_review","submissionHash":"0365e2195961d044c0713d0433c7ddfff99b314858fe7d9259632bd058bcd20e","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52549","feedbackHash":"742fea87e1c2c536a27a457fb11cc5e96f1d1ef0beca318a5deff7e3c089f2d9","nodeKey":"build_contract_project","submissionHash":"bc8735cabf084f6119b3a1881673cf07d1181557eb8f45b1a1d0a475958881da","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"83c37511d5d5df538189e2645c28f2deef35dff48dddbbc6c8d61a5273f5b0af","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8db4eebdd7bd2744","findings":[{"citation":"resolved","description":"The step text's preferred path was to copy src/Composer.sol, test/SepoliaRehearsal.t.sol and test/Floor.t.sol byte-equal from the reference repository, and the review brief says the copies' comments at Composer.sol:40/:43 and SepoliaRehearsal.t.sol:166/:179 'stay byte-equal' with test/NOTES.md as their erratum. The tree's three files have different SHA-256s from the reference (the author's NOTES.md says the repository was unreachable from their sandbox; it is reachable from here and the reference files hash exactly as the brief states). The deployed bytecode is nevertheless identical: Composer keccak256 0x79359a04f91e52693816feb7a9d90b4c75e44abb838f9061e8eee209f6ca417e, 23,655 bytes, and a 2,000-run differential fuzz against the parent Composer's runtime (etched) found no difference on chain 1 in catalogSpec, compose or validateSpec, including revert data. The only substantive loss is documentation: the reference's natspec on MAINNET_CURATOR, the merge constants, catalogSpec's unused argument, validateSpec's blockNumber parameter, mainnetHeightBound and compose's unused fifth argument are absent, so a reader of src/Composer.sol has no in-source explanation of why the second/fifth arguments are ignored or what mainnetHeightBound bounds. NOTES.md's 'anchor erratum' consequently points at comment lines (Composer.sol:40/:43, SepoliaRehearsal.t.sol:166/:179) that do not contain the 'first post-merge / slot 4,700,013' text in this tree; NOTES.md states this itself. Not blocking: the brief says the result is judged by bytecode, and the three hashes match.","line":38,"path":"src/Composer.sol","reproduction":"sha256sum src/Composer.sol test/SepoliaRehearsal.t.sol test/Floor.t.sol -> bea2e23a…, 4772eca3…, d2dc0de3…; expected (reference commit 94369920) ea5ddbbc…, c30f30a3…, 39860218…. diff of the reference src/Composer.sol against the tree shows only removed /// comment lines. grep -n '4,700,013' src/Composer.sol test/SepoliaRehearsal.t.sol returns nothing, so the NOTES.md erratum has no target lines here.","severity":"low","snippet":"    address public constant MAINNET_CURATOR = 0xcB0b0531e86A9aC36Fa865cA8e3dbccF047FDA91;\n    uint256 internal constant MERGE_BLOCK = 15_537_395;\n    uint256 internal constant MERGE_TIME = 1_663_224_191;\n    uint256 internal constant SLOT_SECONDS = 12;","title":"Composer.sol and the two test files are rewrites, not byte-equal copies of the reference; every natspec on the new constants and functions was dropped"},{"citation":"resolved","description":"forge test here: 182 passed, 0 failed, 17 skipped (199 total). The reference's SepoliaRehearsal.t.sol holds 8 tests too, so the 188 figure in the brief appears to count the launch's other Sepolia tests, which the rules forbid copying. The author documented the discrepancy. forge fmt --check, python3 tools/gen_template.py --check (28 artifacts) and python3 -m unittest discover -s tools (18 tests) all pass here, although NOTES.md says the Python checks could not run on the author's machine.","line":81,"path":"test/NOTES.md","reproduction":"forge test 2>&1 | tail -1 -> 'Ran 18 test suites … 182 tests passed, 0 failed, 17 skipped (199 total tests)'. Expected per step text: 188.","severity":"info","snippet":"The starting suite contains 174 passing tests; these eight new tests bring it to 182, rather than the brief's\nstated 188. No unrelated Sepolia tests were copied or added to change that count.","title":"Offline suite is 182 passing tests, not the 188 the step text states"},{"citation":"resolved","description":"Checked against real mainnet (timestamp, height) pairs read over a public RPC: 15,537,393/1663224162, 15,537,394/1663224179, 15,537,395/1663224191 (confirming NOTES.md: 15,537,395 is the second proof-of-stake block, slot 4,700,014), 15,537,396/1663224203, 20,000,000/1717281407, 25,769,870/1786910327, 26,170,000/1791731219, 26,204,211/1792143071 and the live head 26,206,662/1792172531. The bound is never below the real height; slack is 2, 1, 0, 0, 42,163, 74,703, 76,314, 76,424 and 76,428 blocks respectively, i.e. about 0.29% of the height and ~10.6 days today, matching README.md, INTEGRATION.md and CATALOG.md exactly. On chain 1 the bound is not consulted (validateSpec keeps block.number), so an unmined mainnet window cannot register on chain 1; verified with toBlock == block.number rejected and toBlock == block.number - 1 accepted at a far-future timestamp. On chain 11155111 toBlock == bound - 1 registers while toBlock == bound is BadSpec('window'). This is the accepted launch design and the docs state it with the caveat; recorded as an observation, not a defect.","line":299,"path":"src/Composer.sol","reproduction":"vm.chainId(11155111); vm.warp(1792172531); s = T1 spec with toBlock = composer.mainnetHeightBound() - 1 = 26,283,089 (real mainnet head at that time: 26,206,662), fromBlock = toBlock - 7199 -> registry.registerSpec(s) succeeds and pulls SPEC_FEE; the window ends ~76,400 blocks in mainnet's future. Same spec with toBlock = 26,283,090 reverts BadSpec('window').","severity":"info","snippet":"    function mainnetHeightBound() public view returns (uint256) {\n        if (block.timestamp <= MERGE_TIME) return MERGE_BLOCK;\n        return MERGE_BLOCK + (block.timestamp - MERGE_TIME) / SLOT_SECONDS;\n    }","title":"Off mainnet, a window up to ~76,400 blocks beyond the real mainnet head registers and its paid requests cannot be refunded (documented design, measured here)"}],"hash":"0365e2195961d044c0713d0433c7ddfff99b314858fe7d9259632bd058bcd20e","nodeId":"38749827-0ad4-4abe-ab1c-e3ee2cb1a61c","outcome":"completed","summary":"The review is complete and written to `.imd-findings.json`. No blocking defects were found.\n\n**What was verified**\n\n- **Bytecode hashes match exactly.** Composer, Registry and Renderer deployed-bytecode keccak256 and sizes equal the required values. Only the seven permitted files changed between the parent commit and this tree, and both submodules are at the same commits.\n- **Chain-1 equivalence with the parent.** I built the parent Composer's runtime, etched it beside the new one, and ran a differential fuzz with 2,000 runs each. Catalog specs, bodies and question hashes are identical for all 11 catalog traits, and validateSpec and compose return identical success flags and return or revert data for random specs and block numbers.\n- **Sepolia behavior.** The existing rehearsal tests confirm catalog bodies equal the mainnet fixtures except consumer.chainId, targets are the mainnet Curator, the Sepolia Curator appears in no body, and the game window registers. I also confirmed toBlock at the bound is refused and one below registers.\n- **Height bound against real mainnet.** I read nine timestamp and height pairs over a public RPC, including the merge boundary blocks and today's head. The bound is never below the real height, and slack today is about 76,400 blocks, matching the docs' 0.3% and 10.6 days. Block 15,537,395 is indeed the second proof-of-stake block, so the NOTES.md erratum is correct.\n- **All checks pass here.** forge build, forge fmt --check, forge test, the generator check with 28 artifacts and the 18 Python unit tests.\n\n**Findings, ranked**\n\n1. **Low.** The three source files are rewrites rather than byte-equal copies of the reference, which was reachable from this machine. The Composer differs from the reference only by dropped natspec comments, so the bytecode is identical, but the in-source explanation of the ignored arguments and the bound is gone, and the NOTES.md erratum points at comment lines this tree does not contain.\n2. **Info.** The offline suite passes 182 tests, not the 188 the step text states. The author documented this, and the gap appears to be the launch's other Sepolia tests, which the rules forbid copying.\n3. **Info.** Off mainnet, a window up to roughly 76,400 blocks beyond the real mainnet head registers and its paid requests are not refunded. This is the accepted design and the docs state it with the caveat. On chain 1 the bound is not consulted, so an unmined mainnet window cannot register there.\n\nThe coverage record answers all 16 entry points plus five invariants. The scratch test directory was removed, so the tree is unchanged apart from the findings file.","treeHash":null,"usage":{"cachedInputTokens":1409288,"inputTokens":706,"model":"claude-fable-5-1","outputTokens":24334,"runtime":"claude","turns":23,"wallClockMs":448401}},{"artifacts":[],"attempt":1,"bundleHash":"4819ee74123811b16b62bf5e523c16acad4ab05661766171257f002c823e8c1c","device":"da72e21237e01c8a","findings":[],"hash":"bc8735cabf084f6119b3a1881673cf07d1181557eb8f45b1a1d0a475958881da","nodeId":"61fe8405-d1c9-4de3-af04-a818be819317","outcome":"completed","summary":"Implemented the seven-file change. All runtime hashes and sizes match acceptance:\n\n| Contract | Bytes | Runtime keccak256 |\n|---|---:|---|\n| Composer | 23,655 | `0x79359a04f91e52693816feb7a9d90b4c75e44abb838f9061e8eee209f6ca417e` |\n| Registry | 24,561 | `0x9c88410fb6463610043b3adeea1ab857096e83ca8e0aea4f73f63433fbfb42d2` |\n| Renderer | 21,570 | `0x1fb854135321f70bb61cefbd688f8375179cdb7c4fb2af2009583786f7d47efb` |\n\nChecks with solc 0.8.24:\n\n- `forge build --offline`: passed.\n- `forge fmt --check`: passed.\n- Seeded `forge test --offline`: **182 passed, 0 failed, 17 skipped**. The starting 174 tests plus eight requested tests total 182, rather than 188.\n- Generator check and Python unittest discovery: **could not run**. Both exited with `xcode-select: error: No developer tools were found`.\n- Scope check: only the seven permitted files changed.\n\nThe reference was unreachable because the sandbox blocked GitHub access. I used the brief’s fallback; none of these files matches its supplied source SHA-256:\n\n| File | Local SHA-256 |\n|---|---|\n| `src/Composer.sol` | `bea2e23a774e4e1a02b43bbf219da37caada8b5f70e1a0d3be64619bb780afc4` |\n| `test/SepoliaRehearsal.t.sol` | `4772eca39996e6066da68830ca43f4a696e15b096a72cfb5be97398ed1079bd8` |\n| `test/Floor.t.sol` | `d2dc0de34e04fe4f08593b7ad53c99fb5be80c85307f14f63ee7e9fc269d1def` |\n\nDocumentation includes the anchor erratum, window caveat, callback stipends, and attester-rotation pool risk. Nothing was published.","treeHash":"42fd9163fc8cdd1b5ffc5d2a08990b035c17fbc4","usage":{"cachedInputTokens":1590528,"inputTokens":104399,"model":"gpt-6-astra","outputTokens":19989,"runtime":"codex","turns":7,"wallClockMs":736539}}],"verification":[{"checks":[{"durationMs":18367,"exitCode":0,"name":"build","output":"Compiling 83 files with Solc 0.8.24\nSolc 0.8.24 finished in 17.72s\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":16257,"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 603.89µs (945.38µs 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 459.48µs (140.07µs CPU time)\n\nRan 8 tests for test/Rename.t.sol:RenameTest\n[PASS] test_catalogSpecNamesMatchTheTable() (gas: 496540)\n[PASS] test_collectionNameAndSymbol() (gas: 25005)\n[PASS] test_composerStaysUnderTheSizeLimitWithHeadroom() (gas: 13473)\n[PASS] test_metadataCarriesTheFinalFamilyNames() (gas: 3753529)\n[PASS] test_nameTableIsTheFinalTable() (gas: 609580)\n[PASS] test_noWorkingNameSurvivesInTheNameTable() (gas: 1060323)\n[PASS] test_unknownIdHasNoName() (gas: 25179)\n[PASS] test_upgradeRefusesTopWeightsAsASharedFact() (gas: 1641444)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 19.00ms (16.45ms CPU time)\n\nRan 8 tests for test/SepoliaRehearsal.t.sol:SepoliaRehearsalTest\n[PASS] testFuzz_heightBoundIsMonotone(uint64,uint64) (runs: 256, μ: 21025, ~: 20954)\n[PASS] test_catalogBodiesAndHashesStayMainnetAndIgnoreCuratorArgument() (gas: 3035811)\n[PASS] test_directReadsStillUseTheSepoliaCuratorAndIDMD() (gas: 1078460)\n[PASS] test_gameWindowAndDeployBlockNonceRegisterOnSepolia() (gas: 777584)\n[PASS] test_heightBoundCoversMeasuredMainnetHeadsAndAnchor() (gas: 97722)\n[PASS] test_mainnetUsesTheExactDeploymentHeightGuards() (gas: 890202)\n[PASS] test_sepoliaClaimantVerifies701ThroughMockIntake() (gas: 2226434)\n[PASS] test_sepoliaStillRejectsInvalidWindows() (gas: 1247014)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 37.15ms (33.90ms CPU time)\n\nRan 10 tests for test/ReReview.t.sol:ReReviewTest\n[PASS] test_coldGas_firstCommunityVerificationWithACard() (gas: 2415584)\nLogs:\n  cold onResult gas, first community verification with a card: 133357\n\n[PASS] test_coldGas_sharedFact64Catalog() (gas: 1740251)\nLogs:\n  cold onResult gas, 64-address shared fact (catalog 1201): 164088\n\n[PASS] test_coldGas_sharedFact64Community() (gas: 2108985)\nLogs:\n  cold onResult gas, 64-address shared fact (community T3): 170446\n\n[PASS] test_communityAttributesAppearOnlyForVerifiedSpecs() (gas: 4751043)\n[PASS] test_constructorReadsIsSettledWithoutWriting() (gas: 137310)\n[PASS] test_hugeSignatureOnCommunitySharedFactAndCardRequestClearsUnderStipend() (gas: 12243108)\n[PASS] test_lowerOrdinalAcquiredLaterReplacesTheHigherOne() (gas: 8479122)\n[PASS] test_sameSignedEvidenceSatisfiesAnotherRequestWithTheSameQuestion() (gas: 3262910)\n[PASS] test_specIdsEndAt65534() (gas: 909597)\n[PASS] test_unusedFixedValIsRefusedAndAnEmptyFilterIsNotSerialised() (gas: 1334489)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 92.54ms (40.60ms CPU time)\n\nRan 29 tests for test/Registry.t.sol:RegistryTest\n[PASS] test_abandonOnlyAfterFourteenDaysAndStaleCallbackLeavesSuccessor() (gas: 3333466)\n[PASS] test_anyoneReadsAnyWalletAndNothingUsesTxOrigin() (gas: 1943257)\n[PASS] test_attestationForAnotherConsumerOrChainIsNeverAccepted() (gas: 3213846)\n[PASS] test_callbacksRejectEveryoneButTheIntake() (gas: 1630434)\n[PASS] test_claimSponsoredRules() (gas: 5264004)\n[PASS] test_directTraitsAreLiveAndNeedNoCard() (gas: 605974)\n[PASS] test_fuzz_tiersAreMonotone(uint8,bool,uint32,uint128,uint32,uint8) (runs: 256, μ: 708961, ~: 695487)\n[PASS] test_mainnetQuestionAcceptedUnderSepoliaConsumerDomain() (gas: 1726675)\n[PASS] test_mainnetSignatureCannotAnswerSepoliaConsumer() (gas: 1667544)\n[PASS] test_malformedEnvelopeIsNotDeliveredAndStaysPending() (gas: 1561112)\n[PASS] test_mintOncePerWalletAndTransfersKeepClaimant() (gas: 956472)\n[PASS] test_mintWithoutFeeReverts() (gas: 47096)\n[PASS] test_missReasons() (gas: 29440347)\n[PASS] test_noReceiveOrFallback() (gas: 57774)\n[PASS] test_nonMemberIsNeverAnEarlyBird() (gas: 232419)\n[PASS] test_onFailureClearsAndAllowsRetry() (gas: 3006144)\n[PASS] test_onResultGasWorstCase() (gas: 2334293)\nLogs:\n  onResult worst-case gas: 164955\n\n[PASS] test_poolIsTheBalanceAndOnlyLeavesThroughSponsoredRequests() (gas: 5657704)\n[PASS] test_reentrantTokenCannotReenterMint() (gas: 2358744)\n[PASS] test_registerSpecAssignsSequentialIdsAndIsImmutable() (gas: 1231919)\n[PASS] test_sepoliaQuestionMissesWithReasonThreeUnderSepoliaDomain() (gas: 1654372)\n[PASS] test_sharedFactBadEnvelopeIsAMissAndCanBeRequestedAgain() (gas: 6925553)\n[PASS] test_sharedFactFlow() (gas: 2478075)\n[PASS] test_specGuards() (gas: 1337374)\n[PASS] test_strangerCannotDiscardLateValidAnswer() (gas: 1727693)\n[PASS] test_supportsERC4906AndERC721() (gas: 25952)\n[PASS] test_upgradeGuards() (gas: 6034862)\n[PASS] test_upgradeHappyPathMarksTraitAndRefreshesCard() (gas: 2537520)\n[PASS] test_upgradeWithoutCardAttachesToClaimant() (gas: 1895253)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 104.26ms (137.40ms CPU time)\n\nRan 2 tests for test/Floor.t.sol:FloorTest\n[PASS] test_mainnetEmptyChainFloor() (gas: 72687056)\n[PASS] test_sepoliaEmptyChainFloor() (gas: 72687024)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 210.56ms (240.90ms CPU time)\n\nRan 7 tests for test/Templates.t.sol:TemplatesTest\n[PASS] test_allTenBodiesAreByteExact() (gas: 1457597)\n[PASS] test_allTenQuestionHashesEqualThePlanes() (gas: 2185841)\n[PASS] test_bodyIsDeterministicInClaimantAndDiffersAcrossClaimants() (gas: 464392)\n[PASS] test_directAndUnknownIdsHaveNoBody() (gas: 60713)\n[PASS] test_hexMinAndCatalogWindows() (gas: 147416)\n[PASS] test_sepoliaChangesOnlyConsumerChainAcrossAllTenBodies() (gas: 3075316)\n[PASS] test_traitNamesAndClasses() (gas: 112489)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 212.67ms (36.75ms 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, μ: 3246310, ~: 3269983)\nLogs:\n  Bound result 30000\n\n[PASS] test_idmdCounterFollowsTransfersAndStopsAtNine() (gas: 15434120)\n[PASS] test_idmdHolderMustAlsoBeAListMember() (gas: 1763951)\n[PASS] test_memberClaimsOnDeploymentDayWithoutCardOrIdmd() (gas: 1675022)\n[PASS] test_noVerdictConsumesTheDayAndLifetimePair() (gas: 3269502)\n[PASS] test_paidUpgradeAndSharedFactDoNotUseOrObeyPoolDailyLimit() (gas: 8189294)\n[PASS] test_revertingIntakeDoesNotConsumePoolAllowances() (gas: 2028592)\n[PASS] test_specAndFirstClaimCostSixPointNineIMD() (gas: 1880817)\n[PASS] test_specRequiresFullFeeAndAllowance() (gas: 798883)\n[PASS] test_sponsoredUpgradeRequiresExactlyOneTrait() (gas: 1780326)\n[PASS] test_switchingIdmdDoesNotBypassDailyLimit() (gas: 3192030)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 383.88ms (397.19ms 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 519.58ms (12.23ms CPU time)\n\nRan 24 tests for test/BurnRule.t.sol:BurnRuleTest\n[PASS] testFuzz_belowThresholdRefundsWithoutFee(bool,uint96,uint96) (runs: 256, μ: 1560046, ~: 1547450)\nLogs:\n  Bound result 3007\n  Bound result 264337514315787821\n\n[PASS] testFuzz_dueForwardsWholeValueAndExecutorForceRefunds(bool,uint96,uint96) (runs: 256, μ: 1829181, ~: 1816220)\nLogs:\n  Bound result 79228162445264337593543953343\n  Bound result 264337514315787821\n\n[PASS] testFuzz_dueWithoutEnoughFeeRevertsAtomically(bool,uint96,uint96) (runs: 256, μ: 3238217, ~: 3211359)\nLogs:\n  Bound result 79228162514264337593543950335\n  Bound result 1684\n\n[PASS] testFuzz_failedPreviewOrBridgeSkipsAndRefunds(bool,uint8,uint96) (runs: 256, μ: 1795429, ~: 1597979)\nLogs:\n  Bound result 2\n  Bound result 2\n\n[PASS] testFuzz_nonpayableContractWorksWithNoValueExactFeeAndSurplus(bool,uint8) (runs: 256, μ: 1941256, ~: 1976404)\nLogs:\n  Bound result 0\n\n[PASS] testFuzz_previewExceedingTheBudgetSkipsWithCodeOneAndRefunds(bool,uint96) (runs: 256, μ: 2167014, ~: 2181690)\nLogs:\n  Bound result 215698281114780629\n\n[PASS] testFuzz_quoteAboveCapSkipsWithCodeThree(bool,uint96,uint96) (runs: 256, μ: 1563931, ~: 1551124)\nLogs:\n  Bound result 79228162514259337593543953342\n  Bound result 264337514315787821\n\n[PASS] testFuzz_unsetExecutorDisablesBurnAndRefunds(bool,uint96) (runs: 256, μ: 1583700, ~: 1598430)\nLogs:\n  Bound result 215698281114780629\n\n[PASS] test_constantsAndStorage() (gas: 29216)\n[PASS] test_constructorRejectsNonzeroExecutorWithoutCodeAndAcceptsZeroOrCode() (gas: 22214)\n[PASS] test_exactFeeAndCapAreInclusive() (gas: 1708610)\n[PASS] test_executorReentryIsGuarded() (gas: 1770521)\n[PASS] test_executorSurplusCallReentryIsGuarded() (gas: 2351890)\n[PASS] test_executorSurplusIsForcedOnARejectingRecipient() (gas: 1984962)\n[PASS] test_existingChecksAndIntakeFailurePrecedeBurnFeeCheck() (gas: 579753)\n[PASS] test_gasArgumentsIncludeOnlyTheValueStipend() (gas: 1694399)\n[PASS] test_noFeeAtExactThresholdReverts() (gas: 1537275)\n[PASS] test_nonpayableContractAcceptsZeroRefundOnPreviewFailure() (gas: 1791339)\n[PASS] test_paidFunctionsRejectOneWeiWhereZeroValueSucceeds() (gas: 3763404)\n[PASS] test_previewUsingMostOfTheBudgetIsQuotedAndBurns() (gas: 2236765)\n[PASS] test_registryRefundReentryIsGuarded() (gas: 2174439)\n[PASS] test_rejectedNonzeroRegistryRefundRevertsAllEffects() (gas: 1949413)\n[PASS] test_zeroQuoteStillTriggersWhenDue() (gas: 1643756)\n[PASS] test_zeroValueHasNoStipend() (gas: 1564856)\nSuite result: ok. 24 passed; 0 failed; 0 skipped; finished in 552.37ms (2.53s 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: 60662450)\n[PASS] test_deployScriptUsesSepoliaConstantsAndNonzeroExecutor() (gas: 31208855)\n[PASS] test_noForbiddenOpcodesInRuntime() (gas: 56309448)\n[PASS] test_noImmutableReferencesInAnyArtifact() (gas: 92554609)\n[PASS] test_twoDeploymentsHaveIdenticalRuntimeCode() (gas: 3577724)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 552.40ms (196.39ms CPU time)\n\nRan 10 tests for test/ReviewChanges.t.sol:ReviewChangesTest\n[PASS] test_fuzz_emptyFixedArgRequiresZeroValueForT1AndT2(uint256) (runs: 256, μ: 3039045, ~: 3038853)\nLogs:\n  Bound result 4779330200398162655505464337166333524901875905317516054426\n\n[PASS] test_fuzz_ordinalShowsLowestVerifiedId(uint8) (runs: 256, μ: 4634477, ~: 4866125)\nLogs:\n  Bound result 26\n\n[PASS] test_hugeAnswerClearsUintBoolAndSharedRequestsUnderStipend() (gas: 26379788)\n[PASS] test_hugeSignatureClearsPendingAndAllowsImmediateRetry() (gas: 6838211)\n[PASS] test_metadataReportsMinimaEvenWhenSignedPanelIsLarger() (gas: 6306433)\n[PASS] test_scalarAnswerLengthPrecedesChainSignerAndClaimedType() (gas: 17767584)\n[PASS] test_sharedAnswerUpperBoundPrecedesChainAndSigner() (gas: 4503532)\n[PASS] test_signatureLengthPrecedesAnswerLengthAndChain() (gas: 37652039)\n[PASS] test_unknownRequestStillPrecedesDynamicSizeChecks() (gas: 12871822)\n[PASS] test_validationPrecedenceAfterSizes() (gas: 18086010)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 552.42ms (918.89ms 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: 5078827)\n[PASS] test_goldenSyntheticFullhouse() (gas: 21514473)\n[PASS] test_goldenSyntheticHoney() (gas: 23746288)\n[PASS] test_goldenSyntheticNewcomer() (gas: 3219081)\n[PASS] test_goldenSyntheticOracle() (gas: 8915956)\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 552.32ms (491.10ms CPU time)\n\nRan 32 tests for test/Adversarial.t.sol:AdversarialTest\n[PASS] test_abandonedSharedFactCanBeRequestedAgainAndTheLateAnswerIsIgnored() (gas: 3063452)\n[PASS] test_attestationForAnotherClaimantIsAMissForThisRequest() (gas: 3244206)\n[PASS] test_attestationForAnotherTraitWithTheSameWindowIsAMiss() (gas: 3247257)\n[PASS] test_callbackStarvedOfGasIsNotDeliveredAndStaysPending() (gas: 1692953)\n[PASS] test_cardShowsAtMostThirtyTwoCommunityIdsAndCountsThemAll() (gas: 86215566)\n[PASS] test_claimSponsoredWhilePendingOrVerifiedReverts() (gas: 2104530)\n[PASS] test_communityT3SpecIsASharedFactWithItsOwnHead() (gas: 2423017)\n[PASS] test_everyTemplateVerifiesUnderTheStipendWithACard() (gas: 11730795)\n[PASS] test_expiryAtTheExactSecondStillPassesAndOneLaterDoesNot() (gas: 3241538)\n[PASS] test_fuzz_abandonedPoolRequestKeepsPoolUsedAndLateCallbackIsIgnored(bool) (runs: 256, μ: 1909123, ~: 1923610)\n[PASS] test_fuzz_anyFieldAlteredAfterSigningIsASignatureMiss(uint8,uint256) (runs: 512, μ: 1653016, ~: 1654601)\nLogs:\n  Bound result 10\n\n[PASS] test_fuzz_applySharedFactOnlyWithinTheHead(uint8,uint8) (runs: 256, μ: 1783564, ~: 1766428)\nLogs:\n  Bound result 1\n  Bound result 0\n\n[PASS] test_fuzz_boolAnswerMustBeExactlyZeroOrOne(uint256) (runs: 512, μ: 2076167, ~: 2075794)\n[PASS] test_fuzz_countAnswerAgainstTheThreshold(uint256,bytes1,bool) (runs: 512, μ: 1655808, ~: 1684957)\n[PASS] test_fuzz_expiryAndClockSkewBoundaries(uint64,uint64) (runs: 512, μ: 1650477, ~: 1641459)\n[PASS] test_fuzz_hasTraitAndTraitsOfNeverRevert(address,uint16,uint8,bool,uint8) (runs: 512, μ: 326469, ~: 333904)\n[PASS] test_fuzz_maximalSpecRegistersComposesAndFitsTheBody(uint8,uint256,uint256) (runs: 64, μ: 2409610, ~: 2670274)\nLogs:\n  Bound result 1\n  Bound result 15260777720189829479127401304\n\n[PASS] test_fuzz_panelAndQuorumBoundaries(uint16,uint16,uint16) (runs: 512, μ: 1654873, ~: 1640580)\n[PASS] test_fuzz_panelTraitNeedsElevenAndSeven(uint16,uint16,uint16) (runs: 512, μ: 2083033, ~: 2069565)\n[PASS] test_fuzz_specBodyIsDeterministicAndClaimantBound(address,address) (runs: 256, μ: 864577, ~: 864577)\n[PASS] test_fuzz_upgradeChargesExactlyKTimesPriceAndLeavesThePoolAlone(uint8,uint256) (runs: 256, μ: 5088659, ~: 4218175)\nLogs:\n  Bound result 1\n  Bound result 16597905452489565922\n\n[PASS] test_fuzz_upgradeRejectsEveryIdThatIsNotAnOracleTrait(uint16) (runs: 256, μ: 209687, ~: 209240)\n[PASS] test_fuzz_windowMustEqualTheCanonicalOne(uint64,uint64) (runs: 512, μ: 1641001, ~: 1640990)\n[PASS] test_onFailureRecordsWhatItIsToldAndStoresNothing() (gas: 3064198)\n[PASS] test_questionHashIsBoundToTheClaimantAndTheTrait() (gas: 690361)\n[PASS] test_reentrantTokenCannotReenterAnyIMDMovingFunction() (gas: 7517031)\n[PASS] test_sharedFactWorstCaseEnvelopeUnderTheStipend() (gas: 3983876)\n[PASS] test_signatureShapesThatDoNotRecover() (gas: 9338096)\n[PASS] test_tokenURIDependsOnlyOnTheClaimantsFacts() (gas: 14700480)\n[PASS] test_traitClassForEveryCatalogIdAndRevertsForUnknown() (gas: 703103)\n[PASS] test_upgradeSponsoredDrawsAllNineOverNineDaysAndRefusesDuplicates() (gas: 12560682)\n[PASS] test_verifiedWindowIsTheCanonicalWindowForEveryOracleId() (gas: 16465073)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 552.51ms (4.26s 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    | 3193  | 0       | 0        |\n|----------+-------------------+-------+---------+----------|\n| Handler  | mintCard          | 3303  | 0       | 0        |\n|----------+-------------------+-------+---------+----------|\n| Handler  | sponsor           | 3280  | 0       | 0        |\n|----------+-------------------+-------+---------+----------|\n| Handler  | transfer          | 3257  | 0       | 0        |\n|----------+-------------------+-------+---------+----------|\n| Handler  | upgradeAndDeliver | 3351  | 0       | 0        |\n╰----------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1232368289263131362\n  Bound result 1448855604460307794\n  Bound result 200000000000018386\n  Bound result 1195551792225156164\n  Bound result 7759\n  Bound result 1256994466595396658\n  Bound result 10000000000000000\n  Bound result 200000000001125963\n  Bound result 15340\n  Bound result 0\n  Bound result 676117437633918294\n  Bound result 1416328895043088892\n  Bound result 813387468752127850\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.71s (5.71s 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 3088\n  Bound result 4329670727698909\n  Bound result 214\n  Bound result 74264337592978034889\n  Bound result 4083017047\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 13056\n  Bound result 4329670727698909\n  Bound result 5254\n  Bound result 9129\n  Bound result 4329670727698909\n  Bound result 1502\n  Bound result 74264337592978034889\n  Bound result 2103\n  Bound result 4333632135824622\n  Bound result 5649140660581829129\n  Bound result 52322447\n  Bound result 785589660\n  Bound result 2777\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 20413\n  Bound result 19524\n  Bound result 4333632135824622\n  Bound result 21173\n  Bound result 4329670727698909\n  Bound result 15403\n  Bound result 928722558818\n  Bound result 7993815019407382\n  Bound result 129025532714348\n  Bound result 27542174985168242871\n  Bound result 9554126629818154\n  Bound result 4333632135824621\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 8846061162513388\n  Bound result 107477462\n  Bound result 4232946072501561\n  Bound result 10048680817097912\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 3394559729\n  Bound result 3330\n  Bound result 4329670727698909\n  Bound result 4836\n  Bound result 1\n  Bound result 30306780\n  Bound result 1613953\n  Bound result 9905\n  Bound result 2018\n  Bound result 6700\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 17194757210879366\n  Bound result 17106\n  Bound result 3546\n  Bound result 1532892062\n  Bound result 8195\n  Bound result 340\n  Bound result 4333632135824622\n  Bound result 402185552\n  Bound result 588282637916451\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 6437465149593739\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 11851\n  Bound result 10677942346096622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 6839\n  Bound result 8922\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 7834\n  Bound result 8911795617600748\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 9024\n  Bound result 663288578082\n  Bound result 21761357392\n  Bound result 8947631\n  Bound result 129166340539073027874\n  Bound result 12859\n  Bound result 17241468156716676\n  Bound result 1791700001\n  Bound result 23038\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 31141493852577320400\n  Bound result 2470399856\n  Bound result 4333632135824622\n  Bound result 3554\n  Bound result 4329670727698909\n  Bound result 227\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 13122159190854524\n  Bound result 1950\n  Bound result 4329670727698909\n  Bound result 4280158711067844\n  Bound result 1360784228389265729\n  Bound result 2468813873648444\n  Bound result 11876096129332\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 1015\n  Bound result 3369\n  Bound result 16091144607\n  Bound result 0\n  Bound result 17710\n  Bound result 99574682166255224914\n  Bound result 8482\n  Bound result 19178056536186719\n  Bound result 7800\n  Bound result 20886\n  Bound result 4333632135824622\n  Bound result 676480\n  Bound result 3644834328298941\n  Bound result 11024870177306\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 125431686662226248775\n  Bound result 119040\n  Bound result 17815453384612529\n  Bound result 33311771943233078\n  Bound result 2847915516768946\n  Bound result 9523\n  Bound result 74264337592978034889\n  Bound result 8046\n  Bound result 2396\n  Bound result 74264337592978034889\n  Bound result 3164364541943127\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 536\n  Bound result 2175\n  Bound result 122542830500594787885\n  Bound result 4329670727698909\n  Bound result 23175\n  Bound result 74264337592978034889\n  Bound result 24313\n  Bound result 4333632135824622\n  Bound result 136826393166847509515\n  Bound result 4963973379765325\n  Bound result 4333632135824622\n  Bound result 13846\n  Bound result 4329670727698909\n  Bound result 3562702231557448\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 2526\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 4333632135824622\n  Bound result 59962052090742209659\n  Bound result 5371\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 4329670727698909\n  Bound result 13033\n  Bound result 139648964138418435043\n  Bound result 4277083779149304\n  Bound result 4333632135824622\n  Bound result 28196865638843447150\n  Bound result 1126\n  Bound result 4333632135824622\n  Bound result 74264337592978034889\n  Bound result 7816265264522408\n  Bound result 5128063915739617\n  Bound result 8131115\n  Bound result 266839050\n  Bound result 795\n  Bound result 74264337592978034889\n  Bound result 8610972680719658\n  Bound result 4333632135824622\n  Bound result 12519204950753091206\n  Bound result 2253267401549352\n  Bound result 227593570367466\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 13.22s (13.22s 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       | 264   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | advanceTime       | 281   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | applyShared       | 262   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | claimSponsored    | 266   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | deliverFalse      | 269   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | deliverTampered   | 257   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | deliverTrue       | 250   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | donate            | 274   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | failRequest       | 284   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | mintCard          | 278   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | registerSpec      | 297   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | replayConsumed    | 256   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | requestSharedFact | 292   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | sponsor           | 258   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | transfer          | 268   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | upgradePaid       | 270   | 0       | 0        |\n|-------------+-------------------+-------+---------+----------|\n| FullHandler | upgradeSponsored  | 282   | 0       | 0        |\n╰-------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1008999008497558296\n  Bound result 4986\n  Bound result 4\n  Bound result 2\n  Bound result 16609\n  Bound result 12031\n  Bound result 48\n  Bound result 613\n  Bound result 1\n  Bound result 23295\n  Bound result 1670\n\n[PASS] test_handlerReplayOfAConsumedIdChangesNothing() (gas: 1920763)\n[PASS] test_handlerSponsoredSelectionAcceptsMaxSeed() (gas: 1764003)\nLogs:\n  Bound result 3000000000000000000\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 15.91s (15.91s CPU time)\n\nRan 18 test suites in 15.92s (39.19s CPU time): 182 tests passed, 0 failed, 17 skipped (199 total tests)\n","passed":true},{"durationMs":260,"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\":467,\"LICENSE\":21,\"README.md\":439,\"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\":636,\"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\":134,\"test/Goldens.t.sol\":444,\"test/Invariants.t.sol\":124,\"test/InvariantsExtended.t.sol\":520,\"test/NOTES.md\":582,\"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/SepoliaRehearsal.t.sol\":249,\"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":5835,"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:550: Composer.encodeBody(Composer.Question,address).defs (src/Composer.sol#550) 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:622: Composer.hexMin(uint256).n (src/Composer.sol#622) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Composer.sol:192: Composer.traitsOf(address,address).n (src/Composer.sol#192) 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:595: Composer.canonical(Composer.Question).defs (src/Composer.sol#595) 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:163: Composer.traitsOf(address,address) (src/Composer.sol#163-200) has external calls inside a loop: ICatalogRegistry(registry).hasTrait(wallet,all[i]) (src/Composer.sol#194)\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/Composer.sol:299: Composer.mainnetHeightBound() (src/Composer.sol#299-302) uses timestamp for comparisons\n[low/medium] timestamp at src/Composer.sol:238: Composer.validateSpec(Spec,uint256) (src/Composer.sol#238-297) 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":1114,"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:346: Internal Function Used Only Once (4 places)\n[low] large-numeric-literal at src/Composer.sol:104: Large Numeric Literal (4 places)\n[low] literal-instead-of-constant at src/Composer.sol:81: Literal Instead of Constant (248 places)\n[low] require-revert-in-loop at src/Composer.sol:250: 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:622: 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:318: 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":"bc8735cabf084f6119b3a1881673cf07d1181557eb8f45b1a1d0a475958881da","verifiedTreeHash":"42fd9163fc8cdd1b5ffc5d2a08990b035c17fbc4","verifierVersion":"0.1.0+d952fceb"}]}