{"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":"907291f3-5ea4-4cca-8827-db2d0ee98f10","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"9db361d42aff1a241023a014ffc343d54be263303977085dd5ecd1742fd627b5","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":"814fba7c265acb67f14b370b6f5900b7c9315eba9bc3656585baa0aa7e846f69","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":"1a271104d082804afe143d7494eb6a13232d607d3ed30f06382420d097e3b615","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":"9f57f6fc992b03af0bdbe31eb253a7084593f951405ba12946341cd0851291b9","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":"4cdb4c8cc07a556b02e69b0be86d0510f4f5c15f315444ea9c3b0b3118dfe59d","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":"7b82b8dc6159c642c3348a09e97d02ae39de181d0ce9461ad632cb422d01e45c","dependsOn":[],"execution":{"mustProduce":["src/LaunchToken.sol"],"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":"c61c50475230d6e73a4977c321a61148791319e7b946fb47c5a5f4e83d569d87","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"1ee661d80a184a2b986e3e7d93acd2e63378535246817b0e554d1d21477465ba","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","subagents":4,"tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","state":"accepted"}],"objective":"Launch Genesis Research Token (GENS) on Robinhood Chain (4663), paired with canonical Robinhood IMD. Use the standard fixed 1,000,000,000 supply, 18-decimal plain ERC-20: no mint after the constructor, no transfer tax, no blacklist, no pause, no upgrade and no additional hook swap fee. Use the standard IMD project factory and its standard pool fee (currently 1.25% total, with 80% of the seeded LP position fees to the requester and 20% to the network). The paying wallet/requester must be 0x550011cadcc758969391050241b2fc43ed1a4b97; retain its whole requester fee share, with no fee splitter or research-fund deduction. Seed 80% of total supply into the GENS/IMD pool; protocol Swarm share is 10%; deliver all remaining tokens to 0x550011cadcc758969391050241b2fc43ed1a4b97. After verified launch the requester will separately transfer exactly 80,000,000 GENS (8% of the fixed supply) to the Genesis reserve wallet 0x4a532cbc877fbbd4950fdab65bfea2e8567b857b, leaving its own 20,000,000 GENS (2%) immediately available. This reserve transfer is a separate post-launch wallet action, not executed by the factory. Neither allocation has vesting. Generate tests and deployment/claim documentation, publish token sources. No staking rewards, promised yield, fundraising contract, fee splitter, vesting, buyback, extra token or website redeployment. GENS-funded expedition checkout is not implemented and must not be described as live. Do not alter the existing Ethereum GenesisResearch contract or its archives.","parentJobId":null,"planHash":"6f1f09e2bd6b3bbb4be17faaadc612452e28bc4d5634e97defe2399a394c5541","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"907291f3-5ea4-4cca-8827-db2d0ee98f10","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2668-launch-genesis-research-token"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52167","feedbackHash":"b09858872e1347c27813a550a71e68f3f5e049fbb759f2cb6975d846640e015f","nodeKey":"audit_economics","submissionHash":"9db361d42aff1a241023a014ffc343d54be263303977085dd5ecd1742fd627b5","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52128","feedbackHash":"b9f72d38677bba1f4b2f8ca113a62c8048c946da585a971fa0a57aed227137b0","nodeKey":"audit_flow","submissionHash":"814fba7c265acb67f14b370b6f5900b7c9315eba9bc3656585baa0aa7e846f69","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52675","feedbackHash":"f4e9d28170248ee8cfb331638abda025830a441cf50e65f2d2ced5f06bd63e0b","nodeKey":"audit_judge","submissionHash":"1a271104d082804afe143d7494eb6a13232d607d3ed30f06382420d097e3b615","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52205","feedbackHash":"a5c720264093388c800d1077d08f0aa5444ef3528d8d24ed6f7dcff7a2df1903","nodeKey":"audit_math","submissionHash":"9f57f6fc992b03af0bdbe31eb253a7084593f951405ba12946341cd0851291b9","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"53929","feedbackHash":"4462571e86a65b536796eabbfa2b20fbc921d7d3834182499be22c268a2f144f","nodeKey":"audit_permissions","submissionHash":"4cdb4c8cc07a556b02e69b0be86d0510f4f5c15f315444ea9c3b0b3118dfe59d","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51614","feedbackHash":"f5471afe1e62e335f2123090ebd8bd8a23d6b54cea7a55643eec1cde5fa32b6d","nodeKey":"build_contract_project","submissionHash":"7b82b8dc6159c642c3348a09e97d02ae39de181d0ce9461ad632cb422d01e45c","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51749","feedbackHash":"37da3b9cfc1567b53233ca3a5f797016665a236e4599ab3415dcd96f7754003e","nodeKey":"manifest","submissionHash":"c61c50475230d6e73a4977c321a61148791319e7b946fb47c5a5f4e83d569d87","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52143","feedbackHash":"bff58b86ccd28d2e5dd25a86301a204fc7887920ca869dbfcbe46c23816beaea","nodeKey":"write_foundry_tests","submissionHash":"1ee661d80a184a2b986e3e7d93acd2e63378535246817b0e554d1d21477465ba","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"863ed993c28a85c674fcf1aa1a8612afbd36f7e9d634051b9e148d05dcdaf7af","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"382ebcfad965e0cd","findings":[{"citation":"resolved","description":"Merged from audit_economics, audit_flow, audit_permissions and audit_math, which all report the same root cause. dependencies.sha256 records the upstream forge-std v1.9.7 hashes. However, seven committed files under lib/forge-std/src have been re-wrapped with whitespace-only changes, apparently by forge fmt at line_length 120: StdJson.sol, StdToml.sol, StdAssertions.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. The files and the hash list were added in the same commit (dcf2cf3), so the mismatch has been there since the start. As a result, the release check in README.md:65 and DEPENDENCIES.md:10 (`sha256sum -c dependencies.sha256`) fails. DEPENDENCIES.md:7 ('unmodified') and docs/REVIEW.md ('Local validation passed: ... dependency SHA-256 verification') are false. An operator following docs/DEPLOYMENT.md's publish procedure cannot tell this reformat apart from tampering. Impact is limited to source publication and integrity: forge-std is used only by tests, all six OpenZeppelin v5.0.2 files match their hashes, and LaunchToken's bytecode is unaffected. Fix: restore the seven files to their upstream v1.9.7 bytes (fmt already ignores lib/**). Alternatively, regenerate the hashes and correct DEPENDENCIES.md:7 and docs/REVIEW.md.","line":7,"path":"DEPENDENCIES.md","reproduction":"State: committed tree at HEAD (fa22026; lib unchanged since dcf2cf3). From the repo root, run `sha256sum -c dependencies.sha256`. Expected, per README.md:65, DEPENDENCIES.md:7,10 and docs/REVIEW.md: all 36 lines OK, exit 0. Actual: FAILED for lib/forge-std/src/{StdJson.sol, interfaces/IMulticall3.sol, console.sol, Vm.sol, interfaces/IERC7540.sol, StdAssertions.sol, StdToml.sol}, then 'sha256sum: WARNING: 7 computed checksums did NOT match'. Cross-check: I downloaded https://codeload.github.com/foundry-rs/forge-std/tar.gz/refs/tags/v1.9.7 (sha256 45157353ab49...ee94, which matches DEPENDENCIES.md:4). The upstream StdJson.sol hashes to 0211b47e93db..., the value recorded on dependencies.sha256 line 1. For all seven files, hashing with whitespace stripped (`tr -d ' \\t\\r\\n'`) gives identical results for the upstream and tree copies, e.g. StdJson c04c840bf913..., Vm fe772424ec5d..., so the differences are whitespace only.","severity":"low","snippet":"forge-std contains its unmodified src directory and both licenses; it is used only by tests.","title":"Documented dependency integrity check fails: 7 vendored forge-std files are reformatted copies that do not match dependencies.sha256, contradicting the 'unmodified' and 'verification passed' claims"}],"hash":"1a271104d082804afe143d7494eb6a13232d607d3ed30f06382420d097e3b615","nodeId":"1f0aad6d-404d-47f9-a326-87f235430e3d","outcome":"completed","summary":"The audit holds up with one **low**-severity finding, which is about the published source record, not the token's code. I wrote it and the coverage record to `.imd-findings.json`. Nothing else in the repository was changed.\n\n**The finding (all four specialists' reports merged into one):** the release check the docs tell you to run, `sha256sum -c dependencies.sha256`, fails for 7 files in the vendored `lib/forge-std/src` (the test library). I ran it and got the same result.\n- **Cause:** I downloaded forge-std v1.9.7, and the archive's hash matches the one in `DEPENDENCIES.md:4`. The recorded hashes are the correct upstream ones. The 7 committed files differ from upstream only in whitespace and line wrapping: they are identical once all whitespace is stripped. Both the files and the hash list were added in the same commit, so the mismatch has been there from the start.\n- **What's wrong:** `DEPENDENCIES.md:7` says forge-std is \"unmodified\" and `docs/REVIEW.md` says the hash check passed. Neither is true for this tree. Someone publishing the source by following the docs would see 7 failures and couldn't tell a harmless reformat from tampering.\n- **Why it's only low:** forge-std is used only by tests. All six OpenZeppelin files the token is built on match their hashes, so the token's compiled code is unaffected.\n- **Fix:** restore the 7 files to their exact upstream v1.9.7 contents, or regenerate the hashes and correct the two documents.\n\n**Coverage:** I marked `approve`, `transfer` and `transferFrom` as **holds**.\n- `src/LaunchToken.sol` is the unmodified OpenZeppelin v5.0.2 ERC-20. It mints 1,000,000,000 GENS once, in the constructor. There is no owner, fee, blacklist, pause or upgrade path.\n- All 53 local tests pass.\n- `launch.json` sticks to the schema's fields, with no application contracts and the canonical IMD pair address.\n- The wallet addresses in the docs and manifest match the brief.\n\nNo finding was critical or high, so none needed a failing Foundry test attached. I didn't run the tests in `.imd/reads/protected/` separately; the 53 are the repository's own.","treeHash":null,"usage":{"cachedInputTokens":243243,"inputTokens":14,"model":"claude-opus-5-5","outputTokens":4633,"runtime":"claude","turns":7,"wallClockMs":58506}},{"artifacts":[],"attempt":1,"bundleHash":"5662b99239ada86ee32d0fdcc09eb00600d34aef3bdd441a76d8f68aa2310868","device":"f138d40b9355e7bf","findings":[],"hash":"1ee661d80a184a2b986e3e7d93acd2e63378535246817b0e554d1d21477465ba","nodeId":"99e58457-81ea-4d37-a6aa-e7e23cab53e0","outcome":"completed","summary":"Completed within `test/`: added adversarial and reserve-transfer tests, expanded invariants, and documented coverage and deployment/claim boundaries.\n\n`forge build` and seeded `forge test` pass: **53 tests**, including 32,768 invariant calls; zero failures or skips.\n\nNo reproducible implementation defects found. Live factory, pool, claims, and explorer verification remain unverified.","treeHash":"a6255ead881c47ac3e44aba631fe58318c27a49f","usage":{"cachedInputTokens":1488768,"inputTokens":90770,"model":"gpt-6-astra","outputTokens":17805,"runtime":"codex","turns":6,"wallClockMs":715235}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"23617eab0c5242d6","findings":[{"citation":"resolved","description":"DEPENDENCIES.md line 10 tells publishers to verify vendored files with `sha256sum -c dependencies.sha256`, and docs/DEPLOYMENT.md says the published tree includes dependency hashes. Seven forge-std entries do not match the tree. Production code is not affected: the OpenZeppelin ERC20.sol, IERC20Metadata.sol and LICENSE hashes all match, and forge-std is only used by tests. This is a source-publication accuracy note, not a permissions defect.","line":1,"path":"dependencies.sha256","reproduction":"From the repository root at HEAD dcf2cf3, run `sha256sum -c dependencies.sha256`. Expected: every entry OK. Actual: 'WARNING: 7 computed checksums did NOT match' (StdJson.sol, IMulticall3.sol, console.sol, Vm.sol, IERC7540.sol, StdAssertions.sol, StdToml.sol). For example, `sha256sum lib/forge-std/src/StdJson.sol` gives 61bbf9b3...cb83, but line 1 lists 0211b47e...511f. Fix: regenerate the forge-std entries, or drop test-only files from the published hash list.","severity":"info","snippet":"0211b47e93dbeb6a7de6112470a77137038ed73b79b015847f013e49fcd7511f  lib/forge-std/src/StdJson.sol","title":"Published dependency hash list does not match vendored forge-std (test-only); `sha256sum -c` fails"}],"hash":"4cdb4c8cc07a556b02e69b0be86d0510f4f5c15f315444ea9c3b0b3118dfe59d","nodeId":"b72cb52e-a5b3-4eff-8650-21b34e3acf9e","outcome":"completed","summary":"The permissions review found no access-control, trust-gap or asymmetry defects in the GENS token. The only thing I recorded is one informational note about a dependency hash list. Results are in `.imd-findings.json`; the report changes no other files.\n\n**What I checked**\n- `src/LaunchToken.sol` is 14 lines. It inherits OpenZeppelin v5.0.2 ERC20, and the vendored copy matches its published hash.\n- It mints 1,000,000,000 GENS (18 decimals) once, in the constructor, to the deploying factory.\n- Its interface is only the standard ERC-20 functions. There is no owner or admin, mint after launch, fee, blocklist, pause, hook or upgrade path. The constructor takes no arguments and gives no one a role.\n- Neither the requester nor the reserve wallet is written into the token, so the 80,000,000 GENS reserve transfer stays an ordinary wallet transfer after launch, as the brief asks.\n- The repository's tests pass: 35 of 35. I also ran the supplied token check against the built contract on chain 4663: 5 passed. The other 2 were skipped because they need launch-manifest settings that don't exist yet. The supplied owner and project checks would not compile here, because a support file they import isn't in the tree, so I did not run them.\n\n**Entry points**\n- `approve(address,uint256)`: holds. It only sets the caller's own allowance and rejects a zero spender.\n- `transfer(address,uint256)`: holds. It moves exactly the amount asked, with nothing taken or blocked.\n- `transferFrom(address,address,uint256)`: holds. The allowance is checked before tokens move, and a failure undoes both.\n\n**The one note (info, not a permissions issue)**\n`DEPENDENCIES.md` says to verify the vendored files with `sha256sum -c dependencies.sha256`. Running that reports 7 mismatches, all in forge-std test files. For example, `lib/forge-std/src/StdJson.sol` hashes to `61bbf9b3…cb83`, but line 1 of the list says `0211b47e…511f`. The deployed token isn't affected, since its OpenZeppelin hashes match. It only matters for publishing the sources: those forge-std entries need regenerating, or test-only files should come out of the list.\n\n**Coverage:** All three entry points are covered. I also recorded invariant rows for: no minting after launch, no admin role, no self-destruct or delegatecall paths, and the constructor giving no one special rights. The aderyn \"large numeric literal\" warning is just the supply constant `1_000_000_000 * 10 ** 18` and isn't a defect. Slither reported nothing. Nothing in my area was left unchecked.","treeHash":null,"usage":{"cachedInputTokens":245271,"inputTokens":16,"model":"claude-opus-5-5","outputTokens":4035,"runtime":"claude","turns":8,"wallClockMs":59046}},{"artifacts":[],"attempt":1,"bundleHash":"16a6d72b827377afe06d0b2e5820310787fca5598e9b40a8fc6b6666fb192cfe","device":"eedfe508061c8582","findings":[],"hash":"7b82b8dc6159c642c3348a09e97d02ae39de181d0ce9461ad632cb422d01e45c","nodeId":"23434fdf-832b-4161-bb30-3c3d710cced4","outcome":"completed","summary":"Implemented [GENS](src/LaunchToken.sol) with fixed 1 billion supply, plain ERC-20 behavior, and vendored dependencies.\n\nAdded [deployment and claim documentation](README.md) and 35 passing tests using the required fuzz seed. `forge build` and `forge fmt --check` also pass.\n\nLive deployment and explorer verification remain IMD launch steps. The requester’s separate 80 million GENS reserve transfer is documented.","treeHash":"db8918541f2f0192d2741adbabdb662823b5bc2b","usage":{"cachedInputTokens":817408,"inputTokens":66042,"model":"gpt-6-astra","outputTokens":20036,"runtime":"codex","turns":6,"wallClockMs":717269}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"9c6767b941fcfedc","findings":[{"citation":"resolved","description":"Periphery pass (vendored dependencies). README.md:65 instructs `sha256sum -c dependencies.sha256` as a release check, DEPENDENCIES.md:7 states that `forge-std contains its unmodified src directory`, and docs/REVIEW.md:38-39 states that `Local validation passed: ... dependency SHA-256 verification`. On the committed tree (git status clean at dcf2cf3) that command fails for seven files: lib/forge-std/src/StdJson.sol, StdToml.sol, StdAssertions.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. I downloaded the upstream forge-std v1.9.7 archive (its SHA-256 45157353ab49...ee94 matches DEPENDENCIES.md:4) and compared: every hash in dependencies.sha256 equals the upstream file's hash, but the seven committed files differ from upstream. The diff is whitespace-only (identical after stripping all whitespace, e.g. multi-line function headers in Vm.sol re-joined to one line): the files were reformatted to the project's forge fmt style (line_length 120) after the manifest was computed, i.e. before `ignore = [\"lib/**\"]` took effect. All six OpenZeppelin v5.0.2 files and the remaining 21 forge-std files are byte-identical to upstream, so the production token's dependency closure is intact and this does not affect LaunchToken's bytecode (the standard-JSON input for verification contains only src/LaunchToken.sol and the five OZ files). Impact: the publication/handoff steps the docs prescribe fail for anyone who follows them, the stated 'unmodified' and 'verification passed' claims are false for this tree, and an operator cannot distinguish this benign reformatting from a tampered test dependency without redoing the upstream comparison I did. Fix (either): restore the seven files to their upstream v1.9.7 bytes so the existing manifest and statements become true, or regenerate dependencies.sha256 from the committed tree and change DEPENDENCIES.md:7 to say forge-std was reformatted (whitespace only) from upstream v1.9.7, and correct docs/REVIEW.md:38-39.","line":1,"path":"dependencies.sha256","reproduction":"State: the committed tree at dcf2cf3, no local changes. Input: run `sha256sum -c dependencies.sha256` from the repository root (the exact command in README.md:65 and DEPENDENCIES.md:10). Expected (per docs/REVIEW.md:38-39 and DEPENDENCIES.md:7): every line `OK`, exit status 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. Cross-check: `sha256sum lib/forge-std/src/StdJson.sol` gives 61bbf9b3219f3636..., the manifest line 1 and the upstream v1.9.7 file both give 0211b47e93dbeb6a...; `diff <(tr -d ' \\t\\r\\n' < lib/forge-std/src/StdJson.sol) <(tr -d ' \\t\\r\\n' < <upstream>/src/StdJson.sol)` is empty (whitespace-only difference).","severity":"low","snippet":"0211b47e93dbeb6a7de6112470a77137038ed73b79b015847f013e49fcd7511f  lib/forge-std/src/StdJson.sol","title":"Documented dependency integrity check fails: 7 vendored forge-std files do not match dependencies.sha256, while DEPENDENCIES.md and docs/REVIEW.md state they are unmodified and verified"}],"hash":"814fba7c265acb67f14b370b6f5900b7c9315eba9bc3656585baa0aa7e846f69","nodeId":"7241811b-4beb-4029-9ff8-9499bb14c30b","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written with one finding and nine coverage rows. Nothing in the tree was changed.\n\n**Outcome.** The production token is sound. `LaunchToken` is a 14-line wrapper over a byte-identical OpenZeppelin v5.0.2 ERC-20 with a single constructor mint to the deployer. I traced all three state-changing entry points through the inherited code, re-ran the full suite with the documented seed (35 passed, invariant 16,384 calls, 0 reverts), and confirmed the ABI, runtime size, compiler metadata, and every numeric string and command in the four docs reproduce exactly. No defect in control flow, allocation, or the published launch parameters.\n\n**One low finding, in the periphery.** The documented dependency integrity check fails on the committed tree:\n\n```\nsha256sum -c dependencies.sha256\n→ 7 FAILED (StdJson, StdToml, StdAssertions, Vm, console, IERC7540, IMulticall3)\n```\n\nI downloaded upstream forge-std v1.9.7 and compared. The manifest hashes match upstream, but the seven committed files were reformatted to the project's `forge fmt` style, a whitespace-only change. So `DEPENDENCIES.md` (\"unmodified src directory\") and `docs/REVIEW.md` (\"dependency SHA-256 verification passed\") are false for this tree, and the README's release check fails for anyone who follows it. The OpenZeppelin closure, the only non-src input to explorer verification, is byte-identical to upstream, so token bytecode is unaffected. The fix is either to restore the seven upstream files or to regenerate the manifest and correct the two statements.\n\n**Not reported, for the judge's awareness.** `docs/DEPLOYMENT.md` states a policy opening market cap of 2500 IMD. That value is not derivable from anything supplied to this review, so I could neither confirm nor refute it. The operator should confirm it against the pinned launch policy.\n\n**Coverage.** All three listed entry points hold, plus rows for the constructor, the conservation invariant, both vendored dependencies, the documentation, and the scope exclusions. Nothing was left unreached.","treeHash":null,"usage":{"cachedInputTokens":770759,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":19366,"runtime":"claude","turns":35,"wallClockMs":284368}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"1ca477e8d9b58040","findings":[{"citation":"resolved","description":"Seven files under lib/forge-std/src/ (StdJson.sol, StdToml.sol, StdAssertions.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol) do not match the hashes recorded in dependencies.sha256, so the verification step that README.md:65 and DEPENDENCIES.md:10 tell the publisher and verifier to run (`sha256sum -c dependencies.sha256`) fails on the committed tree. The recorded hashes are the upstream forge-std v1.9.7 hashes (verified against the archive whose SHA-256 DEPENDENCIES.md:4 lists, 45157353ab49...ee94), so the hash file is right about upstream and the tree is what diverged: the seven files were run through `forge fmt` at line_length 120 (applying fmt to the upstream StdJson.sol reproduces the tree's copy byte for byte). The differences are whitespace/line-wrapping only, no semantic change, and forge-std is used only by tests, so the production LaunchToken bytecode is unaffected. However DEPENDENCIES.md:7 states 'forge-std contains its unmodified src directory', docs/REVIEW.md:38 states dependency SHA-256 verification passed, and docs/DEPLOYMENT.md:87-88 instructs publishing this tree with its 'dependency hashes' as the source release. A release operator following the documented procedure gets 7 FAILED lines and cannot tell a reformat from a tampered test library without re-deriving upstream as done here. The OpenZeppelin closure (6 files) is byte-identical to upstream v5.0.2, so the token's transfer, approve and transferFrom economics are the stock implementation; this finding is about the integrity record of the published tree, not about token behavior. Fix: restore the seven files to their upstream v1.9.7 bytes (foundry.toml already has `ignore = [\"lib/**\"]` for fmt, so they will stay untouched), re-run `sha256sum -c dependencies.sha256` to confirm 36 OK, and keep the docs as written; alternatively regenerate dependencies.sha256 and correct DEPENDENCIES.md:7 and docs/REVIEW.md:38 to say the files are reformatted copies, but restoring upstream bytes is what the published claims promise.","line":38,"path":"docs/REVIEW.md","reproduction":"State: clean checkout of commit dcf2cf3 (git status clean). Input: run `sha256sum -c dependencies.sha256` from the repository root. Expected (per README.md:65, DEPENDENCIES.md:10 and docs/REVIEW.md:38): all 36 lines OK. Actual: 29 OK, 7 FAILED (lib/forge-std/src/StdJson.sol, interfaces/IMulticall3.sol, console.sol, Vm.sol, interfaces/IERC7540.sol, StdAssertions.sol, StdToml.sol) and `sha256sum: WARNING: 7 computed checksums did NOT match`. Example: dependencies.sha256 line 1 records 0211b47e93dbeb6a7de6112470a77137038ed73b79b015847f013e49fcd7511f for lib/forge-std/src/StdJson.sol; the committed file hashes to 61bbf9b3219f3636d459e74799e642ee80a9e4d51ef66e793814a032ed97cb83. Cross-check: download https://codeload.github.com/foundry-rs/forge-std/tar.gz/refs/tags/v1.9.7 (SHA-256 45157353ab49eab01d294565866731e599b32401757229689ee459aa26b7ee94 as DEPENDENCIES.md:4 states), extract, and `diff src/StdJson.sol <repo>/lib/forge-std/src/StdJson.sol`: whitespace-only differences (e.g. the `serialize(string,string,bool[])` signature at upstream lines 200-203 collapsed to one line), and the upstream file's SHA-256 equals the recorded 0211b47e... value. Running `forge fmt` with `line_length = 120` on the upstream file produces a byte-identical copy of the tree's file. The same `diff` against OpenZeppelin v5.0.2 for all 6 lib/openzeppelin-contracts files shows no difference.","severity":"low","snippet":"Local validation passed: `forge build`, `forge fmt --check`, dependency SHA-256 verification,","title":"Vendored forge-std files were reformatted after hashing: the documented dependency verification fails and the 'unmodified' and 'validation passed' claims are false"}],"hash":"9db361d42aff1a241023a014ffc343d54be263303977085dd5ecd1742fd627b5","nodeId":"cb42a94c-b61b-4e64-aeba-d16270a0a0bf","outcome":"completed","summary":"The economics review is complete. Findings and coverage are in `.imd-findings.json` at the repository root. No repository file was changed.\n\n**Outcome: one low finding, no defect in the token's economics.** All three entry points hold.\n\n**What I verified in the assigned area**\n\n- **Economic Security.** The token has no external dependency, oracle, callback, fee, blacklist, pause, or admin role. Transfers move exactly the requested amount, so the factory's split and the later reserve transfer are exact. I confirmed the vendored OpenZeppelin ERC-20 closure is byte-identical to upstream v5.0.2, so transfer, approve and transferFrom are the stock implementation.\n- **Invariant.** The sum of balances equals the fixed supply of one billion tokens forever. The only mint is in the constructor, burn is internal and unreachable, and no public path touches total supply. The project's invariant suite ran 16,384 calls with zero reverts under the pinned seed, and all 35 tests pass.\n- **Flow Gap.** The documented allocation flow matches the brief: 80% pool seed, 10% Swarm split 2% contributors and 8% seats, 10% to the requester, then a separate 80,000,000 GENS wallet transfer leaving 20,000,000. The fee description of 1.25% split 1% requester and 0.25% network is consistent across README, CLAIMS and DEPLOYMENT. No fee splitter, vesting, launch-time reserve allocation, or live expedition checkout is described.\n\n**The one finding (low, outside the economics area but reproducible)**\n\nSeven forge-std files under `lib/` were reformatted after vendoring, so the documented verification command fails on a clean checkout.\n\n```\nsha256sum -c dependencies.sha256\nsha256sum: WARNING: 7 computed checksums did NOT match\n```\n\nThe recorded hashes match upstream forge-std v1.9.7 exactly, and running the formatter at line length 120 on the upstream file reproduces the tree's copy byte for byte. The changes are whitespace only and affect test code only, so the production bytecode is unaffected. But DEPENDENCIES.md claims the files are unmodified and REVIEW.md claims the hash check passed. The fix is to restore the seven upstream files, which the existing formatter ignore rule will then leave alone.\n\n**Not reached**\n\nThe opening market cap of 2500 IMD stated in DEPLOYMENT.md could not be confirmed or refuted, because the brief supplied to this review does not state it. That row is marked unreached rather than reported as a finding.","treeHash":null,"usage":{"cachedInputTokens":511741,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":15363,"runtime":"claude","turns":28,"wallClockMs":222181}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fa5c50e7abe46571","findings":[{"citation":"resolved","description":"README.md:65 and DEPENDENCIES.md:10 instruct the release operator to verify the vendored tree with `sha256sum -c dependencies.sha256`, and DEPENDENCIES.md:7 states that forge-std 'contains its unmodified src directory'. On the committed tree (git status clean, commit dcf2cf3) the command reports 7 FAILED entries: lib/forge-std/src/StdJson.sol, interfaces/IMulticall3.sol, console.sol, Vm.sol, interfaces/IERC7540.sol, StdAssertions.sol, StdToml.sol. I downloaded the upstream v1.9.7 tarball (its SHA-256 45157353ab49...ee94 matches DEPENDENCIES.md) and the seven committed files differ from upstream byte-for-byte; the hashes in dependencies.sha256 are the upstream hashes. The difference is whitespace-only line re-wrapping (the files are identical after stripping all whitespace, consistent with a formatter pass at line_length 120 having touched lib/ despite the fmt ignore), so the test harness still behaves identically and the production OpenZeppelin files are byte-identical to upstream v5.0.2. The defect is that the published source release makes an integrity claim its own documented check refutes: an operator following docs/DEPLOYMENT.md 'Publish and verify sources' will see the hash verification fail and cannot tell from the deliverable whether forge-std was tampered with. Fix: either restore the seven files to their upstream v1.9.7 bytes (so the recorded hashes hold and the 'unmodified' claim is true) or regenerate dependencies.sha256 from the tree and amend DEPENDENCIES.md to say forge-std was reformatted. Outside the math area; reported because it is concrete and reproducible.","line":65,"path":"README.md","reproduction":"State: the committed tree at HEAD (dcf2cf3), unmodified. Run `sha256sum -c dependencies.sha256` from the repository root. Expected (per README.md:65, DEPENDENCIES.md:7,10): every line reports OK. Actual: 'sha256sum: WARNING: 7 computed checksums did NOT match' with FAILED for lib/forge-std/src/StdJson.sol, lib/forge-std/src/interfaces/IMulticall3.sol, lib/forge-std/src/console.sol, lib/forge-std/src/Vm.sol, lib/forge-std/src/interfaces/IERC7540.sol, lib/forge-std/src/StdAssertions.sol, lib/forge-std/src/StdToml.sol. Example: `sha256sum lib/forge-std/src/Vm.sol` gives a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15 while dependencies.sha256 line 23 records 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1 (the upstream v1.9.7 hash). `diff` against the extracted upstream tarball shows only line re-wrapping; `cmp` after `tr -d ' \\n\\t\\r'` reports the files identical.","severity":"low","snippet":"sha256sum -c dependencies.sha256","title":"Documented dependency integrity check fails: 7 vendored forge-std files do not match dependencies.sha256 or upstream v1.9.7 bytes"}],"hash":"9f57f6fc992b03af0bdbe31eb253a7084593f951405ba12946341cd0851291b9","nodeId":"c5f52733-d9d5-4037-9bd1-51136f5b4fb0","outcome":"completed","summary":"The review is complete and `.imd-findings.json` holds one finding and eight coverage rows. No files in the tree were changed.\n\n**Outcome for the math area (Math Precision, Boundary, Numerical Gap): clean.** The production contract at `src/LaunchToken.sol` is a 14-line OpenZeppelin v5.0.2 ERC-20 whose only arithmetic is the constructor mint. I verified the vendored OpenZeppelin files are byte-identical to the upstream v5.0.2 release, then traced the inherited `_update`, `_approve` and `_spendAllowance` paths for every failure mode in the three guides:\n\n- **Precision**: no division, scaling, casts or decimal conversion exists anywhere in the token. The mint literal is checked arithmetic that fits in 90 bits.\n- **Boundary**: zero amounts, full-supply transfers, self-transfers, zero-address sender/receiver/spender, allowance of exactly max versus max minus one, and over-balance or over-allowance calls all behave as the standard specifies and roll back atomically. The existing 35 tests plus the 16,384-call invariant run (under the documented seed) exercise these edges.\n- **Numerical gap**: the sum-of-balances equals total-supply invariant has no rounding or early-exit path that could break it, since there is no burn or second mint.\n- **Documentation arithmetic**: every figure in the README and docs checks out. The 80/10/10 split, the 80,000,000 reserve as 8% and 20,000,000 as 2%, each minor-unit string's zero count, 12500 pips as 1.25%, the 80/20 fee split as 1%/0.25%, and the manifest sqrt price equal to 2^96 are all correct.\n\n**One low finding, outside the math area but concrete.** The README's documented integrity command fails on the committed tree:\n\n```\nsha256sum -c dependencies.sha256\nsha256sum: WARNING: 7 computed checksums did NOT match\n```\n\nSeven forge-std files were re-wrapped by a formatter, so they match neither the recorded hashes nor the upstream v1.9.7 bytes, while DEPENDENCIES.md still calls them unmodified. The change is whitespace-only and test-only, so behaviour is unaffected. The fix is to restore the upstream bytes or regenerate the hash file and amend the claim.\n\n**Not verifiable from supplied inputs**: the policy opening market cap of 2500 IMD stated in docs/DEPLOYMENT.md. Nothing I was given pins that number, so its row is marked unreached rather than confirmed. Static analysis leads were checked: Slither reported nothing, and the aderyn large-literal note is style only.","treeHash":null,"usage":{"cachedInputTokens":658237,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":16110,"runtime":"claude","turns":32,"wallClockMs":258964}},{"artifacts":[],"attempt":1,"bundleHash":"40b56a9c0dc111a55674dac51f7b173611b91ed6f04f992d7248c6ba139da04e","device":"f6c59a24920668f6","findings":[],"hash":"c61c50475230d6e73a4977c321a61148791319e7b946fb47c5a5f4e83d569d87","nodeId":"b5f919ee-62e3-4f7a-bcb2-c98d92253346","outcome":"completed","summary":"Created [launch.json](/root/.identitymd/work/907291f3-5ea4-4cca-8827-db2d0ee98f10/b5f919ee-62e3-4f7a-bcb2-c98d92253346/launch.json) with the accepted token metadata, required pool settings, empty application-contract list, and separate reserve-transfer notes.\n\nManifest and constructor checks passed. `forge build` succeeded; all 35 tests passed with the supplied fuzz seed.\n\nOnly `launch.json` changed.","treeHash":"482a08e1f4cfe6b3f48ba39cb3ef2090e1250bed","usage":{"cachedInputTokens":144128,"inputTokens":34855,"model":"gpt-6-astra","outputTokens":3025,"runtime":"codex","turns":3,"wallClockMs":119520}}],"verification":[{"checks":[{"durationMs":1630,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.56s\nCompiler run successful!\n","passed":true},{"durationMs":7542,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 27 tests for test/LaunchToken.t.sol:LaunchTokenTest\n[PASS] testFuzz_insufficientAllowanceRevertsAtomically(uint256,uint256) (runs: 1024, μ: 133733, ~: 134257)\nLogs:\n  Bound result 999999999999999999999999999\n  Bound result 1000000000000000000000000000\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 1024, μ: 90250, ~: 90405)\nLogs:\n  Bound result 440897594268705289001900687\n\n[PASS] testFuzz_transferFromAccountsExactly(uint256,uint256) (runs: 1024, μ: 163084, ~: 165209)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n  Bound result 785359526734411540665416481\n\n[PASS] testFuzz_transferOverBalanceRevertsAtomically(uint256) (runs: 1024, μ: 69519, ~: 69836)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039460584007913129639935\n\n[PASS] test_approvalIsSpecificToOwnerAndSpender() (gas: 161311)\n[PASS] test_approveEmitsEventAndCanReplaceAndRevokeAllowance() (gas: 183346)\n[PASS] test_approveZeroSpenderReverts() (gas: 30638)\n[PASS] test_constructorEmitsSingleSupplyMint() (gas: 5535)\n[PASS] test_infiniteAllowanceRemainsUnchanged() (gas: 139206)\n[PASS] test_insufficientBalanceRollsBackAllowance() (gas: 122214)\n[PASS] test_metadataAndEntireSupplyBelongToDeployer() (gas: 89616)\n[PASS] test_noAdminMintBurnTaxPauseBlacklistOrUpgradeEntryPoints() (gas: 2726973)\n[PASS] test_noNativeCurrencyOrFallbackEntryPoint() (gas: 58642)\n[PASS] test_runtimeIsBoundedAndHasNoEscapeOpcodes() (gas: 1340334)\n[PASS] test_selfTransferPreservesBalance() (gas: 51464)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 36223)\n[PASS] test_transferCannotSpendAnotherHoldersBalance() (gas: 45122)\n[PASS] test_transferDoesNotCallRecipient() (gas: 171998)\n[PASS] test_transferEmitsEventAndMovesExactAmount() (gas: 91493)\n[PASS] test_transferEntireSupply() (gas: 136626)\n[PASS] test_transferFromConsumesFiniteAllowanceAndEmitsTransfer() (gas: 250632)\n[PASS] test_transferFromSelfStillConsumesAllowance() (gas: 105382)\n[PASS] test_transferFromToZeroRollsBackAllowance() (gas: 104034)\n[PASS] test_transferFromZeroSenderReverts() (gas: 42232)\n[PASS] test_transferToZeroRevertsEvenForZeroAmount() (gas: 72283)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 73417)\n[PASS] test_zeroTransferFromWorksWithoutAllowance() (gas: 61856)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 65.52ms (246.20ms CPU time)\n\nRan 11 tests for test/LaunchAllocation.t.sol:LaunchAllocationTest\n[PASS] testFuzz_reserveFundingAfterSpendingAtMostTheFreeShare(uint256) (runs: 1024, μ: 240271, ~: 240404)\nLogs:\n  Bound result 1000000000000000000\n\n[PASS] testFuzz_underfundedReserveTransferCannotUseProtocolAllocations(uint256) (runs: 1024, μ: 215246, ~: 215354)\nLogs:\n  Bound result 80000000000000000000005050\n\n[PASS] test_bothWalletAllocationsAreImmediatelyTransferable() (gas: 235831)\n[PASS] test_factoryAllocationIsEightyTenTenWithNoReserveTransfer() (gas: 126260)\n[PASS] test_factoryReceivesAllSupplyBeforeAnyAllocation() (gas: 70802)\n[PASS] test_repeatingReserveTransferWithoutNewFundsFails() (gas: 171210)\n[PASS] test_requesterAndFactoryCannotClawBackReserveTokens() (gas: 202394)\n[PASS] test_requesterApprovalDoesNotFollowTokensIntoReserve() (gas: 309350)\n[PASS] test_requesterCannotSpendSwarmOrPoolAllocation() (gas: 153793)\n[PASS] test_requesterSeparatelyTransfersExactlyEightPercentToReserve() (gas: 171627)\n[PASS] test_reserveTransferNeedsRequesterOrItsAllowance() (gas: 180825)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 65.59ms (125.26ms CPU time)\n\nRan 14 tests for test/LaunchToken.adversarial.t.sol:LaunchTokenAdversarialTest\n[PASS] testFuzz_failedSpendCanBeRetriedAfterFunding(uint256,uint256) (runs: 1024, μ: 307827, ~: 308167)\nLogs:\n  Bound result 6769700429367566450\n  Bound result 631561604989171639250864140\n\n[PASS] testFuzz_replacingPartiallySpentApprovalDoesNotAddOldAllowance(uint256,uint256,uint256) (runs: 1024, μ: 329572, ~: 328831)\nLogs:\n  Bound result 700419443491787502935962423\n  Bound result 536303778769608023665455232\n  Bound result 250721199995359246084021549\n\n[PASS] testFuzz_splitTransfersEqualLumpSumWithoutTaxOrDust(uint256,uint256) (runs: 1024, μ: 175805, ~: 175932)\nLogs:\n  Bound result 6769700429367566450\n  Bound result 2543414020580445109\n\n[PASS] testFuzz_truncatedMutatingCalldataCannotChangeState(uint256,uint256) (runs: 1024, μ: 143075, ~: 143215)\nLogs:\n  Bound result 81\n\n[PASS] test_allStandardEntryPointsRejectNativeValue() (gas: 369463)\n[PASS] test_appendedAddressCannotSpoofTransferSender() (gas: 58969)\n[PASS] test_create2MintsOnlyToImmediateDeployerDespiteRequesterOrigin() (gas: 314987)\n[PASS] test_delegatedTransferCoversEveryAddressAliasPartition() (gas: 609562)\n[PASS] test_infiniteApprovalCanBeRevokedAndCannotBeReused() (gas: 212085)\n[PASS] test_intermediaryCannotUseOriginOrAnotherSpendersApproval() (gas: 360867)\n[PASS] test_maximumFiniteAllowanceIsNotInfinite() (gas: 142676)\n[PASS] test_maximumTransferFromRevertsWithBalanceErrorNotOverflow() (gas: 118915)\n[PASS] test_transferFromByOwnerStillNeedsSelfApproval() (gas: 169131)\n[PASS] test_zeroSpenderRejectedForZeroAndMaximumApprovals() (gas: 62883)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 65.86ms (257.84ms CPU time)\n\nRan 1 test for test/LaunchToken.invariant.t.sol:LaunchTokenInvariantTest\n[PASS] invariant_balancesAndAllowancesMatchIndependentModel() (runs: 256, calls: 32768, reverts: 0)\n\n╭--------------+----------------------------+-------+---------+----------╮\n| Contract     | Selector                   | Calls | Reverts | Discards |\n+========================================================================+\n| TokenHandler | approve                    | 3304  | 0       | 0        |\n|--------------+----------------------------+-------+---------+----------|\n| TokenHandler | approveAndSpend            | 3294  | 0       | 0        |\n|--------------+----------------------------+-------+---------+----------|\n| TokenHandler | move                       | 3235  | 0       | 0        |\n|--------------+----------------------------+-------+---------+----------|\n| TokenHandler | rejectDelegatedOverBalance | 3313  | 0       | 0        |\n|--------------+----------------------------+-------+---------+----------|\n| TokenHandler | rejectOverAllowance        | 3261  | 0       | 0        |\n|--------------+----------------------------+-------+---------+----------|\n| TokenHandler | rejectOverBalance          | 3328  | 0       | 0        |\n|--------------+----------------------------+-------+---------+----------|\n| TokenHandler | rejectZeroRecipient        | 3272  | 0       | 0        |\n|--------------+----------------------------+-------+---------+----------|\n| TokenHandler | revoke                     | 3269  | 0       | 0        |\n|--------------+----------------------------+-------+---------+----------|\n| TokenHandler | roundTrip                  | 3228  | 0       | 0        |\n|--------------+----------------------------+-------+---------+----------|\n| TokenHandler | spend                      | 3264  | 0       | 0        |\n╰--------------+----------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000\n  Bound result 95\n  Bound result 164281399542338533149127844\n  Bound result 0\n  Bound result 93\n  Bound result 20\n  Bound result 4\n  Bound result 4\n  Bound result 6525\n  Bound result 75\n  Bound result 253\n  Bound result 9\n  Bound result 3988024235731861404862786244671979847651\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129658615\n  Bound result 999999999999999999999993382\n  Bound result 4015\n  Bound result 24576\n  Bound result 800000000000000000000000000\n  Bound result 92424\n  Bound result 999999999999999999999993380\n  Bound result 93\n  Bound result 327334225699551382321\n  Bound result 35722368449688398858015903410193994127407\n  Bound result 3093743781\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129654494\n  Bound result 0\n  Bound result 4\n  Bound result 5518\n  Bound result 1119\n  Bound result 95\n  Bound result 10643\n  Bound result 2514000706\n  Bound result 233\n  Bound result 3\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639524\n  Bound result 1102\n  Bound result 180\n  Bound result 9680\n  Bound result 4122\n  Bound result 889779707147214524593295944\n  Bound result 203\n  Bound result 4898\n  Bound result 143\n  Bound result 101\n  Bound result 8\n  Bound result 88\n  Bound result 3000000000000000000\n  Bound result 1917126799687\n  Bound result 0\n  Bound result 5148\n  Bound result 95\n  Bound result 128\n  Bound result 49422300655976383518971161772042036479724517635858811238160587340303074464593\n  Bound result 185\n  Bound result 5\n  Bound result 1763\n  Bound result 922\n  Bound result 143\n  Bound result 4663\n  Bound result 1\n  Bound result 11329\n  Bound result 6\n  Bound result 7\n  Bound result 86\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639467\n  Bound result 696\n  Bound result 0\n  Bound result 1674\n  Bound result 1170\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639401\n  Bound result 3630\n  Bound result 0\n  Bound result 7\n  Bound result 340507978010813776092511506743331108320296093304303\n  Bound result 0\n  Bound result 6\n  Bound result 3\n  Bound result 221629142089098771694239534609037951021917878566271795572928386004\n  Bound result 1\n  Bound result 465\n  Bound result 95\n  Bound result 10082\n  Bound result 2\n  Bound result 123000000000000000000\n  Bound result 24611687582078929259550862236096427069372635\n  Bound result 9\n  Bound result 27\n  Bound result 27\n  Bound result 22\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 7.44s (7.44s CPU time)\n\nRan 4 test suites in 7.45s (7.64s CPU time): 53 tests passed, 0 failed, 0 skipped (53 total tests)\n","passed":true},{"durationMs":33,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"LaunchToken.approve(address,uint256)\",\"LaunchToken.transfer(address,uint256)\",\"LaunchToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":11,\"LICENSE\":21,\"README.md\":96,\"dependencies.sha256\":36,\"docs/CLAIMS.md\":92,\"docs/DEPLOYMENT.md\":108,\"docs/REVIEW.md\":65,\"foundry.toml\":22,\"remappings.txt\":2,\"src/LaunchToken.sol\":14,\"test/LaunchAllocation.t.sol\":211,\"test/LaunchToken.adversarial.t.sol\":265,\"test/LaunchToken.invariant.t.sol\":222,\"test/LaunchToken.t.sol\":322,\"test/README.md\":93},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"1ee661d80a184a2b986e3e7d93acd2e63378535246817b0e554d1d21477465ba","verifiedTreeHash":"a6255ead881c47ac3e44aba631fe58318c27a49f","verifierVersion":"0.1.0+d372f99e"},{"checks":[{"durationMs":1187,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.12s\nCompiler run successful!\n","passed":true},{"durationMs":4287,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 7 tests for test/LaunchAllocation.t.sol:LaunchAllocationTest\n[PASS] test_bothWalletAllocationsAreImmediatelyTransferable() (gas: 235606)\n[PASS] test_factoryAllocationIsEightyTenTenWithNoReserveTransfer() (gas: 126205)\n[PASS] test_factoryReceivesAllSupplyBeforeAnyAllocation() (gas: 70747)\n[PASS] test_repeatingReserveTransferWithoutNewFundsFails() (gas: 171062)\n[PASS] test_requesterCannotSpendSwarmOrPoolAllocation() (gas: 153665)\n[PASS] test_requesterSeparatelyTransfersExactlyEightPercentToReserve() (gas: 171510)\n[PASS] test_reserveTransferNeedsRequesterOrItsAllowance() (gas: 180551)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 26.39ms (1.14ms CPU time)\n\nRan 27 tests for test/LaunchToken.t.sol:LaunchTokenTest\n[PASS] testFuzz_insufficientAllowanceRevertsAtomically(uint256,uint256) (runs: 1024, μ: 133866, ~: 134267)\nLogs:\n  Bound result 243\n  Bound result 3000000000000000000\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 1024, μ: 92894, ~: 93266)\nLogs:\n  Bound result 947281380704664579169357535\n\n[PASS] testFuzz_transferFromAccountsExactly(uint256,uint256) (runs: 1024, μ: 163261, ~: 165209)\nLogs:\n  Bound result 1469058188756789824647\n  Bound result 480828688147928422248\n\n[PASS] testFuzz_transferOverBalanceRevertsAtomically(uint256) (runs: 1024, μ: 69518, ~: 69836)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129648492\n\n[PASS] test_approvalIsSpecificToOwnerAndSpender() (gas: 161311)\n[PASS] test_approveEmitsEventAndCanReplaceAndRevokeAllowance() (gas: 183346)\n[PASS] test_approveZeroSpenderReverts() (gas: 30638)\n[PASS] test_constructorEmitsSingleSupplyMint() (gas: 5535)\n[PASS] test_infiniteAllowanceRemainsUnchanged() (gas: 139206)\n[PASS] test_insufficientBalanceRollsBackAllowance() (gas: 122214)\n[PASS] test_metadataAndEntireSupplyBelongToDeployer() (gas: 89616)\n[PASS] test_noAdminMintBurnTaxPauseBlacklistOrUpgradeEntryPoints() (gas: 2896159)\n[PASS] test_noNativeCurrencyOrFallbackEntryPoint() (gas: 58642)\n[PASS] test_runtimeIsBoundedAndHasNoEscapeOpcodes() (gas: 1340334)\n[PASS] test_selfTransferPreservesBalance() (gas: 51464)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 36223)\n[PASS] test_transferCannotSpendAnotherHoldersBalance() (gas: 45122)\n[PASS] test_transferDoesNotCallRecipient() (gas: 171998)\n[PASS] test_transferEmitsEventAndMovesExactAmount() (gas: 91493)\n[PASS] test_transferEntireSupply() (gas: 136626)\n[PASS] test_transferFromConsumesFiniteAllowanceAndEmitsTransfer() (gas: 250632)\n[PASS] test_transferFromSelfStillConsumesAllowance() (gas: 105382)\n[PASS] test_transferFromToZeroRollsBackAllowance() (gas: 104034)\n[PASS] test_transferFromZeroSenderReverts() (gas: 42232)\n[PASS] test_transferToZeroRevertsEvenForZeroAmount() (gas: 72283)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 73417)\n[PASS] test_zeroTransferFromWorksWithoutAllowance() (gas: 61856)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 26.45ms (114.78ms CPU time)\n\nRan 1 test for test/LaunchToken.invariant.t.sol:LaunchTokenInvariantTest\n[PASS] invariant_balancesAndAllowancesMatchIndependentModel() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+----------+-------+---------+----------╮\n| Contract     | Selector | Calls | Reverts | Discards |\n+======================================================+\n| TokenHandler | approve  | 5617  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| TokenHandler | move     | 5266  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| TokenHandler | spend    | 5501  | 0       | 0        |\n╰--------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1481\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 379\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 10\n  Bound result 0\n  Bound result 118\n  Bound result 1\n  Bound result 592\n  Bound result 3\n  Bound result 912\n  Bound result 96\n  Bound result 2\n  Bound result 0\n  Bound result 0\n  Bound result 826\n  Bound result 65\n  Bound result 309\n  Bound result 50\n  Bound result 0\n  Bound result 999999999999999999999997614\n  Bound result 4\n  Bound result 18\n  Bound result 0\n  Bound result 91\n  Bound result 0\n  Bound result 0\n  Bound result 10425200\n  Bound result 435\n  Bound result 0\n  Bound result 254\n  Bound result 41\n  Bound result 3\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.20s (4.20s CPU time)\n\nRan 3 test suites in 4.20s (4.25s CPU time): 35 tests passed, 0 failed, 0 skipped (35 total tests)\n","passed":true},{"durationMs":35,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"LaunchToken.approve(address,uint256)\",\"LaunchToken.transfer(address,uint256)\",\"LaunchToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":11,\"LICENSE\":21,\"README.md\":96,\"dependencies.sha256\":36,\"docs/CLAIMS.md\":92,\"docs/DEPLOYMENT.md\":108,\"docs/REVIEW.md\":65,\"foundry.toml\":22,\"remappings.txt\":2,\"src/LaunchToken.sol\":14,\"test/LaunchAllocation.t.sol\":143,\"test/LaunchToken.invariant.t.sol\":90,\"test/LaunchToken.t.sol\":316},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":418,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":231,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/LaunchToken.sol:12: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"7b82b8dc6159c642c3348a09e97d02ae39de181d0ce9461ad632cb422d01e45c","verifiedTreeHash":"db8918541f2f0192d2741adbabdb662823b5bc2b","verifierVersion":"0.1.0+d372f99e"},{"checks":[{"durationMs":1127,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.06s\nCompiler run successful!\n","passed":true},{"durationMs":4102,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 7 tests for test/LaunchAllocation.t.sol:LaunchAllocationTest\n[PASS] test_bothWalletAllocationsAreImmediatelyTransferable() (gas: 235606)\n[PASS] test_factoryAllocationIsEightyTenTenWithNoReserveTransfer() (gas: 126205)\n[PASS] test_factoryReceivesAllSupplyBeforeAnyAllocation() (gas: 70747)\n[PASS] test_repeatingReserveTransferWithoutNewFundsFails() (gas: 171062)\n[PASS] test_requesterCannotSpendSwarmOrPoolAllocation() (gas: 153665)\n[PASS] test_requesterSeparatelyTransfersExactlyEightPercentToReserve() (gas: 171510)\n[PASS] test_reserveTransferNeedsRequesterOrItsAllowance() (gas: 180551)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 25.21ms (906.00µs CPU time)\n\nRan 27 tests for test/LaunchToken.t.sol:LaunchTokenTest\n[PASS] testFuzz_insufficientAllowanceRevertsAtomically(uint256,uint256) (runs: 1024, μ: 133866, ~: 134267)\nLogs:\n  Bound result 154567\n  Bound result 20709704681678385580703469\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 1024, μ: 92894, ~: 93266)\nLogs:\n  Bound result 473926408159771452321096930\n\n[PASS] testFuzz_transferFromAccountsExactly(uint256,uint256) (runs: 1024, μ: 163261, ~: 165209)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n  Bound result 785359526734411540665416481\n\n[PASS] testFuzz_transferOverBalanceRevertsAtomically(uint256) (runs: 1024, μ: 69518, ~: 69836)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129648492\n\n[PASS] test_approvalIsSpecificToOwnerAndSpender() (gas: 161311)\n[PASS] test_approveEmitsEventAndCanReplaceAndRevokeAllowance() (gas: 183346)\n[PASS] test_approveZeroSpenderReverts() (gas: 30638)\n[PASS] test_constructorEmitsSingleSupplyMint() (gas: 5535)\n[PASS] test_infiniteAllowanceRemainsUnchanged() (gas: 139206)\n[PASS] test_insufficientBalanceRollsBackAllowance() (gas: 122214)\n[PASS] test_metadataAndEntireSupplyBelongToDeployer() (gas: 89616)\n[PASS] test_noAdminMintBurnTaxPauseBlacklistOrUpgradeEntryPoints() (gas: 2896159)\n[PASS] test_noNativeCurrencyOrFallbackEntryPoint() (gas: 58642)\n[PASS] test_runtimeIsBoundedAndHasNoEscapeOpcodes() (gas: 1340334)\n[PASS] test_selfTransferPreservesBalance() (gas: 51464)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 36223)\n[PASS] test_transferCannotSpendAnotherHoldersBalance() (gas: 45122)\n[PASS] test_transferDoesNotCallRecipient() (gas: 171998)\n[PASS] test_transferEmitsEventAndMovesExactAmount() (gas: 91493)\n[PASS] test_transferEntireSupply() (gas: 136626)\n[PASS] test_transferFromConsumesFiniteAllowanceAndEmitsTransfer() (gas: 250632)\n[PASS] test_transferFromSelfStillConsumesAllowance() (gas: 105382)\n[PASS] test_transferFromToZeroRollsBackAllowance() (gas: 104034)\n[PASS] test_transferFromZeroSenderReverts() (gas: 42232)\n[PASS] test_transferToZeroRevertsEvenForZeroAmount() (gas: 72283)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 73417)\n[PASS] test_zeroTransferFromWorksWithoutAllowance() (gas: 61856)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 25.27ms (104.97ms CPU time)\n\nRan 1 test for test/LaunchToken.invariant.t.sol:LaunchTokenInvariantTest\n[PASS] invariant_balancesAndAllowancesMatchIndependentModel() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+----------+-------+---------+----------╮\n| Contract     | Selector | Calls | Reverts | Discards |\n+======================================================+\n| TokenHandler | approve  | 5617  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| TokenHandler | move     | 5266  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| TokenHandler | spend    | 5501  | 0       | 0        |\n╰--------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1481\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 379\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 10\n  Bound result 0\n  Bound result 118\n  Bound result 1\n  Bound result 592\n  Bound result 3\n  Bound result 912\n  Bound result 96\n  Bound result 2\n  Bound result 0\n  Bound result 0\n  Bound result 826\n  Bound result 65\n  Bound result 309\n  Bound result 50\n  Bound result 0\n  Bound result 999999999999999999999997614\n  Bound result 4\n  Bound result 18\n  Bound result 0\n  Bound result 91\n  Bound result 0\n  Bound result 0\n  Bound result 10425200\n  Bound result 435\n  Bound result 0\n  Bound result 254\n  Bound result 41\n  Bound result 3\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.01s (4.01s CPU time)\n\nRan 3 test suites in 4.01s (4.06s CPU time): 35 tests passed, 0 failed, 0 skipped (35 total tests)\n","passed":true},{"durationMs":36,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"LaunchToken.approve(address,uint256)\",\"LaunchToken.transfer(address,uint256)\",\"LaunchToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":11,\"LICENSE\":21,\"README.md\":96,\"dependencies.sha256\":36,\"docs/CLAIMS.md\":92,\"docs/DEPLOYMENT.md\":108,\"docs/REVIEW.md\":65,\"foundry.toml\":22,\"launch.json\":17,\"remappings.txt\":2,\"src/LaunchToken.sol\":14,\"test/LaunchAllocation.t.sol\":143,\"test/LaunchToken.invariant.t.sol\":90,\"test/LaunchToken.t.sol\":316},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"c61c50475230d6e73a4977c321a61148791319e7b946fb47c5a5f4e83d569d87","verifiedTreeHash":"482a08e1f4cfe6b3f48ba39cb3ef2090e1250bed","verifierVersion":"0.1.0+d372f99e"}]}