{"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":"35a89a34-2d64-4bd4-bd6d-5e91236ec63e","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"d7de90c2807cc46cb15a1839c28d6a4d92e2ed104488a6c80bdbb61ee6946b22","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":"dfe62c76adbf9c540dfc1a30b322b9d1afd9f519d0b5055016ee2bb927d79d66","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":"1c2fc8c981af84f66b13cd0ca3fa797108f3e8f36e04a642692e0f62bea7260e","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":"992a7f27ac519acb3d5e1cc8385acce1fbeb0cd82fd593fd2c1226cdd3b0ebae","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":"3d786140f23ca4a59d0a0ae7de9c5cd60be41b0aba5ab52cd02a07e1423ed69a","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":"4227842c587a55be2df0bee1dd121789fb512b9ba74822a94eda94a056824a2a","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":"ca1b721d3c6651b243978676f6754a39e4d54419e0ce82500f2223705f15e136","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"201320b4e7fd24d27fc03c7a61d93d968a4f2a9413cabb44f3b3976cb7bbb6c5","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: SqueekChain (SQK).\nToken name: SqueekChain\nToken symbol: SQK\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"fff2c6078cf6f6123d69bc145bb5763bfd60a74ea9aa05aa3ca7141d4c50c12d","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"35a89a34-2d64-4bd4-bd6d-5e91236ec63e","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2014-squeekchain"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52667","feedbackHash":"af70220344ed372e0ba127c241a4dc1eeb682bb97b74bc5e43da69888f424d44","nodeKey":"audit_economics","submissionHash":"d7de90c2807cc46cb15a1839c28d6a4d92e2ed104488a6c80bdbb61ee6946b22","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52250","feedbackHash":"7ed6979bea3e6e23290d6c419d04db37c015c50bd996593b8f2515e83668756b","nodeKey":"audit_flow","submissionHash":"dfe62c76adbf9c540dfc1a30b322b9d1afd9f519d0b5055016ee2bb927d79d66","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52189","feedbackHash":"c000c80eabfdb47e0769f1aa7d0de8dfda982f7dfb977e1545db5bd82ae04f55","nodeKey":"audit_judge","submissionHash":"1c2fc8c981af84f66b13cd0ca3fa797108f3e8f36e04a642692e0f62bea7260e","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51141","feedbackHash":"68ef1d6eeb5a36f659ae0cabd03b67f5a5a47995ef7dcc8e969ed31eef19b279","nodeKey":"audit_math","submissionHash":"992a7f27ac519acb3d5e1cc8385acce1fbeb0cd82fd593fd2c1226cdd3b0ebae","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52149","feedbackHash":"db24e17d59f13812bd17438c6e9422366ad658ebfb42b7873943bc5ff7309dc9","nodeKey":"audit_permissions","submissionHash":"3d786140f23ca4a59d0a0ae7de9c5cd60be41b0aba5ab52cd02a07e1423ed69a","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52682","feedbackHash":"b2f2d63388a7c84d3fdd25ff8e0a3c05b780bd4255fa096a23c141bc8617e951","nodeKey":"build_contract_project","submissionHash":"4227842c587a55be2df0bee1dd121789fb512b9ba74822a94eda94a056824a2a","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"50945","feedbackHash":"b733ef0bdb07250329e23272f24036ff701b68c104537bea0b10098c2403b26e","nodeKey":"manifest","submissionHash":"ca1b721d3c6651b243978676f6754a39e4d54419e0ce82500f2223705f15e136","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51410","feedbackHash":"731e2e49254b83da8c95413249265883b814ebaea986f82f647d9b4607fdc0ec","nodeKey":"write_foundry_tests","submissionHash":"201320b4e7fd24d27fc03c7a61d93d968a4f2a9413cabb44f3b3976cb7bbb6c5","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"2257904431c3ebd58a7054932ea8a3e2924945e6b554f19ed5c635f92616c692","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fe5e46fb044c6af1","findings":[],"hash":"1c2fc8c981af84f66b13cd0ca3fa797108f3e8f36e04a642692e0f62bea7260e","nodeId":"edc7f713-7b1b-409f-aabc-a2ba443ea071","outcome":"completed","summary":"The review is complete. The findings file holds an empty findings list and a six-row coverage record, and the working tree is otherwise unchanged.\n\n**Result: no defects.** All four specialists and the test writer reported nothing, and nothing reproduced on my own pass either.\n\n**What I verified**\n\n- The token is a stock OpenZeppelin v5.1.0 ERC20 with a no-argument constructor that mints 1e27 to msg.sender. The vendored ERC20, Context, IERC20 and IERC6093 sources hash identically to the upstream v5.1.0 release, so nothing was altered in the library.\n- The compiled ABI exposes only approve, transfer and transferFrom as state-changing. There is no mint, burn, owner, pause, blocklist, receive or fallback path.\n- The runtime bytecode contains no DELEGATECALL, CALLCODE, SELFDESTRUCT, CALL, STATICCALL, CREATE or CREATE2. Creation code is 3,388 bytes and runtime 2,217 bytes, far under the limits, and a CREATE2 deploy from a probe at a fake factory address succeeds.\n- The repository's own 59 tests pass. My scratch test, deleted after running, covered the swarm-share flow moving whole amounts, approve overwrite semantics, infinite allowance, every revert path of the three entry points, the privileged-call list from the protected floor, and a fuzzed conservation invariant.\n- The manifest matches the code: empty constructorArgs for a no-arg constructor, totalSupply equal to what the constructor mints, decimals 18, contract name 16 characters, lowercase addresses.\n\n**Leads dropped.** Aderyn's low-severity large-literal note is style only. The literal evaluates to exactly 1e27 at compile time, which the totalSupply assertion confirms.\n\nI could not run the protected floor test itself, since it imports Uniswap v4 core and the factory's LaunchLiquidity helpers that are not in this tree. The scratch test reproduced its token-level checks instead.","treeHash":null,"usage":{"cachedInputTokens":632136,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":8724,"runtime":"claude","turns":11,"wallClockMs":167843}},{"artifacts":[],"attempt":1,"bundleHash":"4c9a6c658c59edc11173e9228f0923617510a5e7bf4c3ca5f9109f1afbaa07c9","device":"68d4e81b6fe7b30b","findings":[],"hash":"201320b4e7fd24d27fc03c7a61d93d968a4f2a9413cabb44f3b3976cb7bbb6c5","nodeId":"fe143a15-784a-428d-8efe-49f82dad7b31","outcome":"completed","summary":"Added 23 edge/fuzz tests and expanded the suite to five stateful invariants covering balances, allowances, supply, and failure paths.\n\n`forge build` and `forge test` pass offline with the required seed: 59 tests passed, including 32,768 invariant calls.\n\nOnly `test/` changed. No confirmed defects found.","treeHash":"3f0c268e6840c095f53e85a3bc29d2d7c0bdc803","usage":{"cachedInputTokens":1243776,"inputTokens":112106,"model":"gpt-6-astra","outputTokens":15507,"runtime":"codex","turns":6,"wallClockMs":406954}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"af1843f371022d4a","findings":[],"hash":"3d786140f23ca4a59d0a0ae7de9c5cd60be41b0aba5ab52cd02a07e1423ed69a","nodeId":"43a6336f-f0d5-43be-932d-7e56d7bc46eb","outcome":"completed","summary":"Review complete. No defects found in the assigned area; `.imd-findings.json` holds an empty findings list and eight coverage rows, and the tree is otherwise unchanged.\n\n**What I checked**\n\n- **Access Control.** The compiled ABI exposes only the ERC-20 functions plus five constant getters. There is no owner, role, initializer, proxy, receive or fallback. The constructor is non-payable, takes no arguments and mints the full supply once to msg.sender. After handoff the factory has no path to a holder's balance: a pull without allowance reverts with ERC20InsufficientAllowance, and tx.origin gives nothing.\n- **Trust Gap.** There is no economic formula, setter, or caller-class branch, so nothing sits at the seam between authorization and value flow. I also read the vendored ERC20.sol and Context.sol line by line against OpenZeppelin v5.1.0 to rule out a tampered dependency. Both are upstream, the storage layout is the five standard slots, and the runtime contains no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **Asymmetry.** The transfer and transferFrom paths share `_transfer` and `_update`. approve overwrites, transferFrom decrements by exactly the amount, and the max allowance is sticky as documented. No exempt-versus-ordinary sender branch exists, so the launch flows move exactly what they state.\n\n**Evidence run**\n\n- Project suite with the verifier's fuzz seed: 36 tests pass, invariant suite 64 runs by 32 depth with zero reverts.\n- A scratch test of five extra concrete traces covering the factory pull, self transferFrom, allowance mirror, unknown selectors and a value-bearing constructor. All behaved per spec. The scratch file was deleted afterward.\n\n**Trust assumptions, not defects**\n\n- Standard ERC-20 approve front-running applies, as it does to every plain ERC-20.\n- The README still mentions a leftover `lib/oz-tmp/` directory that is not in the tree. Stale documentation only, with no code impact.\n\nCoverage reached every listed entry point plus the constructor, the supply invariant, the launch-flow invariant, the vendored dependency and the deploy script.","treeHash":null,"usage":{"cachedInputTokens":706501,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":11299,"runtime":"claude","turns":26,"wallClockMs":186528}},{"artifacts":[],"attempt":1,"bundleHash":"2d99941c8e8cee0f4df8e4e53820bf4f35f5ff845ae3755af8362dee408f2a10","device":"a0f4c3f900dedd4a","findings":[],"hash":"4227842c587a55be2df0bee1dd121789fb512b9ba74822a94eda94a056824a2a","nodeId":"1b9ee7ee-2004-4702-96d3-554231f9c47c","outcome":"completed","summary":"Everything is built, tested and formatted. Nothing further depends on another result, so the work is complete.\n\n**Delivered: SqueekChain (SQK), a plain fixed-supply ERC-20 for the IMD custom token launch.**\n\nWhat was built:\n- `src/SqueekChainToken.sol`: OpenZeppelin v5.1.0 `ERC20` with a no-argument constructor that mints the whole supply once to `msg.sender`, which is the factory at launch. Name `SqueekChain`, symbol `SQK`, 18 decimals, supply 1e27 minor units. No owner, mint, pause, blocklist, burn, tax, external call, delegatecall or selfdestruct. Contract name is 16 characters, so it fits the manifest.\n- `script/DeploySqueekChain.s.sol`: dev-only script with a `deploy()` function the tests call directly. It reads no environment variables.\n- `test/SqueekChainToken.t.sol` and `test/SqueekChainToken.invariant.t.sol`: 36 tests covering metadata, the one-time mint to the deployer (not tx.origin), CREATE2 deployment, launch flows arriving whole, transfer and approval success paths, every standard revert, the absence of all admin selectors the protected floor probes, a bytecode opcode scan, and an invariant suite proving supply is fixed and balances sum to it.\n- `foundry.toml` pins solc 0.8.26 with `bytecode_hash = \"none\"`, no ffi, no filesystem permissions. `remappings.txt` points at vendored forge-std v1.9.7 and OpenZeppelin v5.1.0, committed as ordinary files with no git metadata.\n- `README.md` documents parameters, launch economics, assumptions, operational responsibilities, the security checklist pass, and that there is nothing to configure after launch.\n\nVerification results, run offline with an empty environment and the verifier's fuzz seed:\n\n| Check | Result |\n|---|---|\n| forge build | pass |\n| forge test (36 tests, including invariants) | pass |\n| forge fmt --check | pass |\n| Runtime bytecode metadata | version only, no hash |\n\nOne thing to know: the sandbox mounts any `.gitmodules` file read-only, so the empty leftover clone directory `lib/oz-tmp/` could not be deleted. It holds only that one file, is covered by `.gitignore`, is confirmed excluded from staging, and is not a submodule. The README notes this. The protected floor test itself could not be run here because it imports Uniswap v4 sources this repo does not vendor, but every property it checks is mirrored in the local suite.","treeHash":"affceb4e03dc64715cc45f630a621163b2b4f839","usage":{"cachedInputTokens":1080661,"inputTokens":514,"model":"claude-fable-5-1","outputTokens":27607,"runtime":"claude","turns":26,"wallClockMs":416469}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"7d454e6cee88c390","findings":[],"hash":"992a7f27ac519acb3d5e1cc8385acce1fbeb0cd82fd593fd2c1226cdd3b0ebae","nodeId":"6f9c9946-6455-4f4c-8683-3b6ac91c9419","outcome":"completed","summary":"The review is complete. The math audit of SqueekChain (SQK) found no defects, and the findings file records that with full coverage.\n\n**Outcome**\n\n- `.imd-findings.json` holds an empty findings list and 8 coverage rows, one for each of the three listed entry points plus five invariant and boundary rows. All verdicts are `holds`.\n- No scratch files remain. The working tree is clean apart from the findings file, which the repository's own exclude list already ignores.\n\n**What I checked, against the Math Precision, Boundary and Numerical Gap guides**\n\n- **Supply constant.** The total supply is a compile-time constant of one billion times ten to the eighteenth, well under the uint256 range, minted exactly once to the constructor's caller. It matches the manifest value the README records. The aderyn \"large numeric literal\" lead is the underscore-separated constant and is not a defect.\n- **Transfer arithmetic.** The token adds nothing to OpenZeppelin's accounting. I diffed the vendored ERC20, Context and error-interface files against upstream v5.1.0 and they are byte-identical. The unchecked subtractions and additions are bounded by the balances-sum-to-supply invariant, which held across the project's invariant suite and my own fuzzed three-way transfers.\n- **Edges.** Transfers of supply plus one and of max uint revert with the right error. An allowance of max minus one decrements, while exactly max is treated as infinite. A max-uint pull under an infinite allowance still fails on balance. Self-transfer and zero-amount paths keep balances. Ether and unknown selectors revert since there is no receive or fallback.\n- **Launch splits.** The 10 percent swarm share, 80 percent pool share and 10 percent remainder divide the supply with no remainder, and the token has no tax, hook or exemption, so every launch flow arrives whole.\n- **Boundary enumeration.** The token has no external calls, payable functions, sentinel branches or bytes decoding, so the Boundary guide's corner cases reduce to OpenZeppelin's zero-address checks, which revert as the standard requires.\n\n**One note, not a finding.** The contract's `decimals()` is OpenZeppelin's hard-coded 18 and is not wired to the `TOKEN_DECIMALS` constant used to derive the supply. They agree today and no input makes them disagree, so it is recorded in a coverage row only. The project's own test would catch any future divergence.\n\nBuild and the full test suite with the verifier's fuzz seed passed, 36 tests green, and `forge fmt --check` is clean.","treeHash":null,"usage":{"cachedInputTokens":752762,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":11536,"runtime":"claude","turns":24,"wallClockMs":184657}},{"artifacts":[],"attempt":1,"bundleHash":"c8881e54f20db392cf25041df304ac97795b8ce1720f43975511117518b46a56","device":"f2eb60f00abb5b80","findings":[],"hash":"ca1b721d3c6651b243978676f6754a39e4d54419e0ce82500f2223705f15e136","nodeId":"e8150da1-4bb1-4207-b98e-181a380f7902","outcome":"completed","summary":"Created [launch.json](/home/imd-worker/.identitymd/work/35a89a34-2d64-4bd4-bd6d-5e91236ec63e/e8150da1-4bb1-4207-b98e-181a380f7902/launch.json) with the exact supply, pool settings, and economics; empty constructor arguments and application contracts.\n\nValidated against the brief and compiled ABI. `forge build` and `forge test` passed offline: 36 tests, zero failures, using the supplied fuzz seed.\n\nOnly `launch.json` is changed outside scratch artifacts.","treeHash":"5113d82aac1410a63ed615a10661e46f3b9ff158","usage":{"cachedInputTokens":196992,"inputTokens":44078,"model":"gpt-6-astra","outputTokens":2727,"runtime":"codex","turns":3,"wallClockMs":73202}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"b38bea3c04869138","findings":[],"hash":"d7de90c2807cc46cb15a1839c28d6a4d92e2ed104488a6c80bdbb61ee6946b22","nodeId":"9418446d-2575-496d-895a-134c6638e974","outcome":"completed","summary":"The review is complete. The findings file at `.imd-findings.json` holds zero findings and nine coverage rows, one for each of the three listed entry points plus the invariants and flows I checked. The scratch tests are removed and the working tree is otherwise untouched.\n\n**What I reviewed.** The token is a 43-line contract that inherits OpenZeppelin ERC20 and mints 1e27 to the constructor's caller. I read it against the Senior Auditor's Mindset and the Economic Security, Invariant and Flow Gap guides, item by item.\n\n**What I verified.**\n- All five vendored OpenZeppelin files the token depends on are byte-identical to the upstream v5.1.0 tag, so the inherited transfer and allowance logic is the audited stock code.\n- The compiled ABI has exactly three state-changing functions and no receive or fallback, so there is no admin, mint, burn, pause or ether path.\n- The existing 36-test suite passes with the verifier's fuzz seed, including the invariant suite.\n- My own scratch probes passed: conservation of supply under 512 random mixed transfer, approve and transferFrom sequences, the exact 10/80/10 launch flows arriving whole, ERC-20 behaviour at exact-balance and max-allowance edges, allowance residuals never exceeding balance, 512 random selectors from the deployer leaving supply unchanged, and ether rejected on every selector.\n\n**What has no defect in my area.** Every entry point holds. There is no external dependency, oracle, callback, fee or hook, so none of the economic extraction, dependency-failure or flow-gap failure modes in the guides has a reachable path. The only property worth noting is the inherent ERC-20 approve front-running race, which is a standard-level property of every plain ERC-20 and not a defect of this code, so I did not report it.\n\n**Not covered.** Nothing in the assigned area was left unreached. The protected Owners test is vacuous here because the launch has no application contracts.","treeHash":null,"usage":{"cachedInputTokens":707229,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":13572,"runtime":"claude","turns":28,"wallClockMs":200726}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fc87c05048aca47d","findings":[],"hash":"dfe62c76adbf9c540dfc1a30b322b9d1afd9f519d0b5055016ee2bb927d79d66","nodeId":"631fce2f-6b94-4f50-ae6f-4cd589f414b3","outcome":"completed","summary":"The review is complete and found no defects. The findings file holds an empty list and a nine-row coverage record. The working tree is otherwise unchanged; the only new file is `.imd-findings.json`, and the scratch test I used is deleted.\n\n**What I checked, in my area**\n\n- **Execution Trace.** Each of the three state-changing entry points was traced from its selector through the unmodified OpenZeppelin v5.1.0 internals to storage. Zero receiver, insufficient balance, insufficient allowance and zero spender all revert with the expected custom errors. Infinite allowance is left alone, finite allowance decrements exactly, and a zero-value transferFrom by a stranger only emits an event, which is standard ERC-20 behaviour. The constructor mints exactly 1e27 to msg.sender with no external call, and the aderyn large-literal lead resolves to the correct value.\n- **Periphery.** The five vendored OpenZeppelin files the token reaches hash identical to upstream v5.1.0, so the base contract is untampered. Context resolves msg.sender directly, so there is no forwarder path. The runtime has no DELEGATECALL, CALLCODE or SELFDESTRUCT, no receive or fallback, and carries only a compiler-version CBOR tag, consistent with the no-metadata-hash build setting.\n- **First Principles.** The code's assumptions are that the deployer is the factory, that the supply fits uint256, and that decimals is 18. All hold. The only state-changing ABI surface is approve, transfer and transferFrom, so no path can grow the supply or move a holder's balance without an allowance. The project's own unit, fuzz and invariant suites pass with the verifier's seed, and my scratch edge tests confirmed the reverts and residue behaviour I traced.\n\n**What I did not reach**\n\nThe seed and swap against a live Uniswap v4 PoolManager, which the protected floor test exercises, was not run because v4-core is not vendored in this tree. Since the token is a plain OpenZeppelin ERC20 with no transfer hook, the PoolManager uses the same transfer path I traced, so I rate the risk low but recorded the row as unreached.\n\nTwo non-defects worth the author's awareness, neither reportable with a failing input: the inherent ERC-20 approve front-running race, and the fact that decimals() returns OpenZeppelin's hardcoded 18 rather than the TOKEN_DECIMALS constant, so the two agree today but are not linked.","treeHash":null,"usage":{"cachedInputTokens":462641,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":11950,"runtime":"claude","turns":23,"wallClockMs":177007}}],"verification":[{"checks":[{"durationMs":1576,"exitCode":0,"name":"build","output":"Compiling 30 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.47s\nCompiler run successful!\n","passed":true},{"durationMs":16249,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 23 tests for test/SqueekChainToken.edges.t.sol:SqueekChainTokenEdgesTest\n[PASS] testFuzz_approvalReplacementAndIsolation(uint256,uint256,uint256) (runs: 1000, μ: 330185, ~: 331123)\nLogs:\n  Bound result 2827\n\n[PASS] testFuzz_factoryMintHasExactlyOneTransfer(bytes32) (runs: 1000, μ: 252850, ~: 252945)\n[PASS] testFuzz_failedOverdrawPreservesBalancesAndAllowance(uint256,uint256,bool) (runs: 1000, μ: 234469, ~: 234463)\nLogs:\n  Bound result 877\n  Bound result 4498\n\n[PASS] testFuzz_otherSpenderCannotUseApproval(uint256,uint256) (runs: 1000, μ: 187766, ~: 187880)\nLogs:\n  Bound result 24441\n\n[PASS] testFuzz_roundTripPreservesBalancesAndApprovals(uint256,uint256) (runs: 1000, μ: 308771, ~: 309588)\nLogs:\n  Bound result 86169505228559802426749404\n\n[PASS] testFuzz_splitDelegatedTransferMatchesSingleTransfer(uint256,uint256) (runs: 1000, μ: 412569, ~: 414374)\nLogs:\n  Bound result 3000000000000000000\n  Bound result 24441\n\n[PASS] testFuzz_zeroRecipientFailurePreservesAllowance(uint256,uint256) (runs: 1000, μ: 171809, ~: 172391)\nLogs:\n  Bound result 24441\n\n[PASS] test_approvalAboveBalanceSurvivesDirectTransfers() (gas: 318609)\n[PASS] test_delegatedSelfTransferCannotOverdrawOrConsumeAllowance() (gas: 171295)\n[PASS] test_delegatedSelfTransferConsumesFiniteAllowance() (gas: 174262)\n[PASS] test_exhaustedAllowanceCannotBeSpentTwice() (gas: 223805)\n[PASS] test_infiniteApprovalCanBeRevokedAndReplaced() (gas: 447504)\n[PASS] test_infiniteApprovalDoesNotAuthorizeOverdrawing() (gas: 310085)\n[PASS] test_maximumMinusOneAllowanceIsFinite() (gas: 199059)\n[PASS] test_maximumTransferRevertsAtomically() (gas: 104051)\n[PASS] test_oneMinorUnitAndWholeSupplyCanRoundTrip() (gas: 419182)\n[PASS] test_ownerTransferFromRequiresSelfApproval() (gas: 292983)\n[PASS] test_selfTransferStillRequiresEnoughBalance() (gas: 101947)\n[PASS] test_spenderCanReceiveEntireSupplyWithExactApproval() (gas: 153261)\n[PASS] test_transferToTokenContractDoesNotBurnSupply() (gas: 95280)\n[PASS] test_zeroAddressCannotBeSenderOrApprover() (gas: 166535)\n[PASS] test_zeroTransfersEmitEventsEvenWithoutBalanceOrApproval() (gas: 160988)\n[PASS] test_zeroValueStillRejectsZeroRecipientAndSpender() (gas: 166936)\nSuite result: ok. 23 passed; 0 failed; 0 skipped; finished in 91.26ms (630.18ms CPU time)\n\nRan 35 tests for test/SqueekChainToken.t.sol:SqueekChainTokenTest\n[PASS] testFuzz_chainedTransfersConserveSupply(address,address,uint256,uint256) (runs: 512, μ: 163848, ~: 165587)\nLogs:\n  Bound result 10239\n  Bound result 14\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 512, μ: 100464, ~: 101219)\nLogs:\n  Bound result 817415846931372624565753535\n\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256) (runs: 512, μ: 135519, ~: 137210)\nLogs:\n  Bound result 2469647780551220216\n  Bound result 122167001505384426\n\n[PASS] testFuzz_transferRevertsAboveBalance(uint256) (runs: 512, μ: 37468, ~: 37801)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129639940\n\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 90628)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 63322)\n[PASS] test_approveZeroSpenderReverts() (gas: 30804)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 5857)\n[PASS] test_contractNameFitsManifest() (gas: 3200)\n[PASS] test_deployScriptMintsToItsCaller() (gas: 1557488)\n[PASS] test_deployerCannotPullFromHolder() (gas: 92733)\n[PASS] test_deploysThroughCreate2WithNoArguments() (gas: 581925)\n[PASS] test_eachDeploymentMintsToItsOwnDeployer() (gas: 28427)\n[PASS] test_launchFlowsArriveWhole() (gas: 209363)\n[PASS] test_metadata() (gas: 41535)\n[PASS] test_mintGoesToMsgSenderNotTxOrigin() (gas: 18620)\n[PASS] test_mintsWholeSupplyOnceToDeployer() (gas: 43133)\n[PASS] test_noCallIncreasesSupply() (gas: 830904)\n[PASS] test_noEtherAccepted() (gas: 37456)\n[PASS] test_noPrivilegedCallMovesOrFreezesHolder() (gas: 474407)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 2839161)\n[PASS] test_supplyConstantsAgree() (gas: 37933)\n[PASS] test_transferFromAboveAllowanceReverts() (gas: 80616)\n[PASS] test_transferFromAboveBalanceRevertsEvenWithAllowance() (gas: 86290)\n[PASS] test_transferFromSpendsAllowance() (gas: 153668)\n[PASS] test_transferFromToZeroAddressReverts() (gas: 83825)\n[PASS] test_transferFromWithInfiniteAllowanceDoesNotDecrease() (gas: 126356)\n[PASS] test_transferFromWithoutAllowanceReverts() (gas: 33461)\n[PASS] test_transferMovesExactAmount() (gas: 90315)\n[PASS] test_transferRevertsOneWeiOverBalance() (gas: 33587)\n[PASS] test_transferRevertsWhenBalanceInsufficient() (gas: 33230)\n[PASS] test_transferToSelfKeepsBalance() (gas: 41306)\n[PASS] test_transferToZeroAddressReverts() (gas: 30774)\n[PASS] test_transferWholeBalance() (gas: 71862)\n[PASS] test_transferZeroAmountSucceeds() (gas: 43271)\nSuite result: ok. 35 passed; 0 failed; 0 skipped; finished in 91.30ms (369.19ms CPU time)\n\nRan 1 test for test/SqueekChainToken.invariant.t.sol:SqueekChainTokenInvariantTest\n[PASS]\nSqueekChainTokenInvariantTest invariants:\n[PASS] invariant_allowancesMatchAuthorizations\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_eachHolderHasExactlyTheirTokens\n[PASS] invariant_metadataRemainsFixed\n[PASS] invariant_totalSupplyIsFixed\n SqueekChainTokenInvariantTest invariants (runs: 256, calls: 32768, reverts: 0)\n\n╭--------------------+----------------------+-------+---------+----------╮\n| Contract           | Selector             | Calls | Reverts | Discards |\n+========================================================================+\n| SqueekChainHandler | approve              | 3031  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| SqueekChainHandler | approveBoundary      | 2951  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| SqueekChainHandler | approveZero          | 3064  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| SqueekChainHandler | privilegedCall       | 3041  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| SqueekChainHandler | transfer             | 2884  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| SqueekChainHandler | transferAboveBalance | 2956  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| SqueekChainHandler | transferBoundary     | 2990  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| SqueekChainHandler | transferFrom         | 2879  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| SqueekChainHandler | transferFromInvalid  | 3096  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| SqueekChainHandler | transferFromToZero   | 2999  | 0       | 0        |\n|--------------------+----------------------+-------+---------+----------|\n| SqueekChainHandler | transferToZero       | 2877  | 0       | 0        |\n╰--------------------+----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 0\n  Bound result 42\n  Bound result 199999999999999999999999958\n  Bound result 0\n  Bound result 145053981739482028729311433594615328289\n  Bound result 0\n  Bound result 8698\n  Bound result 10908\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5030\n  Bound result 2110234841\n  Bound result 9\n  Bound result 0\n  Bound result 193708442928374522235604377082765543243372216284\n  Bound result 0\n  Bound result 0\n  Bound result 9614\n  Bound result 0\n  Bound result 8953467679651767\n  Bound result 1034506541857383239867390764559\n  Bound result 1\n  Bound result 0\n  Bound result 3905\n  Bound result 5\n  Bound result 24141\n  Bound result 10329\n  Bound result 0\n  Bound result 14218\n  Bound result 115792089237316195423570985008687907853269984665640364039457584007913129670228\n  Bound result 2\n  Bound result 10979\n  Bound result 382\n  Bound result 289\n  Bound result 1967\n  Bound result 115792089237316195423570985008687907853269984665640364039457584007913129671557\n  Bound result 18\n  Bound result 49569\n  Bound result 356\n  Bound result 141757854232707373536124606\n  Bound result 4000000000000000000\n  Bound result 1321\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129636758\n  Bound result 5742\n  Bound result 1000000000\n  Bound result 9912\n  Bound result 2623\n  Bound result 50\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913048636745\n  Bound result 35743237655138215\n  Bound result 7080\n  Bound result 3000\n  Bound result 200000000000000000000000008\n  Bound result 0\n  Bound result 95\n  Bound result 115792089237316195423570985008687907853269984665639964039457584007911019397103\n  Bound result 9711\n  Bound result 0\n  Bound result 199999999999999999999969611\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640364039457584007913129674522\n  Bound result 115792089237316195423570985008687907853269984665640364039457584007913129680426\n  Bound result 1064470261\n  Bound result 199999999999999999999969610\n  Bound result 199999999999999999999969610\n  Bound result 199999999999999997889784106\n  Bound result 3438\n  Bound result 600000000000000002110242846\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 16.15s (16.15s CPU time)\n\nRan 3 test suites in 16.15s (16.33s CPU time): 59 tests passed, 0 failed, 0 skipped (59 total tests)\n","passed":true},{"durationMs":38,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SqueekChainToken.approve(address,uint256)\",\"SqueekChainToken.transfer(address,uint256)\",\"SqueekChainToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":9,\"README.md\":188,\"foundry.toml\":33,\"remappings.txt\":2,\"script/DeploySqueekChain.s.sol\":28,\"src/SqueekChainToken.sol\":43,\"test/SqueekChainToken.edges.t.sol\":376,\"test/SqueekChainToken.invariant.t.sol\":275,\"test/SqueekChainToken.t.sol\":432},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"201320b4e7fd24d27fc03c7a61d93d968a4f2a9413cabb44f3b3976cb7bbb6c5","verifiedTreeHash":"3f0c268e6840c095f53e85a3bc29d2d7c0bdc803","verifierVersion":"0.1.0+d952fceb"},{"checks":[{"durationMs":1928,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.81s\nCompiler run successful!\n","passed":true},{"durationMs":365,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 35 tests for test/SqueekChainToken.t.sol:SqueekChainTokenTest\n[PASS] testFuzz_chainedTransfersConserveSupply(address,address,uint256,uint256) (runs: 512, μ: 164095, ~: 165593)\nLogs:\n  Bound result 3000000000000000000\n  Bound result 15093\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 512, μ: 100496, ~: 101213)\nLogs:\n  Bound result 55934\n\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256) (runs: 512, μ: 135168, ~: 137208)\nLogs:\n  Bound result 706766066666376805854465044\n  Bound result 561539174895644195507655784\n\n[PASS] testFuzz_transferRevertsAboveBalance(uint256) (runs: 512, μ: 37471, ~: 37801)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129891131\n\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 90628)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 63322)\n[PASS] test_approveZeroSpenderReverts() (gas: 30804)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 5857)\n[PASS] test_contractNameFitsManifest() (gas: 3200)\n[PASS] test_deployScriptMintsToItsCaller() (gas: 1557488)\n[PASS] test_deployerCannotPullFromHolder() (gas: 92733)\n[PASS] test_deploysThroughCreate2WithNoArguments() (gas: 581925)\n[PASS] test_eachDeploymentMintsToItsOwnDeployer() (gas: 28427)\n[PASS] test_launchFlowsArriveWhole() (gas: 209363)\n[PASS] test_metadata() (gas: 41535)\n[PASS] test_mintGoesToMsgSenderNotTxOrigin() (gas: 18620)\n[PASS] test_mintsWholeSupplyOnceToDeployer() (gas: 43133)\n[PASS] test_noCallIncreasesSupply() (gas: 830904)\n[PASS] test_noEtherAccepted() (gas: 37456)\n[PASS] test_noPrivilegedCallMovesOrFreezesHolder() (gas: 474407)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 2839161)\n[PASS] test_supplyConstantsAgree() (gas: 37933)\n[PASS] test_transferFromAboveAllowanceReverts() (gas: 80616)\n[PASS] test_transferFromAboveBalanceRevertsEvenWithAllowance() (gas: 86290)\n[PASS] test_transferFromSpendsAllowance() (gas: 153668)\n[PASS] test_transferFromToZeroAddressReverts() (gas: 83825)\n[PASS] test_transferFromWithInfiniteAllowanceDoesNotDecrease() (gas: 126356)\n[PASS] test_transferFromWithoutAllowanceReverts() (gas: 33461)\n[PASS] test_transferMovesExactAmount() (gas: 90315)\n[PASS] test_transferRevertsOneWeiOverBalance() (gas: 33587)\n[PASS] test_transferRevertsWhenBalanceInsufficient() (gas: 33230)\n[PASS] test_transferToSelfKeepsBalance() (gas: 41306)\n[PASS] test_transferToZeroAddressReverts() (gas: 30774)\n[PASS] test_transferWholeBalance() (gas: 71862)\n[PASS] test_transferZeroAmountSucceeds() (gas: 43271)\nSuite result: ok. 35 passed; 0 failed; 0 skipped; finished in 28.06ms (134.46ms CPU time)\n\nRan 1 test for test/SqueekChainToken.invariant.t.sol:SqueekChainTokenInvariantTest\n[PASS]\nSqueekChainTokenInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_totalSupplyIsFixed\n SqueekChainTokenInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| SqueekChainHandler | approve      | 717   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| SqueekChainHandler | transfer     | 665   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| SqueekChainHandler | transferFrom | 666   | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 404\n  Bound result 0\n  Bound result 0\n  Bound result 404098526\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 53292876425512108774894648\n  Bound result 2233625728\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 231.46ms (229.52ms CPU time)\n\nRan 2 test suites in 233.28ms (259.52ms CPU time): 36 tests passed, 0 failed, 0 skipped (36 total tests)\n","passed":true},{"durationMs":52,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SqueekChainToken.approve(address,uint256)\",\"SqueekChainToken.transfer(address,uint256)\",\"SqueekChainToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":9,\"README.md\":188,\"foundry.toml\":33,\"remappings.txt\":2,\"script/DeploySqueekChain.s.sol\":28,\"src/SqueekChainToken.sol\":43,\"test/SqueekChainToken.invariant.t.sol\":80,\"test/SqueekChainToken.t.sol\":432},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":792,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":491,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/SqueekChainToken.sol:32: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"4227842c587a55be2df0bee1dd121789fb512b9ba74822a94eda94a056824a2a","verifiedTreeHash":"affceb4e03dc64715cc45f630a621163b2b4f839","verifierVersion":"0.1.0+d952fceb"},{"checks":[{"durationMs":1051,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 985.34ms\nCompiler run successful!\n","passed":true},{"durationMs":234,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 35 tests for test/SqueekChainToken.t.sol:SqueekChainTokenTest\n[PASS] testFuzz_chainedTransfersConserveSupply(address,address,uint256,uint256) (runs: 512, μ: 164095, ~: 165593)\nLogs:\n  Bound result 64109629816813460218486346\n  Bound result 3088398488129392450\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 512, μ: 100496, ~: 101213)\nLogs:\n  Bound result 123456\n\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256) (runs: 512, μ: 135168, ~: 137208)\nLogs:\n  Bound result 186072275726929200571630053\n  Bound result 112461057902240963019333602\n\n[PASS] testFuzz_transferRevertsAboveBalance(uint256) (runs: 512, μ: 37471, ~: 37801)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129693526\n\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 90628)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 63322)\n[PASS] test_approveZeroSpenderReverts() (gas: 30804)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 5857)\n[PASS] test_contractNameFitsManifest() (gas: 3200)\n[PASS] test_deployScriptMintsToItsCaller() (gas: 1557488)\n[PASS] test_deployerCannotPullFromHolder() (gas: 92733)\n[PASS] test_deploysThroughCreate2WithNoArguments() (gas: 581925)\n[PASS] test_eachDeploymentMintsToItsOwnDeployer() (gas: 28427)\n[PASS] test_launchFlowsArriveWhole() (gas: 209363)\n[PASS] test_metadata() (gas: 41535)\n[PASS] test_mintGoesToMsgSenderNotTxOrigin() (gas: 18620)\n[PASS] test_mintsWholeSupplyOnceToDeployer() (gas: 43133)\n[PASS] test_noCallIncreasesSupply() (gas: 830904)\n[PASS] test_noEtherAccepted() (gas: 37456)\n[PASS] test_noPrivilegedCallMovesOrFreezesHolder() (gas: 474407)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 2839161)\n[PASS] test_supplyConstantsAgree() (gas: 37933)\n[PASS] test_transferFromAboveAllowanceReverts() (gas: 80616)\n[PASS] test_transferFromAboveBalanceRevertsEvenWithAllowance() (gas: 86290)\n[PASS] test_transferFromSpendsAllowance() (gas: 153668)\n[PASS] test_transferFromToZeroAddressReverts() (gas: 83825)\n[PASS] test_transferFromWithInfiniteAllowanceDoesNotDecrease() (gas: 126356)\n[PASS] test_transferFromWithoutAllowanceReverts() (gas: 33461)\n[PASS] test_transferMovesExactAmount() (gas: 90315)\n[PASS] test_transferRevertsOneWeiOverBalance() (gas: 33587)\n[PASS] test_transferRevertsWhenBalanceInsufficient() (gas: 33230)\n[PASS] test_transferToSelfKeepsBalance() (gas: 41306)\n[PASS] test_transferToZeroAddressReverts() (gas: 30774)\n[PASS] test_transferWholeBalance() (gas: 71862)\n[PASS] test_transferZeroAmountSucceeds() (gas: 43271)\nSuite result: ok. 35 passed; 0 failed; 0 skipped; finished in 14.38ms (68.07ms CPU time)\n\nRan 1 test for test/SqueekChainToken.invariant.t.sol:SqueekChainTokenInvariantTest\n[PASS]\nSqueekChainTokenInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_totalSupplyIsFixed\n SqueekChainTokenInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| SqueekChainHandler | approve      | 717   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| SqueekChainHandler | transfer     | 665   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| SqueekChainHandler | transferFrom | 666   | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 404\n  Bound result 0\n  Bound result 0\n  Bound result 404098526\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 53292876425512108774894648\n  Bound result 2233625728\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 153.05ms (151.85ms CPU time)\n\nRan 2 test suites in 154.25ms (167.43ms CPU time): 36 tests passed, 0 failed, 0 skipped (36 total tests)\n","passed":true},{"durationMs":31,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SqueekChainToken.approve(address,uint256)\",\"SqueekChainToken.transfer(address,uint256)\",\"SqueekChainToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":9,\"README.md\":188,\"foundry.toml\":33,\"launch.json\":24,\"remappings.txt\":2,\"script/DeploySqueekChain.s.sol\":28,\"src/SqueekChainToken.sol\":43,\"test/SqueekChainToken.invariant.t.sol\":80,\"test/SqueekChainToken.t.sol\":432},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"ca1b721d3c6651b243978676f6754a39e4d54419e0ce82500f2223705f15e136","verifiedTreeHash":"5113d82aac1410a63ed615a10661e46f3b9ff158","verifierVersion":"0.1.0+d952fceb"}]}