{"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":"35630e3a-9075-4c31-b8b6-d079d96ffd83","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"47c1466c9e5b926bf7766c26c70fc79523143bd8e093623a24cdb8fb89245d08","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"ac06cf952c7f129a9d45d80a02ff2295dd461924b411f05873de718c6b23f3c7","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"a8d40b8575e5d542b8133d5f4e52600ff14ca1e94b06a82001b2497f33d28fe6","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"821057f7a73da007178637ed2b0734a1b967095b6d11cb8ce0cc8f6ce13ea01c","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"07cfef6982dfbb906fe32092b3d9a12e518d62277d40fc08c48dd6ed9502d0b7","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"930b1b70e8680f9c32b39b85adb2b33291a49d27b902151313de073348175fa6","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"852e7a06ae35452b6b553040b99049323e2c16ffab13333d100bbaa5eb96d59b","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"2a83eceb5d9b02878d6bb2aea5f5c14595bc234b3f8e3fa05f4cc2c063c24dc7","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: ADAM (ADAM).\nToken name: ADAM\nToken symbol: ADAM\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"43e9d13832916d7df0718c83c862de6af7e568dc9fdc94efa965c3b3bf402c6d","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"35630e3a-9075-4c31-b8b6-d079d96ffd83","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-839-adam"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51234","feedbackHash":"dca0a3c934af59cf82c3a004c8deb1cb533242bcd447499ee1271ccde9dcd71e","nodeKey":"audit_economics","submissionHash":"47c1466c9e5b926bf7766c26c70fc79523143bd8e093623a24cdb8fb89245d08","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51140","feedbackHash":"9d623d9de98365c73ffed4c8e6d7ecd8a3d293dd00769dd4821954db9309d319","nodeKey":"audit_flow","submissionHash":"ac06cf952c7f129a9d45d80a02ff2295dd461924b411f05873de718c6b23f3c7","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51528","feedbackHash":"618d64641030ba4ed937488a5ea0df7eaacdee02bd0fbf7d02d3f08de0505269","nodeKey":"audit_judge","submissionHash":"a8d40b8575e5d542b8133d5f4e52600ff14ca1e94b06a82001b2497f33d28fe6","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50907","feedbackHash":"12f7562dda60ec8cab0cd12650446ea3b9ce53d0c970d423646fc0d54753d3b9","nodeKey":"audit_math","submissionHash":"821057f7a73da007178637ed2b0734a1b967095b6d11cb8ce0cc8f6ce13ea01c","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51082","feedbackHash":"aa8b0a510229c3c7066bd849494daf7e670435e6a30cb9a5223dfc247bcccff3","nodeKey":"audit_permissions","submissionHash":"07cfef6982dfbb906fe32092b3d9a12e518d62277d40fc08c48dd6ed9502d0b7","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51456","feedbackHash":"5eec46596b3ea3b2ff78834abeac63253d606b44bbf9ae4954e457017d6106a7","nodeKey":"build_contract_project","submissionHash":"930b1b70e8680f9c32b39b85adb2b33291a49d27b902151313de073348175fa6","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"50999","feedbackHash":"a71303167d6b1338e87584fec9e3826ecad9b0b9d51ba24b1277be288fdddfb0","nodeKey":"manifest","submissionHash":"852e7a06ae35452b6b553040b99049323e2c16ffab13333d100bbaa5eb96d59b","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52094","feedbackHash":"47a6d730b71659670043959a5f4a33afc9bb3367994dba001d5c2af50c6a2d35","nodeKey":"write_foundry_tests","submissionHash":"2a83eceb5d9b02878d6bb2aea5f5c14595bc234b3f8e3fa05f4cc2c063c24dc7","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"74218235cd0ee6a097acc29ac1638af0e69fd8b9ce4a13b5fb3470702e736a44","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"f47f953f8e35921e","findings":[{"citation":"resolved","description":"README.md line 23 states that DEPENDENCIES.json records the SHA-256 hashes of the vendored content so a reviewer can verify provenance offline. The recorded hashes are those of the upstream forge-std v1.9.7 files at commit 77041d2c (confirmed by fetching the upstream files: their SHA-256 equals the recorded value). The files actually committed under lib/forge-std/src/ were run through `forge fmt` (line_length 120) afterwards, so seven of them hash differently: StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol. Stripping all whitespace from the upstream and the committed copies gives identical content, so the difference is formatting only and no code was altered. All six OpenZeppelin files (the production dependency of src/ADAM.sol) are byte-identical to upstream v5.1.0 commit 69c8def5 and their recorded hashes verify. Impact: the provenance record the README offers as the trust anchor for the test tooling fails verification, so an offline reviewer cannot use it to distinguish a harmless reflow from a tampered cheatcode interface without re-fetching upstream. No production behaviour is affected. Fix: either re-record the hashes of the committed files, or commit the unformatted upstream files (and exclude lib/ from `forge fmt`) so the existing record verifies.","line":26,"path":"DEPENDENCIES.json","reproduction":"State: the committed tree at HEAD 5c5a8ec. Input: run from the repository root `python3 -I -c \"import json,hashlib,os; [print(hashlib.sha256(open(os.path.join(d['path'],r),'rb').read()).hexdigest()==h, r) for d in json.load(open('DEPENDENCIES.json')) for r,h in d['sha256'].items()]\"`. Expected (per README line 23): every line prints True. Actual: seven lines print False, all under lib/forge-std: src/StdAssertions.sol recorded d4c89eec70d267de… actual 3fbf4a025b4fc94e…; src/StdJson.sol recorded 0211b47e93dbeb6a… actual 61bbf9b3219f3636…; src/StdToml.sol recorded de3fb35af79a1fd2… actual 187d2f0cc66b5eba…; src/Vm.sol recorded 9068805b59ac1d0e… actual a1b1c82924aecf0f…; src/console.sol recorded 896c5a5a5c235cb1… actual a2e632dcbc787bb0…; src/interfaces/IERC7540.sol recorded c6a7854c86bf3772… actual 3ae3eec94e3e6130…; src/interfaces/IMulticall3.sol recorded 6620d9c5ea2e2291… actual 1b63ca78b27d9893…. Cross-check: `curl` of https://raw.githubusercontent.com/foundry-rs/forge-std/77041d2ce690e692d6e03cc812b57d1ddaa4d505/src/Vm.sol hashes to the recorded 9068805b…, and `tr -d ' \\t\\n\\r'` applied to both copies yields identical bytes, proving a whitespace-only reflow.","severity":"info","snippet":"      \"src/StdAssertions.sol\": \"d4c89eec70d267dec6188461fbc74d3dc8c47e518d176a23417533a232ed9780\",","title":"DEPENDENCIES.json records SHA-256 hashes that do not match seven vendored forge-std files"}],"hash":"07cfef6982dfbb906fe32092b3d9a12e518d62277d40fc08c48dd6ed9502d0b7","nodeId":"0a34c056-a8d7-4a13-94ac-44837aea9339","outcome":"completed","summary":"The review is complete and the findings file is written and validated. The working tree is unchanged apart from the required `.imd-findings.json`.\n\n**Result: no permission, trust-gap or asymmetry defect in the ADAM token.** The contract is the vendored OpenZeppelin v5.1.0 ERC-20 plus a constructor that mints exactly 10^27 units to the deployer. There is no owner, role, initializer, pause, blacklist, mint path, fee, hook or external call. The compiled ABI exposes only approve, transfer and transferFrom as state-changing functions, and the runtime bytecode contains no DELEGATECALL, CALLCODE, SELFDESTRUCT, CALL or STATICCALL.\n\nWhat I checked against the Access Control, Trust Gap and Asymmetry guides:\n\n- **Access surface.** Every writer of balances, allowances and supply is one of the three ERC-20 paths, authorized by `msg.sender` alone. The deployer or factory cannot move a holder's balance without an allowance.\n- **Supply after deployment.** The mint branch is reachable only from the constructor. The 128-run stateful invariant and the admin-selector probes confirm supply stays fixed.\n- **Paired-function symmetry.** transfer and transferFrom share the same debit and credit path. transferFrom only adds the allowance check, with the sticky max allowance behaving as OpenZeppelin documents.\n- **Launch flows.** Transfers deliver exact amounts, so the factory, distributor and PoolManager need no exemptions and the swarm share arrives whole.\n- **Dependency trust.** All six OpenZeppelin files are byte-identical to the pinned upstream commit.\n\nOne info-level finding was recorded: `DEPENDENCIES.json` records hashes for seven forge-std files that do not match the committed copies. The files were reflowed by `forge fmt` after vendoring. Stripping whitespace makes them identical to upstream, so no code changed, but the provenance record the README offers does not verify. The fix is to re-record the hashes or re-vendor the unformatted files.\n\nCoverage has eight rows: the three listed entry points and the constructor all hold, three invariants hold, and the forge-std provenance row points at the finding. No high or critical finding exists, so no proof test was written.\n\nOne deployment note outside my area: the runtime uses PUSH0 and MCOPY, so the target chain must support the Cancun EVM. The chain is not named in this repository, so I did not record it as a finding.","treeHash":null,"usage":{"cachedInputTokens":632534,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":12820,"runtime":"claude","turns":25,"wallClockMs":235505}},{"artifacts":[],"attempt":1,"bundleHash":"22bcae698caf89f2eafa4d03c4ab00948d4c2e5cdef8a10ed93382f2d52f4659","device":"cd33e6f138d75a0c","findings":[],"hash":"2a83eceb5d9b02878d6bb2aea5f5c14595bc234b3f8e3fa05f4cc2c063c24dc7","nodeId":"11544dfa-89f4-448e-90cb-e0f6805ba38e","outcome":"completed","summary":"Extended the existing tests with failure paths, allowance boundaries, rollback checks, and random-sequence invariants.\n\n`forge build` and `forge test` pass: 40 tests, 1,000 runs per fuzz test, and 16,384 invariant handler calls.\n\nOnly the two test files changed. No defects found.","treeHash":"a0ac07388acbddb4624f6e3e242a7ad97596ad8b","usage":{"cachedInputTokens":629248,"inputTokens":74087,"model":"gpt-6.1-sol","outputTokens":7027,"runtime":"codex","turns":4,"wallClockMs":181635}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"d00f790fc692b1a4","findings":[],"hash":"47c1466c9e5b926bf7766c26c70fc79523143bd8e093623a24cdb8fb89245d08","nodeId":"6b453850-4570-4ee4-83ad-9855c2714b9b","outcome":"completed","summary":"The review is complete and the working tree holds only the findings file plus ignored build output.\n\n**Result: no defects found in the Economic Security, Invariant or Flow Gap areas.** The findings file at `.imd-findings.json` has an empty findings list and a seven-row coverage record.\n\nWhat I checked and how:\n\n- **Code under review.** The token is fifteen lines: it inherits the vendored OpenZeppelin v5.1.0 ERC-20 and mints one billion tokens with 18 decimals to the constructor caller. The vendored files match the hashes recorded in `DEPENDENCIES.json` and read as canonical upstream content. The compiled ABI exposes only approve, transfer and transferFrom as state-changing functions, and the storage layout is the five standard slots.\n- **Economic Security guide.** No external dependencies, oracles, callbacks or sentinel-address paths exist. Transfers deliver exact amounts with no fee, rebase, pause or blacklist. ERC-20 compliance holds, with reverts rather than false returns.\n- **Invariant guide.** Total supply equals the manifest string and the sum of balances in every path. No mint or burn is reachable after construction. Allowances decrement exactly and roll back on failure. The existing 128-run stateful invariant suite and 30 unit tests pass.\n- **Flow Gap guide.** I ran a scratch test modelling the launch: factory receives the whole supply under CREATE2, forwards the swarm share, settles the pool share by balance delta as Uniswap v4 does, forwards the remainder, and a trader buys and sells. Every flow arrived whole and the supply was conserved. The scratch directory was removed afterwards.\n- **Static analysis lead.** The large-numeric-literal note is informational. The literal evaluates to exactly 10^27, which matches the manifest and README.\n\n**One row is marked unreached.** A real Uniswap v4 PoolManager seed and swap could not be run because v4-core is not vendored and the protected harness needs launch environment parameters. For a plain ERC-20 with exact transfers, the modelled settlement is equivalent, so I expect that check to pass when the harness runs.\n\n**Trust assumptions to note for the author.** The whole supply sits with the deployer after construction, which is the factory in this launch design. The standard ERC-20 approve replacement race exists and is documented in the README. Neither is a defect.","treeHash":null,"usage":{"cachedInputTokens":740731,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":12284,"runtime":"claude","turns":29,"wallClockMs":195962}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"5fd2de06561c50a4","findings":[],"hash":"821057f7a73da007178637ed2b0734a1b967095b6d11cb8ce0cc8f6ce13ea01c","nodeId":"eb167120-d9e6-4be0-a094-0076267cb5fd","outcome":"completed","summary":"Taylor, the review is done. No defects found in the math, boundary, or numerical-gap area. `.imd-findings.json` holds an empty findings list and seven coverage rows, and no source files were changed.\n\n**What I checked**\n\n- **Supply constant.** The literal flagged by aderyn folds to exactly 10^27 with zero remainder against 18 decimals. It is minted once in the constructor and no mint, burn or rebase entry point exists.\n- **transfer and transferFrom arithmetic.** Both unchecked blocks in the vendored OpenZeppelin `_update` and `_spendAllowance` sit behind an explicit bound check. I probed zero, full supply, supply plus one, max uint, self-transfer at full balance, and the infinite-allowance sentinel edge (max is infinite, max minus one is finite).\n- **approve.** Plain overwrite, zero-spender revert, no arithmetic.\n- **Boundaries.** No external calls, no payable surface, no receive or fallback, no bytes decoding. Ether sends and unknown selectors revert.\n- **Dependency integrity.** All six vendored OpenZeppelin files hash-match both DEPENDENCIES.json and the upstream v5.1.0 commit.\n\n**Evidence**\n\n| Check | Result |\n| --- | --- |\n| Project suite | 30 passed, invariants 128 runs x 64 depth, 0 reverts |\n| Scratch boundary suite (12 tests, 2 fuzz) | all passed, then removed |\n\nThe three listed entry points are all marked `holds`. Nothing in the assigned area was left unreached.","treeHash":null,"usage":{"cachedInputTokens":488824,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":8832,"runtime":"claude","turns":19,"wallClockMs":129996}},{"artifacts":[],"attempt":1,"bundleHash":"118f260fa7cb9681fd38bb3f03ae4f912e1cfdd39b659b757437f849f2f34e54","device":"59b51c92352647b4","findings":[],"hash":"852e7a06ae35452b6b553040b99049323e2c16ffab13333d100bbaa5eb96d59b","nodeId":"36540874-50ca-41e7-a5f1-b1254445c78b","outcome":"completed","summary":"Created [launch.json](/home/imd-worker/.identitymd/work/35630e3a-9075-4c31-b8b6-d079d96ffd83/36540874-50ca-41e7-a5f1-b1254445c78b/launch.json) matching ADAM’s constructor, exact supply, and verbatim economics.\n\nSchema and constructor ABI checks passed. `forge build` succeeded; `forge test` passed all 30 tests. Only `launch.json` is changed outside scratch artifacts.","treeHash":"429873cb933268094477804bfd48e550296ab274","usage":{"cachedInputTokens":205056,"inputTokens":25189,"model":"gpt-6-astra","outputTokens":4189,"runtime":"codex","turns":3,"wallClockMs":123556}},{"artifacts":[],"attempt":1,"bundleHash":"0f0e03239fc100daed9fa052e74e2aa01abc5d5c4f380f5efd6dbd606737ebe7","device":"f4cf051c8a9d8584","findings":[],"hash":"930b1b70e8680f9c32b39b85adb2b33291a49d27b902151313de073348175fa6","nodeId":"dea7f566-5766-4355-bb18-4cbfdea2b0e1","outcome":"completed","summary":"Implemented [ADAM](src/ADAM.sol): 1,000,000,000 tokens, 18 decimals, minted once entirely to the deployer.\n\nVendored dependencies and documented assumptions, deployment parameters, and responsibilities in [README.md](README.md).\n\nVerified with Solidity 0.8.26:\n\n- `forge build` passed\n- `forge test` passed: 30 tests, including fuzz and invariant checks\n- `forge fmt --check` passed","treeHash":"d96696c1b5dd23486cf3ab698b70bc19ce9204f3","usage":{"cachedInputTokens":340480,"inputTokens":42140,"model":"gpt-6-astra","outputTokens":12568,"runtime":"codex","turns":4,"wallClockMs":337230}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"4cf1a1b166979f8a","findings":[{"citation":"resolved","description":"README.md offers DEPENDENCIES.json as the offline provenance record: it states the file 'records the upstream tags, commits, and SHA-256 hashes' of the vendored content. Reproduced the audit_permissions specialist's finding: the recorded hashes are those of the upstream forge-std v1.9.7 files at commit 77041d2c (re-fetched each of the seven upstream files and confirmed their SHA-256 equals the recorded value), but the committed copies under lib/forge-std/src/ were reformatted (forge fmt, line_length 120) after the hashes were taken, so seven files hash differently: StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol. Stripping all whitespace from each upstream file and its committed copy gives identical bytes for all seven, so the difference is formatting only and no code was altered. All six OpenZeppelin files, which are the only production dependency of src/ADAM.sol, are byte-identical to upstream v5.1.0 and their recorded hashes verify. Impact: documentation/provenance only. The trust anchor the README offers for the test tooling fails verification, so an offline reviewer cannot use it to distinguish this harmless reflow from a tampered cheatcode interface without re-fetching upstream. No production behaviour, bytecode, or launch flow is affected. Merged: this was the only specialist finding; the other three areas and the independent tester reported nothing. Fix: either re-record the hashes of the committed files, or commit the unformatted upstream files and exclude lib/ from forge fmt so the existing record verifies.","line":26,"path":"DEPENDENCIES.json","reproduction":"State: the committed tree at HEAD c39ea84. Input: from the repository root run `python3 -I -c \"import json,hashlib,os; [print(hashlib.sha256(open(os.path.join(d['path'],r),'rb').read()).hexdigest()==h, r) for d in json.load(open('DEPENDENCIES.json')) for r,h in d['sha256'].items()]\"`. Expected (per README.md, 'DEPENDENCIES.json records the upstream tags, commits, and SHA-256 hashes'): every one of the 36 lines prints True. Actual: 29 print True and 7 print False, all under lib/forge-std: src/StdAssertions.sol recorded d4c89eec70d267de… actual 3fbf4a025b4fc94e…; src/StdJson.sol recorded 0211b47e93dbeb6a… actual 61bbf9b3219f3636…; src/StdToml.sol recorded de3fb35af79a1fd2… actual 187d2f0cc66b5eba…; src/Vm.sol recorded 9068805b59ac1d0e… actual a1b1c82924aecf0f…; src/console.sol recorded 896c5a5a5c235cb1… actual a2e632dcbc787bb0…; src/interfaces/IERC7540.sol recorded c6a7854c86bf3772… actual 3ae3eec94e3e6130…; src/interfaces/IMulticall3.sol recorded 6620d9c5ea2e2291… actual 1b63ca78b27d9893…. Cross-check performed in this review: `curl https://raw.githubusercontent.com/foundry-rs/forge-std/77041d2ce690e692d6e03cc812b57d1ddaa4d505/<file>` for each of the seven files hashes to the recorded value, and `tr -d ' \\t\\n\\r'` applied to the upstream and committed copies yields identical SHA-256 for all seven, proving a whitespace-only reflow.","severity":"info","snippet":"      \"src/StdAssertions.sol\": \"d4c89eec70d267dec6188461fbc74d3dc8c47e518d176a23417533a232ed9780\",","title":"DEPENDENCIES.json SHA-256 record does not verify for seven vendored forge-std files (whitespace-only reflow)"}],"hash":"a8d40b8575e5d542b8133d5f4e52600ff14ca1e94b06a82001b2497f33d28fe6","nodeId":"3d404531-3c1a-4bb4-85a7-a5e973c59da3","outcome":"completed","summary":"Review complete. The findings file is written and validated. No source files were changed; the only new file is the required `.imd-findings.json`, which git does not show because the working tree status is clean apart from it being untracked-and-ignored or not yet listed.\n\n**Outcome:** the ADAM token is clean. It is an unmodified OpenZeppelin v5.1.0 ERC-20 whose argument-free constructor mints exactly the manifest's supply to msg.sender. I kept one specialist finding, at info severity, and found nothing new.\n\n**What I reproduced**\n\n- **The one specialist finding holds.** Seven forge-std files under `lib/` hash differently from the values recorded in DEPENDENCIES.json. I re-fetched each of the seven from the pinned upstream commit: upstream hashes match the record, and stripping whitespace from upstream and committed copies gives identical bytes. It is a formatting-only reflow with no code change. The six OpenZeppelin files, the only production dependency, verify byte-for-byte. Severity stays info since only the README's offline provenance claim is affected.\n- **The other three specialists and the independent tester reported nothing,** so there were no duplicates to merge.\n\n**My own pass over the code**\n\n- All three entry points behave as standard OpenZeppelin ERC-20: zero-address and insufficient-balance reverts, exact amounts moved, infinite allowance preserved, finite allowance decremented with rollback on revert.\n- The compiled ABI exposes no owner, mint, burn, pause, blacklist, or upgrade surface. Decimals return 18.\n- I scanned the runtime and creation bytecode myself: no DELEGATECALL, CALLCODE, SELFDESTRUCT, CALL, STATICCALL or CREATE opcodes.\n- The manifest is consistent with the code, including the supply constant and the provenance sqrtPriceX96 for ETH as currency0. Economics cannot be checked against the job from this tree.\n- Build, format check, and the full suite of 40 tests plus 2 invariants pass offline. The aderyn large-literal lead is the intended supply constant and is not a defect.\n\n**Coverage record:** all three entry points marked `holds`, plus four invariant rows. No proof test was needed since nothing reached high or critical.","treeHash":null,"usage":{"cachedInputTokens":545906,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":9447,"runtime":"claude","turns":13,"wallClockMs":192522}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"ddc5542bddcad225","findings":[],"hash":"ac06cf952c7f129a9d45d80a02ff2295dd461924b411f05873de718c6b23f3c7","nodeId":"4adbb0ea-d793-4436-87b3-c8fff08cbddf","outcome":"completed","summary":"The review is complete. The findings file is written and valid, the scratch test is removed, and the working tree has no stray files.\n\n**Result: no defects found.** `.imd-findings.json` holds an empty findings list and ten coverage rows, all `holds`.\n\n**What was reviewed**\n\n- `src/ADAM.sol` is a 15-line contract: canonical OpenZeppelin v5.1.0 ERC20 plus a constructor that mints one billion tokens with 18 decimals to the deployer. It has no owner, mint, burn, pause, blacklist, tax, hooks, proxy or external calls.\n- The three state-changing entry points were traced through the Execution Trace, Periphery and First Principles guides. Every guard sits before every write, there is no stale read, no partial update, no sentinel path that skips validation, and the max-allowance behaviour is standard and documented.\n- The vendored OpenZeppelin files were fetched from upstream at the declared commit and hash-match byte for byte, so the periphery the token trusts is exactly what it claims to be. No submodule is present.\n- A scratch test deployed the token by CREATE2 from a factory contract, moved ten percent to a distributor, seeded a manager contract, and bought and sold back through transfer and transferFrom. Every balance was exact and total supply never changed. The runtime bytecode contains no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- The existing 30-test suite, including the two stateful invariants, passes.\n\n**Static analysis leads**\n\n- Slither reported nothing. The aderyn large-numeric-literal note is a compile-time constant equal to the stated supply and is style only.\n\n**Trust assumptions, not defects**\n\n- Whoever calls the constructor holds the entire supply. Under the launch flow that is the factory, which is the intended design.\n- The standard ERC-20 allowance replacement race exists and is documented in the README.\n\nNothing in the assigned area was left unreached.","treeHash":null,"usage":{"cachedInputTokens":604876,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":11596,"runtime":"claude","turns":26,"wallClockMs":193745}}],"verification":[{"checks":[{"durationMs":4829,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 4.11s\nCompiler run successful!\n","passed":true},{"durationMs":12967,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 38 tests for test/ADAM.t.sol:ADAMTest\n[PASS] testFuzz_approvalIsIsolatedToOwnerAndSpender(uint256,uint256,uint256) (runs: 1000, μ: 248605, ~: 249389)\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 1000, μ: 54856, ~: 55198)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129639940\n\n[PASS] testFuzz_transferConservesSupply(uint256) (runs: 1000, μ: 90212, ~: 90330)\nLogs:\n  Bound result 1000000000000000000000000000\n\n[PASS] testFuzz_transferFromAboveAllowanceReverts(uint256,uint256) (runs: 1000, μ: 116317, ~: 116533)\nLogs:\n  Bound result 597774574787458854512654399\n  Bound result 597774574787458854512654401\n\n[PASS] testFuzz_transferFromBalanceFailureIsAtomic(uint256,uint256,bool) (runs: 1000, μ: 193799, ~: 193658)\nLogs:\n  Bound result 1000000000000000000000000000\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129654954\n\n[PASS] testFuzz_transferFromTracksAllowance(uint256,uint256) (runs: 1000, μ: 156448, ~: 158043)\nLogs:\n  Bound result 2\n  Bound result 2\n\n[PASS] testFuzz_transferFromZeroRecipientIsAtomic(uint256,uint256) (runs: 1000, μ: 125864, ~: 126386)\nLogs:\n  Bound result 79035\n\n[PASS] testFuzz_transferRoundTripPreservesSupplyAndApproval(uint256,uint256) (runs: 1000, μ: 179193, ~: 179206)\nLogs:\n  Bound result 23854\n\n[PASS] test_anotherSpenderCannotUseAnApproval() (gas: 120004)\n[PASS] test_approvalDoesNotRequireTokensOrMoveTokens() (gas: 82319)\n[PASS] test_approveEmitsEventThenReplacesAndRevokesAllowance() (gas: 178555)\n[PASS] test_approveZeroSpenderReverts() (gas: 38020)\n[PASS] test_constructorEmitsMintTransfer() (gas: 11756)\n[PASS] test_deployerCannotTakeAnotherHoldersTokens() (gas: 92914)\n[PASS] test_directEtherPaymentReverts() (gas: 37216)\n[PASS] test_entireSupplyCanMoveAndReturn() (gas: 130206)\n[PASS] test_exhaustedAllowanceCannotBeReusedAndCanBeReauthorized() (gas: 267405)\n[PASS] test_factoryCreate2OwnsSupplyAndLaunchTransfersArriveWhole() (gas: 470954)\n[PASS] test_holderNeedsAllowanceWhenUsingTransferFrom() (gas: 33568)\n[PASS] test_maximumMinusOneAllowanceIsFinite() (gas: 146430)\n[PASS] test_maximumTransferAmountsRevertWithoutOverflowOrMutation() (gas: 250089)\n[PASS] test_metadataAndEntireInitialSupply() (gas: 92741)\n[PASS] test_noMintBurnFreezeSeizeOrUpgradeEntryPoints() (gas: 832792)\n[PASS] test_oneWeiCanMoveAndReturnExactly() (gas: 138569)\n[PASS] test_runtimeHasNoForbiddenOpcodes() (gas: 786654)\n[PASS] test_selfTransferPreservesBalance() (gas: 51588)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 33307)\n[PASS] test_transferDoesNotInvokeRecipient() (gas: 178843)\n[PASS] test_transferEmitsEventAndDeliversExactAmount() (gas: 89399)\n[PASS] test_transferFromConsumesFiniteAllowanceAndEmitsTransfer() (gas: 217964)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 114422)\n[PASS] test_transferFromKeepsMaximumAllowance() (gas: 122129)\n[PASS] test_transferFromToSameHolderConsumesAllowanceWithoutChangingBalance() (gas: 100737)\n[PASS] test_transferFromZeroRecipientRollsBackAllowanceAndBalances() (gas: 122237)\n[PASS] test_transferToZeroRevertsEvenForZeroAmount() (gas: 72735)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 56203)\n[PASS] test_zeroTransferFromWithoutApprovalSucceeds() (gas: 57073)\n[PASS] test_zeroTransferFromZeroSenderReverts() (gas: 33389)\nSuite result: ok. 38 passed; 0 failed; 0 skipped; finished in 179.92ms (1.32s CPU time)\n\nRan 2 tests for test/ADAM.invariant.t.sol:ADAMInvariantTest\n[PASS]\nADAMInvariantTest invariants:\n[PASS] invariant_allowancesMatchAuthorizations\n[PASS] invariant_supplyAndBalancesAreConserved\n ADAMInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------+--------------------------------+-------+---------+----------╮\n| Contract    | Selector                       | Calls | Reverts | Discards |\n+===========================================================================+\n| ADAMHandler | approve                        | 1778  | 0       | 0        |\n|-------------+--------------------------------+-------+---------+----------|\n| ADAMHandler | approveBoundary                | 1866  | 0       | 0        |\n|-------------+--------------------------------+-------+---------+----------|\n| ADAMHandler | rejectTransferAboveBalance     | 1856  | 0       | 0        |\n|-------------+--------------------------------+-------+---------+----------|\n| ADAMHandler | rejectTransferFromAboveBalance | 1828  | 0       | 0        |\n|-------------+--------------------------------+-------+---------+----------|\n| ADAMHandler | rejectTransferToZero           | 1786  | 0       | 0        |\n|-------------+--------------------------------+-------+---------+----------|\n| ADAMHandler | revokeAndRejectSpend           | 1762  | 0       | 0        |\n|-------------+--------------------------------+-------+---------+----------|\n| ADAMHandler | transfer                       | 1874  | 0       | 0        |\n|-------------+--------------------------------+-------+---------+----------|\n| ADAMHandler | transferFrom                   | 1830  | 0       | 0        |\n|-------------+--------------------------------+-------+---------+----------|\n| ADAMHandler | transferFullBalance            | 1804  | 0       | 0        |\n╰-------------+--------------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 17893445983231\n  Bound result 7\n  Bound result 0\n  Bound result 2781548977282033415160325692048302936501392999189933099450669\n  Bound result 734064699009070250535776466078701999308665\n  Bound result 0\n  Bound result 100000000000000000000\n  Bound result 594074730620690237147744532\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129644035\n  Bound result 7228\n  Bound result 1265532626473379203424101241366574016500756815336\n  Bound result 242\n  Bound result 10\n  Bound result 1\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913246940685\n  Bound result 6\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 1\n  Bound result 0\n  Bound result 1000000000\n  Bound result 0\n  Bound result 242\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 5121541395112\n  Bound result 10\n  Bound result 0\n\n[PASS] test_handlerSequenceWithFailuresAndReauthorization() (gas: 1372606)\nLogs:\n  Bound result 500000000000000000000000000\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 1000000000000000000000000000\n  Bound result 500000000000000000000000000\n  Bound result 500000000000000000000000000\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 12.57s (12.56s CPU time)\n\nRan 2 test suites in 12.58s (12.75s CPU time): 40 tests passed, 0 failed, 0 skipped (40 total tests)\n","passed":true},{"durationMs":263,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ADAM.approve(address,uint256)\",\"ADAM.transfer(address,uint256)\",\"ADAM.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.json\":54,\"LICENSE\":21,\"README.md\":97,\"foundry.toml\":27,\"src/ADAM.sol\":15,\"test/ADAM.invariant.t.sol\":198,\"test/ADAM.t.sol\":500},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"2a83eceb5d9b02878d6bb2aea5f5c14595bc234b3f8e3fa05f4cc2c063c24dc7","verifiedTreeHash":"a0ac07388acbddb4624f6e3e242a7ad97596ad8b","verifierVersion":"0.1.0+94826a22"},{"checks":[{"durationMs":1228,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.11s\nCompiler run successful!\n","passed":true},{"durationMs":2595,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 29 tests for test/ADAM.t.sol:ADAMTest\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 54746, ~: 55058)\nLogs:\n  Bound result 173835735139935885327133123489130095\n\n[PASS] testFuzz_transferConservesSupply(uint256) (runs: 256, μ: 89992, ~: 90305)\nLogs:\n  Bound result 139935885327133123315294360\n\n[PASS] testFuzz_transferFromAboveAllowanceReverts(uint256,uint256) (runs: 256, μ: 116494, ~: 116476)\nLogs:\n  Bound result 24260\n  Bound result 763600050\n\n[PASS] testFuzz_transferFromTracksAllowance(uint256,uint256) (runs: 256, μ: 156398, ~: 158053)\nLogs:\n  Bound result 24260\n  Bound result 9336\n\n[PASS] test_approvalDoesNotRequireTokensOrMoveTokens() (gas: 82268)\n[PASS] test_approveEmitsEventThenReplacesAndRevokesAllowance() (gas: 178417)\n[PASS] test_approveZeroSpenderReverts() (gas: 37991)\n[PASS] test_constructorEmitsMintTransfer() (gas: 11756)\n[PASS] test_deployerCannotTakeAnotherHoldersTokens() (gas: 92834)\n[PASS] test_directEtherPaymentReverts() (gas: 37193)\n[PASS] test_entireSupplyCanMoveAndReturn() (gas: 130148)\n[PASS] test_factoryCreate2OwnsSupplyAndLaunchTransfersArriveWhole() (gas: 470844)\n[PASS] test_holderNeedsAllowanceWhenUsingTransferFrom() (gas: 33516)\n[PASS] test_metadataAndEntireInitialSupply() (gas: 92741)\n[PASS] test_noMintBurnFreezeSeizeOrUpgradeEntryPoints() (gas: 832712)\n[PASS] test_runtimeHasNoForbiddenOpcodes() (gas: 786676)\n[PASS] test_selfTransferPreservesBalance() (gas: 51559)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 33278)\n[PASS] test_transferDoesNotInvokeRecipient() (gas: 178791)\n[PASS] test_transferEmitsEventAndDeliversExactAmount() (gas: 89348)\n[PASS] test_transferFromConsumesFiniteAllowanceAndEmitsTransfer() (gas: 217921)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 114353)\n[PASS] test_transferFromKeepsMaximumAllowance() (gas: 122049)\n[PASS] test_transferFromToSameHolderConsumesAllowanceWithoutChangingBalance() (gas: 100656)\n[PASS] test_transferFromZeroRecipientRollsBackAllowanceAndBalances() (gas: 122179)\n[PASS] test_transferToZeroRevertsEvenForZeroAmount() (gas: 72699)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 56141)\n[PASS] test_zeroTransferFromWithoutApprovalSucceeds() (gas: 57066)\n[PASS] test_zeroTransferFromZeroSenderReverts() (gas: 33360)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 11.81ms (41.30ms CPU time)\n\nRan 1 test for test/ADAM.invariant.t.sol:ADAMInvariantTest\n[PASS]\nADAMInvariantTest invariants:\n[PASS] invariant_allowancesMatchAuthorizations\n[PASS] invariant_supplyAndBalancesAreConserved\n ADAMInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+--------------+-------+---------+----------╮\n| Contract    | Selector     | Calls | Reverts | Discards |\n+=========================================================+\n| ADAMHandler | approve      | 2711  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| ADAMHandler | transfer     | 2730  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| ADAMHandler | transferFrom | 2751  | 0       | 0        |\n╰-------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 6\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4\n  Bound result 1771\n  Bound result 0\n  Bound result 0\n  Bound result 2\n  Bound result 0\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 1\n  Bound result 669\n  Bound result 0\n  Bound result 0\n  Bound result 817\n  Bound result 0\n  Bound result 4100\n  Bound result 645\n  Bound result 1290\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1126\n  Bound result 154\n  Bound result 1\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.49s (2.49s CPU time)\n\nRan 2 test suites in 2.49s (2.50s CPU time): 30 tests passed, 0 failed, 0 skipped (30 total tests)\n","passed":true},{"durationMs":43,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ADAM.approve(address,uint256)\",\"ADAM.transfer(address,uint256)\",\"ADAM.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.json\":54,\"LICENSE\":21,\"README.md\":97,\"foundry.toml\":27,\"launch.json\":20,\"src/ADAM.sol\":15,\"test/ADAM.invariant.t.sol\":91,\"test/ADAM.t.sol\":362},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"852e7a06ae35452b6b553040b99049323e2c16ffab13333d100bbaa5eb96d59b","verifiedTreeHash":"429873cb933268094477804bfd48e550296ab274","verifierVersion":"0.1.0+94826a22"},{"checks":[{"durationMs":2736,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.42s\nCompiler run successful!\n","passed":true},{"durationMs":4828,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 29 tests for test/ADAM.t.sol:ADAMTest\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 54727, ~: 55058)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007914224632140\n\n[PASS] testFuzz_transferConservesSupply(uint256) (runs: 256, μ: 90064, ~: 90323)\nLogs:\n  Bound result 1094992205\n\n[PASS] testFuzz_transferFromAboveAllowanceReverts(uint256,uint256) (runs: 256, μ: 116092, ~: 116463)\nLogs:\n  Bound result 75735982\n  Bound result 385952079590937\n\n[PASS] testFuzz_transferFromTracksAllowance(uint256,uint256) (runs: 256, μ: 156252, ~: 158029)\nLogs:\n  Bound result 75735982\n  Bound result 71239260\n\n[PASS] test_approvalDoesNotRequireTokensOrMoveTokens() (gas: 82268)\n[PASS] test_approveEmitsEventThenReplacesAndRevokesAllowance() (gas: 178417)\n[PASS] test_approveZeroSpenderReverts() (gas: 37991)\n[PASS] test_constructorEmitsMintTransfer() (gas: 11756)\n[PASS] test_deployerCannotTakeAnotherHoldersTokens() (gas: 92834)\n[PASS] test_directEtherPaymentReverts() (gas: 37193)\n[PASS] test_entireSupplyCanMoveAndReturn() (gas: 130148)\n[PASS] test_factoryCreate2OwnsSupplyAndLaunchTransfersArriveWhole() (gas: 470844)\n[PASS] test_holderNeedsAllowanceWhenUsingTransferFrom() (gas: 33516)\n[PASS] test_metadataAndEntireInitialSupply() (gas: 92741)\n[PASS] test_noMintBurnFreezeSeizeOrUpgradeEntryPoints() (gas: 832712)\n[PASS] test_runtimeHasNoForbiddenOpcodes() (gas: 786676)\n[PASS] test_selfTransferPreservesBalance() (gas: 51559)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 33278)\n[PASS] test_transferDoesNotInvokeRecipient() (gas: 178791)\n[PASS] test_transferEmitsEventAndDeliversExactAmount() (gas: 89348)\n[PASS] test_transferFromConsumesFiniteAllowanceAndEmitsTransfer() (gas: 217921)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 114353)\n[PASS] test_transferFromKeepsMaximumAllowance() (gas: 122049)\n[PASS] test_transferFromToSameHolderConsumesAllowanceWithoutChangingBalance() (gas: 100656)\n[PASS] test_transferFromZeroRecipientRollsBackAllowanceAndBalances() (gas: 122179)\n[PASS] test_transferToZeroRevertsEvenForZeroAmount() (gas: 72699)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 56141)\n[PASS] test_zeroTransferFromWithoutApprovalSucceeds() (gas: 57066)\n[PASS] test_zeroTransferFromZeroSenderReverts() (gas: 33360)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 27.73ms (102.03ms CPU time)\n\nRan 1 test for test/ADAM.invariant.t.sol:ADAMInvariantTest\n[PASS]\nADAMInvariantTest invariants:\n[PASS] invariant_allowancesMatchAuthorizations\n[PASS] invariant_supplyAndBalancesAreConserved\n ADAMInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+--------------+-------+---------+----------╮\n| Contract    | Selector     | Calls | Reverts | Discards |\n+=========================================================+\n| ADAMHandler | approve      | 2710  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| ADAMHandler | transfer     | 2712  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| ADAMHandler | transferFrom | 2770  | 0       | 0        |\n╰-------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 95\n  Bound result 4098\n  Bound result 3059\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 7\n  Bound result 0\n  Bound result 1466\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1008\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 0\n  Bound result 1975\n  Bound result 0\n  Bound result 0\n  Bound result 4256\n  Bound result 1974\n  Bound result 807\n  Bound result 2750\n  Bound result 1696\n  Bound result 2505\n  Bound result 4\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.57s (4.57s CPU time)\n\nRan 2 test suites in 4.58s (4.60s CPU time): 30 tests passed, 0 failed, 0 skipped (30 total tests)\n","passed":true},{"durationMs":102,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ADAM.approve(address,uint256)\",\"ADAM.transfer(address,uint256)\",\"ADAM.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.json\":54,\"LICENSE\":21,\"README.md\":97,\"foundry.toml\":27,\"src/ADAM.sol\":15,\"test/ADAM.invariant.t.sol\":91,\"test/ADAM.t.sol\":362},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":770,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":288,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/ADAM.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"930b1b70e8680f9c32b39b85adb2b33291a49d27b902151313de073348175fa6","verifiedTreeHash":"d96696c1b5dd23486cf3ab698b70bc19ce9204f3","verifierVersion":"0.1.0+94826a22"}]}