{"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":"9d352034-a82a-4372-8d3e-b85919cb1a1a","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"27406c44047980c23b6dcddc2bf831fd0ebfa82a6856b21103340f400b50af99","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":"ac236f65693920571a515629dc32bb0f74624fbbe6e8f7fb277fd1a628575b3f","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":"62147c076220b4630a008fcee8eeb9a2c8bbd5938e53c1c95a1a53de54bf8583","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":"d2f401829350aa6ed5b798eb4d91304c09c3ce3446e57fcb09b41d6f90746b9b","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":"7ded7bb638756791286269da62e4f04f88807210d3f32224230f0b165ef468de","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":"26396482bebd2ea6b369f20da3d609a2c88fa4196d1f6d505fa8a6b152125746","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":"41081cb7aacd9b07d4184222467b116ef643bfbf28783160b836dd603a7f9591","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"2e3a33d2ef66fb61792b35eb00485c30738f8f8a6a0377504d0ddf537a13f9d1","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: Crawlyield (CRAWL).\nToken name: Crawlyield\nToken symbol: CRAWL\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"34dd635a0a5ae82ef126678768afaae99943ce1fb19aa69dd380cee771ac5340","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"9d352034-a82a-4372-8d3e-b85919cb1a1a","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1634-crawlyield"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51083","feedbackHash":"0ce081787a6fac4d05dad78093404de05bb113f2f93166bcb0504a484094e6c4","nodeKey":"audit_economics","submissionHash":"27406c44047980c23b6dcddc2bf831fd0ebfa82a6856b21103340f400b50af99","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52420","feedbackHash":"da1a16ff2da70ec16174cf77f8a8ab33427ea7cf607c0b174ff76b284d02dcd1","nodeKey":"audit_flow","submissionHash":"ac236f65693920571a515629dc32bb0f74624fbbe6e8f7fb277fd1a628575b3f","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52165","feedbackHash":"221a161f67c5f27832c0ead59a754ae4c1b81681c325988743b25851a2fdde5b","nodeKey":"audit_judge","submissionHash":"62147c076220b4630a008fcee8eeb9a2c8bbd5938e53c1c95a1a53de54bf8583","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52222","feedbackHash":"cedf0f9cf0c899be88b6124d925ac49a115be1e0d072a90cc623641110d3f26d","nodeKey":"audit_math","submissionHash":"d2f401829350aa6ed5b798eb4d91304c09c3ce3446e57fcb09b41d6f90746b9b","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52180","feedbackHash":"392c00406430fe2f9758619204303e632be5422036e89104035774c89d7ccf43","nodeKey":"audit_permissions","submissionHash":"7ded7bb638756791286269da62e4f04f88807210d3f32224230f0b165ef468de","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51143","feedbackHash":"f41e1e6e6e5a7dbbefdfd8f6433cddd505085673c6eaa9f6e648ef37f7ae2a8f","nodeKey":"build_contract_project","submissionHash":"26396482bebd2ea6b369f20da3d609a2c88fa4196d1f6d505fa8a6b152125746","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52419","feedbackHash":"3ceef5ac2fe388c342555045a24536093e25f22e191fa815775817836042dcd9","nodeKey":"manifest","submissionHash":"41081cb7aacd9b07d4184222467b116ef643bfbf28783160b836dd603a7f9591","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"53938","feedbackHash":"2cab6515f92516d70bcc810abaf8065ec8a1d9e02eaa40fbe93a72826463827c","nodeKey":"write_foundry_tests","submissionHash":"2e3a33d2ef66fb61792b35eb00485c30738f8f8a6a0377504d0ddf537a13f9d1","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"9f405819fdae4885d92986eeb6274f47b608719682da1d8ad0fa18244154d790","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"4bbca21038191eb98fdcef7d900443121e1de818be4ffae95193cb1f0f76781c","device":"a4c81f495eb81dd0","findings":[],"hash":"26396482bebd2ea6b369f20da3d609a2c88fa4196d1f6d505fa8a6b152125746","nodeId":"7b724c1c-2019-4126-8811-47048e26d9a3","outcome":"completed","summary":"The Crawlyield token project is complete, verified and committed on main.\n\n**What was built**\n\n- `src/CrawlyieldToken.sol` is the token, contract name `CrawlyieldToken`. It composes OpenZeppelin v5.0.2 ERC20, ERC20Burnable and ERC20Permit. The constructor takes no arguments and mints the whole supply to the caller, which on the launch is the factory.\n- The token has no owner, minter, pause, blacklist, freeze, seize or upgrade path. Transfers move exact amounts, so the swarm share, pool seed and swaps in the protected harness arrive whole. Supply can only shrink through holder-authorized burns.\n- `script/DeployCrawlyieldToken.s.sol` exposes a plain deploy function the tests call directly, plus a broadcast wrapper for stand-alone use.\n- `foundry.toml` pins solc 0.8.26, sets bytecode_hash to none, optimizer on, ffi off and no filesystem permissions. forge-std 1.9.7 and the needed OpenZeppelin files are vendored as ordinary files under lib with their licences.\n- `README.md` documents the parameters, the launch economics, the stand-alone deploy path, operational responsibilities and assumptions. There is no \"after launch\" configuration because the token has no settings.\n\n**Verification**\n\n| Check | Result |\n| --- | --- |\n| forge build | passes |\n| forge test with the verifier's fuzz seed | 34 passed, 0 failed |\n| forge fmt --check | passes |\n| Clean copy, offline, empty environment | build and tests pass |\n\nTests cover metadata and supply, the one-time mint for EOA and contract deployers, every ERC-20 revert path, burn and burnFrom without approval, probes of mint, pause, blacklist, freeze and upgrade selectors from both a stranger and the deployer, permit success and failure cases, a runtime opcode scan for DELEGATECALL, CALLCODE and SELFDESTRUCT, and fuzzed supply conservation. No test reads environment variables.\n\n**Left out**\n\nSlither and Mythril were not available on this machine and did not run. No launch.json was written, as the brief requires. The working tree has no stray files outside the committed project.","treeHash":"931ac94d69f76a6b65d3591252bb9546c8db9108","usage":{"cachedInputTokens":652440,"inputTokens":418,"model":"claude-fable-5-1","outputTokens":21787,"runtime":"claude","turns":23,"wallClockMs":317249}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"dc7103e773ea194a","findings":[],"hash":"27406c44047980c23b6dcddc2bf831fd0ebfa82a6856b21103340f400b50af99","nodeId":"e96b6bd8-ec2c-404c-9efe-4d537c5be3a6","outcome":"completed","summary":"The review is complete and the findings file is written. The working tree holds no source changes.\n\n**Result: no defects found.** The Crawlyield token is a thin composition of OpenZeppelin 5.0.2 `ERC20`, `ERC20Burnable` and `ERC20Permit` with a zero-argument constructor that mints exactly one billion tokens with 18 decimals to the deployer. I checked it against the Economic Security, Invariant and Flow Gap guides and found nothing that fails with a concrete input.\n\nWhat I verified:\n\n- **Vendored dependency integrity.** All 17 OpenZeppelin files under lib/ are byte-identical to the npm release of version 5.0.2, so no hidden change to transfer, allowance, burn or signature logic.\n- **Conservation invariants.** A scratch stateful fuzz ran 1,000 sequences of up to 64 random transfer, transferFrom, burn, burnFrom and permit calls. The sum of balances always equalled totalSupply, and supply never rose above the constructor mint.\n- **Launch flow exactness.** A simulated factory deploy, the 10/88/2 percent split, a PoolManager-style sync-then-settle delta, and a trader buy and sell-back all moved exactly the named amounts.\n- **Economic surface.** No fee, tax, hook, owner, pause, blacklist, mint path, receive or fallback. The compiled ABI exposes exactly the six nonpayable functions the verifier listed. The runtime contains no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **Permit.** Deadline, per-owner nonce, domain separator with chain-id fallback and malleability rejection all hold. Permit front-running is a property of the ERC-2612 standard, not a defect in this token, so I did not report it.\n- **Static analysis lead.** The aderyn large-numeric-literal note on line 32 is style only. The literal evaluates to the exact supply the brief requires.\n\nThe findings file contains an empty findings list and 13 coverage rows: one `holds` row for each of the six entry points, plus rows for the supply conservation, launch flow, privileged-role, dependency, static-analysis and manifest checks. The scratch test directory was removed since no finding carries a proof. No file outside .imd-findings.json was changed.","treeHash":null,"usage":{"cachedInputTokens":645953,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":16981,"runtime":"claude","turns":25,"wallClockMs":258058}},{"artifacts":[],"attempt":1,"bundleHash":"8d8a128257b4420bccebeec341de35c0bac5df01318a8fefe1e4dc2bf9be0601","device":"01695e9524859621","findings":[],"hash":"2e3a33d2ef66fb61792b35eb00485c30738f8f8a6a0377504d0ddf537a13f9d1","nodeId":"d0db0269-1ec6-4531-8e5f-d4879830baf2","outcome":"completed","summary":"Added boundary, failure-path, permit, fuzz, and multi-actor invariant tests under `test/`.\n\nValidation passed:\n- `forge build`\n- `forge test` with the required seed: 67 tests passed\n- 32,768 invariant calls, no unexpected reverts\n\nNo implementation defects found. Existing source and configuration files remain unchanged.","treeHash":"aa87cb166b6e9dbcc28719b5411aaee15de649fc","usage":{"cachedInputTokens":974208,"inputTokens":80787,"model":"gpt-6-astra","outputTokens":21162,"runtime":"codex","turns":7,"wallClockMs":557315}},{"artifacts":[],"attempt":1,"bundleHash":"028334b7036ce07b7083be7afc09f16cd3d21daa0695791288948bd5e56da2ba","device":"7eb063fcf0cf5626","findings":[],"hash":"41081cb7aacd9b07d4184222467b116ef643bfbf28783160b836dd603a7f9591","nodeId":"122d02fa-531e-4689-b21f-0b81b421a23e","outcome":"completed","summary":"launch.json is written and verified. The only working-tree change is the new manifest.\n\n**What the manifest says**\n\n- **Token:** contract `CrawlyieldToken`, name Crawlyield, symbol CRAWL, 18 decimals, empty constructorArgs. The accepted constructor takes no parameters and mints the whole supply to msg.sender, so totalSupply is the minted amount in minor units, 1000000000000000000000000000.\n- **Contracts:** an empty list. The accepted tree has no application contracts, only the token, a deploy script and tests.\n- **Pool and economics:** copied verbatim from the launch reference. IMD pair at 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 12500, tick spacing 60, the one-to-one initialPrice as provenance, and the requester's economics object unchanged.\n- **Notes:** a description of the token's behavior that only names what exists in the tree, well under the 4000 character limit.\n\n**Checks run**\n\n- A script confirmed the manifest has exactly the schema's top-level keys, the token keys, the verbatim pool and economics objects, the correct supply string, and a contract name under 32 characters.\n- `forge build` compiled cleanly.\n- `forge test` with the verifier's fuzz seed passed all 34 tests.\n- Git status shows only the untracked launch.json. No other file was touched.\n\nAgainst the protected floor, the token needs no exemptions since it has no transfer fee, no mint path, and no privileged calls. The burnFrom entry point the floor probes reverts without allowance, so the holder's balance stays intact.","treeHash":"4cd7370fbc77ebbffe49fa06b2fd13b3e654ecbe","usage":{"cachedInputTokens":186601,"inputTokens":130,"model":"claude-fable-5-1","outputTokens":3440,"runtime":"claude","turns":11,"wallClockMs":57096}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e12f98dda6acc55f","findings":[],"hash":"62147c076220b4630a008fcee8eeb9a2c8bbd5938e53c1c95a1a53de54bf8583","nodeId":"426e0ba7-c0e7-42a7-a0f4-b75660a32325","outcome":"completed","summary":"The review is complete and the findings file is written. Nothing else is pending.\n\n**Outcome: no defects found.** The report at `.imd-findings.json` holds an empty findings list and a ten-row coverage record, with every listed entry point marked as holding.\n\nWhat I verified:\n- **Source.** The token is a 44-line contract inheriting OpenZeppelin ERC20, ERC20Burnable and ERC20Permit. The constructor takes no arguments and mints 1e27 units to msg.sender. There is no mint path, owner, pause, blacklist, freeze, fee or transfer hook.\n- **Dependencies.** All 18 vendored OpenZeppelin files are byte-identical to upstream v5.0.2, fetched from GitHub and diffed.\n- **Entry points.** I traced approve, burn, burnFrom, permit, transfer and transferFrom through the unmodified library code, including each revert path and the protected floor's privileged-call probes. The deployer's burnFrom against a holder reverts on allowance, and launch flows move exactly the stated amount.\n- **Deployment.** Runtime is 4,326 bytes and initcode 5,999 bytes, far under the limits. No address bits are required, so a factory-chosen CREATE2 salt deploys it. The manifest uses only schema keys, an empty constructorArgs list matching the constructor, and a totalSupply string equal to the minted amount.\n- **Build and tests.** Forge 1.8.3 builds under solc 0.8.26 and all 67 project tests pass.\n- **Leads dropped.** The four specialists and the test writer reported nothing, so there was nothing to reproduce or merge. Slither reported nothing. Aderyn's large-numeric-literal note on line 32 is a style remark about a correct constant, not a defect.\n\nOne trust note, not a finding: EIP-2612 permit in OpenZeppelin can be front-run by a third party submitting the signed permit first. That only reverts the relayer's call and still sets the intended approval, and no contract in this project wraps permit, so there is no loss.","treeHash":null,"usage":{"cachedInputTokens":680316,"inputTokens":418,"model":"claude-fable-5-1","outputTokens":9619,"runtime":"claude","turns":14,"wallClockMs":161938}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"c722c2e9ac9aa084","findings":[],"hash":"7ded7bb638756791286269da62e4f04f88807210d3f32224230f0b165ef468de","nodeId":"36cf04f9-4155-4e1c-9164-92270efe7af6","outcome":"completed","summary":"Review complete. The findings file is written and validated, and the working tree is unchanged apart from it.\n\n**Result: no defects found in the assigned area.** `.imd-findings.json` holds an empty findings list and a coverage record of ten rows: all six verifier entry points plus four invariant rows, every one `holds` with a reason.\n\n**What I checked, per guide**\n\n- **Access Control.** The token has no owner, minter, pauser, initializer, proxy or delegatecall. Every writer of `_balances` needs the holder's own call or allowance, every writer of `_allowances` needs the owner's call or a valid EIP-712 signature, and a wrong-signer permit reverts without consuming the nonce. The deployer cannot pull or burn from a holder without approval. The constructor hands out no role; it mints the whole supply once to the caller, which is the factory under the launch.\n- **Asymmetry.** Mint and burn mirror each other on supply and balance. approve and permit write the same slot with the same event. transferFrom and burnFrom share the same allowance guard. transfer and transferFrom share the same transfer path with no fee or exemption branch. The only unused storage, the EIP-712 fallback strings, is unused because the name fits a short string.\n- **Trust Gap.** With no privileged actor and no economic formula inside the token, none of the four seams exists. The factory holding all supply at construction is the launch design and a trust assumption, not a bypass.\n\n**Supporting evidence**\n\n- All 18 vendored OpenZeppelin files are byte-identical to upstream v5.0.2, diffed against a fresh clone.\n- The existing 34-test suite passes. A scratch test confirming the deployer cannot burn or pull from a holder, and that a bad permit signature leaves the nonce at zero, passed and was removed.\n- The slither output was empty and the aderyn large-literal note is a style lead only; the literal evaluates to exactly 1e27.\n\n**Not a defect but worth knowing for integrators:** anyone can relay a signed permit early, so a contract that calls permit then transferFrom should tolerate a reverting permit. That is standard ERC-2612 behavior, already noted in the README.","treeHash":null,"usage":{"cachedInputTokens":536937,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":11080,"runtime":"claude","turns":15,"wallClockMs":223665}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"1559912e747bbcd4","findings":[],"hash":"ac236f65693920571a515629dc32bb0f74624fbbe6e8f7fb277fd1a628575b3f","nodeId":"582e8fd3-ea0d-4f4b-a8ab-341024353dc5","outcome":"completed","summary":"The review is complete. The findings file is written and the working tree is unchanged apart from it.\n\n**Result: no defects found in the Execution Trace, Periphery or First Principles areas.** The file `.imd-findings.json` holds an empty findings list and eleven coverage rows, one for each of the six state-changing entry points plus five invariant and periphery rows, all marked `holds`.\n\nWhat I checked:\n\n- **Execution trace.** Every entry point ends in OpenZeppelin's single `_update` writer. I traced approve, transfer, transferFrom, burn, burnFrom and permit through their guards, state writes and revert paths. There are no external calls, no sentinel branches, no partial updates and no payable or fallback surface.\n- **Periphery.** The vendored OpenZeppelin tree under `lib/` was diffed byte-for-byte against the upstream v5.0.2 tag on GitHub and is identical across all 18 files. The runtime opcode scan for DELEGATECALL, CALLCODE and SELFDESTRUCT passes.\n- **First principles.** The supply constant equals exactly 1e27, is minted once to whoever runs the constructor, and can only shrink. No address is hardcoded and nothing is taxed, so the factory, distributor and pool flows in the protected floor test arrive whole.\n- **Edge paths.** A temporary scratch suite confirmed permit deadline boundaries, high-s malleability rejection, nonce handling on failure, domain separator refresh on chain-id change, infinite-allowance burnFrom, zero-amount burns and self-transfer conservation. All ten passed and the scratch directory was removed.\n\nStatic-analysis leads were resolved: Slither reported nothing, and the aderyn large-literal note on line 32 is the correct supply value.\n\nKnown ERC-20 behaviours that are not defects of this code, already documented in the README, are the allowance race on approve, residual allowances after partial spends, and permit front-running by relayers.","treeHash":null,"usage":{"cachedInputTokens":696096,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":11974,"runtime":"claude","turns":24,"wallClockMs":195687}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"357c46e3781993d4","findings":[],"hash":"d2f401829350aa6ed5b798eb4d91304c09c3ce3446e57fcb09b41d6f90746b9b","nodeId":"e6ee8e67-7c34-476b-a105-f281fb25a1e2","outcome":"completed","summary":"The review is complete and the findings file is written. Nothing else is pending.\n\n**Result: no defects found in the Math Precision, Boundary and Numerical Gap area.** The findings file at the repository root holds an empty findings list and 11 coverage rows, one for each of the six listed entry points plus five invariant and boundary rows. The working tree is otherwise unchanged. The scratch test directory and the temporary upstream clone were removed.\n\nWhat I checked, in order of the three guides:\n\n- **Math precision.** The token has no runtime arithmetic of its own. Its only numeric code is the supply constant at `src/CrawlyieldToken.sol:32`, which compiles to exactly 1e27 and matches the brief and the 18-decimal override. The aderyn large-literal lead is style only. The inherited unchecked blocks in the OpenZeppelin transfer path are bounded by that supply, and no division, scaling, downcast or decimal conversion exists anywhere.\n- **Boundary.** The token makes no external call except the ecrecover precompile inside OpenZeppelin's signature recovery, which rejects a zero result. There is no payable path, no bytes decoding, and the only sentinel branches are the zero-address guards, each traced. Max-uint transfer, supply-plus-one transfer, whole-supply self-transfer, whole-supply burn, exact-allowance exhaustion and max-value permit all behave correctly.\n- **Numerical gap.** The one invariant, sum of balances equals total supply minus burns, held across 256 fuzzed sequences of 24 mixed transfer, transferFrom and burn operations. Permit holds at the exact deadline and fails one second later, rejects malleable high-s and zero signatures without consuming a nonce, and the domain separator is rebuilt on a chain-id change so forks cannot replay.\n- **Library integrity.** All 18 vendored OpenZeppelin files are byte-identical to upstream v5.0.2, confirmed by comparing against a fresh clone of that tag.\n\nTools run: forge build, the existing suite (34 passing), a 21-test scratch file (all passing, then deleted), and a file-by-file comparison against upstream OpenZeppelin. Slither and Mythril were not run. The factory, pool manager and distributor flows outside the protected floor tests were not re-audited, since the token taxes nothing and moves exact amounts.","treeHash":null,"usage":{"cachedInputTokens":611811,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":15752,"runtime":"claude","turns":24,"wallClockMs":217303}}],"verification":[{"checks":[{"durationMs":965,"exitCode":0,"name":"build","output":"Compiling 41 files with Solc 0.8.26\nSolc 0.8.26 finished in 889.95ms\nCompiler run successful!\n","passed":true},{"durationMs":96,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 34 tests for test/CrawlyieldToken.t.sol:CrawlyieldTokenTest\n[PASS] testFuzz_burnOnlyShrinksSupply(uint256,uint256) (runs: 256, μ: 132389, ~: 133187)\nLogs:\n  Bound result 12\n  Bound result 8\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 119430, ~: 120253)\nLogs:\n  Bound result 1000000000\n\n[PASS] testFuzz_transferFromRespectsAllowance(uint256,uint256) (runs: 256, μ: 121662, ~: 122602)\nLogs:\n  Bound result 832981239460838220050358882\n  Bound result 42318104829066\n\n[PASS] testFuzz_transferRevertsAboveBalance(uint256,uint256) (runs: 256, μ: 99946, ~: 100384)\nLogs:\n  Bound result 491827059\n  Bound result 540631103317714489071787733\n\n[PASS] test_approveAndTransferFrom() (gas: 226710)\n[PASS] test_approveZeroAddressSpenderReverts() (gas: 32883)\n[PASS] test_burnFromRevertsWithoutAllowance() (gas: 96688)\n[PASS] test_burnFromUsesAllowance() (gas: 181488)\n[PASS] test_burnReducesSupplyAndBalance() (gas: 117746)\n[PASS] test_burnRevertsBeyondBalance() (gas: 34996)\n[PASS] test_constructorEmitsSingleTransferFromZero() (gas: 17265)\n[PASS] test_contractDeployerReceivesSupply() (gas: 375158)\n[PASS] test_deployScriptDeploysSameToken() (gas: 2558812)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 178257)\n[PASS] test_metadata() (gas: 59328)\n[PASS] test_mintsWholeSupplyToDeployerOnce() (gas: 33604)\n[PASS] test_noAdminCallIncreasesSupply() (gas: 699321)\n[PASS] test_noPrivilegedCallMovesOrFreezesAHolder() (gas: 471125)\n[PASS] test_permitRevertsOnReplay() (gas: 132206)\n[PASS] test_permitRevertsOnWrongSigner() (gas: 81644)\n[PASS] test_permitRevertsWhenExpired() (gas: 48367)\n[PASS] test_permitSetsAllowance() (gas: 117098)\n[PASS] test_rejectsEther() (gas: 39683)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 5510020)\n[PASS] test_supplyConstantMatchesBrief() (gas: 17511)\n[PASS] test_transferFromRevertsBeyondAllowance() (gas: 142971)\n[PASS] test_transferFromRevertsBeyondBalanceEvenWithAllowance() (gas: 148447)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 95275)\n[PASS] test_transferMovesExactAmount() (gas: 96008)\n[PASS] test_transferRevertsFromEmptyAccount() (gas: 37782)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 92736)\n[PASS] test_transferToSelfKeepsBalance() (gas: 98729)\n[PASS] test_transferToZeroAddressReverts() (gas: 32958)\n[PASS] test_transferZeroAmountSucceeds() (gas: 47766)\nSuite result: ok. 34 passed; 0 failed; 0 skipped; finished in 13.74ms (52.59ms CPU time)\n\nRan 1 test suite in 14.54ms (13.74ms CPU time): 34 tests passed, 0 failed, 0 skipped (34 total tests)\n","passed":true},{"durationMs":41,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"CrawlyieldToken.approve(address,uint256)\",\"CrawlyieldToken.burn(uint256)\",\"CrawlyieldToken.burnFrom(address,uint256)\",\"CrawlyieldToken.permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\",\"CrawlyieldToken.transfer(address,uint256)\",\"CrawlyieldToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"README.md\":134,\"foundry.toml\":19,\"remappings.txt\":2,\"script/DeployCrawlyieldToken.s.sol\":25,\"src/CrawlyieldToken.sol\":43,\"test/CrawlyieldToken.t.sol\":463},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":963,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":356,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/CrawlyieldToken.sol:32: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"26396482bebd2ea6b369f20da3d609a2c88fa4196d1f6d505fa8a6b152125746","verifiedTreeHash":"931ac94d69f76a6b65d3591252bb9546c8db9108","verifierVersion":"0.1.0+7129bf9d"},{"checks":[{"durationMs":1872,"exitCode":0,"name":"build","output":"Compiling 45 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.79s\nCompiler run successful!\n","passed":true},{"durationMs":14584,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 34 tests for test/CrawlyieldToken.t.sol:CrawlyieldTokenTest\n[PASS] testFuzz_burnOnlyShrinksSupply(uint256,uint256) (runs: 256, μ: 132109, ~: 133145)\nLogs:\n  Bound result 41442644760297912493081339\n  Bound result 23577611915978025704485341\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 119572, ~: 120253)\nLogs:\n  Bound result 0\n\n[PASS] testFuzz_transferFromRespectsAllowance(uint256,uint256) (runs: 256, μ: 122125, ~: 135760)\nLogs:\n  Bound result 41442644760297912493081339\n  Bound result 942813135938179816692853650\n\n[PASS] testFuzz_transferRevertsAboveBalance(uint256,uint256) (runs: 256, μ: 99946, ~: 100384)\nLogs:\n  Bound result 41442644760297912493082396\n  Bound result 452111307386143071009860017\n\n[PASS] test_approveAndTransferFrom() (gas: 226710)\n[PASS] test_approveZeroAddressSpenderReverts() (gas: 32883)\n[PASS] test_burnFromRevertsWithoutAllowance() (gas: 96688)\n[PASS] test_burnFromUsesAllowance() (gas: 181488)\n[PASS] test_burnReducesSupplyAndBalance() (gas: 117746)\n[PASS] test_burnRevertsBeyondBalance() (gas: 34996)\n[PASS] test_constructorEmitsSingleTransferFromZero() (gas: 17265)\n[PASS] test_contractDeployerReceivesSupply() (gas: 375158)\n[PASS] test_deployScriptDeploysSameToken() (gas: 2558812)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 178257)\n[PASS] test_metadata() (gas: 59328)\n[PASS] test_mintsWholeSupplyToDeployerOnce() (gas: 33604)\n[PASS] test_noAdminCallIncreasesSupply() (gas: 699321)\n[PASS] test_noPrivilegedCallMovesOrFreezesAHolder() (gas: 471125)\n[PASS] test_permitRevertsOnReplay() (gas: 132206)\n[PASS] test_permitRevertsOnWrongSigner() (gas: 81644)\n[PASS] test_permitRevertsWhenExpired() (gas: 48367)\n[PASS] test_permitSetsAllowance() (gas: 117098)\n[PASS] test_rejectsEther() (gas: 39683)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 5510020)\n[PASS] test_supplyConstantMatchesBrief() (gas: 17511)\n[PASS] test_transferFromRevertsBeyondAllowance() (gas: 142971)\n[PASS] test_transferFromRevertsBeyondBalanceEvenWithAllowance() (gas: 148447)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 95275)\n[PASS] test_transferMovesExactAmount() (gas: 96008)\n[PASS] test_transferRevertsFromEmptyAccount() (gas: 37782)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 92736)\n[PASS] test_transferToSelfKeepsBalance() (gas: 98729)\n[PASS] test_transferToZeroAddressReverts() (gas: 32958)\n[PASS] test_transferZeroAmountSucceeds() (gas: 47766)\nSuite result: ok. 34 passed; 0 failed; 0 skipped; finished in 61.93ms (130.77ms CPU time)\n\nRan 14 tests for test/CrawlyieldToken.Permit.t.sol:CrawlyieldTokenPermitTest\n[PASS] testFuzz_permitBindsEverySignedField(uint256,uint8) (runs: 1000, μ: 188493, ~: 188025)\nLogs:\n  Bound result 0\n\n[PASS] testFuzz_validPermitChangesOnlyApprovalAndNonceAndCannotReplay(uint256,uint256) (runs: 1000, μ: 215503, ~: 215556)\nLogs:\n  Bound result 127\n\n[PASS] test_chainChangeInvalidatesOldDomainAndAcceptsNewDomain() (gas: 320619)\n[PASS] test_domainMatchesNameVersionChainAndTokenAddress() (gas: 26787)\n[PASS] test_expiredSignaturePreservesNonceAndExistingAllowance() (gas: 112150)\n[PASS] test_highSMalleatedSignatureRejectedAndOriginalRemainsUsable() (gas: 223838)\n[PASS] test_invalidVPreservesNonceAndAllowance() (gas: 137761)\n[PASS] test_malformedSignatureCannotAuthorizeZeroOwner() (gas: 155667)\n[PASS] test_maxValueAndDeadlinePermitSupportsTransferAndBurn() (gas: 225346)\n[PASS] test_signatureCannotBeUsedOnAnotherToken() (gas: 251071)\n[PASS] test_signatureValidAtExactDeadline() (gas: 94404)\n[PASS] test_successivePermitsShareOwnerNonceAcrossSpenders() (gas: 243355)\n[PASS] test_zeroSpenderRejectionDoesNotConsumeNonce() (gas: 241730)\n[PASS] test_zeroValuePermitRevokesAllowance() (gas: 133444)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 73.63ms (138.26ms CPU time)\n\nRan 17 tests for test/CrawlyieldToken.EdgeCases.t.sol:CrawlyieldTokenEdgeCasesTest\n[PASS] testFuzz_delegatedBurnAccountsForExactAmount(uint256,bool) (runs: 1000, μ: 136786, ~: 136718)\nLogs:\n  Bound result 503479076744472042941229206\n\n[PASS] testFuzz_delegatedSelfTransferOnlyConsumesAllowance(uint256) (runs: 1000, μ: 119224, ~: 119171)\nLogs:\n  Bound result 1000000000000000000000000000\n\n[PASS] testFuzz_failedAllowanceCheckPreservesAllState(uint256,uint256,bool) (runs: 1000, μ: 188035, ~: 188451)\nLogs:\n  Bound result 44547492218418\n  Bound result 13747034629988\n\n[PASS] testFuzz_failedBalanceCheckRestoresDelegatedAllowance(uint256,uint256,bool,bool) (runs: 1000, μ: 203839, ~: 204410)\nLogs:\n  Bound result 31725035676\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n\n[PASS] testFuzz_transferRoundTripRestoresBalances(uint256) (runs: 1000, μ: 213772, ~: 213811)\nLogs:\n  Bound result 3748\n\n[PASS] test_approvalReplacesThenRevokesWithoutAffectingOtherSpenders() (gas: 293043)\n[PASS] test_delegatedFullBurnExhaustsSupplyAndAllowance() (gas: 129127)\n[PASS] test_entireSupplyCanBeBurnedOnlyOnce() (gas: 182102)\n[PASS] test_infiniteAllowanceSurvivesRepeatedTransfersAndBurns() (gas: 267649)\n[PASS] test_invalidRecipientRollsBackDelegatedAllowance() (gas: 124671)\n[PASS] test_maxMinusOneAllowanceIsFiniteAcrossTransferAndBurn() (gas: 198747)\n[PASS] test_maxUintSpendRevertsWithoutPanicOrStateChange() (gas: 210411)\n[PASS] test_oneWeiAndWholeSupplyRoundTrips() (gas: 430289)\n[PASS] test_selfTransferStillRequiresSufficientBalance() (gas: 203806)\n[PASS] test_spentAllowanceCannotBeUsedTwiceAcrossTransferAndBurn() (gas: 246900)\n[PASS] test_zeroOperationsFromEmptyHolderEmitEventsAndPreserveSupply() (gas: 206534)\n[PASS] test_zeroRecipientRejectedEvenForZeroValue() (gas: 94881)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 73.65ms (307.70ms CPU time)\n\nRan 2 tests for test/CrawlyieldToken.Invariant.t.sol:CrawlyieldTokenInvariantTest\n[PASS]\nCrawlyieldTokenInvariantTest invariants:\n[PASS] invariant_allowancesAndNoncesMatchAuthorizations\n[PASS] invariant_eachBalanceMatchesAuthorizedMovements\n[PASS] invariant_metadataAndMintCapRemainUnchanged\n[PASS] invariant_supplyEqualsBalancesAndOnlyExplicitBurnsReduceIt\n CrawlyieldTokenInvariantTest invariants (runs: 256, calls: 32768, reverts: 0)\n\n╭-------------------+--------------------------+-------+---------+----------╮\n| Contract          | Selector                 | Calls | Reverts | Discards |\n+===========================================================================+\n| CrawlyieldHandler | approve                  | 2768  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | burn                     | 2687  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | burnFrom                 | 2673  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | permit                   | 2755  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | permitThenRejectReplay   | 2683  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | rejectDelegatedOverspend | 2692  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | rejectOverBalance        | 2749  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | rejectWrongSigner        | 2816  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | rejectZeroRecipient      | 2721  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | rejectZeroSpender        | 2764  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | transfer                 | 2714  | 0       | 0        |\n|-------------------+--------------------------+-------+---------+----------|\n| CrawlyieldHandler | transferFrom             | 2746  | 0       | 0        |\n╰-------------------+--------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 4201487925773290505348213183302522014933094189953521827260900914656\n  Bound result 141707413351064088192655913\n  Bound result 115792089237316195423570985008687907853269984665640455746870935072004893563660\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007914129639936\n  Bound result 28\n  Bound result 56051052099872946312378806\n  Bound result 16559806852020653425776248\n  Bound result 19083582026307337472900673\n  Bound result 12464013884949436233093976\n  Bound result 115792089237316195423570985008687907853269984665640172332044232943824936984062\n  Bound result 164057638365630673936197088\n  Bound result 100028130995403833769069319\n  Bound result 803\n  Bound result 0\n  Bound result 6\n  Bound result 259936006511043264299399067\n  Bound result 24\n  Bound result 10000000000000000000\n  Bound result 10718\n  Bound result 1121375070517145779269893662682373360867147324447685857\n  Bound result 3431\n  Bound result 115792089237316195423570985008687907853269984665640532296181739392556919879550\n  Bound result 31743275844616990124186696\n  Bound result 1335\n  Bound result 135677968913324078508420019\n  Bound result 115792089237316195423570985008687907853269984665640532296181739390923005456022\n  Bound result 15075146188\n  Bound result 95\n  Bound result 0\n  Bound result 0\n  Bound result 18\n  Bound result 1553\n  Bound result 115792089237316195423570985008687907853269984665640532296181739390923005454590\n  Bound result 0\n  Bound result 3\n  Bound result 760194488952514785591474170\n  Bound result 20\n  Bound result 115792089237316195423570985008687907853269984665640530881505061252285107576870\n\n[PASS] test_handlerExercisesEveryActionWithMeaningfulStateChanges() (gas: 2134083)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 14.50s (14.50s CPU time)\n\nRan 4 test suites in 14.50s (14.71s CPU time): 67 tests passed, 0 failed, 0 skipped (67 total tests)\n","passed":true},{"durationMs":74,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"CrawlyieldToken.approve(address,uint256)\",\"CrawlyieldToken.burn(uint256)\",\"CrawlyieldToken.burnFrom(address,uint256)\",\"CrawlyieldToken.permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\",\"CrawlyieldToken.transfer(address,uint256)\",\"CrawlyieldToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"README.md\":134,\"foundry.toml\":19,\"remappings.txt\":2,\"script/DeployCrawlyieldToken.s.sol\":25,\"src/CrawlyieldToken.sol\":43,\"test/CrawlyieldToken.EdgeCases.t.sol\":297,\"test/CrawlyieldToken.Invariant.t.sol\":111,\"test/CrawlyieldToken.Permit.t.sol\":278,\"test/CrawlyieldToken.t.sol\":463,\"test/README.md\":45,\"test/handlers/CrawlyieldHandler.sol\":254},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"2e3a33d2ef66fb61792b35eb00485c30738f8f8a6a0377504d0ddf537a13f9d1","verifiedTreeHash":"aa87cb166b6e9dbcc28719b5411aaee15de649fc","verifierVersion":"0.1.0+7129bf9d"},{"checks":[{"durationMs":970,"exitCode":0,"name":"build","output":"Compiling 41 files with Solc 0.8.26\nSolc 0.8.26 finished in 894.12ms\nCompiler run successful!\n","passed":true},{"durationMs":110,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 34 tests for test/CrawlyieldToken.t.sol:CrawlyieldTokenTest\n[PASS] testFuzz_burnOnlyShrinksSupply(uint256,uint256) (runs: 256, μ: 132389, ~: 133187)\nLogs:\n  Bound result 12\n  Bound result 8\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 119430, ~: 120253)\nLogs:\n  Bound result 16716\n\n[PASS] testFuzz_transferFromRespectsAllowance(uint256,uint256) (runs: 256, μ: 121662, ~: 122602)\nLogs:\n  Bound result 12\n  Bound result 23070\n\n[PASS] testFuzz_transferRevertsAboveBalance(uint256,uint256) (runs: 256, μ: 99946, ~: 100384)\nLogs:\n  Bound result 832981239460838220050375027\n  Bound result 835093802695851217852953931\n\n[PASS] test_approveAndTransferFrom() (gas: 226710)\n[PASS] test_approveZeroAddressSpenderReverts() (gas: 32883)\n[PASS] test_burnFromRevertsWithoutAllowance() (gas: 96688)\n[PASS] test_burnFromUsesAllowance() (gas: 181488)\n[PASS] test_burnReducesSupplyAndBalance() (gas: 117746)\n[PASS] test_burnRevertsBeyondBalance() (gas: 34996)\n[PASS] test_constructorEmitsSingleTransferFromZero() (gas: 17265)\n[PASS] test_contractDeployerReceivesSupply() (gas: 375158)\n[PASS] test_deployScriptDeploysSameToken() (gas: 2558812)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 178257)\n[PASS] test_metadata() (gas: 59328)\n[PASS] test_mintsWholeSupplyToDeployerOnce() (gas: 33604)\n[PASS] test_noAdminCallIncreasesSupply() (gas: 699321)\n[PASS] test_noPrivilegedCallMovesOrFreezesAHolder() (gas: 471125)\n[PASS] test_permitRevertsOnReplay() (gas: 132206)\n[PASS] test_permitRevertsOnWrongSigner() (gas: 81644)\n[PASS] test_permitRevertsWhenExpired() (gas: 48367)\n[PASS] test_permitSetsAllowance() (gas: 117098)\n[PASS] test_rejectsEther() (gas: 39683)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 5510020)\n[PASS] test_supplyConstantMatchesBrief() (gas: 17511)\n[PASS] test_transferFromRevertsBeyondAllowance() (gas: 142971)\n[PASS] test_transferFromRevertsBeyondBalanceEvenWithAllowance() (gas: 148447)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 95275)\n[PASS] test_transferMovesExactAmount() (gas: 96008)\n[PASS] test_transferRevertsFromEmptyAccount() (gas: 37782)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 92736)\n[PASS] test_transferToSelfKeepsBalance() (gas: 98729)\n[PASS] test_transferToZeroAddressReverts() (gas: 32958)\n[PASS] test_transferZeroAmountSucceeds() (gas: 47766)\nSuite result: ok. 34 passed; 0 failed; 0 skipped; finished in 25.71ms (81.55ms CPU time)\n\nRan 1 test suite in 26.22ms (25.71ms CPU time): 34 tests passed, 0 failed, 0 skipped (34 total tests)\n","passed":true},{"durationMs":32,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"CrawlyieldToken.approve(address,uint256)\",\"CrawlyieldToken.burn(uint256)\",\"CrawlyieldToken.burnFrom(address,uint256)\",\"CrawlyieldToken.permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\",\"CrawlyieldToken.transfer(address,uint256)\",\"CrawlyieldToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"README.md\":134,\"foundry.toml\":19,\"launch.json\":24,\"remappings.txt\":2,\"script/DeployCrawlyieldToken.s.sol\":25,\"src/CrawlyieldToken.sol\":43,\"test/CrawlyieldToken.t.sol\":463},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"41081cb7aacd9b07d4184222467b116ef643bfbf28783160b836dd603a7f9591","verifiedTreeHash":"4cd7370fbc77ebbffe49fa06b2fd13b3e654ecbe","verifierVersion":"0.1.0+7129bf9d"}]}