{"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":"6571be23-b887-48f4-813e-28f672c321cf","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"6535479087a8353ec18e79583135d51838a44de1478cf884d94cf500ced406e3","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":"3dda30aa05a134c2345525bc6c264a22cdc5ee11d7097c8705714dc5ff9182c6","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":"Sworn - an ownerless registry of facts about wallets: the three contracts of this repository built from its specification alone, every line new, as one code job without deployment (the entrant deploys afterwards with its own gate). WHAT IT IS: an ownerless ERC-721 registry of facts about wallets: Registry mints one card per wallet (transferable; its direct traits are frozen at mint and its facts stay about the minting wallet), verifies traits from the settled WhitelistCurator (free, direct reads) or from the IMD oracle through the Intake (paid by the claimant), stores shared facts, and registers community specs; every fee it takes (mint, registration) is forwarded to the IMD BurnExecutor V2 for bridging and burning on Base. Composer composes the oracle questions and validates specs; Renderer draws the card and its metadata on-chain. Anyone may call every function; there is no owner, setter or upgrade path. STARTING TREE: this repository at the pinned commit (branch rebuild-base): no product code, only the specification: docs/REBUILD.md on top (self-contained on every rule; where another document disagrees it wins), CONCEPT.md, CATALOG.md, TEMPLATES.md, INTEGRATION.md, templates/fixtures/ (the exact question bodies), reference/ (verified sources, ABIs, served attestations, the plane's questionHash goldens), and the scaffold that does not change (foundry.toml, remappings.txt, lib/ submodules). Earlier trees of this product exist on the repository's main branch and in identity-md-launches; they are not an input of this build: do not copy from them; write an independent implementation. WORK: write src/ (Registry, Composer, Renderer, the interfaces from the verified sources under reference/), test/, script/Deploy.s.sol and tools/gen_template.py from docs/REBUILD.md exactly: the public surface of its section 2, complete and unchanged in names, types and return order; the registry rules of section 3 (every fee transferred to the BurnExecutor in the transaction that pulls it, no pool, no payable function; the callback's clear-then-check order with its nine checks and ten reason codes; the seven-argument constructor with the code checks and the empty-chain floor of 3.9); the Composer of section 4 (the five templates equal to templates/fixtures/, the questionHash document equal to reference/plane/questionHashes.json, kind 6 Swarmed with the living window and the recipe of 4.2 word for word, the given fixture templates/fixtures/T6-operator-reference.json); the Renderer of section 5 (the metadata as written, the hive by its numbers, bytes constant tables, no immutable); the generator and goldens of 6.1 (synthetic wallets 0x...c1a1 only); every test of section 7; test/NOTES.md with one line per rule and its test, the three sizes and their sum, the maximum-state tokenURI gas. SIZE BUDGET (hard): Registry, Composer and Renderer runtimes together at or under 69,800 bytes, each under 24,576 (the three are deployed in one mainnet transaction under the 16,777,216-gas cap; the last build's 68,086 bytes used 16,009,263 of it); prefer deleting over adding; optimizer_runs stays 200; a test pins the sum. DECIDE, DO NOT ASK: when a rule conflicts with a required check, make the smallest change that satisfies the check, keep everything else, and record the choice in test/NOTES.md. NO TOKEN: this project issues no ERC-20 and mints no coin; its only token is the ERC-721 card of the Registry: token name Sworn, token symbol SWORN, total supply: unlimited, no cap, 0 at launch (one card per wallet, minted on demand, never burned); fees are paid in the existing IMD token 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, which this project does not create, mint or hold; no owner. The constructor of the Registry takes seven addresses (curator, imd, intake, attester, renderer, composer, burnExecutor); the mainnet values are in docs/REBUILD.md section 8; nothing is deployed in this job.","parentJobId":null,"planHash":"a7060a0ce8992af48719f801cc70454a4854e98af93e764e7d3fb0fc1dfe8199","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"6571be23-b887-48f4-813e-28f672c321cf","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":"51234","feedbackHash":"2a33907028def9cbb6ce2fcc07ad95e745a1e76757adcc8c2ef14fe37d766323","nodeKey":"adversarial_review","submissionHash":"6535479087a8353ec18e79583135d51838a44de1478cf884d94cf500ced406e3","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51751","feedbackHash":"916d1b9c42083177d6408813908896dc68fc9ebaddca4994712a4e67b1977518","nodeKey":"build_contract_project","submissionHash":"3dda30aa05a134c2345525bc6c264a22cdc5ee11d7097c8705714dc5ff9182c6","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"8007c88d7ce1866573b465b45dc7b209f335e135773f217bbda3ba417e58db26","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"e1bb90c70132309f68e3cb2a9594e8d632b88f6a9a10a97fbf626e16223fc32d","device":"500cef6ec1073663","findings":[],"hash":"3dda30aa05a134c2345525bc6c264a22cdc5ee11d7097c8705714dc5ff9182c6","nodeId":"ef7723d0-5f33-4c5f-96fc-8ddc81ad1d6b","outcome":"completed","summary":"Implemented all three contracts, deployment script, generator, goldens, tests, and documentation.\n\n- Build, formatting, offline tests, and generator checks pass.\n- 48 tests passed; mainnet fork check passed separately.\n- Combined runtime: **66,332 bytes**.\n- Maximum-state `tokenURI`: **9,220,384 gas**.\n- Protected files unchanged; removal searches empty.\n\nCoverage and decisions are recorded in [test/NOTES.md](/root/.identitymd/work/6571be23-b887-48f4-813e-28f672c321cf/ef7723d0-5f33-4c5f-96fc-8ddc81ad1d6b/test/NOTES.md). No deployment performed.","treeHash":"df025dc21f163ed8c1d380153647873941953ded","usage":{"cachedInputTokens":11612672,"inputTokens":249823,"model":"gpt-6-astra","outputTokens":86836,"runtime":"codex","turns":10,"wallClockMs":2846462}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"d00f790fc692b1a4","findings":[{"citation":"resolved","description":"docs/REBUILD.md 3.3 says to revert RequestIdTaken only when `pending[requestId].requestedAt != 0` for the id the Intake returns. The implementation keeps a permanent `issuedRequests` set, so an id that was pending once and has since been cleared (abandoned after 31 days, or completed through onResult/onFailure) is refused for ever, and an id of zero is refused too. Against the live Intake v2 (ids derived from a monotone counter) this never triggers, so there is no funds or safety impact; it is extra state beyond the specification that changes the revert behaviour the spec defines and costs one cold SSTORE per request. The builder recorded the choice in test/NOTES.md ('Interpretation choices', second item).","line":295,"path":"src/Registry.sol","reproduction":"Mock Intake whose requestWithFailure returns the same bytes32 X on two calls. Wallet W: upgrade([701], max) -> pending X. vm.warp(requestedAt + 31 days + 1); W calls abandon(X) -> pending[X].requestedAt == 0. W calls upgrade([701], max) again. Expected per 3.3: the request succeeds (pending record free, no overwrite). Actual: reverts RequestIdTaken(X).","severity":"low","snippet":"        if (rid == 0 || issuedRequests[rid]) revert RequestIdTaken(rid);","title":"RequestIdTaken fires for a cleared (abandoned or completed) id, stricter than 3.3's pending-only rule"},{"citation":"resolved","description":"Section 6.1 and 11.1 require `python3 tools/gen_template.py --check` and `python3 -m unittest discover -s tools` to pass. This review machine has no Python interpreter, so neither could be run here. The Solidity side was checked instead: GoldensTest reproduces every golden under test/fixtures byte for byte from HiveTables.sol, and the SHA-256 manifest in test/NOTES.md lists the generated files. The verifier should run the two Python commands on a machine that has python3; this row is reported as unreached, not as a defect.","line":1,"path":"tools/gen_template.py","reproduction":"On this machine: `python3 tools/gen_template.py --check` -> 'python3: command not found' (exit 127). Not a code defect; listed so the gap in verification is visible.","severity":"info","snippet":"#!/usr/bin/env python3","title":"Generator --check and its unittest could not be executed on this machine (no python3)"}],"hash":"6535479087a8353ec18e79583135d51838a44de1478cf884d94cf500ced406e3","nodeId":"529515a2-387f-4d2b-a710-04e9a2375432","outcome":"completed","summary":"The review is complete and `.imd-findings.json` holds the result. Git status shows only that file, which the task requires, and no scratch files were created.\n\n**Outcome: no critical, high or medium defect found.** The delivered tree matches docs/REBUILD.md on every rule I could check, and the suite passes offline (48 tests, the opt-in fork skipped).\n\nWhat I verified against the specification:\n- **Section 2 surface** is complete and unchanged in names, types and return order. The builder added one view, `renderSpec`, which the spec permits.\n- **Section 3 rules** hold in Registry.sol: fees pulled and forwarded to the BurnExecutor in the same call, no payable path, the seven-argument constructor with the empty-chain floor, clear-then-check in the callback with the nine checks in the spec's order and the ten reason codes, the strict 31-day abandon boundary, the kind-3 envelope with exact head, and the living window for 601 stored per request.\n- **Section 4**: all eleven fixture bodies and the plane's question hashes reproduce byte for byte; the kind-6 recipe text in QuestionText.sol equals 4.2 word for word with its eight keys in order. Catalog windows, thresholds, fixed values and the name table match CATALOG.md.\n- **Section 5**: envelope key order, the percent-encoded set, JSON escaping, panel minima shared with the Composer, hostile-registry bounds, and the step and rare-dot rules all match, with goldens passing.\n- **Section 6**: runtime sizes sum to 66,332 bytes under the 69,800 cap, each under EIP-170, no forbidden opcodes or keywords, fmt check green, and the 3.8 greps print nothing.\n\nTwo items are recorded in the file:\n1. **Low**: `RequestIdTaken` is raised for any id the Intake ever returned, not only a pending one as 3.3 states. A mock Intake returning the same id after an abandon makes the second `upgrade` revert where the spec says it should succeed. The live Intake never reuses ids, so there is no funds impact. The builder noted the choice in test/NOTES.md.\n2. **Info**: the generator's `--check` and its unittest could not run here because this machine has no python3. The Solidity goldens and the SHA-256 manifest cover the generated tables indirectly. The verifier should run those two commands on a machine that has Python.\n\nThe coverage record answers all thirteen listed entry points, plus rows for the fixtures, the Renderer, the size budget and the unreached generator check.","treeHash":null,"usage":{"cachedInputTokens":1407671,"inputTokens":386,"model":"claude-fable-5-1","outputTokens":22206,"runtime":"claude","turns":24,"wallClockMs":352956}}],"verification":[{"checks":[{"durationMs":21095,"exitCode":0,"name":"build","output":"Compiling 76 files with Solc 0.8.24\nSolc 0.8.24 finished in 20.35s\nCompiler run successful with warnings:\nWarning (2519): This declaration shadows an existing declaration.\n   --> src/Registry.sol:212:13:\n    |\n212 |             Spec storage s = specs[id];\n    |             ^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> src/Registry.sol:215:9:\n    |\n215 |         Spec memory s = IComposer(composer).catalogSpec(id, curator);\n    |         ^^^^^^^^^^^^^\n\nWarning (2519): This declaration shadows an existing declaration.\n   --> test/Callback.t.sol:126:13:\n    |\n126 |             bytes32 rid = ask(ALICE, 701);\n    |             ^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> test/Callback.t.sol:136:9:\n    |\n136 |         bytes32 rid = ask(ALICE, 701);\n    |         ^^^^^^^^^^^\n\nWarning (2519): This declaration shadows an existing declaration.\n   --> test/Callback.t.sol:127:13:\n    |\n127 |             OracleAttestation memory a = attest(rid, abi.encode(uint256(1)));\n    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> test/Callback.t.sol:137:9:\n    |\n137 |         OracleAttestation memory a = attest(rid, abi.encode(uint256(1)));\n    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWarning (2519): This declaration shadows an existing declaration.\n   --> test/Callback.t.sol:222:13:\n    |\n222 |             bytes32 rid = ask(ALICE, i == 3 ? 601 : 701);\n    |             ^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> test/Callback.t.sol:237:9:\n    |\n237 |         bytes32 rid = ask(ALICE, 701);\n    |         ^^^^^^^^^^^\n\nWarning (2519): This declaration shadows an existing declaration.\n   --> test/Callback.t.sol:223:13:\n    |\n223 |             OracleAttestation memory a = attest(rid, abi.encode(uint256(1)));\n    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n   --> test/Callback.t.sol:238:9:\n    |\n238 |         OracleAttestation memory a = attest(rid, abi.encode(uint256(1)));\n    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n","passed":true},{"durationMs":31308,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 1 test for test/Fork.t.sol:ForkTest\n[SKIP] test_mainnetPinnedDependenciesMintBridgePreviewAndRealComplete() (gas: 0)\nSuite result: ok. 0 passed; 0 failed; 1 skipped; finished in 607.82µs (216.34µs CPU time)\n\nRan 2 tests for test/Attestations.t.sol:AttestationsTest\n[PASS] test_fiveServedAttestationsRecoverPlaneSigner() (gas: 1105711)\n[PASS] test_protocolVectorAndCanonicalCallbackSelector() (gas: 80054)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 10.33ms (8.19ms CPU time)\n\nRan 11 tests for test/Callback.t.sol:CallbackTest\n[PASS] test_allMissCodesClearAndRetry() (gas: 22614869)\n[PASS] test_dateBoundsAnd23HourIssue() (gas: 9090945)\n[PASS] test_diagnosticPrecedenceAndOversizedEnvelopes() (gas: 35640028)\n[PASS] test_exact31DayBoundaryAndBothLateOrderingsPersonalAndShared() (gas: 19642518)\n[PASS] test_malformedBoolListsAndAbiEnvelope() (gas: 18745693)\n[PASS] test_panelMinimaFutureIssueAndMalformedSignatureBoundaries() (gas: 19378355)\n[PASS] test_swarmedOldWindowMissesAndCurrentStoredWindowPasses() (gas: 11758648)\n[PASS] test_unsignedFailureClearsAndRetries() (gas: 11467648)\n[PASS] test_worstCaseColdCommunityCallbackGas() (gas: 3367160)\nLogs:\n  cold onResult gas including call overhead: 188544\n\n[PASS] test_wrongCallerUnknownAndOneCompletion() (gas: 2519312)\n[PASS] test_wrongConsumerAndDeploymentChainSignatures() (gas: 4525803)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 75.67ms (412.89ms CPU time)\n\nRan 11 tests for test/Registry.t.sol:RegistryTest\n[PASS] testFuzz_directMonotoneAndSnapshot(uint256,uint256,uint256,uint256) (runs: 256, μ: 759508, ~: 757863)\nLogs:\n  Bound result 3\n  Bound result 21\n  Bound result 92532026426350178880\n  Bound result 2604\n\n[PASS] test_abandonPersonalAndPermissionlessSharedStrictBoundary() (gas: 4628180)\n[PASS] test_contractWalletMintsWithoutReceiverAndUnauthorizedTransferFails() (gas: 300689)\n[PASS] test_directNonmemberZeroUnknownAnd601() (gas: 6972875)\n[PASS] test_feesForwardAtomicallyAndNoNativeCurrency() (gas: 1418923)\n[PASS] test_mintGuardAgainstReentrantToken() (gas: 314976)\n[PASS] test_requestIdCollisionRevertsAllAndLateOldDoesNotClearSuccessor() (gas: 5501117)\n[PASS] test_sharedListHashMembershipExactLengthAndApply() (gas: 3207546)\n[PASS] test_swarmedLivingWindowStoredAcrossTimeAndChains() (gas: 10762172)\n[PASS] test_transferFrozenSnapshotAndWalletAuthority() (gas: 9536395)\n[PASS] test_upgradePricesKindsDuplicatesAndBatches() (gas: 4363860)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 76.47ms (218.40ms CPU time)\n\nRan 4 tests for test/Artifacts.t.sol:ArtifactsTest\n[PASS] test_constructorAllCodeCombinationsAndExecutorFloor() (gas: 19526)\n[PASS] test_constructorHelpersAlwaysRequireCodeZeroAddressesAndReadChecks() (gas: 15896)\n[PASS] test_emptyChainMainnetAndSepoliaDeploymentScript() (gas: 42418180)\n[PASS] test_sizesDeterminismAndNoPatchedReferences() (gas: 59684912)\nLogs:\n  Registry runtime: 21272\n  Composer runtime: 24297\n  Renderer runtime: 20763\n  Runtime sum: 66332\n\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 123.91ms (122.65ms CPU time)\n\nRan 7 tests for test/Edges.t.sol:EdgesTest\n[PASS] test_allRegisteredKindsRoundTripAndVerificationOrder() (gas: 21892639)\n[PASS] test_allSpecGuardsAreBeforeTransfer() (gas: 3157713)\n[PASS] test_crossRequestQuestionBindingAndSignedAttestationReplay() (gas: 10288791)\n[PASS] test_metadataUpdatesForTransfersAndVerifiedCardOnly() (gas: 7889713)\n[PASS] test_paidRetryFalsePanelAndRejectionAfterSuccess() (gas: 11802599)\n[PASS] test_registrationEndsAt65534() (gas: 1125079)\n[PASS] test_sharedCommunityApplicationAndUnknownViews() (gas: 3899330)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 388.97ms (127.16ms CPU time)\n\nRan 7 tests for test/Composer.t.sol:ComposerTest\n[PASS] testFuzz_specThresholdAndBodyCaps(uint256,uint64) (runs: 256, μ: 2011931, ~: 2003185)\nLogs:\n  Bound result 164512214021864904964863638225624366765146406226216744032237020328923701474\n  Bound result 257242\n\n[PASS] test_allFixtureBodiesAndPlaneQuestionHashes() (gas: 13960175)\n[PASS] test_allGrammarTypesAndFunctionSignature() (gas: 183429)\n[PASS] test_consumerDomainChangesOnlyBody() (gas: 1634007)\n[PASS] test_kind3DerivesTopicTwo() (gas: 1190164)\n[PASS] test_specGrammarAndFieldFailuresBeforeFees() (gas: 2123958)\n[PASS] test_windowsAndExpectedId() (gas: 2207491)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 511.79ms (594.56ms CPU time)\n\nRan 1 test for test/MaximumState.t.sol:MaximumStateTest\n[PASS] test_maximumStateTokenURIGasAndPanelMinima() (gas: 220855276)\nLogs:\n  maximal item bytes: 256\n  maximum-state tokenURI gas: 9220384\n  maximum-state URI bytes: 43453\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 703.56ms (700.97ms CPU time)\n\nRan 4 tests for test/Goldens.t.sol:GoldensTest\n[PASS] test_allSyntheticGoldenURIs() (gas: 439127022)\n[PASS] test_hostileRegistryRepliesFailCleanlyUnderFiveMillionGas() (gas: 2549546)\n[PASS] test_previewForWalletWithoutCardAndHostileIds() (gas: 1351233)\n[PASS] test_stepTableRareDotsRingCountsAndAsciiTables() (gas: 251853649)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 1.35s (2.16s CPU time)\n\nRan 1 test for test/Invariants.t.sol:InvariantsTest\n[PASS] invariant_claimantIdentityOneCardAndFeeConservation() (runs: 256, calls: 16384, reverts: 0)\n\n╭---------------+----------+-------+---------+----------╮\n| Contract      | Selector | Calls | Reverts | Discards |\n+=======================================================+\n| WalletHandler | claim    | 5334  | 0       | 0        |\n|---------------+----------+-------+---------+----------|\n| WalletHandler | mint     | 5582  | 0       | 0        |\n|---------------+----------+-------+---------+----------|\n| WalletHandler | transfer | 5468  | 0       | 0        |\n╰---------------+----------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 30.80s (30.80s CPU time)\n\nRan 10 test suites in 30.80s (34.04s CPU time): 48 tests passed, 0 failed, 1 skipped (49 total tests)\n","passed":true},{"durationMs":490,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Registry.abandon(bytes32)\",\"Registry.applySharedFact(uint16,address[])\",\"Registry.approve(address,uint256)\",\"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),uint256)\",\"Registry.requestSharedFact(uint16,uint256)\",\"Registry.safeTransferFrom(address,address,uint256)\",\"Registry.safeTransferFrom(address,address,uint256,bytes)\",\"Registry.setApprovalForAll(address,bool)\",\"Registry.transferFrom(address,address,uint256)\",\"Registry.upgrade(uint16[],uint256)\"],\"files\":{\".gitignore\":8,\".gitmodules\":6,\"CATALOG.md\":249,\"CONCEPT.md\":209,\"DEPLOYMENTS.md\":113,\"DISCLOSURE.md\":160,\"INTEGRATION.md\":394,\"LICENSE\":21,\"README.md\":73,\"TEMPLATES.md\":200,\"audits/2026-10-11-code-review-brief-job-1.md\":92,\"audits/2026-10-12-review-round-2-dispositions.md\":58,\"audits/2026-10-18-swarm-launch-audit-c3792acf.md\":140,\"audits/2026-10-19-onedollaraudit-1033.md\":323,\"audits/2026-10-19-onedollaraudit-1033.report.md\":263,\"audits/2026-10-21-onedollaraudit-1042.md\":386,\"audits/2026-10-21-onedollaraudit-1042.report.md\":329,\"audits/2026-10-21-onedollaraudit-1043.md\":38,\"audits/2026-10-21-onedollaraudit-1043.report.md\":396,\"audits/2026-10-21-onedollaraudit-1044.md\":40,\"audits/2026-10-21-onedollaraudit-1044.report.md\":318,\"audits/README.md\":18,\"docs/DESIGN.md\":55,\"docs/REBUILD.md\":801,\"docs/SITE.md\":174,\"foundry.toml\":44,\"reference/Intake.sol\":5175,\"reference/IntakeV2.sol\":5240,\"reference/PROVENANCE.md\":45,\"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/census/census.py\":115,\"reference/census/curator-source.json\":242,\"reference/census/hours.json\":490,\"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/checks/T6-operator-reference.json\":98,\"reference/plane/questionHashes.json\":101,\"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,\"reference/plane/quotes/T6-operator-reference.json\":20,\"remappings.txt\":2,\"script/Deploy.s.sol\":28,\"src/Composer.sol\":263,\"src/Registry.sol\":468,\"src/Renderer.sol\":377,\"src/interfaces/ICurator.sol\":11,\"src/interfaces/IIntake.sol\":19,\"src/interfaces/IOracleConsumer.sol\":16,\"src/interfaces/ISworn.sol\":30,\"src/interfaces/IWhitelistCurator.sol\":6,\"src/interfaces/Types.sol\":36,\"src/lib/Buffer.sol\":46,\"src/lib/Catalog.sol\":98,\"src/lib/HiveTables.sol\":41,\"src/lib/QuestionText.sol\":52,\"src/lib/SpecValidation.sol\":187,\"src/lib/Text.sol\":103,\"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,\"templates/fixtures/T6-operator-reference.json\":28,\"templates/fixtures/negative/1201-grouped-by-data-field.json\":58,\"test/Artifacts.t.sol\":109,\"test/Attestations.t.sol\":100,\"test/Callback.t.sol\":252,\"test/Composer.t.sol\":174,\"test/Decode.sol\":59,\"test/Edges.t.sol\":217,\"test/Fork.t.sol\":91,\"test/Goldens.t.sol\":177,\"test/Invariants.t.sol\":114,\"test/MaximumState.t.sol\":94,\"test/NOTES.md\":196,\"test/Registry.t.sol\":276,\"test/Support.sol\":298,\"test/fixtures/SHA256SUMS\":58,\"test/fixtures/cases.json\":447,\"test/fixtures/community_13.svg\":1,\"test/fixtures/community_13.uri\":1,\"test/fixtures/community_26.svg\":1,\"test/fixtures/community_26.uri\":1,\"test/fixtures/community_39.svg\":1,\"test/fixtures/community_39.uri\":1,\"test/fixtures/community_40.svg\":1,\"test/fixtures/community_40.uri\":1,\"test/fixtures/community_5000.svg\":1,\"test/fixtures/community_5000.uri\":1,\"test/fixtures/community_70.svg\":1,\"test/fixtures/community_70.uri\":1,\"test/fixtures/community_8192.svg\":1,\"test/fixtures/community_8192.uri\":1,\"test/fixtures/empty.svg\":1,\"test/fixtures/empty.uri\":1,\"test/fixtures/escaping.svg\":1,\"test/fixtures/escaping.uri\":1,\"test/fixtures/partial_2_1.svg\":1,\"test/fixtures/partial_2_1.uri\":1,\"test/fixtures/partial_3_1.svg\":1,\"test/fixtures/partial_3_1.uri\":1,\"test/fixtures/partial_3_2.svg\":1,\"test/fixtures/partial_3_2.uri\":1,\"test/fixtures/partial_4_1.svg\":1,\"test/fixtures/partial_4_1.uri\":1,\"test/fixtures/partial_4_2.svg\":1,\"test/fixtures/partial_4_2.uri\":1,\"test/fixtures/partial_4_3.svg\":1,\"test/fixtures/partial_4_3.uri\":1,\"test/fixtures/partial_5_1.svg\":1,\"test/fixtures/partial_5_1.uri\":1,\"test/fixtures/partial_5_2.svg\":1,\"test/fixtures/partial_5_2.uri\":1,\"test/fixtures/rare_1001.svg\":1,\"test/fixtures/rare_1001.uri\":1,\"test/fixtures/rare_1101.svg\":1,\"test/fixtures/rare_1101.uri\":1,\"test/fixtures/rare_1102.svg\":1,\"test/fixtures/rare_1102.uri\":1,\"test/fixtures/rare_1103.svg\":1,\"test/fixtures/rare_1103.uri\":1,\"test/fixtures/rare_1104.svg\":1,\"test/fixtures/rare_1104.uri\":1,\"test/fixtures/rare_1201.svg\":1,\"test/fixtures/rare_1201.uri\":1,\"test/fixtures/rare_202.svg\":1,\"test/fixtures/rare_202.uri\":1,\"test/fixtures/rare_801.svg\":1,\"test/fixtures/rare_801.uri\":1,\"test/fixtures/rare_901.svg\":1,\"test/fixtures/rare_901.uri\":1,\"test/fixtures/single.svg\":1,\"test/fixtures/single.uri\":1,\"test/fixtures/widest.svg\":1,\"test/fixtures/widest.uri\":1,\"tools/check_fork.sh\":7,\"tools/gen_template.py\":179,\"tools/test_gen_template.py\":29,\"web/.gitkeep\":0},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":10428,"exitCode":0,"name":"slither","output":"[medium/high] incorrect-equality at src/Registry.sol:278: Registry._ask(uint16,address,uint256) (src/Registry.sol#278-301) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:369: Registry.onResult(bytes32,OracleAttestation,bytes) (src/Registry.sol#369-390) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:233: Registry._rule(uint16) (src/Registry.sol#233-240) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Composer.sol:120: Composer._question(uint16,Spec,address) (src/Composer.sol#120-156) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Composer.sol:162: Composer._definitions(Composer.Question,bool) (src/Composer.sol#162-177) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Composer.sol:179: Composer._document(Composer.Question) (src/Composer.sol#179-195) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:453: Registry.applySharedFact(uint16,address[]) (src/Registry.sol#453-467) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:326: Registry.onFailure(bytes32,uint8,bytes32,uint16,uint16,bytes) (src/Registry.sol#326-337) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:308: Registry._clear(bytes32,Registry.Pending) (src/Registry.sol#308-315) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Composer.sol:120: Composer._question(uint16,Spec,address) (src/Composer.sol#120-156) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:233: Registry._rule(uint16) (src/Registry.sol#233-240) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:317: Registry.abandon(bytes32) (src/Registry.sol#317-324) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Composer.sol:120: Composer._question(uint16,Spec,address) (src/Composer.sol#120-156) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Registry.sol:233: Registry._rule(uint16) (src/Registry.sol#233-240) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Composer.sol:197: Composer._body(Composer.Question,address) (src/Composer.sol#197-229) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/Composer.sol:158: Composer._type(uint8) (src/Composer.sol#158-160) uses a dangerous strict equality:\n[medium/medium] uninitialized-local at src/Registry.sol:457: Registry.applySharedFact(uint16,address[]).found (src/Registry.sol#457) is a local variable never initialized\n[medium/medium] uninitialized-local at src/lib/Text.sol:90: Text.expand(string,string[16]).j (src/lib/Text.sol#90) is a local variable never initialized\n[medium/medium] uninitialized-local at src/lib/Text.sol:84: Text.expand(string,string[16]).size (src/lib/Text.sol#84) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Renderer.sol:273: Renderer._cell(HiveTables.Table,uint256,uint256,uint16,uint256).cell (src/Renderer.sol#273) is a local variable never initialized\n[medium/medium] uninitialized-local at src/Registry.sol:168: Registry.hasDirectTrait(address,uint16).snapshot (src/Registry.sol#168) is a local variable never initialized\n[medium/medium] unused-return at src/Registry.sol:392: Registry._check(Registry.Pending,OracleAttestation,bytes,uint8,uint256) (src/Registry.sol#392-438) ignores return value by (signer,err,None) = ECDSA.tryRecover(attestationDigest(a),signature) (src/Registry.sol#402)\n[low/medium] calls-loop at src/Registry.sol:204: Registry.specOf(uint16) (src/Registry.sol#204-207) has external calls inside a loop: IComposer(composer).catalogSpec(id,curator) (src/Registry.sol#206)\n[low/medium] calls-loop at src/Registry.sol:278: Registry._ask(uint16,address,uint256) (src/Registry.sol#278-301) has external calls inside a loop: h = IComposer(composer).mainnetHeightBound() (src/Registry.sol#281)\n[low/medium] calls-loop at src/Composer.sol:254: Composer.traitsOf(address,address) (src/Composer.sol#254-262) has external calls inside a loop: IRegistry(registry).hasTrait(wallet,ids[i]) (src/Composer.sol#259)\n[low/medium] calls-loop at src/Registry.sol:278: Registry._ask(uint16,address,uint256) (src/Registry.sol#278-301) has external calls inside a loop: (body,hash) = IComposer(composer).compose(id,s,claimant,address(this),curator) (src/Registry.sol#284)\n[low/medium] calls-loop at src/Renderer.sol:150: Renderer._oracle(address,Renderer.Card) (src/Renderer.sol#150-166) has external calls inside a loop: (rid,oid,from,to) = IRegistry(registry).verified(c.claimant,id) (src/Renderer.sol#157)\n[low/medium] calls-loop at src/Registry.sol:278: Registry._ask(uint16,address,uint256) (src/Registry.sol#278-301) has external calls inside a loop: rid = IIntake(intake).requestWithFailure(ACTION,body,IIntake.Callback(address(this),this.onResult.selector),this.onFailure.selector,imd,price) (src/Registry.sol#286-294)\n[low/medium] reentrancy-benign at src/Registry.sol:278: Reentrancy in Registry._ask(uint16,address,uint256) (src/Registry.sol#278-301):\n[low/medium] timestamp at src/Registry.sol:308: Registry._clear(bytes32,Registry.Pending) (src/Registry.sol#308-315) uses timestamp for comparisons\n[low/medium] timestamp at src/Composer.sol:158: Composer._type(uint8) (src/Composer.sol#158-160) uses timestamp for comparisons\n[low/medium] timestamp at src/Composer.sol:162: Composer._definitions(Composer.Question,bool) (src/Composer.sol#162-177) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:453: Registry.applySharedFact(uint16,address[]) (src/Registry.sol#453-467) uses timestamp for comparisons\n[low/medium] timestamp at src/Composer.sol:33: Composer.mainnetHeightBound() (src/Composer.sol#33-35) uses timestamp for comparisons\n[low/medium] timestamp at src/Composer.sol:179: Composer._document(Composer.Question) (src/Composer.sol#179-195) uses timestamp for comparisons\n[low/medium] timestamp at src/Composer.sol:197: Composer._body(Composer.Question,address) (src/Composer.sol#197-229) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:326: Registry.onFailure(bytes32,uint8,bytes32,uint16,uint16,bytes) (src/Registry.sol#326-337) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:392: Registry._check(Registry.Pending,OracleAttestation,bytes,uint8,uint256) (src/Registry.sol#392-438) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:233: Registry._rule(uint16) (src/Registry.sol#233-240) uses timestamp for comparisons\n[low/medium] timestamp at src/Composer.sol:120: Composer._question(uint16,Spec,address) (src/Composer.sol#120-156) uses timestamp for comparisons\n[low/medium] timestamp at src/Composer.sol:104: Composer.compose(uint16,Spec,address,address,address) (src/Composer.sol#104-118) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:317: Registry.abandon(bytes32) (src/Registry.sol#317-324) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:369: Registry.onResult(bytes32,OracleAttestation,bytes) (src/Registry.sol#369-390) uses timestamp for comparisons\n[low/medium] timestamp at src/Registry.sol:440: Registry._mark(address,uint16,Registry.Verification) (src/Registry.sol#440-446) uses timestamp for comparisons","passed":true},{"durationMs":2611,"exitCode":0,"name":"aderyn","output":"[high] abi-encode-packed-hash-collision at src/Composer.sol:180: `abi.encodePacked()` Hash Collision (18 places)\n[high] reentrancy-state-change at src/Registry.sol:125: Reentrancy: State change after external call (5 places)\n[high] unsafe-casting at src/Registry.sol:385: Unsafe Casting of integers (2 places)\n[low] costly-loop at src/Registry.sol:263: Costly operations inside loop\n[low] large-numeric-literal at src/Composer.sol:73: Large Numeric Literal (2 places)\n[low] literal-instead-of-constant at src/Composer.sol:34: Literal Instead of Constant (161 places)\n[low] missing-inheritance at src/Composer.sol:12: Missing Inheritance (2 places)\n[low] require-revert-in-loop at src/Composer.sol:148: Loop Contains `require`/`revert` (6 places)\n[low] state-variable-could-be-immutable at src/Registry.sol:28: State Variable Could Be Immutable (7 places)\n[low] uninitialized-local-variable at src/Composer.sol:165: Uninitialized Local Variable (5 places)\n[low] unsafe-oz-erc721-mint at src/Registry.sol:156: Unsafe `ERC721::_mint()`\n[low] unused-import at src/Renderer.sol:4: Unused Import\n[low] unused-public-function at src/Registry.sol:181: Public Function Not Used Internally (2 places)","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"3dda30aa05a134c2345525bc6c264a22cdc5ee11d7097c8705714dc5ff9182c6","verifiedTreeHash":"df025dc21f163ed8c1d380153647873941953ded","verifierVersion":"0.1.0+560ab6a2"}]}