{"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":"3436e7a6-8a54-4e7d-9375-410eb1f1244f","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"b5312998c09c67ba68767f2370779f9df7cf8bdc56de055fa074f5a28187c46b","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":"a684e593ce0103d62246468dc81e002735cd4657479023e0e3dc0b053b29563f","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":"1568c4f6ed69ac9169077f7a8ff5703cb2cc2f11e09b90eb50a2179e71b7daa2","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":"ec981c6a3949bdbd9c35b6ae2fe2eedbe421766fd1cbf44f52bf97c7d2d0453e","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":"89b375d061d7e492be8d883a1acb2ed572dfe4c911cdd1eae7d4361e07e50265","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":"26b67fcc71c4e0f965bda604e8b9e0504d62d0871f9ecca56b829e0a963208c6","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"9a048417ef071b92e8ab21a1b285b48a379f0d4e3742c5f511d91c24a298869a","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"982b40e0f8ea144fd8893c21cef4991395470b714ea1fb08b681dbffc2bd6f18","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: yolo (YOLO).\nToken name: yolo\nToken symbol: YOLO\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.\nWhat it does: $yolo time","parentJobId":null,"planHash":"6dc35d51fa90e0d917230ea73eeae33522c2d8278fbe042fe1067c72ec172eb3","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"3436e7a6-8a54-4e7d-9375-410eb1f1244f","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2319-yolo"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51420","feedbackHash":"ca7e2bb8530c290abeff726b4b9763cb14d5fdfb99d793762c42fbaf0d9d6aa8","nodeKey":"audit_economics","submissionHash":"b5312998c09c67ba68767f2370779f9df7cf8bdc56de055fa074f5a28187c46b","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51334","feedbackHash":"c770f5526700cf3524885c4f1600c72db25f0a63d46e2525f865da7d7ad95d24","nodeKey":"audit_flow","submissionHash":"a684e593ce0103d62246468dc81e002735cd4657479023e0e3dc0b053b29563f","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52552","feedbackHash":"a5f7687a1942877d0505f5ba9a83eb3ac9b9cd07656ea09cdcfe5752bb9233f2","nodeKey":"audit_judge","submissionHash":"1568c4f6ed69ac9169077f7a8ff5703cb2cc2f11e09b90eb50a2179e71b7daa2","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"53932","feedbackHash":"6d564e474e6f78f39fa734b1db24f03d39ccdf3b86d86ef4d7db6e3a88d9587f","nodeKey":"audit_math","submissionHash":"ec981c6a3949bdbd9c35b6ae2fe2eedbe421766fd1cbf44f52bf97c7d2d0453e","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51333","feedbackHash":"4977e5613b32a8a6a3196d5839f389c50fad57b2fc9e0435419f321072aa351f","nodeKey":"audit_permissions","submissionHash":"89b375d061d7e492be8d883a1acb2ed572dfe4c911cdd1eae7d4361e07e50265","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51033","feedbackHash":"a33d03ab5c5d3fecdbbe6f43c3dfa9e68f3875ef1f94219d02cedd0489cf0759","nodeKey":"build_contract_project","submissionHash":"26b67fcc71c4e0f965bda604e8b9e0504d62d0871f9ecca56b829e0a963208c6","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51029","feedbackHash":"08b8b0ede3fb529746825fc722de0ee0ce553a1c4477d6415513c147772cf537","nodeKey":"manifest","submissionHash":"9a048417ef071b92e8ab21a1b285b48a379f0d4e3742c5f511d91c24a298869a","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52257","feedbackHash":"e7814d8c95c25dfa3b6ea5fbbc54740eb3d631493eb85e6c8c98947ad18a79d4","nodeKey":"write_foundry_tests","submissionHash":"982b40e0f8ea144fd8893c21cef4991395470b714ea1fb08b681dbffc2bd6f18","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"f951bb1aa7da35d626bfc8625361570a38eceac43b187b8213332f27526d2b80","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"809ae05b6282abad","findings":[{"citation":"resolved","description":"Merged duplicate: all four specialist areas (math, economics, permissions, flow) reported this same root cause. lib/README.md:11 states the vendored files are unmodified release snapshots, and lines 15-19 tell reviewers to verify them with `sha256sum -c lib/SHA256SUMS`. That check fails on seven committed forge-std v1.9.7 files: src/StdAssertions.sol, src/StdJson.sol, src/StdToml.sol, src/Vm.sol, src/console.sol, src/interfaces/IERC7540.sol and src/interfaces/IMulticall3.sol. The recorded message digests are the genuine upstream v1.9.7 values: fetching raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/Vm.sol hashes to 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1, the value on lib/SHA256SUMS:18, while the committed Vm.sol hashes to a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15; the same upstream-versus-committed split holds for the other six files. Comparing every one of the seven to upstream with all whitespace removed gives identical content, so the committed files are upstream v1.9.7 re-wrapped by a formatter after lib/SHA256SUMS was recorded (foundry.toml has no fmt exclusion for lib/, and `git show HEAD:lib/forge-std/src/Vm.sol | sha256sum` reproduces the divergent hash, so this is committed, not a working-tree artifact). The five OpenZeppelin v5.0.2 sources and their LICENSE are byte-identical to upstream and pass the check, and forge-std is a test-only dependency, so the deployed YoloToken creation bytecode, its runtime and every launch flow are unaffected. This is a provenance/documentation defect with no on-chain impact, hence low. Because contributors are barred from modifying lib/, the fix belongs to the party that owns the vendored tree: restore the exact upstream v1.9.7 bytes, or regenerate lib/SHA256SUMS from the committed files and drop the 'unmodified snapshots' wording, and exclude lib/ from forge fmt so the two cannot drift again.","line":11,"path":"lib/README.md","reproduction":"From the repository root at HEAD 991460c with a clean working tree, run `sha256sum -c lib/SHA256SUMS`. Expected per lib/README.md:15-19: every one of the 36 recorded files prints OK and the command exits 0. Actual: seven lines print FAILED (lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol), the command prints `sha256sum: WARNING: 7 computed checksums did NOT match`, and it exits 1. Concrete cross-check: `sha256sum lib/forge-std/src/Vm.sol` prints a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15, lib/SHA256SUMS:18 records 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1, and `curl -fsSL https://raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/Vm.sol | sha256sum` also prints 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1, so the recorded digest is correct for the pinned release and the committed file is what diverges. `git show HEAD:lib/forge-std/src/Vm.sol | sha256sum` prints the same a1b1c829... value, confirming the divergence is committed. Repeating the comparison for all seven files with every whitespace character removed makes committed and upstream content identical, showing the difference is formatting only.","severity":"low","snippet":"The source files are unmodified snapshots from the respective release","title":"Vendored forge-std files no longer match lib/SHA256SUMS, so the documented integrity check fails"}],"hash":"1568c4f6ed69ac9169077f7a8ff5703cb2cc2f11e09b90eb50a2179e71b7daa2","nodeId":"b9a467d0-bf65-45f7-9d1b-8d09c72a01fc","outcome":"completed","summary":"Review complete. `.imd-findings.json` now holds one finding and a coverage record covering all three entry points.\n\n**Finding kept:** low severity, merged from all four specialist reports because they share one root cause. The vendored forge-std files do not match `lib/SHA256SUMS`, so the integrity check that `lib/README.md` tells reviewers to run fails.\n\n- Reproduction: from the repository root, `sha256sum -c lib/SHA256SUMS` reports 7 of 36 files FAILED and exits 1. The failing files are `StdAssertions.sol`, `StdJson.sol`, `StdToml.sol`, `Vm.sol`, `console.sol`, `IERC7540.sol` and `IMulticall3.sol`.\n- I confirmed the recorded digests are the genuine upstream v1.9.7 values, and that the committed files match upstream once whitespace is stripped. The divergence is formatting only because no `lib/` exclusion exists for `forge fmt`, and it is committed at HEAD.\n- No on-chain impact: forge-std is test-only, and the five OpenZeppelin v5.0.2 sources are byte-identical to upstream. Because contributors may not edit `lib/`, the fix belongs to the party that owns the vendored tree.\n\n**Token review:** no defects found in `src/YoloToken.sol`. The constructor mints exactly `10^27` to `msg.sender`; the ABI is standard ERC-20 plus the `INITIAL_SUPPLY` getter, with no mint, burn, admin, or privileged path. `approve`, `transfer` and `transferFrom` follow the upstream OpenZeppelin 5.0.2 implementation, and every failure path reverts without partial state changes. The manifest matches the contract exactly: name `yolo`, symbol `YOLO`, 18 decimals, empty constructor arguments, total supply `10^27`, valid key types and bounds. Under the factory deployment model the token is deployable: 2,633 bytes of initcode and 1,752 bytes of runtime, no constructor arguments and no special address bits.\n\n**Checks run:** `forge build` passed, `forge test` passed 46 of 46 tests including fuzz and stateful invariants, `forge fmt --check` passed, and the documented `sha256sum -c lib/SHA256SUMS` failed exactly as reported. The aderyn large-numeric-literal lead was examined and rejected: `1_000_000_000 * 10 ** 18` is an exact integer constant equal to `10^27`. Coverage verdicts: `YoloToken.approve`, `YoloToken.transfer` and `YoloToken.transferFrom` all hold, as do the fixed-supply and deployability invariants I added.","treeHash":null,"usage":{"cachedInputTokens":725888,"inputTokens":102379,"model":"claude-fable-5-1","outputTokens":36076,"runtime":"claude","turns":46,"wallClockMs":168254}},{"artifacts":[],"attempt":1,"bundleHash":"a8b319182e901e96453e8722274f2f998abce963e9c0c780d1bbd7f81cd45c5c","device":"8576036969b9332c","findings":[],"hash":"26b67fcc71c4e0f965bda604e8b9e0504d62d0871f9ecca56b829e0a963208c6","nodeId":"06bc3e0f-63b9-4938-8833-ff8cf9c89575","outcome":"completed","summary":"Implemented YOLO: name `yolo`, symbol `YOLO`, 18 decimals, and 1 billion tokens minted once to the deployer. No later minting or administrative powers.\n\nIncluded vendored dependencies, tests, and deployment/operations documentation.\n\nVerified with Solidity 0.8.26:\n\n- `forge build` passed\n- `forge test` passed: 28 tests, using the supplied fuzz seed\n- `forge fmt --check` passed","treeHash":"bd6192d63707893bb38ae8723f58113fffee9a49","usage":{"cachedInputTokens":641152,"inputTokens":50750,"model":"gpt-6-astra","outputTokens":13683,"runtime":"codex","turns":5,"wallClockMs":382693}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"41f7c1458e1278ad","findings":[{"citation":"resolved","description":"README.md (lines 52-53 and lib/README.md) states that every vendored source is an unmodified upstream snapshot and instructs the launch operator to verify the tree with `sha256sum -c lib/SHA256SUMS`. That command fails on seven forge-std v1.9.7 files: StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. The hashes recorded in lib/SHA256SUMS are the genuine upstream v1.9.7 hashes (verified by fetching the tagged files from github.com/foundry-rs/forge-std and hashing them); the files in the tree differ from upstream only by whitespace and line reflow, i.e. `forge fmt` was run over lib/ after the sums were recorded (foundry.toml has no fmt ignore for lib/). Comparing each pair with all whitespace stripped gives identical content, and the test suite still passes, so this is a provenance/documentation defect, not a code defect. All five OpenZeppelin v5.0.2 files that make up the production token are byte-identical to upstream and pass the check, so the deployed bytecode is unaffected. Outside the assigned area (Access Control / Trust Gap / Asymmetry); reported because the README makes this check part of the launch operator's verification. Fix: restore the seven pristine upstream v1.9.7 files (or re-record their sums) and exclude lib/ from `forge fmt` so the two cannot drift again.","line":5,"path":"lib/SHA256SUMS","reproduction":"From the repository root run `sha256sum -c lib/SHA256SUMS`. Expected (per README.md and lib/README.md): every line reports OK. Actual: 31 lines OK and 7 report FAILED (lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol), exit status 1. Cross-check: `curl -sSL https://raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/StdAssertions.sol | sha256sum` prints d4c89eec70d267de..., the value on this line, while `sha256sum lib/forge-std/src/StdAssertions.sol` prints 3fbf4a025b4fc94e...; `diff` of the two shows only function-signature line reflows (e.g. upstream lines 480-484 collapsed onto one line).","severity":"low","snippet":"d4c89eec70d267dec6188461fbc74d3dc8c47e518d176a23417533a232ed9780  lib/forge-std/src/StdAssertions.sol","title":"Documented integrity check fails: seven vendored forge-std files were reformatted after lib/SHA256SUMS was recorded"}],"hash":"89b375d061d7e492be8d883a1acb2ed572dfe4c911cdd1eae7d4361e07e50265","nodeId":"9802565b-4feb-42eb-ac33-f08d67215cad","outcome":"completed","summary":"The findings file is in place and the review is complete. The repository's own excludes hide it from git, which is expected.\n\n**Outcome.** The permission model of YoloToken holds in every part of the assigned area. The token is a constructor-only extension of OpenZeppelin ERC-20 v5.0.2 with no owner, minter, pauser, blacklist, hook, exemption list, receive or fallback. I found one low-severity defect, outside the assigned area, and recorded it with coverage rows for all three entry points plus five checked invariants in `.imd-findings.json`.\n\n**What I verified for Access Control, Trust Gap and Asymmetry:**\n- **Entry points.** approve, transfer and transferFrom are holder-scoped through msg.sender, write only the caller's own allowance or balance, and share the same internal update path, so there is no branch or writer asymmetry and no privileged variant.\n- **Deployment roles.** The constructor mints the whole supply of 10^27 units to msg.sender and assigns no role. A CREATE2 factory stand-in ends with the full balance and the originating account with zero.\n- **Privileged surface.** The compiled ABI has exactly ten selectors. A scratch test tried 22 common admin selectors from an attacker, the factory and the deployer, plus a plain ETH call and a transferFrom without allowance. All revert and the holder's balance is unchanged.\n- **Bytecode.** An opcode walk of the runtime finds no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **Vendored dependency.** The five OpenZeppelin files are byte-identical to the v5.0.2 tag fetched from GitHub.\n- **Existing tests.** The project's 28 unit, fuzz and invariant tests pass with the README's seed.\n\n**The one finding, low.** The README instructs the launch operator to verify vendored sources with the checksum list in `lib/SHA256SUMS`, and that command fails on seven forge-std files. The recorded hashes are the genuine upstream v1.9.7 hashes. The files in the tree differ only by formatter line reflow, so the formatter was run over the library after the sums were recorded. Production code is unaffected. The reproduction is the single command and its seven FAILED lines.\n\n**Not reached.** The Uniswap v4 seed and swap in the protected harness could not run locally, because v4-core and the harness's helper sources are not in this repository. That check lies outside the assigned area, and a plain ERC-20 without transfer hooks has no mechanism to tax or block the pool manager.","treeHash":null,"usage":{"cachedInputTokens":1054310,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":17730,"runtime":"claude","turns":33,"wallClockMs":265477}},{"artifacts":[],"attempt":1,"bundleHash":"0b1bffbf43eb0fa2afd46f3a37fb136817df9929e4ea4515f39515e37582d4aa","device":"22c9b760d0a15149","findings":[],"hash":"982b40e0f8ea144fd8893c21cef4991395470b714ea1fb08b681dbffc2bd6f18","nodeId":"7f63c6cd-eae2-4695-b6e9-7a6452a7aab5","outcome":"completed","summary":"I added two test files on top of the existing suite. `forge test` passes with the verifier's fuzz seed: 46 tests across 4 suites, none failing or skipped.\n\n**`test/YoloToken.model.invariant.t.sol`**: invariant tests that check the token against a separately kept record of what every balance and allowance should be.\n- **Setup:** six holders, including the token contract itself and the test contract. They start uneven: almost the whole supply on one holder, 1e18 on another, 1 wei on a third, nothing on the rest.\n- **Normal actions:** `transfer`, `approve` (including the unlimited approval) and `transferFrom`, with amounts kept within what each holder can actually spend.\n- **Failure actions:** each must revert with the exact OpenZeppelin error and leave everything unchanged:\n  - sending more than the balance;\n  - spending past the allowance;\n  - spending within the allowance but past the balance;\n  - sending to the zero address, by `transfer` or `transferFrom`;\n  - calling with a random unknown function selector.\n- **What must always hold:**\n  - total supply stays at exactly 10^27;\n  - the holders' balances add up to the supply, and nothing ends up at the zero address or the test helper;\n  - every balance and every allowance matches the separate record.\n- **Run counts:** 256 runs × 64 calls, set inside the file. All 16,384 calls succeeded with no unexpected reverts.\n\n**`test/YoloToken.edges.t.sol`**: 17 unit and fuzz tests for edge cases:\n- the launch flows done in one call through a helper contract: deploy, 10% to the distributor, a fuzzed pool share, the remainder to the requester, each arriving whole;\n- one-wei balance limits, an allowance spent exactly to zero, an allowance one below the maximum (it still goes down), and an unlimited allowance still limited by the balance;\n- allowances only work one way and per owner, and approving yourself still gates `transferFrom`;\n- contracts holding and spending the token;\n- the token refuses ETH and unknown calldata, and has no `permit`, `increaseAllowance`, rescue or ownership functions;\n- fuzzed checks: a transfer and its return restore both balances, the last approval replaces earlier ones, and split transfers add back up to the supply.\n\n**Findings:** none, so I didn't write `.imd-findings.json`. `src/YoloToken.sol` is a plain OpenZeppelin ERC-20 that mints 10^27 once to whoever deploys it, has no admin functions and no way to mint later, and takes no fee on transfer. One thing worth knowing, though it isn't a defect: tokens sent to the token's own address are stuck there for good, because there is no rescue function. A test records this.\n\nI changed nothing outside `test/`, installed nothing, and haven't committed the two new files.","treeHash":"2d60d5b9ba3c0b0cd39738a8f3ac57201d67db1e","usage":{"cachedInputTokens":519893,"inputTokens":22,"model":"claude-opus-5-5","outputTokens":13128,"runtime":"claude","turns":12,"wallClockMs":141776}},{"artifacts":[],"attempt":1,"bundleHash":"be020eb1abdad6c698adde68639123c50bcb999145cea72813d31a415bbd0792","device":"a11a254856120206","findings":[],"hash":"9a048417ef071b92e8ab21a1b285b48a379f0d4e3742c5f511d91c24a298869a","nodeId":"2396a877-2118-48a3-b7f4-c51ef1681ed9","outcome":"completed","summary":"Created [launch.json](/home/seat2/.identitymd/work/3436e7a6-8a54-4e7d-9375-410eb1f1244f/2396a877-2118-48a3-b7f4-c51ef1681ed9/launch.json) with `custom_token`, the exact supply and constructor arguments, and the specified pool and economics.\n\nOffline build and all 28 tests passed with the required seed. Formatting, size checks, and Slither passed. Only `launch.json` is a submission change.","treeHash":"4e1178a9f3b1899f0c026692fceb1238eca9c73c","usage":{"cachedInputTokens":578688,"inputTokens":48241,"model":"gpt-6-astra","outputTokens":5425,"runtime":"codex","turns":5,"wallClockMs":169450}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"433c37ef2c9c708d","findings":[{"citation":"resolved","description":"Periphery pass (base contracts and vendored libraries). lib/README.md states that every vendored file is an unmodified snapshot of the pinned release (forge-std v1.9.7, OpenZeppelin v5.0.2) and that `sha256sum -c lib/SHA256SUMS` verifies them; README.md line 125-126 points integrators to that check. The OpenZeppelin files hold: all five contracts and LICENSE are byte-identical to upstream v5.0.2 (verified by fetching and diffing upstream), so the token's inherited transfer/approve/transferFrom logic is the audited OZ 5.0.2 code. The forge-std claim does not hold: seven committed files under lib/forge-std/src (StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol) differ from the v1.9.7 release files. The hashes recorded in lib/SHA256SUMS for those files equal the upstream v1.9.7 hashes, so the sum file is right about v1.9.7 and the committed files are the thing that disagrees. The committed Vm.sol also matches none of the forge-std release tags v1.10.0, v1.11.0, v1.12.0 or v1.13.0 (its diff against v1.9.7 is 11 added / 39 removed lines touching cheatcode declarations such as expectEmit, mockCallRevert, computeCreate2Address and parseJsonType), so it is an intermediate or hand-edited snapshot, not an unmodified release archive as stated. This is a test-only dependency: it does not change src/YoloToken.sol, its runtime bytecode, or any launch flow, which is why severity is low. The defect is that the repository's own provenance statement and verification command are false as shipped, so a reviewer following the README cannot establish the test toolchain's provenance. Fix: either restore the exact v1.9.7 files or re-pin lib/README.md and lib/SHA256SUMS to the forge-std release actually committed, whichever party owns lib/ (the task rules forbid builders from editing lib/, so this may need the launch operator).","line":11,"path":"lib/README.md","reproduction":"State: repository at HEAD 430aa1c, no local changes (git status clean). Run from the repository root:\n\n    sha256sum -c lib/SHA256SUMS\n\nExpected (per lib/README.md): every line prints OK and the command exits 0.\nActual: 7 lines print FAILED (lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol), 'WARNING: 7 computed checksums did NOT match', exit status 1.\nCross-check: `curl -sL https://raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/Vm.sol | sha256sum` gives 9068805b59ac1d0e..., which is the value recorded on lib/SHA256SUMS line 18, while `sha256sum lib/forge-std/src/Vm.sol` gives a1b1c82924aecf0f.... The same holds for the other six files. `git show HEAD:lib/forge-std/src/Vm.sol | sha256sum` also gives a1b1c829..., so the mismatch is committed, not a working-tree artefact. The OpenZeppelin lines all print OK and match upstream v5.0.2 byte for byte.","severity":"low","snippet":"The source files are unmodified snapshots from the respective release\narchives. Licenses are retained inside each dependency directory.","title":"Vendored forge-std files are not the v1.9.7 snapshots the vendoring note and SHA256SUMS record; the documented integrity check fails"}],"hash":"a684e593ce0103d62246468dc81e002735cd4657479023e0e3dc0b053b29563f","nodeId":"634fbe26-8730-4fc2-9d16-f11c55d7c732","outcome":"completed","summary":"Review complete. The findings file is written and validated.\n\n**Outcome.** The token itself has no defect in my area. The one finding is low severity and concerns the vendored test dependency, not the token's code or bytecode.\n\n**What I checked (Execution Trace, Periphery, First Principles).**\n- Traced approve, transfer and transferFrom through the inherited OpenZeppelin 5.0.2 paths: zero-address guards, balance and allowance checks, infinite-allowance handling, unchecked arithmetic bounds, atomic rollback of the allowance decrement when the transfer reverts, self and zero-value transfers. All behave as specified, and the launch flows move exact amounts because there is no fee, hook or callback.\n- Constructor mints exactly 10^27 to msg.sender once, which is the factory under CREATE2. No arguments, no allocations, no admin role.\n- Runtime bytecode scan found no CALL-family, CREATE, DELEGATECALL, CALLCODE or SELFDESTRUCT opcodes. The ABI exposes only the standard ERC-20 selectors plus the supply constant.\n- Periphery: all five vendored OpenZeppelin files and the licence are byte-identical to the upstream v5.0.2 tag, verified by fetching and diffing.\n- Ran the project suite (28 tests plus a stateful invariant run) and the formatter check. All pass.\n- The aderyn large-literal lead is a style note. The expression evaluates at compile time to exactly 10^27.\n\n**Finding (low).** The vendoring note in lib/README.md says every vendored file is an unmodified release snapshot and that the checksum command verifies them. Seven committed forge-std files fail that command. The recorded hashes match upstream v1.9.7 exactly, while the committed files match no release tag I checked, so the files are an intermediate or edited snapshot. This is test-only and does not touch the token. The fix is to restore the v1.9.7 files or re-pin the note and checksum file, which belongs to whoever owns lib/.\n\n**Coverage.** All three listed entry points are marked holds, plus rows for the constructor, the fixed-supply invariant, the no-privilege and no-external-call invariant, the OpenZeppelin base, the forge-std dependency (finding 1) and the static-analysis lead. No scratch test was needed since nothing reached high or critical severity. No repository files were changed other than the findings file.","treeHash":null,"usage":{"cachedInputTokens":680228,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":14873,"runtime":"claude","turns":26,"wallClockMs":233259}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e382bd4d2b3e471f","findings":[{"citation":"resolved","description":"Outside the assigned economics area; reported because it is concrete and the README directs readers to rely on it. lib/README.md states every vendored file is an unmodified release snapshot and tells the reader to verify with `sha256sum -c lib/SHA256SUMS` (lib/README.md:19). The SHA256SUMS entries are the genuine upstream v1.9.7 hashes (checked against raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7), but seven committed forge-std files differ from upstream: src/StdAssertions.sol, src/StdJson.sol, src/StdToml.sol, src/Vm.sol, src/console.sol, src/interfaces/IERC7540.sol, src/interfaces/IMulticall3.sol. A diff against upstream shows only `forge fmt` line re-wrapping of multi-line function signatures, no semantic change, so this appears to be `forge fmt` having been run over lib/. All OpenZeppelin files match their recorded hashes. forge-std is a test-only dependency, so the deployed YoloToken creation bytecode is unaffected; the defect is that the repository's own provenance check, which the README presents as the way to trust the vendored tree, reports failure. Fix: either restore the seven files to the exact v1.9.7 bytes (so the recorded hashes hold) or regenerate lib/SHA256SUMS from the committed files and drop the 'unmodified snapshots' wording; and exclude lib/ from `forge fmt` so it does not drift again.","line":11,"path":"lib/README.md","reproduction":"From the repository root run `sha256sum -c lib/SHA256SUMS`. Expected per lib/README.md: every line OK. Actual: 'sha256sum: WARNING: 7 computed checksums did NOT match' for lib/forge-std/src/{StdAssertions,StdJson,StdToml,Vm,console}.sol and lib/forge-std/src/interfaces/{IERC7540,IMulticall3}.sol. Example: `sha256sum lib/forge-std/src/Vm.sol` prints a1b1c82924aecf0f... while lib/SHA256SUMS:18 records 9068805b59ac1d0e... which is upstream v1.9.7's hash. `diff <(curl -sL https://raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/Vm.sol) lib/forge-std/src/Vm.sol` shows only signature line-wrapping differences.","severity":"info","snippet":"The source files are unmodified snapshots from the respective release","title":"lib/README.md's vendored-source integrity check fails: 7 forge-std files are forge-fmt-rewrapped copies, not the v1.9.7 snapshots lib/SHA256SUMS records"}],"hash":"b5312998c09c67ba68767f2370779f9df7cf8bdc56de055fa074f5a28187c46b","nodeId":"17b756ae-a128-4e27-a766-5e99e074b912","outcome":"completed","summary":"The review is complete and the findings file is written and valid. No source changes were made; the only files I created are `.imd-findings.json` and the scratch probe under `test/scratch/`, which is not kept.\n\n**Result: no economic, invariant or flow-gap defect in the token.** `src/YoloToken.sol` is a 17-line, constructor-only extension of the vendored OpenZeppelin 5.0.2 ERC20. It mints exactly 10^27 units to `msg.sender` with no constructor arguments, and exposes only `approve`, `transfer` and `transferFrom`. All three entry points are recorded as `holds`.\n\nWhat I checked against the Economic Security, Invariant and Flow Gap guides:\n\n- **Launch flows are exact.** Factory to distributor, factory to pool, factory to requester, distributor claims, and pool-manager round trips move precisely the requested amount. There is no fee, burn, tax, hook or callback. Verified with the project suite and a scratch Foundry probe, including 1 wei and whole-balance edges.\n- **Conservation holds.** Only OpenZeppelin's `_update` touches balances or supply, `_mint` is reached once from the constructor, and no mint, burn or burnFrom selector exists. The project's stateful invariant test passed at 128 runs by 64 depth.\n- **No external dependencies or privileged powers.** No oracle, no external calls, no receive or fallback, no owner. ETH sends and unknown selectors revert. The supply fits the int128 deltas and uint128 liquidity Uniswap v4 uses.\n- **The aderyn large-numeric-literal lead** is a style note. The constant equals exactly 1,000,000,000 tokens at 18 decimals.\n\nOne **info-level** finding, outside my area, is reported because it is concrete and reproducible. The README in `lib/` claims every vendored file is an unmodified release snapshot and tells readers to verify with `sha256sum -c lib/SHA256SUMS`. That command fails on seven forge-std files. The recorded hashes are the genuine upstream v1.9.7 hashes, but the committed files were re-wrapped by `forge fmt`. The differences are formatting only, and forge-std is a test dependency, so deployed bytecode is unaffected. The fix is to restore the exact upstream bytes or regenerate the checksum file, and exclude `lib/` from formatting.\n\nCoverage limits: I did not run the protected harness's real Uniswap v4 seed and swap, since its `LaunchLiquidity` and `PoolInitializationGuard` sources are not in this repository. Given the token has no transfer hooks, the exactness checks above are what those flows depend on.","treeHash":null,"usage":{"cachedInputTokens":820644,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":13053,"runtime":"claude","turns":25,"wallClockMs":246451}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8109087d965ddf6c","findings":[{"citation":"resolved","description":"Outside the assigned math area; reported because it is a concrete, reproducible mismatch in the delivered tree. lib/README.md (line 11: 'The source files are unmodified snapshots from the respective release archives') instructs reviewers to verify the vendored dependencies with `sha256sum -c lib/SHA256SUMS`. The recorded hashes are the correct upstream forge-std v1.9.7 hashes (verified against raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/Vm.sol, StdAssertions.sol, console.sol: all three match the recorded values). The files actually committed under lib/forge-std/src/ differ from those hashes for seven files: StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol. A diff against upstream shows whitespace/line-wrapping changes only (the signatures of e.g. Vm.getDeployment and StdAssertions.assertApproxEqAbs were re-wrapped onto one line), consistent with `forge fmt` having been run over lib/ after the hashes were recorded. No semantic change was found and forge-std is a test-only dependency, so there is no on-chain impact, but the integrity claim the README makes about the tree is false and the documented verification step fails. The OpenZeppelin files all verify. Fix: either restore the seven files to the upstream v1.9.7 bytes (so the recorded hashes verify) or regenerate lib/SHA256SUMS from the tree and drop the 'unmodified snapshots' wording; and exclude lib/ from `forge fmt` (an `[fmt] ignore` entry) so it does not drift again.","line":18,"path":"lib/SHA256SUMS","reproduction":"From the repository root run `sha256sum -c lib/SHA256SUMS`. Expected (per lib/README.md): every line reports OK. Actual: 'lib/forge-std/src/StdAssertions.sol: FAILED', 'lib/forge-std/src/StdJson.sol: FAILED', 'lib/forge-std/src/StdToml.sol: FAILED', 'lib/forge-std/src/Vm.sol: FAILED', 'lib/forge-std/src/console.sol: FAILED', 'lib/forge-std/src/interfaces/IERC7540.sol: FAILED', 'lib/forge-std/src/interfaces/IMulticall3.sol: FAILED', 'WARNING: 7 computed checksums did NOT match'. `sha256sum lib/forge-std/src/Vm.sol` prints a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15, not the recorded 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1 (which is the genuine upstream v1.9.7 hash).","severity":"low","snippet":"9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1  lib/forge-std/src/Vm.sol","title":"Recorded forge-std integrity hashes do not match the vendored files (README's verification step fails)"}],"hash":"ec981c6a3949bdbd9c35b6ae2fe2eedbe421766fd1cbf44f52bf97c7d2d0453e","nodeId":"d085afc1-b50f-4e9f-9ae1-454ccf5d23db","outcome":"completed","summary":"The findings file is valid and the snippet matches the tree. The working tree is clean apart from the findings file, and the scratch directory has been removed.\n\n**Result: the math area is clean.** `.imd-findings.json` holds one low-severity finding outside the assigned area and a coverage record for all three entry points plus three invariants.\n\n**What I checked, against the Math Precision, Boundary and Numerical Gap guides**\n\n- **Supply constant.** The literal compiles to exactly 10^27, which matches the manifest's minor-unit supply and divides back to one billion whole tokens with zero remainder. The checked mint cannot overflow from zero. Aderyn's large-literal line is cosmetic only.\n- **Transfer arithmetic.** OpenZeppelin v5.0.2's `_update` is unchanged. Its unchecked subtraction and addition are bounded by the balance check and the fixed supply, so no wrap is reachable. Self transfers, zero-value transfers and a max-uint value all behave as intended, and the sum of balances equals total supply exactly because there is no rounding anywhere.\n- **Allowance arithmetic.** Max allowance is infinite and not decremented, max minus one is finite, and overspend reverts before any balance change. Reverts roll back the allowance decrement.\n- **Launch split math.** Ten, two, eight, sixty and thirty percent of this supply are all exact with no truncation. Supply times basis points cannot overflow, and the seed amount fits Uniswap v4's signed 128-bit deltas.\n- **Boundaries.** No external calls, no payable or receive or fallback, no bytes decoding, no sentinel branches beyond the zero-address guards. Decimals are the OpenZeppelin constant 18.\n\nRan the shipped suite with the README seed, plus scratch probes for the edge cases above. All 28 shipped tests pass.\n\n**The one finding, outside my area.** The README tells reviewers to verify vendored dependencies with `sha256sum -c lib/SHA256SUMS`, and that check fails for seven forge-std files. The recorded hashes are the genuine upstream v1.9.7 values, which I confirmed by fetching those files. The committed copies differ only by line wrapping, consistent with `forge fmt` having touched `lib/`. No semantic change, test-only dependency, so low severity. The fix is to restore the upstream bytes or regenerate the hash file, and to exclude `lib/` from the formatter.\n\n**Not reached.** Nothing within the assigned area was left unexamined. I did not run the protected pool-seeding harness since it needs the launch environment's addresses, which are not in this repository.","treeHash":null,"usage":{"cachedInputTokens":763796,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":13213,"runtime":"claude","turns":24,"wallClockMs":200183}}],"verification":[{"checks":[{"durationMs":1249,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.17s\nCompiler run successful!\n","passed":true},{"durationMs":727,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 27 tests for test/YoloToken.t.sol:YoloTokenTest\n[PASS] testApprovalCanBeReplacedAndRevoked() (gas: 174387)\n[PASS] testApprovalEmitsEventAndDoesNotMoveFunds() (gas: 116779)\n[PASS] testApprovalRejectsZeroSpender() (gas: 61875)\n[PASS] testCommonMintBurnAndAdminCallsAreUnavailableToEveryone() (gas: 1321584)\n[PASS] testConstructorEmitsExactlyOneMint() (gas: 9753)\n[PASS] testCreate2DeploymentMintsToFactoryWithoutConstructorArguments() (gas: 240420)\n[PASS] testFuzzTransferConservesSupply(uint256) (runs: 1000, μ: 187380, ~: 188086)\nLogs:\n  Bound result 15000000000000000000\n\n[PASS] testFuzzTransferFromRejectsAnyAmountAboveAllowance(uint256,uint256) (runs: 1000, μ: 123167, ~: 123779)\nLogs:\n  Bound result 15513\n  Bound result 999999999999999999999984742\n\n[PASS] testFuzzTransferFromRespectsBalanceAndAllowance(uint256,uint256) (runs: 1000, μ: 162333, ~: 165270)\nLogs:\n  Bound result 32239\n  Bound result 28278\n\n[PASS] testFuzzTransferRejectsAnyAmountAboveBalance(uint256) (runs: 1000, μ: 69126, ~: 69468)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n\n[PASS] testLaunchDistributionClaimsAndTradingTransfersAreExact() (gas: 416834)\n[PASS] testMetadataAndWholeSupplyBelongToDeployer() (gas: 107759)\n[PASS] testSelfTransferPreservesBalance() (gas: 54014)\n[PASS] testTransferDeliversExactAmountAndEmitsEvent() (gas: 91496)\n[PASS] testTransferEntireBalance() (gas: 75806)\n[PASS] testTransferFromByHolderStillRequiresAllowance() (gas: 42628)\n[PASS] testTransferFromDeliversExactAmountAndConsumesAllowance() (gas: 257066)\n[PASS] testTransferFromFailureRestoresAllowanceOnInsufficientBalance() (gas: 126628)\n[PASS] testTransferFromFailureRestoresAllowanceOnZeroRecipient() (gas: 114494)\n[PASS] testTransferFromRejectsAllowanceOverspend() (gas: 116102)\n[PASS] testTransferFromRejectsUnapprovedCaller() (gas: 118263)\n[PASS] testTransferFromToSameHolderConsumesAllowanceWithoutMovingBalance() (gas: 103654)\n[PASS] testTransferFromWithInfiniteApprovalDoesNotDecreaseAllowance() (gas: 150115)\n[PASS] testTransferRejectsInsufficientBalanceAndPreservesState() (gas: 65281)\n[PASS] testTransferRejectsZeroRecipientEvenForZeroAmount() (gas: 71904)\n[PASS] testZeroTransferFromEmptyAccountEmitsEvent() (gas: 73430)\n[PASS] testZeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 81501)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 30.03ms (119.25ms CPU time)\n\nRan 1 test for test/YoloToken.invariant.t.sol:YoloTokenInvariantTest\n[PASS] invariantSupplyAndBalancesAreConserved() (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+--------------+-------+---------+----------╮\n| Contract    | Selector     | Calls | Reverts | Discards |\n+=========================================================+\n| YoloHandler | approve      | 2719  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| YoloHandler | transfer     | 2755  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| YoloHandler | transferFrom | 2718  | 0       | 0        |\n╰-------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 100\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 14\n  Bound result 2679\n  Bound result 0\n  Bound result 5450\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 6\n  Bound result 6819\n  Bound result 6\n  Bound result 0\n  Bound result 0\n  Bound result 7\n  Bound result 18\n  Bound result 0\n  Bound result 4\n  Bound result 1\n  Bound result 0\n  Bound result 153563697890648810538293097\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 100\n  Bound result 5563\n  Bound result 0\n  Bound result 4213337420\n  Bound result 3045\n  Bound result 36387130204446\n  Bound result 5359\n  Bound result 0\n  Bound result 255\n  Bound result 2713\n  Bound result 1000000000\n  Bound result 2894\n  Bound result 3272\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 644.59ms (643.29ms CPU time)\n\nRan 2 test suites in 645.72ms (674.62ms CPU time): 28 tests passed, 0 failed, 0 skipped (28 total tests)\n","passed":true},{"durationMs":60,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"YoloToken.approve(address,uint256)\",\"YoloToken.transfer(address,uint256)\",\"YoloToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":126,\"foundry.toml\":18,\"remappings.txt\":2,\"src/YoloToken.sol\":17,\"test/YoloToken.invariant.t.sol\":87,\"test/YoloToken.t.sol\":379},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":444,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":250,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/YoloToken.sol:11: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"26b67fcc71c4e0f965bda604e8b9e0504d62d0871f9ecca56b829e0a963208c6","verifiedTreeHash":"bd6192d63707893bb38ae8723f58113fffee9a49","verifierVersion":"0.1.0+475a429a"},{"checks":[{"durationMs":5789,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 5.54s\nCompiler run successful!\n","passed":true},{"durationMs":22074,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 27 tests for test/YoloToken.t.sol:YoloTokenTest\n[PASS] testApprovalCanBeReplacedAndRevoked() (gas: 174387)\n[PASS] testApprovalEmitsEventAndDoesNotMoveFunds() (gas: 116779)\n[PASS] testApprovalRejectsZeroSpender() (gas: 61875)\n[PASS] testCommonMintBurnAndAdminCallsAreUnavailableToEveryone() (gas: 1321584)\n[PASS] testConstructorEmitsExactlyOneMint() (gas: 9753)\n[PASS] testCreate2DeploymentMintsToFactoryWithoutConstructorArguments() (gas: 240420)\n[PASS] testFuzzTransferConservesSupply(uint256) (runs: 1000, μ: 187515, ~: 188086)\nLogs:\n  Bound result 2\n\n[PASS] testFuzzTransferFromRejectsAnyAmountAboveAllowance(uint256,uint256) (runs: 1000, μ: 123195, ~: 123781)\nLogs:\n  Bound result 369632029805530945059156435\n  Bound result 861247540890878954946464389\n\n[PASS] testFuzzTransferFromRespectsBalanceAndAllowance(uint256,uint256) (runs: 1000, μ: 162588, ~: 165270)\nLogs:\n  Bound result 0\n  Bound result 0\n\n[PASS] testFuzzTransferRejectsAnyAmountAboveBalance(uint256) (runs: 1000, μ: 69122, ~: 69468)\nLogs:\n  Bound result 1000000000000000000000000003\n\n[PASS] testLaunchDistributionClaimsAndTradingTransfersAreExact() (gas: 416834)\n[PASS] testMetadataAndWholeSupplyBelongToDeployer() (gas: 107759)\n[PASS] testSelfTransferPreservesBalance() (gas: 54014)\n[PASS] testTransferDeliversExactAmountAndEmitsEvent() (gas: 91496)\n[PASS] testTransferEntireBalance() (gas: 75806)\n[PASS] testTransferFromByHolderStillRequiresAllowance() (gas: 42628)\n[PASS] testTransferFromDeliversExactAmountAndConsumesAllowance() (gas: 257066)\n[PASS] testTransferFromFailureRestoresAllowanceOnInsufficientBalance() (gas: 126628)\n[PASS] testTransferFromFailureRestoresAllowanceOnZeroRecipient() (gas: 114494)\n[PASS] testTransferFromRejectsAllowanceOverspend() (gas: 116102)\n[PASS] testTransferFromRejectsUnapprovedCaller() (gas: 118263)\n[PASS] testTransferFromToSameHolderConsumesAllowanceWithoutMovingBalance() (gas: 103654)\n[PASS] testTransferFromWithInfiniteApprovalDoesNotDecreaseAllowance() (gas: 150115)\n[PASS] testTransferRejectsInsufficientBalanceAndPreservesState() (gas: 65281)\n[PASS] testTransferRejectsZeroRecipientEvenForZeroAmount() (gas: 71904)\n[PASS] testZeroTransferFromEmptyAccountEmitsEvent() (gas: 73430)\n[PASS] testZeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 81501)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 148.51ms (563.27ms CPU time)\n\nRan 17 tests for test/YoloToken.edges.t.sol:YoloTokenEdgesTest\n[PASS] testAllowanceOneBelowMaxIsFinite() (gas: 124839)\n[PASS] testAllowancesAreDirectionalAndPerOwner() (gas: 197053)\n[PASS] testContractHoldersSendAndSpend() (gas: 492653)\n[PASS] testEachDeploymentIsIndependent() (gas: 92362)\n[PASS] testExactAllowanceIsFullyConsumedThenRejected() (gas: 155066)\n[PASS] testFuzzApproveIsLastWriteWins(uint256,uint256) (runs: 1000, μ: 103948, ~: 104185)\n[PASS] testFuzzSplitTransfersConserve(uint256,uint256) (runs: 1000, μ: 157643, ~: 159616)\nLogs:\n  Bound result 9000\n  Bound result 40000000000000000000\n\n[PASS] testFuzzTransferFromAboveBalanceWithinAllowanceReverts(uint256,uint256) (runs: 1000, μ: 186333, ~: 187018)\nLogs:\n  Bound result 32239\n  Bound result 688733414227648968502168055\n\n[PASS] testFuzzTransferRoundTripRestoresBalances(address,uint256) (runs: 1000, μ: 121946, ~: 121922)\nLogs:\n  Bound result 214202919570076875103661462706768012024703166861\n  Bound result 599126008533819643986398880\n\n[PASS] testInfiniteAllowanceStillBoundedByBalance() (gas: 98488)\n[PASS] testOneCallLaunchFlowsArriveWhole(uint256) (runs: 1000, μ: 500223, ~: 501041)\nLogs:\n  Bound result 7813\n\n[PASS] testOneWeiBoundaryOnBalance() (gas: 181016)\n[PASS] testRejectsEtherAndUnknownCalldata() (gas: 101328)\n[PASS] testRejectsPermitAndOtherExtensions() (gas: 133832)\n[PASS] testSelfApprovalStillGatesTransferFrom() (gas: 149785)\n[PASS] testSupplyIsExactlyTenToTheTwentySeven() (gas: 42386)\n[PASS] testTokensSentToTheTokenContractAreUnrecoverable() (gas: 131540)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 192.45ms (756.10ms CPU time)\n\nRan 1 test for test/YoloToken.invariant.t.sol:YoloTokenInvariantTest\n[PASS] invariantSupplyAndBalancesAreConserved() (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+--------------+-------+---------+----------╮\n| Contract    | Selector     | Calls | Reverts | Discards |\n+=========================================================+\n| YoloHandler | approve      | 2719  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| YoloHandler | transfer     | 2755  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| YoloHandler | transferFrom | 2718  | 0       | 0        |\n╰-------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 8\n  Bound result 0\n  Bound result 3274\n  Bound result 0\n  Bound result 27\n  Bound result 0\n  Bound result 40000000000000000000\n  Bound result 0\n  Bound result 0\n  Bound result 5564\n  Bound result 1000000000\n  Bound result 0\n  Bound result 0\n  Bound result 40000000000000000000\n  Bound result 5053\n  Bound result 6763\n  Bound result 15000000000000000000\n  Bound result 0\n  Bound result 11\n  Bound result 11\n  Bound result 10000\n  Bound result 4\n  Bound result 27\n  Bound result 0\n  Bound result 27\n  Bound result 153563697890648810528026287\n  Bound result 2\n  Bound result 0\n  Bound result 5229\n  Bound result 14\n  Bound result 194041916966862175274612379\n  Bound result 5808\n  Bound result 9000\n  Bound result 374\n  Bound result 0\n  Bound result 36387130204446\n  Bound result 706\n  Bound result 5563\n  Bound result 100\n  Bound result 431\n  Bound result 1000000000\n  Bound result 3574\n  Bound result 6049\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.96s (1.95s CPU time)\n\nRan 1 test for test/YoloToken.model.invariant.t.sol:YoloTokenModelInvariantTest\n[PASS]\nYoloTokenModelInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_balancesMatchModel\n[PASS] invariant_balancesSumToSupplyAndNothingLeaks\n[PASS] invariant_supplyIsFixed\n YoloTokenModelInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭------------------+----------------------------+-------+---------+----------╮\n| Contract         | Selector                   | Calls | Reverts | Discards |\n+============================================================================+\n| YoloModelHandler | approve                    | 2103  | 0       | 0        |\n|------------------+----------------------------+-------+---------+----------|\n| YoloModelHandler | callUnknownSelector        | 2041  | 0       | 0        |\n|------------------+----------------------------+-------+---------+----------|\n| YoloModelHandler | sendToZeroAddress          | 2064  | 0       | 0        |\n|------------------+----------------------------+-------+---------+----------|\n| YoloModelHandler | transfer                   | 1989  | 0       | 0        |\n|------------------+----------------------------+-------+---------+----------|\n| YoloModelHandler | transferAboveBalance       | 2100  | 0       | 0        |\n|------------------+----------------------------+-------+---------+----------|\n| YoloModelHandler | transferFrom               | 1999  | 0       | 0        |\n|------------------+----------------------------+-------+---------+----------|\n| YoloModelHandler | transferFromAboveAllowance | 2031  | 0       | 0        |\n|------------------+----------------------------+-------+---------+----------|\n| YoloModelHandler | transferFromAboveBalance   | 2057  | 0       | 0        |\n╰------------------+----------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 5886\n  Bound result 0\n  Bound result 0\n  Bound result 8978\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 2886\n  Bound result 0\n  Bound result 255\n  Bound result 27\n  Bound result 13\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 10000000000000000000\n  Bound result 0\n  Bound result 94\n  Bound result 4879\n  Bound result 100\n  Bound result 251750099195744982678578625\n  Bound result 27\n  Bound result 2835717307\n  Bound result 8165\n  Bound result 0\n  Bound result 18\n  Bound result 3714247997\n  Bound result 9\n  Bound result 635\n  Bound result 0\n  Bound result 999999999999999986\n  Bound result 0\n  Bound result 0\n  Bound result 100000000000000000000\n  Bound result 38\n  Bound result 0\n  Bound result 0\n  Bound result 9255\n  Bound result 0\n  Bound result 3\n  Bound result 10000\n  Bound result 26409663560779159245957853369630291191693597991513560285392977449354095080820\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 21.71s (21.71s CPU time)\n\nRan 4 test suites in 21.72s (24.01s CPU time): 46 tests passed, 0 failed, 0 skipped (46 total tests)\n","passed":true},{"durationMs":157,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"YoloToken.approve(address,uint256)\",\"YoloToken.transfer(address,uint256)\",\"YoloToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":126,\"foundry.toml\":18,\"remappings.txt\":2,\"src/YoloToken.sol\":17,\"test/YoloToken.edges.t.sol\":243,\"test/YoloToken.invariant.t.sol\":87,\"test/YoloToken.model.invariant.t.sol\":267,\"test/YoloToken.t.sol\":379},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"982b40e0f8ea144fd8893c21cef4991395470b714ea1fb08b681dbffc2bd6f18","verifiedTreeHash":"2d60d5b9ba3c0b0cd39738a8f3ac57201d67db1e","verifierVersion":"0.1.0+475a429a"},{"checks":[{"durationMs":1077,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.01s\nCompiler run successful!\n","passed":true},{"durationMs":694,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 27 tests for test/YoloToken.t.sol:YoloTokenTest\n[PASS] testApprovalCanBeReplacedAndRevoked() (gas: 174387)\n[PASS] testApprovalEmitsEventAndDoesNotMoveFunds() (gas: 116779)\n[PASS] testApprovalRejectsZeroSpender() (gas: 61875)\n[PASS] testCommonMintBurnAndAdminCallsAreUnavailableToEveryone() (gas: 1321584)\n[PASS] testConstructorEmitsExactlyOneMint() (gas: 9753)\n[PASS] testCreate2DeploymentMintsToFactoryWithoutConstructorArguments() (gas: 240420)\n[PASS] testFuzzTransferConservesSupply(uint256) (runs: 1000, μ: 187380, ~: 188086)\nLogs:\n  Bound result 1\n\n[PASS] testFuzzTransferFromRejectsAnyAmountAboveAllowance(uint256,uint256) (runs: 1000, μ: 123167, ~: 123779)\nLogs:\n  Bound result 14401\n  Bound result 999999999999999999999985604\n\n[PASS] testFuzzTransferFromRespectsBalanceAndAllowance(uint256,uint256) (runs: 1000, μ: 162333, ~: 165270)\nLogs:\n  Bound result 0\n  Bound result 0\n\n[PASS] testFuzzTransferRejectsAnyAmountAboveBalance(uint256) (runs: 1000, μ: 69126, ~: 69468)\nLogs:\n  Bound result 550749194274370751322645192623032434873342\n\n[PASS] testLaunchDistributionClaimsAndTradingTransfersAreExact() (gas: 416834)\n[PASS] testMetadataAndWholeSupplyBelongToDeployer() (gas: 107759)\n[PASS] testSelfTransferPreservesBalance() (gas: 54014)\n[PASS] testTransferDeliversExactAmountAndEmitsEvent() (gas: 91496)\n[PASS] testTransferEntireBalance() (gas: 75806)\n[PASS] testTransferFromByHolderStillRequiresAllowance() (gas: 42628)\n[PASS] testTransferFromDeliversExactAmountAndConsumesAllowance() (gas: 257066)\n[PASS] testTransferFromFailureRestoresAllowanceOnInsufficientBalance() (gas: 126628)\n[PASS] testTransferFromFailureRestoresAllowanceOnZeroRecipient() (gas: 114494)\n[PASS] testTransferFromRejectsAllowanceOverspend() (gas: 116102)\n[PASS] testTransferFromRejectsUnapprovedCaller() (gas: 118263)\n[PASS] testTransferFromToSameHolderConsumesAllowanceWithoutMovingBalance() (gas: 103654)\n[PASS] testTransferFromWithInfiniteApprovalDoesNotDecreaseAllowance() (gas: 150115)\n[PASS] testTransferRejectsInsufficientBalanceAndPreservesState() (gas: 65281)\n[PASS] testTransferRejectsZeroRecipientEvenForZeroAmount() (gas: 71904)\n[PASS] testZeroTransferFromEmptyAccountEmitsEvent() (gas: 73430)\n[PASS] testZeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 81501)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 43.47ms (146.96ms CPU time)\n\nRan 1 test for test/YoloToken.invariant.t.sol:YoloTokenInvariantTest\n[PASS] invariantSupplyAndBalancesAreConserved() (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+--------------+-------+---------+----------╮\n| Contract    | Selector     | Calls | Reverts | Discards |\n+=========================================================+\n| YoloHandler | approve      | 2719  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| YoloHandler | transfer     | 2755  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| YoloHandler | transferFrom | 2718  | 0       | 0        |\n╰-------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 100\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 14\n  Bound result 2679\n  Bound result 0\n  Bound result 5450\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 6\n  Bound result 6819\n  Bound result 6\n  Bound result 0\n  Bound result 0\n  Bound result 7\n  Bound result 18\n  Bound result 0\n  Bound result 4\n  Bound result 1\n  Bound result 0\n  Bound result 153563697890648810538293097\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 100\n  Bound result 5563\n  Bound result 0\n  Bound result 4213337420\n  Bound result 3045\n  Bound result 36387130204446\n  Bound result 5359\n  Bound result 0\n  Bound result 255\n  Bound result 2713\n  Bound result 1000000000\n  Bound result 2894\n  Bound result 3272\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 609.32ms (608.18ms CPU time)\n\nRan 2 test suites in 610.62ms (652.79ms CPU time): 28 tests passed, 0 failed, 0 skipped (28 total tests)\n","passed":true},{"durationMs":34,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"YoloToken.approve(address,uint256)\",\"YoloToken.transfer(address,uint256)\",\"YoloToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":126,\"foundry.toml\":18,\"launch.json\":24,\"remappings.txt\":2,\"src/YoloToken.sol\":17,\"test/YoloToken.invariant.t.sol\":87,\"test/YoloToken.t.sol\":379},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"9a048417ef071b92e8ab21a1b285b48a379f0d4e3742c5f511d91c24a298869a","verifiedTreeHash":"4e1178a9f3b1899f0c026692fceb1238eca9c73c","verifierVersion":"0.1.0+475a429a"}]}