{"assessments":[],"deployments":[{"attestationHash":"c93d5e0764f92af2711fec5e4323c15d6f873fa0cb49406fbf5aa52fe40cd4f0","chainId":1,"contracts":[{"address":"0xc67d3d403368aa7bfe995ec94c1c893440b165cf","blockNumber":26271523,"name":"SwornBySwarm","role":"token","txHash":"0x663bd7d88f642e2e1c6d149be7c48209a2b952f8300aa929495a2f2a98846fd5"},{"address":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000","blockNumber":26271523,"name":"PoolInitializationGuard","role":"hook","txHash":"0x663bd7d88f642e2e1c6d149be7c48209a2b952f8300aa929495a2f2a98846fd5"},{"address":"0x263c13ca0372e0067d7e665865c6782725dd1976","blockNumber":26271523,"name":"MerkleDistributor","role":"distributor","txHash":"0x663bd7d88f642e2e1c6d149be7c48209a2b952f8300aa929495a2f2a98846fd5"}],"id":"988ac357-c467-4bb2-8242-5bd4182aabe0","manifestHash":"34717debabec3ac19e03fa8aaf8b313b5099b2846f297afccf06ba96b2078e41","status":"live"}],"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":"17b438df-5446-41e7-b412-b2dda33b522b","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"c7d2201b1fb4643656ed71726e1029a0d80871802a418ef8d24f56875ad5f7be","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"dbac29904353002ef436f7e0488db8008a2ab96af969d3fe5554d0c6dffc8d8c","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"a6acd6fb6024d811d00102f61bf72833c5278ce698a790a43733ba4b79280110","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","subagents":4,"tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"a3918954b41152c22e6219baa1619e05567890959361c532bcd51abd2797081e","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"3eb17c9ce7ec7a8e718c2c844bc7824d432e5b33c590e56b370bb831b0ae754d","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"f64e894c9f5e9c99450751f1cab95cb1f36e48114ee5b6337cb1344d1f83947a","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":"438dc70fced1ed651516988cd7d5d4dcfc14281a6f86925239496c7b05129e41","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"14bf4dd420e04456d4dca9e2ad52cbb663d53d23c6b4a1b188770d1b76218f00","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","subagents":4,"tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","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.","parentJobId":null,"planHash":"65cb683778b6f50b89b50c93e9b84fb5ea6ef2f0b5c3a1619708a6174bb9a973","previousHash":"a063e5d8bdc8c547d339da4e22777c07bafaa44fad6edc2646b3e83e12e39a9b","projectId":"17b438df-5446-41e7-b412-b2dda33b522b","publication":{"commit":"7f27c192dd486d03da11c9b87e14f52c2c3e2e11","deliveredAt":"2026-10-25T18:35:11.517Z","repoUrl":"https://github.com/identity-md-launches/launch-2578-swornbyswarm"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":null,"snapshotHash":"e76a547041ed566ec88da187c8eb129a3ee1a960d21022a5313fc7ec196945d4","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"8f5dd532f3c81783422ee198c0f85d240129af852db4b552232b4ec3d7c0aea1","device":"95564acf8eeef549","findings":[],"hash":"14bf4dd420e04456d4dca9e2ad52cbb663d53d23c6b4a1b188770d1b76218f00","nodeId":"5a1b423e-9ceb-4781-a3d6-ba49c6075e2a","outcome":"completed","summary":"Added 20 boundary, failure-path, and fuzz tests; strengthened stateful invariants.\n\n`forge build` and `forge test` pass with the specified seed: 57 reported tests and 24,576 invariant calls.\n\nOnly `test/` changed. No implementation defects found.","treeHash":"3d783456e5c57a2dfbfe49ac7b5242c6fb4826de","usage":{"cachedInputTokens":889472,"inputTokens":69413,"model":"gpt-6-astra","outputTokens":15280,"runtime":"codex","turns":6,"wallClockMs":410322}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"30bcdea6dcb9ee40","findings":[],"hash":"3eb17c9ce7ec7a8e718c2c844bc7824d432e5b33c590e56b370bb831b0ae754d","nodeId":"241cbd85-9bdd-44a9-aacb-0a2de674ba56","outcome":"completed","summary":"The permissions audit of SwornBySwarm found no defects. The findings file holds an empty list and nine coverage rows, and no tracked file was changed.\n\n**What the token is.** One contract, `src/SwornBySwarm.sol`, inheriting the unmodified OpenZeppelin v5.0.2 ERC-20 with a single constructor mint to the deployer. It has no owner, roles, modifiers, overrides, constructor parameters, or payable paths.\n\n**Access Control pass.** The compiled ABI exposes exactly three state-changing functions, and each is scoped to the caller's own balance or allowance. The constructor hands out no role, so no privileged actor exists after deployment. Supply can only change through internal mint and burn paths that nothing external reaches. The existing suite's admin-selector probes and the deployer-cannot-move-holder test pass.\n\n**Trust Gap pass.** The whole behaviour rests on the vendored library, so I diffed all five vendored OpenZeppelin files against upstream v5.0.2 on GitHub. All are byte-identical. No sender or update hook is overridden, so no hidden caller class exists.\n\n**Asymmetry pass.** Transfer and transferFrom share one internal path with the same zero-address and balance checks. Approve and allowance spending mirror each other, with the documented unlimited-allowance exception. There is no fee, exemption list, or admin variant to diverge from the user path, so launch flows move exact amounts.\n\n**Other checks.** The runtime bytecode contains no DELEGATECALL, CALLCODE, SELFDESTRUCT or CALL. The aderyn large-literal lead evaluates to exactly 10^27 and is a style note only. Build, 37 tests and formatting all pass.\n\n**Not reached.** Nothing in my area was left unverified. The protected launch fixtures (v4 PoolManager, factory) are not in this tree, so the seed-and-swap path was reasoned from the absence of any transfer modification rather than executed.","treeHash":null,"usage":{"cachedInputTokens":426050,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":7483,"runtime":"claude","turns":21,"wallClockMs":139756}},{"artifacts":[],"attempt":1,"bundleHash":"8b70b0ac8d196fdf666d0bae9519fc95908767a73c269560125d702a96f654a8","device":"cfde00da2cfa88af","findings":[],"hash":"438dc70fced1ed651516988cd7d5d4dcfc14281a6f86925239496c7b05129e41","nodeId":"b51aae62-ef72-4db2-9e74-51b9150620d1","outcome":"completed","summary":"Created [launch.json](/home/imd4/.identitymd/work/17b438df-5446-41e7-b412-b2dda33b522b/b51aae62-ef72-4db2-9e74-51b9150620d1/launch.json) matching the accepted token, exact supply, constructor ABI, pool settings, and economics.\n\n`forge build` succeeded. All 37 local tests passed with the supplied fuzz seed. Only `launch.json` changed outside permitted scratch files.","treeHash":"e84bd67afc7f2bab71bbc58a2efbd907cbc9c6a4","usage":{"cachedInputTokens":222592,"inputTokens":25228,"model":"gpt-6-astra","outputTokens":2816,"runtime":"codex","turns":3,"wallClockMs":56225}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"6ed09c2eb1ff6aec","findings":[],"hash":"a3918954b41152c22e6219baa1619e05567890959361c532bcd51abd2797081e","nodeId":"83f9c3b6-9f4e-4506-940a-145e923251a5","outcome":"completed","summary":"I found no math defects in SwornBySwarm, so `.imd-findings.json` has an empty findings list plus a coverage record with one row per entry point and two invariant rows. The JSON is valid.\n\n**What I reviewed:** `src/SwornBySwarm.sol` is a plain OpenZeppelin v5.0 ERC20. Its constructor mints `1_000_000_000 * 10 ** 18` (1e27) once to the deployer. It has no fees, burns, owner, or functions of its own beyond that.\n\n**Math Precision guide:** nothing applies. The token and the OpenZeppelin ERC20 code it uses have no division, rounding, narrowing casts, shifts, bit masks, decimal conversions or rates. The supply constant is computed at compile time and equals exactly 1e27, and `decimals()` returns 18. The aderyn \"large numeric literal\" warning is about style only, and the value is correct.\n\n**Boundary and Numerical Gap guides:**\n- **Unchecked subtractions:** the two in `_update` and `_spendAllowance` each come after an explicit check that balance or allowance is at least the amount.\n- **Unchecked additions:** these can't overflow because the total supply is fixed at 1e27, far below the uint256 limit, and nothing can mint more.\n- **Maximum allowance:** an allowance of `type(uint256).max` is never reduced, as OpenZeppelin intends.\n- **External calls:** there are none, so the external-call checks in these guides had nothing to apply to.\n\n**Checks run:**\n- The project's existing suite: 37 tests passed.\n- A throwaway boundary test, since deleted:\n  - transferring 1e27 succeeds and 1e27+1 reverts;\n  - with an allowance of 5, spending 6 reverts and spending 1 leaves 4;\n  - a maximum allowance stays at maximum after use;\n  - the total supply stays at 1e27 throughout.\n- That boundary test failed on its first run because I asserted the wrong expected allowance. After I fixed the assertion it passed.\n\n**Coverage:** `approve`, `transfer` and `transferFrom` are all marked \"holds\", along with the fixed-supply and no-precision-math invariant rows. Nothing was left unreached, and I found nothing severe outside the math area. I did not check this launch's `launch.json` because none exists yet. I changed no project files.","treeHash":null,"usage":{"cachedInputTokens":307185,"inputTokens":18,"model":"claude-opus-5-5","outputTokens":5221,"runtime":"claude","turns":9,"wallClockMs":70303}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"76f57db4177175be","findings":[{"citation":"resolved","description":"Merged from audit_flow and audit_economics (same root cause, both reproduced). lib/forge-std/VENDORED.md:7 and README.md:115-116 state the vendored forge-std v1.9.7 files are unmodified and attested by SHA256SUMS. Running the recorded list fails for seven files: src/StdJson.sol, src/interfaces/IMulticall3.sol, src/console.sol, src/Vm.sol, src/interfaces/IERC7540.sol, src/StdAssertions.sol, src/StdToml.sol. I fetched the seven upstream v1.9.7 files from raw.githubusercontent.com: each upstream digest equals the digest recorded in SHA256SUMS, so the recorded list is correct for upstream and the vendored copies were altered after vendoring. After stripping all whitespace, every vendored copy is byte-identical to its upstream file, and `diff -w` shows only line re-wrapping (consistent with `forge fmt` having been run over lib/, which foundry.toml does not exclude; `forge fmt --check` passes on the tree). The assertion library's semantics are unchanged, so the 57 project tests remain meaningful. The five OpenZeppelin v5.0.2 files pass their checksums and ERC20.sol is byte-identical to upstream v5.0.2 (sha256 2d874da1c1478ed2...), so the deployed bytecode of SwornBySwarm is unaffected. Impact is limited to provenance: a reviewer following the README's verification instruction gets a FAILED result and cannot confirm the test harness from the repository alone. Not a token, launch-flow or bytecode defect. Minimal fix: restore the seven files to upstream bytes (and exclude lib/ from forge fmt), or regenerate SHA256SUMS and drop the word 'unmodified' from VENDORED.md and README.md.","line":7,"path":"lib/forge-std/VENDORED.md","reproduction":"State: the committed tree (HEAD 513a19e). Command: `cd lib/forge-std && sha256sum -c SHA256SUMS`. Expected per VENDORED.md:7 and README.md:116: 30 lines OK. Actual: 23 OK, 7 FAILED (src/StdJson.sol, src/interfaces/IMulticall3.sol, src/console.sol, src/Vm.sol, src/interfaces/IERC7540.sol, src/StdAssertions.sol, src/StdToml.sol), 'WARNING: 7 computed checksums did NOT match'. Cross-check: `curl -sSL https://raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/StdAssertions.sol | sha256sum` gives d4c89eec70d267de..., the digest recorded in SHA256SUMS; `diff -w` of the upstream file against lib/forge-std/src/StdAssertions.sol shows 48 lines of re-wrapping only, and the two files are identical after `tr -d ' \\t\\n\\r'`. The same holds for the other six files. `cd lib/openzeppelin-contracts && sha256sum -c SHA256SUMS` reports OK for all 6 files.","severity":"info","snippet":"Selected upstream source and license files are unmodified. SHA256SUMS records each file.","title":"Vendored forge-std is declared unmodified but 7 of 30 files fail the recorded SHA-256 checksums (whitespace-only reformatting; test-only dependency)"}],"hash":"a6acd6fb6024d811d00102f61bf72833c5278ce698a790a43733ba4b79280110","nodeId":"a628d471-c0c4-4a56-bd11-dc1fbf04cd05","outcome":"completed","summary":"The review is complete and the findings file is written and validated. The tree is otherwise untouched.\n\n**Outcome.** The SwornBySwarm token is a plain OpenZeppelin v5.0.2 ERC-20 with a single constructor mint of 10^27 units to msg.sender and no overrides. All three entry points hold, and no code defect was found.\n\n**Specialist findings.** The two reports from audit_flow and audit_economics describe the same root cause, so I merged them into one info-level finding. I reproduced it: seven of thirty vendored forge-std files fail their recorded SHA-256 checksums. I fetched the upstream v1.9.7 files and confirmed the recorded digests are upstream's, and that each vendored copy is identical to upstream once whitespace is stripped. The tree passes `forge fmt --check`, which points to forge fmt having been run over lib/. The OpenZeppelin files pass their checksums and ERC20.sol is byte-identical to upstream, so the deployed bytecode is unaffected. The only impact is that the provenance claim in VENDORED.md and the README is false for the test library.\n\n**My own pass.**\n- Constructor, supply, and manifest agree: no constructor arguments, totalSupply equals INITIAL_SUPPLY, decimals 18, schema keys and types correct.\n- No mint, burn, owner, pause, blacklist, delegatecall, or selfdestruct exists, so the protected launch floor's supply and privileged-call checks cannot be tripped.\n- Build succeeds and all 57 project tests pass with the README's fuzz seed.\n- The aderyn large-numeric-literal lead is a compile-time constant equal to the manifest supply and is not a defect.\n\n**Coverage.** All three listed entry points are marked holds, plus rows for the constructor and supply, the manifest, the static-analysis lead, and the build and test run. No finding carries a proof since none is high or critical.","treeHash":null,"usage":{"cachedInputTokens":236987,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":6981,"runtime":"claude","turns":12,"wallClockMs":94905}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"c9743cd9807c4c3a","findings":[{"citation":"resolved","description":"lib/forge-std/VENDORED.md:7 states 'Selected upstream source and license files are unmodified. SHA256SUMS records each file.' and README.md:116 repeats that claim. Running the recorded checksums against the tree fails for seven files: src/StdJson.sol, src/interfaces/IMulticall3.sol, src/console.sol, src/Vm.sol, src/interfaces/IERC7540.sol, src/StdAssertions.sol and src/StdToml.sol. I downloaded the upstream forge-std v1.9.7 archive (its SHA-256 45157353ab49... matches VENDORED.md) and diffed: every difference is a `forge fmt` re-wrap of function signatures; after stripping whitespace all seven files are byte-identical to upstream. So the test library is semantically unmodified and the project's test results stand, but the provenance file that is supposed to prove that is stale and a verifier running `sha256sum -c` gets a FAILED result. This is a test-only dependency; nothing in src/ or the deployed bytecode is affected. The OpenZeppelin v5.0.2 checksums (lib/openzeppelin-contracts/SHA256SUMS) verify cleanly. No economic, invariant or flow impact.","line":17,"path":"lib/forge-std/SHA256SUMS","reproduction":"State: the repository as committed. Run `cd lib/forge-std && sha256sum -c SHA256SUMS`. Expected (per VENDORED.md:7 and README.md:116): every line reports OK. Actual: `src/StdJson.sol: FAILED`, `src/interfaces/IMulticall3.sol: FAILED`, `src/console.sol: FAILED`, `src/Vm.sol: FAILED`, `src/interfaces/IERC7540.sol: FAILED`, `src/StdAssertions.sol: FAILED`, `src/StdToml.sol: FAILED`, 'WARNING: 7 computed checksums did NOT match'. For comparison `cd lib/openzeppelin-contracts && sha256sum -c SHA256SUMS` reports OK for all six files. Fix: regenerate SHA256SUMS from the files actually vendored (or re-vendor the unformatted upstream files) so the attestation matches the tree.","severity":"info","snippet":"9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1  src/Vm.sol","title":"lib/forge-std/SHA256SUMS does not match the vendored forge-std files it claims to attest (7 files, whitespace-only differences)"}],"hash":"c7d2201b1fb4643656ed71726e1029a0d80871802a418ef8d24f56875ad5f7be","nodeId":"3afe7fb6-36c9-44dc-9f57-c91ca980e651","outcome":"completed","summary":"The review is complete. The findings file is written and validated, and the scratch test directory is removed.\n\n**Outcome: no economic, invariant or flow defect found in the token.** The only substantiated item is an informational provenance mismatch in a test-only dependency.\n\nWhat I checked, in my area (Economic Security, Invariant, Flow Gap):\n\n- **Supply invariant.** The constructor mints exactly 1e27 units, matching the manifest's supply, to the deploying factory. The compiled ABI exposes only approve, transfer and transferFrom as state-changing entries. No mint, burn, owner, pause, blacklist, proxy, delegatecall or selfdestruct exists.\n- **Conservation.** The sum of balances stays equal to total supply under the project's invariant campaign and under my own 1024-run fuzz across arbitrary recipients.\n- **Launch flows.** There is no fee, tax or exemption list, so the swarm's share, the pool seed, the remainder, claims, buys and sells all move exactly the stated amount. I confirmed this with a scratch harness that deploys through a CREATE2 factory from a pranked caller.\n- **External dependencies.** The token makes no external calls, so there is nothing to break, re-enter or manipulate.\n- **Dependency integrity.** The vendored OpenZeppelin v5.0.2 files verify against their recorded checksums.\n\nThe one finding, severity info: `lib/forge-std/SHA256SUMS` fails for seven files even though the vendoring notes and README claim the files are unmodified. I diffed them against the upstream v1.9.7 archive, whose digest matches the vendoring note, and every difference is a formatter re-wrap. Stripped of whitespace, all seven files are identical to upstream, so the test results stand. The fix is to regenerate the checksum file.\n\nCoverage: all three listed entry points are marked `holds`, plus six invariant and flow rows. Nothing was left unreached. No file in the repository was modified; `test/scratch/` was used for the harness and then deleted.","treeHash":null,"usage":{"cachedInputTokens":615175,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":15117,"runtime":"claude","turns":30,"wallClockMs":213417}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"0ef0dfae5a05e4be","findings":[{"citation":"resolved","description":"The repository's provenance statement for the test-only dependency forge-std v1.9.7 (lib/forge-std/VENDORED.md:7, repeated in README.md:115-116) says the vendored files are unmodified and that SHA256SUMS records each one. Running the recorded checksum list against the tree fails for seven files: src/StdJson.sol, src/interfaces/IMulticall3.sol, src/console.sol, src/Vm.sol, src/interfaces/IERC7540.sol, src/StdAssertions.sol and src/StdToml.sol. The recorded digests are those of the upstream v1.9.7 files (verified by fetching the upstream raw files), so the files were altered after they were vendored. Comparing the vendored copies with upstream after stripping all whitespace shows the differences are whitespace-only (a formatter re-wrapped function headers in StdAssertions.sol and others), so the assertion library's semantics are unchanged and the project tests remain meaningful. By contrast, the five vendored OpenZeppelin v5.0.2 files are byte-identical to upstream and pass their checksums, and the deployed token bytecode only depends on those. Impact: a reviewer who follows the README's verification instruction cannot confirm the test harness's provenance from the repository alone; no effect on the token, its launch flows, or its compiled bytecode. Minimal fix: either restore the seven files to their upstream bytes or regenerate SHA256SUMS and drop the word 'unmodified' from VENDORED.md and README.md.","line":7,"path":"lib/forge-std/VENDORED.md","reproduction":"State: the committed working tree (commit 295b898). Command: `cd lib/forge-std && sha256sum -c SHA256SUMS`. Expected (per VENDORED.md:7 and README.md:115-116): all 30 lines report OK. Actual: 23 OK and 7 FAILED, with `sha256sum: WARNING: 7 computed checksums did NOT match`. Cross-check: `curl -sSL https://raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/StdAssertions.sol | sha256sum` yields d4c89eec70d267de..., the digest recorded in SHA256SUMS, while the vendored lib/forge-std/src/StdAssertions.sol hashes differently; `diff -w` between the two shows only line-wrapping changes. The same check on lib/openzeppelin-contracts passes for all 6 lines.","severity":"info","snippet":"Selected upstream source and license files are unmodified. SHA256SUMS records each file.","title":"Vendored forge-std declared unmodified but 7 of 30 files fail their recorded SHA-256 checksums (whitespace-only reformatting)"}],"hash":"dbac29904353002ef436f7e0488db8008a2ab96af969d3fe5554d0c6dffc8d8c","nodeId":"5428f2ea-2a9b-417e-b60f-9be155224310","outcome":"completed","summary":"The review is complete and the findings file is written. The working tree is otherwise untouched.\n\n**Result: the token holds.** SwornBySwarm is a 16-line wrapper over OpenZeppelin v5.0.2's ERC20 with one constructor mint of 10^27 units to msg.sender. I traced all three state-changing entry points through the Execution Trace, Periphery and First Principles checklists and found no defect in the token or its launch flows.\n\nWhat I verified:\n- **approve, transfer, transferFrom** follow the unmodified OpenZeppelin paths. Zero-address receiver and spender revert, insufficient balance and allowance revert atomically, infinite allowance is not decremented, self-transfers preserve balances, and no external calls or callbacks exist anywhere.\n- **Supply is fixed.** The compiled ABI exposes only the three ERC20 writers plus views. There is no receive, fallback, mint, burn, owner, pause or proxy path, and the runtime bytecode has no reachable DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **Launch flows move exact amounts**, so the factory's transfer to the distributor, the pool seed through the PoolManager, and trader buys and sells all deliver what they say.\n- **Vendored OpenZeppelin files are byte-identical to upstream v5.0.2**, confirmed by fetching and diffing them.\n- The project's 37 tests pass with the README's seed, and `forge fmt --check` passes. The aderyn large-literal lead is a compile-time constant equal to 10^27 and not a defect.\n\nOne info-severity finding is recorded. The forge-std vendoring notes declare the files unmodified, but seven of thirty files fail their recorded checksums. The recorded digests match upstream v1.9.7, and the vendored copies differ only in whitespace, so the test assertions keep their meaning and the deployed bytecode is unaffected. The fix is to restore the upstream bytes or regenerate the checksum list and drop the \"unmodified\" claim.\n\nThe coverage record answers all three listed entry points as holds, plus rows for the constructor, the fixed-supply and no-privilege invariants, both vendored libraries, and the static-analysis lead. Nothing in my area was left unreached.","treeHash":null,"usage":{"cachedInputTokens":425072,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":13757,"runtime":"claude","turns":25,"wallClockMs":291343}},{"artifacts":[],"attempt":1,"bundleHash":"386cdf2cc1be5f24a82937f2487a4e54ca90f40ff592e3d9cd294c65fe1a165c","device":"67b207ccd71ed641","findings":[],"hash":"f64e894c9f5e9c99450751f1cab95cb1f36e48114ee5b6337cb1344d1f83947a","nodeId":"c8d1824f-6d17-4050-a3fc-118d8c057fb0","outcome":"completed","summary":"Implemented SWORN with 18 decimals and 1,000,000,000 tokens minted once to the deployer. Dependencies are vendored; deployment assumptions and responsibilities are documented in README.md.\n\nChecks passed:\n\n- `forge build` with Solidity 0.8.26\n- `forge test`: 37 passed using the required fuzz seed\n- `forge fmt --check`","treeHash":"55ce8f3150c0a481098e94248538086f6a703bec","usage":{"cachedInputTokens":329728,"inputTokens":31259,"model":"gpt-6-astra","outputTokens":13187,"runtime":"codex","turns":4,"wallClockMs":284245}}],"verification":[{"checks":[{"durationMs":1524,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.45s\nCompiler run successful!\n","passed":true},{"durationMs":8279,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 36 tests for test/SwornBySwarm.t.sol:SwornBySwarmTest\n[PASS] testFuzz_InsufficientAllowanceLeavesStateUnchanged(uint256,uint256) (runs: 1024, μ: 123064, ~: 123470)\nLogs:\n  Bound result 0\n  Bound result 291023847373495101607314597\n\n[PASS] testFuzz_InsufficientBalanceLeavesAllowanceUnchanged(uint256,uint256) (runs: 1024, μ: 196099, ~: 196679)\nLogs:\n  Bound result 520215778320060439316048821\n  Bound result 3814190830724500239487614309420970037263884034778\n\n[PASS] testFuzz_SelfTransferNeverCreatesTokens(uint256) (runs: 1024, μ: 118869, ~: 119011)\nLogs:\n  Bound result 322619414430099791816985452\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1024, μ: 93007, ~: 93184)\nLogs:\n  Bound result 786687444968581504268835347\n\n[PASS] testFuzz_TransferFromSpendsOnlyApprovedAmount(uint256,uint256) (runs: 1024, μ: 162646, ~: 164853)\nLogs:\n  Bound result 0\n  Bound result 0\n\n[PASS] test_ApprovalCanBeReplacedAndRevoked() (gas: 164280)\n[PASS] test_ApprovalDoesNotRequireBalance() (gas: 78648)\n[PASS] test_ApproveEmitsEventWithoutMovingBalances() (gas: 88811)\n[PASS] test_ConstructorEmitsOneMintEvent() (gas: 9696)\n[PASS] test_Create2FactoryReceivesWholeSupply() (gas: 226749)\n[PASS] test_DeployerCannotMoveHoldersTokensWithoutApproval() (gas: 151902)\n[PASS] test_InfiniteAllowanceIsNotDecremented() (gas: 214699)\n[PASS] test_LaunchTransfersClaimsAndTradingDeliverExactAmounts() (gas: 406695)\n[PASS] test_MetadataAndInitialSupply() (gas: 107584)\n[PASS] test_NoMintBurnOrAdministrativeEntryPoints() (gas: 1526370)\n[PASS] test_RevertOnEtherOrUnknownCalls() (gas: 58827)\n[PASS] test_RevertWhenAllowanceBelongsToDifferentSpender() (gas: 92774)\n[PASS] test_RevertWhenApproveZeroSpender() (gas: 30386)\n[PASS] test_RevertWhenHolderUsesTransferFromWithoutSelfApproval() (gas: 35725)\n[PASS] test_RevertWhenSelfTransferExceedsBalance() (gas: 33318)\n[PASS] test_RevertWhenTransferExceedsBalance() (gas: 120049)\n[PASS] test_RevertWhenTransferFromExceedsAllowance() (gas: 115714)\n[PASS] test_RevertWhenTransferFromExceedsBalanceRestoresAllowance() (gas: 126174)\n[PASS] test_RevertWhenTransferFromLacksApproval() (gas: 57867)\n[PASS] test_RevertWhenTransferFromToZeroRestoresAllowance() (gas: 114199)\n[PASS] test_RevertWhenTransferToZero() (gas: 47640)\n[PASS] test_RevertWhenZeroTransferToZero() (gas: 30434)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51453)\n[PASS] test_TransferDeliversExactAmountAndEmitsEvent() (gas: 91583)\n[PASS] test_TransferDoesNotCallReceiver() (gas: 173879)\n[PASS] test_TransferEntireSupply() (gas: 75810)\n[PASS] test_TransferFromCanExhaustAllowance() (gas: 154813)\n[PASS] test_TransferFromSelfPreservesBalanceButSpendsAllowance() (gas: 105280)\n[PASS] test_TransferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 172701)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 63045)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 56338)\nSuite result: ok. 36 passed; 0 failed; 0 skipped; finished in 122.17ms (399.39ms CPU time)\n\nRan 20 tests for test/SwornBySwarm.properties.t.sol:SwornBySwarmPropertiesTest\n[PASS] testFuzz_ApprovalIsScopedToBothOwnerAndSpender(uint256,uint256) (runs: 1024, μ: 431027, ~: 433312)\nLogs:\n  Bound result 7\n\n[PASS] testFuzz_ApprovalsReplaceRatherThanAccumulateAndAreIdempotent(uint256,uint256) (runs: 1024, μ: 218735, ~: 218847)\n[PASS] testFuzz_DelegatedAndDirectTransfersAgreeForEveryActorAlias(uint256,uint8,uint8,uint8,bool) (runs: 1024, μ: 361281, ~: 378644)\nLogs:\n  Bound result 23011957458123994304466774\n\n[PASS] testFuzz_DirectRoundTripRestoresBalancesAndPreservesAllowances(uint256,uint256) (runs: 1024, μ: 272711, ~: 273120)\nLogs:\n  Bound result 166\n\n[PASS] testFuzz_FailedSpendCanBeRetriedAfterFunding(uint256,uint256,bool) (runs: 1024, μ: 339047, ~: 339424)\nLogs:\n  Bound result 2332787425\n  Bound result 9169096563681\n\n[PASS] testFuzz_RefillingBalanceDoesNotRestoreSpentAllowance(uint256) (runs: 1024, μ: 216694, ~: 216216)\nLogs:\n  Bound result 322619414430099791817428953\n\n[PASS] testFuzz_SplittingATransferHasTheSameResult(uint256,uint256) (runs: 1024, μ: 245538, ~: 246824)\nLogs:\n  Bound result 12\n  Bound result 7\n\n[PASS] testFuzz_ZeroRecipientFailurePreservesApprovalForValidRetry(uint256,bool) (runs: 1024, μ: 221310, ~: 221581)\nLogs:\n  Bound result 7\n\n[PASS] test_EntireSupplyCanMoveByExactAllowanceAndReturn() (gas: 290731)\n[PASS] test_MaxUintTransfersRevertWithoutOverflowOrAllowanceLoss() (gas: 266417)\n[PASS] test_OneBelowMaxAllowanceIsFinite() (gas: 153979)\n[PASS] test_OneSmallestUnitCanMoveDirectlyAndByAllowance() (gas: 289902)\n[PASS] test_PayableCallsToTokenOperationsRevertWithoutChangingState() (gas: 324689)\n[PASS] test_TransferFromZeroSourceCannotMintEvenForZeroAmount() (gas: 260190)\n[PASS] test_UnlimitedApprovalCanBeReplacedWithFiniteApproval() (gas: 227569)\n[PASS] test_UnlimitedApprovalCanBeRevokedAfterUse() (gas: 339269)\n[PASS] test_ZeroApproverCannotCreateAnAllowance() (gas: 51096)\n[PASS] test_ZeroDelegatedTransferPreservesFiniteAndUnlimitedAllowances() (gas: 412016)\n[PASS] test_ZeroSenderCannotTransferEvenZero() (gas: 62935)\n[PASS] test_ZeroSpenderCannotBeApprovedEvenForZero() (gas: 48109)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 122.42ms (967.43ms CPU time)\n\nRan 1 test for test/SwornBySwarm.invariant.t.sol:SwornBySwarmInvariantTest\n[PASS]\nSwornBySwarmInvariantTest invariants:\n[PASS] invariant_BalancesAndAllowancesMatchIndependentLedger\n[PASS] invariant_MetadataNeverChanges\n[PASS] invariant_SupplyIsFixedAndAllBalancesAreAccountedFor\n SwornBySwarmInvariantTest invariants (runs: 256, calls: 24576, reverts: 0)\n\n╭--------------+---------------------+-------+---------+----------╮\n| Contract     | Selector            | Calls | Reverts | Discards |\n+=================================================================+\n| SwornHandler | approve             | 3555  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| SwornHandler | approveAtBoundary   | 3529  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| SwornHandler | rejectZeroRecipient | 3499  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| SwornHandler | rejectZeroSpender   | 3565  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| SwornHandler | transfer            | 3487  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| SwornHandler | transferFrom        | 3524  | 0       | 0        |\n|--------------+---------------------+-------+---------+----------|\n| SwornHandler | transferFullBalance | 3417  | 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 4835\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 4288775752\n  Bound result 0\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 8.18s (8.18s CPU time)\n\nRan 3 test suites in 8.18s (8.42s CPU time): 57 tests passed, 0 failed, 0 skipped (57 total tests)\n","passed":true},{"durationMs":49,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SwornBySwarm.approve(address,uint256)\",\"SwornBySwarm.transfer(address,uint256)\",\"SwornBySwarm.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":116,\"foundry.toml\":19,\"remappings.txt\":2,\"src/SwornBySwarm.sol\":16,\"test/SwornBySwarm.invariant.t.sol\":207,\"test/SwornBySwarm.properties.t.sol\":373,\"test/SwornBySwarm.t.sol\":413,\"test/TESTING.md\":50},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"14bf4dd420e04456d4dca9e2ad52cbb663d53d23c6b4a1b188770d1b76218f00","verifiedTreeHash":"3d783456e5c57a2dfbfe49ac7b5242c6fb4826de","verifierVersion":"0.1.0+f3653923"},{"checks":[{"durationMs":1299,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.21s\nCompiler run successful!\n","passed":true},{"durationMs":2722,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 36 tests for test/SwornBySwarm.t.sol:SwornBySwarmTest\n[PASS] testFuzz_InsufficientAllowanceLeavesStateUnchanged(uint256,uint256) (runs: 1024, μ: 123003, ~: 123470)\nLogs:\n  Bound result 403767253548724396806881156\n  Bound result 999999999999999999999999998\n\n[PASS] testFuzz_InsufficientBalanceLeavesAllowanceUnchanged(uint256,uint256) (runs: 1024, μ: 196013, ~: 196685)\nLogs:\n  Bound result 418\n  Bound result 18194\n\n[PASS] testFuzz_SelfTransferNeverCreatesTokens(uint256) (runs: 1024, μ: 118861, ~: 119011)\nLogs:\n  Bound result 50000000000000000000\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1024, μ: 92996, ~: 93178)\nLogs:\n  Bound result 112514580440\n\n[PASS] testFuzz_TransferFromSpendsOnlyApprovedAmount(uint256,uint256) (runs: 1024, μ: 162524, ~: 164829)\nLogs:\n  Bound result 1041829795848567\n  Bound result 975103226020878\n\n[PASS] test_ApprovalCanBeReplacedAndRevoked() (gas: 164280)\n[PASS] test_ApprovalDoesNotRequireBalance() (gas: 78648)\n[PASS] test_ApproveEmitsEventWithoutMovingBalances() (gas: 88811)\n[PASS] test_ConstructorEmitsOneMintEvent() (gas: 9696)\n[PASS] test_Create2FactoryReceivesWholeSupply() (gas: 226749)\n[PASS] test_DeployerCannotMoveHoldersTokensWithoutApproval() (gas: 151902)\n[PASS] test_InfiniteAllowanceIsNotDecremented() (gas: 214699)\n[PASS] test_LaunchTransfersClaimsAndTradingDeliverExactAmounts() (gas: 406695)\n[PASS] test_MetadataAndInitialSupply() (gas: 107584)\n[PASS] test_NoMintBurnOrAdministrativeEntryPoints() (gas: 1526370)\n[PASS] test_RevertOnEtherOrUnknownCalls() (gas: 58827)\n[PASS] test_RevertWhenAllowanceBelongsToDifferentSpender() (gas: 92774)\n[PASS] test_RevertWhenApproveZeroSpender() (gas: 30386)\n[PASS] test_RevertWhenHolderUsesTransferFromWithoutSelfApproval() (gas: 35725)\n[PASS] test_RevertWhenSelfTransferExceedsBalance() (gas: 33318)\n[PASS] test_RevertWhenTransferExceedsBalance() (gas: 120049)\n[PASS] test_RevertWhenTransferFromExceedsAllowance() (gas: 115714)\n[PASS] test_RevertWhenTransferFromExceedsBalanceRestoresAllowance() (gas: 126174)\n[PASS] test_RevertWhenTransferFromLacksApproval() (gas: 57867)\n[PASS] test_RevertWhenTransferFromToZeroRestoresAllowance() (gas: 114199)\n[PASS] test_RevertWhenTransferToZero() (gas: 47640)\n[PASS] test_RevertWhenZeroTransferToZero() (gas: 30434)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51453)\n[PASS] test_TransferDeliversExactAmountAndEmitsEvent() (gas: 91583)\n[PASS] test_TransferDoesNotCallReceiver() (gas: 173879)\n[PASS] test_TransferEntireSupply() (gas: 75810)\n[PASS] test_TransferFromCanExhaustAllowance() (gas: 154813)\n[PASS] test_TransferFromSelfPreservesBalanceButSpendsAllowance() (gas: 105280)\n[PASS] test_TransferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 172701)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 63045)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 56338)\nSuite result: ok. 36 passed; 0 failed; 0 skipped; finished in 44.31ms (210.79ms CPU time)\n\nRan 1 test for test/SwornBySwarm.invariant.t.sol:SwornBySwarmInvariantTest\n[PASS]\nSwornBySwarmInvariantTest invariants:\n[PASS] invariant_BalancesAndAllowancesMatchIndependentLedger\n[PASS] invariant_SupplyIsFixedAndAllBalancesAreAccountedFor\n SwornBySwarmInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| SwornHandler | approve      | 2702  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| SwornHandler | transfer     | 2751  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| SwornHandler | transferFrom | 2739  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 20000000000000000000\n  Bound result 0\n  Bound result 12\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1474\n  Bound result 12\n  Bound result 853\n  Bound result 2\n  Bound result 0\n  Bound result 918\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 2000000000000000000\n  Bound result 24\n  Bound result 50000000000000000000\n  Bound result 5555\n  Bound result 2334\n  Bound result 2897\n  Bound result 366\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.61s (2.61s CPU time)\n\nRan 2 test suites in 2.61s (2.66s CPU time): 37 tests passed, 0 failed, 0 skipped (37 total tests)\n","passed":true},{"durationMs":49,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SwornBySwarm.approve(address,uint256)\",\"SwornBySwarm.transfer(address,uint256)\",\"SwornBySwarm.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":116,\"foundry.toml\":19,\"launch.json\":20,\"remappings.txt\":2,\"src/SwornBySwarm.sol\":16,\"test/SwornBySwarm.invariant.t.sol\":108,\"test/SwornBySwarm.t.sol\":413},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"438dc70fced1ed651516988cd7d5d4dcfc14281a6f86925239496c7b05129e41","verifiedTreeHash":"e84bd67afc7f2bab71bbc58a2efbd907cbc9c6a4","verifierVersion":"0.1.0+f3653923"},{"checks":[{"durationMs":1093,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.02s\nCompiler run successful!\n","passed":true},{"durationMs":2356,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 36 tests for test/SwornBySwarm.t.sol:SwornBySwarmTest\n[PASS] testFuzz_InsufficientAllowanceLeavesStateUnchanged(uint256,uint256) (runs: 1024, μ: 123003, ~: 123470)\nLogs:\n  Bound result 0\n  Bound result 291023847373495101607314597\n\n[PASS] testFuzz_InsufficientBalanceLeavesAllowanceUnchanged(uint256,uint256) (runs: 1024, μ: 196013, ~: 196685)\nLogs:\n  Bound result 418\n  Bound result 18194\n\n[PASS] testFuzz_SelfTransferNeverCreatesTokens(uint256) (runs: 1024, μ: 118861, ~: 119011)\nLogs:\n  Bound result 1703\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1024, μ: 92996, ~: 93178)\nLogs:\n  Bound result 361783814109513133478932064\n\n[PASS] testFuzz_TransferFromSpendsOnlyApprovedAmount(uint256,uint256) (runs: 1024, μ: 162524, ~: 164829)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n\n[PASS] test_ApprovalCanBeReplacedAndRevoked() (gas: 164280)\n[PASS] test_ApprovalDoesNotRequireBalance() (gas: 78648)\n[PASS] test_ApproveEmitsEventWithoutMovingBalances() (gas: 88811)\n[PASS] test_ConstructorEmitsOneMintEvent() (gas: 9696)\n[PASS] test_Create2FactoryReceivesWholeSupply() (gas: 226749)\n[PASS] test_DeployerCannotMoveHoldersTokensWithoutApproval() (gas: 151902)\n[PASS] test_InfiniteAllowanceIsNotDecremented() (gas: 214699)\n[PASS] test_LaunchTransfersClaimsAndTradingDeliverExactAmounts() (gas: 406695)\n[PASS] test_MetadataAndInitialSupply() (gas: 107584)\n[PASS] test_NoMintBurnOrAdministrativeEntryPoints() (gas: 1526370)\n[PASS] test_RevertOnEtherOrUnknownCalls() (gas: 58827)\n[PASS] test_RevertWhenAllowanceBelongsToDifferentSpender() (gas: 92774)\n[PASS] test_RevertWhenApproveZeroSpender() (gas: 30386)\n[PASS] test_RevertWhenHolderUsesTransferFromWithoutSelfApproval() (gas: 35725)\n[PASS] test_RevertWhenSelfTransferExceedsBalance() (gas: 33318)\n[PASS] test_RevertWhenTransferExceedsBalance() (gas: 120049)\n[PASS] test_RevertWhenTransferFromExceedsAllowance() (gas: 115714)\n[PASS] test_RevertWhenTransferFromExceedsBalanceRestoresAllowance() (gas: 126174)\n[PASS] test_RevertWhenTransferFromLacksApproval() (gas: 57867)\n[PASS] test_RevertWhenTransferFromToZeroRestoresAllowance() (gas: 114199)\n[PASS] test_RevertWhenTransferToZero() (gas: 47640)\n[PASS] test_RevertWhenZeroTransferToZero() (gas: 30434)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51453)\n[PASS] test_TransferDeliversExactAmountAndEmitsEvent() (gas: 91583)\n[PASS] test_TransferDoesNotCallReceiver() (gas: 173879)\n[PASS] test_TransferEntireSupply() (gas: 75810)\n[PASS] test_TransferFromCanExhaustAllowance() (gas: 154813)\n[PASS] test_TransferFromSelfPreservesBalanceButSpendsAllowance() (gas: 105280)\n[PASS] test_TransferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 172701)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 63045)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 56338)\nSuite result: ok. 36 passed; 0 failed; 0 skipped; finished in 38.37ms (189.86ms CPU time)\n\nRan 1 test for test/SwornBySwarm.invariant.t.sol:SwornBySwarmInvariantTest\n[PASS]\nSwornBySwarmInvariantTest invariants:\n[PASS] invariant_BalancesAndAllowancesMatchIndependentLedger\n[PASS] invariant_SupplyIsFixedAndAllBalancesAreAccountedFor\n SwornBySwarmInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| SwornHandler | approve      | 2702  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| SwornHandler | transfer     | 2751  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| SwornHandler | transferFrom | 2739  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 20000000000000000000\n  Bound result 0\n  Bound result 12\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1474\n  Bound result 12\n  Bound result 853\n  Bound result 2\n  Bound result 0\n  Bound result 918\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 2000000000000000000\n  Bound result 24\n  Bound result 50000000000000000000\n  Bound result 5555\n  Bound result 2334\n  Bound result 2897\n  Bound result 366\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.26s (2.26s CPU time)\n\nRan 2 test suites in 2.27s (2.30s CPU time): 37 tests passed, 0 failed, 0 skipped (37 total tests)\n","passed":true},{"durationMs":52,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SwornBySwarm.approve(address,uint256)\",\"SwornBySwarm.transfer(address,uint256)\",\"SwornBySwarm.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":116,\"foundry.toml\":19,\"remappings.txt\":2,\"src/SwornBySwarm.sol\":16,\"test/SwornBySwarm.invariant.t.sol\":108,\"test/SwornBySwarm.t.sol\":413},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":446,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":229,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/SwornBySwarm.sol:11: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"f64e894c9f5e9c99450751f1cab95cb1f36e48114ee5b6337cb1344d1f83947a","verifiedTreeHash":"55ce8f3150c0a481098e94248538086f6a703bec","verifierVersion":"0.1.0+f3653923"}]}