{"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":"4d2f9a8c-2ecf-430b-a25a-a69c23001eb4","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"0902a7a463c2840aa5a1412f11fc27c69783461267763a0369f032e329640d50","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":"12202bc0d731cf78b7ae98e24963e4a01577b7422ca19c43e63613b18ba655b7","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":"5b4064ba33923e1e50f3862976821bb70f7cc971f1e1668367ce6fb2188e84ea","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":"243c4d6eeb55828f585ec4c4bf4a7d3a08aa441c808718b111ac0f52c8463931","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":"02dd45ed4395e98333215170f01e0740284041f470fa0a5c40173e438520c24a","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":"fd3d89524f74886009bf48c01657458ac2246113704cf392f8b721b6cbf7a8c0","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"bbf12a89ce76ccbd77aef3976d9ac4223bed1f24dfe5af5002723e6a1ec965fc","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"fd5416f294c09406864776a564bac3c3501b5bdbacf1cdaf172bed8b960365ef","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"6c8cf11980f74125d34b6f2b05c5495824fcaadbed08be63708f2f4c4e8114a2","skillId":"write-foundry-tests","subagents":4,"tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"6c8cf11980f74125d34b6f2b05c5495824fcaadbed08be63708f2f4c4e8114a2","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: Idatsy (IDATSY).\nToken name: Idatsy\nToken symbol: IDATSY\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"cefce08ea24f52f0e0ebcda75c001a6c949b6c3b95f5178cadce6fcbcfd22ecc","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"4d2f9a8c-2ecf-430b-a25a-a69c23001eb4","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-3269-idatsy"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"53923","feedbackHash":"af22d5f2ffefc2d85a438e64d1f9f3f5da396c5c133a75047390f54dea062e6e","nodeKey":"audit_economics","submissionHash":"0902a7a463c2840aa5a1412f11fc27c69783461267763a0369f032e329640d50","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51488","feedbackHash":"a57ef2521037c1162c44465f41febc83aa25376fafb5e538efb8720d877df4ca","nodeKey":"audit_flow","submissionHash":"12202bc0d731cf78b7ae98e24963e4a01577b7422ca19c43e63613b18ba655b7","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52682","feedbackHash":"80206db596a1abd066bb42a58e58895e74ea62dccb8f641d65a17e2244b9d1c8","nodeKey":"audit_judge","submissionHash":"5b4064ba33923e1e50f3862976821bb70f7cc971f1e1668367ce6fb2188e84ea","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52366","feedbackHash":"9c77cd5ee2ee8a794c797f99db19566a7719b2f6307ba305ff537b843f565c41","nodeKey":"audit_math","submissionHash":"243c4d6eeb55828f585ec4c4bf4a7d3a08aa441c808718b111ac0f52c8463931","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52167","feedbackHash":"b80c18e5eccd73f53770da183f6d11cc8618f230ac7cedc0669f523e8ae11f75","nodeKey":"audit_permissions","submissionHash":"02dd45ed4395e98333215170f01e0740284041f470fa0a5c40173e438520c24a","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51208","feedbackHash":"87e5bc62ac7cdc55135f5a4a232a2dcd215f3c5257e9228cf3c65b3616109148","nodeKey":"build_contract_project","submissionHash":"fd3d89524f74886009bf48c01657458ac2246113704cf392f8b721b6cbf7a8c0","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52139","feedbackHash":"d88a2ae01632e7bb848e29cb8b71c893d4a158da37577f48f74b71d0b0865697","nodeKey":"manifest","submissionHash":"bbf12a89ce76ccbd77aef3976d9ac4223bed1f24dfe5af5002723e6a1ec965fc","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52189","feedbackHash":"9e04666ff0948196fb3002ff48ad516f2337d307c920bfec6bb1ae850431e1aa","nodeKey":"write_foundry_tests","submissionHash":"fd5416f294c09406864776a564bac3c3501b5bdbacf1cdaf172bed8b960365ef","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"7c1010639f7bbaf5108ef18f2d0d9a658868b0f70b7e8d637afdb7f71cdaf26c","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"1ca477e8d9b58040","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states that no vendored dependency source was modified and instructs the reader to verify the tree with `sha256sum --check lib/SHA256SUMS`. That command fails on the committed tree: lib/forge-std/src/Vm.sol, StdAssertions.sol, StdJson.sol, StdToml.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol hash differently from the values in lib/SHA256SUMS. The hashes in SHA256SUMS are the genuine forge-std v1.9.7 hashes (verified against the upstream tarball, whose SHA-256 45157353ab49eab01d294565866731e599b32401757229689ee459aa26b7ee94 matches DEPENDENCIES.md), so it is the vendored files that were changed after the checksum file was written. A diff against v1.9.7 shows the changes are whitespace and line-wrapping only (a formatter pass over lib/), so there is no behavioral change and no effect on the production token: every OpenZeppelin v5.1.0 file vendored under lib/openzeppelin-contracts is byte-identical to upstream. The defect is that the integrity claim and its verification procedure, which the README and DEPENDENCIES.md present as the way to trust the vendored code, do not hold as shipped. Fix: either restore the seven files to their upstream bytes or regenerate lib/SHA256SUMS from the tree as committed, and exclude lib/ from any formatter run. This is outside the assigned permissions area and is reported because it is reproducible; it does not affect the token's access control.","line":13,"path":"DEPENDENCIES.md","reproduction":"From the repository root run `sha256sum --check lib/SHA256SUMS`. Expected (per DEPENDENCIES.md line 13 and line 23): every line OK. Actual: 7 lines report FAILED and the command exits non-zero: lib/forge-std/src/StdJson.sol, interfaces/IMulticall3.sol, console.sol, Vm.sol, interfaces/IERC7540.sol, StdAssertions.sol, StdToml.sol. Example: lib/SHA256SUMS line 21 lists 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1 for lib/forge-std/src/Vm.sol (the upstream v1.9.7 hash); `sha256sum lib/forge-std/src/Vm.sol` on the tree gives a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15. `diff <(tar -xOzf forge-std-1.9.7.tar.gz forge-std-1.9.7/src/Vm.sol) lib/forge-std/src/Vm.sol` shows only multi-line function signatures collapsed onto one line.","severity":"low","snippet":"Library is used only by tests. No dependency source files were modified.","title":"Documented dependency integrity check fails: seven vendored forge-std files do not match lib/SHA256SUMS or the pinned v1.9.7 release"}],"hash":"02dd45ed4395e98333215170f01e0740284041f470fa0a5c40173e438520c24a","nodeId":"77cd74f8-564a-4ad9-807e-34ca9cd77bda","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written with one low finding and ten coverage rows. No tracked source, test, or configuration file was changed. The only addition is the scratch test under test/scratch/, which is not kept.\n\n**What I audited.** The token is a single contract, `src/Idatsy.sol`, that inherits the vendored OpenZeppelin v5.1.0 ERC20 unchanged and mints the full supply to the constructor's caller. I checked it against the Access Control, Trust Gap and Asymmetry guides, read the protected launch floor tests, and confirmed the vendored OpenZeppelin files are byte-identical to the upstream v5.1.0 release.\n\n**Permission result.** The permission model holds. There is no owner, minter, pauser, initializer, upgrade slot or fee setter, so no privileged actor exists after deployment. A scratch test tried 30 admin-style selectors, empty calldata and ETH sends from both the deployer and a stranger. All reverted and left supply and holder balances unchanged. The transfer and transferFrom paths share the same validation and state writes, the holder itself and the factory cannot pull without an allowance, and the compiled runtime contains no DELEGATECALL, CALLCODE or SELFDESTRUCT on any reachable path. The existing suite of 37 tests also passes.\n\n**One finding, low, outside the assigned area.** The documented integrity check in DEPENDENCIES.md fails on the committed tree. Seven forge-std files differ from the hashes in `lib/SHA256SUMS` and from the pinned v1.9.7 release. The drift is line-wrapping only, from a formatter pass, and touches test-only code. The reproduction is the command below, which reports seven FAILED lines instead of all OK.\n\n```\nsha256sum --check lib/SHA256SUMS\n```\n\n**Coverage.** All three listed entry points are marked holds, with additional rows for the constructor's role handout, the fixed-supply and opcode invariants, and the three guide passes. The dependency integrity row points to the finding. Nothing in the assigned area was left unreached.","treeHash":null,"usage":{"cachedInputTokens":520298,"cost":{"source":"runtime","usdMicros":2219534},"inputTokens":290,"model":"claude-fable-5-1","outputTokens":14144,"runtime":"claude","turns":16,"wallClockMs":195374}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"733f63ff9321d57a","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states on line 13 that 'No dependency source files were modified' and on lines 22-23 that the vendored files can be verified with `sha256sum --check lib/SHA256SUMS`. Running that command from the repository root reports 7 FAILED entries, all under lib/forge-std/src: StdJson.sol, interfaces/IMulticall3.sol, console.sol, Vm.sol, interfaces/IERC7540.sol, StdAssertions.sol, StdToml.sol. The SHA256SUMS entries themselves are correct for upstream forge-std v1.9.7 (the upstream files fetched from raw.githubusercontent.com hash to exactly the listed digests), so it is the vendored copies that were altered: a whitespace-only comparison (stripping spaces and newlines) shows each of the seven is identical to upstream, i.e. they were re-wrapped by a formatter (multi-line function signatures collapsed to one line; Vm.sol is 1819 lines against 1847 upstream). All six OpenZeppelin production files match upstream v5.1.0 byte for byte and pass the checksum. Impact: the delivered integrity claim is false, so a reviewer or verifier who follows the documented procedure gets a failure and cannot distinguish this benign reformatting from a tampered test library without doing the upstream comparison themselves. No production bytecode is affected: forge-std is test-only, the token's runtime is built solely from src/Idatsy.sol and the unmodified OpenZeppelin files. Fix: either restore the seven files to the upstream v1.9.7 bytes (do not run forge fmt over lib/), or regenerate lib/SHA256SUMS from the tree as shipped and drop the 'No dependency source files were modified' sentence, stating instead that forge-std was reformatted.","line":22,"path":"DEPENDENCIES.md","reproduction":"From the repository root run: `sha256sum --check lib/SHA256SUMS`. Expected (per DEPENDENCIES.md lines 13 and 22-23): every line OK. Actual: `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, and `sha256sum: WARNING: 7 computed checksums did NOT match`. Confirming which side is wrong: `sha256sum lib/forge-std/src/Vm.sol` gives a1b1c829...102a15 while lib/SHA256SUMS line 21 lists 9068805b...b2cb1, which is the digest of https://raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/Vm.sol; `diff <(tr -d ' \\n' < lib/forge-std/src/Vm.sol) <(tr -d ' \\n' < upstream/Vm.sol)` is empty, so the difference is whitespace only. Same result for the other six files.","severity":"low","snippet":"Individual copied files are pinned in `lib/SHA256SUMS`. Verify them locally from\nthe repository root with `sha256sum --check lib/SHA256SUMS`.","title":"Documented dependency integrity check fails: seven vendored forge-std files do not match lib/SHA256SUMS or upstream v1.9.7"}],"hash":"0902a7a463c2840aa5a1412f11fc27c69783461267763a0369f032e329640d50","nodeId":"5f12365e-41ea-4e3a-836b-cc1f2c7e1348","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written at the repository root. No tracked file was changed, and the scratch test directory has been removed.\n\n**Outcome: the token's economics hold.** `src/Idatsy.sol` is an unmodified OpenZeppelin v5.1.0 ERC20 with one constructor mint of 1e27 units to its deployer. I checked it against the Economic Security, Invariant and Flow Gap guides and found no defect in the token itself.\n\nWhat I verified, with the three listed entry points and the launch flows all marked `holds`:\n\n- **Supply and conservation.** The only mint is in the constructor. No burn, mint, owner, pause, blacklist, freeze or seize function exists. Fourteen common admin selectors called from the factory and from a stranger all revert and leave supply and balances unchanged. The project's own invariant suite (128 runs, depth 64) and all 36 unit tests pass.\n- **Launch flows are exact.** From a CREATE2 factory stand-in, the whole supply lands at the factory. The 10% swarm share, 88% pool share and 2% remainder leave to the wei and sum to the supply. A claim leaves the distributor empty. A trader round trip through transfer and transferFrom with both unlimited and finite allowance is exact, and the factory cannot pull a holder's balance without allowance.\n- **Dependencies and bytecode.** All six vendored OpenZeppelin files are byte-identical to upstream v5.1.0. Disassembly of the runtime shows zero CALLCODE, DELEGATECALL or SELFDESTRUCT opcodes. Sending ETH to the token reverts.\n\n**One low finding, outside my area but concrete.** DEPENDENCIES.md tells readers to verify the vendored libraries with the checksum list and states no dependency file was modified. Running that check fails on seven forge-std files. The listed digests are correct for upstream v1.9.7; the vendored copies were reformatted, and a whitespace-stripped comparison shows them otherwise identical. This is test-only code with no effect on the token's bytecode, so I rated it low. The fix is to restore the upstream bytes or regenerate the checksum list and correct the sentence.\n\nNot reported as findings, since they are standard and documented behaviour the requester asked for: the approve allowance race and the ability to send tokens to the token's own address with no rescue path.\n\nNot reached: the protected harness itself could not be run here because it imports Uniswap v4 core and launch sources absent from this tree, so the seed and swap path was exercised with a pool-manager stand-in rather than the real PoolManager.","treeHash":null,"usage":{"cachedInputTokens":781304,"cost":{"source":"runtime","usdMicros":2804621},"inputTokens":354,"model":"claude-fable-5-1","outputTokens":17632,"runtime":"claude","turns":23,"wallClockMs":299783}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"5835e48821d8827d","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states that no dependency source files were modified and instructs reviewers to verify the vendored files with `sha256sum --check lib/SHA256SUMS`. In the committed tree that command fails for seven forge-std files (StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol). Comparing against the upstream forge-std v1.9.7 tarball (whose SHA-256 45157353ab49...e801 matches the one stated in DEPENDENCIES.md) shows the differences are whitespace-only reflows (multi-line function signatures collapsed to one line, as `forge fmt` produces); the token-stream of every file is identical to upstream. All six vendored OpenZeppelin files are byte-identical to upstream v5.1.0 and pass the check. Impact is limited to the integrity claim itself: forge-std is test-only and the production token is unaffected, but the repository's stated provenance verification does not pass as written, so a reviewer following the documented procedure gets a failure they cannot distinguish from a real tampering without doing the upstream comparison themselves. Fix: either restore the seven files to the upstream v1.9.7 bytes or regenerate lib/SHA256SUMS from the files actually committed, and keep the two in sync.","line":22,"path":"DEPENDENCIES.md","reproduction":"From the repository root run `sha256sum --check lib/SHA256SUMS`. Expected (per DEPENDENCIES.md line 22-23 and the 'No dependency source files were modified' claim on line 13): every line reports OK. Actual: `sha256sum: WARNING: 7 computed checksums did NOT match`, with FAILED for lib/forge-std/src/{StdAssertions,StdJson,StdToml,Vm,console}.sol and lib/forge-std/src/interfaces/{IERC7540,IMulticall3}.sol. For example lib/SHA256SUMS pins Vm.sol at 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1 while the committed file hashes to a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15. `diff <upstream v1.9.7>/src/Vm.sol lib/forge-std/src/Vm.sol` shows only signature-line reflows; stripping whitespace from both yields identical hashes for all seven files.","severity":"low","snippet":"Individual copied files are pinned in `lib/SHA256SUMS`. Verify them locally from\nthe repository root with `sha256sum --check lib/SHA256SUMS`.","title":"Documented dependency integrity check fails: seven vendored forge-std files do not match lib/SHA256SUMS or upstream v1.9.7 bytes"}],"hash":"12202bc0d731cf78b7ae98e24963e4a01577b7422ca19c43e63613b18ba655b7","nodeId":"6ba6a93d-44a4-45bf-9d39-e8f46802e9ad","outcome":"completed","summary":"The findings file is complete and its citation now matches the tree. No further checks are needed.\n\n**Outcome:** the Idatsy token is clean in my area. I found no defect in the production contract. The one finding is a low-severity integrity-documentation defect in the vendored test library.\n\n**What I covered** (control flow: Execution Trace, Periphery, First Principles)\n\n- **Execution Trace.** All three entry points are unmodified OpenZeppelin v5.1.0 calls. Zero-address sentinels revert, the unlimited allowance is the documented ERC20 convention, self-transfer conserves balance because the recipient increment reads storage after the sender write, and transferFrom checks allowance before moving funds with full rollback on any revert. No external calls, callbacks, encoding, or msg.value anywhere.\n- **Periphery.** I fetched the upstream OpenZeppelin v5.1.0 and forge-std v1.9.7 tarballs. Both tarball hashes match what DEPENDENCIES.md states. All six vendored OpenZeppelin files are byte-identical to upstream, and Context returns plain msg.sender with no forwarder logic.\n- **First Principles.** The constructor's msg.sender is the deploying factory under CREATE2, confirmed by a scratch test with a pranked caller and origin. The supply constant equals exactly 10^27, decimals default to 18, the compiled ABI holds nothing beyond ERC20 plus the supply constant, ETH and unknown selectors revert, and a replay of the launch floor's reachable-opcode scan found no DELEGATECALL, CALLCODE, SELFDESTRUCT, or any external-call opcode.\n- The aderyn large-literal lead is a compile-time constant with the correct value, not a defect. The existing 37-test suite passes with the README's seed.\n\n**Finding (low):** DEPENDENCIES.md says no dependency files were modified and instructs reviewers to run the SHA256SUMS check. That check fails on seven forge-std files. The differences are whitespace-only reflows of upstream v1.9.7, so there is no behavioral impact and forge-std is test-only, but the documented provenance procedure does not pass as written. Fix is to restore upstream bytes or regenerate the sums file.\n\n**Coverage record:** ten rows written, three for the listed entry points plus seven for invariants and periphery checks. All hold except the forge-std row, which points to the finding. Nothing was left unreached. The scratch test directory was removed, and no repository files were changed.","treeHash":null,"usage":{"cachedInputTokens":691588,"cost":{"source":"runtime","usdMicros":2413028},"inputTokens":354,"model":"claude-fable-5-1","outputTokens":13197,"runtime":"claude","turns":14,"wallClockMs":263420}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"1188f01303e45ecd","findings":[{"citation":"resolved","description":"Outside the math area, reported because it is concrete and reproducible. DEPENDENCIES.md states 'No dependency source files were modified' and directs the reader to verify the vendored files with `sha256sum --check lib/SHA256SUMS`. That command fails for 7 of the 36 pinned files: lib/forge-std/src/Vm.sol, console.sol, StdJson.sol, StdToml.sol, StdAssertions.sol, interfaces/IMulticall3.sol and interfaces/IERC7540.sol. The hashes written in lib/SHA256SUMS equal the upstream forge-std v1.9.7 file hashes (checked against raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7), so it is the local copies that were altered after being copied, apparently by running `forge fmt` over lib/ (every hunk is a line reflow; with all whitespace stripped each local file is byte-identical to upstream). No production code is affected: the OpenZeppelin files all verify, and forge-std is test-only, so the token's compiled bytecode is unchanged. The defect is that the integrity check the project offers its reviewers fails, and the 'unmodified' statement is false, which a deployment review relying on the documented verification step would flag as a blocker until resolved. Fix: either restore the seven files from the v1.9.7 archive (the hashes in lib/SHA256SUMS are already correct for that), or regenerate lib/SHA256SUMS from the formatted files and amend the 'No dependency source files were modified' sentence to say the forge-std copies were reformatted.","line":22,"path":"DEPENDENCIES.md","reproduction":"From the repository root run `sha256sum --check lib/SHA256SUMS`. Expected (per DEPENDENCIES.md line 22-23): every line reports OK. Actual: `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, `sha256sum: WARNING: 7 computed checksums did NOT match`. For example `sha256sum lib/forge-std/src/Vm.sol` gives a1b1c82924ae... while lib/SHA256SUMS (and upstream v1.9.7) says 9068805b59ac...; `diff` of the two shows only multi-line signature reflows such as `function getDeployment(string calldata contractName, uint64 chainId) external view returns (address deployedAddress);` joined onto one line.","severity":"low","snippet":"Individual copied files are pinned in `lib/SHA256SUMS`. Verify them locally from\nthe repository root with `sha256sum --check lib/SHA256SUMS`.","title":"lib/SHA256SUMS does not verify: seven vendored forge-std files differ from the pinned v1.9.7 hashes the docs tell reviewers to check"}],"hash":"243c4d6eeb55828f585ec4c4bf4a7d3a08aa441c808718b111ac0f52c8463931","nodeId":"20794abe-acc5-41c4-b81e-4315bf9cc213","outcome":"completed","summary":"The review is complete and the findings file is written and validated.\n\n**Outcome.** The token's math holds. Idatsy is OpenZeppelin v5.1.0 ERC20 with one constructor mint and nothing else, so there is no division, rate, fee, scaling or downcast anywhere in the value path. I found no defect in my area. One low finding outside the area is reported.\n\n**What I checked, per guide**\n\n- **Math Precision.** The supply literal evaluates to exactly 10^27, which clears the aderyn large-literal lead. The supply fits comfortably under the int128 and uint128 limits Uniswap v4 uses for deltas and liquidity. Balance updates in the inherited `_update` are guarded before their unchecked subtraction, and the unchecked add cannot exceed the fixed supply.\n- **Boundary.** No external calls, no payable or receive function, no bytes decoding. The only sentinel branches are the zero-address checks, walked on both sides. A scratch Foundry test exercised transfer of the whole balance, balance plus one, max uint, self-transfer, zero amounts from empty accounts, and allowances at zero, exact, max minus one and max. All behaved as intended and the scratch file has been removed.\n- **Numerical Gap.** No seam exists because every state change is an exact add or subtract of the caller's value. The existing invariant suite ran 8192 calls with no unexpected reverts.\n\n**The one finding (low).** The dependency notes say no vendored source was modified and tell reviewers to run the checksum verification. That command fails on seven forge-std files. The checksums match upstream v1.9.7, so the local copies were reformatted after copying. With whitespace stripped they are byte-identical to upstream, so no behaviour changed and production bytecode is unaffected. The reproduction is the single command below.\n\n```\nsha256sum --check lib/SHA256SUMS\n```\n\n**Coverage.** All three listed entry points are marked `holds`, plus four invariant rows covering fixed supply, narrow-type fit, boundary enumeration and the precision seams. Nothing was left unreached.","treeHash":null,"usage":{"cachedInputTokens":651030,"cost":{"source":"runtime","usdMicros":2365260},"inputTokens":354,"model":"claude-fable-5-1","outputTokens":14105,"runtime":"claude","turns":23,"wallClockMs":199864}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a0f4c3f900dedd4a","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states that no vendored dependency source was modified (line 13) and tells reviewers to verify the tree with `sha256sum --check lib/SHA256SUMS` (lines 22-23). That command fails on the committed tree for seven forge-std files: lib/forge-std/src/StdJson.sol, StdToml.sol, StdAssertions.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. I reproduced this independently: the forge-std v1.9.7 release archive downloaded from codeload.github.com hashes to 45157353ab49eab01d294565866731e599b32401757229689ee459aa26b7ee94 (the value DEPENDENCIES.md line 20 gives), its src/Vm.sol hashes to 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1 (the value lib/SHA256SUMS lists), and the committed lib/forge-std/src/Vm.sol hashes differently. Stripping all whitespace from each of the seven committed files and from its upstream counterpart yields identical digests, so the differences are whitespace and line-wrapping only (a formatter pass over lib/). The OpenZeppelin v5.1.0 archive hashes to the value on line 18 and all five vendored OpenZeppelin source files (ERC20, IERC20, IERC20Metadata, Context, draft-IERC6093) are byte-identical to upstream, so production bytecode is unaffected; forge-std is test-only. Impact is limited to provenance: the repository's stated verification procedure fails as written and the 'not modified' statement is false, so a reviewer following the documented step cannot distinguish this benign reformatting from tampering without repeating the upstream comparison. All four specialists reported the same root cause at low severity; this is the single merged finding. Fix: restore the seven files to their upstream v1.9.7 bytes (the SHA256SUMS entries are already correct for that), or regenerate lib/SHA256SUMS from the committed files and amend line 13 to say forge-std was reformatted. Keep lib/ out of any `forge fmt` run.","line":13,"path":"DEPENDENCIES.md","reproduction":"From the repository root run `sha256sum --check lib/SHA256SUMS`. Expected (per DEPENDENCIES.md lines 13 and 22-23): every line reports OK and the command exits 0. Actual: `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, `sha256sum: WARNING: 7 computed checksums did NOT match`, exit status 1. Confirming which side is wrong: download https://codeload.github.com/foundry-rs/forge-std/tar.gz/refs/tags/v1.9.7 (sha256 45157353ab49eab01d294565866731e599b32401757229689ee459aa26b7ee94), extract it, and `sha256sum forge-std-1.9.7/src/Vm.sol` gives 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1, which equals the lib/SHA256SUMS entry, while `sha256sum lib/forge-std/src/Vm.sol` differs. `diff <(tr -d ' \\n\\t' < lib/forge-std/src/Vm.sol) <(tr -d ' \\n\\t' < forge-std-1.9.7/src/Vm.sol)` is empty, and the same holds for the other six files. All OpenZeppelin files under lib/openzeppelin-contracts pass the check and `cmp` byte-identical to the v5.1.0 archive.","severity":"low","snippet":"Library is used only by tests. No dependency source files were modified.","title":"Documented dependency integrity check fails: seven vendored forge-std files do not match lib/SHA256SUMS or upstream v1.9.7 bytes (merged from audit_flow, audit_permissions, audit_math, audit_economics"}],"hash":"5b4064ba33923e1e50f3862976821bb70f7cc971f1e1668367ce6fb2188e84ea","nodeId":"bb396eaf-a344-42b0-a9e2-c5bc72f11594","outcome":"completed","summary":"The review is complete. The findings file is valid JSON, the quoted snippet matches line 13 of DEPENDENCIES.md, and no repository file was changed.\n\n**Outcome.** The Idatsy token is a plain, unmodified OpenZeppelin v5.1.0 ERC-20 with no custom logic. I found no defect in the code itself. One low finding is kept, merged from the four identical specialist reports.\n\n**What I verified**\n\n- The constructor takes no arguments and mints exactly one billion tokens with 18 decimals to msg.sender, which matches the manifest's supply and empty constructor arguments.\n- The three entry points (approve, transfer, transferFrom) are the upstream OpenZeppelin implementations. The vendored ERC20, IERC20, IERC20Metadata, Context and draft-IERC6093 files are byte-identical to the v5.1.0 release archive.\n- The runtime contains no DELEGATECALL, CALLCODE or SELFDESTRUCT and is far under the size limits. There is no mint, burn, owner, pause or blacklist function.\n- The project's 55 tests and its invariant suite pass. The protected floor tests could not be run here because they import the platform's Uniswap v4 harness, which is not in this tree, so I checked each of their assertions against the code by hand instead.\n\n**The kept finding (low).** All four specialists reported the same root cause, which I reproduced independently. DEPENDENCIES.md says no dependency source was modified and tells reviewers to run the checksum verification, but that command fails for seven forge-std files. I downloaded the forge-std v1.9.7 archive, confirmed its hash matches the one documented, confirmed the SHA256SUMS entries are the genuine upstream hashes, and confirmed the committed files differ from upstream by whitespace only. Production bytecode is unaffected since forge-std is test-only. The fix is to restore the seven files to upstream bytes or regenerate the checksum file and correct the documentation.\n\n**Coverage.** All three entry points are marked holds, with three additional rows for the supply invariant, deployability, and the manifest.","treeHash":null,"usage":{"cachedInputTokens":280528,"cost":{"source":"runtime","usdMicros":1232903},"inputTokens":194,"model":"claude-fable-5-1","outputTokens":7291,"runtime":"claude","turns":7,"wallClockMs":159613}},{"artifacts":[],"attempt":1,"bundleHash":"2b98999c3d268eccff6de3d35b17b55123fb039ba58b28509787144fce37288d","device":"079b3bf4557d8811","findings":[],"hash":"bbf12a89ce76ccbd77aef3976d9ac4223bed1f24dfe5af5002723e6a1ec965fc","nodeId":"3ef2e07b-60f5-47ef-9149-2a1fa463d154","outcome":"completed","summary":"I've written `launch.json` for the Idatsy launch, and it is the only file changed.\n\n**What's in it:**\n- **Token:** the contract is `Idatsy` (name \"Idatsy\", symbol \"IDATSY\", 18 decimals). `constructorArgs` is empty because the constructor in `src/Idatsy.sol` takes no arguments.\n- **Supply:** `totalSupply` is `\"1000000000000000000000000000\"`. That is the 1,000,000,000 × 10^18 the constructor mints once to `msg.sender`, which is the factory.\n- **Application contracts:** the list is empty. The accepted tree contains only the token, so there is nothing else to name.\n- **Pool:** paired with native ETH (the zero address), fee 12500, tick spacing 60, and the one-to-one `initialPrice`. All of these come from the launch's own terms.\n- **Economics:** copied exactly from the brief.\n- **Notes:** a short description of the token. It is a fixed-supply ERC-20 with no mint, burn, fee, pause, owner or upgrade function, so transfers during the launch move exactly what they say.\n\n**Checks:** the file parses as valid JSON. `forge build` and `forge test` with your fuzz seed passed all 37 tests. Those tests are the repo's own and don't check the manifest itself. I couldn't run the two protected test files locally because the files they import (`floor/OwnerChecks.sol`, `src/LaunchLiquidity.sol` and others) aren't in this tree. So the manifest's schema compliance was checked by reading it against the rules in the brief, not by a validator.","treeHash":"dfb2eea6fbe43883f5866a0aa6a4ff1aec034f88","usage":{"cachedInputTokens":49841,"cost":{"source":"runtime","usdMicros":129327},"inputTokens":367,"model":"claude-opus-5-5","outputTokens":1443,"runtime":"claude","turns":3,"wallClockMs":36077}},{"artifacts":[],"attempt":1,"bundleHash":"1f7cb12c13359b817def3633a35e8bc959fd59f96040a363cc37812cc6588f70","device":"c4f9adf8d634c796","findings":[],"hash":"fd3d89524f74886009bf48c01657458ac2246113704cf392f8b721b6cbf7a8c0","nodeId":"b63dd57d-8601-40a8-8b15-47ca05268bac","outcome":"completed","summary":"Implemented Idatsy (IDATSY): 1 billion tokens, 18 decimals, minted once entirely to the deployer.\n\n- Solidity 0.8.26 build passes, including offline rebuild.\n- All unit, fuzz, and invariant tests pass with the supplied seed.\n- `forge fmt --check` passes.\n- Dependencies are vendored; deployment parameters and responsibilities are documented in [README.md](/root/.identitymd/work/4d2f9a8c-2ecf-430b-a25a-a69c23001eb4/b63dd57d-8601-40a8-8b15-47ca05268bac/README.md).","treeHash":"9eb66f0a7eef9297f324120aadcc38400f94ab8f","usage":{"cachedInputTokens":679808,"cost":{"source":"estimated","usdMicros":2038988},"inputTokens":53363,"model":"gpt-6-astra","outputTokens":16511,"runtime":"codex","turns":5,"wallClockMs":441302}},{"artifacts":[],"attempt":1,"bundleHash":"25e02744dc805d63d60223560902d2b4447d4cab48341a1eb222138451f5f6a0","device":"fe5e46fb044c6af1","findings":[],"hash":"fd5416f294c09406864776a564bac3c3501b5bdbacf1cdaf172bed8b960365ef","nodeId":"9389daee-3d6a-485c-8672-e5169b83bc32","outcome":"completed","summary":"I added 20 tests to the existing Idatsy suite and found no defects in the token. The full suite passes under the verifier's fuzz seed: 53 unit and fuzz tests plus two invariant suites, each with 128 runs and 8,192 calls and no reverts. I didn't write `.imd-findings.json` because there is nothing to report.\n\n`src/Idatsy.sol` is a bare OpenZeppelin v5.1 ERC-20. Its constructor mints the 1,000,000,000 × 10¹⁸ supply once to `msg.sender`, and it has no other functions of its own.\n\n**New files (the existing tests are unchanged):**\n- **`test/IdatsyLaunch.t.sol`** (17 tests):\n  - **Launch in one call:** a stand-in factory deploys the token with CREATE2 and pays out the 10% swarm share, the pool share and the remainder in a single call. Each share arrives whole, including when the pool share is fuzzed from 0 to 90%. Redeploying with the same salt reverts.\n  - **No privileged access:** 21 mint, owner, pause, freeze and seize style calls, plus `burnFrom` and an unapproved `transferFrom`, all fail from both the deployer and a stranger. The holder's balance is unchanged afterwards and they can still transfer.\n  - **Malformed calls:** an unknown selector, empty calldata, a truncated selector and a `transfer` with its amount cut off all revert.\n  - **Bytecode scan:** the token's runtime code has no reachable DELEGATECALL, CALLCODE or SELFDESTRUCT.\n  - **Edge cases:** an allowance one below the maximum is spent down normally; a maximum allowance still can't exceed the balance; approving yourself works; approvals stay separate per owner and spender; transfers to fuzzed addresses work; strangers can't spend without an allowance. Tokens sent to the token's own address stay there, and nobody can pull them back out.\n  - **Wallet gas:** the supplied helper confirms `transfer`, `approve` and `transferFrom` (with both a limited and an unlimited allowance) behave the same at a wallet's estimated gas. Nothing in the token checks gas left, forwards a fixed amount of gas or catches a failed call, so this check isn't strictly required here.\n- **`test/IdatsyOpenActors.invariant.t.sol`**: an invariant suite whose set of holders grows as tokens reach new addresses, including the token's own address. It checks that the supply never changes and the zero address never holds tokens, that all holders' balances add up to the supply, and that no spender ever moves more than it was approved. Each allowance must also equal what was approved minus what was spent. Its handler also tries to overspend and confirms the attempt fails and changes nothing.\n- **`test/helpers/WalletGas.sol`**: the supplied helper, copied unchanged.\n\nI haven't committed anything. The repository root also has untracked files I didn't create: shell and git config dotfiles, `.claude/`, `.idea`, `.vscode`, `.mcp.json` and `.gitmodules`. I left them alone. They should be kept out of the submission, which can only include `test/`.","treeHash":"3683ec79d2cd1448c33968fa1de3add3f1df3360","usage":{"cachedInputTokens":473953,"cost":{"source":"runtime","usdMicros":815124},"inputTokens":21,"model":"claude-opus-5-5","outputTokens":12217,"runtime":"claude","turns":12,"wallClockMs":211655}}],"verification":[{"checks":[{"durationMs":1220,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.14s\nCompiler run successful!\n","passed":true},{"durationMs":3325,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 36 tests for test/Idatsy.t.sol:IdatsyTest\n[PASS] testFuzz_approvalStoresFullUint256Range(uint256) (runs: 1000, μ: 83684, ~: 84015)\n[PASS] testFuzz_selfTransferNeverCreatesTokens(uint256) (runs: 1000, μ: 55275, ~: 55015)\nLogs:\n  Bound result 12161\n\n[PASS] testFuzz_transferAboveAllowanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 134057, ~: 134740)\nLogs:\n  Bound result 1000000000\n  Bound result 20781\n\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 127846, ~: 128081)\nLogs:\n  Bound result 978351698542031315874975289\n  Bound result 16880501409105115148401720407382507390116091861822\n\n[PASS] testFuzz_transferFromSpendsOnlyApprovedAmount(uint256,uint256) (runs: 1000, μ: 163157, ~: 165587)\nLogs:\n  Bound result 653562253422716698250129884\n  Bound result 11394781190842517923321733\n\n[PASS] testFuzz_transferPreservesSupplyAndBalances(uint256) (runs: 1000, μ: 92246, ~: 92496)\nLogs:\n  Bound result 482551631019192390541301549\n\n[PASS] test_approvalCanBeReplacedAndRevoked() (gas: 167926)\n[PASS] test_approveEmitsEventAndDoesNotMoveTokens() (gas: 88888)\n[PASS] test_approveZeroSpenderReverts() (gas: 37767)\n[PASS] test_constructorEmitsExactlyOneMintEvent() (gas: 591906)\n[PASS] test_constructorMintsEntireSupplyToDeployer() (gas: 67474)\n[PASS] test_create2NeedsNoConstructorArgumentsOrExternalConfiguration() (gas: 811691)\n[PASS] test_deployerCannotSpendHolderTokensWithoutApproval() (gas: 95764)\n[PASS] test_factoryReceivesSupplyInsteadOfCallerOrTransactionOrigin() (gas: 843780)\n[PASS] test_holderNeedsAllowanceToUseTransferFrom() (gas: 89590)\n[PASS] test_infiniteAllowanceIsNotDecreased() (gas: 215285)\n[PASS] test_insufficientBalanceRevertsWithoutChanges() (gas: 68081)\n[PASS] test_launchDistributionClaimsAndPoolTransfersArriveWhole() (gas: 1181108)\n[PASS] test_metadata() (gas: 41272)\n[PASS] test_nativeCurrencyPaymentReverts() (gas: 45870)\n[PASS] test_noMintBurnAdminOrUpgradeEntryPointsForAnyone() (gas: 955533)\n[PASS] test_selfTransferPreservesBalanceAndSupply() (gas: 54029)\n[PASS] test_transferEntireBalance() (gas: 151463)\n[PASS] test_transferFromCanExhaustAllowance() (gas: 162549)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 126858)\n[PASS] test_transferFromOverAllowanceRevertsWithoutChanges() (gas: 116504)\n[PASS] test_transferFromSelfStillConsumesAllowance() (gas: 110057)\n[PASS] test_transferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 173202)\n[PASS] test_transferFromToZeroRollsBackAllowanceAndBalances() (gas: 125210)\n[PASS] test_transferFromZeroSenderRevertsEvenForZeroAmount() (gas: 68184)\n[PASS] test_transferMovesExactAmountAndEmitsEvent() (gas: 91593)\n[PASS] test_transferToZeroReverts() (gas: 47858)\n[PASS] test_unapprovedSpenderCannotUseSomeoneElsesAllowance() (gas: 116599)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 63093)\n[PASS] test_zeroTransferFromNeedsNoAllowance() (gas: 81559)\n[PASS] test_zeroTransferToZeroReverts() (gas: 30598)\nSuite result: ok. 36 passed; 0 failed; 0 skipped; finished in 39.53ms (231.17ms CPU time)\n\nRan 1 test for test/Idatsy.invariant.t.sol:IdatsyInvariantTest\n[PASS]\nIdatsyInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_balancesMatchModelAndConserveAllTokens\n[PASS] invariant_supplyRemainsFixed\n IdatsyInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭---------------+--------------------+-------+---------+----------╮\n| Contract      | Selector           | Calls | Reverts | Discards |\n+=================================================================+\n| IdatsyHandler | approve            | 1649  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | overdraw           | 1626  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | overspendAllowance | 1629  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | transfer           | 1625  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | transferFrom       | 1663  | 0       | 0        |\n╰---------------+--------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 14\n  Bound result 222882869126268588185155636\n  Bound result 0\n  Bound result 0\n  Bound result 695338663018059474024086017\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 0\n  Bound result 0\n  Bound result 50000000000000000000\n  Bound result 0\n  Bound result 3810\n  Bound result 9\n  Bound result 3306\n  Bound result 0\n  Bound result 3235\n  Bound result 493408312\n  Bound result 0\n  Bound result 0\n  Bound result 1487\n  Bound result 6915\n  Bound result 1388\n  Bound result 3\n  Bound result 3367\n  Bound result 10\n  Bound result 827392775579066117325013749\n  Bound result 3\n  Bound result 90775585041832307971297065\n  Bound result 655352920399704493358733881\n  Bound result 1000000000\n  Bound result 10\n  Bound result 3\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.21s (3.21s CPU time)\n\nRan 2 test suites in 3.21s (3.25s CPU time): 37 tests passed, 0 failed, 0 skipped (37 total tests)\n","passed":true},{"durationMs":34,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Idatsy.approve(address,uint256)\",\"Idatsy.transfer(address,uint256)\",\"Idatsy.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":6,\"DEPENDENCIES.md\":28,\"LICENSE\":21,\"README.md\":135,\"foundry.toml\":19,\"launch.json\":24,\"remappings.txt\":2,\"src/Idatsy.sol\":17,\"test/Idatsy.invariant.t.sol\":127,\"test/Idatsy.t.sol\":432,\"test/helpers/TokenFactory.sol\":19},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"bbf12a89ce76ccbd77aef3976d9ac4223bed1f24dfe5af5002723e6a1ec965fc","verifiedTreeHash":"dfb2eea6fbe43883f5866a0aa6a4ff1aec034f88","verifierVersion":"0.1.0+a490e3c0"},{"checks":[{"durationMs":1109,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.04s\nCompiler run successful!\n","passed":true},{"durationMs":3550,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 36 tests for test/Idatsy.t.sol:IdatsyTest\n[PASS] testFuzz_approvalStoresFullUint256Range(uint256) (runs: 1000, μ: 83684, ~: 84015)\n[PASS] testFuzz_selfTransferNeverCreatesTokens(uint256) (runs: 1000, μ: 55275, ~: 55015)\nLogs:\n  Bound result 30000000000000000001\n\n[PASS] testFuzz_transferAboveAllowanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 134057, ~: 134740)\nLogs:\n  Bound result 97231910398817476467364001\n  Bound result 72490107143946788011050933\n\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 127846, ~: 128081)\nLogs:\n  Bound result 653562253422716698250129884\n  Bound result 4586330555149859405674230928\n\n[PASS] testFuzz_transferFromSpendsOnlyApprovedAmount(uint256,uint256) (runs: 1000, μ: 163157, ~: 165587)\nLogs:\n  Bound result 999999999999999999999999998\n  Bound result 755128852493577547379550807\n\n[PASS] testFuzz_transferPreservesSupplyAndBalances(uint256) (runs: 1000, μ: 92246, ~: 92496)\nLogs:\n  Bound result 18564892755107600280454\n\n[PASS] test_approvalCanBeReplacedAndRevoked() (gas: 167926)\n[PASS] test_approveEmitsEventAndDoesNotMoveTokens() (gas: 88888)\n[PASS] test_approveZeroSpenderReverts() (gas: 37767)\n[PASS] test_constructorEmitsExactlyOneMintEvent() (gas: 591906)\n[PASS] test_constructorMintsEntireSupplyToDeployer() (gas: 67474)\n[PASS] test_create2NeedsNoConstructorArgumentsOrExternalConfiguration() (gas: 811691)\n[PASS] test_deployerCannotSpendHolderTokensWithoutApproval() (gas: 95764)\n[PASS] test_factoryReceivesSupplyInsteadOfCallerOrTransactionOrigin() (gas: 843780)\n[PASS] test_holderNeedsAllowanceToUseTransferFrom() (gas: 89590)\n[PASS] test_infiniteAllowanceIsNotDecreased() (gas: 215285)\n[PASS] test_insufficientBalanceRevertsWithoutChanges() (gas: 68081)\n[PASS] test_launchDistributionClaimsAndPoolTransfersArriveWhole() (gas: 1181108)\n[PASS] test_metadata() (gas: 41272)\n[PASS] test_nativeCurrencyPaymentReverts() (gas: 45870)\n[PASS] test_noMintBurnAdminOrUpgradeEntryPointsForAnyone() (gas: 955533)\n[PASS] test_selfTransferPreservesBalanceAndSupply() (gas: 54029)\n[PASS] test_transferEntireBalance() (gas: 151463)\n[PASS] test_transferFromCanExhaustAllowance() (gas: 162549)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 126858)\n[PASS] test_transferFromOverAllowanceRevertsWithoutChanges() (gas: 116504)\n[PASS] test_transferFromSelfStillConsumesAllowance() (gas: 110057)\n[PASS] test_transferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 173202)\n[PASS] test_transferFromToZeroRollsBackAllowanceAndBalances() (gas: 125210)\n[PASS] test_transferFromZeroSenderRevertsEvenForZeroAmount() (gas: 68184)\n[PASS] test_transferMovesExactAmountAndEmitsEvent() (gas: 91593)\n[PASS] test_transferToZeroReverts() (gas: 47858)\n[PASS] test_unapprovedSpenderCannotUseSomeoneElsesAllowance() (gas: 116599)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 63093)\n[PASS] test_zeroTransferFromNeedsNoAllowance() (gas: 81559)\n[PASS] test_zeroTransferToZeroReverts() (gas: 30598)\nSuite result: ok. 36 passed; 0 failed; 0 skipped; finished in 37.55ms (223.44ms CPU time)\n\nRan 1 test for test/Idatsy.invariant.t.sol:IdatsyInvariantTest\n[PASS]\nIdatsyInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_balancesMatchModelAndConserveAllTokens\n[PASS] invariant_supplyRemainsFixed\n IdatsyInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭---------------+--------------------+-------+---------+----------╮\n| Contract      | Selector           | Calls | Reverts | Discards |\n+=================================================================+\n| IdatsyHandler | approve            | 1649  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | overdraw           | 1626  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | overspendAllowance | 1629  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | transfer           | 1625  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | transferFrom       | 1663  | 0       | 0        |\n╰---------------+--------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 14\n  Bound result 222882869126268588185155636\n  Bound result 0\n  Bound result 0\n  Bound result 695338663018059474024086017\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 0\n  Bound result 0\n  Bound result 50000000000000000000\n  Bound result 0\n  Bound result 3810\n  Bound result 9\n  Bound result 3306\n  Bound result 0\n  Bound result 3235\n  Bound result 493408312\n  Bound result 0\n  Bound result 0\n  Bound result 1487\n  Bound result 6915\n  Bound result 1388\n  Bound result 3\n  Bound result 3367\n  Bound result 10\n  Bound result 827392775579066117325013749\n  Bound result 3\n  Bound result 90775585041832307971297065\n  Bound result 655352920399704493358733881\n  Bound result 1000000000\n  Bound result 10\n  Bound result 3\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.46s (3.46s CPU time)\n\nRan 2 test suites in 3.47s (3.50s CPU time): 37 tests passed, 0 failed, 0 skipped (37 total tests)\n","passed":true},{"durationMs":48,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Idatsy.approve(address,uint256)\",\"Idatsy.transfer(address,uint256)\",\"Idatsy.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":6,\"DEPENDENCIES.md\":28,\"LICENSE\":21,\"README.md\":135,\"foundry.toml\":19,\"remappings.txt\":2,\"src/Idatsy.sol\":17,\"test/Idatsy.invariant.t.sol\":127,\"test/Idatsy.t.sol\":432,\"test/helpers/TokenFactory.sol\":19},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":452,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":246,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/Idatsy.sol:12: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"fd3d89524f74886009bf48c01657458ac2246113704cf392f8b721b6cbf7a8c0","verifiedTreeHash":"9eb66f0a7eef9297f324120aadcc38400f94ab8f","verifierVersion":"0.1.0+a490e3c0"},{"checks":[{"durationMs":1725,"exitCode":0,"name":"build","output":"Compiling 31 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.63s\nCompiler run successful!\n","passed":true},{"durationMs":16123,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 17 tests for test/IdatsyLaunch.t.sol:IdatsyLaunchTest\n[PASS] testFuzz_launchAnyPoolShareConservesSupply(uint256,bytes32) (runs: 256, μ: 1334286, ~: 1335069)\nLogs:\n  Bound result 7334\n\n[PASS] testFuzz_strangerCannotSpendWithoutAllowance(address,uint256) (runs: 1000, μ: 47869, ~: 47681)\nLogs:\n  Bound result 16344\n\n[PASS] testFuzz_transferBetweenArbitraryAddresses(address,uint256) (runs: 1000, μ: 100704, ~: 100898)\nLogs:\n  Bound result 138360828125064767145033106\n\n[PASS] test_allowanceOneBelowMaxIsSpent() (gas: 124770)\n[PASS] test_approvalsArePerOwnerAndPerSpender() (gas: 153594)\n[PASS] test_approveAndTransferFromSameAtWalletGas() (gas: 3486362)\n[PASS] test_approveSelfAndSpendOwnAllowance() (gas: 129331)\n[PASS] test_factoryAndStrangersCannotMintFreezeOrSeize() (gas: 2571425)\n[PASS] test_launchInOneTransactionMovesEveryShareWhole() (gas: 1353197)\n[PASS] test_maxAllowanceStillBoundedByBalance() (gas: 98677)\n[PASS] test_onlyTheControllerDrivesTheStandInFactory() (gas: 761440)\n[PASS] test_runtimeCodeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 2718280)\n[PASS] test_sameSaltCannotRedeployOverTheLaunchedToken() (gas: 1040473366)\n[PASS] test_shortCalldataTransferReverts() (gas: 45527)\n[PASS] test_transferSameAtWalletGas() (gas: 2173639)\n[PASS] test_transferToTheTokenContractIsKeptAndCannotBeRecovered() (gas: 103653)\n[PASS] test_unknownSelectorAndEmptyCalldataRevert() (gas: 73323)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 48.70ms (167.30ms CPU time)\n\nRan 36 tests for test/Idatsy.t.sol:IdatsyTest\n[PASS] testFuzz_approvalStoresFullUint256Range(uint256) (runs: 1000, μ: 83724, ~: 84015)\n[PASS] testFuzz_selfTransferNeverCreatesTokens(uint256) (runs: 1000, μ: 55277, ~: 55015)\nLogs:\n  Bound result 18564892755107600280454\n\n[PASS] testFuzz_transferAboveAllowanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 134151, ~: 134752)\nLogs:\n  Bound result 6677\n  Bound result 30000000000000000000\n\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 127853, ~: 128081)\nLogs:\n  Bound result 10\n  Bound result 20781\n\n[PASS] testFuzz_transferFromSpendsOnlyApprovedAmount(uint256,uint256) (runs: 1000, μ: 163592, ~: 165587)\nLogs:\n  Bound result 978351698542031315874975289\n  Bound result 681349304525874827114015902\n\n[PASS] testFuzz_transferPreservesSupplyAndBalances(uint256) (runs: 1000, μ: 92322, ~: 92496)\nLogs:\n  Bound result 16023499079350024663\n\n[PASS] test_approvalCanBeReplacedAndRevoked() (gas: 167926)\n[PASS] test_approveEmitsEventAndDoesNotMoveTokens() (gas: 88888)\n[PASS] test_approveZeroSpenderReverts() (gas: 37767)\n[PASS] test_constructorEmitsExactlyOneMintEvent() (gas: 591906)\n[PASS] test_constructorMintsEntireSupplyToDeployer() (gas: 67474)\n[PASS] test_create2NeedsNoConstructorArgumentsOrExternalConfiguration() (gas: 811691)\n[PASS] test_deployerCannotSpendHolderTokensWithoutApproval() (gas: 95764)\n[PASS] test_factoryReceivesSupplyInsteadOfCallerOrTransactionOrigin() (gas: 843780)\n[PASS] test_holderNeedsAllowanceToUseTransferFrom() (gas: 89590)\n[PASS] test_infiniteAllowanceIsNotDecreased() (gas: 215285)\n[PASS] test_insufficientBalanceRevertsWithoutChanges() (gas: 68081)\n[PASS] test_launchDistributionClaimsAndPoolTransfersArriveWhole() (gas: 1181108)\n[PASS] test_metadata() (gas: 41272)\n[PASS] test_nativeCurrencyPaymentReverts() (gas: 45870)\n[PASS] test_noMintBurnAdminOrUpgradeEntryPointsForAnyone() (gas: 955533)\n[PASS] test_selfTransferPreservesBalanceAndSupply() (gas: 54029)\n[PASS] test_transferEntireBalance() (gas: 151463)\n[PASS] test_transferFromCanExhaustAllowance() (gas: 162549)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 126858)\n[PASS] test_transferFromOverAllowanceRevertsWithoutChanges() (gas: 116504)\n[PASS] test_transferFromSelfStillConsumesAllowance() (gas: 110057)\n[PASS] test_transferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 173202)\n[PASS] test_transferFromToZeroRollsBackAllowanceAndBalances() (gas: 125210)\n[PASS] test_transferFromZeroSenderRevertsEvenForZeroAmount() (gas: 68184)\n[PASS] test_transferMovesExactAmountAndEmitsEvent() (gas: 91593)\n[PASS] test_transferToZeroReverts() (gas: 47858)\n[PASS] test_unapprovedSpenderCannotUseSomeoneElsesAllowance() (gas: 116599)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 63093)\n[PASS] test_zeroTransferFromNeedsNoAllowance() (gas: 81559)\n[PASS] test_zeroTransferToZeroReverts() (gas: 30598)\nSuite result: ok. 36 passed; 0 failed; 0 skipped; finished in 48.98ms (278.07ms CPU time)\n\nRan 1 test for test/Idatsy.invariant.t.sol:IdatsyInvariantTest\n[PASS]\nIdatsyInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_balancesMatchModelAndConserveAllTokens\n[PASS] invariant_supplyRemainsFixed\n IdatsyInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭---------------+--------------------+-------+---------+----------╮\n| Contract      | Selector           | Calls | Reverts | Discards |\n+=================================================================+\n| IdatsyHandler | approve            | 1649  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | overdraw           | 1626  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | overspendAllowance | 1629  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | transfer           | 1625  | 0       | 0        |\n|---------------+--------------------+-------+---------+----------|\n| IdatsyHandler | transferFrom       | 1663  | 0       | 0        |\n╰---------------+--------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 253\n  Bound result 222882869126268588185155636\n  Bound result 1\n  Bound result 141\n  Bound result 695338663018059474796211352\n  Bound result 0\n  Bound result 0\n  Bound result 5732\n  Bound result 57\n  Bound result 0\n  Bound result 6\n  Bound result 100000000000000000000\n  Bound result 0\n  Bound result 4008\n  Bound result 95\n  Bound result 3413\n  Bound result 1151\n  Bound result 922\n  Bound result 493408312\n  Bound result 0\n  Bound result 0\n  Bound result 5080\n  Bound result 0\n  Bound result 6938\n  Bound result 20000000000000000000\n  Bound result 3871\n  Bound result 0\n  Bound result 827392775579066117325013749\n  Bound result 0\n  Bound result 624761105324172320600156355\n  Bound result 655352920399704493358733881\n  Bound result 1000000000000000000\n  Bound result 18\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.40s (3.40s CPU time)\n\nRan 1 test for test/IdatsyOpenActors.invariant.t.sol:IdatsyOpenActorsInvariantTest\n[PASS]\nIdatsyOpenActorsInvariantTest invariants:\n[PASS] invariant_holdersSumToSupply\n[PASS] invariant_noSpenderExceedsWhatWasGranted\n[PASS] invariant_supplyNeverChanges\n IdatsyOpenActorsInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------------+---------------+-------+---------+----------╮\n| Contract          | Selector      | Calls | Reverts | Discards |\n+================================================================+\n| OpenActorsHandler | approve       | 1604  | 0       | 0        |\n|-------------------+---------------+-------+---------+----------|\n| OpenActorsHandler | transferFrom  | 1668  | 0       | 0        |\n|-------------------+---------------+-------+---------+----------|\n| OpenActorsHandler | transferKnown | 1687  | 0       | 0        |\n|-------------------+---------------+-------+---------+----------|\n| OpenActorsHandler | transferToNew | 1610  | 0       | 0        |\n|-------------------+---------------+-------+---------+----------|\n| OpenActorsHandler | tryOverspend  | 1623  | 0       | 0        |\n╰-------------------+---------------+-------+---------+----------╯\n\nLogs:\n  Bound result 781977366984781074901378974\n  Bound result 0\n  Bound result 0\n  Bound result 6317\n  Bound result 206947\n  Bound result 1103\n  Bound result 1000000000000000000\n  Bound result 175\n  Bound result 91\n  Bound result 798\n  Bound result 205841\n  Bound result 40\n  Bound result 0\n  Bound result 3304\n  Bound result 154\n  Bound result 32\n  Bound result 255\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 371\n  Bound result 233017658213709757501273874\n  Bound result 0\n  Bound result 0\n  Bound result 1104\n  Bound result 5\n  Bound result 0\n  Bound result 21\n  Bound result 865586392385952353175758449\n  Bound result 4351\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 10000000000000000000\n  Bound result 3\n  Bound result 4\n  Bound result 13\n  Bound result 30000000000000000000\n  Bound result 242\n  Bound result 283\n  Bound result 2481\n  Bound result 1\n  Bound result 205843\n  Bound result 0\n  Bound result 3411\n  Bound result 0\n  Bound result 0\n  Bound result 24576\n  Bound result 0\n  Bound result 0\n  Bound result 338643001933889779429582491\n  Bound result 91\n  Bound result 1000000000000000000000000000\n  Bound result 3728\n  Bound result 0\n  Bound result 1589\n  Bound result 123000000000000000000\n  Bound result 7557\n  Bound result 123000000000000000000\n  Bound result 937\n  Bound result 673322677490907967411023810\n  Bound result 0\n  Bound result 0\n  Bound result 5890\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 16.01s (16.01s CPU time)\n\nRan 4 test suites in 16.01s (19.51s CPU time): 55 tests passed, 0 failed, 0 skipped (55 total tests)\n","passed":true},{"durationMs":38,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Idatsy.approve(address,uint256)\",\"Idatsy.transfer(address,uint256)\",\"Idatsy.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":6,\"DEPENDENCIES.md\":28,\"LICENSE\":21,\"README.md\":135,\"foundry.toml\":19,\"remappings.txt\":2,\"src/Idatsy.sol\":17,\"test/Idatsy.invariant.t.sol\":127,\"test/Idatsy.t.sol\":432,\"test/IdatsyLaunch.t.sol\":277,\"test/IdatsyOpenActors.invariant.t.sol\":156,\"test/helpers/TokenFactory.sol\":19,\"test/helpers/WalletGas.sol\":76},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"fd5416f294c09406864776a564bac3c3501b5bdbacf1cdaf172bed8b960365ef","verifiedTreeHash":"3683ec79d2cd1448c33968fa1de3add3f1df3360","verifierVersion":"0.1.0+a490e3c0"}]}