{"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":"709c1351-5e5d-419a-a825-87194f44fbcb","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"fa7450abd175c5a19c5d60a7b0b477aa1dbade51cd5a7a7685f0ca124f9b6867","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":"9b528d7e365ab69fc28bc1c237d3235cf2ee4b7918aa2071c046d1a0d957968f","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":"22b1d553b9f48878d21bb49ce23696a10938089258b05a304b322eca6e2d94fc","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":"bb30ff6e5d8473c0008d497bb57ecc35c8dc4d367307790615cd909bc5d8d5ab","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":"8b01ac74b391b7121824fdd72e97f97acd497d27b54287521baf041ed8d44db6","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":"7814d2596dc932307aec69de70a096147ea25f7de0d0c4984d392f376414d879","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":"f5fff4a3c204887f13d9e197e87727a5486612dec95246467ff33ba80fe92587","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"430069d20bbc9172e2b1d477d4a1a6d1679d7617eecc69f27de27ca2102966a9","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: World Mining Token (WORLD).\nToken name: World Mining Token\nToken symbol: WORLD\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"32afdb53de648f720f07a3a7016718c398620c8436b1ce5a43bb8bf19769886d","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"709c1351-5e5d-419a-a825-87194f44fbcb","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1773-world-mining-token"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51024","feedbackHash":"62f915f376a0db190c45058b6025d79a9094ed2a74a8c0eb2f895928e35ded9c","nodeKey":"audit_economics","submissionHash":"fa7450abd175c5a19c5d60a7b0b477aa1dbade51cd5a7a7685f0ca124f9b6867","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52165","feedbackHash":"8adb53154926f10a9d9c0c4d3a3b969c7e117665725c89e87a74a7a67b060974","nodeKey":"audit_flow","submissionHash":"9b528d7e365ab69fc28bc1c237d3235cf2ee4b7918aa2071c046d1a0d957968f","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52290","feedbackHash":"67e3690ca99296b6f8c1a22aa7abfb78222328056753d9f446f13a7b834659c8","nodeKey":"audit_judge","submissionHash":"22b1d553b9f48878d21bb49ce23696a10938089258b05a304b322eca6e2d94fc","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52210","feedbackHash":"a8db85caf6c19c9de8c0bb02a617462deccb8154e43734364dc1a7287990ae07","nodeKey":"audit_math","submissionHash":"bb30ff6e5d8473c0008d497bb57ecc35c8dc4d367307790615cd909bc5d8d5ab","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52642","feedbackHash":"66e4aefb3e418ad2d2979e8485a5e763f560633ff3a8474db2dc858ffd4c627f","nodeKey":"audit_permissions","submissionHash":"8b01ac74b391b7121824fdd72e97f97acd497d27b54287521baf041ed8d44db6","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51434","feedbackHash":"351956883b7a5141003022c5e7f14ab8f3084b425ef48a77fd1a67cf4ca10984","nodeKey":"build_contract_project","submissionHash":"7814d2596dc932307aec69de70a096147ea25f7de0d0c4984d392f376414d879","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51301","feedbackHash":"6f49f18ca2a53c18c422424d38145b0b782e86d46bf0d6514edb508d284e0a5a","nodeKey":"manifest","submissionHash":"f5fff4a3c204887f13d9e197e87727a5486612dec95246467ff33ba80fe92587","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51311","feedbackHash":"8feac2ba60a52b7721447f26888512d94393af016ea77ee2cc19c003aeecc203","nodeKey":"write_foundry_tests","submissionHash":"430069d20bbc9172e2b1d477d4a1a6d1679d7617eecc69f27de27ca2102966a9","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"8778287703002527addce5762c0361390b94802bb5b0ec4cf01ac01ce8098d9d","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"60c045240bb09c33","findings":[{"citation":"resolved","description":"Merged from the audit_math specialist's single finding, reproduced as stated. lib/DEPENDENCIES.md says 'Upstream source files are unmodified' and records one SHA-256 per vendored file; README.md line 140 claims all 36 matched. On the committed tree (commit b23f3a8, clean status) 29 of 36 files match, but seven forge-std files do not: src/StdAssertions.sol, src/StdJson.sol, src/StdToml.sol, src/Vm.sol, src/console.sol, src/interfaces/IERC7540.sol and src/interfaces/IMulticall3.sol. I downloaded the upstream forge-std v1.9.7 archive (its SHA-256 45157353ab49... matches the one DEPENDENCIES.md records) and compared: each of the seven differs from upstream only by line wrapping (forge fmt at the project's line_length 120 rejoined multi-line signatures); with all whitespace stripped, every one is identical to upstream. All six OpenZeppelin v5.4.0 files and both forge-std licence files are byte-identical to their upstream archive (archive SHA-256 b89829be48bc... also matches), so the production import closure of WorldMiningToken is pristine and no deployed bytecode is affected. forge-std is used only by tests. Impact: documentation/provenance only; a reviewer relying on the recorded digests to confirm the test harness is untouched upstream code cannot do so from the recorded values, and the README reports a verification result that does not reproduce. Related README drift in the same 'Local check results' section: line 133 says 31 tests passed, but the tree now has three test files (the later commit a564c57 added test/WorldMiningToken.adversarial.t.sol) and the suite with the README's seed runs 49 tests, all passing. Fix: re-vendor the pristine upstream files (and exclude lib/ from forge fmt), or regenerate the recorded digests from the committed content and drop the 'unmodified' wording; update the README's test count. No code change to src/ is needed.","line":140,"path":"README.md","reproduction":"From the repository root run: cd lib && grep -E '^[0-9a-f]{64} ' DEPENDENCIES.md | sha256sum -c | grep -v ': OK'. Expected per README.md lines 140-141: no output, every file OK. Actual: 'forge-std/src/StdAssertions.sol: FAILED', 'forge-std/src/StdJson.sol: FAILED', 'forge-std/src/StdToml.sol: FAILED', 'forge-std/src/Vm.sol: FAILED', 'forge-std/src/console.sol: FAILED', 'forge-std/src/interfaces/IERC7540.sol: FAILED', 'forge-std/src/interfaces/IMulticall3.sol: FAILED', 'sha256sum: WARNING: 7 computed checksums did NOT match'. Example: sha256sum lib/forge-std/src/Vm.sol = a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15 while DEPENDENCIES.md line 51 records 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1. Formatting-only check: for each of the seven files, tr -d ' \\t\\n\\r' < upstream-v1.9.7/<file> | sha256sum equals the same over lib/forge-std/<file>. Test count: FOUNDRY_FUZZ_SEED=0xed17dc0146e50717ebb55c855d5a0580934a7b258bf58d44ed53971f0afd3fa5 forge test reports '49 tests passed, 0 failed, 0 skipped (49 total tests)' versus README line 133's '31 tests passed'.","severity":"info","snippet":"- Dependency integrity: all 36 vendored source/license files matched the\n  recorded SHA-256 digests after formatting and compilation.","title":"README integrity claim does not reproduce: 7 vendored forge-std files differ (formatting only) from the SHA-256 digests recorded in lib/DEPENDENCIES.md"}],"hash":"22b1d553b9f48878d21bb49ce23696a10938089258b05a304b322eca6e2d94fc","nodeId":"721d1492-4f22-4efd-a9de-50e95e530051","outcome":"completed","summary":"The review is complete and the findings file is written. The working tree is otherwise untouched.\n\n**Outcome:** the token has no code defects. The one specialist finding reproduced and is kept at info severity.\n\n**What I verified**\n- The contract is a 17-line wrapper over OpenZeppelin v5.4.0 ERC20 with a zero-argument constructor minting the full supply to the deployer. The ABI exposes only the standard ERC-20 functions plus a constant.\n- The six production OpenZeppelin files are byte-identical to the upstream v5.4.0 archive, whose hash matches the one recorded in the dependency manifest.\n- All three entry points (approve, transfer, transferFrom) trace to unmodified OpenZeppelin code and are marked `holds`. The suite of 49 tests, including the three invariants, passes with the README's seed.\n- The manifest is schema-valid, and the paired currency on chain 1 has code and reports symbol IMD with 18 decimals.\n\n**The kept finding (info):** the README states all 36 vendored files match their recorded digests, but seven forge-std files fail the check. I confirmed against the upstream v1.9.7 archive that each differs only by line wrapping from forge fmt, so this is provenance documentation drift, not a bytecode issue. I folded in a related drift on the same README section, which reports 31 tests where the tree now runs 49.\n\n**Not run:** the protected launch harness, since v4-core and the floor's helper contracts are not in this tree. The token's behaviour against that floor was confirmed by inspection instead.","treeHash":null,"usage":{"cachedInputTokens":474099,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":9234,"runtime":"claude","turns":17,"wallClockMs":147717}},{"artifacts":[],"attempt":1,"bundleHash":"d001057b8bd5d2dd5ee859f3729bd6b74c49801ff08ff7e9abe8410a8765076c","device":"273e2f46918e7b5e","findings":[],"hash":"430069d20bbc9172e2b1d477d4a1a6d1679d7617eecc69f27de27ca2102966a9","nodeId":"56fc55a7-6de3-48cc-99f4-2ef8d0ee438d","outcome":"completed","summary":"Added 18 failure-path, boundary, and fuzz tests. Expanded stateful invariants to 32,768 calls across four actors, checking supply conservation, balances, allowances, and transfer liveness.\n\nOffline `forge build` and `forge test` with the required seed passed: **49 tests, zero failures**.\n\nOnly `test/` changed. No implementation defects found.","treeHash":"2bd895ba65256920c98d1acf4815bcc7c88fa5cf","usage":{"cachedInputTokens":795392,"inputTokens":89001,"model":"gpt-6-astra","outputTokens":13509,"runtime":"codex","turns":5,"wallClockMs":348472}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"c69899cad79c228f","findings":[],"hash":"43dfb9b618705d3879df6bb3694cec927a264c1cb6f8a7d6e0d8bf04774871d9","nodeId":"b9479215-128c-4836-92b3-76a4f38e0d31","outcome":"failed","summary":"wrote outside the task's allowed paths: .imd-tmp/codex-bwrap-synthetic-mount-targets-1001/lock","treeHash":null,"usage":{"cachedInputTokens":286208,"inputTokens":26099,"model":"gpt-6-astra","outputTokens":2654,"runtime":"codex","turns":4,"wallClockMs":91548}},{"artifacts":[],"attempt":1,"bundleHash":"a3d61b2faf468b4c63278c19274e252a241afa08d84007497796a131d4bac358","device":"87f02002d6a2b915","findings":[],"hash":"7814d2596dc932307aec69de70a096147ea25f7de0d0c4984d392f376414d879","nodeId":"6cce71e6-1f96-40b3-9ce5-3f9fd6d135ee","outcome":"completed","summary":"Implemented WORLD with 18 decimals and exactly 1,000,000,000 tokens minted once to the deployer. Included vendored dependencies, success/failure tests, fuzz tests, invariants, and deployment documentation.\n\nVerified:\n\n- `forge build` — passed\n- `forge test` with the supplied seed — 31 passed\n- `forge fmt --check` — passed\n\nThe protected launch integration remains for the separate launch harness.","treeHash":"7e7800800ad6a3caefb3a912a54ffe259d5f2026","usage":{"cachedInputTokens":384000,"inputTokens":60061,"model":"gpt-6-astra","outputTokens":14775,"runtime":"codex","turns":5,"wallClockMs":310912}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"d73af718d55ba788","findings":[],"hash":"8b01ac74b391b7121824fdd72e97f97acd497d27b54287521baf041ed8d44db6","nodeId":"cc0bcff5-e1f9-4a13-a4d0-a2cd45c25c31","outcome":"completed","summary":"The review is complete and `.imd-findings.json` holds the result: zero findings, with coverage rows for all three listed entry points plus the constructor and two invariants. The scratch test directory has been removed and no tracked file was changed.\n\n**What I covered.** The Access Control, Trust Gap and Asymmetry guides against the only production contract, `src/WorldMiningToken.sol`, and the OpenZeppelin code it inherits.\n\n- **Access control.** There is no permission model to break. The token has no owner, roles, modifiers, initializer, proxy, forwarder or exposed mint and burn. The three state-changing entry points are guarded solely by the caller's own identity through an unoverridden Context. The constructor hands out no role, only the supply, to its immediate caller.\n- **Trust gap.** No privileged actor exists, so none of the access-times-economics seams apply. I confirmed by test that the deployer cannot pull a holder's balance and that the supply cannot shrink through a transfer to the zero address.\n- **Asymmetry.** transfer and transferFrom both funnel into the same internal update with identical validation. The only difference is the allowance spend, which is restored atomically on any revert. The approve versus allowance-spend event asymmetry is OpenZeppelin v5 design and already documented in the README.\n\n**Evidence.** The vendored ERC20.sol and Context.sol match genuine OpenZeppelin v5.4.0 content on full read. The project suite passed with its pinned seed, 31 tests and 16,384 invariant calls with zero reverts. A seven-case scratch test I wrote for edge paths also passed, including zero-sender transferFrom, self-transferFrom, ETH refusal and origin-versus-caller minting.\n\n**Not reported.** The classic ERC-20 allowance replacement race is inherent to the standard, not a defect in this code, and the README gives holders the mitigation. The aderyn large-literal note is style only.\n\n**Nothing in the assigned area was left unreached.**","treeHash":null,"usage":{"cachedInputTokens":669425,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":10738,"runtime":"claude","turns":24,"wallClockMs":217810}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e12f98dda6acc55f","findings":[],"hash":"9b528d7e365ab69fc28bc1c237d3235cf2ee4b7918aa2071c046d1a0d957968f","nodeId":"9e08e54b-3e94-47fb-8921-0c238dbc1409","outcome":"completed","summary":"The review is complete. The findings file holds an empty findings list and a full coverage record, and the working tree is otherwise unchanged apart from that file.\n\n**Result: no defects found.** World Mining Token is a 17-line wrapper over the unmodified OpenZeppelin v5.4.0 ERC-20. It mints exactly one billion tokens with 18 decimals to the deploying factory in the constructor and adds nothing else.\n\n**What I verified for the Execution Trace, Periphery and First Principles areas:**\n\n- **All three entry points traced end to end** through the vendored OpenZeppelin code. Transfers debit and credit exact amounts, every zero-address path reverts, allowance spending rolls back on any later revert, and the maximum allowance is treated as infinite. These hold.\n- **Supply is fixed.** The only path that increases total supply is the mint branch inside the constructor. The compiled ABI exposes no mint, burn, pause, blacklist, owner or upgrade selectors.\n- **No external calls or callbacks.** The compiled runtime contains no CALL, STATICCALL, DELEGATECALL, CALLCODE, CREATE or SELFDESTRUCT opcodes, so reentrancy and hook risks do not exist.\n- **Launch flows arrive whole.** There is no fee, burn or exemption list, so the distributor share, the pool seed and trader swaps move exactly what they state. The manifest needs empty constructor arguments and a total supply of 10^27 base units.\n- **Periphery is unmodified.** All six vendored OpenZeppelin files match the SHA-256 digests recorded in the dependency manifest. Context returns the plain sender.\n- **Checks run:** build, formatting check, the project's 31 tests including the 256-run invariant suite and 1,024-case fuzz tests with the documented seed, and a scratch probe of edge paths. All passed. The scratch directory was removed afterwards.\n\n**Leads reviewed and not reported.** The static-analysis line about a large numeric literal is cosmetic since the value fits comfortably in a uint256. The standard ERC-20 approve-replacement race and tokens sent to the token's own address are inherent to the requested standard design and are already documented in the README, so neither is a defect of this code.\n\nCoverage was written as seven rows: one each for approve, transfer and transferFrom, plus the constructor mint, the supply-conservation invariant, the launch flow property and the periphery files. Nothing in the assigned area was left unreached.","treeHash":null,"usage":{"cachedInputTokens":669599,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":11397,"runtime":"claude","turns":29,"wallClockMs":210292}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"dff6c0d3de4aa913","findings":[{"citation":"resolved","description":"Outside the assigned math area, reported because it is concrete and cheap to verify. lib/DEPENDENCIES.md states that the vendored files are unmodified upstream content and records a SHA-256 per file; README.md line 140 claims all 36 matched. In the committed tree (git status clean, commit 2e97072) the six OpenZeppelin files and the two forge-std licence files match, but seven forge-std source files do not: StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. forge-std is used only by tests, so no deployed bytecode is affected and this is not a token defect. It is a documentation/provenance defect: a reviewer relying on the recorded digests to confirm the test harness is untouched upstream code cannot do so, and the README reports a verification result that does not reproduce. The likely cause is that these files were reformatted (forge fmt --check on lib/forge-std/src/Vm.sol reports it as already formatted in the repository's style). Fix: either re-vendor the pristine upstream files, or regenerate the recorded digests from the committed content and drop the 'unmodified' wording.","line":140,"path":"README.md","reproduction":"From the repository root run: cd lib && grep -E '^[0-9a-f]{64}  ' DEPENDENCIES.md | sha256sum -c | grep -v ': OK'. Expected (per README line 140-141): no output, every file OK. Actual: 'forge-std/src/StdAssertions.sol: FAILED', 'forge-std/src/StdJson.sol: FAILED', 'forge-std/src/StdToml.sol: FAILED', 'forge-std/src/Vm.sol: FAILED', 'forge-std/src/console.sol: FAILED', 'forge-std/src/interfaces/IERC7540.sol: FAILED', 'forge-std/src/interfaces/IMulticall3.sol: FAILED', 'sha256sum: WARNING: 7 computed checksums did NOT match'. Example: sha256sum lib/forge-std/src/Vm.sol starts a1b1c82924aecf0f while DEPENDENCIES.md line 51 records 9068805b59ac1d0e. All six openzeppelin-contracts digests (DEPENDENCIES.md lines 17-22) do match, so the production import closure is the unmodified v5.4.0 code.","severity":"info","snippet":"- Dependency integrity: all 36 vendored source/license files matched the\n  recorded SHA-256 digests after formatting and compilation.","title":"README integrity claim is false: 7 vendored forge-std files do not match the SHA-256 digests recorded in lib/DEPENDENCIES.md"}],"hash":"bb30ff6e5d8473c0008d497bb57ecc35c8dc4d367307790615cd909bc5d8d5ab","nodeId":"67642ee7-cea3-4c8f-aff3-14a4c7987134","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written.\n\n**Outcome:** no math, precision, boundary or numerical-gap defect in the token. One info-level provenance note outside my area.\n\n**What I checked**\n- The token is a bare OpenZeppelin v5.4.0 ERC-20 whose only custom code is a compile-time constant and a constructor mint. All six vendored OpenZeppelin files match their recorded SHA-256 digests, so the arithmetic under review is unmodified upstream code.\n- Math Precision guide: there are no divisions, fixed-point scales, casts or decimal conversions. The supply constant evaluates to exactly 10^27, fits comfortably in uint256 and uint128, and the mint uses a checked add. The unchecked subtract and add in the OpenZeppelin update path are bounded by the balance check and the supply.\n- Boundary guide: no external calls, no payable, receive or fallback paths, no bytes decoding. Sending ether with or without calldata reverts. The only sentinel branches are the zero-address checks, which revert for both zero and nonzero amounts.\n- Numerical Gap guide: zero-amount transfers, self-transfers of the full balance, allowance exactly equal to the amount, allowance of max minus one, infinite allowance against an empty balance, and the 10/88/2 percent launch split all behave exactly as specified with no dust or drift. I ran scratch tests for each edge plus the existing fuzz and invariant suites, and everything passed. The scratch files are removed.\n\n**Finding reported (info):** seven vendored forge-std source files do not match the digests recorded in lib/DEPENDENCIES.md, contradicting the README claim that all 36 files matched. This affects only the test harness, not deployed code, and the reproduction command is in the findings file.\n\n**Coverage:** all three entry points are marked holds, with four extra invariant rows.","treeHash":null,"usage":{"cachedInputTokens":601064,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":13080,"runtime":"claude","turns":18,"wallClockMs":287134}},{"artifacts":[],"attempt":2,"bundleHash":"c71444a98f74e0709ebc5f49e9ab15eeb37723e1dbb60a895f75ace92290d628","device":"f0ca4c17025726f8","findings":[],"hash":"f5fff4a3c204887f13d9e197e87727a5486612dec95246467ff33ba80fe92587","nodeId":"b9479215-128c-4836-92b3-76a4f38e0d31","outcome":"completed","summary":"Created [launch.json](/root/.identitymd/work/709c1351-5e5d-419a-a825-87194f44fbcb/b9479215-128c-4836-92b3-76a4f38e0d31/launch.json) with the exact WORLD supply, constructor arguments, pool settings, and economics.\n\n`forge build` succeeded; all 31 tests passed using the supplied fuzz seed. Only the manifest is included in the change.","treeHash":"67290b08a0713381e8336c9f62b9e0467282eeef","usage":{"cachedInputTokens":134016,"inputTokens":68675,"model":"gpt-6-astra","outputTokens":2864,"runtime":"codex","turns":3,"wallClockMs":81954}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e6de8d4c6cf97551","findings":[],"hash":"fa7450abd175c5a19c5d60a7b0b477aa1dbade51cd5a7a7685f0ca124f9b6867","nodeId":"0f5f34c9-c7a5-4d3d-b532-1bd297eb4075","outcome":"completed","summary":"The review is complete. The findings file holds no defects and a full coverage record.\n\n**Outcome: no reproducible defects in the economics area.** WorldMiningToken is the unmodified OpenZeppelin v5.4.0 ERC-20 with a single constructor mint to the deployer. The vendored OpenZeppelin files match the SHA-256 digests recorded in the repo. The ABI exposes only the three ERC-20 mutators, the views, and the supply constant.\n\nWhat I checked against the Economic Security, Invariant and Flow Gap guides:\n\n- **Launch flows arrive whole.** No fee, burn, rebase, exemption list or recipient callback exists. The swarm, pool and remainder shares of the supply divide exactly, and claims and sells back into the pool manager move the exact amount.\n- **Conservation.** Sum of balances equals total supply before and after any sequence. The repo's invariant suite and a scratch fuzz both pass. Nothing can mint or burn after construction.\n- **ERC-20 compliance edges.** Infinite allowance is not decremented, finite allowance is, a failed delegated transfer rolls back the allowance spend, zero-address transfers and approvals revert.\n- **Privileged power.** None exists. No owner, pause, blacklist, upgrade, delegatecall or selfdestruct. The constructor makes no external calls.\n- **Static analysis lead.** The aderyn large-numeric-literal note is a compile-time constant equal to 10^27, which matches the brief.\n\nCoverage rows were written for all three listed entry points plus two invariants and the static-analysis lead, each marked holds. The existing test suite passes in full. My scratch test directory was removed, so the only new file in the tree is the findings file.","treeHash":null,"usage":{"cachedInputTokens":781313,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":8007,"runtime":"claude","turns":20,"wallClockMs":163396}}],"verification":[{"checks":[{"durationMs":1446,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.34s\nCompiler run successful!\n","passed":true},{"durationMs":10007,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 30 tests for test/WorldMiningToken.t.sol:WorldMiningTokenTest\n[PASS] testFuzz_TransferAboveBalanceReverts(uint256) (runs: 1024, μ: 69141, ~: 69458)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129640231\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1024, μ: 92840, ~: 93186)\nLogs:\n  Bound result 1770\n\n[PASS] testFuzz_TransferFromAboveAllowanceReverts(uint256,uint256) (runs: 1024, μ: 123328, ~: 123831)\nLogs:\n  Bound result 85080169525504070235773124\n  Bound result 547223309778264108681656594\n\n[PASS] testFuzz_TransferFromConsumesOnlySpentAllowance(uint256,uint256) (runs: 1024, μ: 163485, ~: 165281)\nLogs:\n  Bound result 280892692008009346435434818404618138358896035085080169525504070235773124\n  Bound result 147467833088813939038660700\n\n[PASS] test_ApprovalIsIsolatedByOwnerAndSpender() (gas: 205447)\n[PASS] test_ApproveEmitsEventWithoutMovingFunds() (gas: 99096)\n[PASS] test_ApproveReplacesAllowanceAndCanRevokeIt() (gas: 170132)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37640)\n[PASS] test_ConstructorEmitsExactlyOneMint() (gas: 26589)\n[PASS] test_Create2MintsToImmediateFactoryNotCallerOrOrigin() (gas: 303963)\n[PASS] test_DeployerCannotSpendHolderTokensWithoutApproval() (gas: 158480)\n[PASS] test_EmptyHolderCannotTransferPositiveAmount() (gas: 57405)\n[PASS] test_LaunchDistributionAndOrdinaryTransfersArriveWhole() (gas: 631275)\n[PASS] test_MetadataAndSupply() (gas: 107606)\n[PASS] test_NoMintBurnOrAdministrativeEntrypoints() (gas: 1288144)\n[PASS] test_RuntimeIsDeployableAndHasNoForbiddenOpcodes() (gas: 2261907)\n[PASS] test_SelfTransferAboveBalanceReverts() (gas: 40275)\n[PASS] test_SelfTransferPreservesBalanceAndEmitsEvent() (gas: 53947)\n[PASS] test_TransferEmitsEventAndMovesExactAmount() (gas: 93551)\n[PASS] test_TransferEntireSupply() (gas: 86053)\n[PASS] test_TransferFromAboveAllowanceRevertsWithoutChangingState() (gas: 116168)\n[PASS] test_TransferFromAboveBalanceRestoresAllowanceOnRevert() (gas: 189565)\n[PASS] test_TransferFromEmitsEventAndConsumesFiniteAllowance() (gas: 242402)\n[PASS] test_TransferFromToSelfConsumesAllowanceWithoutChangingBalance() (gas: 108118)\n[PASS] test_TransferFromToZeroRestoresAllowanceOnRevert() (gas: 114630)\n[PASS] test_TransferFromWithInfiniteApprovalDoesNotDecreaseAllowance() (gas: 139831)\n[PASS] test_TransferFromWithoutApprovalReverts() (gas: 57848)\n[PASS] test_TransferToZeroRevertsForBothPositiveAndZeroAmounts() (gas: 71927)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73333)\n[PASS] test_ZeroTransferFromWithoutApprovalSucceeds() (gas: 81493)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 63.18ms (230.55ms CPU time)\n\nRan 18 tests for test/WorldMiningToken.adversarial.t.sol:WorldMiningTokenAdversarialTest\n[PASS] testFuzz_ApprovalReplacementUsesLastValue(uint256,uint256,uint256) (runs: 1024, μ: 251848, ~: 253888)\nLogs:\n  Bound result 751171302559173508209512371\n\n[PASS] testFuzz_FailedDelegatedTransferPreservesBalanceAndApproval(uint256,uint256,uint256,bool) (runs: 1024, μ: 244027, ~: 244154)\nLogs:\n  Bound result 2\n  Bound result 5000000000000000000\n  Bound result 115792089237316195423570985008687907853269984665640564039452584007913129640191\n\n[PASS] testFuzz_InvalidReceiverPreservesAllowance(uint256,uint256) (runs: 1024, μ: 180795, ~: 181104)\nLogs:\n  Bound result 649645351401778623884886436\n  Bound result 10554147467833088813939038671254\n\n[PASS] testFuzz_RoundTripRestoresBalancesWithoutChangingApprovals(uint256,uint256,uint256) (runs: 1024, μ: 477884, ~: 478811)\nLogs:\n  Bound result 1811995206932278453241378\n  Bound result 447441404709396299972925\n\n[PASS] test_AllowanceAuthorizationUsesCallerRatherThanTransactionOrigin() (gas: 341614)\n[PASS] test_AnAllowanceCannotBeRedelegated() (gas: 250396)\n[PASS] test_ApprovalDoesNotReserveFundsAndSurvivesAnEmptyBalance() (gas: 440126)\n[PASS] test_ApprovalReplacementAfterPartialSpendUsesOnlyNewLimit() (gas: 329439)\n[PASS] test_ExhaustedAllowanceCannotBeUsedAgain() (gas: 262863)\n[PASS] test_InfiniteApprovalCanBeRevokedAfterSpending() (gas: 269459)\n[PASS] test_MaximumDelegatedTransferFailsForBalanceDespiteInfiniteApproval() (gas: 175507)\n[PASS] test_MaximumFiniteAllowanceDecreasesOnEverySpend() (gas: 274100)\n[PASS] test_MaximumTransferRevertsEvenToSelf() (gas: 138678)\n[PASS] test_OneBaseUnitCanBeTransferredAndSpent() (gas: 218120)\n[PASS] test_TransferFromByHolderRequiresAndConsumesSelfApproval() (gas: 305233)\n[PASS] test_TransferredTokensDoNotCarryTheSendersAllowances() (gas: 242443)\n[PASS] test_ZeroDelegatedTransferToZeroRevertsWithFiniteAndInfiniteApprovals() (gas: 241804)\n[PASS] test_ZeroSpenderIsRejectedForZeroAndMaximumApprovals() (gas: 204174)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 63.23ms (248.76ms CPU time)\n\nRan 1 test for test/WorldMiningToken.invariant.t.sol:WorldMiningTokenInvariantTest\n[PASS]\nWorldMiningTokenInvariantTest invariants:\n[PASS] invariant_AllowancesMatchIndependentLedger\n[PASS] invariant_BalancesMatchIndependentLedger\n[PASS] invariant_TotalSupplyEqualsSumOfAllHolderBalances\n WorldMiningTokenInvariantTest invariants (runs: 256, calls: 32768, reverts: 0)\n\n╭-------------------+----------------------------------+-------+---------+----------╮\n| Contract          | Selector                         | Calls | Reverts | Discards |\n+===================================================================================+\n| WorldTokenHandler | approve                          | 3664  | 0       | 0        |\n|-------------------+----------------------------------+-------+---------+----------|\n| WorldTokenHandler | rejectTransferAboveBalance       | 3665  | 0       | 0        |\n|-------------------+----------------------------------+-------+---------+----------|\n| WorldTokenHandler | rejectTransferFromAboveAllowance | 3556  | 0       | 0        |\n|-------------------+----------------------------------+-------+---------+----------|\n| WorldTokenHandler | rejectTransferFromAboveBalance   | 3669  | 0       | 0        |\n|-------------------+----------------------------------+-------+---------+----------|\n| WorldTokenHandler | rejectZeroAddress                | 3574  | 0       | 0        |\n|-------------------+----------------------------------+-------+---------+----------|\n| WorldTokenHandler | revokeAndRejectSpend             | 3713  | 0       | 0        |\n|-------------------+----------------------------------+-------+---------+----------|\n| WorldTokenHandler | roundTrip                        | 3616  | 0       | 0        |\n|-------------------+----------------------------------+-------+---------+----------|\n| WorldTokenHandler | transfer                         | 3681  | 0       | 0        |\n|-------------------+----------------------------------+-------+---------+----------|\n| WorldTokenHandler | transferFrom                     | 3630  | 0       | 0        |\n╰-------------------+----------------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129640097\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129640368\n  Bound result 60000000000000000000\n  Bound result 9299\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129664511\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639964\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639946\n  Bound result 158519\n  Bound result 1015\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129648441\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639995\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 58334340994022479323842849493561928019174308141997167257085976594\n  Bound result 115792089237316195423570985008687907853269984665640314039499584007913129639935\n  Bound result 250000000000000000000000000\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 1438\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129643304\n  Bound result 170807925314802299210578930\n  Bound result 6000000000000000000\n  Bound result 6000000000000000000\n  Bound result 95\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129642906\n  Bound result 0\n  Bound result 4\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913134418743\n  Bound result 1000000000000000000\n  Bound result 243\n  Bound result 4313\n  Bound result 20000000000000000000\n  Bound result 7356\n  Bound result 5\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639995\n  Bound result 8242\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129644453\n  Bound result 0\n  Bound result 848515328386\n  Bound result 8260\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 115792089237316195423570985008687907853269984665640314039461584007913129639935\n  Bound result 61855859754501865694383167160176530766523639903075207137594401067904806\n  Bound result 459573302569029816764554422\n  Bound result 618558846260817691273751335167690525146952286541350481938\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639940\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129650090\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007915467589105\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129643819\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129648626\n  Bound result 312728695290772102340376363\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639984\n  Bound result 1000000000000000000000000000\n  Bound result 84872379791364417501440300\n  Bound result 3\n  Bound result 115792089237316195423570985008687907853269984665640314039482584007913129639934\n  Bound result 8943\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639953\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129646762\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129648232\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129643342\n  Bound result 255\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639904\n  Bound result 47\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 7033\n  Bound result 0\n  Bound result 1046363170\n  Bound result 100000000000000000000\n  Bound result 0\n  Bound result 11\n  Bound result 6519\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 9.93s (9.93s CPU time)\n\nRan 3 test suites in 9.93s (10.06s CPU time): 49 tests passed, 0 failed, 0 skipped (49 total tests)\n","passed":true},{"durationMs":39,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"WorldMiningToken.approve(address,uint256)\",\"WorldMiningToken.transfer(address,uint256)\",\"WorldMiningToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"LICENSE\":21,\"README.md\":147,\"foundry.toml\":21,\"remappings.txt\":2,\"src/WorldMiningToken.sol\":17,\"test/WorldMiningToken.adversarial.t.sol\":293,\"test/WorldMiningToken.invariant.t.sol\":279,\"test/WorldMiningToken.t.sol\":418},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"430069d20bbc9172e2b1d477d4a1a6d1679d7617eecc69f27de27ca2102966a9","verifiedTreeHash":"2bd895ba65256920c98d1acf4815bcc7c88fa5cf","verifierVersion":"0.1.0+d1681b55"},{"checks":[{"durationMs":1184,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.11s\nCompiler run successful!\n","passed":true},{"durationMs":5597,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 30 tests for test/WorldMiningToken.t.sol:WorldMiningTokenTest\n[PASS] testFuzz_TransferAboveBalanceReverts(uint256) (runs: 1024, μ: 69140, ~: 69458)\nLogs:\n  Bound result 981266321989960330425011878766917295528\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1024, μ: 92881, ~: 93186)\nLogs:\n  Bound result 10000000000000000000\n\n[PASS] testFuzz_TransferFromAboveAllowanceReverts(uint256,uint256) (runs: 1024, μ: 123226, ~: 123831)\nLogs:\n  Bound result 85080169525504070235773124\n  Bound result 547223309778264108681656594\n\n[PASS] testFuzz_TransferFromConsumesOnlySpentAllowance(uint256,uint256) (runs: 1024, μ: 162985, ~: 165281)\nLogs:\n  Bound result 29772199\n  Bound result 20972607\n\n[PASS] test_ApprovalIsIsolatedByOwnerAndSpender() (gas: 205447)\n[PASS] test_ApproveEmitsEventWithoutMovingFunds() (gas: 99096)\n[PASS] test_ApproveReplacesAllowanceAndCanRevokeIt() (gas: 170132)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37640)\n[PASS] test_ConstructorEmitsExactlyOneMint() (gas: 26589)\n[PASS] test_Create2MintsToImmediateFactoryNotCallerOrOrigin() (gas: 303963)\n[PASS] test_DeployerCannotSpendHolderTokensWithoutApproval() (gas: 158480)\n[PASS] test_EmptyHolderCannotTransferPositiveAmount() (gas: 57405)\n[PASS] test_LaunchDistributionAndOrdinaryTransfersArriveWhole() (gas: 631275)\n[PASS] test_MetadataAndSupply() (gas: 107606)\n[PASS] test_NoMintBurnOrAdministrativeEntrypoints() (gas: 1288144)\n[PASS] test_RuntimeIsDeployableAndHasNoForbiddenOpcodes() (gas: 2261907)\n[PASS] test_SelfTransferAboveBalanceReverts() (gas: 40275)\n[PASS] test_SelfTransferPreservesBalanceAndEmitsEvent() (gas: 53947)\n[PASS] test_TransferEmitsEventAndMovesExactAmount() (gas: 93551)\n[PASS] test_TransferEntireSupply() (gas: 86053)\n[PASS] test_TransferFromAboveAllowanceRevertsWithoutChangingState() (gas: 116168)\n[PASS] test_TransferFromAboveBalanceRestoresAllowanceOnRevert() (gas: 189565)\n[PASS] test_TransferFromEmitsEventAndConsumesFiniteAllowance() (gas: 242402)\n[PASS] test_TransferFromToSelfConsumesAllowanceWithoutChangingBalance() (gas: 108118)\n[PASS] test_TransferFromToZeroRestoresAllowanceOnRevert() (gas: 114630)\n[PASS] test_TransferFromWithInfiniteApprovalDoesNotDecreaseAllowance() (gas: 139831)\n[PASS] test_TransferFromWithoutApprovalReverts() (gas: 57848)\n[PASS] test_TransferToZeroRevertsForBothPositiveAndZeroAmounts() (gas: 71927)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73333)\n[PASS] test_ZeroTransferFromWithoutApprovalSucceeds() (gas: 81493)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 39.14ms (174.32ms CPU time)\n\nRan 1 test for test/WorldMiningToken.invariant.t.sol:WorldMiningTokenInvariantTest\n[PASS]\nWorldMiningTokenInvariantTest invariants:\n[PASS] invariant_AllowancesMatchIndependentLedger\n[PASS] invariant_BalancesMatchIndependentLedger\n[PASS] invariant_TotalSupplyEqualsSumOfAllHolderBalances\n WorldMiningTokenInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------------+--------------+-------+---------+----------╮\n| Contract          | Selector     | Calls | Reverts | Discards |\n+===============================================================+\n| WorldTokenHandler | approve      | 5394  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| WorldTokenHandler | transfer     | 5546  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| WorldTokenHandler | transferFrom | 5444  | 0       | 0        |\n╰-------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 127\n  Bound result 5\n  Bound result 0\n  Bound result 2284\n  Bound result 0\n  Bound result 242\n  Bound result 0\n  Bound result 8\n  Bound result 0\n  Bound result 95\n  Bound result 1000000000\n  Bound result 0\n  Bound result 0\n  Bound result 1312\n  Bound result 244\n  Bound result 329725751627\n  Bound result 0\n  Bound result 1000000000000000000\n  Bound result 0\n  Bound result 38\n  Bound result 140188991855302058952506014\n  Bound result 187021422415521994044623236\n  Bound result 1474\n  Bound result 0\n  Bound result 30\n  Bound result 38073140886643002093828181\n  Bound result 0\n  Bound result 5889\n  Bound result 2277\n  Bound result 0\n  Bound result 11\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 62978576584478005955375569\n  Bound result 5567\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3704\n  Bound result 342\n  Bound result 500756\n  Bound result 3788\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.50s (5.50s CPU time)\n\nRan 2 test suites in 5.50s (5.54s CPU time): 31 tests passed, 0 failed, 0 skipped (31 total tests)\n","passed":true},{"durationMs":34,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"WorldMiningToken.approve(address,uint256)\",\"WorldMiningToken.transfer(address,uint256)\",\"WorldMiningToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"LICENSE\":21,\"README.md\":147,\"foundry.toml\":21,\"remappings.txt\":2,\"src/WorldMiningToken.sol\":17,\"test/WorldMiningToken.invariant.t.sol\":113,\"test/WorldMiningToken.t.sol\":418},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":485,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":245,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/WorldMiningToken.sol:12: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"7814d2596dc932307aec69de70a096147ea25f7de0d0c4984d392f376414d879","verifiedTreeHash":"7e7800800ad6a3caefb3a912a54ffe259d5f2026","verifierVersion":"0.1.0+d1681b55"},{"checks":[{"durationMs":1114,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.05s\nCompiler run successful!\n","passed":true},{"durationMs":5427,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 30 tests for test/WorldMiningToken.t.sol:WorldMiningTokenTest\n[PASS] testFuzz_TransferAboveBalanceReverts(uint256) (runs: 1024, μ: 69140, ~: 69458)\nLogs:\n  Bound result 6983262634285651040775773176387571143673700\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1024, μ: 92881, ~: 93186)\nLogs:\n  Bound result 1770\n\n[PASS] testFuzz_TransferFromAboveAllowanceReverts(uint256,uint256) (runs: 1024, μ: 123226, ~: 123831)\nLogs:\n  Bound result 12299\n  Bound result 5000000000000000001\n\n[PASS] testFuzz_TransferFromConsumesOnlySpentAllowance(uint256,uint256) (runs: 1024, μ: 162985, ~: 165281)\nLogs:\n  Bound result 12\n  Bound result 10\n\n[PASS] test_ApprovalIsIsolatedByOwnerAndSpender() (gas: 205447)\n[PASS] test_ApproveEmitsEventWithoutMovingFunds() (gas: 99096)\n[PASS] test_ApproveReplacesAllowanceAndCanRevokeIt() (gas: 170132)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37640)\n[PASS] test_ConstructorEmitsExactlyOneMint() (gas: 26589)\n[PASS] test_Create2MintsToImmediateFactoryNotCallerOrOrigin() (gas: 303963)\n[PASS] test_DeployerCannotSpendHolderTokensWithoutApproval() (gas: 158480)\n[PASS] test_EmptyHolderCannotTransferPositiveAmount() (gas: 57405)\n[PASS] test_LaunchDistributionAndOrdinaryTransfersArriveWhole() (gas: 631275)\n[PASS] test_MetadataAndSupply() (gas: 107606)\n[PASS] test_NoMintBurnOrAdministrativeEntrypoints() (gas: 1288144)\n[PASS] test_RuntimeIsDeployableAndHasNoForbiddenOpcodes() (gas: 2261907)\n[PASS] test_SelfTransferAboveBalanceReverts() (gas: 40275)\n[PASS] test_SelfTransferPreservesBalanceAndEmitsEvent() (gas: 53947)\n[PASS] test_TransferEmitsEventAndMovesExactAmount() (gas: 93551)\n[PASS] test_TransferEntireSupply() (gas: 86053)\n[PASS] test_TransferFromAboveAllowanceRevertsWithoutChangingState() (gas: 116168)\n[PASS] test_TransferFromAboveBalanceRestoresAllowanceOnRevert() (gas: 189565)\n[PASS] test_TransferFromEmitsEventAndConsumesFiniteAllowance() (gas: 242402)\n[PASS] test_TransferFromToSelfConsumesAllowanceWithoutChangingBalance() (gas: 108118)\n[PASS] test_TransferFromToZeroRestoresAllowanceOnRevert() (gas: 114630)\n[PASS] test_TransferFromWithInfiniteApprovalDoesNotDecreaseAllowance() (gas: 139831)\n[PASS] test_TransferFromWithoutApprovalReverts() (gas: 57848)\n[PASS] test_TransferToZeroRevertsForBothPositiveAndZeroAmounts() (gas: 71927)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73333)\n[PASS] test_ZeroTransferFromWithoutApprovalSucceeds() (gas: 81493)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 26.85ms (125.03ms CPU time)\n\nRan 1 test for test/WorldMiningToken.invariant.t.sol:WorldMiningTokenInvariantTest\n[PASS]\nWorldMiningTokenInvariantTest invariants:\n[PASS] invariant_AllowancesMatchIndependentLedger\n[PASS] invariant_BalancesMatchIndependentLedger\n[PASS] invariant_TotalSupplyEqualsSumOfAllHolderBalances\n WorldMiningTokenInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------------+--------------+-------+---------+----------╮\n| Contract          | Selector     | Calls | Reverts | Discards |\n+===============================================================+\n| WorldTokenHandler | approve      | 5394  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| WorldTokenHandler | transfer     | 5546  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| WorldTokenHandler | transferFrom | 5444  | 0       | 0        |\n╰-------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 127\n  Bound result 5\n  Bound result 0\n  Bound result 2284\n  Bound result 0\n  Bound result 242\n  Bound result 0\n  Bound result 8\n  Bound result 0\n  Bound result 95\n  Bound result 1000000000\n  Bound result 0\n  Bound result 0\n  Bound result 1312\n  Bound result 244\n  Bound result 329725751627\n  Bound result 0\n  Bound result 1000000000000000000\n  Bound result 0\n  Bound result 38\n  Bound result 140188991855302058952506014\n  Bound result 187021422415521994044623236\n  Bound result 1474\n  Bound result 0\n  Bound result 30\n  Bound result 38073140886643002093828181\n  Bound result 0\n  Bound result 5889\n  Bound result 2277\n  Bound result 0\n  Bound result 11\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 62978576584478005955375569\n  Bound result 5567\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3704\n  Bound result 342\n  Bound result 500756\n  Bound result 3788\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.35s (5.35s CPU time)\n\nRan 2 test suites in 5.35s (5.38s CPU time): 31 tests passed, 0 failed, 0 skipped (31 total tests)\n","passed":true},{"durationMs":38,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"WorldMiningToken.approve(address,uint256)\",\"WorldMiningToken.transfer(address,uint256)\",\"WorldMiningToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"LICENSE\":21,\"README.md\":147,\"foundry.toml\":21,\"launch.json\":24,\"remappings.txt\":2,\"src/WorldMiningToken.sol\":17,\"test/WorldMiningToken.invariant.t.sol\":113,\"test/WorldMiningToken.t.sol\":418},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"f5fff4a3c204887f13d9e197e87727a5486612dec95246467ff33ba80fe92587","verifiedTreeHash":"67290b08a0713381e8336c9f62b9e0467282eeef","verifierVersion":"0.1.0+d1681b55"}]}