{"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":"524d3d5f-1071-447d-b790-0accc65fdefc","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"3729f5ab1b613c93702b2b617c5244f95b36b273a877af09112400e6691d03eb","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":"d6f7462a7acda92ab666146b348d9c5a3de95f1993c2aeb5e5b2d5e13109acc3","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":"0614b1b7b83fd474c9e989c600b1e04adce412497e3822eccd619fb2c4cb2e6c","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":"aced271e629214142c03651133f00957f689627613420a737cff804ab95ad34b","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":"8fcfca930c822e6273f40843adccdf9a63123eaa7149fa74e41a5e8541f9ed55","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":"dcb6b91aab76f94cbf762c28fefebcfa61d54735ab6210a37e4a91e5232fc1e7","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":"01d5945d2e63e8f89a079d157c2315048f6d59c020fa44a77a8e43c96477b08c","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"ef32def6ec4240af29a0ef6baf94a7f01a06bc052494f85460aaaf2f19b7ef64","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: Super Fren Pet (SFP).\nToken name: Super Fren Pet\nToken symbol: SFP\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"d721d951babbba385d59da265f92084000040e0e1eec03367cd6b11c9cff236b","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"524d3d5f-1071-447d-b790-0accc65fdefc","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2384-super-fren-pet"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52151","feedbackHash":"3180e77ef5bf9be3adc561abdd392ea0ee6bf2123872158da162b0555635b8b7","nodeKey":"audit_economics","submissionHash":"3729f5ab1b613c93702b2b617c5244f95b36b273a877af09112400e6691d03eb","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52121","feedbackHash":"1820d64f18fbc4bf9aa6622221b7f3485eb6c1047302c06250a4b25b6aa6cff5","nodeKey":"audit_flow","submissionHash":"d6f7462a7acda92ab666146b348d9c5a3de95f1993c2aeb5e5b2d5e13109acc3","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52191","feedbackHash":"a4e2289d2ccdc6acc9b18148087b2a9664bd1d4e3d2fa1a148c9685573f1f689","nodeKey":"audit_judge","submissionHash":"0614b1b7b83fd474c9e989c600b1e04adce412497e3822eccd619fb2c4cb2e6c","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52263","feedbackHash":"297969a984e1c1ba1ea4f290fbae12979b6801ab673098e4a2142a95b0cd9bfa","nodeKey":"audit_math","submissionHash":"aced271e629214142c03651133f00957f689627613420a737cff804ab95ad34b","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"53909","feedbackHash":"3a5eeafa381048b5bf59b717f17d7e49bf3d64bac9f0a89c95763c1f93295f98","nodeKey":"audit_permissions","submissionHash":"8fcfca930c822e6273f40843adccdf9a63123eaa7149fa74e41a5e8541f9ed55","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52148","feedbackHash":"61765cd333ed760370a601606bdc1376855069a87372d5c671d701e51a520880","nodeKey":"build_contract_project","submissionHash":"dcb6b91aab76f94cbf762c28fefebcfa61d54735ab6210a37e4a91e5232fc1e7","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52671","feedbackHash":"c5c5b644d2d00038e680a69757eee2c89853f91ca93e65262cca3d790ec02207","nodeKey":"manifest","submissionHash":"01d5945d2e63e8f89a079d157c2315048f6d59c020fa44a77a8e43c96477b08c","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52208","feedbackHash":"a88715f4f81b7cbbe9ea40fa9d4333a0c50a01cb9d102ccf2518b3dee745991c","nodeKey":"write_foundry_tests","submissionHash":"ef32def6ec4240af29a0ef6baf94a7f01a06bc052494f85460aaaf2f19b7ef64","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"980ab714332c22c4951e05f48ce867cb6560d63e75c56c6f066541e0ebce5d43","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"752f4622882fb8fcd9ba5c26a5c203f98ab2ee33bcdfd49db5447e62df067884","device":"e293ff3324f7ddb5","findings":[],"hash":"01d5945d2e63e8f89a079d157c2315048f6d59c020fa44a77a8e43c96477b08c","nodeId":"0b3197d1-4653-4c1f-8f32-f9f15d96a6d9","outcome":"completed","summary":"I wrote `launch.json` for the `SuperFrenPet` token. It's the only file I created or changed. The JSON parses, `forge build` succeeds and `forge test` passes all 33 tests. I didn't run anything that validates the manifest against the launch schema, and I didn't run the tests with the fuzz seed you gave.\n\n- **Token:** the contract `SuperFrenPet` (Super Fren Pet, SFP, 18 decimals) takes no constructor arguments. Its constructor mints 1,000,000,000 SFP once to the deployer. So `constructorArgs` is empty and `totalSupply` is `\"1000000000000000000000000000\"`.\n- **Application contracts:** none. The token is the only contract in the accepted code, so `contracts` is an empty list.\n- **Pool:** paired with IMD at `0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7`, fee 12500, tick spacing 60, and the one-to-one initial price from the launch reference.\n- **Economics:** copied exactly as given (`poolBps` 8000, `initialMarketCapWei` `\"4500000000000000000000\"`, `remainderTo` `0x612a…3367`).\n- **Notes:** a short description of the fixed-supply token. It has no fees, burns, owner or privileged functions.","treeHash":"a2a3112b1a8ab20af384e1fcd43180b713f9836f","usage":{"cachedInputTokens":80515,"inputTokens":6,"model":"claude-opus-5-5","outputTokens":1239,"runtime":"claude","turns":3,"wallClockMs":20803}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"1f9cb1750ebf47ed","findings":[{"citation":"resolved","description":"Merged from the audit_flow (low), audit_permissions (info), audit_math (info) and audit_economics (info) reports, which all describe the same root cause; I reproduced it independently. DEPENDENCIES.md asserts that every vendored file is an unmodified copy of its pinned release and gives `sha256sum -c lib/SHA256SUMS` as the check. On the committed tree that command reports 29 OK and 7 FAILED, exit status 1. The seven failing files are all forge-std v1.9.7 sources: lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. I downloaded the upstream v1.9.7 tarball into an empty directory and compared: for every one of the seven, the hash recorded in lib/SHA256SUMS equals the upstream file's hash, the in-tree file hashes differently, and the two files become byte-identical once all whitespace and line breaks are stripped. So the in-tree copies were reflowed (consistent with `forge fmt` having been run over lib/, which is why the README's `forge fmt --check` passes) and the recorded hashes are the genuine upstream ones. All six OpenZeppelin v5.0.2 entries verify OK, and I separately confirmed lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol matches the upstream v5.0.2 raw file byte-for-byte (sha256 2d874da1c1478ed2…). Only the OpenZeppelin files reach the production bytecode of SuperFrenPet; forge-std is test-only. Impact is therefore limited to provenance: the project's own documented integrity check fails as shipped, so a reader following it cannot distinguish this benign reflow from tampering without fetching upstream themselves. No effect on supply, transfers, approvals, the launch flows or the manifest. Minimal fix: restore the seven files from the v1.9.7 tarball byte-for-byte and exclude lib/ from `forge fmt` (an `ignore` entry under [fmt] in foundry.toml), or regenerate lib/SHA256SUMS from the in-tree files and reword line 18 to say forge-std was reformatted.","line":18,"path":"DEPENDENCIES.md","reproduction":"State: the repository as checked out at HEAD (ad18118), no local edits. Input: from the repository root run exactly the command DEPENDENCIES.md line 22 gives: `sha256sum -c lib/SHA256SUMS`. Expected, per DEPENDENCIES.md line 18: every line reports OK and the exit status is 0. Actual: 29 lines OK, then `lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`, `sha256sum: WARNING: 7 computed checksums did NOT match`, exit status 1. Cross-check: `curl -sSL https://codeload.github.com/foundry-rs/forge-std/tar.gz/refs/tags/v1.9.7 | tar xz` in an empty directory, then `sha256sum forge-std-1.9.7/src/StdAssertions.sol` gives d4c89eec70d2…, the value lib/SHA256SUMS records, while `sha256sum lib/forge-std/src/StdAssertions.sol` gives 3fbf4a025b4f…; `tr -d ' \\n\\t' < each | sha256sum` gives the same digest for both, and likewise for the other six files (Vm.sol: upstream/listed 9068805b59ac…, in-tree a1b1c82924ae…).","severity":"low","snippet":"The files are unmodified copies. From the root of this project, verify the\nvendored contents with:\n\n```sh\nsha256sum -c lib/SHA256SUMS\n```","title":"DEPENDENCIES.md says the vendored files are unmodified and verifiable, but `sha256sum -c lib/SHA256SUMS` fails on seven forge-std files (test-only; token bytecode unaffected)"}],"hash":"0614b1b7b83fd474c9e989c600b1e04adce412497e3822eccd619fb2c4cb2e6c","nodeId":"e5e4495b-9463-4566-9b87-369e7422894e","outcome":"completed","summary":"The review is complete and `.imd-findings.json` holds the result. The tree has no other changes; the scratch test I used was removed.\n\n**Outcome:** one low-severity finding, merged from the four specialists' reports, and no defects in the token itself.\n\n- **Kept and merged:** all four specialists reported the same root cause, that DEPENDENCIES.md line 18 claims the vendored files are unmodified and verifiable while `sha256sum -c lib/SHA256SUMS` fails. I reproduced it: 29 entries pass and 7 forge-std v1.9.7 files fail with exit status 1. I fetched the upstream v1.9.7 tarball into an empty directory and confirmed the recorded hashes are upstream's and the in-tree files differ only by whitespace reflow. The OpenZeppelin ERC20 matches upstream v5.0.2 byte-for-byte, so the production bytecode is unaffected. Severity stays low, as a false provenance claim with no funds or behavior impact.\n- **Independent pass on the token:** SuperFrenPet is a 17-line wrapper over unmodified OpenZeppelin ERC20. The ABI exposes only the three standard state changers plus views. There is no mint, burn, owner, pause, blacklist or upgrade path, no external call, and no DELEGATECALL, CALLCODE or SELFDESTRUCT. Runtime is 1,752 bytes, far under the limits. The project's 49 tests pass under the pinned fuzz seed, and a scratch test I ran with concrete values confirmed the revert paths and the unchanged infinite allowance.\n- **Manifest:** launch.json matches the source. Constructor arguments are empty, supply is 10^27, decimals 18, name and symbol match, addresses are lowercase, notes are short. Nothing in the deployment model blocks it.\n\n**Coverage:** approve, transfer and transferFrom all marked holds, plus one row for the constructor and supply invariant.\n\n**Next:** the author should either restore the seven forge-std files from upstream and exclude lib/ from `forge fmt`, or regenerate the checksum list and reword the \"unmodified copies\" sentence.","treeHash":null,"usage":{"cachedInputTokens":603728,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":8943,"runtime":"claude","turns":12,"wallClockMs":154373}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"cdeffb0cd839cbf7","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states the vendored sources are unmodified copies and tells the reader to verify them with `sha256sum -c lib/SHA256SUMS`. The listed hashes do match upstream forge-std v1.9.7 (fetched from raw.githubusercontent.com and compared), but seven files under lib/forge-std/src in the committed tree (StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol) have different contents: they were re-wrapped by `forge fmt` (multi-line signatures joined onto one line; no semantic change). So the documented verification step fails as shipped. All five OpenZeppelin files (ERC20.sol, IERC20.sol, IERC20Metadata.sol, Context.sol, draft-IERC6093.sol) match both the checksum list and upstream v5.0.2 byte-for-byte, so the production token bytecode is unaffected; forge-std is test-only. Economic, invariant and flow impact: none. Fix: either restore the seven forge-std files from the v1.9.7 tarball (and exclude lib/ from `forge fmt`), or regenerate lib/SHA256SUMS from the tree and drop the word 'unmodified'.","line":18,"path":"DEPENDENCIES.md","reproduction":"From the repository root run `sha256sum -c lib/SHA256SUMS`. Expected (per DEPENDENCIES.md line 18-25): every line OK. Actual: `lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`, `sha256sum: WARNING: 7 computed checksums did NOT match`. Example: lib/SHA256SUMS line 11 lists d4c89eec… for StdAssertions.sol (equal to upstream v1.9.7), while `sha256sum lib/forge-std/src/StdAssertions.sol` gives 3fbf4a02…. `diff` against the upstream file shows only whitespace/line-wrapping changes.","severity":"info","snippet":"The files are unmodified copies. From the root of this project, verify the","title":"DEPENDENCIES.md claims vendored files are unmodified and verifiable, but sha256sum -c lib/SHA256SUMS fails on 7 forge-std files"}],"hash":"3729f5ab1b613c93702b2b617c5244f95b36b273a877af09112400e6691d03eb","nodeId":"49b0e2a2-37e3-4d4b-bba8-4848704d5356","outcome":"completed","summary":"The review is complete. The findings file is written and validated, the scratch tests are removed, and the only path changed in the tree is `.imd-findings.json`.\n\n**Outcome: no economic, invariant or flow defect in the SFP token.** One info-level documentation inconsistency was found.\n\n**What the token is.** `src/SuperFrenPet.sol` is a 16-line contract: stock OpenZeppelin v5.0.2 ERC20 with a constructor that mints 1,000,000,000 × 10^18 to `msg.sender`. No arguments, no owner, no hooks, no external calls. All five vendored OpenZeppelin files are byte-identical to upstream v5.0.2, confirmed by hash against GitHub.\n\n**Coverage of the assigned area.**\n- Economic Security: no oracle, callback, fee, burn, rebase, pause or blacklist exists, so none of the guide's dependency or token-misbehavior failure modes have a surface. Zero-address recipient and spender revert rather than silently succeeding.\n- Invariant: supply is fixed at construction and conserved by the OZ `_update` path. No external mint or burn is reachable. The project's 33 tests and its stateful invariant suite pass, and a scratch test confirmed a CREATE2 deployment from a factory stub puts the whole supply at the factory and moves the 10/80/10 split and a claim exactly.\n- Flow Gap: the token makes no periphery call, so there is no seam to exploit. A scratch opcode walk over the compiled runtime found no DELEGATECALL, CALLCODE or SELFDESTRUCT. The real Uniswap v4 seed and swap were not executed locally because v4-core is not vendored, but a no-fee stock ERC-20 has no mechanism to short or revert them.\n\n**The one finding (info).** `DEPENDENCIES.md` says the vendored files are unmodified and tells readers to run `sha256sum -c lib/SHA256SUMS`. That command fails on seven forge-std files, which were re-wrapped by `forge fmt` after the checksums were computed. The listed hashes equal upstream v1.9.7, the diffs are whitespace only, and forge-std never ships in the token, so there is no production impact. The fix is to restore the files or regenerate the checksum list.\n\n**Not reported as defects.** The ERC-20 approve front-running race and the absence of an `Approval` event on `transferFrom` are standard semantics the README documents, and the brief asked for a standard token.\n\nAll three entry points have a `holds` coverage row, plus six rows for the invariants and flows checked and one `finding` row for the provenance note.","treeHash":null,"usage":{"cachedInputTokens":898427,"inputTokens":450,"model":"claude-fable-5-1","outputTokens":16489,"runtime":"claude","turns":23,"wallClockMs":322820}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"782f24113d209be2","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states every vendored file is an unmodified copy of its pinned release and that `sha256sum -c lib/SHA256SUMS` verifies this. In the committed tree the hashes listed in lib/SHA256SUMS for forge-std match upstream v1.9.7 exactly, but seven committed forge-std sources (StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol) differ from those hashes. A diff against upstream v1.9.7 shows only whitespace/line-wrapping changes (long function signatures reflowed onto one line), so the semantic content is unchanged. All five OpenZeppelin v5.0.2 files match upstream byte-for-byte, and only those contribute to the production token bytecode. This is a documentation/integrity-claim inaccuracy, not a defect in SuperFrenPet: nothing in the token's access surface, supply or transfer behaviour is affected. Reported so the stated verification step is either made true (re-copy the seven files or regenerate SHA256SUMS) or the claim reworded.","line":18,"path":"DEPENDENCIES.md","reproduction":"State: the committed tree at HEAD, no local edits. Run from the repository root: `sha256sum -c lib/SHA256SUMS`. Expected per DEPENDENCIES.md: every line prints OK. Actual: 29 lines OK and 7 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: `sha256sum lib/forge-std/src/Vm.sol` gives a1b1c829..., lib/SHA256SUMS and upstream raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/Vm.sol both give 9068805b...; `diff` of the two files shows only reflowed signatures.","severity":"info","snippet":"The files are unmodified copies. From the root of this project, verify the\nvendored contents with:","title":"DEPENDENCIES.md checksum verification claim is false for 7 vendored forge-std files (test-only, no effect on token bytecode)"}],"hash":"8fcfca930c822e6273f40843adccdf9a63123eaa7149fa74e41a5e8541f9ed55","nodeId":"7788dab7-9bec-435d-a744-03c1ce08e7b5","outcome":"completed","summary":"The review is complete and the findings file is written. No defects were found in the assigned area.\n\n**Result:** the token at `src/SuperFrenPet.sol` is a stock OpenZeppelin v5.0.2 ERC-20 with a single constructor mint and nothing else. Across the Access Control, Trust Gap and Asymmetry guides, every failure mode they list needs a role, an initializer, a settable parameter, a privileged variant, or a branch that treats callers differently. This contract has none of those, so no finding could be substantiated.\n\nWhat I verified, with evidence:\n\n- **Access surface.** The ABI exposes only approve, transfer, transferFrom, the ERC-20 views and the supply constant. The constructor takes no arguments and is nonpayable. A scratch test called 22 admin-looking selectors from both the deployer and a stranger, and all reverted without changing any balance or the supply.\n- **Deployer trust.** The deployer holds the whole supply after construction, as the launch requires. It cannot pull a holder's tokens without an allowance; the revert is the standard insufficient-allowance error.\n- **Asymmetry.** transfer and transferFrom share one `_update` path with no override, so launch flows move exactly the stated amount. The only asymmetry is the documented OpenZeppelin behaviour that transferFrom from your own account needs a self-allowance and that infinite allowances are not decremented.\n- **Bytecode.** An opcode walk of the compiled runtime found no reachable DELEGATECALL, CALLCODE or SELFDESTRUCT. There is no receive or fallback.\n- **Dependencies.** All five vendored OpenZeppelin files hash identically to upstream v5.0.2.\n- **Tests.** The project's 33 tests, including the invariant suite, pass with the README's seed.\n\nOne info-level note is recorded. DEPENDENCIES.md says `sha256sum -c lib/SHA256SUMS` verifies that the vendored files are unmodified, but seven forge-std files in the committed tree fail that check. The differences against upstream v1.9.7 are formatting only, and forge-std never reaches the token bytecode, so this affects the documentation claim and nothing else.\n\nCoverage in `.imd-findings.json` marks all three listed entry points as holds and adds six invariant rows. The v4 pool seed itself was not re-run locally because v4-core is not vendored. The scratch test was removed, and the working tree holds only the findings file.","treeHash":null,"usage":{"cachedInputTokens":834274,"inputTokens":418,"model":"claude-fable-5-1","outputTokens":14874,"runtime":"claude","turns":20,"wallClockMs":200998}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"6b16b4979d227241","findings":[{"citation":"resolved","description":"Outside the assigned math area; reported because it is reproducible and misstates provenance. The six OpenZeppelin v5.0.2 files that make up the token's production bytecode all match their listed checksums, so the shipped token is unaffected. Seven forge-std v1.9.7 files (StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol) do not match the checksums in lib/SHA256SUMS. The listed checksums equal the upstream v1.9.7 raw files; the local copies differ from upstream only by formatting (long function signatures re-wrapped, e.g. Vm.sol getDeployment / parseJsonAddressArray split across lines in upstream and joined locally), consistent with `forge fmt` having been run over lib/. Test-only code; no effect on src/SuperFrenPet.sol or its runtime bytecode. Fix: either restore the seven upstream files byte-for-byte, or regenerate lib/SHA256SUMS and drop the 'unmodified copies' sentence.","line":18,"path":"DEPENDENCIES.md","reproduction":"From the repository root run `sha256sum -c lib/SHA256SUMS`. Expected per DEPENDENCIES.md: every line OK, exit 0. Actual: exit 1 with `sha256sum: WARNING: 7 computed checksums did NOT match`; FAILED lines are lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol. All six lib/openzeppelin-contracts/** entries report OK. Fetching https://raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/Vm.sol gives sha256 9068805b59ac..., equal to the listed value and different from the local a1b1c82924ae...; `diff` shows only whitespace/line-wrapping changes.","severity":"info","snippet":"The files are unmodified copies. From the root of this project, verify the","title":"DEPENDENCIES.md claims vendored copies are unmodified and verifiable, but `sha256sum -c lib/SHA256SUMS` fails for 7 forge-std files"}],"hash":"aced271e629214142c03651133f00957f689627613420a737cff804ab95ad34b","nodeId":"e0d3d61a-1293-4f37-9a82-b958ab2a3865","outcome":"completed","summary":"The review is complete. The findings file is written and the tree is otherwise untouched.\n\n**Result: no math defects.** The token is a bare OpenZeppelin 5.0.2 ERC20 with one constant. It has no division, variable multiplication, downcast, scale conversion, external call, payable path or bytes decoding, so nothing the Math Precision, Boundary or Numerical Gap guides list can occur in it. The constant evaluates exactly to ten to the twenty-seventh, decimals are 18, and the supply is minted once to the deployer.\n\n**What I verified by tracing and by a scratch Foundry test**, all behaving as the standard requires:\n\n- Transfer at zero, full balance, one over balance, and the maximum uint256, plus self-transfer through both unchecked blocks.\n- Allowance at the infinite sentinel, at one below it, and drained exactly to zero then one more.\n- Zero-address owner, receiver and spender on every entry point, each reverting before any state change.\n- Sum of balances equals total supply across 512 fuzz runs, and no mint or burn selector exists.\n- The six vendored OpenZeppelin files that form the production bytecode match their checksums.\n\n**One info-level note outside my area.** The dependency notes claim the vendored copies are unmodified and verifiable, but the checksum command fails on seven forge-std files. They differ from upstream v1.9.7 only by formatting, so tests are unaffected and the token bytecode is not involved. The finding gives the exact command and output.\n\n**Coverage.** All three entry points are marked as holding, with five extra invariant and boundary rows. The scratch test was removed after it passed.","treeHash":null,"usage":{"cachedInputTokens":697377,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":12987,"runtime":"claude","turns":20,"wallClockMs":189000}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"bdd9b74dce66953d","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states that every vendored file is an unmodified upstream copy and tells the reviewer to confirm this with `sha256sum -c lib/SHA256SUMS`. That command fails on this tree: seven 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, src/interfaces/IMulticall3.sol) have been re-wrapped (long signatures joined onto one line, consistent with a formatter pass) so their hashes differ from the recorded ones. The recorded hashes in lib/SHA256SUMS are the genuine upstream v1.9.7 hashes; the in-tree bytes are what changed. I diffed each file against the upstream v1.9.7 tarball: the differences are whitespace/line-break only, so the test library is semantically unchanged, and all six OpenZeppelin v5.0.2 files (the only code that reaches the token's bytecode) match upstream byte-for-byte. Impact is therefore limited to provenance: a reviewer who follows the project's own instructions gets a failed verification and cannot tell a benign reflow from a tampered test harness without fetching upstream themselves, which defeats the purpose of shipping SHA256SUMS. Production token behaviour is unaffected. Minimal fix: either restore the seven files to their upstream bytes (so `forge fmt` must be told to leave lib/ alone, e.g. via an `ignore` entry, since the README's `forge fmt --check` currently passes only because the files were reformatted) or regenerate lib/SHA256SUMS from the in-tree files and state in DEPENDENCIES.md that forge-std was reformatted. The first option keeps the 'unmodified copies' claim true.","line":18,"path":"DEPENDENCIES.md","reproduction":"State: the repository as checked out (commit 030fa34). Input: from the repository root run exactly the command DEPENDENCIES.md line 22 gives, `sha256sum -c lib/SHA256SUMS`. Expected (per DEPENDENCIES.md line 18): every line reports OK and the exit status is 0. Actual: 29 OK, then `lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`, `sha256sum: WARNING: 7 computed checksums did NOT match`, exit status 1. Cross-check: `curl -sSL https://codeload.github.com/foundry-rs/forge-std/tar.gz/refs/tags/v1.9.7 | tar xz` and `sha256sum forge-std-1.9.7/src/StdAssertions.sol` gives d4c89eec70d267de..., which is the value recorded in lib/SHA256SUMS, while the in-tree file hashes to 3fbf4a025b4fc94e...; `diff` shows only line re-wrapping, and stripping all whitespace from both files yields identical content for all seven.","severity":"low","snippet":"The files are unmodified copies. From the root of this project, verify the\nvendored contents with:","title":"DEPENDENCIES.md's documented provenance check fails: seven vendored forge-std files do not match lib/SHA256SUMS"}],"hash":"d6f7462a7acda92ab666146b348d9c5a3de95f1993c2aeb5e5b2d5e13109acc3","nodeId":"e8a09669-69bd-4ede-9bc6-41c57780b333","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written. Git shows no change to tracked files, and the scratch test is removed.\n\n**Result:** the token's control flow holds. One low-severity provenance defect was found, outside the assigned area.\n\n**What was checked in the assigned area**\n\n- **Execution Trace.** All three entry points, `approve`, `transfer` and `transferFrom`, are unmodified OpenZeppelin v5.0.2 code. I traced each from caller to final state: zero-address guards, balance check before the unchecked subtraction, allowance spent before the transfer, atomic revert on every failure path, no external calls or callbacks. The only residual is the standard ERC-20 approve ordering race, which the README discloses and which is standard behaviour, not a defect.\n- **Periphery.** The six vendored OpenZeppelin files are hash-identical to upstream v5.0.2, so nothing in the library deviates from what the token assumes. `Context` returns plain `msg.sender`.\n- **First Principles.** The constructor mints exactly 10^27 units once to `msg.sender`, which is the factory in the launch. No override, mint, burn, owner, pause, freeze, or receive/fallback path exists. A scratch test replayed the protected floor locally: exact launch flows, 22 admin selectors reverting, a reachable-opcode scan for DELEGATECALL, CALLCODE and SELFDESTRUCT, and the EIP-170 size limit. All passed. The aderyn numeric-literal lead evaluates to the correct supply and is style only.\n\n**The one finding (low):** DEPENDENCIES.md claims all vendored files are unmodified and tells reviewers to confirm with the checksum file. That command fails on seven forge-std files. I fetched upstream v1.9.7 and confirmed the differences are whitespace reflows only, and the test library never reaches the token bytecode. The impact is that the project's own provenance check cannot be used as documented. The finding carries the exact command, its output, and the cross-check against upstream.\n\n**Coverage:** seven rows, three for the listed entry points and four for invariants I verified, all marked `holds`. Nothing was left unreached.","treeHash":null,"usage":{"cachedInputTokens":703126,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":12644,"runtime":"claude","turns":18,"wallClockMs":192285}},{"artifacts":[],"attempt":1,"bundleHash":"30f413d4dce24b51d0341e456f42d2a5922f389a4a84525ff749ee2304604a59","device":"94220c4a6ab72976","findings":[],"hash":"dcb6b91aab76f94cbf762c28fefebcfa61d54735ab6210a37e4a91e5232fc1e7","nodeId":"c905ca0a-3eed-49c0-a354-bc4ed41cebe5","outcome":"completed","summary":"Implemented [SuperFrenPet.sol](/root/.identitymd/work/524d3d5f-1071-447d-b790-0accc65fdefc/c905ca0a-3eed-49c0-a354-bc4ed41cebe5/src/SuperFrenPet.sol): 1 billion SFP, 18 decimals, minted once to the deployer, with no administrative powers.\n\nIncluded vendored dependencies, deployment documentation, and success/failure tests.\n\nVerified locally:\n\n- `forge build` passed.\n- `forge test` passed: 33 tests using the specified fuzz seed, including 8,192 invariant calls.\n- `forge fmt --check` passed.","treeHash":"9e0a4e56d3a4e8b1b9c2f0bc176b4049e525941c","usage":{"cachedInputTokens":332928,"inputTokens":50935,"model":"gpt-6-astra","outputTokens":13803,"runtime":"codex","turns":4,"wallClockMs":318723}},{"artifacts":[],"attempt":1,"bundleHash":"8b473b9b628084a3c80c0c894286dca2d926ff2f6075b6be1eb6e1a6b635366e","device":"9676188abd3783f2","findings":[],"hash":"ef32def6ec4240af29a0ef6baf94a7f01a06bc052494f85460aaaf2f19b7ef64","nodeId":"3ee0defd-8c73-48fa-8c42-bb9a38d56ffb","outcome":"completed","summary":"Added 16 unit/fuzz tests and strengthened invariants covering failure paths, allowance isolation, rollback, and supply conservation.\n\nValidation passed with the required seed: **49 tests**, including **32,768 invariant calls**. `forge build` passed. No contract defects found; only `test/` changed.\n\nThe external factory/Uniswap protected harness was unavailable locally.","treeHash":"39205f77185fb2afaa14dc2e4706cc866e4a64e2","usage":{"cachedInputTokens":658432,"inputTokens":71013,"model":"gpt-6-astra","outputTokens":14664,"runtime":"codex","turns":6,"wallClockMs":405558}}],"verification":[{"checks":[{"durationMs":1104,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.04s\nCompiler run successful!\n","passed":true},{"durationMs":772,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 32 tests for test/SuperFrenPet.t.sol:SuperFrenPetTest\n[PASS] testApprovalDoesNotRequireBalance() (gas: 78297)\n[PASS] testApproveReplacesAllowanceAndEmitsEvent() (gas: 119421)\n[PASS] testApproveZeroSpenderReverts() (gas: 37613)\n[PASS] testBalanceFailureRestoresSpentAllowance() (gas: 178592)\n[PASS] testConstructorEmitsExactlyOneMint() (gas: 9674)\n[PASS] testDeployerCannotSpendHolderBalanceWithoutApproval() (gas: 109699)\n[PASS] testEOADeployerReceivesEntireSupply() (gas: 28289)\n[PASS] testExhaustedAllowanceCannotBeReused() (gas: 161849)\n[PASS] testFactoryReceivesEntireSupplyInsteadOfTransactionOrigin() (gas: 286318)\n[PASS] testFuzzOverspendingRevertsWithoutChangingState(uint256,uint256) (runs: 512, μ: 126733, ~: 127052)\nLogs:\n  Bound result 554597536793545945316668707\n  Bound result 223805953397081406885660052195330193854634901823822516350232931136307549461\n\n[PASS] testFuzzTransferConservesSupply(address,uint256) (runs: 512, μ: 92694, ~: 93162)\nLogs:\n  Bound result 10634\n\n[PASS] testFuzzTransferFromConservesBalancesAndConsumesAllowance(uint256,uint256,uint256) (runs: 512, μ: 235585, ~: 238241)\nLogs:\n  Bound result 10\n  Bound result 6\n  Bound result 20907\n\n[PASS] testFuzzUnapprovedTransferReverts(uint256,uint256) (runs: 512, μ: 189071, ~: 190810)\nLogs:\n  Bound result 570868864074361523875276784\n  Bound result 285731540076057015154652596\n\n[PASS] testInfiniteAllowanceIsNotDecremented() (gas: 214754)\n[PASS] testInsufficientAllowanceRevertsAtomically() (gas: 117784)\n[PASS] testInsufficientBalanceRevertsWithoutChangingBalances() (gas: 120181)\n[PASS] testInvalidReceiverRestoresSpentAllowance() (gas: 114211)\n[PASS] testLaunchDistributionClaimAndPoolTransfersAreExact() (gas: 645425)\n[PASS] testMaximumTransferAmountRevertsWithBalanceError() (gas: 54999)\n[PASS] testMetadataAndInitialSupply() (gas: 107605)\n[PASS] testNoMintBurnOwnershipOrUpgradeEntryPoints() (gas: 565743)\n[PASS] testNoPrivilegedFreezeOrSeizureAndHolderStillTransfers() (gas: 626978)\n[PASS] testRevokedAllowanceCannotBeSpent() (gas: 120735)\n[PASS] testSelfTransferDoesNotChangeBalance() (gas: 53936)\n[PASS] testTransferDeliversExactAmountAndEmitsEvent() (gas: 91516)\n[PASS] testTransferEntireBalance() (gas: 75784)\n[PASS] testTransferFromDecrementsFiniteAllowanceAndEmitsTransfer() (gas: 219211)\n[PASS] testTransferFromToSelfConsumesAllowanceButPreservesBalance() (gas: 105377)\n[PASS] testTransferToZeroRevertsEvenForZeroAmount() (gas: 71948)\n[PASS] testUnapprovedThirdPartyCannotUseAnotherSpendersAllowance() (gas: 105253)\n[PASS] testZeroTransferFromEmptyAccountEmitsEvent() (gas: 63143)\n[PASS] testZeroTransferFromNeedsNoAllowance() (gas: 81424)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 20.43ms (76.11ms CPU time)\n\nRan 1 test for test/SuperFrenPet.invariant.t.sol:SuperFrenPetInvariantTest\n[PASS] invariantSupplyAndSumOfBalancesStayConstant() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 2727  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 2746  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 2719  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 6262\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 167\n  Bound result 562\n  Bound result 354503350072898875761860499\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 351\n  Bound result 0\n  Bound result 83\n  Bound result 9\n  Bound result 192\n  Bound result 7\n  Bound result 0\n  Bound result 8\n  Bound result 0\n  Bound result 0\n  Bound result 3520\n  Bound result 0\n  Bound result 3625\n  Bound result 430991639729155282813437498\n  Bound result 0\n  Bound result 67\n  Bound result 0\n  Bound result 17000000000000000000\n  Bound result 0\n  Bound result 6640\n  Bound result 2\n  Bound result 90\n  Bound result 5120\n  Bound result 42\n  Bound result 1257\n  Bound result 383\n  Bound result 23000000000000000000\n  Bound result 9\n  Bound result 0\n  Bound result 451\n  Bound result 0\n  Bound result 8\n  Bound result 6649\n  Bound result 0\n  Bound result 4914\n  Bound result 2682\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 693.87ms (692.43ms CPU time)\n\nRan 2 test suites in 695.16ms (714.30ms CPU time): 33 tests passed, 0 failed, 0 skipped (33 total tests)\n","passed":true},{"durationMs":33,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SuperFrenPet.approve(address,uint256)\",\"SuperFrenPet.transfer(address,uint256)\",\"SuperFrenPet.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":5,\"DEPENDENCIES.md\":27,\"README.md\":140,\"foundry.toml\":23,\"launch.json\":24,\"src/SuperFrenPet.sol\":18,\"test/SuperFrenPet.invariant.t.sol\":90,\"test/SuperFrenPet.t.sol\":447},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"01d5945d2e63e8f89a079d157c2315048f6d59c020fa44a77a8e43c96477b08c","verifiedTreeHash":"a2a3112b1a8ab20af384e1fcd43180b713f9836f","verifierVersion":"0.1.0+560ab6a2"},{"checks":[{"durationMs":1100,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.03s\nCompiler run successful!\n","passed":true},{"durationMs":768,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 32 tests for test/SuperFrenPet.t.sol:SuperFrenPetTest\n[PASS] testApprovalDoesNotRequireBalance() (gas: 78297)\n[PASS] testApproveReplacesAllowanceAndEmitsEvent() (gas: 119421)\n[PASS] testApproveZeroSpenderReverts() (gas: 37613)\n[PASS] testBalanceFailureRestoresSpentAllowance() (gas: 178592)\n[PASS] testConstructorEmitsExactlyOneMint() (gas: 9674)\n[PASS] testDeployerCannotSpendHolderBalanceWithoutApproval() (gas: 109699)\n[PASS] testEOADeployerReceivesEntireSupply() (gas: 28289)\n[PASS] testExhaustedAllowanceCannotBeReused() (gas: 161849)\n[PASS] testFactoryReceivesEntireSupplyInsteadOfTransactionOrigin() (gas: 286318)\n[PASS] testFuzzOverspendingRevertsWithoutChangingState(uint256,uint256) (runs: 512, μ: 126733, ~: 127052)\nLogs:\n  Bound result 554597536793545945316668707\n  Bound result 223805953397081406885660052195330193854634901823822516350232931136307549461\n\n[PASS] testFuzzTransferConservesSupply(address,uint256) (runs: 512, μ: 92694, ~: 93162)\nLogs:\n  Bound result 875246701633621663435886173\n\n[PASS] testFuzzTransferFromConservesBalancesAndConsumesAllowance(uint256,uint256,uint256) (runs: 512, μ: 235585, ~: 238241)\nLogs:\n  Bound result 629533237002378989349354169\n  Bound result 622090758293782642744834973\n  Bound result 14061074673729023921774271317913707002178675290901704752\n\n[PASS] testFuzzUnapprovedTransferReverts(uint256,uint256) (runs: 512, μ: 189071, ~: 190810)\nLogs:\n  Bound result 38257856856530884106\n  Bound result 30150778223835053327\n\n[PASS] testInfiniteAllowanceIsNotDecremented() (gas: 214754)\n[PASS] testInsufficientAllowanceRevertsAtomically() (gas: 117784)\n[PASS] testInsufficientBalanceRevertsWithoutChangingBalances() (gas: 120181)\n[PASS] testInvalidReceiverRestoresSpentAllowance() (gas: 114211)\n[PASS] testLaunchDistributionClaimAndPoolTransfersAreExact() (gas: 645425)\n[PASS] testMaximumTransferAmountRevertsWithBalanceError() (gas: 54999)\n[PASS] testMetadataAndInitialSupply() (gas: 107605)\n[PASS] testNoMintBurnOwnershipOrUpgradeEntryPoints() (gas: 565743)\n[PASS] testNoPrivilegedFreezeOrSeizureAndHolderStillTransfers() (gas: 626978)\n[PASS] testRevokedAllowanceCannotBeSpent() (gas: 120735)\n[PASS] testSelfTransferDoesNotChangeBalance() (gas: 53936)\n[PASS] testTransferDeliversExactAmountAndEmitsEvent() (gas: 91516)\n[PASS] testTransferEntireBalance() (gas: 75784)\n[PASS] testTransferFromDecrementsFiniteAllowanceAndEmitsTransfer() (gas: 219211)\n[PASS] testTransferFromToSelfConsumesAllowanceButPreservesBalance() (gas: 105377)\n[PASS] testTransferToZeroRevertsEvenForZeroAmount() (gas: 71948)\n[PASS] testUnapprovedThirdPartyCannotUseAnotherSpendersAllowance() (gas: 105253)\n[PASS] testZeroTransferFromEmptyAccountEmitsEvent() (gas: 63143)\n[PASS] testZeroTransferFromNeedsNoAllowance() (gas: 81424)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 18.59ms (80.22ms CPU time)\n\nRan 1 test for test/SuperFrenPet.invariant.t.sol:SuperFrenPetInvariantTest\n[PASS] invariantSupplyAndSumOfBalancesStayConstant() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 2727  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 2746  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 2719  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 6262\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 167\n  Bound result 562\n  Bound result 354503350072898875761860499\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 351\n  Bound result 0\n  Bound result 83\n  Bound result 9\n  Bound result 192\n  Bound result 7\n  Bound result 0\n  Bound result 8\n  Bound result 0\n  Bound result 0\n  Bound result 3520\n  Bound result 0\n  Bound result 3625\n  Bound result 430991639729155282813437498\n  Bound result 0\n  Bound result 67\n  Bound result 0\n  Bound result 17000000000000000000\n  Bound result 0\n  Bound result 6640\n  Bound result 2\n  Bound result 90\n  Bound result 5120\n  Bound result 42\n  Bound result 1257\n  Bound result 383\n  Bound result 23000000000000000000\n  Bound result 9\n  Bound result 0\n  Bound result 451\n  Bound result 0\n  Bound result 8\n  Bound result 6649\n  Bound result 0\n  Bound result 4914\n  Bound result 2682\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 691.85ms (690.34ms CPU time)\n\nRan 2 test suites in 693.24ms (710.44ms CPU time): 33 tests passed, 0 failed, 0 skipped (33 total tests)\n","passed":true},{"durationMs":36,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SuperFrenPet.approve(address,uint256)\",\"SuperFrenPet.transfer(address,uint256)\",\"SuperFrenPet.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":5,\"DEPENDENCIES.md\":27,\"README.md\":140,\"foundry.toml\":23,\"src/SuperFrenPet.sol\":18,\"test/SuperFrenPet.invariant.t.sol\":90,\"test/SuperFrenPet.t.sol\":447},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":383,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":223,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/SuperFrenPet.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"dcb6b91aab76f94cbf762c28fefebcfa61d54735ab6210a37e4a91e5232fc1e7","verifiedTreeHash":"9e0a4e56d3a4e8b1b9c2f0bc176b4049e525941c","verifierVersion":"0.1.0+560ab6a2"},{"checks":[{"durationMs":3888,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 3.74s\nCompiler run successful!\n","passed":true},{"durationMs":17964,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 16 tests for test/SuperFrenPet.edges.t.sol:SuperFrenPetEdgeTest\n[PASS] testEntireSupplyCanRoundTripThroughContractWithoutReceiverHook() (gas: 332192)\n[PASS] testFuzzApprovalsAreIsolatedByOwnerAndSpender(uint256,uint256,uint256) (runs: 1000, μ: 290469, ~: 291413)\n[PASS] testFuzzBalanceFailureRestoresAnyFiniteAllowance(uint256,uint256,uint256) (runs: 1000, μ: 210733, ~: 211005)\nLogs:\n  Bound result 12664\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n\n[PASS] testFuzzInvalidReceiverRestoresAnyAllowance(uint256,uint256) (runs: 1000, μ: 131972, ~: 132297)\nLogs:\n  Bound result 135601822483435224265574\n  Bound result 729827296635186906496739262632391453969449027027816527360881963\n\n[PASS] testFuzzRoundTripRestoresPreexistingBalances(uint256,uint256,uint256) (runs: 1000, μ: 264710, ~: 265761)\nLogs:\n  Bound result 118529127723569672556961014\n  Bound result 712259780399966491011506380\n  Bound result 103013063229583975991019147\n\n[PASS] testFuzzSplitSpendingExhaustsOnlyItsApprovedBudget(uint256,uint256) (runs: 1000, μ: 276009, ~: 278942)\nLogs:\n  Bound result 135601822483435224265574\n  Bound result 58178183178250567166838\n\n[PASS] testFuzzTransferFromWithAliasedRoles(uint256,uint256,uint8) (runs: 1000, μ: 205674, ~: 189879)\nLogs:\n  Bound result 560759159483790030193248837\n  Bound result 8052524705258686578266987772855728900877830124738252436602252036804240419\n\n[PASS] testInfiniteApprovalSurvivesFailureAndAuthorizesFutureReceipts() (gas: 419550)\n[PASS] testLoweringPartlySpentAllowanceDiscardsTheOldBudget() (gas: 284196)\n[PASS] testMaximumMinusOneAllowanceIsFinite() (gas: 147528)\n[PASS] testMaximumTransferFromCannotBypassBalanceWithInfiniteAllowance() (gas: 128907)\n[PASS] testOneWeiCanBeTransferredAndSpentExactly() (gas: 220054)\n[PASS] testOwnerTransferFromRequiresAndConsumesSelfApproval() (gas: 247886)\n[PASS] testSelfTransferStillRequiresSufficientBalance() (gas: 115921)\n[PASS] testZeroSpenderIsInvalidForZeroAndMaximumApproval() (gas: 83077)\n[PASS] testZeroTransferFromStillRejectsZeroEndpoints() (gas: 110788)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 174.86ms (918.01ms CPU time)\n\nRan 32 tests for test/SuperFrenPet.t.sol:SuperFrenPetTest\n[PASS] testApprovalDoesNotRequireBalance() (gas: 78297)\n[PASS] testApproveReplacesAllowanceAndEmitsEvent() (gas: 119421)\n[PASS] testApproveZeroSpenderReverts() (gas: 37613)\n[PASS] testBalanceFailureRestoresSpentAllowance() (gas: 178592)\n[PASS] testConstructorEmitsExactlyOneMint() (gas: 9674)\n[PASS] testDeployerCannotSpendHolderBalanceWithoutApproval() (gas: 109699)\n[PASS] testEOADeployerReceivesEntireSupply() (gas: 28289)\n[PASS] testExhaustedAllowanceCannotBeReused() (gas: 161849)\n[PASS] testFactoryReceivesEntireSupplyInsteadOfTransactionOrigin() (gas: 286318)\n[PASS] testFuzzOverspendingRevertsWithoutChangingState(uint256,uint256) (runs: 512, μ: 126769, ~: 127082)\nLogs:\n  Bound result 7\n  Bound result 512\n\n[PASS] testFuzzTransferConservesSupply(address,uint256) (runs: 512, μ: 92762, ~: 93162)\nLogs:\n  Bound result 10634\n\n[PASS] testFuzzTransferFromConservesBalancesAndConsumesAllowance(uint256,uint256,uint256) (runs: 512, μ: 235713, ~: 238241)\nLogs:\n  Bound result 10\n  Bound result 5\n  Bound result 20907\n\n[PASS] testFuzzUnapprovedTransferReverts(uint256,uint256) (runs: 512, μ: 189130, ~: 190810)\nLogs:\n  Bound result 745799408287269839877749313\n  Bound result 714939104128075616296593133\n\n[PASS] testInfiniteAllowanceIsNotDecremented() (gas: 214754)\n[PASS] testInsufficientAllowanceRevertsAtomically() (gas: 117784)\n[PASS] testInsufficientBalanceRevertsWithoutChangingBalances() (gas: 120181)\n[PASS] testInvalidReceiverRestoresSpentAllowance() (gas: 114211)\n[PASS] testLaunchDistributionClaimAndPoolTransfersAreExact() (gas: 645425)\n[PASS] testMaximumTransferAmountRevertsWithBalanceError() (gas: 54999)\n[PASS] testMetadataAndInitialSupply() (gas: 107605)\n[PASS] testNoMintBurnOwnershipOrUpgradeEntryPoints() (gas: 565743)\n[PASS] testNoPrivilegedFreezeOrSeizureAndHolderStillTransfers() (gas: 626978)\n[PASS] testRevokedAllowanceCannotBeSpent() (gas: 120735)\n[PASS] testSelfTransferDoesNotChangeBalance() (gas: 53936)\n[PASS] testTransferDeliversExactAmountAndEmitsEvent() (gas: 91516)\n[PASS] testTransferEntireBalance() (gas: 75784)\n[PASS] testTransferFromDecrementsFiniteAllowanceAndEmitsTransfer() (gas: 219211)\n[PASS] testTransferFromToSelfConsumesAllowanceButPreservesBalance() (gas: 105377)\n[PASS] testTransferToZeroRevertsEvenForZeroAmount() (gas: 71948)\n[PASS] testUnapprovedThirdPartyCannotUseAnotherSpendersAllowance() (gas: 105253)\n[PASS] testZeroTransferFromEmptyAccountEmitsEvent() (gas: 63143)\n[PASS] testZeroTransferFromNeedsNoAllowance() (gas: 81424)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 174.84ms (626.67ms CPU time)\n\nRan 1 test for test/SuperFrenPet.invariant.t.sol:SuperFrenPetInvariantTest\n[PASS] invariantSupplyAndSumOfBalancesStayConstant() (runs: 256, calls: 32768, reverts: 0)\n\n╭--------------+-----------------------------+-------+---------+----------╮\n| Contract     | Selector                    | Calls | Reverts | Discards |\n+=========================================================================+\n| TokenHandler | approve                     | 4162  | 0       | 0        |\n|--------------+-----------------------------+-------+---------+----------|\n| TokenHandler | approveMaximumOrRevoke      | 4103  | 0       | 0        |\n|--------------+-----------------------------+-------+---------+----------|\n| TokenHandler | transfer                    | 4062  | 0       | 0        |\n|--------------+-----------------------------+-------+---------+----------|\n| TokenHandler | transferBeyondBalance       | 4116  | 0       | 0        |\n|--------------+-----------------------------+-------+---------+----------|\n| TokenHandler | transferFrom                | 4049  | 0       | 0        |\n|--------------+-----------------------------+-------+---------+----------|\n| TokenHandler | transferFromBeyondAllowance | 4091  | 0       | 0        |\n|--------------+-----------------------------+-------+---------+----------|\n| TokenHandler | transferFromBeyondBalance   | 4172  | 0       | 0        |\n|--------------+-----------------------------+-------+---------+----------|\n| TokenHandler | transferToZero              | 4013  | 0       | 0        |\n╰--------------+-----------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 250000000000000000000000000\n  Bound result 250000000000000000000000000\n  Bound result 250000000000000000000000000\n  Bound result 40000000000000000000\n  Bound result 5829\n  Bound result 2003\n  Bound result 4\n  Bound result 30000000000000000000\n  Bound result 1\n  Bound result 249999959999999999999994170\n  Bound result 32953907\n  Bound result 14\n  Bound result 6023\n  Bound result 17000000000000000000\n  Bound result 64\n  Bound result 27456709662370377876267\n  Bound result 0\n  Bound result 1000000000000000000000000000\n  Bound result 50000000000000000000\n  Bound result 125000000000000000000\n  Bound result 48148\n  Bound result 6897\n  Bound result 3\n  Bound result 0\n  Bound result 6\n  Bound result 6\n  Bound result 8588\n  Bound result 0\n  Bound result 1\n  Bound result 3203\n  Bound result 2269\n  Bound result 1\n  Bound result 146116978490\n  Bound result 5\n  Bound result 0\n  Bound result 6\n  Bound result 17000000000000000000\n  Bound result 2162788760457\n  Bound result 17748765875833948978352313886249925718037461376936896969301514703797365765108\n  Bound result 3\n  Bound result 951\n  Bound result 7\n  Bound result 1041\n  Bound result 2761340902852660508\n  Bound result 177362147\n  Bound result 128990648702450763371019205\n  Bound result 2367\n  Bound result 61185509280980714206231893\n  Bound result 10\n  Bound result 8\n  Bound result 5249\n  Bound result 3\n  Bound result 14591438733644901551245917792285606015304758836009918785119\n  Bound result 0\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639917\n  Bound result 9592\n  Bound result 999999999999999999999999999\n  Bound result 5\n  Bound result 23000000000000000000\n  Bound result 438925186978774383570047519700610842076534348802\n  Bound result 3833\n  Bound result 4001\n  Bound result 18\n  Bound result 18\n  Bound result 5\n  Bound result 1607853856226\n  Bound result 2233625729\n  Bound result 2840\n  Bound result 20000000000000000000\n  Bound result 63\n  Bound result 0\n  Bound result 6\n  Bound result 40000000000000000000\n  Bound result 20000000000000000000\n  Bound result 8638260012784299260948037391004252225018537548613761419784261556968\n  Bound result 52005370019993488182941547203396705112375218042\n  Bound result 4271\n  Bound result 182307510230439075418770825\n  Bound result 30000000000000000000\n  Bound result 10000000000000000000\n  Bound result 18492\n  Bound result 115792089237316195423570985008687907853269984665640125225006864988627335877659\n  Bound result 10196\n  Bound result 125000000000000000000\n  Bound result 8496\n  Bound result 8\n  Bound result 3425\n  Bound result 4045\n  Bound result 7957\n  Bound result 5426\n  Bound result 7\n  Bound result 3831\n  Bound result 9268916\n  Bound result 39388903114991212987\n  Bound result 30000000000000000000\n  Bound result 7\n  Bound result 466004361129207904\n  Bound result 3\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 17.77s (17.76s CPU time)\n\nRan 3 test suites in 17.77s (18.12s CPU time): 49 tests passed, 0 failed, 0 skipped (49 total tests)\n","passed":true},{"durationMs":77,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SuperFrenPet.approve(address,uint256)\",\"SuperFrenPet.transfer(address,uint256)\",\"SuperFrenPet.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":5,\"DEPENDENCIES.md\":27,\"README.md\":140,\"foundry.toml\":23,\"src/SuperFrenPet.sol\":18,\"test/README.md\":43,\"test/SuperFrenPet.edges.t.sol\":306,\"test/SuperFrenPet.invariant.t.sol\":207,\"test/SuperFrenPet.t.sol\":447},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"ef32def6ec4240af29a0ef6baf94a7f01a06bc052494f85460aaaf2f19b7ef64","verifiedTreeHash":"39205f77185fb2afaa14dc2e4706cc866e4a64e2","verifierVersion":"0.1.0+560ab6a2"}]}