{"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":"cab13aeb-af1d-450a-a562-e477dec6a919","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"eb35b527aa001264a1074db9706882d929251f6589428174892b7115b4de1bc7","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":"d81641bad877d0005e45e415ae0b74502bf95e851e6aa9a9956d9871ea804fc9","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":"f9734b52ca302cfb3dd3bea5ec3f15fc6cded9890d11dcc1e78bbb15cbc29649","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"70ea031cea599bddac749170043caad78d92ed2acbc6e887c616b3bd84b6e718","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":"7db814685c3894fd2ff6661e4e0403abacb0bf33a337f6b380b2438fe338b0a1","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":"16ee02f7fc694feab78ca7d3ade15a5637d77cc1866a5b1889ee3db9d97a4436","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"6b8d2c2ebd3301cff2be8edb1e1cc6ba65c858c02fe7247be81722b969842265","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"6b8d2c2ebd3301cff2be8edb1e1cc6ba65c858c02fe7247be81722b969842265","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"a425c0c4d04ccf749205982e089f0837fdad79a5894f5902302933074d4244fe","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"e5bdcdb4e85d779bd8742b492c24afbf4162bbb7a5843d3d865581b76905f28e","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: BloxIMD (BLOX).\nToken name: BloxIMD\nToken symbol: BLOX\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"60d8cfd46cad67fd40a828cb5cacd270b3257a41ef7a037b967e126c793d77fa","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"cab13aeb-af1d-450a-a562-e477dec6a919","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1581-bloximd"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51021","feedbackHash":"d492a0ec035ef6aa87e98595398a4ab822ddd9fd97f3f425a6a371fcfecee135","nodeKey":"audit_economics","submissionHash":"eb35b527aa001264a1074db9706882d929251f6589428174892b7115b4de1bc7","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51419","feedbackHash":"aafaa1b7bc1a7f2e907f6e217374b7f9e684f5c06abf8d7123e9ae83933c1d57","nodeKey":"audit_flow","submissionHash":"d81641bad877d0005e45e415ae0b74502bf95e851e6aa9a9956d9871ea804fc9","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51452","feedbackHash":"913f6afc7abd804d5fec0bee3491a9f37b78a340528d56e355ebf78980d554ac","nodeKey":"audit_judge","submissionHash":"f9734b52ca302cfb3dd3bea5ec3f15fc6cded9890d11dcc1e78bbb15cbc29649","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51081","feedbackHash":"0eff960c0642980d97a16445b945c56ff67e6abcc2d3a3f92f980f1d96889deb","nodeKey":"audit_math","submissionHash":"70ea031cea599bddac749170043caad78d92ed2acbc6e887c616b3bd84b6e718","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52165","feedbackHash":"7dd90370f5146f81c11669baec01ef5a20bad00be59b9b4475c3960842b350a9","nodeKey":"audit_permissions","submissionHash":"7db814685c3894fd2ff6661e4e0403abacb0bf33a337f6b380b2438fe338b0a1","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51463","feedbackHash":"1c2f2aaf3c5d18e4e6e11c2ac9db48869221e50c45f4b6c87187bf5a1f329bbf","nodeKey":"build_contract_project","submissionHash":"16ee02f7fc694feab78ca7d3ade15a5637d77cc1866a5b1889ee3db9d97a4436","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52606","feedbackHash":"406fa69f9335f601c02951d1fd3981d705236ee1936474140d1bf99da4cb78c9","nodeKey":"manifest","submissionHash":"a425c0c4d04ccf749205982e089f0837fdad79a5894f5902302933074d4244fe","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52603","feedbackHash":"02cf1677301c5f978433166df0c927f4b5a685a890580f92e00dbffffd2a10ab","nodeKey":"write_foundry_tests","submissionHash":"e5bdcdb4e85d779bd8742b492c24afbf4162bbb7a5843d3d865581b76905f28e","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"5701750b0599658c9be75e10d2a73230915e958b116be4532c6803780ffdb3af","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"4390891c867471cbcda01c430e85c0bdd4006d3d38e0cd268131648d1dea7138","device":"06ddd0db362564c0","findings":[],"hash":"16ee02f7fc694feab78ca7d3ade15a5637d77cc1866a5b1889ee3db9d97a4436","nodeId":"b38f6f17-a362-4c8b-8803-6123802075cd","outcome":"completed","summary":"Implemented BloxIMD (BLOX) with 18 decimals and exactly 1,000,000,000 tokens minted once to the deployer.\n\nIncluded vendored dependencies, success/failure tests, fuzzing, supply invariants, and deployment/operational documentation.\n\nVerified successfully:\n\n- `forge build`\n- `forge test` — 34 passing\n- `forge fmt --check`\n- Clean offline build and tests using Solidity 0.8.26","treeHash":"6d61bcd93665db5bf402ae1ecfaa57e617cc90c5","usage":{"cachedInputTokens":446592,"inputTokens":52044,"model":"gpt-6-astra","outputTokens":15827,"runtime":"codex","turns":5,"wallClockMs":566494}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"2c968e88904ec22b","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states on line 5 that 'Upstream source contents are unmodified' and tells the reader to verify the vendored tree with the command on line 15. Running that command in the delivered tree fails: lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol all report FAILED (exit status 1). The hashes recorded in DEPENDENCIES.sha256 are the correct upstream hashes for forge-std commit 77041d2ce690e692d6e03cc812b57d1ddaa4d505 (I fetched Vm.sol from that commit; its sha256 9068805b...2cb1 equals the recorded value), so it is the vendored files that were altered after hashing, not the checksum list. Comparing each local file with the upstream file after stripping all whitespace yields identical content for all seven, so the change is re-formatting only (functions re-wrapped to the project's 120-column fmt setting) and no test-helper semantics changed. All OpenZeppelin files (ERC20.sol, IERC20.sol, IERC20Metadata.sol, Context.sol, draft-IERC6093.sol) verify correctly and ERC20.sol is byte-identical to upstream v5.4.0 commit c64a1edb67b6e3f4a15cca8909c9482ad33a02b0. Impact: the production token is unaffected (forge-std is test-only), but the repository's own integrity claim is false and the published verification procedure rejects the tree, which would make a reviewer or the publication step unable to attest the vendored dependencies as 'unmodified'. Fix: either restore the seven forge-std files to their upstream bytes, or regenerate DEPENDENCIES.sha256 from the formatted files and drop the 'unmodified' claim. This is outside the assigned math area; it is reported because it is concrete and reproducible.","line":15,"path":"DEPENDENCIES.md","reproduction":"In the repository root run: sha256sum --check DEPENDENCIES.sha256 ; expected (per DEPENDENCIES.md): every line OK, exit 0. Actual: 'lib/forge-std/src/StdAssertions.sol: FAILED', 'lib/forge-std/src/StdJson.sol: FAILED', 'lib/forge-std/src/StdToml.sol: FAILED', 'lib/forge-std/src/Vm.sol: FAILED', 'lib/forge-std/src/console.sol: FAILED', 'lib/forge-std/src/interfaces/IERC7540.sol: FAILED', 'lib/forge-std/src/interfaces/IMulticall3.sol: FAILED', 'sha256sum: WARNING: 7 computed checksums did NOT match', exit 1. Cross-check: sha256sum lib/forge-std/src/Vm.sol gives a1b1c829...02a15 while DEPENDENCIES.sha256 line 18 and upstream commit 77041d2c give 9068805b...2cb1.","severity":"low","snippet":"sha256sum --check DEPENDENCIES.sha256","title":"Documented dependency verification step fails: seven vendored forge-std files do not match DEPENDENCIES.sha256 or the pinned upstream commit"}],"hash":"70ea031cea599bddac749170043caad78d92ed2acbc6e887c616b3bd84b6e718","nodeId":"5035f5aa-e0b1-40a5-b778-fb84f354bad5","outcome":"completed","summary":"The review is complete and the findings file is written at `.imd-findings.json`.\n\n**Outcome: no math defects in the token.** BloxIMD is a three-line wrapper over OpenZeppelin v5.4.0 ERC20, which I confirmed byte-identical to the pinned upstream commit. The contract contains no division, scaling, fee, cast or custom arithmetic, so the Math Precision and Numerical Gap failure modes have nothing to attach to. I checked every boundary the guides name against the three entry points with a scratch Foundry probe, all of which behaved as specified:\n\n- **Supply literal** evaluates to exactly 1e27 with 18 decimals. The aderyn large-numeric-literal lead is not a defect.\n- **transfer** rejects amount equal to the max uint and balance plus one, accepts exactly the balance and the whole supply, delivers 1 wei exactly, and self-transfer of the whole balance leaves it unchanged.\n- **transferFrom** spends an exact allowance to zero, reverts at allowance plus one, keeps a max allowance unlimited while max minus one decrements, and rolls back the allowance when the balance check reverts.\n- **Zero-amount paths** are no-ops that still revert for a zero recipient.\n- **Conservation** of total supply equals the sum of balances held across a 512-run fuzz, and the project's own invariant suite also passed.\n\n**One low finding, outside the assigned area.** The repository's documented verification step fails: seven forge-std files under lib differ from the hashes in DEPENDENCIES.sha256 and from the pinned upstream commit. The differences are re-formatting only, so no test-helper behaviour changed and the production token is unaffected, but the \"unmodified\" claim in DEPENDENCIES.md is false and the check exits non-zero. All OpenZeppelin files verify correctly.\n\nThe coverage record has seven rows: the three entry points hold, three invariant and boundary rows hold, and the dependency-integrity row points to the finding. The scratch test directory was removed and no repository files were changed.","treeHash":null,"usage":{"cachedInputTokens":573724,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":12809,"runtime":"claude","turns":19,"wallClockMs":178123}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e12f98dda6acc55f","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states that the vendored sources are unmodified and that their integrity is verified with `sha256sum --check DEPENDENCIES.sha256`. On the committed tree (clean working copy at d65b79d) that command reports 7 FAILED entries: lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. The recorded hashes equal the upstream forge-std v1.9.7 (77041d2c) file hashes, but the committed files were re-wrapped by the formatter (e.g. multi-line signatures joined onto one line), so their hashes differ. Stripping all whitespace, each committed file is identical to upstream, so the change is cosmetic and test-only; the five OpenZeppelin production files match upstream v5.4.0 (c64a1edb) byte for byte. Impact: the integrity claim the README and DEPENDENCIES.md make is false as shipped, and a reviewer or the release process following the documented step gets a failure it cannot distinguish from a real tampering of the test harness. No effect on the BloxIMD runtime or launch flows. Fix: either regenerate DEPENDENCIES.sha256 from the committed files (and note that forge-std was reformatted), or restore the seven files to their byte-exact upstream content so the recorded hashes verify.","line":15,"path":"DEPENDENCIES.md","reproduction":"In the repository root run `sha256sum --check DEPENDENCIES.sha256`. Expected (per DEPENDENCIES.md): every line OK. Actual: `lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`, `sha256sum: WARNING: 7 computed checksums did NOT match`. Cross-check: `curl https://raw.githubusercontent.com/foundry-rs/forge-std/77041d2ce690e692d6e03cc812b57d1ddaa4d505/src/Vm.sol | sha256sum` gives 9068805b59ac1d0e..., the value recorded in DEPENDENCIES.sha256, while the committed lib/forge-std/src/Vm.sol hashes to a1b1c82924aecf0f...; `tr -d '[:space:]'` on both yields identical content.","severity":"low","snippet":"sha256sum --check DEPENDENCIES.sha256","title":"Documented dependency integrity check fails: DEPENDENCIES.sha256 does not match seven committed forge-std files"}],"hash":"7db814685c3894fd2ff6661e4e0403abacb0bf33a337f6b380b2438fe338b0a1","nodeId":"9ef46266-21f1-4e05-823b-c35c4f351f95","outcome":"completed","summary":"The review is complete and `.imd-findings.json` holds the result. The working tree has no tracked changes; only the scratch test under `test/scratch/` and the findings file exist, both ignored or expected.\n\n**Outcome:** the BloxIMD token has no access-control, trust-gap or asymmetry defect. One low-severity integrity finding was substantiated outside the assigned area.\n\n**What was checked in the assigned area**\n\n- **Permission model.** The contract is OpenZeppelin ERC20 v5.4.0 plus a constructor mint. There are no roles, owner, pausing, blacklist, mint, burn, permit, upgrade or initializer paths, and no receive or fallback. All three state-changing entry points are public and act only on the caller's own balance or an explicitly approved allowance.\n- **Trust gap.** The deployer, which is the factory at launch, receives the full supply but gains no power beyond its own balance. It cannot pull a holder's tokens without allowance and cannot set another account's allowance. This is a design trust assumption, not a bypass.\n- **Asymmetry.** The only pair is transfer versus transferFrom. The differences are OpenZeppelin's documented semantics: self-transferFrom still consumes allowance, infinite allowance is not decremented, and no Approval event is emitted on spend. None moves value asymmetrically.\n- **Library provenance.** The five vendored OpenZeppelin files match upstream commit c64a1edb byte for byte, fetched over the network.\n- **Tests.** The existing 34 tests pass, and a scratch test I wrote exercising the access claims passes.\n\n**Finding reported (low):** DEPENDENCIES.md tells readers to verify vendored code with the sha256 check, but on the committed tree that command fails for seven forge-std files. They were reformatted after being hashed. Stripped of whitespace they equal upstream, and they are test-only, so there is no runtime impact. The fix is to regenerate the hash file or restore the byte-exact upstream files.\n\n**Coverage:** all three listed entry points are marked `holds`, with additional rows for the constructor mint, the absence of privileged entry points, library provenance, the hash file, and the factory trust assumption.","treeHash":null,"usage":{"cachedInputTokens":763674,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":14942,"runtime":"claude","turns":31,"wallClockMs":221346}},{"artifacts":[],"attempt":1,"bundleHash":"072b1be8e1458b78abfdee82ce55e7ffaaac717c196a945f433654abc750e70f","device":"829d84438fb3fdc8","findings":[],"hash":"a425c0c4d04ccf749205982e089f0837fdad79a5894f5902302933074d4244fe","nodeId":"51a04ada-401f-4b10-b281-0671d9f036c7","outcome":"completed","summary":"Done. The manifest is written and verified.\n\n**What I wrote:** `launch.json` at the repository root, the only new or changed file. It describes the accepted tree exactly:\n\n- Kind \"custom_token\", token contract BloxIMD with name BloxIMD, symbol BLOX, 18 decimals.\n- Empty constructorArgs, matching the compiled ABI which has no constructor inputs.\n- totalSupply of 1000000000000000000000000000, the 10^27 minor units the constructor mints once to msg.sender.\n- An empty contracts list, since the accepted tree has no application contracts.\n- The pool block as given: IMD pair at the specified address, fee 12500, tick spacing 60, initial price 79228162514264337593543950336.\n- The economics object copied verbatim from the job.\n- Notes of about 1,000 characters describing the plain ERC-20 behavior and the absence of any privileged entrypoints.\n\n**Verification results:**\n\n| Check | Result |\n| --- | --- |\n| JSON schema keys and values | pass |\n| `forge build` | compiled cleanly |\n| `forge test` | 34 passed, 0 failed |\n| Working tree | only launch.json added |\n\nThe manifest is ready for the manifest-reading review and admission steps.","treeHash":"9311248b22c04c30f7156d567f35d3a8bba88f10","usage":{"cachedInputTokens":195678,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":2829,"runtime":"claude","turns":10,"wallClockMs":44756}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fea57d3e9d0ca7bf","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states that every vendored file is unmodified upstream source and tells the reader to confirm this with `sha256sum --check DEPENDENCIES.sha256`. Running that command on the committed tree reports 7 FAILED entries, all under lib/forge-std/src/: StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. The recorded digests (for example DEPENDENCIES.sha256 line 18, `9068805b...  lib/forge-std/src/Vm.sol`) are the digests of the upstream forge-std v1.9.7 files at commit 77041d2c; the committed files are those same files after being re-wrapped by `forge fmt` at line_length 120 (multi-line function signatures collapsed to one line, console.sol assembly reflowed). I diffed each of the seven against raw.githubusercontent.com at that commit: the differences are whitespace/line-wrapping only, so the test helpers are semantically unchanged, and the five production OpenZeppelin v5.4.0 files match upstream byte for byte. Impact is limited to the integrity record: the project's only reproducible provenance check for its vendored code fails, the claim 'Upstream source contents are unmodified' is false for forge-std, and a reviewer following the documented procedure cannot distinguish this benign reformatting from a hostile edit of a test helper. Fix: either restore the seven files to their upstream bytes (and exclude lib/ from `forge fmt`, e.g. `ignore = [\"lib/**\"]` under [fmt], which is a config change for the author to make) or regenerate DEPENDENCIES.sha256 from the committed files and amend DEPENDENCIES.md to say forge-std is upstream v1.9.7 reformatted by forge fmt.","line":5,"path":"DEPENDENCIES.md","reproduction":"From the repository root on the committed tree run `sha256sum --check DEPENDENCIES.sha256`. Expected (per DEPENDENCIES.md): every line `OK`. Actual: `lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`, `sha256sum: WARNING: 7 computed checksums did NOT match`. For one file: `sha256sum lib/forge-std/src/Vm.sol` prints a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15 while DEPENDENCIES.sha256 line 18 records 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1, which is the digest of https://raw.githubusercontent.com/foundry-rs/forge-std/77041d2ce690e692d6e03cc812b57d1ddaa4d505/src/Vm.sol. `diff <(curl -sL that URL) lib/forge-std/src/Vm.sol` shows only signature line-wrapping differences (e.g. getDeployment and parseJsonAddressArray declarations joined onto one line).","severity":"low","snippet":"invoked by the build or tests. Upstream source contents are unmodified.","title":"DEPENDENCIES.sha256 does not match the vendored forge-std files; the documented integrity check fails"}],"hash":"d81641bad877d0005e45e415ae0b74502bf95e851e6aa9a9956d9871ea804fc9","nodeId":"ffc86098-2fc0-4847-9b30-9624ff426e40","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written. No tracked file was changed.\n\n**Outcome:** one low-severity finding, no defects in the token's control flow.\n\n**What I checked**\n\n- **Execution trace of the three entry points.** `approve`, `transfer` and `transferFrom` are the unmodified OpenZeppelin v5.4.0 paths. Zero-address sender, receiver and spender revert before any write. Insufficient balance or allowance reverts with no state change, and a later revert inside `transferFrom` rolls back the allowance debit atomically. The infinite allowance is never decremented. The deployer has no special spending power. Flows move exact amounts, so the factory, distributor and PoolManager legs arrive whole.\n- **Constructor and supply invariant.** One mint of exactly 10^27 to the immediate caller, which is the factory under CREATE2. The compiled ABI has no mint, burn, owner, pause, initialize or upgrade function and no receive or fallback. My own runtime scan found no DELEGATECALL, CALLCODE, SELFDESTRUCT or any CALL-family opcode. The aderyn large-literal lead is the intended constant.\n- **Periphery.** I diffed all five vendored OpenZeppelin files against upstream commit c64a1edb over the network. They are byte-identical. The project build, 34 tests and `forge fmt --check` all pass.\n\n**The finding (low):** `DEPENDENCIES.md` says all vendored sources are unmodified and points to `sha256sum --check DEPENDENCIES.sha256`. That command fails on 7 forge-std files. They are upstream v1.9.7 files re-wrapped by `forge fmt`, so the test helpers are semantically unchanged, but the documented provenance check is broken. Fix is to restore the upstream bytes or regenerate the digests and amend the claim.\n\n**Coverage:** all three listed entry points plus constructor, supply invariant and periphery rows are recorded as `holds`, with the forge-std integrity row pointing at finding 1. Nothing was left unreached. The standard ERC-20 approve race is noted as a documented holder responsibility, not reported as a defect.","treeHash":null,"usage":{"cachedInputTokens":653196,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":13060,"runtime":"claude","turns":23,"wallClockMs":203079}},{"artifacts":[],"attempt":1,"bundleHash":"e4d3885dfdd1a69feeeb76401f0377f12a45966543940eddf9e09d537ad4d68d","device":"7e64d4917fa814e6","findings":[{"description":"README.md and DEPENDENCIES.md instruct reviewers to verify the vendored libraries with `sha256sum --check DEPENDENCIES.sha256` and state that upstream contents are unmodified. Running that command in the working tree reports seven forge-std files as FAILED: StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. Every OpenZeppelin file passes, so the production dependency is intact and the token itself is unaffected; forge-std is test-only. The documented integrity check nevertheless fails as shipped, so either the recorded hashes or the vendored forge-std revision should be corrected by whoever owns lib/ and the manifest. Not a token defect and no proof is attached.","line":5,"path":"DEPENDENCIES.sha256","reproduction":"Run `sha256sum --check DEPENDENCIES.sha256` at the repository root. Expected: every line reports OK. Actual: seven lib/forge-std/src/* entries report FAILED and sha256sum prints 'WARNING: 7 computed checksums did NOT match'. For example the manifest records d4c89eec…9780 for lib/forge-std/src/StdAssertions.sol while the file hashes to 3fbf4a02…7384.","severity":"info","title":"DEPENDENCIES.sha256 does not match seven vendored forge-std files"}],"hash":"e5bdcdb4e85d779bd8742b492c24afbf4162bbb7a5843d3d865581b76905f28e","nodeId":"87f31d6e-ca83-4791-aee0-5d9546a2cc04","outcome":"completed","summary":"The findings file is in place and is deliberately excluded from git by the harness, so it is collected separately. Everything is done and verified.\n\n**Outcome:** `forge build` and `forge test` pass on the delivered tree. 62 tests across 5 suites, 0 failures. The token is unmodified OpenZeppelin v5.4.0 ERC-20 with a single fixed mint, and I found no defect in it. One info-level documentation finding is recorded.\n\n**What I added** (the earlier contributor's three test files are untouched):\n\n- `test/BloxIMDEdgeCases.t.sol`: 27 tests, fuzz at 1000 runs via inline config. Failure paths include ether sent to the constructor via raw CREATE, one-wei and last-wei boundaries, the allowance just below the unlimited sentinel staying finite, unlimited allowance bounded by the owner's balance, allowance checked before balance, spenders unable to delegate an owner's allowance onward, exhausted allowance not replayable, tokens sent to the token contract being unrecoverable, and any unknown selector reverting without state change. Fuzzed properties use arbitrary non-zero addresses, multi-hop chains, and split-then-merge and delegated round trips.\n- `test/BloxIMDGhostInvariant.t.sol`: a second invariant suite at 256 runs by 64 depth. Six actors with uneven starting balances, including one wei and zero. One recipient in four is an arbitrary fuzzed address, so tokens leave the actor set and conservation is checked over a ghost-tracked holder set. Ghost variables record initial balance, received and sent per holder, and a mirror of every actor-to-actor allowance. Five handler actions assert exact revert data for overdraws, overspends by actors and strangers, zero recipient, zero spender, sixteen privileged signatures, and ether. All nine actions were each exercised over 1,700 times with zero unexpected reverts.\n\n**Grounding:** I ran the ghost handler against a scratch mutant with a 1% burn on transfer and an open mint. The supply invariant and the handler's per-call postconditions both failed on it, so the properties are not vacuous. The scratch file was then removed.\n\n**Finding recorded in `.imd-findings.json`** (info, no proof): the documented integrity check `sha256sum --check DEPENDENCIES.sha256` fails for seven vendored forge-std files. All OpenZeppelin files verify, so the production dependency and the token are unaffected. Whoever owns `lib/` and the manifest should reconcile the hashes or the forge-std revision.","treeHash":"d70498178ea5d4a33eab6929d321103c221cb7f2","usage":{"cachedInputTokens":1566932,"inputTokens":610,"model":"claude-fable-5-1","outputTokens":35606,"runtime":"claude","turns":33,"wallClockMs":581308}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"72ae9b5bbd1a54b6","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states that vendored upstream sources are unmodified and tells the reader to confirm this with `sha256sum --check DEPENDENCIES.sha256`. Running that command in the committed tree (git status clean at d65b79d) reports 7 forge-std files whose content does not match the recorded hashes: lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol. Fetching the pinned upstream commit 77041d2ce690e692d6e03cc812b57d1ddaa4d505 confirms the on-disk files differ from upstream (e.g. console.sol is reformatted, Vm.sol has a different line count), so the mismatch is real, not a stale hash file. All OpenZeppelin files (the only production dependency) verify correctly, and forge-std is test-only, so there is no economic or on-chain impact; this is a documentation/provenance defect only. It is outside the assigned economics area and reported for completeness because the project's own verification instruction fails as written.","line":5,"path":"DEPENDENCIES.md","reproduction":"In the repository root run `sha256sum --check DEPENDENCIES.sha256`. Expected (per DEPENDENCIES.md): every line reports OK. Actual: `sha256sum: WARNING: 7 computed checksums did NOT match`, with FAILED for lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. All lib/openzeppelin-contracts entries report OK. Fix: either re-vendor those files from the pinned commit or regenerate DEPENDENCIES.sha256 and correct the 'unmodified' statement.","severity":"info","snippet":"invoked by the build or tests. Upstream source contents are unmodified.","title":"DEPENDENCIES.md integrity claim does not hold: the documented checksum verification fails for 7 vendored forge-std files"}],"hash":"eb35b527aa001264a1074db9706882d929251f6589428174892b7115b4de1bc7","nodeId":"92383f2d-bd3e-4f00-a887-7d49d36dd8d6","outcome":"completed","summary":"The review is complete and written to `.imd-findings.json`.\n\n**Outcome: the token is clean in the assigned area.** BloxIMD is an unmodified OpenZeppelin v5.4.0 ERC-20 whose constructor mints exactly 10^27 base units once to msg.sender, with no other state-changing entry points beyond approve, transfer and transferFrom. All OpenZeppelin files verify against the recorded checksums.\n\nWhat I checked against the Economic Security, Invariant and Flow Gap guides:\n- **Launch flow exactness.** A scratch Foundry test drove the factory split (10% distributor, 80% pool, 10% remainder), a claim, a buy by plain transfer and a sell by transferFrom with max allowance. Every amount arrived whole and supply stayed constant. No fee, burn, tax, reflection, rebase or callback exists.\n- **Conservation invariant.** Sum of balances equals totalSupply across the project's unit, fuzz and stateful invariant suites plus my own fuzz run. Nothing can grow the supply, from a stranger or from the deployer.\n- **Flow Gap seams.** No external calls, hooks or oracle reads in the token, so no execution/periphery seam exists. Pool price derivation and the economics fields belong to the deployer and manifest, and the token's supply and decimals match the brief's inputs.\n\nOne finding, severity info, outside my area: DEPENDENCIES.md says vendored sources are unmodified and tells the reader to run the checksum check, but that command fails for seven forge-std files. I confirmed against the pinned upstream commit that the files really differ. Forge-std is test-only, so there is no economic impact.\n\nCoverage rows: all three ABI entry points hold, plus rows for the supply, launch-flow and economics invariants. The scratch directory was removed, and the tree is unchanged apart from the findings file.","treeHash":null,"usage":{"cachedInputTokens":719949,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":9106,"runtime":"claude","turns":12,"wallClockMs":149344}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"d63ea36a2b809080","findings":[{"citation":"resolved","description":"Merged from the identical finding reported by audit_math, audit_economics, audit_flow, audit_permissions and write_foundry_tests (same root cause, one defect). DEPENDENCIES.md states that every vendored file is unmodified upstream source and tells the reader to confirm this with `sha256sum --check DEPENDENCIES.sha256` (line 15). Reproduced on the committed tree at b571dae (git status clean): the command exits 1 and reports 7 FAILED entries, all under lib/forge-std/src/: StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. I fetched each of the seven from the pinned upstream commit 77041d2ce690e692d6e03cc812b57d1ddaa4d505: the upstream digests equal the values recorded in DEPENDENCIES.sha256 (e.g. Vm.sol upstream 9068805b59ac1d0e... = line 18 of the checksum list; StdAssertions.sol upstream d4c89eec70d267de... = line 5), so the checksum list is correct and it is the committed files that changed. Comparing each pair with all whitespace stripped gives identical bytes for all seven, so the change is `forge fmt` re-wrapping at the project's line_length = 120 only (and `forge fmt --check` passes on the tree, which is why the formatter touched them). No test-helper semantics changed. The five OpenZeppelin files, the only production dependency, verify OK and ERC20.sol is byte-identical to upstream v5.4.0 commit c64a1edb (sha256 9f906af4cba6e7e0...). Every file under lib/ is listed in DEPENDENCIES.sha256, so nothing is unaccounted for. Impact: no effect on the BloxIMD runtime, the launch flows or any on-chain behavior; the defect is that the repository's only reproducible provenance check for its vendored code fails, the statement on line 5 is false for forge-std, and a reviewer or the publication step following the documented procedure cannot distinguish this benign reformatting from an edit of the test harness without doing the upstream comparison themselves. Fix (author's choice, both outside src/): restore the seven forge-std files to their upstream bytes and keep the formatter off lib/ (an `ignore` entry under [fmt] is a config change for the author), or regenerate DEPENDENCIES.sha256 from the committed files and amend line 5 to say forge-std is upstream v1.9.7 reformatted by forge fmt.","line":5,"path":"DEPENDENCIES.md","reproduction":"State: the committed tree at b571dae, clean working copy. Run from the repository root: `sha256sum --check DEPENDENCIES.sha256`. Expected (per DEPENDENCIES.md lines 5 and 15): every line prints OK and the exit status is 0. Actual: `lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`, `sha256sum: WARNING: 7 computed checksums did NOT match`, exit status 1. Cross-check for one file: `sha256sum lib/forge-std/src/Vm.sol` prints a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15, while DEPENDENCIES.sha256 line 18 records 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1, which is the digest of https://raw.githubusercontent.com/foundry-rs/forge-std/77041d2ce690e692d6e03cc812b57d1ddaa4d505/src/Vm.sol. `cmp <(tr -d '[:space:]' < upstream/Vm.sol) <(tr -d '[:space:]' < lib/forge-std/src/Vm.sol)` reports no difference, confirming whitespace-only changes. All lib/openzeppelin-contracts entries report OK.","severity":"low","snippet":"invoked by the build or tests. Upstream source contents are unmodified.","title":"Documented dependency integrity check fails: seven vendored forge-std files were reformatted after DEPENDENCIES.sha256 was recorded, so the 'unmodified' claim is false as shipped"},{"citation":"resolved","description":"README.md lines 91-92 say the project contains no `launch.json`. The manifest step that was accepted after the README was written added launch.json at the repository root (committed in b571dae, 'imd: combine accepted dependencies'), so the statement is stale. The manifest itself is correct: kind custom_token, token.contract BloxIMD (7 characters), name BloxIMD, symbol BLOX, decimals 18, constructorArgs [] matching the argument-less constructor at src/BloxIMD.sol:14, totalSupply 1000000000000000000000000000 equal to INITIAL_SUPPLY, contracts [], pool and economics copied from the brief with lowercase addresses, notes 1015 characters, no extra keys. Only the README sentence is wrong. Impact: documentation only; a reader told there is no manifest may not review the one that is there. Fix: amend the sentence to say the manifest is launch.json at the repository root and that it was written by the launch's manifest step.","line":91,"path":"README.md","reproduction":"From the repository root run `ls launch.json` and read README.md lines 91-92. Expected (per README): no file named launch.json exists in the project. Actual: launch.json exists (1603 bytes, tracked in git at b571dae) and contains the custom_token manifest for BloxIMD.","severity":"info","snippet":"and submits the deployment. This project contains no signing/broadcast script or\n`launch.json`. No transactions have been submitted as part of this assignment.","title":"README states the project contains no launch.json, but the accepted tree now ships one"}],"hash":"f9734b52ca302cfb3dd3bea5ec3f15fc6cded9890d11dcc1e78bbb15cbc29649","nodeId":"8b75ee88-3b48-449c-98bf-0e471205d5c2","outcome":"completed","summary":"Review complete. The findings are in `.imd-findings.json`, and no other file in the tree was changed. The git status shows only the untracked findings file, which the task asked for.\n\n**Outcome.** The token is a stock OpenZeppelin v5.4.0 ERC-20 with a fixed supply minted once to the deployer. All three entry points hold, the manifest is schema-valid and matches the constructor, and the full suite of 62 tests passes. I kept two findings, neither touching on-chain behavior.\n\n**Findings written:**\n- **Low, merged from all five specialists.** The documented integrity check `sha256sum --check DEPENDENCIES.sha256` fails for seven forge-std files. I fetched each from the pinned upstream commit: the recorded hashes are the correct upstream digests, and the committed files differ from upstream only by whitespace, so they were re-wrapped by the formatter after hashing. The OpenZeppelin ERC20 is byte-identical to upstream. The claim that upstream contents are unmodified is false as shipped, but nothing in production is affected.\n- **Info, new.** The README says the project contains no launch.json, yet the accepted tree now ships one. The manifest itself is correct.\n\n**Coverage.** All three entry points are marked holds, with three extra rows for the supply invariant, CREATE2 deployability and the manifest schema. The contract is 1,753 bytes of runtime with no delegatecall, callcode or selfdestruct.\n\n**Not attached.** No proof test, since neither finding is critical or high.","treeHash":null,"usage":{"cachedInputTokens":340981,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":8250,"runtime":"claude","turns":13,"wallClockMs":114108}}],"verification":[{"checks":[{"durationMs":1241,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.14s\nCompiler run successful!\n","passed":true},{"durationMs":772,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/BloxIMDLaunch.t.sol:BloxIMDLaunchTest\n[PASS] test_Create2FactoryReceivesEntireSupply() (gas: 291935)\n[PASS] test_LaunchDistributionClaimsAndPoolTransfersArriveWhole() (gas: 1117932)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.05ms (875.00µs CPU time)\n\nRan 31 tests for test/BloxIMD.t.sol:BloxIMDTest\n[PASS] testFuzz_DelegatedTransferSpendsOnlyApprovedAmount(uint256,uint256) (runs: 512, μ: 162527, ~: 164825)\nLogs:\n  Bound result 113907804944931206\n  Bound result 52422842605720433\n\n[PASS] testFuzz_InsufficientApprovalAlwaysReverts(uint256,uint256) (runs: 512, μ: 122969, ~: 123380)\nLogs:\n  Bound result 83493467758822434796677861\n  Bound result 916506541721265057069181633\n\n[PASS] testFuzz_OverdrawAlwaysReverts(uint256) (runs: 512, μ: 69169, ~: 69480)\nLogs:\n  Bound result 17199777481635443670301577178916093023460601\n\n[PASS] testFuzz_TransfersPreserveSupplyAndDeliverExactAmount(uint256) (runs: 512, μ: 167343, ~: 167944)\nLogs:\n  Bound result 811720450307586471160323934\n\n[PASS] test_AllowanceIsSpecificToSpender() (gas: 92733)\n[PASS] test_ApproveDoesNotRequireBalance() (gas: 78593)\n[PASS] test_ApproveEmitsEventAndOnlyChangesCallersAllowance() (gas: 103818)\n[PASS] test_ApproveReplacesAndRevokesAllowance() (gas: 166847)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37595)\n[PASS] test_CanTransferWholeSupply() (gas: 161755)\n[PASS] test_ConstructorMintsOnceToCallerAndNotOrigin() (gas: 51248)\n[PASS] test_InfiniteAllowanceIsUnchangedBySpendingAndCanBeRevoked() (gas: 181747)\n[PASS] test_MetadataAndInitialSupply() (gas: 107627)\n[PASS] test_NoMintBurnOrAdministrativeEntrypoints() (gas: 1285915)\n[PASS] test_RejectsEtherAndUnknownCalls() (gas: 64668)\n[PASS] test_RuntimeIsDeployableAndHasNoForbiddenOpcodes() (gas: 1039952)\n[PASS] test_SelfTransferOverBalanceReverts() (gas: 35863)\n[PASS] test_SelfTransferPreservesBalance() (gas: 53991)\n[PASS] test_TransferEmitsEventAndDeliversExactAmount() (gas: 93449)\n[PASS] test_TransferFromCallerStillNeedsItsOwnAllowance() (gas: 35685)\n[PASS] test_TransferFromInsufficientAllowanceRevertsWithoutChanges() (gas: 115727)\n[PASS] test_TransferFromInsufficientBalanceRollsBackAllowance() (gas: 136432)\n[PASS] test_TransferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 254631)\n[PASS] test_TransferFromToSelfConsumesAllowanceWithoutChangingBalance() (gas: 103294)\n[PASS] test_TransferFromWithoutApprovalRevertsEvenForDeployer() (gas: 105555)\n[PASS] test_TransferFromZeroRecipientRollsBackAllowance() (gas: 114158)\n[PASS] test_TransferFromZeroSenderCannotMint() (gas: 81245)\n[PASS] test_TransferOverBalanceReverts() (gas: 54970)\n[PASS] test_TransferToZeroRevertsEvenForZeroAmount() (gas: 71948)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73332)\n[PASS] test_ZeroTransferFromWithoutAllowanceEmitsEvent() (gas: 68888)\nSuite result: ok. 31 passed; 0 failed; 0 skipped; finished in 17.31ms (75.11ms CPU time)\n\nRan 1 test for test/BloxIMDInvariant.t.sol:BloxIMDInvariantTest\n[PASS]\nBloxIMDInvariantTest invariants:\n[PASS] invariant_AllBalancesAreConserved\n[PASS] invariant_SupplyAlwaysEqualsOneBillionTokens\n BloxIMDInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+-----------------+-------+---------+----------╮\n| Contract       | Selector        | Calls | Reverts | Discards |\n+===============================================================+\n| BloxIMDHandler | approve         | 2054  | 0       | 0        |\n|----------------+-----------------+-------+---------+----------|\n| BloxIMDHandler | attemptOverdraw | 2006  | 0       | 0        |\n|----------------+-----------------+-------+---------+----------|\n| BloxIMDHandler | transfer        | 2070  | 0       | 0        |\n|----------------+-----------------+-------+---------+----------|\n| BloxIMDHandler | transferFrom    | 2062  | 0       | 0        |\n╰----------------+-----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 107894562677932255374367038\n  Bound result 804448733\n  Bound result 2\n  Bound result 10000000000000000000\n  Bound result 255\n  Bound result 0\n  Bound result 140511598918156963485455688\n  Bound result 1572\n  Bound result 18\n  Bound result 837\n  Bound result 32239183138455505855993888\n  Bound result 11\n  Bound result 5261938745525793251721394\n  Bound result 9\n  Bound result 0\n  Bound result 5078\n  Bound result 6029\n  Bound result 1507\n  Bound result 2000000000000000000\n  Bound result 7669\n  Bound result 15\n  Bound result 0\n  Bound result 0\n  Bound result 1000000000\n  Bound result 5310\n  Bound result 0\n  Bound result 23\n  Bound result 3759\n  Bound result 20\n  Bound result 316\n  Bound result 5422324437059315491520\n  Bound result 5516\n  Bound result 12\n  Bound result 1310\n  Bound result 4750473341650\n  Bound result 144427689576441514534870161\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 675.69ms (674.45ms CPU time)\n\nRan 3 test suites in 676.94ms (694.04ms CPU time): 34 tests passed, 0 failed, 0 skipped (34 total tests)\n","passed":true},{"durationMs":37,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BloxIMD.approve(address,uint256)\",\"BloxIMD.transfer(address,uint256)\",\"BloxIMD.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":19,\"DEPENDENCIES.sha256\":36,\"LICENSE\":21,\"README.md\":127,\"SECURITY.md\":35,\"foundry.toml\":21,\"remappings.txt\":2,\"src/BloxIMD.sol\":17,\"test/BloxIMD.t.sol\":381,\"test/BloxIMDInvariant.t.sol\":99,\"test/BloxIMDLaunch.t.sol\":77},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":390,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":252,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/BloxIMD.sol:12: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"16ee02f7fc694feab78ca7d3ade15a5637d77cc1866a5b1889ee3db9d97a4436","verifiedTreeHash":"6d61bcd93665db5bf402ae1ecfaa57e617cc90c5","verifierVersion":"0.1.0+327e1e9f"},{"checks":[{"durationMs":1255,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.16s\nCompiler run successful!\n","passed":true},{"durationMs":756,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/BloxIMDLaunch.t.sol:BloxIMDLaunchTest\n[PASS] test_Create2FactoryReceivesEntireSupply() (gas: 291935)\n[PASS] test_LaunchDistributionClaimsAndPoolTransfersArriveWhole() (gas: 1117932)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 5.72ms (702.26µs CPU time)\n\nRan 31 tests for test/BloxIMD.t.sol:BloxIMDTest\n[PASS] testFuzz_DelegatedTransferSpendsOnlyApprovedAmount(uint256,uint256) (runs: 512, μ: 162722, ~: 164825)\nLogs:\n  Bound result 12031\n  Bound result 819\n\n[PASS] testFuzz_InsufficientApprovalAlwaysReverts(uint256,uint256) (runs: 512, μ: 122962, ~: 123392)\nLogs:\n  Bound result 13\n  Bound result 242\n\n[PASS] testFuzz_OverdrawAlwaysReverts(uint256) (runs: 512, μ: 69163, ~: 69480)\nLogs:\n  Bound result 1000000000000000000000000004\n\n[PASS] testFuzz_TransfersPreserveSupplyAndDeliverExactAmount(uint256) (runs: 512, μ: 167716, ~: 167944)\nLogs:\n  Bound result 5947\n\n[PASS] test_AllowanceIsSpecificToSpender() (gas: 92733)\n[PASS] test_ApproveDoesNotRequireBalance() (gas: 78593)\n[PASS] test_ApproveEmitsEventAndOnlyChangesCallersAllowance() (gas: 103818)\n[PASS] test_ApproveReplacesAndRevokesAllowance() (gas: 166847)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37595)\n[PASS] test_CanTransferWholeSupply() (gas: 161755)\n[PASS] test_ConstructorMintsOnceToCallerAndNotOrigin() (gas: 51248)\n[PASS] test_InfiniteAllowanceIsUnchangedBySpendingAndCanBeRevoked() (gas: 181747)\n[PASS] test_MetadataAndInitialSupply() (gas: 107627)\n[PASS] test_NoMintBurnOrAdministrativeEntrypoints() (gas: 1285915)\n[PASS] test_RejectsEtherAndUnknownCalls() (gas: 64668)\n[PASS] test_RuntimeIsDeployableAndHasNoForbiddenOpcodes() (gas: 1039952)\n[PASS] test_SelfTransferOverBalanceReverts() (gas: 35863)\n[PASS] test_SelfTransferPreservesBalance() (gas: 53991)\n[PASS] test_TransferEmitsEventAndDeliversExactAmount() (gas: 93449)\n[PASS] test_TransferFromCallerStillNeedsItsOwnAllowance() (gas: 35685)\n[PASS] test_TransferFromInsufficientAllowanceRevertsWithoutChanges() (gas: 115727)\n[PASS] test_TransferFromInsufficientBalanceRollsBackAllowance() (gas: 136432)\n[PASS] test_TransferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 254631)\n[PASS] test_TransferFromToSelfConsumesAllowanceWithoutChangingBalance() (gas: 103294)\n[PASS] test_TransferFromWithoutApprovalRevertsEvenForDeployer() (gas: 105555)\n[PASS] test_TransferFromZeroRecipientRollsBackAllowance() (gas: 114158)\n[PASS] test_TransferFromZeroSenderCannotMint() (gas: 81245)\n[PASS] test_TransferOverBalanceReverts() (gas: 54970)\n[PASS] test_TransferToZeroRevertsEvenForZeroAmount() (gas: 71948)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73332)\n[PASS] test_ZeroTransferFromWithoutAllowanceEmitsEvent() (gas: 68888)\nSuite result: ok. 31 passed; 0 failed; 0 skipped; finished in 14.76ms (66.90ms CPU time)\n\nRan 1 test for test/BloxIMDInvariant.t.sol:BloxIMDInvariantTest\n[PASS]\nBloxIMDInvariantTest invariants:\n[PASS] invariant_AllBalancesAreConserved\n[PASS] invariant_SupplyAlwaysEqualsOneBillionTokens\n BloxIMDInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+-----------------+-------+---------+----------╮\n| Contract       | Selector        | Calls | Reverts | Discards |\n+===============================================================+\n| BloxIMDHandler | approve         | 2090  | 0       | 0        |\n|----------------+-----------------+-------+---------+----------|\n| BloxIMDHandler | attemptOverdraw | 2037  | 0       | 0        |\n|----------------+-----------------+-------+---------+----------|\n| BloxIMDHandler | transfer        | 2047  | 0       | 0        |\n|----------------+-----------------+-------+---------+----------|\n| BloxIMDHandler | transferFrom    | 2018  | 0       | 0        |\n╰----------------+-----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 14\n  Bound result 0\n  Bound result 3616\n  Bound result 673099\n  Bound result 15\n  Bound result 3792478066\n  Bound result 370\n  Bound result 0\n  Bound result 257\n  Bound result 21\n  Bound result 0\n  Bound result 20\n  Bound result 435\n  Bound result 155038107415160949688288807\n  Bound result 23\n  Bound result 20\n  Bound result 10\n  Bound result 1\n  Bound result 0\n  Bound result 8\n  Bound result 0\n  Bound result 1741\n  Bound result 0\n  Bound result 5\n  Bound result 3\n  Bound result 12\n  Bound result 39428865066704050323422105\n  Bound result 19620937584446804286100685\n  Bound result 162373807944723959373177344\n  Bound result 12\n  Bound result 6132\n  Bound result 22\n  Bound result 6212\n  Bound result 0\n  Bound result 105834896120108060378561592\n  Bound result 17032045531938864984058881\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 675.63ms (674.34ms CPU time)\n\nRan 3 test suites in 677.15ms (696.12ms CPU time): 34 tests passed, 0 failed, 0 skipped (34 total tests)\n","passed":true},{"durationMs":33,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BloxIMD.approve(address,uint256)\",\"BloxIMD.transfer(address,uint256)\",\"BloxIMD.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":19,\"DEPENDENCIES.sha256\":36,\"LICENSE\":21,\"README.md\":127,\"SECURITY.md\":35,\"foundry.toml\":21,\"launch.json\":24,\"remappings.txt\":2,\"src/BloxIMD.sol\":17,\"test/BloxIMD.t.sol\":381,\"test/BloxIMDInvariant.t.sol\":99,\"test/BloxIMDLaunch.t.sol\":77},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"a425c0c4d04ccf749205982e089f0837fdad79a5894f5902302933074d4244fe","verifiedTreeHash":"9311248b22c04c30f7156d567f35d3a8bba88f10","verifierVersion":"0.1.0+327e1e9f"},{"checks":[{"durationMs":3722,"exitCode":0,"name":"build","output":"Compiling 30 files with Solc 0.8.26\nSolc 0.8.26 finished in 3.52s\nCompiler run successful!\n","passed":true},{"durationMs":16955,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/BloxIMDLaunch.t.sol:BloxIMDLaunchTest\n[PASS] test_Create2FactoryReceivesEntireSupply() (gas: 291935)\n[PASS] test_LaunchDistributionClaimsAndPoolTransfersArriveWhole() (gas: 1117932)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 232.25ms (1.29ms CPU time)\n\nRan 31 tests for test/BloxIMD.t.sol:BloxIMDTest\n[PASS] testFuzz_DelegatedTransferSpendsOnlyApprovedAmount(uint256,uint256) (runs: 512, μ: 162221, ~: 164827)\nLogs:\n  Bound result 2\n  Bound result 2\n\n[PASS] testFuzz_InsufficientApprovalAlwaysReverts(uint256,uint256) (runs: 512, μ: 122877, ~: 123375)\nLogs:\n  Bound result 247382923909215992787899872\n  Bound result 505898986517013852510162906\n\n[PASS] testFuzz_OverdrawAlwaysReverts(uint256) (runs: 512, μ: 69156, ~: 69480)\nLogs:\n  Bound result 55401453973724265564614606014\n\n[PASS] testFuzz_TransfersPreserveSupplyAndDeliverExactAmount(uint256) (runs: 512, μ: 167583, ~: 167944)\nLogs:\n  Bound result 9602\n\n[PASS] test_AllowanceIsSpecificToSpender() (gas: 92733)\n[PASS] test_ApproveDoesNotRequireBalance() (gas: 78593)\n[PASS] test_ApproveEmitsEventAndOnlyChangesCallersAllowance() (gas: 103818)\n[PASS] test_ApproveReplacesAndRevokesAllowance() (gas: 166847)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37595)\n[PASS] test_CanTransferWholeSupply() (gas: 161755)\n[PASS] test_ConstructorMintsOnceToCallerAndNotOrigin() (gas: 51248)\n[PASS] test_InfiniteAllowanceIsUnchangedBySpendingAndCanBeRevoked() (gas: 181747)\n[PASS] test_MetadataAndInitialSupply() (gas: 107627)\n[PASS] test_NoMintBurnOrAdministrativeEntrypoints() (gas: 1285915)\n[PASS] test_RejectsEtherAndUnknownCalls() (gas: 64668)\n[PASS] test_RuntimeIsDeployableAndHasNoForbiddenOpcodes() (gas: 1039952)\n[PASS] test_SelfTransferOverBalanceReverts() (gas: 35863)\n[PASS] test_SelfTransferPreservesBalance() (gas: 53991)\n[PASS] test_TransferEmitsEventAndDeliversExactAmount() (gas: 93449)\n[PASS] test_TransferFromCallerStillNeedsItsOwnAllowance() (gas: 35685)\n[PASS] test_TransferFromInsufficientAllowanceRevertsWithoutChanges() (gas: 115727)\n[PASS] test_TransferFromInsufficientBalanceRollsBackAllowance() (gas: 136432)\n[PASS] test_TransferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 254631)\n[PASS] test_TransferFromToSelfConsumesAllowanceWithoutChangingBalance() (gas: 103294)\n[PASS] test_TransferFromWithoutApprovalRevertsEvenForDeployer() (gas: 105555)\n[PASS] test_TransferFromZeroRecipientRollsBackAllowance() (gas: 114158)\n[PASS] test_TransferFromZeroSenderCannotMint() (gas: 81245)\n[PASS] test_TransferOverBalanceReverts() (gas: 54970)\n[PASS] test_TransferToZeroRevertsEvenForZeroAmount() (gas: 71948)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73332)\n[PASS] test_ZeroTransferFromWithoutAllowanceEmitsEvent() (gas: 68888)\nSuite result: ok. 31 passed; 0 failed; 0 skipped; finished in 279.06ms (984.96ms CPU time)\n\nRan 27 tests for test/BloxIMDEdgeCases.t.sol:BloxIMDEdgeCasesTest\n[PASS] testFuzz_AccountWithNoBalanceCannotSendAnything(address,uint256) (runs: 1000, μ: 59956, ~: 59970)\nLogs:\n  Bound result 1346946641761387750756910793579186313312817643\n  Bound result 276495446509186\n\n[PASS] testFuzz_ApproveLastWriteWins(address,uint256,uint256) (runs: 1000, μ: 101844, ~: 102075)\nLogs:\n  Bound result 17827\n\n[PASS] testFuzz_DelegatedRoundTripRestoresBothBalanceAndAllowance(uint256) (runs: 1000, μ: 243211, ~: 243502)\nLogs:\n  Bound result 980440545876309724222791453\n\n[PASS] testFuzz_FiniteAllowanceDecrementsByExactlySpent(uint256,uint256) (runs: 1000, μ: 141830, ~: 144117)\nLogs:\n  Bound result 242\n  Bound result 46\n\n[PASS] testFuzz_InfiniteAllowanceIsBoundedByOwnerBalance(uint256,uint256) (runs: 1000, μ: 170224, ~: 170683)\nLogs:\n  Bound result 283655282669898342\n  Bound result 999999999724400405148430929\n\n[PASS] testFuzz_MultiHopChainConservesSupply(uint256,uint8) (runs: 1000, μ: 572699, ~: 505446)\nLogs:\n  Bound result 4816\n  Bound result 22\n\n[PASS] testFuzz_PartialBalanceOverdrawRevertsWithExactValues(uint256,uint256) (runs: 1000, μ: 116928, ~: 117387)\nLogs:\n  Bound result 2731277\n  Bound result 212069142960225153880270863\n\n[PASS] testFuzz_SplitAndMergeRoundTripRestoresDeployer(uint256,uint256) (runs: 1000, μ: 237399, ~: 238364)\nLogs:\n  Bound result 662910494098143900448989722\n  Bound result 287007309007895652535104937\n\n[PASS] testFuzz_TransferToAnyNonZeroAddressDeliversExactly(address,uint256) (runs: 1000, μ: 101055, ~: 101276)\nLogs:\n  Bound result 10923\n  Bound result 4333\n\n[PASS] testFuzz_UnknownSelectorsNeverChangeState(bytes4,bytes32) (runs: 1000, μ: 116102, ~: 116437)\n[PASS] test_AllowanceIsCheckedBeforeBalance() (gas: 60029)\n[PASS] test_AllowanceJustBelowMaxIsFiniteAndDecrements() (gas: 137291)\n[PASS] test_ApprovingTheSameValueTwiceIsIdempotentAndEmitsEachTime() (gas: 92790)\n[PASS] test_ConstructorRefusesEther() (gas: 803497)\n[PASS] test_CreationCodeToleratesTrailingBytesAndStillMintsToCaller() (gas: 712873)\n[PASS] test_EachDeploymentMintsItsOwnIndependentSupply() (gas: 99989)\n[PASS] test_InfiniteAllowanceDoesNotCreateBalance() (gas: 121000)\n[PASS] test_MetadataIsReadableThroughTheStandardInterfaceByAnyCaller() (gas: 41197)\n[PASS] test_OneWeiTransferDeliversExactlyOneWei() (gas: 189202)\n[PASS] test_OwnerCanApproveItselfAndSpendThroughTransferFrom() (gas: 161996)\n[PASS] test_RevokedAllowanceCannotBeReplayed() (gas: 146439)\n[PASS] test_SpenderCannotDelegateAnOwnersAllowanceOnward() (gas: 188877)\n[PASS] test_SpendersHaveIndependentAllowancesFromTheSameOwner() (gas: 278039)\n[PASS] test_SupplyConstantIsOneBillionTimesTenToDecimals() (gas: 38045)\n[PASS] test_TransferAllButOneWeiThenTheLastWei() (gas: 150776)\n[PASS] test_TransferFromEmitsOnlyTransferAndNoApproval() (gas: 130140)\n[PASS] test_TransferToTokenContractSucceedsAndIsUnrecoverable() (gas: 124627)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 279.94ms (2.27s CPU time)\n\nRan 1 test for test/BloxIMDInvariant.t.sol:BloxIMDInvariantTest\n[PASS]\nBloxIMDInvariantTest invariants:\n[PASS] invariant_AllBalancesAreConserved\n[PASS] invariant_SupplyAlwaysEqualsOneBillionTokens\n BloxIMDInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+-----------------+-------+---------+----------╮\n| Contract       | Selector        | Calls | Reverts | Discards |\n+===============================================================+\n| BloxIMDHandler | approve         | 1989  | 0       | 0        |\n|----------------+-----------------+-------+---------+----------|\n| BloxIMDHandler | attemptOverdraw | 2046  | 0       | 0        |\n|----------------+-----------------+-------+---------+----------|\n| BloxIMDHandler | transfer        | 2092  | 0       | 0        |\n|----------------+-----------------+-------+---------+----------|\n| BloxIMDHandler | transferFrom    | 2065  | 0       | 0        |\n╰----------------+-----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 6233\n  Bound result 76500664308089416294255670\n  Bound result 2\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5985447230262582815423751\n  Bound result 549\n  Bound result 269112146731448027065522781\n  Bound result 0\n  Bound result 44293050202\n  Bound result 3464\n  Bound result 24\n  Bound result 15\n  Bound result 3617\n  Bound result 6626\n  Bound result 0\n  Bound result 3166\n  Bound result 6982\n  Bound result 0\n  Bound result 0\n  Bound result 99917748739629533411566136\n  Bound result 14\n  Bound result 0\n  Bound result 3571\n  Bound result 274\n  Bound result 11\n  Bound result 0\n  Bound result 3300\n  Bound result 0\n  Bound result 21066191061297082094473573\n  Bound result 13\n  Bound result 0\n  Bound result 0\n  Bound result 127\n  Bound result 12\n  Bound result 6751\n  Bound result 4000000000000000000\n  Bound result 3124\n  Bound result 1663901450\n  Bound result 242370867139186045036616506\n  Bound result 5358\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.33s (1.32s CPU time)\n\nRan 1 test for test/BloxIMDGhostInvariant.t.sol:BloxIMDGhostInvariantTest\n[PASS]\nBloxIMDGhostInvariantTest invariants:\n[PASS] invariant_AllowancesMatchTheMirror\n[PASS] invariant_EveryBalanceEqualsItsGhostFlows\n[PASS] invariant_NoActorExceedsSupplyOrItsInflows\n[PASS] invariant_SupplyIsFixedAtOneBillion\n[PASS] invariant_TrackedHoldersAccountForTheWholeSupply\n[PASS] invariant_ZeroAddressAndEtherStayEmpty\n BloxIMDGhostInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭---------------------+--------------------+-------+---------+----------╮\n| Contract            | Selector           | Calls | Reverts | Discards |\n+=======================================================================+\n| BloxIMDGhostHandler | approve            | 1830  | 0       | 0        |\n|---------------------+--------------------+-------+---------+----------|\n| BloxIMDGhostHandler | approveZeroSpender | 1817  | 0       | 0        |\n|---------------------+--------------------+-------+---------+----------|\n| BloxIMDGhostHandler | overdraw           | 1793  | 0       | 0        |\n|---------------------+--------------------+-------+---------+----------|\n| BloxIMDGhostHandler | overspend          | 1766  | 0       | 0        |\n|---------------------+--------------------+-------+---------+----------|\n| BloxIMDGhostHandler | privilegedCall     | 1860  | 0       | 0        |\n|---------------------+--------------------+-------+---------+----------|\n| BloxIMDGhostHandler | sendEther          | 1856  | 0       | 0        |\n|---------------------+--------------------+-------+---------+----------|\n| BloxIMDGhostHandler | transfer           | 1760  | 0       | 0        |\n|---------------------+--------------------+-------+---------+----------|\n| BloxIMDGhostHandler | transferFrom       | 1869  | 0       | 0        |\n|---------------------+--------------------+-------+---------+----------|\n| BloxIMDGhostHandler | transferToZero     | 1833  | 0       | 0        |\n╰---------------------+--------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 549159038614423832713260402\n  Bound result 557\n  Bound result 1322377403483619266731838897092968420631229543116\n  Bound result 0\n  Bound result 360297335449696824\n  Bound result 28275\n  Bound result 9736\n  Bound result 789557715677246629\n  Bound result 2592286112\n  Bound result 0\n  Bound result 4294967296\n  Bound result 27750074269697093541455864\n  Bound result 0\n  Bound result 1\n  Bound result 7000000000000000000\n  Bound result 543\n  Bound result 1\n  Bound result 23\n  Bound result 301722236\n  Bound result 2826\n  Bound result 9469\n  Bound result 115792089237316195423570985008687907853269984665639997496247706353592141882131\n  Bound result 27756\n  Bound result 489342405451418367321124087237166461525568225326\n  Bound result 16063\n  Bound result 7093625829305327417507110776513809902941625938791633953330710476066236\n  Bound result 0\n  Bound result 10619\n  Bound result 758149442592744412\n  Bound result 6208\n  Bound result 272546617983221482355002519315460627386784239170\n  Bound result 10011\n  Bound result 115792089237316195423570985008687907853269984665640536289383314310815293224679\n  Bound result 115792089237316195423570985008687907853269984665640563916000794995567450738715\n  Bound result 2\n  Bound result 78617122825165294216135012289904534837835064647\n  Bound result 173\n  Bound result 411\n  Bound result 563658432477532149\n  Bound result 115792089237316195423570985008687907853269984665639997496247706353592141874599\n  Bound result 17\n  Bound result 5241\n  Bound result 16\n  Bound result 1000000000\n  Bound result 1\n  Bound result 506050083656783083083650459\n  Bound result 2000000000000000000\n  Bound result 4755859315203864374111058574428541647811629133\n  Bound result 8398362213755175546039281586431554578349571522687938293429974\n  Bound result 17\n  Bound result 517440283\n  Bound result 11\n  Bound result 1396520460675545495459206247950049589439216856161\n  Bound result 0\n  Bound result 1\n  Bound result 485\n  Bound result 1\n  Bound result 0\n  Bound result 1\n  Bound result 115792089237316195423570985008687907853269984665640563916000794995567450738961\n  Bound result 14693\n  Bound result 1000000000\n  Bound result 14\n  Bound result 0\n  Bound result 1\n  Bound result 21\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 16.81s (16.80s CPU time)\n\nRan 5 test suites in 16.81s (18.93s CPU time): 62 tests passed, 0 failed, 0 skipped (62 total tests)\n","passed":true},{"durationMs":88,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BloxIMD.approve(address,uint256)\",\"BloxIMD.transfer(address,uint256)\",\"BloxIMD.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":19,\"DEPENDENCIES.sha256\":36,\"LICENSE\":21,\"README.md\":127,\"SECURITY.md\":35,\"foundry.toml\":21,\"remappings.txt\":2,\"src/BloxIMD.sol\":17,\"test/BloxIMD.t.sol\":381,\"test/BloxIMDEdgeCases.t.sol\":407,\"test/BloxIMDGhostInvariant.t.sol\":382,\"test/BloxIMDInvariant.t.sol\":99,\"test/BloxIMDLaunch.t.sol\":77},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"e5bdcdb4e85d779bd8742b492c24afbf4162bbb7a5843d3d865581b76905f28e","verifiedTreeHash":"d70498178ea5d4a33eab6929d321103c221cb7f2","verifierVersion":"0.1.0+327e1e9f"}]}