{"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":"d4be256a-701e-496f-a055-e3c3f44177c3","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"c5048399de1a9e69ca8fd2af42d523573cdeb57aeea4dc578c8f842619bd1c49","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":"828d45ded7a3166dcb05d429c8e4a7664080ee2eedbfbdeeed1c60501de70044","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":"88221878ca424a458faa46f5c355d5d00822fbd6d731bb3fc6ff7741caf14382","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":"43a1cdd7d88e0ce1b74821f575ee0b1c5d9e0206dce5d22c2d1b200b5fa96695","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":"751322010c6b095fda3f44ad197da563cff74b328786a3d93fc2df9befd370e1","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":"a6ae114d66a48a1578eab4f18097139f1723acd7e37cbd62bc412824e8de4cd7","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"816fe39c7efd64504a19175b0f4dd9186d61069f37a22684c90358a18c60bddc","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"816fe39c7efd64504a19175b0f4dd9186d61069f37a22684c90358a18c60bddc","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"a29b76113b9d306503a959f85aac91af126318248fbef9789e90cea7c34cd956","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"07e2c92aca3ecd4fbe1f4de48eb4a34cc04d15b8cabf232e5cdcb42093ba7633","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"ab3f8f2aa4e7f3b3ada558c0dcf522ba733ca3df3b1da92c707a0fe305816d5f","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"ab3f8f2aa4e7f3b3ada558c0dcf522ba733ca3df3b1da92c707a0fe305816d5f","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: swornbyswarm (SWORN).\nToken name: swornbyswarm\nToken symbol: SWORN\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.\nWhat it does: sworn.sites.imd.fun\nx.com/swornbyswarm","parentJobId":null,"planHash":"f80125b6bdbc5184e547029e8f70e98ad28434f7f1f076f978c21ed7163b07db","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"d4be256a-701e-496f-a055-e3c3f44177c3","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2571-swornbyswarm"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51874","feedbackHash":"eb83a0f0f024141492ec7b976d995c8b42ec2139ff5c199c3cc867d4845b8238","nodeKey":"audit_economics","submissionHash":"c5048399de1a9e69ca8fd2af42d523573cdeb57aeea4dc578c8f842619bd1c49","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51198","feedbackHash":"d26f8631fe9d1178c245e15f785e667536e57e0fe4d5c4a8ef3a1bc96e7dce03","nodeKey":"audit_flow","submissionHash":"828d45ded7a3166dcb05d429c8e4a7664080ee2eedbfbdeeed1c60501de70044","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51891","feedbackHash":"1ce39d614824dd9dde93b865340941bccf44689c0d48877ec5a0c52fe6a82750","nodeKey":"audit_judge","submissionHash":"88221878ca424a458faa46f5c355d5d00822fbd6d731bb3fc6ff7741caf14382","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51024","feedbackHash":"590698aeab08466955b1d3a313a7c74ae2b3f8158dc21c841e00bc3787da7437","nodeKey":"audit_math","submissionHash":"43a1cdd7d88e0ce1b74821f575ee0b1c5d9e0206dce5d22c2d1b200b5fa96695","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51023","feedbackHash":"ecf87ec186525689da5ffac53d376961c79256844bbc3965f1cf03d135ed224a","nodeKey":"audit_permissions","submissionHash":"751322010c6b095fda3f44ad197da563cff74b328786a3d93fc2df9befd370e1","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51325","feedbackHash":"64cc9a2bf3c177ad5adbf413c84b5d7d7c698c5234eb1954a349e782c949030e","nodeKey":"build_contract_project","submissionHash":"a6ae114d66a48a1578eab4f18097139f1723acd7e37cbd62bc412824e8de4cd7","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52121","feedbackHash":"1a1ee3b7d072a7264d87e8a64cacdd02d12c225886e97a693fe787de40fb5571","nodeKey":"manifest","submissionHash":"a29b76113b9d306503a959f85aac91af126318248fbef9789e90cea7c34cd956","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52100","feedbackHash":"e36435f3b8bd43c611de281abd5760f7b47cf4b318cae811cec10487aba369ed","nodeKey":"write_foundry_tests","submissionHash":"07e2c92aca3ecd4fbe1f4de48eb4a34cc04d15b8cabf232e5cdcb42093ba7633","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"7afbbc99f111d22a8053bc3b589f4deb1fe16683a598f665a94ddd5090a79d1e","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"d89f54414d83762014bd67801e198699daed866615fc028df2f6aab4f15f9759","device":"9ea940b94f2f7e92","findings":[],"hash":"07e2c92aca3ecd4fbe1f4de48eb4a34cc04d15b8cabf232e5cdcb42093ba7633","nodeId":"6e1d748d-a21f-4d0a-b0b9-7eeb7ff091cb","outcome":"completed","summary":"Added 20 tests under `test/` covering failure paths, allowance boundaries, fuzz properties, and ledger invariants across 32,768 random calls.\n\n`forge build` and all 51 tests pass with the required seed. No reproducible defects found. Existing files and configuration remain unchanged.","treeHash":"28f60d31419b4cb2039bc717feb0494a45e5474b","usage":{"cachedInputTokens":726144,"inputTokens":63361,"model":"gpt-6-astra","outputTokens":16210,"runtime":"codex","turns":6,"wallClockMs":579499}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e6de8d4c6cf97551","findings":[],"hash":"43a1cdd7d88e0ce1b74821f575ee0b1c5d9e0206dce5d22c2d1b200b5fa96695","nodeId":"c9d365b9-af5c-4038-a9e1-86f7da6692af","outcome":"completed","summary":"The review is complete. The findings file is in place and the working tree has no other changes, since the findings file is excluded by the repository's own git configuration and my scratch tests are removed.\n\n**Result: no defects found in the assigned area.** The file `.imd-findings.json` holds an empty findings list and seven coverage rows, one for each of the three listed entry points plus the constructor and three invariants.\n\n**What the token is.** SwornToken is a 17-line contract that inherits the unmodified OpenZeppelin v5.4.0 ERC20 and mints a constant supply to the deployer in its constructor. The vendored ERC20 file's hash matches the one recorded in dependencies.json. The compiled ABI exposes only the three standard state-changing functions.\n\n**What I checked against the Math Precision, Boundary and Numerical Gap guides.**\n- **Supply constant.** The literal flagged by aderyn is a compile-time constant equal to exactly 10^27, well inside uint256. The single checked addition in the mint cannot overflow. A CREATE2 probe confirms the supply lands on the immediate deployer, which is the factory in the launch, not the factory's caller.\n- **Transfer arithmetic.** The inherited update path has one checked comparison and three unchecked operations. Each is safe because the sum of balances always equals the fixed supply. I confirmed with concrete values that transferring one over the balance, the full balance, exactly type(uint256).max, one wei, zero, and to self all behave exactly with no wrap.\n- **Allowance boundary.** Only an allowance of exactly type(uint256).max is left undecremented. An allowance of max minus one decrements normally. An allowance one short of the amount reverts and leaves the allowance intact. An allowance above the balance is still bounded by the balance check.\n- **Launch splits.** The 10, 70 and 20 percent shares and the swarm's 2 and 8 percent of 10^27 divide with zero remainder, and the token has no division, fee or rounding at all, so every launch flow moves exactly what it requests.\n- **Boundary enumeration.** There are no external calls, no payable, receive or fallback functions, no bytes decoding, no sentinel-address branches and no downcasts, so the Boundary guide's call-site list is empty by construction. Sending ether or an unknown selector reverts.\n- **Numerical seams.** With no formulas there is nothing for precision, boundary and invariant to combine on. A 512-run fuzz over three holders plus the project's own stateful invariant kept the balance sum exact.\n\n**Verification runs.** The project's 31 tests pass. My 19 scratch tests, written under test/scratch and now deleted, all pass against the current code. Slither and aderyn reported nothing at low impact or above.\n\n**Outside my area, briefly.** The contract has no owner, pause, blacklist, mint or burn entry point, so there are no trust assumptions to document. The static-analysis lead was style only and is not reported as a finding.","treeHash":null,"usage":{"cachedInputTokens":465304,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":11229,"runtime":"claude","turns":21,"wallClockMs":171029}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"ca080fd306399669","findings":[],"hash":"751322010c6b095fda3f44ad197da563cff74b328786a3d93fc2df9befd370e1","nodeId":"b236a93c-bbab-4737-a06a-31078660a54c","outcome":"completed","summary":"Review complete. No defects found in the SwornToken permission model, and the findings file is written with an empty findings list and a full coverage record.\n\n**What the code is.** `src/SwornToken.sol` is a 17-line contract that inherits OpenZeppelin v5.4.0 ERC20 unchanged and mints one billion tokens with 18 decimals to the constructor's caller. The compiled ABI exposes only approve, transfer and transferFrom as state-changing functions. There is no owner, role, modifier, initializer, proxy, receive, fallback, delegatecall or selfdestruct.\n\n**What I checked against the Access Control, Asymmetry and Trust Gap guides:**\n- Access control: no privileged surface exists to misguard or escalate. The only trust assumption is that the constructor's caller, the launch factory, receives the whole supply, which is the requested design.\n- Asymmetry: the approve and transferFrom pair write the same allowance slot in mirror directions. transfer and transferFrom share one update path, so no caller class, including the deployer, gets a different formula or skipped check.\n- Trust gap: no economics, pricing or caller-dependent branch exists in the token, so launch flows to the distributor, pool manager and traders all move exact amounts.\n- Supply chain: the vendored OpenZeppelin files hash-match the pins in dependencies.json, so no inherited path was tampered with.\n- Static analysis leads: slither reported nothing. The aderyn large-literal note is the supply constant, which I confirmed equals 10^27 base units.\n\n**Verification run.** The project builds cleanly on Solidity 0.8.26, and all 31 tests pass, including the 512-run fuzz tests and a 128-run by 64-depth invariant suite with zero reverts.\n\n**Not reported on purpose.** The ERC-20 approve front-running race is a property of the standard the brief asked for, is documented in the README, and is not a defect of this code.\n\nThe deliverable is `.imd-findings.json` at the repository root with zero findings and six coverage rows, one for each of the three listed entry points plus three invariant rows. No other file was changed.","treeHash":null,"usage":{"cachedInputTokens":520914,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":8401,"runtime":"claude","turns":20,"wallClockMs":147189}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"29ea8835baa3dfe1","findings":[{"citation":"resolved","description":"dependencies.json records per-file SHA-256 digests of the forge-std v1.9.7 archive, and README.md:124 says \"Upstream library source is kept unchanged.\" Seven vendored forge-std files do not hash to their recorded digests: src/StdAssertions.sol, src/StdJson.sol, src/StdToml.sol, src/Vm.sol, src/console.sol, src/interfaces/IERC7540.sol and src/interfaces/IMulticall3.sol. I downloaded the recorded source (archive sha256 45157353…ee94, which matches) and diffed it. Every difference is whitespace or line wrapping, i.e. forge fmt was run over lib/; with all whitespace stripped the files are identical. Impact is limited to test tooling and provenance metadata. The production dependency is fine: all six OpenZeppelin v5.4.0 files are byte-identical to upstream (archive b89829be…50d1), so SwornToken bytecode is unaffected. Fix: restore the seven files from the archive, or recompute their digests and correct the README sentence. Also keep lib/ out of formatting, e.g. [fmt] ignore = [\"lib/**\"], since forge fmt --check currently passes only because lib/ was reformatted.","line":26,"path":"dependencies.json","reproduction":"Input/state: the tree as committed (426f085). Run: node -e \"const c=require(\\\"crypto\\\"),fs=require(\\\"fs\\\");console.log(c.createHash(\\\"sha256\\\").update(fs.readFileSync(\\\"lib/forge-std/src/StdAssertions.sol\\\")).digest(\\\"hex\\\"))\". Expected (dependencies.json:26): d4c89eec70d267dec6188461fbc74d3dc8c47e518d176a23417533a232ed9780. Actual: 3fbf4a025b4fc94eaca4c38c1f3dacb37bee10f12ee81994cfaf365ac1ce7384. Upstream lines 480-484 (assertApproxEqAbs(uint256,uint256,uint256,string) split across five lines) appear as a single line in the vendored copy. The same holds for Vm.sol (expected 9068805b…, actual a1b1c829…) and console.sol (expected 896c5a5a…, actual a2e632dc…).","severity":"info","snippet":"      \"src/StdAssertions.sol\": \"d4c89eec70d267dec6188461fbc74d3dc8c47e518d176a23417533a232ed9780\",","title":"dependencies.json per-file digests do not match 7 vendored forge-std files (forge fmt reformatted lib/), contradicting the README provenance claim"}],"hash":"828d45ded7a3166dcb05d429c8e4a7664080ee2eedbfbdeeed1c60501de70044","nodeId":"5c879878-0047-4bcc-99cf-7fa3716bd2b4","outcome":"completed","summary":"I found no defects in the token's control flow. The only finding is an info-level provenance issue in test tooling. Results are in `.imd-findings.json`: 1 finding and 7 coverage rows, including all 3 listed entry points. No repository file was changed, and I removed the `out/`, `cache/` and `test/scratch/` directories my runs created.\n\n**What was reviewed:** `src/SwornToken.sol` is a 17-line contract built on OpenZeppelin's standard ERC20 v5.4.0, unmodified. It has no constructor arguments, no owner, no fees, no overrides and no external calls, and its only mint is in the constructor. The compiled ABI exposes only the standard ERC-20 functions plus the `INITIAL_SUPPLY` constant.\n\n**Coverage, using the Execution Trace, Periphery and First Principles guides:**\n- **`transfer`: holds.** It rejects the zero address as recipient and checks the balance before debiting, which makes the unchecked subtraction safe. It moves exactly the requested amount. Sending to yourself or sending zero leaves balances unchanged.\n- **`transferFrom`: holds.** The allowance is spent before the transfer, but if the transfer fails the whole call reverts and nothing changes; I tested this directly. An unlimited (`type(uint256).max`) allowance is never decreased, as intended. A zero-value call with no allowance moves nothing.\n- **`approve`: holds.** It replaces the existing allowance and rejects the zero address as spender. The usual ERC-20 risk when changing an allowance is documented in the README, so I did not count it as a defect.\n- **Supply and launch flows: hold.** Total supply stays at exactly 10^27 base units (1 billion tokens with 18 decimals). Every launch transfer arrives in full because there is no fee or burn. Sending ETH and calling a `mint` function both revert.\n- **Vendored OpenZeppelin files: hold.** I downloaded the upstream v5.4.0 release and all six files used are byte-identical to it.\n\n**Finding 1 (info), `dependencies.json:26`:** seven vendored forge-std files don't match the SHA-256 hashes recorded in `dependencies.json`. Example: `StdAssertions.sol` is recorded as `d4c89eec…` but hashes to `3fbf4a02…`. I diffed them against upstream forge-std v1.9.7 and every difference is whitespace from `forge fmt` being run over `lib/`. This contradicts the README's statement that \"Upstream library source is kept unchanged.\" It only affects test tooling and the provenance records, not the deployed token. The fix is to restore those files from the archive (or update the hashes) and exclude `lib/` from formatting.\n\n**Checks run:** the repo's 31 tests all pass, including the invariant test with 8,192 random calls, and `forge fmt --check` passes. Six extra edge-case tests of my own also passed: transferring to yourself, a failed transfer leaving no partial changes, unlimited allowance, zero-value transfers, ETH and mint calls being rejected, and supply staying constant under fuzzing.\n\n**Not run:** the two supplied protected checks need IMD's separate launch harness, which isn't in this tree. Slither and Mythril weren't run. Aderyn's \"large numeric literal\" warning on line 12 is just the supply constant, which is correct (10^27), so I didn't report it.","treeHash":null,"usage":{"cachedInputTokens":620643,"inputTokens":30,"model":"claude-opus-5-5","outputTokens":11153,"runtime":"claude","turns":15,"wallClockMs":113609}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"934ef01306a3cc89","findings":[{"citation":"resolved","description":"Merged from audit_flow (its only finding); reproduced and confirmed. dependencies.json records per-file SHA-256 digests for the vendored forge-std v1.9.7 sources, and README.md line 124 states 'Upstream library source is kept unchanged.' Seven vendored forge-std files do not hash to their recorded digests: src/StdAssertions.sol, src/StdJson.sol, src/StdToml.sol, src/Vm.sol, src/console.sol, src/interfaces/IERC7540.sol and src/interfaces/IMulticall3.sol. I downloaded the archive recorded at dependencies.json line 19; its SHA-256 is 45157353ab49eab01d294565866731e599b32401757229689ee459aa26b7ee94, matching line 20, and the upstream copies of the seven files hash to the recorded digests. Diffing each against the vendored copy with all whitespace removed yields no difference, so the only change is line wrapping consistent with `forge fmt` having been run over lib/ (e.g. StdAssertions.sol lines 480-484: a five-line function header in upstream is one line in the vendored copy). Impact: provenance metadata and the README sentence are wrong for test-only tooling. There is no effect on deployed code: all six vendored OpenZeppelin v5.4.0 files (ERC20.sol, IERC20.sol, IERC20Metadata.sol, draft-IERC6093.sol, Context.sol, LICENSE) hash exactly to their recorded digests, so SwornToken's compiled bytecode is unaffected. Fix: restore the seven forge-std files from the archive (and add `[fmt] ignore = [\"lib/**\"]` to foundry.toml so `forge fmt` leaves vendored code alone), or recompute the seven digests and drop the 'kept unchanged' claim from README.md.","line":26,"path":"dependencies.json","reproduction":"State: the committed tree (HEAD bac9492). Run from the repository root: python3 -I -c \"import hashlib;print(hashlib.sha256(open('lib/forge-std/src/StdAssertions.sol','rb').read()).hexdigest())\". Expected (dependencies.json line 26): d4c89eec70d267dec6188461fbc74d3dc8c47e518d176a23417533a232ed9780. Actual: 3fbf4a025b4fc94eaca4c38c1f3dacb37bee10f12ee81994cfaf365ac1ce7384. Likewise Vm.sol expected 9068805b59ac... actual a1b1c82924ae..., console.sol expected 896c5a5a5c23... actual a2e632dcbc78..., StdJson.sol expected 0211b47e93db... actual 61bbf9b3219f..., StdToml.sol expected de3fb35af79a... actual 187d2f0cc66b..., IERC7540.sol expected c6a7854c86bf... actual 3ae3eec94e3e..., IMulticall3.sol expected 6620d9c5ea2e... actual 1b63ca78b27d.... Every other entry in dependencies.json (29 forge-std files and all 6 OpenZeppelin files) matches. Download https://codeload.github.com/foundry-rs/forge-std/tar.gz/refs/tags/v1.9.7 (sha256 45157353...ee94, matches line 20), extract, and `diff <(tr -d ' \\n\\t' < upstream/src/StdAssertions.sol) <(tr -d ' \\n\\t' < lib/forge-std/src/StdAssertions.sol)` prints nothing: whitespace-only difference.","severity":"info","snippet":"      \"src/StdAssertions.sol\": \"d4c89eec70d267dec6188461fbc74d3dc8c47e518d176a23417533a232ed9780\",","title":"dependencies.json per-file digests do not match 7 vendored forge-std files (forge fmt reformatted lib/), contradicting the README provenance claim"}],"hash":"88221878ca424a458faa46f5c355d5d00822fbd6d731bb3fc6ff7741caf14382","nodeId":"441a1176-e61c-4287-906d-df3b5805aca8","outcome":"completed","summary":"The review is complete and the findings file is written and valid.\n\n**Outcome:** one finding kept, at info severity, and no defects in the token itself.\n\n- **Token code holds.** `src/SwornToken.sol` is a 17-line, unmodified OpenZeppelin v5.4.0 ERC-20 with a parameterless constructor that mints the manifest supply once to the factory. The vendored OpenZeppelin sources hash exactly to their recorded upstream digests. All three entry points, approve, transfer and transferFrom, are the stock implementations, so every launch flow moves exactly what it says and no privileged path exists. Build passes, all 51 project tests pass, and bytecode sizes are far under the deployment limits.\n- **Kept, merged from the flow specialist (info):** seven vendored forge-std files do not match the per-file digests in `dependencies.json`, contradicting the README's \"kept unchanged\" claim. I reproduced it by hashing the tree and by downloading the recorded archive, whose checksum matches. The differences are whitespace-only line wrapping from `forge fmt`, and they affect test tooling only, never deployed code.\n- **Dropped:** the aderyn large-numeric-literal lead. The literal evaluates to exactly the manifest supply at compile time.\n- **Manifest check:** launch.json uses only schema keys, lists empty constructor arguments matching the constructor, states the exact minted supply, and has lowercase addresses.\n\nThe coverage record answers all three listed entry points as holds, plus three invariant rows. No proof test was needed since nothing is high or critical, and no files other than `.imd-findings.json` were changed.","treeHash":null,"usage":{"cachedInputTokens":296087,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":8269,"runtime":"claude","turns":19,"wallClockMs":121279}},{"artifacts":[],"attempt":1,"bundleHash":"89cb31caa0ad649d64e533b9efc5b9812ee404d81ebc0ebd94b349debb44c40e","device":"bdd9b74dce66953d","findings":[],"hash":"a29b76113b9d306503a959f85aac91af126318248fbef9789e90cea7c34cd956","nodeId":"e636c9af-beba-4d1e-9867-c2732da4f28a","outcome":"completed","summary":"Done. I wrote launch.json for the swornbyswarm (SWORN) custom token launch. It is the only new or changed file in the tree.\n\n**What the manifest says**\n- Kind is custom_token. The token contract is SwornToken with name swornbyswarm, symbol SWORN and 18 decimals.\n- Constructor arguments are an empty list. The accepted constructor takes no parameters, which the compiled ABI confirms.\n- Total supply is the constructor's single mint to msg.sender, one billion tokens in minor units, written as a decimal string.\n- The contracts list is empty. The accepted tree ships no application contracts, so none are named.\n- Pool and economics are copied exactly as the launch gives them: IMD pair address, fee 12500, tick spacing 60, the one-to-one provenance price, and the requester's verbatim economics object.\n- Notes describe the token's fixed supply, lack of privileged functions and exact transfers, at 721 characters.\n\n**Verification**\n- A schema sanity check passed: only the six allowed top-level keys, supply equals 10^27, economics matches the job's object byte for byte, and names fit the length limits.\n- forge build compiled cleanly with Solidity 0.8.26.\n- forge test with the verifier's fuzz seed passed all 31 tests across 3 suites.\n- git status shows launch.json as the sole untracked addition. No other file was touched.","treeHash":"49d383644a2c27683933303effe0e89dee1d1dfe","usage":{"cachedInputTokens":131922,"inputTokens":130,"model":"claude-fable-5-1","outputTokens":2516,"runtime":"claude","turns":8,"wallClockMs":60524}},{"artifacts":[],"attempt":1,"bundleHash":"d14af7ae348f5697819d5e3461a4b4ad26b224c3b0463d721d85872b8d3d46a7","device":"8bc60a43db2b0b29","findings":[],"hash":"a6ae114d66a48a1578eab4f18097139f1723acd7e37cbd62bc412824e8de4cd7","nodeId":"08f5e049-8fc9-4de5-9187-e861ecf5bce4","outcome":"completed","summary":"Implemented [SwornToken](src/SwornToken.sol): 1 billion SWORN, 18 decimals, minted once to the deployer.\n\nDependencies are vendored; [README](README.md) documents assumptions, deployment parameters, and operations.\n\nValidation passed:\n\n- `forge build`\n- `forge test`: 31 tests, using the supplied fuzz seed\n- `forge fmt --check`","treeHash":"0499d5bd5a7348f609a1b8fc4a20914bb5ee82c0","usage":{"cachedInputTokens":315648,"inputTokens":43048,"model":"gpt-6-astra","outputTokens":13153,"runtime":"codex","turns":4,"wallClockMs":352258}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fb26479062458645","findings":[],"hash":"c5048399de1a9e69ca8fd2af42d523573cdeb57aeea4dc578c8f842619bd1c49","nodeId":"d31d26ab-9af7-4bd9-a746-765c4758a0e0","outcome":"completed","summary":"The review is complete. No defects were found in the assigned area, and the findings file reports a clean result with full coverage.\n\n**Outcome.** The token in `src/SwornToken.sol` is an unmodified OpenZeppelin v5.4.0 ERC-20 with a single constructor mint of 10^27 base units to the deployer. Nothing in it touches value flows, prices, fees, or allocations, so the Economic Security, Invariant and Flow Gap failure modes have no code to attach to.\n\n**What I verified.**\n- All three entry points (approve, transfer, transferFrom) trace to the stock OpenZeppelin paths: zero-address rejection, atomic reverts, exact amount movement, unchanged total supply.\n- The compiled ABI exposes exactly ten selectors with no mint, burn, fallback or receive, so supply cannot change after construction from any caller.\n- The five vendored OpenZeppelin files hash identically to the files fetched from the upstream v5.4.0 tag and to the pins in dependencies.json. The lib tree holds nothing extra.\n- An opcode scan of the compiled runtime using the protected test's reachability rule finds no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- The repository's 31 tests pass with the README's fuzz seed, including the invariant suite over 8192 calls with zero reverts. Formatting check passes.\n- Launch flows (swarm share, claims, single-sided seed, buy and sell) all reduce to plain transfers that deliver exactly the requested amount. The README's economics values agree with this launch's own.\n\n**Leads dismissed.** The aderyn large-numeric-literal line at `src/SwornToken.sol:12` is the intended 10^27 supply constant. The standard ERC-20 allowance-replacement race is inherent to the brief's requested behaviour and already documented in the README, so it is noted in coverage but not reported as a defect.\n\n**Not reached.** A live Uniswap v4 PoolManager seed and swap could not be executed here because v4-core and the harness's LaunchLiquidity source are not in this tree. Only the token side of those flows was exercised, which for a vanilla ERC-20 is the whole of what the token contributes.\n\nThe output is `.imd-findings.json` at the repository root with an empty findings list and twelve coverage rows. No repository files were changed.","treeHash":null,"usage":{"cachedInputTokens":294212,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":10892,"runtime":"claude","turns":21,"wallClockMs":158279}}],"verification":[{"checks":[{"durationMs":2001,"exitCode":0,"name":"build","output":"Compiling 30 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.90s\nCompiler run successful!\n","passed":true},{"durationMs":10771,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/LaunchCompatibility.t.sol:LaunchCompatibilityTest\n[PASS] test_create2MintsEverythingToFactory() (gas: 399477)\n[PASS] test_distributionClaimsAndPoolTransfersAreExact() (gas: 695748)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 92.04ms (895.20µs CPU time)\n\nRan 28 tests for test/SwornToken.t.sol:SwornTokenTest\n[PASS] testFuzz_approvalAndDelegatedTransfer(uint256,uint256) (runs: 512, μ: 159901, ~: 161976)\nLogs:\n  Bound result 99\n\n[PASS] testFuzz_transferAboveAllowanceAlwaysReverts(uint256,uint256) (runs: 512, μ: 123525, ~: 123805)\nLogs:\n  Bound result 3338\n  Bound result 16794\n\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256,uint256) (runs: 512, μ: 127534, ~: 128161)\nLogs:\n  Bound result 561959792963805766897670284\n  Bound result 395548023618431218055567542484783341796327\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 512, μ: 92925, ~: 93148)\nLogs:\n  Bound result 920550548765813572762703659\n\n[PASS] test_allowanceCanBeReplacedAndRevoked() (gas: 174292)\n[PASS] test_approveEmitsEventAndDoesNotMoveTokens() (gas: 88778)\n[PASS] test_approveZeroSpenderReverts() (gas: 37640)\n[PASS] test_constructorEmitsOneMintEvent() (gas: 9664)\n[PASS] test_deployerCannotSpendHoldersTokensWithoutApproval() (gas: 95425)\n[PASS] test_exactAllowanceCanBeSpentOnlyOnce() (gas: 162121)\n[PASS] test_fullSupplyCanBeTransferredAndReturned() (gas: 149232)\n[PASS] test_maximumAllowanceIsNotDecremented() (gas: 173073)\n[PASS] test_metadataAndInitialSupply() (gas: 107650)\n[PASS] test_nativeCurrencyAndUnknownCallsAreRejected() (gas: 64637)\n[PASS] test_selfTransferPreservesBalance() (gas: 51410)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 35908)\n[PASS] test_transferBeyondBalanceRevertsWithoutMovingTokens() (gas: 110091)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 91549)\n[PASS] test_transferFromOverAllowanceRevertsAtomically() (gas: 116097)\n[PASS] test_transferFromOverBalanceRestoresAllowance() (gas: 126510)\n[PASS] test_transferFromSpendsOnlyCallersAllowanceAndEmitsEvent() (gas: 224823)\n[PASS] test_transferFromToSelfConsumesAllowanceButPreservesBalance() (gas: 103614)\n[PASS] test_transferFromToZeroRestoresAllowance() (gas: 114457)\n[PASS] test_transferFromZeroAddressReverts() (gas: 41997)\n[PASS] test_transferToZeroRevertsEvenForZeroAmount() (gas: 71948)\n[PASS] test_unsupportedMintAdminAndBurnCallsRevert() (gas: 852198)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 73367)\n[PASS] test_zeroTransferFromNeedsNoAllowance() (gas: 68867)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 92.06ms (254.44ms CPU time)\n\nRan 18 tests for test/SwornToken.adversarial.t.sol:SwornTokenAdversarialTest\n[PASS] testFuzz_approvalsAreScopedToBothOwnerAndSpender(uint256,uint256) (runs: 1000, μ: 392513, ~: 392417)\nLogs:\n  Bound result 168642951478290525044315503\n  Bound result 348510915822394950171375139854944525543153119282295982330697064556949\n\n[PASS] testFuzz_delegatedSelfTransferPreservesBalanceAndSpendsAllowance(uint256,uint256,uint256) (runs: 1000, μ: 194853, ~: 195970)\nLogs:\n  Bound result 11982\n  Bound result 1658\n\n[PASS] testFuzz_failedDelegatedTransferRestoresFiniteAllowance(uint256,uint256,uint256) (runs: 1000, μ: 276284, ~: 276710)\nLogs:\n  Bound result 20\n  Bound result 200000000000000000000000000\n  Bound result 115792089237316195423570985008687907853269984665640364039457584007913129639944\n\n[PASS] testFuzz_finiteAllowanceCanBeConsumedInChunksOnlyOnce(uint256,uint256) (runs: 1000, μ: 287852, ~: 290266)\nLogs:\n  Bound result 18177\n  Bound result 18\n\n[PASS] testFuzz_reapprovalReplacesRemainingAllowanceAndIsIdempotent(uint256,uint256,uint256) (runs: 1000, μ: 244173, ~: 245651)\nLogs:\n  Bound result 141379372565\n\n[PASS] testFuzz_transferAndDelegatedReturnAreAnExactRoundTrip(uint256,uint256) (runs: 1000, μ: 289290, ~: 288395)\nLogs:\n  Bound result 7350\n  Bound result 640\n\n[PASS] testFuzz_zeroRecipientFailureRestoresAllowance(uint256,uint256) (runs: 1000, μ: 128498, ~: 129087)\nLogs:\n  Bound result 1000000000\n\n[PASS] test_allowanceOnAnotherTokenDoesNotAuthorizeSpending() (gas: 127393)\n[PASS] test_delegatedSelfTransferAboveBalanceRevertsAndRestoresAllowance() (gas: 174818)\n[PASS] test_holderUsingTransferFromNeedsItsOwnAllowance() (gas: 318501)\n[PASS] test_infiniteApprovalDoesNotAllowZeroRecipientEvenForZeroAmount() (gas: 122057)\n[PASS] test_maximumDelegatedTransferStillRequiresBalance() (gas: 129340)\n[PASS] test_maximumFiniteAllowanceIsDecrementedOnEverySpend() (gas: 240371)\n[PASS] test_maximumTransferCannotOverflowOrCreateTokens() (gas: 65251)\n[PASS] test_oneBaseUnitCanBeSpentAndReturned() (gas: 266322)\n[PASS] test_spenderCanBeTheRecipientWithoutReceivingExtraAuthority() (gas: 181225)\n[PASS] test_unlimitedApprovalCanBeDowngradedAndRevokedAfterUse() (gas: 300266)\n[PASS] test_zeroApprovalToZeroSpenderStillReverts() (gas: 110324)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 93.56ms (638.69ms CPU time)\n\nRan 1 test for test/SwornToken.invariant.t.sol:SwornTokenInvariantTest\n[PASS] invariant_supplyAndAllBalancesAreConserved() (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------------+--------------+-------+---------+----------╮\n| Contract          | Selector     | Calls | Reverts | Discards |\n+===============================================================+\n| SwornTokenHandler | approve      | 2781  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| SwornTokenHandler | transfer     | 2691  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| SwornTokenHandler | transferFrom | 2720  | 0       | 0        |\n╰-------------------+--------------+-------+---------+----------╯\n\nLogs:\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 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 0\n  Bound result 0\n  Bound result 4534\n  Bound result 15\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 11\n  Bound result 8\n  Bound result 0\n  Bound result 433\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 272996111042002\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 1622\n  Bound result 8\n  Bound result 4710\n  Bound result 7\n  Bound result 164921229390924\n  Bound result 10289758059\n  Bound result 3\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 690.71ms (689.30ms CPU time)\n\nRan 2 tests for test/SwornToken.ledger.invariant.t.sol:SwornTokenLedgerInvariantTest\n[PASS] invariant_supplyBalancesAllowancesAndMetadataMatchLedger() (runs: 256, calls: 32768, reverts: 0)\n\n╭--------------------+---------------------------------+-------+---------+----------╮\n| Contract           | Selector                        | Calls | Reverts | Discards |\n+===================================================================================+\n| SwornLedgerHandler | approve                         | 4169  | 0       | 0        |\n|--------------------+---------------------------------+-------+---------+----------|\n| SwornLedgerHandler | rejectPrivilegedCall            | 4150  | 0       | 0        |\n|--------------------+---------------------------------+-------+---------+----------|\n| SwornLedgerHandler | rejectTransferFromOverAllowance | 4071  | 0       | 0        |\n|--------------------+---------------------------------+-------+---------+----------|\n| SwornLedgerHandler | rejectTransferFromOverBalance   | 4092  | 0       | 0        |\n|--------------------+---------------------------------+-------+---------+----------|\n| SwornLedgerHandler | rejectTransferOverBalance       | 4055  | 0       | 0        |\n|--------------------+---------------------------------+-------+---------+----------|\n| SwornLedgerHandler | rejectZeroAddress               | 4054  | 0       | 0        |\n|--------------------+---------------------------------+-------+---------+----------|\n| SwornLedgerHandler | transfer                        | 4080  | 0       | 0        |\n|--------------------+---------------------------------+-------+---------+----------|\n| SwornLedgerHandler | transferFrom                    | 4097  | 0       | 0        |\n╰--------------------+---------------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 4\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639952\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129642065\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129641077\n  Bound result 115792089237316195423570985008687907853269984665640314039457584413291877452453\n  Bound result 88273796962438304479387169\n  Bound result 115792089237316195423570985008687907853269984665640402313377546446217609027103\n  Bound result 50657785992286192855667111\n  Bound result 869\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129645384\n  Bound result 11\n  Bound result 156450247566404346483159745992878339970653607695415962810149613823180734\n  Bound result 0\n  Bound result 1411\n  Bound result 115792089237316195423570985008687907853269984665640225765660621569608650254654\n  Bound result 115792089237316195423570985008687907853269984665640152313255546446217609028515\n  Bound result 7\n  Bound result 5\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129638951\n  Bound result 1064470259\n  Bound result 10493\n  Bound result 0\n  Bound result 10378454\n  Bound result 131\n  Bound result 115792089237316195423570985008687907853269984665639902313254546446217609042190\n  Bound result 31376552769910989143632881531051088967091720531948336491377401146489\n  Bound result 237562438342764116900716662\n  Bound result 115792089237316195423570985008687907853269984665639902313254546446217609040573\n  Bound result 1640331932832296507875713308563\n  Bound result 8425\n  Bound result 20000000000000000000\n  Bound result 2535\n  Bound result 115792089237316195423570985008687907853269984665640225765680621569608650242315\n  Bound result 10\n  Bound result 700000000000000000000000000\n  Bound result 115792089237316195423570985008687907853269984665640225765680621569608650242315\n  Bound result 0\n  Bound result 7\n  Bound result 86421349650442217818151086511223921391675147427601669367413462\n  Bound result 7281685720051543672971713777313895956368613347909506769577818552174325922234\n  Bound result 115792089237316195423570985008687907853269984665639902313234546446217609037613\n  Bound result 661726223037561695520602332\n  Bound result 115792089237316195423570985008687907853269984665639902313234546446217609037964\n  Bound result 115792089237316195423570985008687907853269984665639902313234546446217609037613\n  Bound result 115792089237316195423570985008687907853269984665639902313234546446217609045380\n  Bound result 4746\n  Bound result 9559\n  Bound result 2120\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129635205\n  Bound result 1270882670340828983334116389765677508314738886447430830587908739527643253106\n  Bound result 115792089237316195423570985008687907853269984665639902313234546446220123043057\n  Bound result 115792089237316195423570985008687907853269984665640225765680621569608650242283\n  Bound result 5\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129635825\n  Bound result 35615637136996\n  Bound result 10000000000000000000\n\n[PASS] test_ledgerTracksSpendingFailuresAndRevocation() (gas: 7473084)\nLogs:\n  Bound result 7\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 1\n  Bound result 1\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 10.67s (10.67s CPU time)\n\nRan 5 test suites in 10.67s (11.64s CPU time): 51 tests passed, 0 failed, 0 skipped (51 total tests)\n","passed":true},{"durationMs":43,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SwornToken.approve(address,uint256)\",\"SwornToken.transfer(address,uint256)\",\"SwornToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":134,\"dependencies.json\":54,\"foundry.toml\":19,\"remappings.txt\":2,\"src/SwornToken.sol\":17,\"test/LaunchCompatibility.t.sol\":78,\"test/SwornToken.adversarial.t.sol\":335,\"test/SwornToken.invariant.t.sol\":76,\"test/SwornToken.ledger.invariant.t.sol\":299,\"test/SwornToken.t.sol\":330},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"07e2c92aca3ecd4fbe1f4de48eb4a34cc04d15b8cabf232e5cdcb42093ba7633","verifiedTreeHash":"28f60d31419b4cb2039bc717feb0494a45e5474b","verifierVersion":"0.1.0+fa479356"},{"checks":[{"durationMs":2047,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.94s\nCompiler run successful!\n","passed":true},{"durationMs":1099,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/LaunchCompatibility.t.sol:LaunchCompatibilityTest\n[PASS] test_create2MintsEverythingToFactory() (gas: 399477)\n[PASS] test_distributionClaimsAndPoolTransfersAreExact() (gas: 695748)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 20.19ms (2.04ms CPU time)\n\nRan 28 tests for test/SwornToken.t.sol:SwornTokenTest\n[PASS] testFuzz_approvalAndDelegatedTransfer(uint256,uint256) (runs: 512, μ: 159631, ~: 161976)\nLogs:\n  Bound result 115150704\n\n[PASS] testFuzz_transferAboveAllowanceAlwaysReverts(uint256,uint256) (runs: 512, μ: 123441, ~: 123795)\nLogs:\n  Bound result 287613061697352848850933000\n  Bound result 712386938302647151264217704\n\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256,uint256) (runs: 512, μ: 127440, ~: 128153)\nLogs:\n  Bound result 287613061697352845351124126\n  Bound result 115792089237316195423570985008687907853269984665640276426395886655067893666513\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 512, μ: 92931, ~: 93142)\nLogs:\n  Bound result 39180982095\n\n[PASS] test_allowanceCanBeReplacedAndRevoked() (gas: 174292)\n[PASS] test_approveEmitsEventAndDoesNotMoveTokens() (gas: 88778)\n[PASS] test_approveZeroSpenderReverts() (gas: 37640)\n[PASS] test_constructorEmitsOneMintEvent() (gas: 9664)\n[PASS] test_deployerCannotSpendHoldersTokensWithoutApproval() (gas: 95425)\n[PASS] test_exactAllowanceCanBeSpentOnlyOnce() (gas: 162121)\n[PASS] test_fullSupplyCanBeTransferredAndReturned() (gas: 149232)\n[PASS] test_maximumAllowanceIsNotDecremented() (gas: 173073)\n[PASS] test_metadataAndInitialSupply() (gas: 107650)\n[PASS] test_nativeCurrencyAndUnknownCallsAreRejected() (gas: 64637)\n[PASS] test_selfTransferPreservesBalance() (gas: 51410)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 35908)\n[PASS] test_transferBeyondBalanceRevertsWithoutMovingTokens() (gas: 110091)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 91549)\n[PASS] test_transferFromOverAllowanceRevertsAtomically() (gas: 116097)\n[PASS] test_transferFromOverBalanceRestoresAllowance() (gas: 126510)\n[PASS] test_transferFromSpendsOnlyCallersAllowanceAndEmitsEvent() (gas: 224823)\n[PASS] test_transferFromToSelfConsumesAllowanceButPreservesBalance() (gas: 103614)\n[PASS] test_transferFromToZeroRestoresAllowance() (gas: 114457)\n[PASS] test_transferFromZeroAddressReverts() (gas: 41997)\n[PASS] test_transferToZeroRevertsEvenForZeroAmount() (gas: 71948)\n[PASS] test_unsupportedMintAdminAndBurnCallsRevert() (gas: 852198)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 73367)\n[PASS] test_zeroTransferFromNeedsNoAllowance() (gas: 68867)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 26.02ms (94.17ms CPU time)\n\nRan 1 test for test/SwornToken.invariant.t.sol:SwornTokenInvariantTest\n[PASS] invariant_supplyAndAllBalancesAreConserved() (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------------+--------------+-------+---------+----------╮\n| Contract          | Selector     | Calls | Reverts | Discards |\n+===============================================================+\n| SwornTokenHandler | approve      | 2781  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| SwornTokenHandler | transfer     | 2691  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| SwornTokenHandler | transferFrom | 2720  | 0       | 0        |\n╰-------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 18\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 18\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 9\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4485\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 6\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 272996111042002\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1556\n  Bound result 0\n  Bound result 4709\n  Bound result 1\n  Bound result 122886316349977\n  Bound result 10289758059\n  Bound result 4593\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 933.12ms (929.83ms CPU time)\n\nRan 3 test suites in 936.53ms (979.33ms CPU time): 31 tests passed, 0 failed, 0 skipped (31 total tests)\n","passed":true},{"durationMs":42,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SwornToken.approve(address,uint256)\",\"SwornToken.transfer(address,uint256)\",\"SwornToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":134,\"dependencies.json\":54,\"foundry.toml\":19,\"launch.json\":24,\"remappings.txt\":2,\"src/SwornToken.sol\":17,\"test/LaunchCompatibility.t.sol\":78,\"test/SwornToken.invariant.t.sol\":76,\"test/SwornToken.t.sol\":330},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"a29b76113b9d306503a959f85aac91af126318248fbef9789e90cea7c34cd956","verifiedTreeHash":"49d383644a2c27683933303effe0e89dee1d1dfe","verifierVersion":"0.1.0+fa479356"},{"checks":[{"durationMs":1286,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.20s\nCompiler run successful!\n","passed":true},{"durationMs":709,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/LaunchCompatibility.t.sol:LaunchCompatibilityTest\n[PASS] test_create2MintsEverythingToFactory() (gas: 399477)\n[PASS] test_distributionClaimsAndPoolTransfersAreExact() (gas: 695748)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 14.78ms (813.34µs CPU time)\n\nRan 28 tests for test/SwornToken.t.sol:SwornTokenTest\n[PASS] testFuzz_approvalAndDelegatedTransfer(uint256,uint256) (runs: 512, μ: 159631, ~: 161976)\nLogs:\n  Bound result 115150704\n\n[PASS] testFuzz_transferAboveAllowanceAlwaysReverts(uint256,uint256) (runs: 512, μ: 123441, ~: 123795)\nLogs:\n  Bound result 287613061697352848850933000\n  Bound result 712386938302647151264217704\n\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256,uint256) (runs: 512, μ: 127440, ~: 128153)\nLogs:\n  Bound result 3338\n  Bound result 16794\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 512, μ: 92931, ~: 93142)\nLogs:\n  Bound result 32\n\n[PASS] test_allowanceCanBeReplacedAndRevoked() (gas: 174292)\n[PASS] test_approveEmitsEventAndDoesNotMoveTokens() (gas: 88778)\n[PASS] test_approveZeroSpenderReverts() (gas: 37640)\n[PASS] test_constructorEmitsOneMintEvent() (gas: 9664)\n[PASS] test_deployerCannotSpendHoldersTokensWithoutApproval() (gas: 95425)\n[PASS] test_exactAllowanceCanBeSpentOnlyOnce() (gas: 162121)\n[PASS] test_fullSupplyCanBeTransferredAndReturned() (gas: 149232)\n[PASS] test_maximumAllowanceIsNotDecremented() (gas: 173073)\n[PASS] test_metadataAndInitialSupply() (gas: 107650)\n[PASS] test_nativeCurrencyAndUnknownCallsAreRejected() (gas: 64637)\n[PASS] test_selfTransferPreservesBalance() (gas: 51410)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 35908)\n[PASS] test_transferBeyondBalanceRevertsWithoutMovingTokens() (gas: 110091)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 91549)\n[PASS] test_transferFromOverAllowanceRevertsAtomically() (gas: 116097)\n[PASS] test_transferFromOverBalanceRestoresAllowance() (gas: 126510)\n[PASS] test_transferFromSpendsOnlyCallersAllowanceAndEmitsEvent() (gas: 224823)\n[PASS] test_transferFromToSelfConsumesAllowanceButPreservesBalance() (gas: 103614)\n[PASS] test_transferFromToZeroRestoresAllowance() (gas: 114457)\n[PASS] test_transferFromZeroAddressReverts() (gas: 41997)\n[PASS] test_transferToZeroRevertsEvenForZeroAmount() (gas: 71948)\n[PASS] test_unsupportedMintAdminAndBurnCallsRevert() (gas: 852198)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 73367)\n[PASS] test_zeroTransferFromNeedsNoAllowance() (gas: 68867)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 14.81ms (62.13ms CPU time)\n\nRan 1 test for test/SwornToken.invariant.t.sol:SwornTokenInvariantTest\n[PASS] invariant_supplyAndAllBalancesAreConserved() (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------------+--------------+-------+---------+----------╮\n| Contract          | Selector     | Calls | Reverts | Discards |\n+===============================================================+\n| SwornTokenHandler | approve      | 2781  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| SwornTokenHandler | transfer     | 2691  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| SwornTokenHandler | transferFrom | 2720  | 0       | 0        |\n╰-------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 18\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 18\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 9\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4485\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 6\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 272996111042002\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1556\n  Bound result 0\n  Bound result 4709\n  Bound result 1\n  Bound result 122886316349977\n  Bound result 10289758059\n  Bound result 4593\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 609.59ms (608.34ms CPU time)\n\nRan 3 test suites in 610.93ms (639.18ms CPU time): 31 tests passed, 0 failed, 0 skipped (31 total tests)\n","passed":true},{"durationMs":35,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SwornToken.approve(address,uint256)\",\"SwornToken.transfer(address,uint256)\",\"SwornToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":134,\"dependencies.json\":54,\"foundry.toml\":19,\"remappings.txt\":2,\"src/SwornToken.sol\":17,\"test/LaunchCompatibility.t.sol\":78,\"test/SwornToken.invariant.t.sol\":76,\"test/SwornToken.t.sol\":330},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":570,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":265,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/SwornToken.sol:12: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"a6ae114d66a48a1578eab4f18097139f1723acd7e37cbd62bc412824e8de4cd7","verifiedTreeHash":"0499d5bd5a7348f609a1b8fc4a20914bb5ee82c0","verifierVersion":"0.1.0+fa479356"}]}