{"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":"1c6c6b49-7306-490a-b71f-2db55db3f4bc","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"0c23b7662b8f2295e6fa32940053a5995147e649621145825ed235d36644061d","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"61b8840634f855ffb9c49429c45de06dc39fff9ee2e5192551490a18f8a61fd6","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"e9db7bff93d4998c7cd4a4b2d3a84c0837d038068ead3b37579e2433cedc0747","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"a7e31114c445b3f3c8bd2e23b69e1e9bb32ba18738ebc6bbc4c3a1a1159f00aa","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"0edcb968687dc3d6119c39217bfd0eddde5255f0a0cac1a6bb625af1f3a4ce20","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"4c44d6a0342975b18845d700fe902b4d832111b6af60b1fe5688b84c242a8fcc","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"6b8d2c2ebd3301cff2be8edb1e1cc6ba65c858c02fe7247be81722b969842265","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"6b8d2c2ebd3301cff2be8edb1e1cc6ba65c858c02fe7247be81722b969842265","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"e71fbabc3d8c816159d04aa45d0c17c947db69807e6cea467d2d9c1d43222e5f","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"96da2894c0c3ae5d746273207d2081cc46001e551bf213b39e2aad3dfb47ea39","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: SwarmBrain (BRAIN).\nToken name: SwarmBrain\nToken symbol: BRAIN\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"7e56318a7fe22b5d45a839c918f2511e4b3da433e71f40250da6c1389b1fd92a","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"1c6c6b49-7306-490a-b71f-2db55db3f4bc","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1500-swarmbrain"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52270","feedbackHash":"491156eb40d426bf87abf24a60624462ca43f5e2b0849890572ef0dfd6820320","nodeKey":"audit_economics","submissionHash":"0c23b7662b8f2295e6fa32940053a5995147e649621145825ed235d36644061d","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52286","feedbackHash":"dacc15c80de36b5e711f43bf8488bae6c6bf301ee4a2356d25661ee1316486ef","nodeKey":"audit_flow","submissionHash":"61b8840634f855ffb9c49429c45de06dc39fff9ee2e5192551490a18f8a61fd6","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51305","feedbackHash":"bc8e339540904b36d2becfef8986f7a6b09f4aed2737ea9ff553e39b4bc70986","nodeKey":"audit_judge","submissionHash":"e9db7bff93d4998c7cd4a4b2d3a84c0837d038068ead3b37579e2433cedc0747","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51435","feedbackHash":"a9b8c033bd9d6f2a6f4014e3b3238f877bba16c5c7646d74ec6aab69ae481407","nodeKey":"audit_math","submissionHash":"a7e31114c445b3f3c8bd2e23b69e1e9bb32ba18738ebc6bbc4c3a1a1159f00aa","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51333","feedbackHash":"e23c34c56ecb923e5731903a786e852be6c96856104c0440a9d13c5c6841157e","nodeKey":"audit_permissions","submissionHash":"0edcb968687dc3d6119c39217bfd0eddde5255f0a0cac1a6bb625af1f3a4ce20","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52274","feedbackHash":"efa87f508aaefc10953840fe7fca0ae5ee13ddaa378a26612da074d22e186729","nodeKey":"build_contract_project","submissionHash":"4c44d6a0342975b18845d700fe902b4d832111b6af60b1fe5688b84c242a8fcc","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52278","feedbackHash":"8df7afde7686a2a99a6c7200bee573d205b9620e76ef6fe2a714f005fefb4d57","nodeKey":"manifest","submissionHash":"e71fbabc3d8c816159d04aa45d0c17c947db69807e6cea467d2d9c1d43222e5f","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51238","feedbackHash":"8d16199bb07053ee14e7c89b1b9aa93b49debbf6dc06a7a79fdb6f851a3b5405","nodeKey":"write_foundry_tests","submissionHash":"96da2894c0c3ae5d746273207d2081cc46001e551bf213b39e2aad3dfb47ea39","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"374cf550f98c9989d7cabf51a50864c2b56f4518035a6964eb946821d62c4297","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"f9a12c57a094ca8d","findings":[],"hash":"0c23b7662b8f2295e6fa32940053a5995147e649621145825ed235d36644061d","nodeId":"4dee2ced-249a-4168-ae2f-cb2daf5de7dd","outcome":"completed","summary":"The review is complete. `.imd-findings.json` holds an empty findings list and eight coverage rows, and the working tree is otherwise clean.\n\n**Result: no defects found in the economics area.** SwarmBrain is a 15-line contract: an unmodified OpenZeppelin v5.1.0 ERC20 whose constructor mints 10^27 base units to the deployer and exposes nothing else. I verified the five vendored OpenZeppelin files are byte-identical to the upstream v5.1.0 tag.\n\n**What I checked against each guide**\n\n- **Economic Security.** No oracle, external call, or ETH path exists. Transfers carry no fee, burn, tax, rebase, blacklist, or pause. Zero-address receiver and spender revert, zero-value transfers succeed, and transfers of the full supply and of supply plus one behave as ERC-20 requires.\n- **Invariant.** Total supply is written only by the constructor. The compiled ABI contains only the standard ERC-20 functions plus one constant getter, and the runtime has no DELEGATECALL, CALLCODE, or SELFDESTRUCT. Balance conservation held across the project's 256-run invariant fuzz and my own scratch probes. The 10/80/10 launch split divides 10^27 with zero remainder.\n- **Flow Gap.** A scratch test drove the launch flows: factory to distributor to claimant, factory to a PoolManager-style sync/settle, pool paying a trader, and trader selling back. Every leg moved the exact amount and the supply never changed. The token has no hooks or callbacks, so nothing re-enters mid-flow.\n\n**Coverage.** All three entry points (approve, transfer, transferFrom) are marked `holds`, with five extra rows for the supply invariants, the sentinel and compliance checks, the vendored-library integrity check, and the aderyn large-literal lead. That lead is cosmetic: the literal evaluates to exactly the brief's supply.\n\n**Not run.** The protected launch harness needs v4-core and launch-library sources that are not in this tree, so I could not execute it here. No launch.json exists yet, which is expected before the manifest step. Known ERC-20 properties the README already documents, such as the approve ordering race and tokens sent to the contract's own address being unrecoverable, are self-inflicted and not defects.","treeHash":null,"usage":{"cachedInputTokens":504856,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":13826,"runtime":"claude","turns":26,"wallClockMs":199279}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"41f7c1458e1278ad","findings":[],"hash":"0edcb968687dc3d6119c39217bfd0eddde5255f0a0cac1a6bb625af1f3a4ce20","nodeId":"ac1e68ec-d792-497b-a109-3ae095edac28","outcome":"completed","summary":"Review complete. No defects found in the permissions area, and the findings file is written.\n\n**Result:** `.imd-findings.json` holds an empty findings list and eight coverage rows. All three listed entry points are marked `holds`, with rows added for the constructor, the hidden-selector check, the vendored-library check, the fixed-supply invariant, and the one trust assumption.\n\n**What I checked, per guide**\n\n- **Access Control.** The permission map is empty by construction. There is no owner, role, modifier, initializer, proxy or recipient override. The constructor takes no arguments, is nonpayable, and mints the full supply once to msg.sender. The compiled selector table is exactly the ERC-20 set plus the supply constant. A scratch probe confirmed that 24 privileged-style selectors, empty calldata and value-bearing calls all revert, and that the factory cannot pull a holder's balance without allowance.\n- **Asymmetry.** `transfer` and `transferFrom` both route through the same `_transfer` and `_update`, so balance writes mirror exactly. The only difference is `_spendAllowance`, which applies to every caller including the deployer and to self-transferFrom. Allowance writes come from one function with one validation shape. No admin variants exist to diff against.\n- **Trust Gap.** With no privileged actor and no economic formula in the token, none of the four seams has a surface. The only trust is that the factory holds the whole supply after construction, which is the launch design and confers no token-level power.\n\n**Supporting evidence**\n\n- The vendored OpenZeppelin files byte-compare identical to the upstream v5.1.0 archive, whose hash matches DEPENDENCIES.md, so the base `_update` and `_spendAllowance` carry no hidden logic.\n- The existing suite passes on this tree: 27 tests including fuzz and the stateful invariant run. The runtime opcode scan for DELEGATECALL, CALLCODE and SELFDESTRUCT also passes.\n- The aderyn large-literal line is stylistic. The literal evaluates to 10^27, matching the brief and README.\n\n**Not covered.** Nothing in my area was left unreached. The launch-harness behaviour against a real Uniswap v4 pool is the verifier's protected test, which I read but did not execute since its dependencies are not vendored here. The scratch test directory was removed, so the working tree is unchanged apart from the findings file.","treeHash":null,"usage":{"cachedInputTokens":575195,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":11382,"runtime":"claude","turns":27,"wallClockMs":179054}},{"artifacts":[],"attempt":1,"bundleHash":"a9d574ffa9b8ba107e1c416f2302d5a560adf8c7144750dc2171fd407319164f","device":"7d2db8d9021f8063","findings":[],"hash":"4c44d6a0342975b18845d700fe902b4d832111b6af60b1fe5688b84c242a8fcc","nodeId":"75064e59-d15e-41e3-a575-a681374a46f7","outcome":"completed","summary":"Implemented SwarmBrain (BRAIN): 1,000,000,000 tokens with 18 decimals, minted once to the deployer.\n\nDependencies are vendored for offline builds. Deployment assumptions and operational responsibilities are documented in README.md.\n\nVerified: `forge build`, all 27 tests, and `forge fmt --check` pass, including a clean offline build and test run.","treeHash":"f2c2980d72fbbb07bc4cff834285694396224f87","usage":{"cachedInputTokens":329204,"inputTokens":45954,"model":"gpt-6.1-sol","outputTokens":9145,"runtime":"codex","turns":4,"wallClockMs":172243}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fcb71e606c933181","findings":[{"citation":"resolved","description":"SwarmBrain inherits OpenZeppelin v5.1.0 ERC20 unchanged (vendored files verified byte-identical to the v5.1.0 tag). approve(spender, value) overwrites the allowance rather than adjusting it, so an owner who lowers a non-zero allowance can be front-run by the spender, who spends the old allowance and then the new one. This is the behaviour of the ERC-20 standard the brief asks for, not a departure from it, and README.md already tells holders to revoke to zero first. It is recorded here as a trust assumption for holders so the judge has it on file; no code change is proposed and it does not affect the launch flows (factory, distributor and pool manager never rely on reducing a live allowance). Not a defect against the requested design.","line":9,"path":"src/SwarmBrain.sol","reproduction":"State: owner O holds >=150 BRAIN and has called approve(S, 100). O then submits approve(S, 50) intending to reduce. Sequence: (1) S front-runs with transferFrom(O, S, 100) -> succeeds, allowance 0. (2) O's approve(S, 50) lands -> allowance 50. (3) S calls transferFrom(O, S, 50) -> succeeds. Expected by a naive owner: S can take at most 100. Actual: S takes 150. Reproduced in test/scratch/Review.t.sol test_allowanceRaceIsStandardBehaviour (passes, i.e. the behaviour is exactly standard ERC-20).","severity":"info","snippet":"contract SwarmBrain is ERC20 {","title":"Inherited ERC-20 approve() has the standard allowance-change race (documented, by design)"}],"hash":"61b8840634f855ffb9c49429c45de06dc39fff9ee2e5192551490a18f8a61fd6","nodeId":"c77ff26d-2cd1-4c26-9f22-1dcdd52bf208","outcome":"completed","summary":"The review is complete and the findings file is written and validated. Final recap follows.\n\n**Outcome: no defects found in the assigned area.** SwarmBrain is a 15-line fixed-supply token that inherits OpenZeppelin ERC20 without overriding anything, and every path I traced through the Execution Trace, Periphery and First Principles checklists behaves as a standard ERC-20 should.\n\nWhat I verified:\n- **Periphery:** fetched the OpenZeppelin v5.1.0 tag and diffed it against the five vendored files. All are byte-identical, so the inherited transfer, allowance and mint logic is upstream's.\n- **Execution trace:** traced approve, transfer and transferFrom through the inherited internals. Zero-address paths revert, insufficient balance and allowance revert with state intact, finite allowances decrement exactly, and max allowance is never touched.\n- **First principles and launch flow:** the constructor mints exactly 10^27 once to the contract deployer, which is the factory under CREATE2, not the transaction origin. A scratch test reproduced the full launch split, distributor claims and pool-manager pull/pay, all delivering exact amounts with supply unchanged.\n- **Access surface:** the ABI exposes only the three listed state-changing functions. There is no fallback, so every admin-style selector the protected test tries reverts. The runtime bytecode contains no call, create, delegatecall or selfdestruct opcodes.\n- **Tooling:** the project's 27 tests pass, including the invariant suite. The aderyn large-literal lead is a style note only.\n\nWhat is in `.imd-findings.json`:\n- One informational entry recording the standard ERC-20 allowance race, reproduced concretely. It is inherent to the design the brief requests and already documented in the README, so it proposes no change.\n- Eleven coverage rows: the three entry points, the constructor, the supply and conservation invariants, the vendored periphery, the bytecode scan, the protected launch floor, the manifest expectations, and the static-analysis lead.\n\nNothing was left unreached. The scratch test lives under `test/scratch/`, which the assignment allows, and no tracked file was modified.","treeHash":null,"usage":{"cachedInputTokens":604624,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":13761,"runtime":"claude","turns":25,"wallClockMs":191558}},{"artifacts":[],"attempt":1,"bundleHash":"023e6b5f57bf12da8f2bc74125718f6fbd9be940bf01c020f576b4d933a6f054","device":"97c4e9eb9244090f","findings":[],"hash":"96da2894c0c3ae5d746273207d2081cc46001e551bf213b39e2aad3dfb47ea39","nodeId":"8ffae262-0236-47d8-a71c-9c4a240262f9","outcome":"completed","summary":"Added 15 edge-case and fuzz tests, plus invariants covering balances, supply, allowances, and rejected-call rollback across random sequences.\n\n`forge build` and `forge test` pass: 43 tests, no failures or skips. No defects found. Only two new files under `test/` were added.","treeHash":"2bab9b3782935d4ce7d33587136821a178938eeb","usage":{"cachedInputTokens":293661,"inputTokens":60930,"model":"gpt-6.1-sol","outputTokens":8800,"runtime":"codex","turns":3,"wallClockMs":152480}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"5fdca4f96f37a80d","findings":[],"hash":"a7e31114c445b3f3c8bd2e23b69e1e9bb32ba18738ebc6bbc4c3a1a1159f00aa","nodeId":"19867b43-1c2a-4334-bc92-88bdaf00cbd8","outcome":"completed","summary":"The review is complete. The findings file at the repository root holds an empty findings list and seven coverage rows. The tree is otherwise unchanged.\n\n**Result: no defects in the assigned area.** SwarmBrain is a 15-line contract inheriting an unmodified OpenZeppelin v5.1.0 ERC-20 and minting a fixed supply once in the constructor. There is no division, fee, scale conversion, cast, external call, payable path or bytes decoding for the Math Precision, Boundary or Numerical Gap checklists to bite on.\n\nWhat I verified:\n\n- **Vendored library integrity.** All five OpenZeppelin files under `lib/` hash byte-for-byte to upstream v5.1.0, so the audited arithmetic is the published one.\n- **Supply constant.** The aderyn \"large numeric literal\" lead resolves to a correct compile-time constant equal to one billion times ten to the eighteenth, matching `decimals()` and far below the uint128 ceiling. Not a defect.\n- **Arithmetic paths.** The only checked operation is the constructor's supply add from zero. The unchecked balance and allowance subtractions each sit behind an explicit less-than revert, and the unchecked receiver add cannot overflow because balances always sum to the fixed supply.\n- **Edge inputs.** A scratch suite of 20 tests covered zero, exact-supply, supply-plus-one, max-uint and max-minus-one amounts and allowances, self-transfers, full merges, zero-address sender and receiver, truncated calldata, dirty address bits, and value sent to non-payable functions. All behaved as specified. The two expectation mismatches were my own error-selector guess, and both calls still reverted without moving anything.\n- **Launch flow rounding.** The supply divides exactly by ten thousand, so the swarm and pool shares the harness computes carry no dust.\n- **Existing suite.** The project's 27 tests, including fuzz and the 256-run invariant, pass under forge 1.8.3.\n\nCoverage rows mark all three ABI entry points as holding, plus four invariant and boundary rows. Nothing in my area was left unreached. The scratch directory was removed since no finding needed a proof.","treeHash":null,"usage":{"cachedInputTokens":535085,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":11094,"runtime":"claude","turns":23,"wallClockMs":165581}},{"artifacts":[],"attempt":1,"bundleHash":"df633356385ab1b61d42e00c1f248037f97e4df3e99dbbc3c25e121a9ad18535","device":"990f3cfeaa0e6c9a","findings":[],"hash":"e71fbabc3d8c816159d04aa45d0c17c947db69807e6cea467d2d9c1d43222e5f","nodeId":"72783ded-b977-4756-90bb-f6ee725a21b8","outcome":"completed","summary":"Created [launch.json](/home/imd6/.identitymd/work/1c6c6b49-7306-490a-b71f-2db55db3f4bc/72783ded-b977-4756-90bb-f6ee725a21b8/launch.json) matching the accepted SwarmBrain constructor, supply, pool, and exact economics.\n\n`forge build` passed. `forge test` passed all 27 tests. Only `launch.json` changed.","treeHash":"7aab06076a74a8269a17ec7db94dc52702c3df6b","usage":{"cachedInputTokens":122150,"inputTokens":29871,"model":"gpt-6.1-sol","outputTokens":1483,"runtime":"codex","turns":3,"wallClockMs":32709}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"4576f670afa0131d","findings":[],"hash":"e9db7bff93d4998c7cd4a4b2d3a84c0837d038068ead3b37579e2433cedc0747","nodeId":"4473449a-e73c-4589-9dd7-77aa399b5545","outcome":"completed","summary":"The review is complete. The findings file in the repository root holds an empty findings list and a seven-row coverage record. No source file was changed, and the scratch copy of the protected test I used was removed.\n\n**Outcome: no defects.** SwarmBrain is an unmodified OpenZeppelin v5.1.0 ERC-20 with an argument-free constructor that mints the full supply to the deployer. There is no owner, mint, burn, pause, fee or blacklist path.\n\n**The one specialist finding was dropped.** The audit_flow note about the approve allowance race reproduces, but it is the standard ERC-20 behaviour the brief asks for and is documented in the README. It is not a defect, so it does not open a revision. Its reasoning is recorded on the approve coverage row.\n\n**What I verified myself:**\n- All three entry points trace to the vendored v5.1.0 code with the expected revert paths and exact-amount transfers.\n- The vendored library differs from the box's v5.7.0 mirror only by documented upstream edits, with no nested git directories.\n- The runtime bytecode disassembles to zero DELEGATECALL, CALLCODE, SELFDESTRUCT, CREATE or external-call opcodes, well within size limits.\n- The manifest matches the tree: correct kind, empty constructor arguments, supply equal to the minted constant, no odd-length hex.\n- The project's own 43 tests, including fuzz and invariant suites, pass offline.\n\n**One limit to note.** The protected admission test could not run here because it imports the network's v4-core and factory harness, which this tree does not carry. Every check it makes was traced by hand instead.","treeHash":null,"usage":{"cachedInputTokens":423652,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":5407,"runtime":"claude","turns":8,"wallClockMs":90280}}],"verification":[{"checks":[{"durationMs":1462,"exitCode":0,"name":"build","output":"Compiling 31 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.31s\nCompiler run successful!\n","passed":true},{"durationMs":1384,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 26 tests for test/SwarmBrain.t.sol:SwarmBrainTest\n[PASS] testFuzz_DelegatedTransfer(uint256,uint256) (runs: 1000, μ: 163212, ~: 165282)\nLogs:\n  Bound result 594543170953747509458971937\n  Bound result 13485\n\n[PASS] testFuzz_RevertOverdraw(uint256) (runs: 1000, μ: 69158, ~: 69485)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129639972\n\n[PASS] testFuzz_TransferConservesSupply(uint256) (runs: 1000, μ: 174886, ~: 175456)\nLogs:\n  Bound result 5108\n\n[PASS] test_ApproveReplacesAllowanceAndCanRevoke() (gas: 157799)\n[PASS] test_ConstructorEmitsMintEvent() (gas: 22487)\n[PASS] test_DeployerCannotSpendHolderBalanceWithoutApproval() (gas: 157902)\n[PASS] test_EntireSupplyCanMove() (gas: 161764)\n[PASS] test_FactoryReceivesEntireSupply() (gas: 214342)\n[PASS] test_LaunchStyleFlowsDeliverExactAmounts() (gas: 391576)\n[PASS] test_MetadataAndInitialSupply() (gas: 84178)\n[PASS] test_NativeCurrencyTransferReverts() (gas: 42707)\n[PASS] test_RevertApproveZeroSpender() (gas: 37651)\n[PASS] test_RevertInsufficientBalanceLeavesStateIntact() (gas: 119982)\n[PASS] test_RevertTransferFromAboveAllowance() (gas: 115774)\n[PASS] test_RevertTransferFromInsufficientBalanceRollsBackAllowance() (gas: 121677)\n[PASS] test_RevertTransferFromToZeroRollsBackAllowance() (gas: 114090)\n[PASS] test_RevertTransferFromWithoutApproval() (gas: 57801)\n[PASS] test_RevertTransferToZero() (gas: 47663)\n[PASS] test_RuntimeHasNoForbiddenOpcodesAndFitsSizeLimit() (gas: 787538)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51530)\n[PASS] test_TransferFromSpendsExactAllowance() (gas: 241884)\n[PASS] test_TransferReturnsTrueAndEmitsEvent() (gas: 91561)\n[PASS] test_UnlimitedAllowanceRemainsUnchanged() (gas: 133625)\n[PASS] test_UnsupportedAdminAndMintCallsRevert() (gas: 778504)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73453)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 66177)\nSuite result: ok. 26 passed; 0 failed; 0 skipped; finished in 30.73ms (98.73ms CPU time)\n\nRan 1 test for test/SwarmBrain.invariant.t.sol:SwarmBrainInvariantTest\n[PASS] invariant_SupplyIsFixedAndAllBalancesAreConserved() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| BrainHandler | approve      | 5380  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| BrainHandler | transfer     | 5487  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| BrainHandler | transferFrom | 5517  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000\n  Bound result 373\n  Bound result 4739\n  Bound result 0\n  Bound result 4163\n  Bound result 1946\n  Bound result 255\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2422\n  Bound result 4862\n  Bound result 100\n  Bound result 3420\n  Bound result 96\n  Bound result 654\n  Bound result 0\n  Bound result 96\n  Bound result 247592732140630570053311181\n  Bound result 60\n  Bound result 0\n  Bound result 3572\n  Bound result 521\n  Bound result 586\n  Bound result 60\n  Bound result 202\n  Bound result 4759\n  Bound result 0\n  Bound result 183\n  Bound result 0\n  Bound result 715\n  Bound result 306293596641859392396114\n  Bound result 0\n  Bound result 0\n  Bound result 1067146701341848949057220\n  Bound result 5569\n  Bound result 178868589196747324864353787\n  Bound result 0\n  Bound result 69076259643549029170268193\n  Bound result 3321\n  Bound result 40\n  Bound result 0\n  Bound result 229\n  Bound result 100\n  Bound result 1799\n  Bound result 3999\n  Bound result 39669738385195747673474793\n  Bound result 255\n  Bound result 81008941\n  Bound result 9\n  Bound result 11\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.29s (1.28s CPU time)\n\nRan 2 test suites in 1.29s (1.32s CPU time): 27 tests passed, 0 failed, 0 skipped (27 total tests)\n","passed":true},{"durationMs":42,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SwarmBrain.approve(address,uint256)\",\"SwarmBrain.transfer(address,uint256)\",\"SwarmBrain.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":20,\"README.md\":84,\"foundry.toml\":21,\"src/SwarmBrain.sol\":15,\"test/SwarmBrain.invariant.t.sol\":81,\"test/SwarmBrain.t.sol\":319},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":752,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":297,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/SwarmBrain.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"4c44d6a0342975b18845d700fe902b4d832111b6af60b1fe5688b84c242a8fcc","verifiedTreeHash":"f2c2980d72fbbb07bc4cff834285694396224f87","verifierVersion":"0.1.0+327e1e9f"},{"checks":[{"durationMs":1599,"exitCode":0,"name":"build","output":"Compiling 33 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.50s\nCompiler run successful!\n","passed":true},{"durationMs":5111,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 15 tests for test/SwarmBrain.edges.t.sol:SwarmBrainEdgeTest\n[PASS] testFuzz_AboveAllowanceRevertsWithoutStateChange(uint256,uint256) (runs: 1000, μ: 133280, ~: 133887)\nLogs:\n  Bound result 18303\n  Bound result 61678357398080765210293718086378416697372618187842506566286863523773954249004\n\n[PASS] testFuzz_ApprovalIsIsolatedByOwnerAndSpender(uint256,uint256,uint256,uint256) (runs: 1000, μ: 366195, ~: 368866)\nLogs:\n  Bound result 16629\n\n[PASS] testFuzz_BalanceFailureRestoresFiniteAllowance(uint256,uint256) (runs: 1000, μ: 206696, ~: 207409)\nLogs:\n  Bound result 18\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639922\n\n[PASS] test_ApprovalBeforeFundingSurvivesFailedSpend() (gas: 257702)\n[PASS] test_DelegatedSelfTransferConsumesApprovalWithoutChangingBalance() (gas: 156009)\n[PASS] test_InfiniteApprovalCanBeRevokedAndReplaced() (gas: 313201)\n[PASS] test_MaximumMinusOneApprovalIsFinite() (gas: 147463)\n[PASS] test_MaximumTransferFromDoesNotConsumeInfiniteApprovalOnFailure() (gas: 128940)\n[PASS] test_MaximumTransferRevertsWithBalanceError() (gas: 65381)\n[PASS] test_OneBaseUnitIsTransferredWithoutRounding() (gas: 218007)\n[PASS] test_OwnerUsingTransferFromStillNeedsApproval() (gas: 179383)\n[PASS] test_SelfTransferStillRequiresEnoughBalance() (gas: 105418)\n[PASS] test_TransferToTokenContractPreservesSupply() (gas: 81788)\n[PASS] test_ZeroApprovalCannotTargetZeroSpender() (gas: 48012)\n[PASS] test_ZeroRecipientIsRejectedEvenForZeroValue() (gas: 146084)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 51.95ms (129.84ms CPU time)\n\nRan 26 tests for test/SwarmBrain.t.sol:SwarmBrainTest\n[PASS] testFuzz_DelegatedTransfer(uint256,uint256) (runs: 1000, μ: 163111, ~: 165282)\nLogs:\n  Bound result 14877741028230260\n  Bound result 11585588467493962\n\n[PASS] testFuzz_RevertOverdraw(uint256) (runs: 1000, μ: 69135, ~: 69485)\nLogs:\n  Bound result 95976404028180633061843728351052\n\n[PASS] testFuzz_TransferConservesSupply(uint256) (runs: 1000, μ: 174791, ~: 175456)\nLogs:\n  Bound result 750\n\n[PASS] test_ApproveReplacesAllowanceAndCanRevoke() (gas: 157799)\n[PASS] test_ConstructorEmitsMintEvent() (gas: 22487)\n[PASS] test_DeployerCannotSpendHolderBalanceWithoutApproval() (gas: 157902)\n[PASS] test_EntireSupplyCanMove() (gas: 161764)\n[PASS] test_FactoryReceivesEntireSupply() (gas: 214342)\n[PASS] test_LaunchStyleFlowsDeliverExactAmounts() (gas: 391576)\n[PASS] test_MetadataAndInitialSupply() (gas: 84178)\n[PASS] test_NativeCurrencyTransferReverts() (gas: 42707)\n[PASS] test_RevertApproveZeroSpender() (gas: 37651)\n[PASS] test_RevertInsufficientBalanceLeavesStateIntact() (gas: 119982)\n[PASS] test_RevertTransferFromAboveAllowance() (gas: 115774)\n[PASS] test_RevertTransferFromInsufficientBalanceRollsBackAllowance() (gas: 121677)\n[PASS] test_RevertTransferFromToZeroRollsBackAllowance() (gas: 114090)\n[PASS] test_RevertTransferFromWithoutApproval() (gas: 57801)\n[PASS] test_RevertTransferToZero() (gas: 47663)\n[PASS] test_RuntimeHasNoForbiddenOpcodesAndFitsSizeLimit() (gas: 787538)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51530)\n[PASS] test_TransferFromSpendsExactAllowance() (gas: 241884)\n[PASS] test_TransferReturnsTrueAndEmitsEvent() (gas: 91561)\n[PASS] test_UnlimitedAllowanceRemainsUnchanged() (gas: 133625)\n[PASS] test_UnsupportedAdminAndMintCallsRevert() (gas: 778504)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73453)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 66177)\nSuite result: ok. 26 passed; 0 failed; 0 skipped; finished in 52.01ms (159.49ms CPU time)\n\nRan 1 test for test/SwarmBrain.invariant.t.sol:SwarmBrainInvariantTest\n[PASS] invariant_SupplyIsFixedAndAllBalancesAreConserved() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| BrainHandler | approve      | 5352  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| BrainHandler | transfer     | 5517  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| BrainHandler | transferFrom | 5515  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 18\n  Bound result 1\n  Bound result 249999999999999999999999981\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 200136775809191747629218368\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 561\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 9\n  Bound result 0\n  Bound result 0\n  Bound result 249999999999999999999999447\n  Bound result 42000000000000000000\n  Bound result 0\n  Bound result 0\n  Bound result 763600052\n  Bound result 7\n  Bound result 1000000000\n  Bound result 182792270\n  Bound result 3\n  Bound result 6\n  Bound result 0\n  Bound result 0\n  Bound result 882\n  Bound result 8\n  Bound result 0\n  Bound result 225298190517420162984998977\n  Bound result 0\n  Bound result 191947011810083866043965671\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.23s (1.22s CPU time)\n\nRan 1 test for test/SwarmBrain.model.invariant.t.sol:SwarmBrainModelInvariantTest\n[PASS]\nSwarmBrainModelInvariantTest invariants:\n[PASS] invariant_AllAllowancesMatchApprovalsAndSuccessfulSpends\n[PASS] invariant_BalancesMatchSubmittedTransfersAndSupplyIsConserved\n[PASS] invariant_MetadataIsStable\n SwarmBrainModelInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------------+---------------------+-------+---------+----------╮\n| Contract          | Selector            | Calls | Reverts | Discards |\n+======================================================================+\n| BrainModelHandler | approve             | 1837  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| BrainModelHandler | rejectAllowance     | 1737  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| BrainModelHandler | rejectBalance       | 1805  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| BrainModelHandler | rejectOverdraw      | 1899  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| BrainModelHandler | rejectZeroRecipient | 1798  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| BrainModelHandler | rejectZeroSpender   | 1857  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| BrainModelHandler | roundTrip           | 1839  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| BrainModelHandler | transfer            | 1843  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| BrainModelHandler | transferFrom        | 1769  | 0       | 0        |\n╰-------------------+---------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 127\n  Bound result 24576\n  Bound result 8850505286855534239051052082543396107810748268658482383671939764090\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639985\n  Bound result 32210661830389871\n  Bound result 250000000000000000000000000\n  Bound result 464\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129644997\n  Bound result 1000000000000000000000000000\n  Bound result 1543\n  Bound result 255\n  Bound result 0\n  Bound result 250000000000000000000000001\n  Bound result 250000000000000000000000003\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129644032\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.02s (5.02s CPU time)\n\nRan 4 test suites in 5.02s (6.35s CPU time): 43 tests passed, 0 failed, 0 skipped (43 total tests)\n","passed":true},{"durationMs":40,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SwarmBrain.approve(address,uint256)\",\"SwarmBrain.transfer(address,uint256)\",\"SwarmBrain.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":20,\"README.md\":84,\"foundry.toml\":21,\"src/SwarmBrain.sol\":15,\"test/SwarmBrain.edges.t.sol\":220,\"test/SwarmBrain.invariant.t.sol\":81,\"test/SwarmBrain.model.invariant.t.sol\":229,\"test/SwarmBrain.t.sol\":319},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"96da2894c0c3ae5d746273207d2081cc46001e551bf213b39e2aad3dfb47ea39","verifiedTreeHash":"2bab9b3782935d4ce7d33587136821a178938eeb","verifierVersion":"0.1.0+327e1e9f"},{"checks":[{"durationMs":1216,"exitCode":0,"name":"build","output":"Compiling 31 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.11s\nCompiler run successful!\n","passed":true},{"durationMs":1346,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 26 tests for test/SwarmBrain.t.sol:SwarmBrainTest\n[PASS] testFuzz_DelegatedTransfer(uint256,uint256) (runs: 1000, μ: 163202, ~: 165282)\nLogs:\n  Bound result 999999999999999999999999997\n  Bound result 285594350882457814266615922\n\n[PASS] testFuzz_RevertOverdraw(uint256) (runs: 1000, μ: 69154, ~: 69485)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129639975\n\n[PASS] testFuzz_TransferConservesSupply(uint256) (runs: 1000, μ: 174808, ~: 175480)\nLogs:\n  Bound result 40\n\n[PASS] test_ApproveReplacesAllowanceAndCanRevoke() (gas: 157799)\n[PASS] test_ConstructorEmitsMintEvent() (gas: 22487)\n[PASS] test_DeployerCannotSpendHolderBalanceWithoutApproval() (gas: 157902)\n[PASS] test_EntireSupplyCanMove() (gas: 161764)\n[PASS] test_FactoryReceivesEntireSupply() (gas: 214342)\n[PASS] test_LaunchStyleFlowsDeliverExactAmounts() (gas: 391576)\n[PASS] test_MetadataAndInitialSupply() (gas: 84178)\n[PASS] test_NativeCurrencyTransferReverts() (gas: 42707)\n[PASS] test_RevertApproveZeroSpender() (gas: 37651)\n[PASS] test_RevertInsufficientBalanceLeavesStateIntact() (gas: 119982)\n[PASS] test_RevertTransferFromAboveAllowance() (gas: 115774)\n[PASS] test_RevertTransferFromInsufficientBalanceRollsBackAllowance() (gas: 121677)\n[PASS] test_RevertTransferFromToZeroRollsBackAllowance() (gas: 114090)\n[PASS] test_RevertTransferFromWithoutApproval() (gas: 57801)\n[PASS] test_RevertTransferToZero() (gas: 47663)\n[PASS] test_RuntimeHasNoForbiddenOpcodesAndFitsSizeLimit() (gas: 787538)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51530)\n[PASS] test_TransferFromSpendsExactAllowance() (gas: 241884)\n[PASS] test_TransferReturnsTrueAndEmitsEvent() (gas: 91561)\n[PASS] test_UnlimitedAllowanceRemainsUnchanged() (gas: 133625)\n[PASS] test_UnsupportedAdminAndMintCallsRevert() (gas: 778504)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73453)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 66177)\nSuite result: ok. 26 passed; 0 failed; 0 skipped; finished in 23.68ms (78.55ms CPU time)\n\nRan 1 test for test/SwarmBrain.invariant.t.sol:SwarmBrainInvariantTest\n[PASS] invariant_SupplyIsFixedAndAllBalancesAreConserved() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| BrainHandler | approve      | 5504  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| BrainHandler | transfer     | 5404  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| BrainHandler | transferFrom | 5476  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 40\n  Bound result 0\n  Bound result 244\n  Bound result 0\n  Bound result 0\n  Bound result 24576\n  Bound result 3205\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 1393\n  Bound result 239\n  Bound result 4096\n  Bound result 46070233419921501373727642\n  Bound result 0\n  Bound result 4912\n  Bound result 51\n  Bound result 495790613314\n  Bound result 1128\n  Bound result 10\n  Bound result 13166000778320207988866213\n  Bound result 6\n  Bound result 262\n  Bound result 96\n  Bound result 1\n  Bound result 1009\n  Bound result 1052\n  Bound result 0\n  Bound result 40\n  Bound result 72291297405274871912285923\n  Bound result 1055511620682134039\n  Bound result 15659201415026210620888383\n  Bound result 127\n  Bound result 4197\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.26s (1.26s CPU time)\n\nRan 2 test suites in 1.26s (1.28s CPU time): 27 tests passed, 0 failed, 0 skipped (27 total tests)\n","passed":true},{"durationMs":47,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SwarmBrain.approve(address,uint256)\",\"SwarmBrain.transfer(address,uint256)\",\"SwarmBrain.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":20,\"README.md\":84,\"foundry.toml\":21,\"launch.json\":24,\"src/SwarmBrain.sol\":15,\"test/SwarmBrain.invariant.t.sol\":81,\"test/SwarmBrain.t.sol\":319},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"e71fbabc3d8c816159d04aa45d0c17c947db69807e6cea467d2d9c1d43222e5f","verifiedTreeHash":"7aab06076a74a8269a17ec7db94dc52702c3df6b","verifierVersion":"0.1.0+327e1e9f"}]}