{"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":"6447f84c-b367-48cb-a292-ef4d9e603806","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"b1785d765b6564da3a4fc28d1e8d5e599191b4e6da531283d267531d91965945","dependsOn":["build_contract_project","write_foundry_tests","build_website","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":"514b3686356f156b61319d64af748bc679d5de0a4226b9c429b24068222a1b37","dependsOn":["build_contract_project","write_foundry_tests","build_website","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":"8ed9a6842329c319a5dbc39b8ed99bbc6285a4356f1b4f4ee6915963ad3e3ca8","dependsOn":["build_contract_project","write_foundry_tests","build_website","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":"fbafc346f005b723c3dc26b752c1f91c7e281d24fbd2b8fdda41b1f6195e3b38","dependsOn":["build_contract_project","write_foundry_tests","build_website","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":"efea1a1b563cb95ce2a1440e8392f2bd79f7485e5ebe3fb65fd73401b60a5954","dependsOn":["build_contract_project","write_foundry_tests","build_website","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":"2b575fbdbf991cd53418f36f0bce546f4432f85dedcef77986477e05726ea741","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"6e3e328aa196f6965a2821b098b101e9ff09eef55cdaafaec1d6ea18007b96f6","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"6e3e328aa196f6965a2821b098b101e9ff09eef55cdaafaec1d6ea18007b96f6","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"0a876ce7822c697dca09ac6da2a113a255e2f48fe09a65565b3894e24a5f1b36","dependsOn":["write_foundry_tests"],"execution":{"mustProduce":["dist/index.html"],"network":true,"optionalTools":["browser"],"profile":"foundry","requires":["network"],"skillHash":"6715a761ae197330be56ba3ef74f7628c405aa1d94f0e62b3dcf3715e0135cbc","skillId":"build-website","tools":[]},"key":"build_website","kind":"code","role":"implement","skillHash":"6715a761ae197330be56ba3ef74f7628c405aa1d94f0e62b3dcf3715e0135cbc","skillId":"build-website","state":"accepted"},{"acceptedSubmissionHash":"e14c0568ffdde2fb3eab3e9b349974434ffd32f4f2d3dbfc78f5fab3da3fa90a","dependsOn":["build_contract_project","write_foundry_tests","build_website"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"fb0c0e5d1fa24262032d1cc566ca168025ec9ffb09b8ec24a28e11f673d1a8c5","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 Tester (TESTER).\nToken name: Swarm Tester\nToken symbol: TESTER\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- Context: an ordinary, legitimate token launch on Ethereum. The coin's name, story and theme are branding only; nothing here is real-world harm or offensive security work.\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 and verifiable: deployed contracts live in src/ and every import resolves to a committed file.\n- Token contract: TESTERToken. 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 (set by the order, not a launch.json field). Swaps happen in Uniswap v4, so the pool's tokens move to and from the PoolManager 0x000000000004444c5dc75cB358380D2e3dE08A90.\n- launch.json top-level keys, exactly: kind (\"custom_token\"), token {contract, name, symbol, decimals, constructorArgs, totalSupply}, contracts ([] if none), pool, economics, notes (one string). No chainId or other keys.\n- launch.json pool: pairedCurrency 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 12500, tickSpacing 60, initialPrice \"125270724187523965593206900\" (paired-currency minor units per TESTER minor unit with TESTER 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":"af607976efb83629e4b742e4e170c8fcd928edfbd72a36480d0539003fd14666","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"6447f84c-b367-48cb-a292-ef4d9e603806","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1168-swarm-tester"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51442","feedbackHash":"d1da2cda487bee469e6e3d1edd4715d4af14c18706f6b7e7497cd5da94c848c9","nodeKey":"audit_economics","submissionHash":"b1785d765b6564da3a4fc28d1e8d5e599191b4e6da531283d267531d91965945","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52190","feedbackHash":"778a4db1222625a15db5a4908951c475d274e35528c85a141e946d5b8ced94c5","nodeKey":"audit_flow","submissionHash":"514b3686356f156b61319d64af748bc679d5de0a4226b9c429b24068222a1b37","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51225","feedbackHash":"2ff839571ef28a285fdbb0a2fea501894e62621340c695d3798b7ab7400ed6db","nodeKey":"audit_judge","submissionHash":"8ed9a6842329c319a5dbc39b8ed99bbc6285a4356f1b4f4ee6915963ad3e3ca8","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52136","feedbackHash":"8ae82ba415e2b8f1238c238c14c158d684c371eb6a1aff057cfcb8ad9820086f","nodeKey":"audit_math","submissionHash":"fbafc346f005b723c3dc26b752c1f91c7e281d24fbd2b8fdda41b1f6195e3b38","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51039","feedbackHash":"3e254aa8135d80a73f2c31c28a0ba7b2dffc1c8b69c3f4be66ebee50beccf3a2","nodeKey":"audit_permissions","submissionHash":"efea1a1b563cb95ce2a1440e8392f2bd79f7485e5ebe3fb65fd73401b60a5954","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52549","feedbackHash":"300d8713a4d93645f220e59be4e1959e82a25169bf12e5215413e379a3a63864","nodeKey":"build_contract_project","submissionHash":"2b575fbdbf991cd53418f36f0bce546f4432f85dedcef77986477e05726ea741","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52017","feedbackHash":"44aac355821a3db1b71914dd6f6626f010bdd1fdc0ee68c8960517e38266353e","nodeKey":"build_website","submissionHash":"0a876ce7822c697dca09ac6da2a113a255e2f48fe09a65565b3894e24a5f1b36","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51510","feedbackHash":"717917690c03ae84a3898670718e2e2974673ae7366149dd0b964f3d443f5590","nodeKey":"manifest","submissionHash":"e14c0568ffdde2fb3eab3e9b349974434ffd32f4f2d3dbfc78f5fab3da3fa90a","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52176","feedbackHash":"fd2ba428992ea600c309e01143cd3b2939a6106e7b44a01983b89b3db1dd2b00","nodeKey":"write_foundry_tests","submissionHash":"fb0c0e5d1fa24262032d1cc566ca168025ec9ffb09b8ec24a28e11f673d1a8c5","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"f08e7691ff4cccdfb688edc03ed1496e500c680640239c00a72bcd1a51d436f8","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"be750b956aaccc14f3bd22cdc3047c15cdfdfd9acc12a0ca5ccddf8f123ea11d","device":"9df7d5d52e83c572","findings":[],"hash":"0a876ce7822c697dca09ac6da2a113a255e2f48fe09a65565b3894e24a5f1b36","nodeId":"cc1d6b42-4c34-43bf-ac19-61240efad962","outcome":"completed","summary":"The website for Swarm Tester ($TESTER) is built, checked and documented. Nothing is left pending.\n\n**What was delivered**\n\n- `site/` holds the source: `index.html`, `styles.css`, `app.js` and `assets/` (logo, the SIMD panel art, self-hosted latin subsets of Inter and IBM Plex Mono). It keeps the SIMD meme template's structure and look: beige hardware panels, green `#3cff7a` signal accents, a black terminal at the centre. The lab-coat blue measured in the logo is the secondary accent.\n- Sections: hero terminal with the logo in a CRT frame, name, `$TESTER`, description and Buy/Chart buttons; LCD stats; a Swarm Lab of eight Pepe engineers typing, compiling and throwing sparks; Einstein's machine, which powers up on scroll and has clickable dials, levers and a BUILD button that launches a coin rocket; how to buy, lore, tokenomics; the required footer.\n- Live data comes from `/simd-coin.json` on the same origin. The contract LCD reads `launching…` and the copy button stays disabled until `token` arrives. Buy, Chart and the how-to link switch to `coinUrl` and `chartUrl` from that JSON. No address is hardcoded, and the build script fails if one ever is.\n- `dist/` is the committed export with relative asset URLs, byte-identical to the source. `site/package.json` plus `package-lock.json` carry the only dev dependency (TypeScript). The installed `node_modules` was removed.\n- `DESIGN.md` documents the tokens, typography, layout, depth, shapes and components of the final source. The README gained install, preview, rebuild, check and publish instructions with the recorded results.\n\n**Checks that ran**\n\n| Check | Result |\n| --- | --- |\n| `npm run build` | exit 0, 8 files, 306,481 bytes |\n| `npm run typecheck` (strict `checkJs`) | exit 0 |\n| `npm run check` (headless Chrome, 320/390/768/1280px, three data states, keyboard walk, all interactions, rendered contrast) | 48 passed, 0 failed |\n| `forge build` / `forge test` | 51 tests passed |\n\nBetter Interface review findings and fixes are in `artifacts/validation.md` (copied to `site/VALIDATION.md` because the harness keeps `artifacts/` out of Git). The main fix was a duplicate `rocket` id that stopped the rocket from rendering. Two colour tokens were darkened so every rendered text pair is at least 4.99:1 and the focus ring at least 3.2:1.\n\n**Limitations recorded**\n\n- The MCP browser tool refuses `file:` URLs and no managed preview existed, so the rendered inspection used a Playwright script driving the same headless Chrome inside one bounded command. I viewed its screenshots.\n- No screen-reader session, forced-colors mode, native 200% zoom or physical-device checks. The published origin's real `/simd-coin.json` was mocked.\n\nThe new and changed files total about 674 KB, well within the 8 MiB bundle limit.","treeHash":"3dcfa4bcc2f5d15dc95c1db5cc4ec8b55a57a2bf","usage":{"cachedInputTokens":4390916,"inputTokens":930,"model":"claude-fable-5-1","outputTokens":111404,"runtime":"claude","turns":91,"wallClockMs":1488499}},{"artifacts":[],"attempt":1,"bundleHash":"c15a5b3833cb9ddb503b95816f68e4aa70d02e8dafa68a6dd5aad282cce3426d","device":"da72e21237e01c8a","findings":[],"hash":"2b575fbdbf991cd53418f36f0bce546f4432f85dedcef77986477e05726ea741","nodeId":"eaceded8-24fc-4a71-a5e8-ff66911deeb3","outcome":"completed","summary":"Implemented `TESTERToken`, exact `launch.json`, root Foundry configuration, deployment documentation, and eight smoke tests.\n\nThe full `1e27` supply goes to the deployer. No owner, admin, subsequent minting, fees, or transfer limits.\n\nVerified: `forge build`, `forge test` (8 passed), and `forge fmt --check`. Actual Uniswap swaps remain for the independent integration suite.","treeHash":"07ab6aa1dffc9ef97c1aa8f2d1302372b291d426","usage":{"cachedInputTokens":290304,"inputTokens":41536,"model":"gpt-6-astra","outputTokens":6608,"runtime":"codex","turns":4,"wallClockMs":283529}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"3beb94a990617d46","findings":[],"hash":"514b3686356f156b61319d64af748bc679d5de0a4226b9c429b24068222a1b37","nodeId":"78c848d8-df3a-4c63-89cd-7a87e7089aae","outcome":"completed","summary":"Review complete. No defects found in the assigned area, and the findings file is written.\n\n**Outcome.** The findings file at the repository root holds an empty findings list and ten coverage rows, one for each of the three listed entry points plus the constructor, the manifest, periphery, the static-analysis lead, and three invariants I checked.\n\n**What I covered.**\n- **Execution Trace.** Traced all three entry points through every branch. The allowance decrement in transferFrom runs before the balance check, but a balance revert undoes it atomically. The uint256.max sentinel skips consumption and max minus one is consumed. Self transfers and zero-value transfers are neutral and emit events. A scratch fuzz confirmed the sum of balances stays at exactly 1e27 across transfer, approve and transferFrom sequences.\n- **Periphery.** The token has no imports, no libraries and no external calls. The vendored forge-std, v4-core and solmate code under test/lib is reachable only from tests. The existing unit suite scans the runtime and finds no DELEGATECALL, CALLCODE, SELFDESTRUCT, CALL, STATICCALL or CREATE opcodes.\n- **First Principles.** The constructor assigns the compile-time constant to msg.sender, which is the factory under CREATE2, so the deployer holds the full supply. The existing pool suite builds the real Uniswap v4 PoolManager at its mainnet address and runs the seed and both-way swaps with TESTER as currency0 and as currency1. All flows move exact amounts.\n- **Manifest.** launch.json has exactly the six required keys, totalSupply equals the constant, constructorArgs is empty to match the no-argument constructor, addresses are lowercase, economics is verbatim from the brief, and initialPrice matches the square root of the 2500 IMD cap over the supply scaled by 2^96.\n\n**Notes for the judge.** The approve function has the standard ERC-20 overwrite race, where a spender can spend an old allowance before a new one lands. That is inherent to the plain ERC-20 the brief mandates, so I recorded it in the coverage row rather than as a defect. The aderyn large-literal lead is a style note on a compile-time constant that tests assert equals the manifest supply. A fork run against live mainnet state is still owed and cannot run offline. The scratch test directory was removed after use, and no project file was changed.","treeHash":null,"usage":{"cachedInputTokens":644065,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":12080,"runtime":"claude","turns":16,"wallClockMs":191946}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"4dd74fd7c315da80","findings":[],"hash":"8ed9a6842329c319a5dbc39b8ed99bbc6285a4356f1b4f4ee6915963ad3e3ca8","nodeId":"b4509774-5e78-4e15-b9ce-bf8257fe39a7","outcome":"completed","summary":"The review is complete and the findings file is written and validated. No stray files exist outside the allowed output: the only untracked items are the findings file itself and the pinned read inputs, both ignored by git. Build artifacts live in the ignored `out/` and `cache/` directories.\n\n**Outcome: no defects found.** The file `.imd-findings.json` holds an empty findings list and a coverage record of 8 rows, covering all 3 entry points the verifier listed plus 5 invariants I checked.\n\n**What I verified against the code in `src/TESTERToken.sol`:**\n- **All four specialists reported nothing**, and nothing in their coverage needed reproducing. Both static-analysis tools produced only a style note about the supply literal, which folds at compile time to exactly 1e27.\n- **transfer and transferFrom** move exactly the requested amount with no fee, tax or limit, revert on the zero address and on insufficient balance or allowance, and treat a max allowance as unlimited. Self-transfers net to zero and the balance sum stays fixed.\n- **approve** only writes the allowance mapping and emits the event. There is no owner, admin, mint, burn, pause, blacklist, fallback or receive function in the ABI.\n- **Constructor** takes no arguments and assigns the whole 1e27 supply to the deployer, which matches the manifest's empty constructorArgs and the factory's CREATE2 deployment model.\n- **Compiled runtime** contains no DELEGATECALL, CALLCODE, SELFDESTRUCT, CALL or STATICCALL opcodes after skipping push data. Runtime is 1462 bytes and creation code 1570 bytes, far under the protocol limits.\n- **launch.json** has exactly the required keys, lowercase addresses, economics copied verbatim, and an initialPrice that equals the sqrtPriceX96 I recomputed independently from the 2500 IMD cap and the supply.\n- **Test suite** builds with solc 0.8.26 and all 51 tests pass, including the invariant suite and the pool tests that build the real Uniswap v4 PoolManager in place.\n\n**Still owed outside this environment:** a run against live mainnet state with the deployed PoolManager and IMD token, which cannot execute offline.","treeHash":null,"usage":{"cachedInputTokens":485698,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":6084,"runtime":"claude","turns":11,"wallClockMs":104852}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"2b9b0095482c54e6","findings":[],"hash":"b1785d765b6564da3a4fc28d1e8d5e599191b4e6da531283d267531d91965945","nodeId":"12033642-7d47-4d09-bb39-f7835ae42db1","outcome":"completed","summary":"The review is complete. No defects found in the economics area.\n\n**Outcome.** The findings file at `.imd-findings.json` holds an empty findings list and eight coverage rows, all `holds`. No repository file was changed. The scratch test I used was deleted afterwards.\n\n**What I checked, against the Economic Security, Invariant and Flow Gap guides:**\n- **Conservation.** The supply is a compile-time constant of 1e27 minted once to the factory. Every transfer subtracts and adds the same value, so the sum of balances never drifts. A 2000-run fuzz over the factory, distributor, PoolManager and 0xdead flows confirmed this, including self-transfers and unlimited allowances.\n- **Launch flows.** Transfers deliver exact amounts with no fee, tax or limit. The vendored real Uniswap v4 PoolManager tests seed, buy and sell in both currency orders. The only vendored edit is the documented import path for the Owned base.\n- **Dependencies and privilege.** The runtime has no CALL, DELEGATECALL, CALLCODE, STATICCALL, CREATE or SELFDESTRUCT opcodes and no fallback or receive. The ABI exposes only the three ERC-20 mutators.\n- **Manifest.** Keys, types, lowercase addresses, verbatim economics and the empty constructor arguments all match. The initialPrice equals the derived square-root price for TESTER as currency0 exactly.\n- **Static-analysis lead.** The aderyn large-literal note is style only. The literal evaluates to exactly 1e27 at compile time.\n\n**Not reached.** A run against live mainnet state with the deployed PoolManager and IMD token still cannot run offline, as the project's own test README already records.","treeHash":null,"usage":{"cachedInputTokens":503303,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":8210,"runtime":"claude","turns":15,"wallClockMs":158499}},{"artifacts":[],"attempt":1,"bundleHash":"a746c463e5e5e1960ea67c10bad7ba0b7ab197c8cd50dc0818a39ee0046fc12d","device":"8d428b115b0ebd64","findings":[],"hash":"e14c0568ffdde2fb3eab3e9b349974434ffd32f4f2d3dbfc78f5fab3da3fa90a","nodeId":"d2bfbd1a-9428-4710-8957-a032c9340f75","outcome":"completed","summary":"launch.json is written and verified against the accepted tree. Only that file changed.\n\n**What the manifest says**\n\n- Token: contract TESTERToken, name Swarm Tester, symbol TESTER, 18 decimals, empty constructorArgs, totalSupply 1e27 minor units. This matches the accepted source, whose constructor takes no arguments and assigns the full constant supply to msg.sender.\n- Contracts: empty, since the tree holds no application contracts.\n- Pool: paired currency IMD at the given address, fee 12500, tick spacing 60, and the provenance initialPrice the brief specified.\n- Economics: copied verbatim from the job.\n- Notes: one string describing the fixed-supply, no-owner, no-fee behaviour and that initialPrice is provenance only.\n\n**Checks run**\n\n- A scratch script confirmed the exact top-level and nested key sets, lowercase addresses, string uint256 values, numeric fee, tickSpacing and decimals, and notes length under the limit.\n- `forge build` compiles cleanly with solc 0.8.26.\n- `forge test` passes all 51 tests across 5 suites.\n- `git status` shows launch.json as the only modified file.","treeHash":"03546c5f94255c2e132ca41819000be4048a7173","usage":{"cachedInputTokens":239614,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":4085,"runtime":"claude","turns":9,"wallClockMs":61927}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"9ab27edcfd62be02","findings":[],"hash":"efea1a1b563cb95ce2a1440e8392f2bd79f7485e5ebe3fb65fd73401b60a5954","nodeId":"2f4ab316-b4ca-438a-915c-4d39c31faba4","outcome":"completed","summary":"The review is complete. Nothing was found, and the findings file records that with a full coverage record.\n\n**Outcome:** no defects in TESTERToken under the Access Control, Trust Gap and Asymmetry guides. The file `.imd-findings.json` holds an empty findings list and ten coverage rows. No source, test or config file was changed, and git status is clean.\n\n**What was checked against the three guides**\n\n- **Access control.** The ABI has only approve, transfer and transferFrom. There is no owner, role, modifier, initializer, proxy or admin path. The constructor takes no arguments and credits the whole 1e27 supply to msg.sender, the factory. The runtime bytecode was scanned and contains no CALL, DELEGATECALL, CALLCODE, SELFDESTRUCT, CREATE or CREATE2.\n- **Asymmetry.** transfer and transferFrom both reach the same private _transfer, which writes the sender first and the receiver second, so a self-transfer is neutral. transferFrom decrements only the caller's own allowance and skips the decrement at uint256.max. There is no caller-class branch, so the factory, the PoolManager, the distributor and traders are all treated identically.\n- **Trust gap.** With no privileged actor, no setter and no formula, no seam exists for two lenses to interact.\n\n**Beyond the token.** The manifest has exactly the required keys, lowercase addresses, an empty constructorArgs that matches the zero-parameter constructor, and a totalSupply equal to what the constructor mints. Its initialPrice equals the sqrtPriceX96 derived from a 2500 IMD cap over 1e27 units with TESTER as currency0. The aderyn large-literal lead is a compile-time constant that matches the brief and is noted as non-defect.\n\n**Checks run.** The project builds with solc 0.8.26, and all 51 existing tests pass, including the pool suite that seeds, buys and sells through a real v4 PoolManager built at its mainnet address. The protected floor test itself cannot run here because it needs deployer environment variables and helper sources that are not in this tree. A run against live mainnet state remains owed. The standard ERC-20 approve race is inherent to the spec and is recorded as a note in the approve coverage row rather than as a finding.","treeHash":null,"usage":{"cachedInputTokens":363659,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":8430,"runtime":"claude","turns":13,"wallClockMs":152111}},{"artifacts":[],"attempt":1,"bundleHash":"f3e57949cf2049e6b84966a3bb0a8491097a70a1f3fb57182b0759e0d2630626","device":"ee2cc12e7dfe571a","findings":[],"hash":"fb0c0e5d1fa24262032d1cc566ca168025ec9ffb09b8ec24a28e11f673d1a8c5","nodeId":"8b52b4c5-fd95-43a8-941a-62a6f95d5a48","outcome":"completed","summary":"The suite is committed and the full run passes with 51 tests, no failures, no skips.\n\n**What was delivered** (all under `test/`):\n\n- `TESTERToken.unit.t.sol`: 31 unit and fuzz tests. Covers the fixed 1e27 mint to the deployer with the mint event, 24 absent admin and mint selectors tried from a stranger and from the deployer, no fallback or receive, a runtime opcode scan for DELEGATECALL, CALLCODE, SELFDESTRUCT and any CALL or CREATE, and every ERC-20 failure path: one-over-balance, one-over-allowance, zero recipient even at zero value, zero sender, zero spender, allowance preserved on failed pulls, unlimited versus max-minus-one allowances, and no Approval event on consumption. Fuzz properties cover conservation, allowance accounting, multi-hop round trips, and arbitrary calldata from a stranger moving nothing.\n- `TESTERToken.invariant.t.sol`: a handler with six actors, including the PoolManager and dead addresses, running transfers, approvals, transferFroms, and deliberately failing calls with ghost books. Invariants: supply constant, balances sum to supply, ledger equals the ghost books for balances and allowances, no admin surface. Run counts are set inline.\n- `TESTERToken.pool.t.sol`: the real Uniswap v4 PoolManager built in place at its mainnet address, an IMD stand-in at IMD's address, a factory stub that deploys the token by CREATE2, forwards 10%, seeds 90% single-sided at the price derived from the 2500 IMD cap with fee 12500 and tick spacing 60, and sends the remainder to dead. Tests cover exact seed accounting, buy and sell by an ordinary trader with the 1.25% fee verified as accrued to the position, exact-output swaps, both currency orderings, many traders, failed sells and buys without balance leaving price and balances untouched, an over-balance seed unwinding the lock, and a fuzzed round trip. A second handler drives random buys and sells under three pool invariants.\n- `test/lib/`: forge-std v1.9.7, v4-core at commit 46c6834, and solmate's `Owned.sol`, vendored as ordinary files with relative imports because the project has no `lib/` and remappings are protected. One import line in `ProtocolFees.sol` was repointed. No submodules. `test/lib/README.md` records versions and licences.\n\n**Findings:** none. The token does exactly what the brief states and I found no defect to report, so `.imd-findings.json` holds an empty list. Two behaviours worth knowing are documented in tests rather than reported: tokens sent to the token contract itself are stranded, as in any plain ERC-20, and a single-sided seed above the opening price means a sell is a zero-amount swap until the first buy.\n\n**Still owed:** a run against live mainnet state with the deployed PoolManager and the real IMD token. It cannot run offline, so the suite uses the in-place PoolManager and an IMD stand-in instead.","treeHash":"1892d772c08de4f807e5a6776303e777a1e4392d","usage":{"cachedInputTokens":1798907,"inputTokens":642,"model":"claude-fable-5-1","outputTokens":62299,"runtime":"claude","turns":35,"wallClockMs":900949}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"00920b27421b9a80","findings":[],"hash":"fbafc346f005b723c3dc26b752c1f91c7e281d24fbd2b8fdda41b1f6195e3b38","nodeId":"557d4b87-1489-4023-b787-47af7a316a5b","outcome":"completed","summary":"The findings file is in place and excluded by the repository's own git exclude rules, as the harness expects. The review is complete.\n\n**Result: no defects found** in the Math Precision, Boundary and Numerical Gap area. The findings file `.imd-findings.json` holds an empty findings list and seven coverage rows, all `holds`.\n\n**What I checked**\n\n- **Arithmetic.** The token has only two arithmetic operations, a checked subtraction guarded by a prior balance or allowance comparison, and a checked addition bounded by the fixed 1e27 supply. There is no division, cast, unchecked block, scale conversion or decimal mixing anywhere, so every failure mode in the three guides is structurally absent.\n- **Boundaries.** No external calls, payable functions or bytes inputs exist. The compiled runtime contains no CALL, STATICCALL, DELEGATECALL, CALLCODE or SELFDESTRUCT. The only sentinel branches are the zero-address reverts, and both sides were walked.\n- **Edge execution.** A scratch Foundry suite confirmed by running: whole-supply transfer and return, supply+1 and uint256.max reverts, zero-value transfers, self-transfer via both paths, unlimited allowance at exactly uint256.max with max-1 finite, zero sender via transferFrom, and a 2,000-run conservation fuzz. All passed alongside the existing 51 tests. Scratch files were removed afterwards.\n- **Manifest math.** The pool's initialPrice is the exact floor of sqrt(2500e18 / 1e27) × 2^96, derives back to a 2500 IMD cap, and its tick sits inside the Uniswap v4 range. The launch.json key set, string and number types, lowercase addresses, empty constructorArgs and verbatim economics all match the schema.\n- **Static analysis lead.** Aderyn's large-numeric-literal note on line 11 is a style remark. The literal folds to exactly 1e27 and equals the manifest's totalSupply.\n\n**Not a defect.** The standard ERC-20 approve ordering race exists, as in every plain ERC-20, and the README documents it as designed behaviour. It is recorded in the coverage row for approve rather than reported as a finding.","treeHash":null,"usage":{"cachedInputTokens":749759,"inputTokens":386,"model":"claude-fable-5-1","outputTokens":10419,"runtime":"claude","turns":18,"wallClockMs":176638}}],"verification":[{"checks":[{"durationMs":2455,"exitCode":0,"name":"build","output":"Compiling 80 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.28s\nCompiler run successful!\n","passed":true},{"durationMs":3445,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 8 tests for test/TESTERToken.t.sol:TESTERTokenSmokeTest\n[PASS] test_ApprovalAllowsOnlyTheApprovedAmount() (gas: 166095)\n[PASS] test_DeployerCannotSpendHolderBalanceWithoutApproval() (gas: 89629)\n[PASS] test_DeploymentMintsEntireSupplyToDeployer() (gas: 37316)\n[PASS] test_FailedTransferFromPreservesAllowance() (gas: 98170)\n[PASS] test_FullBalanceTransfersToAndFromPoolManagerWithoutFeesOrLimits() (gas: 138155)\n[PASS] test_InfiniteAllowanceSelfTransferAndZeroTransfer() (gas: 135704)\n[PASS] test_RevertWhenTransferExceedsBalance() (gas: 44660)\n[PASS] test_ZeroRecipientAndZeroSpenderRevert() (gas: 63705)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 714.53µs (1.53ms CPU time)\n\nRan 31 tests for test/TESTERToken.unit.t.sol:TESTERTokenUnitTest\n[PASS] testFuzz_allowanceAccounting(uint256,uint256) (runs: 256, μ: 155776, ~: 175684)\nLogs:\n  Bound result 6291\n  Bound result 24235\n\n[PASS] testFuzz_arbitraryCalldataFromAStrangerMovesNothing(bytes4,bytes,uint96) (runs: 256, μ: 144406, ~: 144307)\n[PASS] testFuzz_roundTripBetweenHoldersLosesNothing(uint256,uint8) (runs: 256, μ: 589942, ~: 525790)\nLogs:\n  Bound result 231146823593991339149197956\n  Bound result 12\n\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256,uint256) (runs: 256, μ: 119079, ~: 119864)\nLogs:\n  Bound result 231146823593991339149197956\n  Bound result 231146823593991339149197959\n\n[PASS] testFuzz_transferConservesSupplyAndMovesExactly(address,uint256) (runs: 256, μ: 123616, ~: 123605)\nLogs:\n  Bound result 896227529284451136690216938\n\n[PASS] test_approveDoesNotRequireABalanceOrAlterOne() (gas: 129521)\n[PASS] test_approveReplacesRatherThanAccumulates() (gas: 163478)\n[PASS] test_approveZeroSpenderReverts() (gas: 40147)\n[PASS] test_constructorEmitsMintTransferFromZero() (gas: 30006)\n[PASS] test_constructorMintsWholeSupplyToDeployerOnly() (gas: 53658)\n[PASS] test_holderMayPullFromThemselvesOnlyThroughAnAllowance() (gas: 160006)\n[PASS] test_metadataIsFixedAsTheBriefStates() (gas: 35112)\n[PASS] test_noAdminOrMintSelectorExists() (gas: 2127708)\n[PASS] test_noFallbackAndNoReceive() (gas: 84073)\n[PASS] test_noFeeTaxOrLimitOnLaunchAndPoolFlows() (gas: 405966)\n[PASS] test_nobodyCanSpendAHolderWithoutThatHoldersApproval() (gas: 235183)\n[PASS] test_runtimeContainsNoDangerousOrExternalCallOpcodes() (gas: 4064508)\n[PASS] test_selfTransferIsNeutralAndEmits() (gas: 80061)\n[PASS] test_transferEntireBalanceThenSenderHasExactlyZero() (gas: 143450)\n[PASS] test_transferFromDoesNotEmitApprovalOnConsumption() (gas: 125409)\n[PASS] test_transferFromExactAllowanceSpendsToZero() (gas: 220840)\n[PASS] test_transferFromOneOverAllowanceRevertsAndKeepsAllowance() (gas: 120112)\n[PASS] test_transferFromPartialSpendsDecrementAllowance() (gas: 250624)\n[PASS] test_transferFromTheZeroAddressRevertsEvenForZeroValue() (gas: 38087)\n[PASS] test_transferFromToZeroRevertsAfterAllowanceCheck() (gas: 108610)\n[PASS] test_transferMovesExactAmountAndEmits() (gas: 94436)\n[PASS] test_transferOneMoreThanBalanceRevertsExactlyAtTheBoundary() (gas: 161274)\n[PASS] test_transferToTokenContractIsAllowedAndIrrecoverable() (gas: 120574)\n[PASS] test_transferToZeroAddressRevertsEvenForZeroValue() (gas: 83809)\n[PASS] test_unlimitedAllowanceIsNotConsumedButMaxMinusOneIs() (gas: 247474)\n[PASS] test_zeroValueTransferFromEmptyAccountSucceedsAndEmits() (gas: 50501)\nSuite result: ok. 31 passed; 0 failed; 0 skipped; finished in 21.14ms (89.73ms CPU time)\n\nRan 10 tests for test/TESTERToken.pool.t.sol:TESTERTokenPoolTest\n[PASS] testFuzz_buyThenSellAllRoundTripsAndConservesSupply(uint256,bool) (runs: 256, μ: 2327958, ~: 2325708)\nLogs:\n  Bound result 1000000002\n\n[PASS] test_exactOutputBuyDeliversExactlyTheAskedAmount() (gas: 2280649)\n[PASS] test_factoryCannotSeedMoreThanItHolds() (gas: 1279413)\n[PASS] test_launchAndSwapsWorkWhenTesterIsCurrency1() (gas: 2329870)\n[PASS] test_manyTradersInSequenceConserveTheSupply() (gas: 7250725)\n[PASS] test_seedTakesThePoolShareExactlyAndRemainderGoesToDead() (gas: 1197580)\n[PASS] test_sendingTesterStraightToTheManagerIsNotCredited() (gas: 2129995)\n[PASS] test_traderBuysAndSellsThroughThePoolManagerAndTheLpEarnsTheFee() (gas: 2538888)\n[PASS] test_traderCannotBuyWithImdItDoesNotHold() (gas: 2025789)\n[PASS] test_traderCannotSellTesterItDoesNotHold() (gas: 3001643)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 61.40ms (73.31ms CPU time)\n\nRan 1 test for test/TESTERToken.pool.t.sol:TESTERTokenPoolInvariantTest\n[PASS]\nTESTERTokenPoolInvariantTest invariants:\n[PASS] invariant_managerHoldsTheSeedPlusNetSales\n[PASS] invariant_supplyIsConservedAcrossTrading\n[PASS] invariant_traderHoldsNetPurchases\n TESTERTokenPoolInvariantTest invariants (runs: 32, calls: 1280, reverts: 0)\n\n╭------------------+----------+-------+---------+----------╮\n| Contract         | Selector | Calls | Reverts | Discards |\n+==========================================================+\n| PoolTradeHandler | buy      | 586   | 0       | 0        |\n|------------------+----------+-------+---------+----------|\n| PoolTradeHandler | sell     | 694   | 0       | 0        |\n╰------------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000001\n  Bound result 5674\n  Bound result 13066402851474263558\n  Bound result 975022489813185349573537\n  Bound result 17000\n  Bound result 99999999999999000013\n  Bound result 34807937072063202138\n  Bound result 15406\n  Bound result 99999999999999005980\n  Bound result 72161075035163957790420539\n  Bound result 99999999999999002049\n  Bound result 1484145230\n  Bound result 1000000\n  Bound result 99999999999999003362\n  Bound result 85484363273363529493167917\n  Bound result 1\n  Bound result 99999999999999887273\n  Bound result 99999999999999006476\n  Bound result 258158515\n  Bound result 46206088970344423650\n  Bound result 1889567281\n  Bound result 23499108274884333817812761\n  Bound result 5160\n  Bound result 24096137048745524711\n  Bound result 15735369838032164414\n  Bound result 40\n  Bound result 33540519\n  Bound result 358\n  Bound result 6805\n  Bound result 12586055552747674031064882\n  Bound result 10000000000000000000000\n  Bound result 99999999999999005172\n  Bound result 2514000704\n  Bound result 90407103403431863549\n  Bound result 65193786505050162970456578\n  Bound result 98440238460822513326\n  Bound result 1719639407\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 261.05ms (257.97ms CPU time)\n\nRan 1 test for test/TESTERToken.invariant.t.sol:TESTERTokenInvariantTest\n[PASS]\nTESTERTokenInvariantTest invariants:\n[PASS] invariant_ledgerMatchesGhostBooks\n[PASS] invariant_noAdminSurfaceAppeared\n[PASS] invariant_sumOfBalancesEqualsSupply\n[PASS] invariant_totalSupplyNeverChanges\n TESTERTokenInvariantTest invariants (runs: 64, calls: 6400, reverts: 0)\n\n╭---------------+---------------------------+-------+---------+----------╮\n| Contract      | Selector                  | Calls | Reverts | Discards |\n+========================================================================+\n| TESTERHandler | approve                   | 801   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | strangerCall              | 808   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transfer                  | 820   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferFrom              | 754   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferFromOverAllowance | 816   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferFromOverBalance   | 777   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferOverBalance       | 800   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferToZero            | 824   | 0       | 0        |\n╰---------------+---------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 7424\n  Bound result 24\n  Bound result 6004\n  Bound result 0\n  Bound result 6200\n  Bound result 0\n  Bound result 81\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1285\n  Bound result 9423\n  Bound result 0\n  Bound result 24\n  Bound result 0\n  Bound result 50\n  Bound result 0\n  Bound result 0\n  Bound result 18\n  Bound result 0\n  Bound result 4295128739\n  Bound result 24576\n  Bound result 1765237769285155803548900\n  Bound result 0\n  Bound result 7423\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639933\n  Bound result 0\n  Bound result 2527\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3161\n  Bound result 0\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.37s (3.36s CPU time)\n\nRan 5 test suites in 3.37s (3.71s CPU time): 51 tests passed, 0 failed, 0 skipped (51 total tests)\n","passed":true},{"durationMs":65,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"TESTERToken.approve(address,uint256)\",\"TESTERToken.transfer(address,uint256)\",\"TESTERToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DESIGN.md\":196,\"README.md\":148,\"dist/app.js\":365,\"dist/assets/fonts/IBMPlexMono-400-latin.woff2\":58,\"dist/assets/fonts/IBMPlexMono-600-latin.woff2\":78,\"dist/assets/fonts/Inter-variable-latin.woff2\":207,\"dist/assets/logo.png\":88,\"dist/assets/panels.webp\":574,\"dist/index.html\":225,\"dist/styles.css\":295,\"foundry.toml\":10,\"launch.json\":24,\"site/VALIDATION.md\":88,\"site/app.js\":365,\"site/assets/fonts/IBMPlexMono-400-latin.woff2\":58,\"site/assets/fonts/IBMPlexMono-600-latin.woff2\":78,\"site/assets/fonts/Inter-variable-latin.woff2\":207,\"site/assets/logo.png\":88,\"site/assets/panels.webp\":574,\"site/index.html\":225,\"site/package-lock.json\":29,\"site/package.json\":17,\"site/styles.css\":295,\"site/tools/build.mjs\":72,\"site/tools/check.mjs\":247,\"site/tools/preview.mjs\":18,\"site/tools/serve.mjs\":79,\"site/tsconfig.json\":18,\"src/TESTERToken.sol\":67,\"test/TESTERToken.invariant.t.sol\":212,\"test/TESTERToken.pool.t.sol\":645,\"test/TESTERToken.t.sol\":113,\"test/TESTERToken.unit.t.sol\":503,\"test/lib/README.md\":18,\"test/lib/forge-std/LICENSE-APACHE\":203,\"test/lib/forge-std/LICENSE-MIT\":25,\"test/lib/forge-std/src/Base.sol\":42,\"test/lib/forge-std/src/Script.sol\":28,\"test/lib/forge-std/src/StdAssertions.sol\":669,\"test/lib/forge-std/src/StdChains.sol\":286,\"test/lib/forge-std/src/StdCheats.sol\":829,\"test/lib/forge-std/src/StdConstants.sol\":30,\"test/lib/forge-std/src/StdError.sol\":15,\"test/lib/forge-std/src/StdInvariant.sol\":122,\"test/lib/forge-std/src/StdJson.sol\":283,\"test/lib/forge-std/src/StdMath.sol\":43,\"test/lib/forge-std/src/StdStorage.sol\":473,\"test/lib/forge-std/src/StdStyle.sol\":333,\"test/lib/forge-std/src/StdToml.sol\":283,\"test/lib/forge-std/src/StdUtils.sol\":209,\"test/lib/forge-std/src/Test.sol\":34,\"test/lib/forge-std/src/Vm.sol\":2397,\"test/lib/forge-std/src/console.sol\":1560,\"test/lib/forge-std/src/console2.sol\":4,\"test/lib/forge-std/src/interfaces/IERC1155.sol\":105,\"test/lib/forge-std/src/interfaces/IERC165.sol\":12,\"test/lib/forge-std/src/interfaces/IERC20.sol\":43,\"test/lib/forge-std/src/interfaces/IERC4626.sol\":190,\"test/lib/forge-std/src/interfaces/IERC6909.sol\":72,\"test/lib/forge-std/src/interfaces/IERC721.sol\":164,\"test/lib/forge-std/src/interfaces/IERC7540.sol\":150,\"test/lib/forge-std/src/interfaces/IERC7575.sol\":241,\"test/lib/forge-std/src/interfaces/IMulticall3.sol\":73,\"test/lib/forge-std/src/safeconsole.sol\":13937,\"test/lib/solmate/LICENSE\":1,\"test/lib/solmate/src/auth/Owned.sol\":44,\"test/lib/v4-core/licenses/BUSL_LICENSE\":63,\"test/lib/v4-core/licenses/MIT_LICENSE\":7,\"test/lib/v4-core/src/ERC6909.sol\":90,\"test/lib/v4-core/src/ERC6909Claims.sol\":23,\"test/lib/v4-core/src/Extsload.sol\":64,\"test/lib/v4-core/src/Exttload.sol\":40,\"test/lib/v4-core/src/NoDelegateCall.sol\":33,\"test/lib/v4-core/src/PoolManager.sol\":395,\"test/lib/v4-core/src/ProtocolFees.sol\":71,\"test/lib/v4-core/src/interfaces/IExtsload.sol\":21,\"test/lib/v4-core/src/interfaces/IExttload.sol\":15,\"test/lib/v4-core/src/interfaces/IHooks.sol\":152,\"test/lib/v4-core/src/interfaces/IPoolManager.sol\":217,\"test/lib/v4-core/src/interfaces/IProtocolFees.sol\":52,\"test/lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":10,\"test/lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":48,\"test/lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":66,\"test/lib/v4-core/src/libraries/BitMath.sol\":49,\"test/lib/v4-core/src/libraries/CurrencyDelta.sol\":42,\"test/lib/v4-core/src/libraries/CurrencyReserves.sol\":39,\"test/lib/v4-core/src/libraries/CustomRevert.sol\":120,\"test/lib/v4-core/src/libraries/FixedPoint128.sol\":8,\"test/lib/v4-core/src/libraries/FixedPoint96.sol\":10,\"test/lib/v4-core/src/libraries/FullMath.sol\":117,\"test/lib/v4-core/src/libraries/Hooks.sol\":340,\"test/lib/v4-core/src/libraries/LPFeeLibrary.sol\":79,\"test/lib/v4-core/src/libraries/LiquidityMath.sol\":20,\"test/lib/v4-core/src/libraries/Lock.sol\":28,\"test/lib/v4-core/src/libraries/NonzeroDeltaCount.sol\":35,\"test/lib/v4-core/src/libraries/ParseBytes.sol\":29,\"test/lib/v4-core/src/libraries/Pool.sol\":613,\"test/lib/v4-core/src/libraries/Position.sol\":103,\"test/lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":47,\"test/lib/v4-core/src/libraries/SafeCast.sol\":60,\"test/lib/v4-core/src/libraries/SqrtPriceMath.sol\":289,\"test/lib/v4-core/src/libraries/StateLibrary.sol\":349,\"test/lib/v4-core/src/libraries/SwapMath.sol\":108,\"test/lib/v4-core/src/libraries/TickBitmap.sol\":122,\"test/lib/v4-core/src/libraries/TickMath.sol\":238,\"test/lib/v4-core/src/libraries/TransientStateLibrary.sol\":49,\"test/lib/v4-core/src/libraries/UnsafeMath.sol\":29,\"test/lib/v4-core/src/types/BalanceDelta.sol\":72,\"test/lib/v4-core/src/types/BeforeSwapDelta.sol\":38,\"test/lib/v4-core/src/types/Currency.sol\":119,\"test/lib/v4-core/src/types/PoolId.sol\":17,\"test/lib/v4-core/src/types/PoolKey.sol\":22,\"test/lib/v4-core/src/types/PoolOperation.sol\":26,\"test/lib/v4-core/src/types/Slot0.sol\":94},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"0a876ce7822c697dca09ac6da2a113a255e2f48fe09a65565b3894e24a5f1b36","verifiedTreeHash":"3dcfa4bcc2f5d15dc95c1db5cc4ec8b55a57a2bf","verifierVersion":"0.1.0+c4d32abc"},{"checks":[{"durationMs":198,"exitCode":0,"name":"build","output":"Compiling 2 files with Solc 0.8.26\nSolc 0.8.26 finished in 155.18ms\nCompiler run successful!\n","passed":true},{"durationMs":42,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 8 tests for test/TESTERToken.t.sol:TESTERTokenSmokeTest\n[PASS] test_ApprovalAllowsOnlyTheApprovedAmount() (gas: 166095)\n[PASS] test_DeployerCannotSpendHolderBalanceWithoutApproval() (gas: 89629)\n[PASS] test_DeploymentMintsEntireSupplyToDeployer() (gas: 37316)\n[PASS] test_FailedTransferFromPreservesAllowance() (gas: 98170)\n[PASS] test_FullBalanceTransfersToAndFromPoolManagerWithoutFeesOrLimits() (gas: 138155)\n[PASS] test_InfiniteAllowanceSelfTransferAndZeroTransfer() (gas: 135704)\n[PASS] test_RevertWhenTransferExceedsBalance() (gas: 44660)\n[PASS] test_ZeroRecipientAndZeroSpenderRevert() (gas: 63705)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 879.51µs (2.03ms CPU time)\n\nRan 1 test suite in 2.46ms (879.51µs CPU time): 8 tests passed, 0 failed, 0 skipped (8 total tests)\n","passed":true},{"durationMs":31,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"TESTERToken.approve(address,uint256)\",\"TESTERToken.transfer(address,uint256)\",\"TESTERToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"README.md\":87,\"foundry.toml\":10,\"launch.json\":24,\"src/TESTERToken.sol\":67,\"test/TESTERToken.t.sol\":113},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":390,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":236,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/TESTERToken.sol:11: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"2b575fbdbf991cd53418f36f0bce546f4432f85dedcef77986477e05726ea741","verifiedTreeHash":"07ab6aa1dffc9ef97c1aa8f2d1302372b291d426","verifierVersion":"0.1.0+c4d32abc"},{"checks":[{"durationMs":2682,"exitCode":0,"name":"build","output":"Compiling 80 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.49s\nCompiler run successful!\n","passed":true},{"durationMs":3506,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 31 tests for test/TESTERToken.unit.t.sol:TESTERTokenUnitTest\n[PASS] testFuzz_allowanceAccounting(uint256,uint256) (runs: 256, μ: 155598, ~: 175672)\nLogs:\n  Bound result 7126\n  Bound result 106857066708194338178821929\n\n[PASS] testFuzz_arbitraryCalldataFromAStrangerMovesNothing(bytes4,bytes,uint96) (runs: 256, μ: 144454, ~: 144269)\n[PASS] testFuzz_roundTripBetweenHoldersLosesNothing(uint256,uint8) (runs: 256, μ: 612762, ~: 594469)\nLogs:\n  Bound result 4100096\n  Bound result 4\n\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256,uint256) (runs: 256, μ: 119397, ~: 119830)\nLogs:\n  Bound result 827358212862957822896872290\n  Bound result 115792089237316195423570985008687907853269984665639736681244742758226700343025\n\n[PASS] testFuzz_transferConservesSupplyAndMovesExactly(address,uint256) (runs: 256, μ: 123592, ~: 123593)\nLogs:\n  Bound result 583387472530032956578715353\n\n[PASS] test_approveDoesNotRequireABalanceOrAlterOne() (gas: 129521)\n[PASS] test_approveReplacesRatherThanAccumulates() (gas: 163478)\n[PASS] test_approveZeroSpenderReverts() (gas: 40147)\n[PASS] test_constructorEmitsMintTransferFromZero() (gas: 30006)\n[PASS] test_constructorMintsWholeSupplyToDeployerOnly() (gas: 53658)\n[PASS] test_holderMayPullFromThemselvesOnlyThroughAnAllowance() (gas: 160006)\n[PASS] test_metadataIsFixedAsTheBriefStates() (gas: 35112)\n[PASS] test_noAdminOrMintSelectorExists() (gas: 2127708)\n[PASS] test_noFallbackAndNoReceive() (gas: 84073)\n[PASS] test_noFeeTaxOrLimitOnLaunchAndPoolFlows() (gas: 405966)\n[PASS] test_nobodyCanSpendAHolderWithoutThatHoldersApproval() (gas: 235183)\n[PASS] test_runtimeContainsNoDangerousOrExternalCallOpcodes() (gas: 4064508)\n[PASS] test_selfTransferIsNeutralAndEmits() (gas: 80061)\n[PASS] test_transferEntireBalanceThenSenderHasExactlyZero() (gas: 143450)\n[PASS] test_transferFromDoesNotEmitApprovalOnConsumption() (gas: 125409)\n[PASS] test_transferFromExactAllowanceSpendsToZero() (gas: 220840)\n[PASS] test_transferFromOneOverAllowanceRevertsAndKeepsAllowance() (gas: 120112)\n[PASS] test_transferFromPartialSpendsDecrementAllowance() (gas: 250624)\n[PASS] test_transferFromTheZeroAddressRevertsEvenForZeroValue() (gas: 38087)\n[PASS] test_transferFromToZeroRevertsAfterAllowanceCheck() (gas: 108610)\n[PASS] test_transferMovesExactAmountAndEmits() (gas: 94436)\n[PASS] test_transferOneMoreThanBalanceRevertsExactlyAtTheBoundary() (gas: 161274)\n[PASS] test_transferToTokenContractIsAllowedAndIrrecoverable() (gas: 120574)\n[PASS] test_transferToZeroAddressRevertsEvenForZeroValue() (gas: 83809)\n[PASS] test_unlimitedAllowanceIsNotConsumedButMaxMinusOneIs() (gas: 247474)\n[PASS] test_zeroValueTransferFromEmptyAccountSucceedsAndEmits() (gas: 50501)\nSuite result: ok. 31 passed; 0 failed; 0 skipped; finished in 63.09ms (95.10ms CPU time)\n\nRan 10 tests for test/TESTERToken.pool.t.sol:TESTERTokenPoolTest\n[PASS] testFuzz_buyThenSellAllRoundTripsAndConservesSupply(uint256,bool) (runs: 256, μ: 2325874, ~: 2324908)\nLogs:\n  Bound result 7166291094204758376499\n\n[PASS] test_exactOutputBuyDeliversExactlyTheAskedAmount() (gas: 2280649)\n[PASS] test_factoryCannotSeedMoreThanItHolds() (gas: 1279413)\n[PASS] test_launchAndSwapsWorkWhenTesterIsCurrency1() (gas: 2329870)\n[PASS] test_manyTradersInSequenceConserveTheSupply() (gas: 7250725)\n[PASS] test_seedTakesThePoolShareExactlyAndRemainderGoesToDead() (gas: 1197580)\n[PASS] test_sendingTesterStraightToTheManagerIsNotCredited() (gas: 2129995)\n[PASS] test_traderBuysAndSellsThroughThePoolManagerAndTheLpEarnsTheFee() (gas: 2538888)\n[PASS] test_traderCannotBuyWithImdItDoesNotHold() (gas: 2025789)\n[PASS] test_traderCannotSellTesterItDoesNotHold() (gas: 3001643)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 66.70ms (77.29ms CPU time)\n\nRan 8 tests for test/TESTERToken.t.sol:TESTERTokenSmokeTest\n[PASS] test_ApprovalAllowsOnlyTheApprovedAmount() (gas: 166095)\n[PASS] test_DeployerCannotSpendHolderBalanceWithoutApproval() (gas: 89629)\n[PASS] test_DeploymentMintsEntireSupplyToDeployer() (gas: 37316)\n[PASS] test_FailedTransferFromPreservesAllowance() (gas: 98170)\n[PASS] test_FullBalanceTransfersToAndFromPoolManagerWithoutFeesOrLimits() (gas: 138155)\n[PASS] test_InfiniteAllowanceSelfTransferAndZeroTransfer() (gas: 135704)\n[PASS] test_RevertWhenTransferExceedsBalance() (gas: 44660)\n[PASS] test_ZeroRecipientAndZeroSpenderRevert() (gas: 63705)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 67.37ms (1.27ms CPU time)\n\nRan 1 test for test/TESTERToken.pool.t.sol:TESTERTokenPoolInvariantTest\n[PASS]\nTESTERTokenPoolInvariantTest invariants:\n[PASS] invariant_managerHoldsTheSeedPlusNetSales\n[PASS] invariant_supplyIsConservedAcrossTrading\n[PASS] invariant_traderHoldsNetPurchases\n TESTERTokenPoolInvariantTest invariants (runs: 32, calls: 1280, reverts: 0)\n\n╭------------------+----------+-------+---------+----------╮\n| Contract         | Selector | Calls | Reverts | Discards |\n+==========================================================+\n| PoolTradeHandler | buy      | 601   | 0       | 0        |\n|------------------+----------+-------+---------+----------|\n| PoolTradeHandler | sell     | 679   | 0       | 0        |\n╰------------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 99999999999999000065\n  Bound result 2827\n  Bound result 16635278\n  Bound result 26143249132670094482752221\n  Bound result 20857897089084692671\n  Bound result 99999999999999005633\n  Bound result 2336460442765548286\n  Bound result 32773627091500777554344701\n  Bound result 13984\n  Bound result 7131\n  Bound result 1000000\n  Bound result 99999999999999004741\n  Bound result 1\n  Bound result 55215460144\n  Bound result 2318120941687405445786588\n  Bound result 99999999999999001286\n  Bound result 16313972135701035968\n  Bound result 64\n  Bound result 99999999999999002535\n  Bound result 10193503361946301009\n  Bound result 421613\n  Bound result 99999999999999001742\n  Bound result 495\n  Bound result 1\n  Bound result 46286442596087762279\n  Bound result 919\n  Bound result 69935752776368451854\n  Bound result 129491844151387196828969345\n  Bound result 560048\n  Bound result 1780\n  Bound result 99999999999999012084\n  Bound result 99999999999999000502\n  Bound result 99999999999999999998\n  Bound result 18333\n  Bound result 624\n  Bound result 922\n  Bound result 99999999999999015904\n  Bound result 51444707485041480377329330\n  Bound result 99999999999999013353\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 263.56ms (261.19ms CPU time)\n\nRan 1 test for test/TESTERToken.invariant.t.sol:TESTERTokenInvariantTest\n[PASS]\nTESTERTokenInvariantTest invariants:\n[PASS] invariant_ledgerMatchesGhostBooks\n[PASS] invariant_noAdminSurfaceAppeared\n[PASS] invariant_sumOfBalancesEqualsSupply\n[PASS] invariant_totalSupplyNeverChanges\n TESTERTokenInvariantTest invariants (runs: 64, calls: 6400, reverts: 0)\n\n╭---------------+---------------------------+-------+---------+----------╮\n| Contract      | Selector                  | Calls | Reverts | Discards |\n+========================================================================+\n| TESTERHandler | approve                   | 757   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | strangerCall              | 765   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transfer                  | 794   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferFrom              | 815   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferFromOverAllowance | 764   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferFromOverBalance   | 846   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferOverBalance       | 849   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferToZero            | 810   | 0       | 0        |\n╰---------------+---------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 19534\n  Bound result 95\n  Bound result 990\n  Bound result 7\n  Bound result 64\n  Bound result 184\n  Bound result 2\n  Bound result 0\n  Bound result 10670\n  Bound result 6123\n  Bound result 4665\n  Bound result 2\n  Bound result 0\n  Bound result 4182\n  Bound result 4\n  Bound result 5140188991855308653467622173\n  Bound result 400000000000000000000000\n  Bound result 0\n  Bound result 4209\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 16777215\n  Bound result 0\n  Bound result 0\n  Bound result 7740\n  Bound result 0\n  Bound result 501\n  Bound result 46328363754154\n  Bound result 0\n  Bound result 0\n  Bound result 5390\n  Bound result 0\n  Bound result 25744888783651212570965954353983056160\n  Bound result 2000000000000000000\n  Bound result 9000\n  Bound result 0\n  Bound result 208\n  Bound result 36865845750167559528556\n  Bound result 4306372904182670546024819958732405439245792908649445\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 112616286060951790785072426010212675915086295688025825194248030101143571649788\n  Bound result 0\n  Bound result 340282366920938463463374607431768211455\n  Bound result 2048\n  Bound result 9698\n  Bound result 100\n  Bound result 5192\n  Bound result 0\n  Bound result 86546909761563275227277388051259291006203199884396774462197937057971295876474\n  Bound result 0\n  Bound result 548584985511882141418191753835\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 3.42s (3.41s CPU time)\n\nRan 5 test suites in 3.42s (3.88s CPU time): 51 tests passed, 0 failed, 0 skipped (51 total tests)\n","passed":true},{"durationMs":67,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"TESTERToken.approve(address,uint256)\",\"TESTERToken.transfer(address,uint256)\",\"TESTERToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DESIGN.md\":196,\"README.md\":148,\"dist/app.js\":365,\"dist/assets/fonts/IBMPlexMono-400-latin.woff2\":58,\"dist/assets/fonts/IBMPlexMono-600-latin.woff2\":78,\"dist/assets/fonts/Inter-variable-latin.woff2\":207,\"dist/assets/logo.png\":88,\"dist/assets/panels.webp\":574,\"dist/index.html\":225,\"dist/styles.css\":295,\"foundry.toml\":10,\"launch.json\":24,\"site/VALIDATION.md\":88,\"site/app.js\":365,\"site/assets/fonts/IBMPlexMono-400-latin.woff2\":58,\"site/assets/fonts/IBMPlexMono-600-latin.woff2\":78,\"site/assets/fonts/Inter-variable-latin.woff2\":207,\"site/assets/logo.png\":88,\"site/assets/panels.webp\":574,\"site/index.html\":225,\"site/package-lock.json\":29,\"site/package.json\":17,\"site/styles.css\":295,\"site/tools/build.mjs\":72,\"site/tools/check.mjs\":247,\"site/tools/preview.mjs\":18,\"site/tools/serve.mjs\":79,\"site/tsconfig.json\":18,\"src/TESTERToken.sol\":67,\"test/TESTERToken.invariant.t.sol\":212,\"test/TESTERToken.pool.t.sol\":645,\"test/TESTERToken.t.sol\":113,\"test/TESTERToken.unit.t.sol\":503,\"test/lib/README.md\":18,\"test/lib/forge-std/LICENSE-APACHE\":203,\"test/lib/forge-std/LICENSE-MIT\":25,\"test/lib/forge-std/src/Base.sol\":42,\"test/lib/forge-std/src/Script.sol\":28,\"test/lib/forge-std/src/StdAssertions.sol\":669,\"test/lib/forge-std/src/StdChains.sol\":286,\"test/lib/forge-std/src/StdCheats.sol\":829,\"test/lib/forge-std/src/StdConstants.sol\":30,\"test/lib/forge-std/src/StdError.sol\":15,\"test/lib/forge-std/src/StdInvariant.sol\":122,\"test/lib/forge-std/src/StdJson.sol\":283,\"test/lib/forge-std/src/StdMath.sol\":43,\"test/lib/forge-std/src/StdStorage.sol\":473,\"test/lib/forge-std/src/StdStyle.sol\":333,\"test/lib/forge-std/src/StdToml.sol\":283,\"test/lib/forge-std/src/StdUtils.sol\":209,\"test/lib/forge-std/src/Test.sol\":34,\"test/lib/forge-std/src/Vm.sol\":2397,\"test/lib/forge-std/src/console.sol\":1560,\"test/lib/forge-std/src/console2.sol\":4,\"test/lib/forge-std/src/interfaces/IERC1155.sol\":105,\"test/lib/forge-std/src/interfaces/IERC165.sol\":12,\"test/lib/forge-std/src/interfaces/IERC20.sol\":43,\"test/lib/forge-std/src/interfaces/IERC4626.sol\":190,\"test/lib/forge-std/src/interfaces/IERC6909.sol\":72,\"test/lib/forge-std/src/interfaces/IERC721.sol\":164,\"test/lib/forge-std/src/interfaces/IERC7540.sol\":150,\"test/lib/forge-std/src/interfaces/IERC7575.sol\":241,\"test/lib/forge-std/src/interfaces/IMulticall3.sol\":73,\"test/lib/forge-std/src/safeconsole.sol\":13937,\"test/lib/solmate/LICENSE\":1,\"test/lib/solmate/src/auth/Owned.sol\":44,\"test/lib/v4-core/licenses/BUSL_LICENSE\":63,\"test/lib/v4-core/licenses/MIT_LICENSE\":7,\"test/lib/v4-core/src/ERC6909.sol\":90,\"test/lib/v4-core/src/ERC6909Claims.sol\":23,\"test/lib/v4-core/src/Extsload.sol\":64,\"test/lib/v4-core/src/Exttload.sol\":40,\"test/lib/v4-core/src/NoDelegateCall.sol\":33,\"test/lib/v4-core/src/PoolManager.sol\":395,\"test/lib/v4-core/src/ProtocolFees.sol\":71,\"test/lib/v4-core/src/interfaces/IExtsload.sol\":21,\"test/lib/v4-core/src/interfaces/IExttload.sol\":15,\"test/lib/v4-core/src/interfaces/IHooks.sol\":152,\"test/lib/v4-core/src/interfaces/IPoolManager.sol\":217,\"test/lib/v4-core/src/interfaces/IProtocolFees.sol\":52,\"test/lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":10,\"test/lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":48,\"test/lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":66,\"test/lib/v4-core/src/libraries/BitMath.sol\":49,\"test/lib/v4-core/src/libraries/CurrencyDelta.sol\":42,\"test/lib/v4-core/src/libraries/CurrencyReserves.sol\":39,\"test/lib/v4-core/src/libraries/CustomRevert.sol\":120,\"test/lib/v4-core/src/libraries/FixedPoint128.sol\":8,\"test/lib/v4-core/src/libraries/FixedPoint96.sol\":10,\"test/lib/v4-core/src/libraries/FullMath.sol\":117,\"test/lib/v4-core/src/libraries/Hooks.sol\":340,\"test/lib/v4-core/src/libraries/LPFeeLibrary.sol\":79,\"test/lib/v4-core/src/libraries/LiquidityMath.sol\":20,\"test/lib/v4-core/src/libraries/Lock.sol\":28,\"test/lib/v4-core/src/libraries/NonzeroDeltaCount.sol\":35,\"test/lib/v4-core/src/libraries/ParseBytes.sol\":29,\"test/lib/v4-core/src/libraries/Pool.sol\":613,\"test/lib/v4-core/src/libraries/Position.sol\":103,\"test/lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":47,\"test/lib/v4-core/src/libraries/SafeCast.sol\":60,\"test/lib/v4-core/src/libraries/SqrtPriceMath.sol\":289,\"test/lib/v4-core/src/libraries/StateLibrary.sol\":349,\"test/lib/v4-core/src/libraries/SwapMath.sol\":108,\"test/lib/v4-core/src/libraries/TickBitmap.sol\":122,\"test/lib/v4-core/src/libraries/TickMath.sol\":238,\"test/lib/v4-core/src/libraries/TransientStateLibrary.sol\":49,\"test/lib/v4-core/src/libraries/UnsafeMath.sol\":29,\"test/lib/v4-core/src/types/BalanceDelta.sol\":72,\"test/lib/v4-core/src/types/BeforeSwapDelta.sol\":38,\"test/lib/v4-core/src/types/Currency.sol\":119,\"test/lib/v4-core/src/types/PoolId.sol\":17,\"test/lib/v4-core/src/types/PoolKey.sol\":22,\"test/lib/v4-core/src/types/PoolOperation.sol\":26,\"test/lib/v4-core/src/types/Slot0.sol\":94},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"e14c0568ffdde2fb3eab3e9b349974434ffd32f4f2d3dbfc78f5fab3da3fa90a","verifiedTreeHash":"03546c5f94255c2e132ca41819000be4048a7173","verifierVersion":"0.1.0+c4d32abc"},{"checks":[{"durationMs":2463,"exitCode":0,"name":"build","output":"Compiling 80 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.28s\nCompiler run successful!\n","passed":true},{"durationMs":3503,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 8 tests for test/TESTERToken.t.sol:TESTERTokenSmokeTest\n[PASS] test_ApprovalAllowsOnlyTheApprovedAmount() (gas: 166095)\n[PASS] test_DeployerCannotSpendHolderBalanceWithoutApproval() (gas: 89629)\n[PASS] test_DeploymentMintsEntireSupplyToDeployer() (gas: 37316)\n[PASS] test_FailedTransferFromPreservesAllowance() (gas: 98170)\n[PASS] test_FullBalanceTransfersToAndFromPoolManagerWithoutFeesOrLimits() (gas: 138155)\n[PASS] test_InfiniteAllowanceSelfTransferAndZeroTransfer() (gas: 135704)\n[PASS] test_RevertWhenTransferExceedsBalance() (gas: 44660)\n[PASS] test_ZeroRecipientAndZeroSpenderRevert() (gas: 63705)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 26.21ms (1.50ms CPU time)\n\nRan 31 tests for test/TESTERToken.unit.t.sol:TESTERTokenUnitTest\n[PASS] testFuzz_allowanceAccounting(uint256,uint256) (runs: 256, μ: 156058, ~: 175684)\nLogs:\n  Bound result 16340871871629979144\n  Bound result 131927156946427981318415265\n\n[PASS] testFuzz_arbitraryCalldataFromAStrangerMovesNothing(bytes4,bytes,uint96) (runs: 256, μ: 144396, ~: 144379)\n[PASS] testFuzz_roundTripBetweenHoldersLosesNothing(uint256,uint8) (runs: 256, μ: 600257, ~: 525748)\nLogs:\n  Bound result 16340871871629979144\n  Bound result 14\n\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256,uint256) (runs: 256, μ: 119522, ~: 119840)\nLogs:\n  Bound result 16340871871629979144\n  Bound result 838394884653131927156946428819713299918\n\n[PASS] testFuzz_transferConservesSupplyAndMovesExactly(address,uint256) (runs: 256, μ: 123484, ~: 123581)\nLogs:\n  Bound result 10000\n\n[PASS] test_approveDoesNotRequireABalanceOrAlterOne() (gas: 129521)\n[PASS] test_approveReplacesRatherThanAccumulates() (gas: 163478)\n[PASS] test_approveZeroSpenderReverts() (gas: 40147)\n[PASS] test_constructorEmitsMintTransferFromZero() (gas: 30006)\n[PASS] test_constructorMintsWholeSupplyToDeployerOnly() (gas: 53658)\n[PASS] test_holderMayPullFromThemselvesOnlyThroughAnAllowance() (gas: 160006)\n[PASS] test_metadataIsFixedAsTheBriefStates() (gas: 35112)\n[PASS] test_noAdminOrMintSelectorExists() (gas: 2127708)\n[PASS] test_noFallbackAndNoReceive() (gas: 84073)\n[PASS] test_noFeeTaxOrLimitOnLaunchAndPoolFlows() (gas: 405966)\n[PASS] test_nobodyCanSpendAHolderWithoutThatHoldersApproval() (gas: 235183)\n[PASS] test_runtimeContainsNoDangerousOrExternalCallOpcodes() (gas: 4064508)\n[PASS] test_selfTransferIsNeutralAndEmits() (gas: 80061)\n[PASS] test_transferEntireBalanceThenSenderHasExactlyZero() (gas: 143450)\n[PASS] test_transferFromDoesNotEmitApprovalOnConsumption() (gas: 125409)\n[PASS] test_transferFromExactAllowanceSpendsToZero() (gas: 220840)\n[PASS] test_transferFromOneOverAllowanceRevertsAndKeepsAllowance() (gas: 120112)\n[PASS] test_transferFromPartialSpendsDecrementAllowance() (gas: 250624)\n[PASS] test_transferFromTheZeroAddressRevertsEvenForZeroValue() (gas: 38087)\n[PASS] test_transferFromToZeroRevertsAfterAllowanceCheck() (gas: 108610)\n[PASS] test_transferMovesExactAmountAndEmits() (gas: 94436)\n[PASS] test_transferOneMoreThanBalanceRevertsExactlyAtTheBoundary() (gas: 161274)\n[PASS] test_transferToTokenContractIsAllowedAndIrrecoverable() (gas: 120574)\n[PASS] test_transferToZeroAddressRevertsEvenForZeroValue() (gas: 83809)\n[PASS] test_unlimitedAllowanceIsNotConsumedButMaxMinusOneIs() (gas: 247474)\n[PASS] test_zeroValueTransferFromEmptyAccountSucceedsAndEmits() (gas: 50501)\nSuite result: ok. 31 passed; 0 failed; 0 skipped; finished in 26.26ms (98.85ms CPU time)\n\nRan 10 tests for test/TESTERToken.pool.t.sol:TESTERTokenPoolTest\n[PASS] testFuzz_buyThenSellAllRoundTripsAndConservesSupply(uint256,bool) (runs: 256, μ: 2325804, ~: 2324908)\nLogs:\n  Bound result 5850016338221538057104\n\n[PASS] test_exactOutputBuyDeliversExactlyTheAskedAmount() (gas: 2280649)\n[PASS] test_factoryCannotSeedMoreThanItHolds() (gas: 1279413)\n[PASS] test_launchAndSwapsWorkWhenTesterIsCurrency1() (gas: 2329870)\n[PASS] test_manyTradersInSequenceConserveTheSupply() (gas: 7250725)\n[PASS] test_seedTakesThePoolShareExactlyAndRemainderGoesToDead() (gas: 1197580)\n[PASS] test_sendingTesterStraightToTheManagerIsNotCredited() (gas: 2129995)\n[PASS] test_traderBuysAndSellsThroughThePoolManagerAndTheLpEarnsTheFee() (gas: 2538888)\n[PASS] test_traderCannotBuyWithImdItDoesNotHold() (gas: 2025789)\n[PASS] test_traderCannotSellTesterItDoesNotHold() (gas: 3001643)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 56.79ms (67.88ms CPU time)\n\nRan 1 test for test/TESTERToken.pool.t.sol:TESTERTokenPoolInvariantTest\n[PASS]\nTESTERTokenPoolInvariantTest invariants:\n[PASS] invariant_managerHoldsTheSeedPlusNetSales\n[PASS] invariant_supplyIsConservedAcrossTrading\n[PASS] invariant_traderHoldsNetPurchases\n TESTERTokenPoolInvariantTest invariants (runs: 32, calls: 1280, reverts: 0)\n\n╭------------------+----------+-------+---------+----------╮\n| Contract         | Selector | Calls | Reverts | Discards |\n+==========================================================+\n| PoolTradeHandler | buy      | 626   | 0       | 0        |\n|------------------+----------+-------+---------+----------|\n| PoolTradeHandler | sell     | 654   | 0       | 0        |\n╰------------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 99999999999999999998\n  Bound result 9038774727001266304624827\n  Bound result 99999999999999000098\n  Bound result 53588481657227044946279951\n  Bound result 18646\n  Bound result 20857897089084692671\n  Bound result 99999999999999000057\n  Bound result 404098525\n  Bound result 2110234841\n  Bound result 23072554694651320772990733\n  Bound result 38958999606383344584\n  Bound result 65212801576932126745\n  Bound result 54835447036291686096142415\n  Bound result 1284\n  Bound result 18446744073709551615\n  Bound result 99999999999999000372\n  Bound result 1000002\n  Bound result 54467426535617085851\n  Bound result 32\n  Bound result 99999999999999000013\n  Bound result 9291\n  Bound result 1000003\n  Bound result 99999999999999000006\n  Bound result 97252478480954199802252000\n  Bound result 1122784438970399132830235\n  Bound result 1101127495\n  Bound result 5236\n  Bound result 13184178094029887283804218\n  Bound result 199999999999999000096\n  Bound result 99999999999999000894\n  Bound result 99999999999999002922\n  Bound result 131072\n  Bound result 2500000000000\n  Bound result 587\n  Bound result 99999999999999000029\n  Bound result 3198969377508645910017818\n  Bound result 99999999999999009720\n  Bound result 3457\n  Bound result 420\n  Bound result 99999999999999002310\n  Bound result 99999999999999000241\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 251.02ms (247.55ms CPU time)\n\nRan 1 test for test/TESTERToken.invariant.t.sol:TESTERTokenInvariantTest\n[PASS]\nTESTERTokenInvariantTest invariants:\n[PASS] invariant_ledgerMatchesGhostBooks\n[PASS] invariant_noAdminSurfaceAppeared\n[PASS] invariant_sumOfBalancesEqualsSupply\n[PASS] invariant_totalSupplyNeverChanges\n TESTERTokenInvariantTest invariants (runs: 64, calls: 6400, reverts: 0)\n\n╭---------------+---------------------------+-------+---------+----------╮\n| Contract      | Selector                  | Calls | Reverts | Discards |\n+========================================================================+\n| TESTERHandler | approve                   | 843   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | strangerCall              | 807   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transfer                  | 794   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferFrom              | 798   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferFromOverAllowance | 748   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferFromOverBalance   | 775   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferOverBalance       | 843   | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| TESTERHandler | transferToZero            | 792   | 0       | 0        |\n╰---------------+---------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 36\n  Bound result 0\n  Bound result 27178461825424591572526191828075017789104549788465873613809187107825733\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n  Bound result 0\n  Bound result 1369874177661260617524178091526323552645071\n  Bound result 7334533301976897822364\n  Bound result 2538\n  Bound result 0\n  Bound result 24576\n  Bound result 193\n  Bound result 45488490646166950791294420303188512941620906885417713157155302240786998341203\n  Bound result 4747073463263691148926524037243221871818904\n  Bound result 0\n  Bound result 0\n  Bound result 16635278\n  Bound result 21532960\n  Bound result 2825\n  Bound result 1293\n  Bound result 881\n  Bound result 340282366920938463463374607431768211456\n  Bound result 0\n  Bound result 245\n  Bound result 176\n  Bound result 74\n  Bound result 0\n  Bound result 131072\n  Bound result 414\n  Bound result 2500000000000000000000\n  Bound result 0\n  Bound result 1384\n  Bound result 0\n  Bound result 2500000000000\n  Bound result 49142540915276412500843746657951092120978027018854203245267254611722\n  Bound result 4790\n  Bound result 4259\n  Bound result 12582911\n  Bound result 0\n  Bound result 9375\n  Bound result 24\n  Bound result 0\n  Bound result 952\n  Bound result 1280\n  Bound result 763600050\n  Bound result 0\n  Bound result 0\n  Bound result 242\n  Bound result 356\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.42s (3.41s CPU time)\n\nRan 5 test suites in 3.42s (3.78s CPU time): 51 tests passed, 0 failed, 0 skipped (51 total tests)\n","passed":true},{"durationMs":63,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"TESTERToken.approve(address,uint256)\",\"TESTERToken.transfer(address,uint256)\",\"TESTERToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"README.md\":87,\"foundry.toml\":10,\"launch.json\":24,\"src/TESTERToken.sol\":67,\"test/TESTERToken.invariant.t.sol\":212,\"test/TESTERToken.pool.t.sol\":645,\"test/TESTERToken.t.sol\":113,\"test/TESTERToken.unit.t.sol\":503,\"test/lib/README.md\":18,\"test/lib/forge-std/LICENSE-APACHE\":203,\"test/lib/forge-std/LICENSE-MIT\":25,\"test/lib/forge-std/src/Base.sol\":42,\"test/lib/forge-std/src/Script.sol\":28,\"test/lib/forge-std/src/StdAssertions.sol\":669,\"test/lib/forge-std/src/StdChains.sol\":286,\"test/lib/forge-std/src/StdCheats.sol\":829,\"test/lib/forge-std/src/StdConstants.sol\":30,\"test/lib/forge-std/src/StdError.sol\":15,\"test/lib/forge-std/src/StdInvariant.sol\":122,\"test/lib/forge-std/src/StdJson.sol\":283,\"test/lib/forge-std/src/StdMath.sol\":43,\"test/lib/forge-std/src/StdStorage.sol\":473,\"test/lib/forge-std/src/StdStyle.sol\":333,\"test/lib/forge-std/src/StdToml.sol\":283,\"test/lib/forge-std/src/StdUtils.sol\":209,\"test/lib/forge-std/src/Test.sol\":34,\"test/lib/forge-std/src/Vm.sol\":2397,\"test/lib/forge-std/src/console.sol\":1560,\"test/lib/forge-std/src/console2.sol\":4,\"test/lib/forge-std/src/interfaces/IERC1155.sol\":105,\"test/lib/forge-std/src/interfaces/IERC165.sol\":12,\"test/lib/forge-std/src/interfaces/IERC20.sol\":43,\"test/lib/forge-std/src/interfaces/IERC4626.sol\":190,\"test/lib/forge-std/src/interfaces/IERC6909.sol\":72,\"test/lib/forge-std/src/interfaces/IERC721.sol\":164,\"test/lib/forge-std/src/interfaces/IERC7540.sol\":150,\"test/lib/forge-std/src/interfaces/IERC7575.sol\":241,\"test/lib/forge-std/src/interfaces/IMulticall3.sol\":73,\"test/lib/forge-std/src/safeconsole.sol\":13937,\"test/lib/solmate/LICENSE\":1,\"test/lib/solmate/src/auth/Owned.sol\":44,\"test/lib/v4-core/licenses/BUSL_LICENSE\":63,\"test/lib/v4-core/licenses/MIT_LICENSE\":7,\"test/lib/v4-core/src/ERC6909.sol\":90,\"test/lib/v4-core/src/ERC6909Claims.sol\":23,\"test/lib/v4-core/src/Extsload.sol\":64,\"test/lib/v4-core/src/Exttload.sol\":40,\"test/lib/v4-core/src/NoDelegateCall.sol\":33,\"test/lib/v4-core/src/PoolManager.sol\":395,\"test/lib/v4-core/src/ProtocolFees.sol\":71,\"test/lib/v4-core/src/interfaces/IExtsload.sol\":21,\"test/lib/v4-core/src/interfaces/IExttload.sol\":15,\"test/lib/v4-core/src/interfaces/IHooks.sol\":152,\"test/lib/v4-core/src/interfaces/IPoolManager.sol\":217,\"test/lib/v4-core/src/interfaces/IProtocolFees.sol\":52,\"test/lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":10,\"test/lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":48,\"test/lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":66,\"test/lib/v4-core/src/libraries/BitMath.sol\":49,\"test/lib/v4-core/src/libraries/CurrencyDelta.sol\":42,\"test/lib/v4-core/src/libraries/CurrencyReserves.sol\":39,\"test/lib/v4-core/src/libraries/CustomRevert.sol\":120,\"test/lib/v4-core/src/libraries/FixedPoint128.sol\":8,\"test/lib/v4-core/src/libraries/FixedPoint96.sol\":10,\"test/lib/v4-core/src/libraries/FullMath.sol\":117,\"test/lib/v4-core/src/libraries/Hooks.sol\":340,\"test/lib/v4-core/src/libraries/LPFeeLibrary.sol\":79,\"test/lib/v4-core/src/libraries/LiquidityMath.sol\":20,\"test/lib/v4-core/src/libraries/Lock.sol\":28,\"test/lib/v4-core/src/libraries/NonzeroDeltaCount.sol\":35,\"test/lib/v4-core/src/libraries/ParseBytes.sol\":29,\"test/lib/v4-core/src/libraries/Pool.sol\":613,\"test/lib/v4-core/src/libraries/Position.sol\":103,\"test/lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":47,\"test/lib/v4-core/src/libraries/SafeCast.sol\":60,\"test/lib/v4-core/src/libraries/SqrtPriceMath.sol\":289,\"test/lib/v4-core/src/libraries/StateLibrary.sol\":349,\"test/lib/v4-core/src/libraries/SwapMath.sol\":108,\"test/lib/v4-core/src/libraries/TickBitmap.sol\":122,\"test/lib/v4-core/src/libraries/TickMath.sol\":238,\"test/lib/v4-core/src/libraries/TransientStateLibrary.sol\":49,\"test/lib/v4-core/src/libraries/UnsafeMath.sol\":29,\"test/lib/v4-core/src/types/BalanceDelta.sol\":72,\"test/lib/v4-core/src/types/BeforeSwapDelta.sol\":38,\"test/lib/v4-core/src/types/Currency.sol\":119,\"test/lib/v4-core/src/types/PoolId.sol\":17,\"test/lib/v4-core/src/types/PoolKey.sol\":22,\"test/lib/v4-core/src/types/PoolOperation.sol\":26,\"test/lib/v4-core/src/types/Slot0.sol\":94},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"fb0c0e5d1fa24262032d1cc566ca168025ec9ffb09b8ec24a28e11f673d1a8c5","verifiedTreeHash":"1892d772c08de4f807e5a6776303e777a1e4392d","verifierVersion":"0.1.0+c4d32abc"}]}