{"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":"e4ee4902-42bb-456a-967b-9172d4a33c7b","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"0df7d61346e22f270e19a056b8fbbff113beb66a2c0c839623be6095d8ea5565","dependsOn":["build_contract_project","write_foundry_tests","manifest"],"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":"c282a6647398ea208518f5b67e3ff6fc70ae83e60ca37f7ef26ed6a7a892b903","dependsOn":["build_contract_project","write_foundry_tests","manifest"],"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":"8dfe5374533b2eb12d16cfe452d6eb639a57d213714009275380d9d459776626","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"ee64ee90a679cba093483fa065519735fadbae75618f5091945107d67366bec4","dependsOn":["build_contract_project","write_foundry_tests","manifest"],"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":"e605ac5e9088481fd96628627b407f4d3ef9a2daeae07976fb546a88fd72631e","dependsOn":["build_contract_project","write_foundry_tests","manifest"],"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":"b6fb6a5d58c01ce8c51eb81b9b2720e826a7e80a44df1084745744f47ffd0acb","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"587567a5ef71546b5973ceaf6ef1dbbd590f49503b5ac9a6973ed86b89584857","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"587567a5ef71546b5973ceaf6ef1dbbd590f49503b5ac9a6973ed86b89584857","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"663d7b3740e1850bdf859f2d1e4aed56d8efa51d82f81dd1f436fcd958b6a084","dependsOn":["build_contract_project","write_foundry_tests"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"52446543cecb25b2910ea6c99afbdad31d9f4d0af2c29201b9e00eede3b477a9","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","state":"accepted"}],"objective":"[SIMD-LAUNCH]\nA custom token: Swarm Pepe (SPEPE).\nToken name: Swarm Pepe\nToken symbol: SPEPE\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.\nMinting after launch: none, the supply is fixed forever.\nTransfer rules: plain ERC-20 transfers with no fee, tax or limit.\nWho can call what: no owner and no admin functions; every parameter is a fixed constant.\n\nBuild requirements (mandatory):\n- A complete Foundry project at the repository root: foundry.toml with solc 0.8.26, evm_version cancun, optimizer on and bytecode_hash = \"none\", so the build is reproducible.\n- Token contract: SPEPEToken. No selfdestruct and no delegatecall anywhere. No proxies, no owner, no upgradeability.\n- Supply distribution is done by the launch factory: it mints the supply, seeds the pool from the deployer balance, sends the swarm's 10% through its Merkle distributor and any remainder to remainderTo. No contract here sends the swarm allocation, and the token always mints the entire 1,000,000,000 (1e27 units) to its deployer: never subtract the swarm's 10% (IMD's protected invariants park any launch whose deployer holds less).\n- Chain: Ethereum mainnet (chainId 1). Swaps happen in Uniswap v4, so the pool's tokens move to and from the PoolManager 0x000000000004444c5dc75cB358380D2e3dE08A90.\n- launch.json pool: pairedCurrency 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 3000, tickSpacing 60, initialPrice \"125270724187523965593206900\" (paired-currency minor units per SPEPE minor unit with SPEPE as currency0, provenance only; the deployer derives the real opening price from the economics using the deployed currency order). launch.json also carries the economics block below.\n- launch.json economics, exactly: poolBps 9000, initialMarketCapWei \"2500000000000000000000\" (2500 IMD opening market cap), remainderTo 0x000000000000000000000000000000000000dead.","parentJobId":null,"planHash":"eddc1e0838e7b19f067eb34ece17c7f8527f34e8448934a3680a75568ef4ad7e","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"e4ee4902-42bb-456a-967b-9172d4a33c7b","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1080-swarm-pepe"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51875","feedbackHash":"2cd0133ac6d06f547403647def995b3b72f68bbf777e506b65c1d566cd7efa9d","nodeKey":"audit_economics","submissionHash":"0df7d61346e22f270e19a056b8fbbff113beb66a2c0c839623be6095d8ea5565","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52149","feedbackHash":"30ab1931da4f250fe1bfdca6f010b7a4b4784d64567c85934a2133184c3fc440","nodeKey":"audit_flow","submissionHash":"c282a6647398ea208518f5b67e3ff6fc70ae83e60ca37f7ef26ed6a7a892b903","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52254","feedbackHash":"9cda4896b7817d5eba052ef8643d408bfe3328a024039d155a7f6e540fee4742","nodeKey":"audit_judge","submissionHash":"8dfe5374533b2eb12d16cfe452d6eb639a57d213714009275380d9d459776626","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52114","feedbackHash":"c9b2be6279a1c55844642f9243a46592918f4425a0062c2dd49cd91c6c1ff285","nodeKey":"audit_math","submissionHash":"ee64ee90a679cba093483fa065519735fadbae75618f5091945107d67366bec4","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52230","feedbackHash":"6d6e50f6a3a0a52a54990bf6d293355e2f292b2b33262ab1f51a4ef411a099c8","nodeKey":"audit_permissions","submissionHash":"e605ac5e9088481fd96628627b407f4d3ef9a2daeae07976fb546a88fd72631e","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51732","feedbackHash":"33f71de2d8badf023598a26b8cb2d9c184764da9246713405144db9ebf2fd7bd","nodeKey":"build_contract_project","submissionHash":"24c05e2f2cfc8a826a7079ce8dfb1968a29bfb58e5c5d0fe08680098e7281605","tag1":"verification:checks","tag2":"acceptance-v2","value":0},{"agentId":"51460","feedbackHash":"431eabc7c47805f8bd1f07b0d4489b21d6c60e0f945937dd7f84f4f967ba5c32","nodeKey":"build_contract_project","submissionHash":"b6fb6a5d58c01ce8c51eb81b9b2720e826a7e80a44df1084745744f47ffd0acb","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51095","feedbackHash":"08419ddfd51c697bd2175ecd44d974a14dcd919cd1f7cda55c284726faace28c","nodeKey":"manifest","submissionHash":"663d7b3740e1850bdf859f2d1e4aed56d8efa51d82f81dd1f436fcd958b6a084","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51502","feedbackHash":"69ec84ca29b593debfbf06c2ee2d9cea2331a3d17bb7ef206f70b2c7172ae4e8","nodeKey":"write_foundry_tests","submissionHash":"52446543cecb25b2910ea6c99afbdad31d9f4d0af2c29201b9e00eede3b477a9","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"ef312ec0efb69a9fd21af1b6eee7a2fba8b735eb111c7778ced47043f012c212","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"672c29f92850efe0","findings":[],"hash":"0df7d61346e22f270e19a056b8fbbff113beb66a2c0c839623be6095d8ea5565","nodeId":"0db36729-18c5-4874-b7f0-a8e201e902d4","outcome":"completed","summary":"The review is finished with no reproducible defect. The findings file holds an empty list plus seven coverage rows, and no tracked file was changed.\n\n**What I checked, against the Economic Security, Invariant and Flow Gap guides**\n\n- **The token** in `src/SPEPEToken.sol` is a 70-line fixed-supply ERC-20. The constructor credits all 1e27 units to the caller once. The only balance writer is the private transfer routine, which debits and credits the same amount with checked arithmetic, so the conservation invariant holds on every path. No fee, burn, hook, callback, external call, owner, initializer, proxy, receive or fallback exists. The compiled ABI exposes exactly the three listed entry points as state-changing.\n- **Launch flows** move exactly what they say. The swarm's 1e26 transfer, the 9e26 seed through the PoolManager's balance-delta settlement, claims from the distributor and swaps each way all see exact amounts, so nothing needs an exemption. The 10/90 split of 1e27 leaves zero rounding remainder.\n- **Economics in launch.json** are copied verbatim from the job. I recomputed the opening sqrt price from the 2500 IMD cap over the full supply and it equals the manifest's provenance value exactly, with SPEPE as currency0 and an opening tick well inside the valid range.\n- **Allowance semantics** are standard: finite allowances decrement before the move, max allowance is unlimited, failures are atomic, and nobody can spend a holder's balance without approval. The approval replacement race is the ordinary ERC-20 one and is documented in the README.\n\n**Verification run**\n\n```\nforge build        # solc 0.8.26, cancun, optimizer on, bytecode_hash none\nforge test         # 44 passed, 0 failed, including two 256x64 stateful invariants\nforge fmt --check  # clean\n```\n\n**Static analysis leads** were both dismissed. Slither reported nothing. Aderyn's large-literal note on line 11 is the intended 1e27 supply constant.\n\n**One item I could not close from here.** The paired token's decimals at the IMD address could not be read because no mainnet RPC was reachable. The price math assumes the cap is in IMD minor units as stated. The deployer's price derivation must use the real minor units and the deployed currency order, which the manifest notes already say. This is an open integration check for the launch system, not a defect in the tree.","treeHash":null,"usage":{"cachedInputTokens":610200,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":9805,"runtime":"claude","turns":25,"wallClockMs":165500}},{"artifacts":[],"attempt":1,"bundleHash":"e926da912a00fc5741270658a60c6808c3b741d10f1cb49b73b43641c107bc4d","device":"75474cc326e8a817","findings":[],"hash":"24c05e2f2cfc8a826a7079ce8dfb1968a29bfb58e5c5d0fe08680098e7281605","nodeId":"76381150-6e53-41e3-b407-ad10a0f7b57f","outcome":"completed","summary":"Implemented `SPEPEToken` with all 1e27 units minted to the deployer, plain ERC-20 transfers, and no minting, burning, fees, owner, or admin controls. Added the exact launch manifest, pinned Foundry configuration, tests, and deployment documentation.\n\nValidation passed:\n\n- `forge build`\n- `forge test`: 33 tests passed\n- `forge fmt --check`\n- Clean offline build and tests\n\nFull protected Uniswap v4 integration remains with the network verifier’s external launch harness.","treeHash":"b527ce962c3e956781123f7d5a0123f06ea92745","usage":{"cachedInputTokens":711936,"inputTokens":96729,"model":"gpt-6-astra","outputTokens":17013,"runtime":"codex","turns":6,"wallClockMs":511506}},{"artifacts":[],"attempt":1,"bundleHash":"390bdd3946133b728b6ea24dbfe51113621df89c5a0b640b0e4b4c42599d7252","device":"68fd8dd6450ac70c","findings":[],"hash":"52446543cecb25b2910ea6c99afbdad31d9f4d0af2c29201b9e00eede3b477a9","nodeId":"8ce7e590-738b-4307-8c7f-ec0e11d7744e","outcome":"completed","summary":"Added failure-path tests, six fuzz properties, and balance/allowance invariants under `test/`.\n\n`forge build` and `forge test` pass: **44 tests, 0 failures**.\n\nNo defects reproduced. Live Uniswap/factory integration remains untested; limitations are documented in `test/COVERAGE.md`.","treeHash":"409a3465b04bafd79f5296fa701bacefa2c9cfc1","usage":{"cachedInputTokens":398080,"inputTokens":53317,"model":"gpt-6-astra","outputTokens":9765,"runtime":"codex","turns":5,"wallClockMs":311675}},{"artifacts":[],"attempt":1,"bundleHash":"757a844f6c0a1c09e4002a948a53d324593a9e5ee5d34897092ee504b1ed76b6","device":"aeca54a62e4f602e","findings":[],"hash":"663d7b3740e1850bdf859f2d1e4aed56d8efa51d82f81dd1f436fcd958b6a084","nodeId":"363df626-fe2b-4eda-b30d-71aa469e92a6","outcome":"completed","summary":"Updated only [launch.json](/home/imd/.identitymd/work/e4ee4902-42bb-456a-967b-9172d4a33c7b/363df626-fe2b-4eda-b30d-71aa469e92a6/launch.json), clarifying notes while preserving the exact token, pool and economics values.\n\nVerified constructor ABI and manifest fields. `forge build` succeeded; all 44 repository tests passed. The supplied infrastructure-dependent protected harness was not run locally.","treeHash":"ca12797ab966658e733e8ae3150ced6d52f10593","usage":{"cachedInputTokens":195200,"inputTokens":44746,"model":"gpt-6-astra","outputTokens":2664,"runtime":"codex","turns":3,"wallClockMs":103066}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"584bd638e7e022f0","findings":[],"hash":"8dfe5374533b2eb12d16cfe452d6eb639a57d213714009275380d9d459776626","nodeId":"096076b2-8577-425e-ac13-227bc838ee29","outcome":"completed","summary":"The review is complete. `.imd-findings.json` is written with an empty findings list and a nine-row coverage record. The working tree is otherwise untouched; the scratch build output is gitignored.\n\n**Outcome: no defects.** All four specialists reported nothing, and nothing in my own pass contradicts them. There were no specialist findings to reproduce or merge.\n\n**What I verified myself**\n\n- **All three entry points hold.** `approve` rejects zero approver and spender, overwrites the allowance and emits Approval. `transfer` and `transferFrom` debit then credit with typed reverts on short balance or allowance, with the unlimited-allowance path left untouched and a reverted inner transfer rolling back the allowance atomically.\n- **Supply invariants hold.** The constant is exactly 1e27 and the constructor credits all of it to the caller, with no swarm share subtracted. The compiled ABI has only the nine ERC-20 functions, so nothing can mint, burn, pause, freeze or seize after launch.\n- **Bytecode is clean.** I scanned the compiled runtime skipping PUSH data and found no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **Manifest matches the job.** Chain, paired currency, fee, tick spacing and the economics block are verbatim. I recomputed the provenance sqrtPriceX96 from the 2500 IMD cap over 1e27 units and it matches the manifest digit for digit.\n- **Existing suite passes.** All 44 tests, including two invariant suites with 256 runs each, pass offline with no dependencies.\n\n**Leads dismissed.** The aderyn large-numeric-literal note on line 11 is a compile-time constant evaluating to exactly 1e27 and is style only. Slither reported nothing.\n\n**Still owed by the launch system, not the token.** A live run of the protected harness against the real Uniswap v4 PoolManager and factory, which the project's own coverage notes already acknowledge.","treeHash":null,"usage":{"cachedInputTokens":520161,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":8185,"runtime":"claude","turns":18,"wallClockMs":149939}},{"artifacts":[],"attempt":2,"bundleHash":"d2c6814d51dc3b4cb3b6ba979ebeb1e4501ed289e4c528a311f230c9ecdcaed9","device":"a74f2bc0ce11ed16","findings":[],"hash":"b6fb6a5d58c01ce8c51eb81b9b2720e826a7e80a44df1084745744f47ffd0acb","nodeId":"76381150-6e53-41e3-b407-ad10a0f7b57f","outcome":"completed","summary":"Implemented the complete Foundry project with:\n\n- `SPEPEToken`: full `1e27` supply minted to the deployer, plain ERC-20 transfers, no admin or later minting.\n- `launch.json`: exact requested economics, without the rejected root `chainId`.\n- Tests and documentation covering deployment responsibilities and integration limits.\n\n`forge build`, `forge test`, and `forge fmt --check` pass: **35 tests**, including 3,000 fuzz cases and 16,384 invariant actions.\n\nLocal launch tests simulate token transfers; full Uniswap v4 integration remains with the network’s protected harness.","treeHash":"36d4f99d1d468dd42dd109b2a6fd36afbed42b35","usage":{"cachedInputTokens":631424,"inputTokens":76695,"model":"gpt-6-astra","outputTokens":16064,"runtime":"codex","turns":5,"wallClockMs":443805}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"af1843f371022d4a","findings":[],"hash":"c282a6647398ea208518f5b67e3ff6fc70ae83e60ca37f7ef26ed6a7a892b903","nodeId":"b33d8c3a-7d41-40a4-b204-3db1b908b810","outcome":"completed","summary":"The review is complete. The findings file is written and the working tree is otherwise untouched (the scratch test was removed and the findings file sits in git's exclude list by the harness's design).\n\n**Result: no defects found.** `.imd-findings.json` holds an empty findings list and nine coverage rows, all `holds`.\n\n**What I covered in the assigned area**\n\n- **Execution Trace.** Traced all three mutating entry points in `src/SPEPEToken.sol` from calldata to final storage. The finite-allowance decrement in `transferFrom` happens before the balance check, but every later revert rolls it back atomically, which the existing suite also asserts. Self-transfer reads the recipient after the debit, so it is lossless. The credit cannot overflow because the sum of balances is bounded by the constant 1e27. The unlimited-allowance sentinel is the only special path and it skips nothing the normal path validates.\n- **Periphery.** The token makes no external calls and has no fallback, receive or callbacks, so there is nothing for a PoolManager or distributor to re-enter. I wrote a scratch stand-in for Uniswap v4's sync/settle balance delta and its low-level `CurrencyLibrary.transfer` return-data check. Seed, buy and sell-back all moved the exact requested amounts, and every mutating function returns exactly one `true` word. An independent scan of the 1459-byte runtime found no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **First Principles.** The supply constant evaluates to exactly the manifest's 1e27 and is minted whole to `msg.sender`, so the factory holds everything and the swarm share is not subtracted. No mint, burn, owner, pause, blacklist or proxy exists. Storage is only the two ERC-20 mappings. The manifest's provenance sqrt price squares to the stated 2500 IMD opening cap, and the manifest fields match the schema and the source.\n\n**Static analysis leads.** Slither reported nothing. Aderyn's large-numeric-literal note on line 11 is a style remark on an expression that equals the manifest supply, not a defect.\n\n**Not reached.** No live mainnet fork against the real PoolManager or the network's factory harness was run, since this environment has no network. The protected harness run remains owed to the launch system, as the project's own coverage notes already state.","treeHash":null,"usage":{"cachedInputTokens":735682,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":14372,"runtime":"claude","turns":25,"wallClockMs":238776}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"04f946173ab09bec","findings":[],"hash":"e605ac5e9088481fd96628627b407f4d3ef9a2daeae07976fb546a88fd72631e","nodeId":"713b913a-848f-4656-af59-219aa9f5d4e7","outcome":"completed","summary":"The review is complete and the findings file is written with no defects found.\n\n**Result:** `.imd-findings.json` holds an empty findings list and eight coverage rows, one per listed entry point plus the constructor, the no-roles invariant, the asymmetry pairs, the trust-gap actors and the manifest.\n\n**What I covered in my area**\n\n- **Access Control.** The token has no roles, modifiers, initializer, owner, receive or fallback. The only storage writers are the constructor, `_transfer` and the allowance write in approve and transferFrom. Every writer is guarded by the same thing, the caller's own balance or an allowance the holder set, so there is no weaker parallel path. A scratch test confirmed the factory, the PoolManager and the holder itself cannot pull a balance through transferFrom without an approval, that the allowance key direction is correct, and that unknown selectors and ETH revert.\n- **Asymmetry.** transfer and transferFrom share `_transfer`; the only extra step in transferFrom is the allowance decrement, keyed identically to approve's write. The finite boundary at max minus one decrements, max is preserved, and the debit-then-credit order makes a self-transfer a no-op. Sum of balances stays at the constant supply.\n- **Trust Gap.** No address is special-cased, so the factory, distributor and PoolManager have ordinary ERC-20 rights and the launch flows move exactly what they request. There is no economic formula for any actor to exploit asymmetrically.\n- **Manifest.** Schema fields, lowercase addresses, verbatim economics and the exact supply string check out. The provenance sqrt price recomputed from the economics matches the manifest digit for digit.\n\n**Tool leads.** Slither reported nothing. Aderyn's large-numeric-literal line is style only and was not reported.\n\n**Not reached.** Nothing in my area was left unreached. The live Uniswap v4 seed and swap against the real PoolManager, and the Merkle claim, run only in the network's protected harness and remain owed to the launch system, as the project's own coverage note already states.\n\nThe scratch test under `test/scratch/` is disposable and no tracked file was changed.","treeHash":null,"usage":{"cachedInputTokens":534227,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":9529,"runtime":"claude","turns":17,"wallClockMs":162767}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"918f8261a6fd589c","findings":[],"hash":"ee64ee90a679cba093483fa065519735fadbae75618f5091945107d67366bec4","nodeId":"f1a070db-ca0d-4b4f-9877-58d99a8f4575","outcome":"completed","summary":"The review is complete. The findings file is valid JSON with an empty findings list and eight coverage rows, and no tracked file was changed.\n\n**Result: no defect found in the Math Precision, Boundary or Numerical Gap areas.** The token in `src/SPEPEToken.sol` contains no division, no scaling, no casts, no external calls, no payable path and no bytes decoding, so most failure modes in the three guides have nothing to attach to. The remaining arithmetic was checked by execution and by independent computation.\n\nWhat I verified:\n- **Supply constant** evaluates at compile time to exactly 1e27 and matches the manifest's totalSupply string. The aderyn \"large numeric literal\" lead is stylistic only.\n- **Transfer arithmetic** cannot underflow (guard precedes subtraction) or overflow (balances sum to 1e27, far below the uint256 ceiling). Self-transfer of the full balance and zero-value transfers preserve state. Overdraft by one unit and by the maximum value revert without side effects.\n- **Allowance sentinel** at the maximum value is never decremented, while maximum minus one is finite and decrements exactly. Off-by-one at the allowance limit reverts, and an allowance write is rolled back when the later balance check reverts.\n- **Launch economics** split 1e27 with no dust: swarm 1e26, pool 9e26, remainder zero. The zero-value remainder transfer to the dead address succeeds. The recorded sqrtPriceX96 equals the derivation from a 2500 IMD cap over 1e27 units to the last digit, sits inside Uniswap v4's price bounds, and the inverted currency order also fits uint160.\n- **ETH handling**: the token has no receive or fallback, so any value sent to it reverts.\n\nCoverage rows mark all three ABI entry points as holds, plus conservation, the supply constant, the manifest arithmetic and the boundary enumeration. One row is marked unreached: the factory's live v4 liquidity math and the Merkle distributor's per-wallet and per-seat division live outside this repository and cannot be reproduced offline here.\n\nThe scratch suite I ran lives in the gitignored `test/scratch/` directory and is not part of the submission.","treeHash":null,"usage":{"cachedInputTokens":589591,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":12329,"runtime":"claude","turns":17,"wallClockMs":187957}}],"verification":[{"checks":[{"durationMs":339,"exitCode":0,"name":"build","output":"Compiling 4 files with Solc 0.8.26\nSolc 0.8.26 finished in 298.50ms\nCompiler run successful!\n","passed":true},{"durationMs":806,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 32 tests for test/SPEPEToken.t.sol:SPEPETokenTest\n[PASS] testFuzz_AllowanceSpendingConservesFunds(uint256,uint256) (runs: 1000, μ: 210155, ~: 212070)\n[PASS] testFuzz_ExcessiveTransferAlwaysReverts(uint256) (runs: 1000, μ: 99851, ~: 100279)\n[PASS] testFuzz_LaunchDistributionIncludingSeedRounding(uint256) (runs: 1000, μ: 194142, ~: 194557)\n[PASS] testFuzz_SelfTransferCannotCreateTokens(uint256) (runs: 1000, μ: 46122, ~: 46125)\n[PASS] testFuzz_TransferRoundTripConservesSupply(uint256) (runs: 1000, μ: 164059, ~: 164775)\n[PASS] test_AdminMintBurnAndUpgradeCallsAreAbsent() (gas: 1218673)\n[PASS] test_ApproveEmitsAndOverwritesThenRevokes() (gas: 216265)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 34972)\n[PASS] test_ConstructorMintsEntireSupplyToFactoryNotOrigin() (gas: 70149)\n[PASS] test_Create2DeploymentEmitsOneFullSupplyMint() (gas: 42687)\n[PASS] test_FactoryCannotSpendHolderFundsWithoutAllowance() (gas: 140873)\n[PASS] test_LaunchClaimAndPoolRoundTripDeliverExactAmounts() (gas: 360477)\n[PASS] test_PoolManagerCannotSpendHolderFundsWithoutAllowance() (gas: 92579)\n[PASS] test_RuntimeContainsNoForbiddenOpcodes() (gas: 378141)\n[PASS] test_SelfTransferPreservesEntireBalance() (gas: 90937)\n[PASS] test_TransferEntireSupplyHasNoTaxOrLimit() (gas: 141692)\n[PASS] test_TransferFromInfiniteAllowanceRemainsInfinite() (gas: 209639)\n[PASS] test_TransferFromInsufficientAllowanceRollsBack() (gas: 155481)\n[PASS] test_TransferFromInsufficientBalanceRestoresAllowance() (gas: 160957)\n[PASS] test_TransferFromSpendsExactAllowanceAndEmitsTransfer() (gas: 213181)\n[PASS] test_TransferFromToSelfConsumesAllowanceWithoutChangingBalance() (gas: 154042)\n[PASS] test_TransferFromZeroRecipientRestoresAllowance() (gas: 150558)\n[PASS] test_TransferFromZeroSenderCannotMintEvenZero() (gas: 43178)\n[PASS] test_TransferMaxUintRevertsWithoutOverflow() (gas: 40074)\n[PASS] test_TransferOverBalanceRevertsWithoutChanges() (gas: 99820)\n[PASS] test_TransferToContractRequiresNoReceiverCallback() (gas: 169475)\n[PASS] test_TransferToRemainderAddressDoesNotBurnSupply() (gas: 70096)\n[PASS] test_TransferToTokenItselfIsAnOrdinaryTransfer() (gas: 70459)\n[PASS] test_TransferToZeroRevertsIncludingZeroValue() (gas: 71191)\n[PASS] test_UnknownCallsAndNativeCurrencyAreRejected() (gas: 57720)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 50405)\n[PASS] test_ZeroTransferFromNeedsNoAllowanceAndEmitsTransfer() (gas: 46353)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 35.17ms (218.00ms CPU time)\n\nRan 1 test for test/SPEPEToken.invariant.t.sol:SPEPETokenInvariantTest\n[PASS] invariant_SupplyAndSumOfBalancesStayFixed() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+--------------------------+-------+---------+----------╮\n| Contract     | Selector                 | Calls | Reverts | Discards |\n+======================================================================+\n| SPEPEHandler | approve                  | 4042  | 0       | 0        |\n|--------------+--------------------------+-------+---------+----------|\n| SPEPEHandler | transfer                 | 4161  | 0       | 0        |\n|--------------+--------------------------+-------+---------+----------|\n| SPEPEHandler | transferFrom             | 4073  | 0       | 0        |\n|--------------+--------------------------+-------+---------+----------|\n| SPEPEHandler | unauthorizedTransferFrom | 4108  | 0       | 0        |\n╰--------------+--------------------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 765.96ms (765.04ms CPU time)\n\nRan 2 test suites in 766.93ms (801.12ms CPU time): 33 tests passed, 0 failed, 0 skipped (33 total tests)\n","passed":true},{"durationMs":16,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SPEPEToken.approve(address,uint256)\",\"SPEPEToken.transfer(address,uint256)\",\"SPEPEToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":134,\"foundry.toml\":12,\"launch.json\":25,\"src/SPEPEToken.sol\":70,\"test/SPEPEToken.invariant.t.sol\":93,\"test/SPEPEToken.t.sol\":440,\"test/helpers/TestBase.sol\":40},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":283,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":207,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/SPEPEToken.sol:11: Large Numeric Literal","passed":true}],"detail":"launch.json is not a valid launch manifest: (root): Unrecognized key: \"chainId\"","evaluation":"checks","profile":"foundry","status":"rejected","submissionHash":"24c05e2f2cfc8a826a7079ce8dfb1968a29bfb58e5c5d0fe08680098e7281605","verifiedTreeHash":"b527ce962c3e956781123f7d5a0123f06ea92745","verifierVersion":"0.1.0+ad90ce4c"},{"checks":[{"durationMs":618,"exitCode":0,"name":"build","output":"Compiling 7 files with Solc 0.8.26\nSolc 0.8.26 finished in 569.12ms\nCompiler run successful!\n","passed":true},{"durationMs":4076,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 4 tests for test/LaunchFlows.t.sol:LaunchFlowsTest\n[PASS] test_Create2DeploymentLeavesFullSupplyWithFactory() (gas: 50159)\n[PASS] test_LaunchAllocationClaimAndTradeTransfersArriveWhole() (gas: 491602)\n[PASS] test_PoolManagerCannotSpendAnUnapprovedHolderBalance() (gas: 150057)\n[PASS] test_RoundingRemainderCanReachConfiguredRecipientWithoutBurning() (gas: 201491)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 915.66µs (1.19ms CPU time)\n\nRan 30 tests for test/SPEPEToken.t.sol:SPEPETokenTest\n[PASS] testFuzz_AllowanceConservation(uint256,uint256) (runs: 1000, μ: 143092, ~: 144655)\n[PASS] testFuzz_TransferAboveBalanceReverts(uint256) (runs: 1000, μ: 50384, ~: 50334)\n[PASS] testFuzz_TransfersRoundTripWithoutLoss(uint256) (runs: 1000, μ: 171586, ~: 172159)\n[PASS] test_AllowanceIsSpecificToSpenderAndHolder() (gas: 172819)\n[PASS] test_ApprovalEmitsEventAndCanBeReplacedAndRevoked() (gas: 167979)\n[PASS] test_ConstructorEmitsExactlyOneMintForWholeSupply() (gas: 6943)\n[PASS] test_DelegatedSelfTransferConsumesAllowanceButPreservesBalance() (gas: 94726)\n[PASS] test_DeployerCannotTakeHolderTokensWithoutApproval() (gas: 147660)\n[PASS] test_MetadataAndEntireSupplyBelongToDeployer() (gas: 53196)\n[PASS] test_NoAdministrativeMintBurnOrUpgradeEntryPoints() (gas: 895088)\n[PASS] test_RejectsEtherAndUnknownCalls() (gas: 89893)\n[PASS] test_RevertApprovalFromZero() (gas: 30903)\n[PASS] test_RevertApprovalToZero() (gas: 34558)\n[PASS] test_RevertSelfTransferAboveBalance() (gas: 37303)\n[PASS] test_RevertTransferAboveBalanceIsAtomic() (gas: 44864)\n[PASS] test_RevertTransferFromInsufficientAllowanceIsAtomic() (gas: 100247)\n[PASS] test_RevertTransferFromInsufficientBalanceRestoresAllowance() (gas: 106193)\n[PASS] test_RevertTransferFromToZeroRestoresAllowance() (gas: 95334)\n[PASS] test_RevertTransferFromZeroAddressEvenForZeroAmount() (gas: 33485)\n[PASS] test_RevertTransferToZeroEvenForZeroAmount() (gas: 63902)\n[PASS] test_RevertZeroSender() (gas: 30920)\n[PASS] test_RuntimeHasNoForbiddenOpcodes() (gas: 378098)\n[PASS] test_SelfTransferPreservesEntireBalanceAndEmitsEvent() (gas: 45683)\n[PASS] test_TransferFromSelfStillRequiresAllowance() (gas: 137954)\n[PASS] test_TransferFromSpendsFiniteAllowanceExactly() (gas: 222256)\n[PASS] test_TransfersDoNotCallRecipient() (gas: 170657)\n[PASS] test_UnlimitedAllowanceSurvivesRepeatedSpending() (gas: 186831)\n[PASS] test_WholeSupplyCanMoveInOneTransfer() (gas: 73247)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 50383)\n[PASS] test_ZeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 61530)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 145.25ms (321.45ms CPU time)\n\nRan 8 tests for test/SPEPEAllowanceEdges.t.sol:SPEPEAllowanceEdgesTest\n[PASS] testFuzz_CompetingSpendersCannotSpendTheSameBalanceTwice(uint256) (runs: 1000, μ: 359979, ~: 360005)\n[PASS] testFuzz_FailedSpendRestoresFiniteOrInfiniteAllowance(uint256,bool) (runs: 1000, μ: 294146, ~: 297111)\n[PASS] testFuzz_InfiniteApprovalCanBeReplacedAndThenRevoked(uint256) (runs: 1000, μ: 432391, ~: 432933)\n[PASS] testFuzz_MaxMinusOneAllowanceIsFinite(uint256) (runs: 1000, μ: 123527, ~: 123552)\n[PASS] testFuzz_NonCanonicalAddressWordsAreRejected(uint96) (runs: 1000, μ: 695778, ~: 695688)\n[PASS] testFuzz_TruncatedMutationCalldataIsRejected(uint8,uint8) (runs: 1000, μ: 177948, ~: 176104)\n[PASS] test_EveryEntryPointRejectsEtherWithoutChangingState() (gas: 1042800)\n[PASS] test_ZeroRecipientRejectsZeroDelegatedSpendForBothAllowanceKinds() (gas: 434578)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 152.29ms (871.73ms CPU time)\n\nRan 1 test for test/SPEPEToken.invariant.t.sol:SPEPETokenInvariantTest\n[PASS] invariant_FixedSupplyEqualsSumOfAllHolderBalances() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 4090  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | overspend    | 4043  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 4095  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 4156  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 909.34ms (908.17ms CPU time)\n\nRan 1 test for test/SPEPELedger.invariant.t.sol:SPEPELedgerInvariantTest\n[PASS] invariant_EveryBalanceAndAllowanceMatchesModel() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| SPEPELedgerHandler | approve      | 4045  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| SPEPELedgerHandler | attemptAdmin | 4121  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| SPEPELedgerHandler | transfer     | 4199  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| SPEPELedgerHandler | transferFrom | 4019  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.03s (4.03s CPU time)\n\nRan 5 test suites in 4.03s (5.24s CPU time): 44 tests passed, 0 failed, 0 skipped (44 total tests)\n","passed":true},{"durationMs":21,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SPEPEToken.approve(address,uint256)\",\"SPEPEToken.transfer(address,uint256)\",\"SPEPEToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":5,\"README.md\":122,\"foundry.toml\":11,\"launch.json\":24,\"src/SPEPEToken.sol\":70,\"test/COVERAGE.md\":17,\"test/LaunchFlows.t.sol\":125,\"test/SPEPEAllowanceEdges.t.sol\":213,\"test/SPEPELedger.invariant.t.sol\":155,\"test/SPEPEToken.invariant.t.sol\":93,\"test/SPEPEToken.t.sol\":357,\"test/support/TestBase.sol\":39},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"52446543cecb25b2910ea6c99afbdad31d9f4d0af2c29201b9e00eede3b477a9","verifiedTreeHash":"409a3465b04bafd79f5296fa701bacefa2c9cfc1","verifierVersion":"0.1.0+ad90ce4c"},{"checks":[{"durationMs":732,"exitCode":0,"name":"build","output":"Compiling 7 files with Solc 0.8.26\nSolc 0.8.26 finished in 674.05ms\nCompiler run successful!\n","passed":true},{"durationMs":4499,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 4 tests for test/LaunchFlows.t.sol:LaunchFlowsTest\n[PASS] test_Create2DeploymentLeavesFullSupplyWithFactory() (gas: 50159)\n[PASS] test_LaunchAllocationClaimAndTradeTransfersArriveWhole() (gas: 491602)\n[PASS] test_PoolManagerCannotSpendAnUnapprovedHolderBalance() (gas: 150057)\n[PASS] test_RoundingRemainderCanReachConfiguredRecipientWithoutBurning() (gas: 201491)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 144.47ms (1.15ms CPU time)\n\nRan 8 tests for test/SPEPEAllowanceEdges.t.sol:SPEPEAllowanceEdgesTest\n[PASS] testFuzz_CompetingSpendersCannotSpendTheSameBalanceTwice(uint256) (runs: 1000, μ: 359968, ~: 360005)\n[PASS] testFuzz_FailedSpendRestoresFiniteOrInfiniteAllowance(uint256,bool) (runs: 1000, μ: 294250, ~: 297111)\n[PASS] testFuzz_InfiniteApprovalCanBeReplacedAndThenRevoked(uint256) (runs: 1000, μ: 432346, ~: 432933)\n[PASS] testFuzz_MaxMinusOneAllowanceIsFinite(uint256) (runs: 1000, μ: 123525, ~: 123564)\n[PASS] testFuzz_NonCanonicalAddressWordsAreRejected(uint96) (runs: 1000, μ: 695775, ~: 695688)\n[PASS] testFuzz_TruncatedMutationCalldataIsRejected(uint8,uint8) (runs: 1000, μ: 177906, ~: 176152)\n[PASS] test_EveryEntryPointRejectsEtherWithoutChangingState() (gas: 1042800)\n[PASS] test_ZeroRecipientRejectsZeroDelegatedSpendForBothAllowanceKinds() (gas: 434578)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 153.58ms (885.03ms CPU time)\n\nRan 30 tests for test/SPEPEToken.t.sol:SPEPETokenTest\n[PASS] testFuzz_AllowanceConservation(uint256,uint256) (runs: 1000, μ: 142776, ~: 144655)\n[PASS] testFuzz_TransferAboveBalanceReverts(uint256) (runs: 1000, μ: 50385, ~: 50334)\n[PASS] testFuzz_TransfersRoundTripWithoutLoss(uint256) (runs: 1000, μ: 171389, ~: 172159)\n[PASS] test_AllowanceIsSpecificToSpenderAndHolder() (gas: 172819)\n[PASS] test_ApprovalEmitsEventAndCanBeReplacedAndRevoked() (gas: 167979)\n[PASS] test_ConstructorEmitsExactlyOneMintForWholeSupply() (gas: 6943)\n[PASS] test_DelegatedSelfTransferConsumesAllowanceButPreservesBalance() (gas: 94726)\n[PASS] test_DeployerCannotTakeHolderTokensWithoutApproval() (gas: 147660)\n[PASS] test_MetadataAndEntireSupplyBelongToDeployer() (gas: 53196)\n[PASS] test_NoAdministrativeMintBurnOrUpgradeEntryPoints() (gas: 895088)\n[PASS] test_RejectsEtherAndUnknownCalls() (gas: 89893)\n[PASS] test_RevertApprovalFromZero() (gas: 30903)\n[PASS] test_RevertApprovalToZero() (gas: 34558)\n[PASS] test_RevertSelfTransferAboveBalance() (gas: 37303)\n[PASS] test_RevertTransferAboveBalanceIsAtomic() (gas: 44864)\n[PASS] test_RevertTransferFromInsufficientAllowanceIsAtomic() (gas: 100247)\n[PASS] test_RevertTransferFromInsufficientBalanceRestoresAllowance() (gas: 106193)\n[PASS] test_RevertTransferFromToZeroRestoresAllowance() (gas: 95334)\n[PASS] test_RevertTransferFromZeroAddressEvenForZeroAmount() (gas: 33485)\n[PASS] test_RevertTransferToZeroEvenForZeroAmount() (gas: 63902)\n[PASS] test_RevertZeroSender() (gas: 30920)\n[PASS] test_RuntimeHasNoForbiddenOpcodes() (gas: 378098)\n[PASS] test_SelfTransferPreservesEntireBalanceAndEmitsEvent() (gas: 45683)\n[PASS] test_TransferFromSelfStillRequiresAllowance() (gas: 137954)\n[PASS] test_TransferFromSpendsFiniteAllowanceExactly() (gas: 222256)\n[PASS] test_TransfersDoNotCallRecipient() (gas: 170657)\n[PASS] test_UnlimitedAllowanceSurvivesRepeatedSpending() (gas: 186831)\n[PASS] test_WholeSupplyCanMoveInOneTransfer() (gas: 73247)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 50383)\n[PASS] test_ZeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 61530)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 153.59ms (471.69ms CPU time)\n\nRan 1 test for test/SPEPEToken.invariant.t.sol:SPEPETokenInvariantTest\n[PASS] invariant_FixedSupplyEqualsSumOfAllHolderBalances() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 4129  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | overspend    | 4094  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 4025  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 4136  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 983.25ms (982.34ms CPU time)\n\nRan 1 test for test/SPEPELedger.invariant.t.sol:SPEPELedgerInvariantTest\n[PASS] invariant_EveryBalanceAndAllowanceMatchesModel() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| SPEPELedgerHandler | approve      | 4114  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| SPEPELedgerHandler | attemptAdmin | 4126  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| SPEPELedgerHandler | transfer     | 4048  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| SPEPELedgerHandler | transferFrom | 4096  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.45s (4.45s CPU time)\n\nRan 5 test suites in 4.45s (5.89s CPU time): 44 tests passed, 0 failed, 0 skipped (44 total tests)\n","passed":true},{"durationMs":24,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SPEPEToken.approve(address,uint256)\",\"SPEPEToken.transfer(address,uint256)\",\"SPEPEToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":5,\"README.md\":122,\"foundry.toml\":11,\"launch.json\":24,\"src/SPEPEToken.sol\":70,\"test/COVERAGE.md\":17,\"test/LaunchFlows.t.sol\":125,\"test/SPEPEAllowanceEdges.t.sol\":213,\"test/SPEPELedger.invariant.t.sol\":155,\"test/SPEPEToken.invariant.t.sol\":93,\"test/SPEPEToken.t.sol\":357,\"test/support/TestBase.sol\":39},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"663d7b3740e1850bdf859f2d1e4aed56d8efa51d82f81dd1f436fcd958b6a084","verifiedTreeHash":"ca12797ab966658e733e8ae3150ced6d52f10593","verifierVersion":"0.1.0+ad90ce4c"},{"checks":[{"durationMs":557,"exitCode":0,"name":"build","output":"Compiling 5 files with Solc 0.8.26\nSolc 0.8.26 finished in 504.24ms\nCompiler run successful!\n","passed":true},{"durationMs":983,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 4 tests for test/LaunchFlows.t.sol:LaunchFlowsTest\n[PASS] test_Create2DeploymentLeavesFullSupplyWithFactory() (gas: 50159)\n[PASS] test_LaunchAllocationClaimAndTradeTransfersArriveWhole() (gas: 491602)\n[PASS] test_PoolManagerCannotSpendAnUnapprovedHolderBalance() (gas: 150057)\n[PASS] test_RoundingRemainderCanReachConfiguredRecipientWithoutBurning() (gas: 201491)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 895.79µs (1.34ms CPU time)\n\nRan 30 tests for test/SPEPEToken.t.sol:SPEPETokenTest\n[PASS] testFuzz_AllowanceConservation(uint256,uint256) (runs: 1000, μ: 142706, ~: 144655)\n[PASS] testFuzz_TransferAboveBalanceReverts(uint256) (runs: 1000, μ: 50382, ~: 50334)\n[PASS] testFuzz_TransfersRoundTripWithoutLoss(uint256) (runs: 1000, μ: 171439, ~: 172159)\n[PASS] test_AllowanceIsSpecificToSpenderAndHolder() (gas: 172819)\n[PASS] test_ApprovalEmitsEventAndCanBeReplacedAndRevoked() (gas: 167979)\n[PASS] test_ConstructorEmitsExactlyOneMintForWholeSupply() (gas: 6943)\n[PASS] test_DelegatedSelfTransferConsumesAllowanceButPreservesBalance() (gas: 94726)\n[PASS] test_DeployerCannotTakeHolderTokensWithoutApproval() (gas: 147660)\n[PASS] test_MetadataAndEntireSupplyBelongToDeployer() (gas: 53196)\n[PASS] test_NoAdministrativeMintBurnOrUpgradeEntryPoints() (gas: 895088)\n[PASS] test_RejectsEtherAndUnknownCalls() (gas: 89893)\n[PASS] test_RevertApprovalFromZero() (gas: 30903)\n[PASS] test_RevertApprovalToZero() (gas: 34558)\n[PASS] test_RevertSelfTransferAboveBalance() (gas: 37303)\n[PASS] test_RevertTransferAboveBalanceIsAtomic() (gas: 44864)\n[PASS] test_RevertTransferFromInsufficientAllowanceIsAtomic() (gas: 100247)\n[PASS] test_RevertTransferFromInsufficientBalanceRestoresAllowance() (gas: 106193)\n[PASS] test_RevertTransferFromToZeroRestoresAllowance() (gas: 95334)\n[PASS] test_RevertTransferFromZeroAddressEvenForZeroAmount() (gas: 33485)\n[PASS] test_RevertTransferToZeroEvenForZeroAmount() (gas: 63902)\n[PASS] test_RevertZeroSender() (gas: 30920)\n[PASS] test_RuntimeHasNoForbiddenOpcodes() (gas: 378098)\n[PASS] test_SelfTransferPreservesEntireBalanceAndEmitsEvent() (gas: 45683)\n[PASS] test_TransferFromSelfStillRequiresAllowance() (gas: 137954)\n[PASS] test_TransferFromSpendsFiniteAllowanceExactly() (gas: 222256)\n[PASS] test_TransfersDoNotCallRecipient() (gas: 170657)\n[PASS] test_UnlimitedAllowanceSurvivesRepeatedSpending() (gas: 186831)\n[PASS] test_WholeSupplyCanMoveInOneTransfer() (gas: 73247)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 50383)\n[PASS] test_ZeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 61530)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 25.88ms (86.28ms CPU time)\n\nRan 1 test for test/SPEPEToken.invariant.t.sol:SPEPETokenInvariantTest\n[PASS] invariant_FixedSupplyEqualsSumOfAllHolderBalances() (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 4187  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | overspend    | 4054  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 4164  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 3979  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 929.10ms (928.08ms CPU time)\n\nRan 3 test suites in 930.08ms (955.88ms CPU time): 35 tests passed, 0 failed, 0 skipped (35 total tests)\n","passed":true},{"durationMs":36,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SPEPEToken.approve(address,uint256)\",\"SPEPEToken.transfer(address,uint256)\",\"SPEPEToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":5,\"README.md\":122,\"foundry.toml\":11,\"launch.json\":24,\"src/SPEPEToken.sol\":70,\"test/LaunchFlows.t.sol\":125,\"test/SPEPEToken.invariant.t.sol\":93,\"test/SPEPEToken.t.sol\":357,\"test/support/TestBase.sol\":39},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":816,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":403,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/SPEPEToken.sol:11: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"b6fb6a5d58c01ce8c51eb81b9b2720e826a7e80a44df1084745744f47ffd0acb","verifiedTreeHash":"36d4f99d1d468dd42dd109b2a6fd36afbed42b35","verifierVersion":"0.1.0+ad90ce4c"}]}