{"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":"25b9b0c5-9d55-41f1-8427-e2ed79227f22","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"f7204ecbf5aa08b99d7305a81997175f635fa89d678ae2f93f8a1ddc7b1ede61","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":"80cbba196605e7cba3da0b6db4de1ef3e679f59cc06dc401a78bd7fa26bfde6d","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":"090b9517a4ced1ddc122eacaa335c49a52acf5eecb5d1b54c3c5ae30fc011493","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"720ad87c3f0de17de456bedcd543b14abd6f2b05da84f7b57aceb453c95e2606","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":"ffcf55ee0a7b678a7d0252fbd7cd78746e4e495b8016f4b07b32fdaf69178fe3","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":"2d0e1fc6afe3987167bdc18b4880e2768b9a531510daae7bc001a3446952ab3e","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"47167655a03bf5c1100596e3e58b08a282174889bef8f292adc9ed3025c2f160","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"6ea8182a06b86fc9fe0a226ceced122a10a4f7093545b2d8558eebcde5ddc562","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: McLovin.id (MCLOVIN).\nToken name: McLovin.id\nToken symbol: MCLOVIN\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"b89918f642de03209a45330f1b8fb7c37340b5b26c33e44f8b2d03e354daa167","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"25b9b0c5-9d55-41f1-8427-e2ed79227f22","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-740-mclovin-id"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51352","feedbackHash":"6ef6270c8c47de36df95018d7e3945454277645783d39a5badfe25182560b954","nodeKey":"audit_economics","submissionHash":"f7204ecbf5aa08b99d7305a81997175f635fa89d678ae2f93f8a1ddc7b1ede61","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51566","feedbackHash":"9c6aa4aef25e73e389d8595085fbc474c4ff68bba2ba367da9a1349a28cea828","nodeKey":"audit_flow","submissionHash":"80cbba196605e7cba3da0b6db4de1ef3e679f59cc06dc401a78bd7fa26bfde6d","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51083","feedbackHash":"bd8a8691a5441616648913b96bcc047ff8a1392cb19fe9cdfccb356b80b55d30","nodeKey":"audit_judge","submissionHash":"090b9517a4ced1ddc122eacaa335c49a52acf5eecb5d1b54c3c5ae30fc011493","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51139","feedbackHash":"1e5debaf8e4ee632c9ff243a894fb99c5379f1682de2b57a08d497b3b991c840","nodeKey":"audit_math","submissionHash":"720ad87c3f0de17de456bedcd543b14abd6f2b05da84f7b57aceb453c95e2606","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51319","feedbackHash":"0b95a22c43bff437c527c6d0912ae20ef13035277344d42b7af6c67623c1a570","nodeKey":"audit_permissions","submissionHash":"ffcf55ee0a7b678a7d0252fbd7cd78746e4e495b8016f4b07b32fdaf69178fe3","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51540","feedbackHash":"6743e502ab04abb2b5351fd7cb0902fa8137b8f65b83aaad421614951846ff22","nodeKey":"build_contract_project","submissionHash":"2d0e1fc6afe3987167bdc18b4880e2768b9a531510daae7bc001a3446952ab3e","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51512","feedbackHash":"bf59013dac3c5b688205105eb0aca3512503621eb41385b5bcb93eb081485712","nodeKey":"manifest","submissionHash":"47167655a03bf5c1100596e3e58b08a282174889bef8f292adc9ed3025c2f160","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51146","feedbackHash":"aa5ec83f7db3863f6c154aa54d9e39b89301797261125975674de0dd86c32c34","nodeKey":"write_foundry_tests","submissionHash":"6ea8182a06b86fc9fe0a226ceced122a10a4f7093545b2d8558eebcde5ddc562","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"1bc37dc079118d79e2384ec4eaeeffca048fcdb8af2db393b13ec29941246e0f","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"dc7103e773ea194a","findings":[],"hash":"090b9517a4ced1ddc122eacaa335c49a52acf5eecb5d1b54c3c5ae30fc011493","nodeId":"d3226cf1-c948-418e-b957-71c887e41813","outcome":"completed","summary":"The review is complete. The findings file holds zero findings and a full coverage record, and nothing else in the tree changed.\n\n**Verdict: no defects.** The token is an unmodified OpenZeppelin v5.2.0 ERC20 with a no-argument constructor that mints exactly 1e27 minor units to the deployer. I confirmed that all five specialist reports and the independent tester were right to return empty.\n\nWhat I checked:\n\n- **Entry points.** All three state-changing functions (approve, transfer, transferFrom) are inherited unchanged. I traced each through the vendored library: zero-address reverts, balance and allowance checks, the infinite-allowance path, and exact-amount accounting with no fee, hook or external call.\n- **Launch floor.** The protected test cannot run here because its Uniswap v4 dependencies are not in the tree, but every assertion it makes was traced against source and compiled artifacts: supply equals the manifest's figure and goes to msg.sender, decimals are 18, no privileged selectors exist, supply cannot grow, and no exemptions are needed because no transfer rule exists.\n- **Bytecode.** A proper disassembly of the compiled runtime shows no DELEGATECALL, CALLCODE, SELFDESTRUCT, CREATE or external CALL.\n- **Vendored library.** The five OpenZeppelin files were read line by line against upstream v5.2.0 and are untampered plain files, not submodules.\n- **Static-analysis leads.** Slither reported nothing. The aderyn large-literal note is style only and was dropped.\n- **Existing tests.** Build and all 60 repository tests pass, including the invariant suite.\n\nThe manifest's provenance price was also recomputed and matches to the last digit of rounding. No test under test/scratch was needed, since no finding reached medium or above.","treeHash":null,"usage":{"cachedInputTokens":436134,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":8695,"runtime":"claude","turns":20,"wallClockMs":159181}},{"artifacts":[],"attempt":1,"bundleHash":"64100b8ae9e16e2141180cddf4410cb4ce6c3eaed6a10b1432df168ba9a8966d","device":"589ef002581a5371","findings":[],"hash":"2d0e1fc6afe3987167bdc18b4880e2768b9a531510daae7bc001a3446952ab3e","nodeId":"31014e8b-dc02-4526-8720-ce8370342377","outcome":"completed","summary":"The deliverable is complete and committed on `main` as commit `aa89dad`.\n\n**What was built**\n\n- `src/McLovinId.sol`: an OpenZeppelin v5.2.0 ERC-20 named McLovin.id with symbol MCLOVIN and 18 decimals. The constructor takes no arguments and mints the whole supply to the deployer once. There is no owner, mint, burn, pause, blocklist, fee, or transfer hook, so the supply can never grow and no privileged party can move or freeze a holder.\n- `script/DeployMcLovinId.s.sol`: a deploy script whose `deploy()` function is called directly by tests. The `run()` wrapper only broadcasts and reads nothing from the environment.\n- `test/McLovinId.t.sol` and `test/DeployMcLovinId.t.sol`: 29 tests covering metadata, supply, the constructor mint event, CREATE2 deployment from a contract deployer, transfer and allowance success paths, revert paths with the exact ERC-6093 errors, probes for absent mint and admin selectors, and three fuzz tests for supply conservation and allowance enforcement.\n- `foundry.toml`: solc pinned to 0.8.26, `bytecode_hash = \"none\"`, ffi off, no filesystem permissions.\n- `lib/`: forge-std v1.9.7 and the five OpenZeppelin files the token imports, vendored as plain files with their licences. No submodules.\n- `README.md`: parameters, manifest values, assumptions, deployment paths, operational responsibilities, and the security checklist review.\n\n**Verification results**\n\n| Check | Result |\n|-------|--------|\n| `forge build` | compiles with solc 0.8.26 |\n| `forge test` | 29 passed, 0 failed, also with an empty environment |\n| `forge fmt --check` | clean repo-wide |\n| Scratch mirror of the protected harness | 4 passed: swarm share whole, no supply growth, no freeze, no DELEGATECALL/CALLCODE/SELFDESTRUCT in runtime |\n\nThe total supply in minor units for the manifest is 1000000000000000000000000000, with empty constructor arguments.\n\n**Open items for the network's deployer**\n\n- Explorer verification after deployment with the same compiler settings.\n- Slither and Mythril did not run because they are not installed here. Only the forge tools ran.\n- The pool, economics, and paired-currency manifest entries come from the job and were not decided in this task.","treeHash":"595493931c19b7f42a5edc2e1e1080196091d797","usage":{"cachedInputTokens":505246,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":19279,"runtime":"claude","turns":21,"wallClockMs":229168}},{"artifacts":[],"attempt":1,"bundleHash":"b3c89b98b637a017e85cd5d9d1184cd0d86a3b23ab7253cc56df7dbcf5d2e2bd","device":"8c9c4986ca881107","findings":[],"hash":"47167655a03bf5c1100596e3e58b08a282174889bef8f292adc9ed3025c2f160","nodeId":"ea1a521b-d3b4-4fed-8b0d-13b53a0f6848","outcome":"completed","summary":"`launch.json` is written and verified. Only that file changed in the working tree.\n\n**What the manifest says**\n\n- **Token**: `McLovinId`, name McLovin.id, symbol MCLOVIN, 18 decimals, empty constructorArgs, totalSupply of 1e27 minor units. This matches the accepted `src/McLovinId.sol`, whose argument-less constructor mints that exact amount once to msg.sender.\n- **Contracts**: empty. The accepted tree contains only the token, its deploy script and tests, so nothing else is named.\n- **Pool**: pairedCurrency is the job's pair token, fee 3000 with tickSpacing 60. initialPrice is the derived sqrtPriceX96 assuming the token sorts as currency0. The notes state that assumption and give the inverse value, since the CREATE2 token address is not known yet and the field is provenance only.\n- **Economics**: copied verbatim from the job.\n- **Notes**: describe the token's behavior, compiler settings, the price derivation and the absence of application contracts, at 1792 characters.\n\n**Checks run**\n\n- `forge build` and `forge test` on the accepted tree: 29 tests pass.\n- Schema validation with the canonical LaunchManifest JSON Schema via Python jsonschema: valid. Economics equality, fee tier, paired currency, supply string and notes length were also asserted.\n- A scratch Foundry test deployed the token and confirmed name, symbol, decimals, total supply and that the deployer holds the whole supply.\n\nOne judgment call worth noting: the fee tier was not specified by the job, so I chose 0.3% with the standard tick spacing of 60. Any of the three allowed tiers would be schema-valid if the requester prefers another.","treeHash":"019966075bb671ed84c4d1ebdd6fcdcdaf9ffa88","usage":{"cachedInputTokens":235100,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":6062,"runtime":"claude","turns":11,"wallClockMs":79232}},{"artifacts":[],"attempt":1,"bundleHash":"73137d37298ab50e897b7ca52227ec1f8f414df60aaa1c4d5c551c08c3ff048d","device":"824e6de6196c686f","findings":[],"hash":"6ea8182a06b86fc9fe0a226ceced122a10a4f7093545b2d8558eebcde5ddc562","nodeId":"73b147e1-4864-4307-9521-05d409a57389","outcome":"completed","summary":"Done. The suite passes and the working tree contains only the two new test files under the allowed path.\n\n**Outcome**\n\nThe token is a plain OpenZeppelin v5 ERC-20 with a one-time constructor mint and no admin surface. I found no defect, so the findings file at the repository root holds an empty list. The full run passes with 60 tests across four suites, including the invariant suite at 256 runs by 64 calls, and the mutation check below shows the invariants are not vacuous.\n\n**What I added**\n\n- `test/McLovinId.invariant.t.sol` holds a handler with six actors, one of them a contract, that drives transfer, approve and transferFrom through both clamped handlers (amounts bounded by balance and allowance) and unclamped handlers (raw recipients and amounts). Each handler asserts the exact balance and allowance deltas on success, or the exact ERC-6093 error on failure, so the suite runs with fail-on-revert. Invariants check fixed supply, that balances over every address that ever held tokens sum to the supply, that balances and allowances match an independent ledger model, that no holder exceeds the supply, and that metadata and the ether balance stay fixed. Two grounding tests run a scripted sequence through the handler and try fourteen admin-shaped selectors from every actor.\n- `test/McLovinIdEdge.t.sol` covers the launch flows the protected harness judges: CREATE2 address prediction from the creation code alone, same-salt reuse failing, swarm share and claims arriving whole, the factory having no privileged hand after launch, the bytecode scan for DELEGATECALL, CALLCODE and SELFDESTRUCT, and identical runtime across deployments. It also pins allowance edge semantics (overwrite not add, exact spend to zero, max-minus-one decrementing, self transferFrom needing a self-allowance, no Approval event on transferFrom), unknown selectors reverting, ether rejected on any path, and fuzzed round-trip, order-independence, additivity, idempotence and isolation properties.\n\n**Grounding**\n\nA scratch mutant that burns one wei on every transfer failed the handler immediately with \"recipient credited wrong amount\", confirming the suite would catch a fee or skim. The existing script test was wrong about who receives the supply under a broadcast: the broadcast signer does, not the script contract, and the new test asserts that from the recorded mint event.\n\n**Left as is**\n\nThe earlier contributors' two test files are untouched. Tokens sent to the token's own address are accepted and unrecoverable, which is standard ERC-20 behaviour and is pinned by a test rather than reported.","treeHash":"14a83df326ea407267625dd78f04969e8b4d6a7b","usage":{"cachedInputTokens":1399539,"inputTokens":610,"model":"claude-fable-5-1","outputTokens":36026,"runtime":"claude","turns":35,"wallClockMs":493086}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8d26cb1a4eaeb75a","findings":[],"hash":"720ad87c3f0de17de456bedcd543b14abd6f2b05da84f7b57aceb453c95e2606","nodeId":"37c4e3d8-8a56-4de6-b14a-e104ef5ab498","outcome":"completed","summary":"The review is complete. The findings file is written and valid, the scratch test is removed, and the working tree holds only the required output and the pinned read inputs.\n\n**Result: no defects in the Math Precision, Boundary or Numerical Gap areas.** The findings file at `.imd-findings.json` has an empty findings list and seven coverage rows, all `holds`.\n\n**What was checked**\n\n- **Math Precision.** The token has no division, cast, fee, or scale conversion. The supply constant is a compile-time product equal to exactly 10^27, matching the 18 decimals and the manifest supply. It fits in int128, so Uniswap v4 balance deltas accept the whole supply. The only arithmetic is OpenZeppelin v5.2.0's, where every unchecked subtraction is preceded by an explicit bound check.\n- **Boundary.** No external calls, no payable function, no receive or fallback. The runtime disassembly contains no CALL, DELEGATECALL, CALLCODE, STATICCALL, CREATE or SELFDESTRUCT. Empty calldata, unknown selectors and value sent to a non-payable function all revert. Zero-address sender and receiver are rejected on every path, including zero-value calls, so no burn or mint is reachable after construction.\n- **Numerical Gap.** The invariant that total supply equals the sum of balances held under a randomized multi-step transfer fuzz. The launch-flow divisions for the swarm share and every pool share from 1 to 9000 basis points divide 10^27 exactly, so no flow arrives short through truncation.\n- **Static-analysis lead.** The aderyn large-numeric-literal line at `src/McLovinId.sol:16` is a readability lint. The value is correct and is not a defect.\n\n**Verification run.** The existing 29 project tests pass. A temporary probe under test/scratch exercised max-uint inputs, self-transferFrom, infinite and near-infinite allowances, zero-sender and zero-receiver paths, fallback rejection, and the sum-of-balances invariant. All passed except one whose expectation I wrote wrongly: OpenZeppelin rejects a zero-value transferFrom from the zero address with a different custom error, and the revert still protects supply. The probe was deleted afterwards.\n\n**Out of this area.** Vendored OpenZeppelin files match upstream v5.2.0 text, there are no git submodules, and the only trust assumption is that the deployer, the factory in a launch, holds the full supply until distribution. The standard ERC-20 approve race applies as it does to every plain ERC-20 and is documented in the project README.","treeHash":null,"usage":{"cachedInputTokens":591132,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":11875,"runtime":"claude","turns":22,"wallClockMs":181938}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"d0653dc91b6e2259","findings":[],"hash":"80cbba196605e7cba3da0b6db4de1ef3e679f59cc06dc401a78bd7fa26bfde6d","nodeId":"eceddb02-9f98-41a1-bdb7-8621032b2237","outcome":"completed","summary":"The review is complete. No defects survived verification, and the findings file is written with an empty findings list and a full coverage record.\n\n**Outcome.** The token is OpenZeppelin ERC20 v5.2.0 plus a constructor that mints 1e27 minor units to the deployer. Within my area (Execution Trace, Periphery, First Principles) every path I traced behaves as intended, so `.imd-findings.json` holds zero findings and ten coverage rows, all `holds`. No tracked file was changed; the scratch test under `test/scratch/` is ignored by git.\n\n**What I verified**\n\n- **All three entry points** traced end to end. `approve` overwrites the allowance and refuses a zero spender. `transfer` moves the exact amount, refuses a zero receiver, and reverts on insufficient balance. `transferFrom` spends the allowance first, leaves an infinite allowance untouched, and unwinds fully if the transfer leg reverts, so there is no partial state.\n- **Supply and constructor.** The constant evaluates to exactly 1e27 at compile time. CREATE2 from a contract deployer leaves the whole supply on that contract, matching the factory flow the protected test exercises. No constructor arguments, no roles handed out.\n- **Hidden surface.** The compiled ABI is exactly the ERC-20 surface plus two constant getters. No receive or fallback, no mint, burn, pause, blacklist, permit or upgrade. Ether is refused. The deployed bytecode contains no CALL, STATICCALL, CREATE, CREATE2, DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **Periphery.** Read the vendored ERC20, Context, IERC20, IERC20Metadata and ERC-6093 files in full. They match upstream, with standard event and error signatures, and are plain files rather than a submodule. The deploy script reads no environment and is not on the launch path.\n- **Static-analysis lead.** The aderyn large-numeric-literal note is cosmetic. The literal already uses digit separators and the derived supply is confirmed by test.\n\n**Checks run**\n\n| Check | Result |\n|---|---|\n| `forge build` (solc 0.8.26, offline) | ok |\n| project tests | 29 passed |\n| scratch edge-path tests, including fuzz | 10 passed |\n\n**Not reached.** No launch manifest exists in the tree yet, so I could not compare it against the token. The README's stated manifest values do match the contract. The pool seed and swap flows run only inside the protected harness with its environment and were not re-executed here. Slither and Mythril were not available, as the project README also states.","treeHash":null,"usage":{"cachedInputTokens":790323,"inputTokens":386,"model":"claude-fable-5-1","outputTokens":13968,"runtime":"claude","turns":20,"wallClockMs":192211}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8f08088e7a7f557f","findings":[],"hash":"f7204ecbf5aa08b99d7305a81997175f635fa89d678ae2f93f8a1ddc7b1ede61","nodeId":"a395b3e4-e54f-4f7c-92fd-659892124f11","outcome":"completed","summary":"The review is complete. The findings file is at the repository root, the scratch test directory is removed, and the working tree has no tracked changes.\n\n**Result: no defects found in the economics area.** The token is OpenZeppelin v5.2.0 `ERC20` with a single constructor mint and nothing else.\n\nWhat I checked, against the Economic Security, Invariant and Flow Gap guides:\n\n- **Supply and mint.** The constructor mints exactly 1e27 minor units to the creator and there is no mint, burn, burnFrom or transfer-to-zero path, so supply can neither grow nor shrink. A CREATE2 deploy from a contract leaves that contract holding the whole supply, as the factory will.\n- **Launch flows.** A probe factory moved the swarm share to a distributor, approved and let a pool-manager probe pull the seed, forwarded the remainder, then ran claims and a buy and sell. Every leg arrived whole, the residual allowance was zero, and balances summed to the supply across 2000 fuzz runs of the pool share.\n- **Token behaviour.** No fee, rebasing, pause, blocklist, hooks or callbacks. Transfers to and approvals of the zero address revert. Zero-value and self-transfers are no-ops. Nobody, including the deployer, can move a holder's balance without allowance.\n- **Dependencies and bytecode.** The ABI exposes only approve, transfer and transferFrom as state-changing, with no payable, receive or fallback. The compiled runtime and creation code contain no CALL, STATICCALL, DELEGATECALL, CALLCODE, SELFDESTRUCT or CREATE opcodes. Plain ether and ether sent with a call both revert.\n- **Vendored library.** All five OpenZeppelin files are byte-identical to upstream v5.2.0.\n\nThe two static-analysis and checklist leads resolved as non-defects: the large numeric literal computes exactly 1e27, and the ERC-20 allowance race is standard semantics the README already documents. The coverage record marks all three entry points and five invariants as holding.\n\nOne item outside my area for the judge: the manifest has not been written yet, and this token takes no constructor arguments, so the manifest's constructorArgs must be an empty list and totalSupply must be the 28-digit value in the README.","treeHash":null,"usage":{"cachedInputTokens":1354927,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":13304,"runtime":"claude","turns":29,"wallClockMs":198512}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8eebc53449bafe7b","findings":[],"hash":"ffcf55ee0a7b678a7d0252fbd7cd78746e4e495b8016f4b07b32fdaf69178fe3","nodeId":"19678ec0-afbc-48bf-bf23-df8b205190ed","outcome":"completed","summary":"The review is complete. The findings file is in place at the repository root, ignored by git as the harness intends, and no tracked file was changed.\n\n**Result: no defects found in the Access Control, Trust Gap or Asymmetry areas.** The findings list in `.imd-findings.json` is empty, with eight coverage rows: the three listed entry points plus five invariants and the one static-analysis lead, all marked `holds`.\n\n**What I verified, with evidence:**\n- **Library integrity.** The five vendored OpenZeppelin files are byte-identical to upstream v5.2.0, confirmed by fetching and diffing each one. A tampered `_msgSender` or `_update` was the main place a backdoor could hide, and there is none.\n- **Permission model.** The constructor hands out no role, sets no immutables, and the compiled ABI exposes exactly three state-changing functions plus eight views. Fuzzing random selectors and empty calldata confirms there is no fallback, receive, or hidden entry point.\n- **Deployer has no power over holders.** A factory-style CREATE2 deployer receives the whole supply but a `transferFrom` from a holder it does not have allowance for reverts with the standard insufficient-allowance error. Pause, blacklist, freeze, burnFrom, mint and upgrade selectors do not exist.\n- **Asymmetry pairs.** The approve and transferFrom pair was fuzzed over 256 runs and the allowance is written only by approve and consumed only by transferFrom. The transfer and transferFrom paths write the balance slots identically.\n- **Launch flows.** Factory to distributor, distributor to claimant, factory to pool, and pool to trader and back each move exactly the stated amount with total supply constant.\n- **Runtime opcodes.** A scan of the deployed bytecode with the protected floor's algorithm finds no DELEGATECALL, CALLCODE, SELFDESTRUCT, CREATE or CALL.\n- **Static-analysis lead.** The aderyn large-literal warning on line 16 is a style lint. The literal is underscore-grouped and the existing test checks the scaled value equals 1e27.\n\n**Trust assumptions, not defects.** Whoever sends the creation transaction holds the entire supply afterward. In the launch that is the factory, whose distribution is governed by the launch policy, not by this token. There is no on-chain mitigation and none was requested.\n\n**Coverage limits.** Economic and periphery guides outside my assigned area were not run as separate passes. The scratch test that backs these claims lives in test/scratch, which is gitignored and not part of the submission.","treeHash":null,"usage":{"cachedInputTokens":563846,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":13046,"runtime":"claude","turns":24,"wallClockMs":183152}}],"verification":[{"checks":[{"durationMs":1175,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.03s\nCompiler run successful!\n","passed":true},{"durationMs":88,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/DeployMcLovinId.t.sol:DeployMcLovinIdTest\n[PASS] test_deployMintsWholeSupplyToTheScriptCaller() (gas: 1343980)\n[PASS] test_deployTwiceGivesIndependentTokens() (gas: 1848695)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 898.19µs (603.71µs CPU time)\n\nRan 27 tests for test/McLovinId.t.sol:McLovinIdTest\n[PASS] testFuzz_cannotSpendMoreThanHeld(uint256,uint256) (runs: 256, μ: 99351, ~: 99999)\nLogs:\n  Bound result 264\n  Bound result 11651\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 95481, ~: 97819)\nLogs:\n  Bound result 56977\n\n[PASS] testFuzz_transferFromRespectsAllowance(uint256,uint256) (runs: 256, μ: 120826, ~: 121874)\nLogs:\n  Bound result 7577\n  Bound result 965\n\n[PASS] test_approveAndTransferFrom() (gas: 171131)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 22159)\n[PASS] test_contractDeployerViaCreate2ReceivesWholeSupply() (gas: 208635)\n[PASS] test_decimals() (gas: 8504)\n[PASS] test_holderCannotBeMovedByDeployer() (gas: 97657)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 122725)\n[PASS] test_name() (gas: 12027)\n[PASS] test_noMintFunctionExists() (gas: 219921)\n[PASS] test_noOwnerOrPrivilegedControls() (gas: 202297)\n[PASS] test_rejectsPlainEther() (gas: 38779)\n[PASS] test_revert_approveZeroSpender() (gas: 32860)\n[PASS] test_revert_transferFromExceedsAllowance() (gas: 87358)\n[PASS] test_revert_transferFromExceedsBalance() (gas: 90969)\n[PASS] test_revert_transferFromWithoutAllowance() (gas: 46975)\n[PASS] test_revert_transferInsufficientBalance() (gas: 37736)\n[PASS] test_revert_transferMoreThanSupply() (gas: 37960)\n[PASS] test_revert_transferToZeroAddress() (gas: 32986)\n[PASS] test_symbol() (gas: 12048)\n[PASS] test_totalSupplyIsOneBillionTokens() (gas: 50420)\n[PASS] test_transferMovesExactAmount() (gas: 95825)\n[PASS] test_transferToSelfKeepsBalance() (gas: 43674)\n[PASS] test_transferWholeBalance() (gas: 78144)\n[PASS] test_transferZeroAmountSucceeds() (gas: 47583)\n[PASS] test_wholeSupplyMintedToDeployer() (gas: 12855)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 7.95ms (23.11ms CPU time)\n\nRan 2 test suites in 9.25ms (8.85ms CPU time): 29 tests passed, 0 failed, 0 skipped (29 total tests)\n","passed":true},{"durationMs":36,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"McLovinId.approve(address,uint256)\",\"McLovinId.transfer(address,uint256)\",\"McLovinId.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":6,\"README.md\":130,\"foundry.toml\":23,\"script/DeployMcLovinId.s.sol\":25,\"src/McLovinId.sol\":25,\"test/DeployMcLovinId.t.sol\":32,\"test/McLovinId.t.sol\":272},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":585,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":290,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/McLovinId.sol:16: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"2d0e1fc6afe3987167bdc18b4880e2768b9a531510daae7bc001a3446952ab3e","verifiedTreeHash":"595493931c19b7f42a5edc2e1e1080196091d797","verifierVersion":"0.1.0+f8d984f2"},{"checks":[{"durationMs":1009,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 892.02ms\nCompiler run successful!\n","passed":true},{"durationMs":101,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/DeployMcLovinId.t.sol:DeployMcLovinIdTest\n[PASS] test_deployMintsWholeSupplyToTheScriptCaller() (gas: 1343980)\n[PASS] test_deployTwiceGivesIndependentTokens() (gas: 1848695)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 916.87µs (508.63µs CPU time)\n\nRan 27 tests for test/McLovinId.t.sol:McLovinIdTest\n[PASS] testFuzz_cannotSpendMoreThanHeld(uint256,uint256) (runs: 256, μ: 98841, ~: 99975)\nLogs:\n  Bound result 2\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 94996, ~: 97777)\nLogs:\n  Bound result 55\n\n[PASS] testFuzz_transferFromRespectsAllowance(uint256,uint256) (runs: 256, μ: 118892, ~: 95605)\nLogs:\n  Bound result 19156\n  Bound result 200000000000000000000\n\n[PASS] test_approveAndTransferFrom() (gas: 171131)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 22159)\n[PASS] test_contractDeployerViaCreate2ReceivesWholeSupply() (gas: 208635)\n[PASS] test_decimals() (gas: 8504)\n[PASS] test_holderCannotBeMovedByDeployer() (gas: 97657)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 122725)\n[PASS] test_name() (gas: 12027)\n[PASS] test_noMintFunctionExists() (gas: 219921)\n[PASS] test_noOwnerOrPrivilegedControls() (gas: 202297)\n[PASS] test_rejectsPlainEther() (gas: 38779)\n[PASS] test_revert_approveZeroSpender() (gas: 32860)\n[PASS] test_revert_transferFromExceedsAllowance() (gas: 87358)\n[PASS] test_revert_transferFromExceedsBalance() (gas: 90969)\n[PASS] test_revert_transferFromWithoutAllowance() (gas: 46975)\n[PASS] test_revert_transferInsufficientBalance() (gas: 37736)\n[PASS] test_revert_transferMoreThanSupply() (gas: 37960)\n[PASS] test_revert_transferToZeroAddress() (gas: 32986)\n[PASS] test_symbol() (gas: 12048)\n[PASS] test_totalSupplyIsOneBillionTokens() (gas: 50420)\n[PASS] test_transferMovesExactAmount() (gas: 95825)\n[PASS] test_transferToSelfKeepsBalance() (gas: 43674)\n[PASS] test_transferWholeBalance() (gas: 78144)\n[PASS] test_transferZeroAmountSucceeds() (gas: 47583)\n[PASS] test_wholeSupplyMintedToDeployer() (gas: 12855)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 9.70ms (28.84ms CPU time)\n\nRan 2 test suites in 10.64ms (10.61ms CPU time): 29 tests passed, 0 failed, 0 skipped (29 total tests)\n","passed":true},{"durationMs":53,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"McLovinId.approve(address,uint256)\",\"McLovinId.transfer(address,uint256)\",\"McLovinId.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":6,\"README.md\":130,\"foundry.toml\":23,\"launch.json\":24,\"script/DeployMcLovinId.s.sol\":25,\"src/McLovinId.sol\":25,\"test/DeployMcLovinId.t.sol\":32,\"test/McLovinId.t.sol\":272},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"47167655a03bf5c1100596e3e58b08a282174889bef8f292adc9ed3025c2f160","verifiedTreeHash":"019966075bb671ed84c4d1ebdd6fcdcdaf9ffa88","verifierVersion":"0.1.0+f8d984f2"},{"checks":[{"durationMs":1909,"exitCode":0,"name":"build","output":"Compiling 31 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.78s\nCompiler run successful!\n","passed":true},{"durationMs":11172,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/DeployMcLovinId.t.sol:DeployMcLovinIdTest\n[PASS] test_deployMintsWholeSupplyToTheScriptCaller() (gas: 1343980)\n[PASS] test_deployTwiceGivesIndependentTokens() (gas: 1848695)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 355.33µs (381.82µs CPU time)\n\nRan 27 tests for test/McLovinId.t.sol:McLovinIdTest\n[PASS] testFuzz_cannotSpendMoreThanHeld(uint256,uint256) (runs: 256, μ: 99294, ~: 100023)\nLogs:\n  Bound result 325200274308487561\n  Bound result 115792089237316195423570985008687907853269984665640564039457258807638821501668\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 95664, ~: 97819)\nLogs:\n  Bound result 999999999999999999999999997\n\n[PASS] testFuzz_transferFromRespectsAllowance(uint256,uint256) (runs: 256, μ: 122385, ~: 147326)\nLogs:\n  Bound result 64758624209714981562652234\n  Bound result 1213\n\n[PASS] test_approveAndTransferFrom() (gas: 171131)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 22159)\n[PASS] test_contractDeployerViaCreate2ReceivesWholeSupply() (gas: 208635)\n[PASS] test_decimals() (gas: 8504)\n[PASS] test_holderCannotBeMovedByDeployer() (gas: 97657)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 122725)\n[PASS] test_name() (gas: 12027)\n[PASS] test_noMintFunctionExists() (gas: 219921)\n[PASS] test_noOwnerOrPrivilegedControls() (gas: 202297)\n[PASS] test_rejectsPlainEther() (gas: 38779)\n[PASS] test_revert_approveZeroSpender() (gas: 32860)\n[PASS] test_revert_transferFromExceedsAllowance() (gas: 87358)\n[PASS] test_revert_transferFromExceedsBalance() (gas: 90969)\n[PASS] test_revert_transferFromWithoutAllowance() (gas: 46975)\n[PASS] test_revert_transferInsufficientBalance() (gas: 37736)\n[PASS] test_revert_transferMoreThanSupply() (gas: 37960)\n[PASS] test_revert_transferToZeroAddress() (gas: 32986)\n[PASS] test_symbol() (gas: 12048)\n[PASS] test_totalSupplyIsOneBillionTokens() (gas: 50420)\n[PASS] test_transferMovesExactAmount() (gas: 95825)\n[PASS] test_transferToSelfKeepsBalance() (gas: 43674)\n[PASS] test_transferWholeBalance() (gas: 78144)\n[PASS] test_transferZeroAmountSucceeds() (gas: 47583)\n[PASS] test_wholeSupplyMintedToDeployer() (gas: 12855)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 53.45ms (141.30ms CPU time)\n\nRan 28 tests for test/McLovinIdEdge.t.sol:McLovinIdEdgeTest\n[PASS] testFuzz_allowanceIsIsolated(uint256,uint256) (runs: 1000, μ: 192517, ~: 193302)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 2827\n\n[PASS] testFuzz_approveIsIdempotent(uint256) (runs: 1000, μ: 92735, ~: 92982)\n[PASS] testFuzz_failedTransferLeavesStateUntouched(uint256,uint256) (runs: 1000, μ: 141089, ~: 141785)\nLogs:\n  Bound result 999999999999999999999999999\n  Bound result 174161021615828431164266787621587\n\n[PASS] testFuzz_strangerCannotMoveHolder(address,uint256,uint256) (runs: 1000, μ: 104937, ~: 105405)\nLogs:\n  Bound result 409822803716305187\n  Bound result 5152718744386\n\n[PASS] testFuzz_transferIsAdditive(uint256,uint256) (runs: 1000, μ: 124981, ~: 125835)\nLogs:\n  Bound result 8045420279865700826312595\n  Bound result 6872864400783403260022541\n\n[PASS] testFuzz_transferOrderDoesNotMatter(uint256,uint256) (runs: 1000, μ: 296740, ~: 300014)\nLogs:\n  Bound result 448734216142016996361678995\n  Bound result 331701937104374391305801\n\n[PASS] testFuzz_transferRoundTripRestoresBalances(uint256) (runs: 1000, μ: 127464, ~: 127386)\nLogs:\n  Bound result 219305779030318479632385345\n\n[PASS] testFuzz_unknownSelectorReverts(bytes4,bytes) (runs: 1000, μ: 57646, ~: 57440)\n[PASS] test_allowanceJustBelowMaxIsDecremented() (gas: 126743)\n[PASS] test_approveAboveBalanceIsAllowedButNotSpendable() (gas: 223529)\n[PASS] test_approveOverwritesRatherThanAdds() (gas: 95516)\n[PASS] test_approveZeroClearsAllowance() (gas: 130912)\n[PASS] test_create2AddressIsPredictableFromCreationCodeAlone() (gas: 884931)\n[PASS] test_create2SameSaltTwiceFails() (gas: 1040528347)\n[PASS] test_exactAllowanceSpendsToZero() (gas: 159165)\n[PASS] test_factoryHasNoPrivilegedHandAfterLaunch() (gas: 1708186)\n[PASS] test_launchFlowsArriveWhole() (gas: 1250362)\n[PASS] test_revert_etherWithCalldataIsRejected() (gas: 48792)\n[PASS] test_revert_transferFromToZeroAddress() (gas: 96333)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 2314616)\n[PASS] test_runtimeIsIdenticalAcrossDeployments() (gas: 13232)\n[PASS] test_scriptRunMintsWholeSupplyToTheBroadcastSigner() (gas: 1339026)\n[PASS] test_transferFromBySelfRequiresSelfAllowance() (gas: 160295)\n[PASS] test_transferFromEmitsOnlyTransfer() (gas: 125320)\n[PASS] test_transferFromZeroAmountNeedsNoAllowance() (gas: 53191)\n[PASS] test_transferOneWei() (gas: 83106)\n[PASS] test_transferToContractWithoutHooksSucceeds() (gas: 368454)\n[PASS] test_transferToTokenContractIsAcceptedAndStuck() (gas: 112251)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 58.71ms (468.91ms CPU time)\n\nRan 3 tests for test/McLovinId.invariant.t.sol:McLovinIdInvariantTest\n[PASS]\nMcLovinIdInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_balancesMatchLedgerModel\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_metadataAndEtherBalanceFixed\n[PASS] invariant_noHolderExceedsSupplyAndZeroAddressIsEmpty\n[PASS] invariant_totalSupplyNeverChanges\n McLovinIdInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭------------------+-------------------------+-------+---------+----------╮\n| Contract         | Selector                | Calls | Reverts | Discards |\n+=========================================================================+\n| McLovinIdHandler | approveClamped          | 1267  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | approveInfinite         | 1249  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | approveThenTransferFrom | 1195  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | approveUnclamped        | 1250  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | privilegedCall          | 1281  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | sendEther               | 1299  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | strangerTransferFrom    | 1202  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | transferClamped         | 1285  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | transferFromClamped     | 1291  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | transferFromUnclamped   | 1281  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | transferFull            | 1258  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | transferToSelf          | 1239  | 0       | 0        |\n|------------------+-------------------------+-------+---------+----------|\n| McLovinIdHandler | transferUnclamped       | 1287  | 0       | 0        |\n╰------------------+-------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 62453368165377078259\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4912\n  Bound result 0\n  Bound result 0\n  Bound result 2385\n  Bound result 0\n  Bound result 2827\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 417\n  Bound result 40\n  Bound result 0\n  Bound result 13805\n  Bound result 0\n  Bound result 13469\n  Bound result 40\n  Bound result 400000000000000000000\n  Bound result 0\n\n[PASS] test_handlerPrivilegedCallsAllRejected() (gas: 4347536)\n[PASS] test_handlerScriptedSequenceMatchesModel() (gas: 2894604)\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 250000000000000000000\n  Bound result 100000000000000000000\n  Bound result 50000000000000000000\n  Bound result 1000000000000000000\n\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 11.09s (11.09s CPU time)\n\nRan 4 test suites in 11.10s (11.21s CPU time): 60 tests passed, 0 failed, 0 skipped (60 total tests)\n","passed":true},{"durationMs":41,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"McLovinId.approve(address,uint256)\",\"McLovinId.transfer(address,uint256)\",\"McLovinId.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":6,\"README.md\":130,\"foundry.toml\":23,\"script/DeployMcLovinId.s.sol\":25,\"src/McLovinId.sol\":25,\"test/DeployMcLovinId.t.sol\":32,\"test/McLovinId.invariant.t.sol\":467,\"test/McLovinId.t.sol\":272,\"test/McLovinIdEdge.t.sol\":478},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"6ea8182a06b86fc9fe0a226ceced122a10a4f7093545b2d8558eebcde5ddc562","verifiedTreeHash":"14a83df326ea407267625dd78f04969e8b4d6a7b","verifierVersion":"0.1.0+f8d984f2"}]}