{"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":"50313b72-579e-4cf6-9b5f-8f72f6396699","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"9bae4cf7306c6b30505b9aff8218b4b9e4d2770020ea7e39fcd085c250f9e19f","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"fb7b3519129c69fc8aea79faa2feadd289412686f371e2ebf7b40520c4c7bede","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"da5a319d79ff9eb296b7927e96a4831f3fd5fdc371f65bd8f8ee3a68475e372a","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","subagents":4,"tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"858ead08b1bd74f215472288fece59616b2a7723d82d5c44ddd70882d93c4d4b","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"b8eb97d568aebdd465c78e9fc6f890c40097be0a7a21f916877c306544911efc","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"d6ab3ae837c9dbef5375f02a2aa434c2a68e26987b173f7a3f9af1cb6d468e93","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"093808275d1d2da145a1eb8537c4355187e7ac30c56b1dda065d88dcada64be2","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"a3a97135b22bc9a3225d8e8dac513cc8bd3faaecfab4dd3042d3f331a23f15a4","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","subagents":4,"tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: ConditionalsImd (COND).\nToken name: ConditionalsImd\nToken symbol: COND\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"91c5f408309e08d71ebf4bf7269dee7a53bfc5b70f7af4c4dae3fbfae6aea70e","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"50313b72-579e-4cf6-9b5f-8f72f6396699","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2798-conditionalsimd"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52609","feedbackHash":"0e0740bd097a156c3a4a76ed2b20e397def56a9fe98b895379dcccfbc397c04d","nodeKey":"audit_economics","submissionHash":"9bae4cf7306c6b30505b9aff8218b4b9e4d2770020ea7e39fcd085c250f9e19f","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52182","feedbackHash":"f975d04b24b91488728efe399968732cbc90cd6e4581d3d92ebc10b368ae408d","nodeKey":"audit_flow","submissionHash":"fb7b3519129c69fc8aea79faa2feadd289412686f371e2ebf7b40520c4c7bede","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"54232","feedbackHash":"fa12c0630614d9481798520dd496c1d6bc5d008ad5231c553e8a3c0ed6c08fe3","nodeKey":"audit_judge","submissionHash":"da5a319d79ff9eb296b7927e96a4831f3fd5fdc371f65bd8f8ee3a68475e372a","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51251","feedbackHash":"44a15d0d43e358b610c21751fa468c30900636502f8acb376c18224996a2ee90","nodeKey":"audit_math","submissionHash":"858ead08b1bd74f215472288fece59616b2a7723d82d5c44ddd70882d93c4d4b","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52617","feedbackHash":"45e5e47ba7e1bcf843ec4f811bcb5d3a5e22e5c4055dccffb07f31057f35660b","nodeKey":"audit_permissions","submissionHash":"b8eb97d568aebdd465c78e9fc6f890c40097be0a7a21f916877c306544911efc","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51368","feedbackHash":"96dd16c6641a81e21d02b5fe40a7a155c07b80db097b26b2438273160379270f","nodeKey":"build_contract_project","submissionHash":"d6ab3ae837c9dbef5375f02a2aa434c2a68e26987b173f7a3f9af1cb6d468e93","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52263","feedbackHash":"0576a957d7b5f0203dc17817413940089da5782f5e6ae7a07b7fc0610306ba00","nodeKey":"manifest","submissionHash":"093808275d1d2da145a1eb8537c4355187e7ac30c56b1dda065d88dcada64be2","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52022","feedbackHash":"a5c52e61d16ec9c7d51e061d39758d1a38074a795dc92fd9205660e4293eb6ae","nodeKey":"write_foundry_tests","submissionHash":"a3a97135b22bc9a3225d8e8dac513cc8bd3faaecfab4dd3042d3f331a23f15a4","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"80704bac54025728659b8a0276f15e0762d8cb8b5b5971efbac20ed2adcf55b7","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"9f17d6e175be7b6f896920f898b25f6ebb9c61fe3f113d79f2fa1e55ac4f19d3","device":"6b16b4979d227241","findings":[],"hash":"093808275d1d2da145a1eb8537c4355187e7ac30c56b1dda065d88dcada64be2","nodeId":"7eddcf5a-cac1-4a7a-9504-0719dd975029","outcome":"completed","summary":"`launch.json` is written and verified. It is the only new file, and nothing else in the tree changed.\n\n**What the manifest says**\n- Kind is custom_token, with the token contract `ConditionalsImd`, name ConditionalsImd, symbol COND, 18 decimals.\n- Constructor arguments are empty, matching the accepted source, whose constructor takes nothing and mints once to msg.sender.\n- totalSupply is 1000000000000000000000000000, which equals the contract's TOTAL_SUPPLY constant.\n- contracts is an empty list, since the accepted tree has no application contracts.\n- pool is the launch's own: IMD as paired currency, fee 12500, tick spacing 60, the one-to-one initialPrice as provenance.\n- economics is the requester's object copied verbatim.\n- notes describe only the one contract present, at 1,226 characters.\n\n**Checks run**\n- A schema check confirmed only the allowed keys, correct types, lowercase addresses, and byte-for-byte equality of economics with the job's text.\n- `forge build` compiled cleanly, and the ABI shows a parameterless constructor.\n- `forge test` with the verifier's fuzz seed passed all 35 tests across both suites.","treeHash":"121cee4d305843ffad3a654360457c9c541207dd","usage":{"cachedInputTokens":217364,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":3593,"runtime":"claude","turns":10,"wallClockMs":69414}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"723b11f958c65250","findings":[],"hash":"858ead08b1bd74f215472288fece59616b2a7723d82d5c44ddd70882d93c4d4b","nodeId":"a3a3c3d4-47c6-4461-a9e2-1f93df8475ec","outcome":"completed","summary":"The review is complete. The math audit of ConditionalsImd found no defects, and the findings file holds an empty list with eight coverage rows.\n\n**What I checked**\n\n- **Source**: the token is 23 lines, a plain OpenZeppelin v5.1.0 ERC20 with a constructor mint of the constant supply. The ABI exposes only approve, transfer and transferFrom as state-changing entry points. No external calls, payable paths, receive or fallback, bytes decoding, or link placeholders exist.\n- **Dependency integrity**: the vendored OpenZeppelin files are copied as plain files, so I fetched the upstream v5.1.0 tag and compared. All five relevant files are byte-identical. The arithmetic under review is unmodified upstream code.\n- **Math Precision**: the supply constant is a compile-time checked product equal to 1e27, far below the uint256 limit. The only divisions in the system are the launch split legs, and 10%, 70% and 20% of 1e27 are exact with no dust. The unchecked additions in `_update` and `_spendAllowance` are guarded by the preceding checked comparisons, and the balance addition cannot wrap because nothing mints after construction.\n- **Boundary**: I wrote and ran nine probes covering self-transferFrom with a finite allowance, zero-value transferFrom with zero allowance, transferFrom with the zero address as sender, infinite allowance against an insufficient balance, allowance of max minus one, max-uint transfer from an empty account, a fuzzed transfer chain, and ETH or unknown-selector calls. All passed as the spec requires.\n- **Numerical Gap**: the conservation invariant and the fixed-supply invariant hold on every path since only `_update` touches balances or supply. The project's own invariant suite also passes under its fail-on-revert profile.\n\n**Static analysis leads**: Slither reported nothing. Aderyn's large-numeric-literal line is a style note on an exact, tested value and is not a defect.\n\n**Tree state**: my scratch test directory was removed after running, and the working tree is clean apart from the findings file. No repository file was modified.","treeHash":null,"usage":{"cachedInputTokens":484457,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":11358,"runtime":"claude","turns":23,"wallClockMs":167480}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8e25456c4ae69acf","findings":[],"hash":"9bae4cf7306c6b30505b9aff8218b4b9e4d2770020ea7e39fcd085c250f9e19f","nodeId":"2f7e824f-bc3f-4189-8bec-89a354fb996a","outcome":"completed","summary":"I found no defects in the economics area for ConditionalsImd (COND). `.imd-findings.json` has an empty findings list and a coverage record of 6 rows: all three entry points listed, plus three for invariants and economics. Every row says `holds`. I changed no repository files, and the scratch test I used was deleted afterwards.\n\n**The token.** `src/ConditionalsImd.sol` is the unmodified OpenZeppelin v5.1.0 `ERC20` (the vendored copy is unchanged). The only mint is in the constructor: `1_000_000_000 * 10 ** 18` to `msg.sender`. It has no constructor arguments, no owner, no fee, burn or transfer hook, no external calls, and no `receive` or `fallback`.\n\n**How I covered the three guides:**\n- **Economic Security:** the token depends on no other contract and no price oracle, so there is no outside failure that could block anything. There is no fee-on-transfer, rebasing or pause behaviour. Transfers and approvals to `address(0)` revert rather than silently succeeding, and no fee formula exists to push to zero or to its maximum. The approve front-running race (an approved spender can spend the old allowance before a change lands) is part of the ERC-20 standard itself, so I noted it in the `approve` row rather than reporting it as a defect.\n- **Invariant:** the sum of balances always equals the total supply of 1e27. Only the constructor creates tokens and nothing destroys them. Allowances go down by exactly the amount spent, except the maximum value, which never decreases. A short balance or allowance reverts before any state changes.\n- **Flow Gap:** each leg of the launch moves exactly the amount it names: factory → distributor (10%), distributor → claimants, factory → PoolManager seed (70%), swaps in both directions, and the remainder (20%) to `remainderTo`. Nothing in the token can make a leg arrive short.\n\n**Checks run:**\n- The project's existing suite: 35 tests, all passing.\n- My own fuzz test of `transfer`, `transferFrom` and self-transfer: 5,000 runs, all passing. It confirmed balances move by exactly the stated amount, allowances behave correctly, and the conservation and fixed-supply invariants hold.\n- A unit test confirming that overspending and zero-address calls revert.\n\n**Not checked:** I couldn't run the protected floor tests, because they need the IMD harness files and environment settings that aren't in this tree. I also couldn't verify the IMD pair-token address on chain 1, since no `network.json` was provided. The aderyn note about a large numeric literal at line 18 is just the supply constant and isn't a defect.","treeHash":null,"usage":{"cachedInputTokens":265029,"inputTokens":16,"model":"claude-opus-5-5","outputTokens":4979,"runtime":"claude","turns":8,"wallClockMs":69558}},{"artifacts":[],"attempt":1,"bundleHash":"6ef7b5f9d401afedf3c61188832a851597fa1e1cc5e063c0888cf665ff587cc0","device":"30739b66307c87c9","findings":[],"hash":"a3a97135b22bc9a3225d8e8dac513cc8bd3faaecfab4dd3042d3f331a23f15a4","nodeId":"bfa11596-8e3c-42ff-85a3-19e6e8e72f9b","outcome":"completed","summary":"Added failure-path tests, fuzz properties, and stateful balance/allowance invariants. Only `test/` files changed.\n\nValidation passed: `forge build` and full `forge test` with the required seed—58 tests, zero failures or skips. The new invariant campaign completed 32,768 calls.\n\nNo contract defects found.","treeHash":"91f42406a716b1dbd19577a2135721a40ddf06cd","usage":{"cachedInputTokens":1278464,"inputTokens":89753,"model":"gpt-6-astra","outputTokens":18824,"runtime":"codex","turns":6,"wallClockMs":415568}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"76df9026b98e4277","findings":[],"hash":"b8eb97d568aebdd465c78e9fc6f890c40097be0a7a21f916877c306544911efc","nodeId":"21c5d5a3-7579-46d3-bae6-5201966d22b7","outcome":"completed","summary":"I found nothing to report in the permissions review of ConditionalsImd (COND): no Access Control, Trust Gap or Asymmetry defect I could reproduce. I wrote `.imd-findings.json` with an empty findings list and one coverage row for each of the three entry points, all marked `holds`, plus three rows for invariants I checked. No other files were changed, and the existing test suite passes (35 tests, 0 failing).\n\n**What I checked**\n- **The token:** `src/ConditionalsImd.sol` is a plain OpenZeppelin v5.1.0 ERC20. Its constructor makes one call, `_mint(msg.sender, TOTAL_SUPPLY)` with 1,000,000,000 × 10¹⁸. It doesn't override `_update`, `_approve` or `_spendAllowance`, has no owner, admin role, pause, blacklist, fee or exemption list, and never exposes `_mint` or `_burn` after deployment.\n- **The library code it inherits:** I read `transfer`, `approve`, `transferFrom`, `_transfer`, `_update`, `_approve` and `_spendAllowance` in the vendored copy of OpenZeppelin, and they look like the standard 5.1 code. `lib/` isn't under git here, so I couldn't diff it against upstream; that rests on reading the code.\n- **Access Control:** the contract's interface has only three functions that change state. Each one acts only on the caller's own balance or allowance, and `transferFrom` checks and spends the allowance before moving anything. After deployment the factory has no extra power beyond the tokens it holds.\n- **Trust Gap and Asymmetry:** every transfer goes through the same `_update`, with no special case for any sender or recipient. The factory, the distributor, the pool manager and ordinary holders are treated the same, buys and sells behave the same, and every transfer moves exactly the amount it names.\n- **Static analysis:** aderyn's one note (a large number written out at line 18) is just how the supply constant is spelled and isn't a defect. Slither reported nothing.\n\n**What I left out**\n- **The approve front-running race:** a spender can use an old allowance before a new one replaces it. That's how the ERC-20 standard itself works, not a defect in this code, and it can't be shown failing on this token specifically.\n- **Unlimited allowances:** OpenZeppelin deliberately doesn't reduce an allowance of the maximum value when it's spent.\n\n**What I couldn't reach**\n- The supplied protected tests (`Token.protected.t.sol`, `Owners.protected.t.sol`) import pool and factory code that isn't in this tree, so I read what they check but couldn't run them.\n- I didn't do the math, economics or control-flow passes in depth. They belong to the other three reviewers, and with no custom logic in the token there is little for them to cover.","treeHash":null,"usage":{"cachedInputTokens":214664,"inputTokens":16,"model":"claude-opus-5-5","outputTokens":3539,"runtime":"claude","turns":8,"wallClockMs":47537}},{"artifacts":[],"attempt":1,"bundleHash":"0eaa703a7cda36e40f02cc59bab223b8f2b4ab5c60c7522bf0786728c969749c","device":"bf4c5b8707945096","findings":[],"hash":"d6ab3ae837c9dbef5375f02a2aa434c2a68e26987b173f7a3f9af1cb6d468e93","nodeId":"56159571-ab5b-48d6-ae6e-1c04669f0649","outcome":"completed","summary":"I built the ConditionalsImd (COND) token as a Foundry project at the repository root. `forge build`, `forge test` (35 tests, using the verifier's fuzz seed, after a clean rebuild) and `forge fmt --check` all pass with solc 0.8.26.\n\n**The token** (`src/ConditionalsImd.sol`, `contract ConditionalsImd`)\n- It's a standard ERC-20 built on OpenZeppelin v5.1.0. Name `ConditionalsImd`, symbol `COND`, 18 decimals.\n- The constructor takes no arguments and mints all 1,000,000,000 COND once to the deployer, which at launch is the IMD factory.\n- Nothing can create more tokens later, and there is no owner, admin, pause, blacklist, burn, upgrade path or fee on transfer. Every transfer moves exactly the amount it names, so the 10% / 70% / 20% launch split (swarm, pool, requester) arrives whole.\n- The deployed code contains no `DELEGATECALL`, `CALLCODE` or `SELFDESTRUCT`, and no unlinked libraries.\n\n**Tests**\n- `test/ConditionalsImd.t.sol` (34 tests):\n  - **Success:** name, symbol, decimals and supply; the mint to the deployer, including when a contract deploys the token the way the factory does; the exact launch split and a distributor claim; transfers, approvals and `transferFrom`.\n  - **Failure:** sending more than a balance or allowance, sending to the zero address, approving the zero address, the deployer trying to pull a holder's tokens, and sending ETH to the token.\n  - **No admin powers:** none of 16 common admin calls works.\n  - **Fuzz:** total supply stays the same, allowances are spent exactly, and any three-way split of the supply arrives exactly.\n- `test/ConditionalsImd.invariant.t.sol`: across random transfers and approvals, the supply never changes and holders' balances always add up to it.\n\n**Other files**\n- `foundry.toml` pins solc 0.8.26 and `bytecode_hash = \"none\"`. It doesn't enable `ffi` or filesystem access.\n- forge-std v1.9.7 and OpenZeppelin v5.1.0 are copied into `lib/` as ordinary files, not submodules. I downloaded release archives because `git clone` was blocked from writing inside the clones' `.git` folders.\n- `README.md` documents the token, the deployment values for the manifest step (but there is no `launch.json`), the payout split, the assumptions, who is responsible for what after launch, and known ERC-20 caveats. The \"After launch\" section says there is nothing to set.\n\n**Not done**\n- Slither and Mythril weren't available here, so they weren't run.\n- I couldn't run the two provided protected tests locally. They depend on Uniswap v4 code and launch files the verifier supplies, which aren't in this repository.\n\nThe work is committed as `5068a36` on a new branch, `cond-token`. HEAD points to it; `main` still holds only the \"Empty workspace\" commit.","treeHash":"8501c52282138aa09ec3c76641e34020f27b0d86","usage":{"cachedInputTokens":985699,"inputTokens":43,"model":"claude-opus-5-5","outputTokens":26483,"runtime":"claude","turns":30,"wallClockMs":254029}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"89eed35842d609d7","findings":[{"citation":"resolved","description":"Documentation only, no code impact. README.md lines 37-38 say the manifest step writes launch.json later and that the repository does not ship one. The accepted tree now contains launch.json at the repository root (written by the manifest step). The values in README.md's deployment table and in launch.json agree on every field (contract ConditionalsImd, name/symbol/decimals, constructorArgs [], totalSupply 1000000000000000000000000000, pairedCurrency 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 12500, tickSpacing 60, poolBps 7000, initialMarketCapWei 2500000000000000000000, remainderTo 0xee2aaa315cf7ed169f93148d30d24af9318dbb66), so this is a stale sentence rather than a conflict. The manifest itself was checked: only schema keys at every level, strings for uint256/address/notes, numbers for fee/tickSpacing/decimals, lowercase addresses, contract name 15 characters, notes 1226 characters, constructorArgs empty matching the parameterless constructor, totalSupply equal to TOTAL_SUPPLY in src/ConditionalsImd.sol:18.","line":38,"path":"README.md","reproduction":"State: the working tree at HEAD. Input: `ls launch.json` returns the file; `grep -n 'does not ship' README.md` returns line 38. Expected: README either omits the sentence or says the manifest step has written launch.json. Actual: README.md:38 says the repository does not ship a launch.json while one is present. Fix: delete or reword the sentence at README.md:37-38; nothing in launch.json or src/ needs to change.","severity":"info","snippet":"accepted, so this repository does not ship a `launch.json`:","title":"README states the repository ships no launch.json, but launch.json is present at the root"}],"hash":"da5a319d79ff9eb296b7927e96a4831f3fd5fdc371f65bd8f8ee3a68475e372a","nodeId":"c3e873c5-180d-4a38-990c-2f66e107fa67","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written. The token has no defects. No tracked file was changed.\n\n**What the specialists reported.** All four areas and the independent tester reported no findings, so there was nothing to reproduce or merge. I treated their clean coverage as leads and traced every entry point myself.\n\n**What I verified**\n\n- The token is a 23-line wrapper over OpenZeppelin v5.1.0 `ERC20` with one constructor mint to `msg.sender` and no overrides. The compiled ABI has only `approve`, `transfer` and `transferFrom` as state-changing functions, plus views and three constants. No receive, fallback, mint, burn, owner, pause or upgrade path exists.\n- All five vendored OpenZeppelin files hash identically to the upstream v5.1.0 release, so the inherited transfer, allowance and failure paths are the audited ones.\n- The constructor takes no arguments, calls nothing external, and the creation and runtime code are far below the CREATE2 size limits. The existing CREATE2 deployer test and runtime opcode scan pass.\n- The manifest is schema-valid and agrees with the code on contract name, decimals, empty constructor arguments, total supply and economics.\n- The full test suite builds and passes: 58 tests across four suites, including fuzz and invariant campaigns.\n\n**Findings written**\n\n1. Info only. The README at line 38 says the repository ships no `launch.json`, while one is present and consistent with the README's own table. A stale sentence, not a code or manifest defect, so it carries no proof.\n\n**Coverage record.** All three entry points are marked `holds` with the traced checks and failure paths, plus five invariant rows covering fixed supply, exact launch flows, forbidden opcodes and deployability, dependency integrity, and manifest consistency.\n\n**Limit.** The protected launch harness depends on Uniswap v4 core and launch libraries that are not in this tree, so its seed-and-swap path was traced by reading rather than executed.","treeHash":null,"usage":{"cachedInputTokens":367587,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":8465,"runtime":"claude","turns":20,"wallClockMs":308054}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"d11ea2b5e05fa7a8","findings":[],"hash":"fb7b3519129c69fc8aea79faa2feadd289412686f371e2ebf7b40520c4c7bede","nodeId":"847bdee4-a46f-4f58-834c-92a791749bc4","outcome":"completed","summary":"The review is complete with no defects found. The findings file holds an empty list and a seven-row coverage record, and the working tree is unchanged.\n\n**What was reviewed.** The token at `src/ConditionalsImd.sol` is a 23-line wrapper over OpenZeppelin ERC20 with a single constructor mint and three constants. I ran the three assigned passes against it.\n\n- **Execution Trace.** Traced approve, transfer and transferFrom from entry to storage. There are no external calls, callbacks, sentinels with special paths, or partial-update windows. The allowance spend runs before the balance check and a later revert unwinds it atomically. A scratch test confirmed self-transferFrom, to-equals-from, overwrite-on-reapprove and unknown-selector behaviour, then was removed.\n- **Periphery.** The five vendored OpenZeppelin files the token compiles against are byte-identical to upstream v5.1.0, checked by hashing and diffing against the tagged GitHub sources. Context returns plain msg.sender.\n- **First Principles.** The constructor mints exactly 1e27 to msg.sender once, which is the factory under CREATE2. Name, symbol, decimals and supply match the brief. The ABI has no hidden entry points, no receive or fallback, no immutables and no link references.\n\n**Leads checked and dismissed.** The aderyn large-literal line is exactly 1e27 and harmless. Slither reported nothing. The ERC-20 allowance race is inherent to the interface and documented in the README, so it is recorded in the approve coverage row rather than as a finding.\n\n**Verification.** The project's own 35 tests and the invariant suite pass. All three listed entry points have a `holds` row with a one-line reason, plus rows for the constructor, the vendored base, the compiled surface and the launch-flow invariant.","treeHash":null,"usage":{"cachedInputTokens":517837,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":10545,"runtime":"claude","turns":20,"wallClockMs":146889}}],"verification":[{"checks":[{"durationMs":1484,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.39s\nCompiler run successful!\n","passed":true},{"durationMs":580,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 34 tests for test/ConditionalsImd.t.sol:ConditionalsImdTest\n[PASS] testFuzz_RevertWhen_transferAboveBalance(uint256,uint256) (runs: 256, μ: 93056, ~: 93473)\nLogs:\n  Bound result 627\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639313\n\n[PASS] testFuzz_RevertWhen_transferFromAboveAllowance(uint256,uint256) (runs: 256, μ: 88108, ~: 88272)\nLogs:\n  Bound result 627\n  Bound result 999999999999999999999999378\n\n[PASS] testFuzz_launchSplitArrivesExactly(uint256,uint256) (runs: 256, μ: 237340, ~: 238675)\nLogs:\n  Bound result 627\n  Bound result 5\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 92388, ~: 93539)\nLogs:\n  Bound result 260717824961898202504197930\n\n[PASS] testFuzz_transferFromSpendsExactAllowance(address,address,uint256,uint256) (runs: 256, μ: 160333, ~: 161789)\nLogs:\n  Bound result 518792115976710109003275332\n  Bound result 82363984\n\n[PASS] test_RevertWhen_approveZeroSpender() (gas: 30802)\n[PASS] test_RevertWhen_deployerPullsFromHolder() (gas: 92797)\n[PASS] test_RevertWhen_etherSent() (gas: 37172)\n[PASS] test_RevertWhen_transferExceedsBalance() (gas: 85778)\n[PASS] test_RevertWhen_transferFromEmptyAccount() (gas: 33296)\n[PASS] test_RevertWhen_transferFromExceedsAllowance() (gas: 80739)\n[PASS] test_RevertWhen_transferFromExceedsOwnerBalance() (gas: 138820)\n[PASS] test_RevertWhen_transferFromToZeroAddress() (gas: 83934)\n[PASS] test_RevertWhen_transferFromWithoutAllowance() (gas: 33538)\n[PASS] test_RevertWhen_transferMoreThanSupply() (gas: 33511)\n[PASS] test_RevertWhen_transferToZeroAddress() (gas: 30798)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 99891)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 19850)\n[PASS] test_create2DeployerContractReceivesSupply() (gas: 209844)\n[PASS] test_eachDeploymentIsIndependent() (gas: 38831)\n[PASS] test_infiniteAllowanceIsNotDecreased() (gas: 116018)\n[PASS] test_interfaceIsPlainErc20() (gas: 27683)\n[PASS] test_launchDistributionArrivesExactly() (gas: 289446)\n[PASS] test_metadata() (gas: 50517)\n[PASS] test_noAdminFunctionsExist() (gas: 905806)\n[PASS] test_runtimeHasNoDelegatecallOrSelfdestruct() (gas: 2579525)\n[PASS] test_seedByTransferFromArrivesExactly() (gas: 136136)\n[PASS] test_totalSupplyIsOneBillionWith18Decimals() (gas: 29028)\n[PASS] test_transferFromSpendsAllowance() (gas: 142838)\n[PASS] test_transferMovesBalanceAndEmits() (gas: 79082)\n[PASS] test_transferToSelfKeepsBalance() (gas: 41393)\n[PASS] test_transferWholeSupplySucceeds() (gas: 71750)\n[PASS] test_transferZeroAmountSucceeds() (gas: 53738)\n[PASS] test_wholeSupplyMintedToDeployer() (gas: 31612)\nSuite result: ok. 34 passed; 0 failed; 0 skipped; finished in 26.36ms (134.21ms CPU time)\n\nRan 1 test for test/ConditionalsImd.invariant.t.sol:ConditionalsImdInvariantTest\n[PASS]\nConditionalsImdInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_totalSupplyIsFixed\n ConditionalsImdInvariantTest invariants (runs: 64, calls: 4096, reverts: 0)\n\n╭------------------------+--------------+-------+---------+----------╮\n| Contract               | Selector     | Calls | Reverts | Discards |\n+====================================================================+\n| ConditionalsImdHandler | approve      | 1401  | 0       | 0        |\n|------------------------+--------------+-------+---------+----------|\n| ConditionalsImdHandler | transfer     | 1366  | 0       | 0        |\n|------------------------+--------------+-------+---------+----------|\n| ConditionalsImdHandler | transferFrom | 1329  | 0       | 0        |\n╰------------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5896\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3791\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3666\n  Bound result 0\n  Bound result 6977309697943\n  Bound result 96\n  Bound result 0\n  Bound result 2479\n  Bound result 5729\n  Bound result 0\n  Bound result 118\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4\n  Bound result 96\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 17\n  Bound result 1\n  Bound result 0\n  Bound result 86\n  Bound result 700\n  Bound result 4492\n  Bound result 250\n  Bound result 19\n  Bound result 2624\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 437.87ms (436.04ms CPU time)\n\nRan 2 test suites in 439.56ms (464.23ms CPU time): 35 tests passed, 0 failed, 0 skipped (35 total tests)\n","passed":true},{"durationMs":48,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ConditionalsImd.approve(address,uint256)\",\"ConditionalsImd.transfer(address,uint256)\",\"ConditionalsImd.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":130,\"foundry.toml\":18,\"launch.json\":24,\"remappings.txt\":2,\"src/ConditionalsImd.sol\":23,\"test/ConditionalsImd.invariant.t.sol\":83,\"test/ConditionalsImd.t.sol\":447},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"093808275d1d2da145a1eb8537c4355187e7ac30c56b1dda065d88dcada64be2","verifiedTreeHash":"121cee4d305843ffad3a654360457c9c541207dd","verifierVersion":"0.1.0+a6eb4461"},{"checks":[{"durationMs":2364,"exitCode":0,"name":"build","output":"Compiling 30 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.26s\nCompiler run successful!\n","passed":true},{"durationMs":11722,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 34 tests for test/ConditionalsImd.t.sol:ConditionalsImdTest\n[PASS] testFuzz_RevertWhen_transferAboveBalance(uint256,uint256) (runs: 256, μ: 92983, ~: 93491)\nLogs:\n  Bound result 16008\n  Bound result 2739854339\n\n[PASS] testFuzz_RevertWhen_transferFromAboveAllowance(uint256,uint256) (runs: 256, μ: 88045, ~: 88272)\nLogs:\n  Bound result 999999999999999999999999997\n  Bound result 999999999999999999999999998\n\n[PASS] testFuzz_launchSplitArrivesExactly(uint256,uint256) (runs: 256, μ: 236156, ~: 238577)\nLogs:\n  Bound result 6007\n  Bound result 2291\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 92939, ~: 93539)\nLogs:\n  Bound result 200000000000000000000000000\n\n[PASS] testFuzz_transferFromSpendsExactAllowance(address,address,uint256,uint256) (runs: 256, μ: 160025, ~: 161795)\nLogs:\n  Bound result 278141488660728222363548097\n  Bound result 63392188392488653115044549\n\n[PASS] test_RevertWhen_approveZeroSpender() (gas: 30802)\n[PASS] test_RevertWhen_deployerPullsFromHolder() (gas: 92797)\n[PASS] test_RevertWhen_etherSent() (gas: 37172)\n[PASS] test_RevertWhen_transferExceedsBalance() (gas: 85778)\n[PASS] test_RevertWhen_transferFromEmptyAccount() (gas: 33296)\n[PASS] test_RevertWhen_transferFromExceedsAllowance() (gas: 80739)\n[PASS] test_RevertWhen_transferFromExceedsOwnerBalance() (gas: 138820)\n[PASS] test_RevertWhen_transferFromToZeroAddress() (gas: 83934)\n[PASS] test_RevertWhen_transferFromWithoutAllowance() (gas: 33538)\n[PASS] test_RevertWhen_transferMoreThanSupply() (gas: 33511)\n[PASS] test_RevertWhen_transferToZeroAddress() (gas: 30798)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 99891)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 19850)\n[PASS] test_create2DeployerContractReceivesSupply() (gas: 209844)\n[PASS] test_eachDeploymentIsIndependent() (gas: 38831)\n[PASS] test_infiniteAllowanceIsNotDecreased() (gas: 116018)\n[PASS] test_interfaceIsPlainErc20() (gas: 27683)\n[PASS] test_launchDistributionArrivesExactly() (gas: 289446)\n[PASS] test_metadata() (gas: 50517)\n[PASS] test_noAdminFunctionsExist() (gas: 905806)\n[PASS] test_runtimeHasNoDelegatecallOrSelfdestruct() (gas: 2579525)\n[PASS] test_seedByTransferFromArrivesExactly() (gas: 136136)\n[PASS] test_totalSupplyIsOneBillionWith18Decimals() (gas: 29028)\n[PASS] test_transferFromSpendsAllowance() (gas: 142838)\n[PASS] test_transferMovesBalanceAndEmits() (gas: 79082)\n[PASS] test_transferToSelfKeepsBalance() (gas: 41393)\n[PASS] test_transferWholeSupplySucceeds() (gas: 71750)\n[PASS] test_transferZeroAmountSucceeds() (gas: 53738)\n[PASS] test_wholeSupplyMintedToDeployer() (gas: 31612)\nSuite result: ok. 34 passed; 0 failed; 0 skipped; finished in 129.66ms (432.37ms CPU time)\n\nRan 21 tests for test/ConditionalsImd.behavior.t.sol:ConditionalsImdBehaviorTest\n[PASS] testFuzz_approveReplacesRatherThanAddsAndIsIdempotent(uint256,uint256) (runs: 1000, μ: 232590, ~: 232656)\n[PASS] testFuzz_balanceFailurePreservesEveryApprovedUnit(uint256,uint256,uint256,bool) (runs: 1000, μ: 208341, ~: 206155)\nLogs:\n  Bound result 793607286329181403067860280\n  Bound result 10481400481162783032632039805397243922\n\n[PASS] testFuzz_emptyAccountCanApproveWithoutMintingOrReservingTokens(uint256) (runs: 1000, μ: 111483, ~: 111740)\n[PASS] testFuzz_roundTripRestoresBothFundedAccounts(uint256,uint256) (runs: 1000, μ: 312381, ~: 313103)\nLogs:\n  Bound result 602535274979379557560594249\n  Bound result 153087938107378925235570624\n\n[PASS] testFuzz_splitSpendsCannotExceedCumulativeApproval(uint256,uint256) (runs: 1000, μ: 277732, ~: 279665)\nLogs:\n  Bound result 244\n  Bound result 118\n\n[PASS] testFuzz_zeroDestinationFailurePreservesApproval(uint256,uint256) (runs: 1000, μ: 128535, ~: 129155)\nLogs:\n  Bound result 105887925\n\n[PASS] test_approvalsAreIsolatedByBothOwnerAndSpender() (gas: 381374)\n[PASS] test_constructorMintsOnceToContractCallerInsteadOfOrigin() (gas: 245552)\n[PASS] test_delegatedSelfTransferConsumesAllowanceWithoutMovingBalance() (gas: 133456)\n[PASS] test_failedTransferFromAboveBalanceRestoresFiniteApproval() (gas: 317212)\n[PASS] test_failedTransferFromToZeroRestoresFiniteApproval() (gas: 207063)\n[PASS] test_infiniteAllowanceCanBeReplacedAndRevoked() (gas: 333830)\n[PASS] test_maximumAmountCannotBypassBalanceChecksEvenWithInfiniteApproval() (gas: 156731)\n[PASS] test_nearMaximumAllowanceIsFinite() (gas: 147993)\n[PASS] test_oneBaseUnitCanBeTransferredAndReturned() (gas: 143101)\n[PASS] test_ownerAlsoNeedsApprovalToUseTransferFrom() (gas: 167358)\n[PASS] test_selfTransfersStillRequireSufficientBalance() (gas: 204367)\n[PASS] test_sendingTokensToTokenContractDoesNotBurnThem() (gas: 193817)\n[PASS] test_wholeSupplyCanBePulledOnlyOnceWithExactApproval() (gas: 253865)\n[PASS] test_zeroAddressesRemainInvalidForZeroValueOperations() (gas: 167038)\n[PASS] test_zeroTransfersEmitAndLeaveBalancesAndApprovalUnchanged() (gas: 201261)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 129.71ms (721.11ms CPU time)\n\nRan 1 test for test/ConditionalsImd.invariant.t.sol:ConditionalsImdInvariantTest\n[PASS]\nConditionalsImdInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_totalSupplyIsFixed\n ConditionalsImdInvariantTest invariants (runs: 64, calls: 4096, reverts: 0)\n\n╭------------------------+--------------+-------+---------+----------╮\n| Contract               | Selector     | Calls | Reverts | Discards |\n+====================================================================+\n| ConditionalsImdHandler | approve      | 1401  | 0       | 0        |\n|------------------------+--------------+-------+---------+----------|\n| ConditionalsImdHandler | transfer     | 1366  | 0       | 0        |\n|------------------------+--------------+-------+---------+----------|\n| ConditionalsImdHandler | transferFrom | 1329  | 0       | 0        |\n╰------------------------+--------------+-------+---------+----------╯\n\nLogs:\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 3791\n  Bound result 0\n  Bound result 0\n  Bound result 1667\n  Bound result 3708\n  Bound result 0\n  Bound result 6977309697943\n  Bound result 0\n  Bound result 0\n  Bound result 2478\n  Bound result 673\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1042\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 758\n  Bound result 12\n  Bound result 96\n  Bound result 0\n  Bound result 5819\n  Bound result 5\n  Bound result 0\n  Bound result 0\n  Bound result 145\n  Bound result 219\n  Bound result 0\n  Bound result 79\n  Bound result 1362\n  Bound result 373\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 496.40ms (494.64ms CPU time)\n\nRan 2 tests for test/ConditionalsImd.accounting.invariant.t.sol:ConditionalsImdAccountingInvariantTest\n[PASS]\nConditionalsImdAccountingInvariantTest invariants:\n[PASS] invariant_allowancesMatchOnlyApprovalsAndSuccessfulSpends\n[PASS] invariant_metadataDoesNotChange\n[PASS] invariant_supplyAndEveryBalanceMatchRequestedMovements\n ConditionalsImdAccountingInvariantTest invariants (runs: 256, calls: 32768, reverts: 0)\n\n╭----------------------------------+------------------------------+-------+---------+----------╮\n| Contract                         | Selector                     | Calls | Reverts | Discards |\n+==============================================================================================+\n| ConditionalsImdAccountingHandler | approve                      | 2761  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | approveZeroSpender           | 2703  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | approvedTransferAboveBalance | 2828  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | revoke                       | 2708  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | roundTrip                    | 2694  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | selfTransfer                 | 2810  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | transfer                     | 2747  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | transferAboveAllowance       | 2636  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | transferAboveBalance         | 2666  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | transferFrom                 | 2693  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | transferFromToZero           | 2709  | 0       | 0        |\n|----------------------------------+------------------------------+-------+---------+----------|\n| ConditionalsImdAccountingHandler | transferToZero               | 2813  | 0       | 0        |\n╰----------------------------------+------------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 10\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007917358306408\n  Bound result 250000000000000000000000005\n  Bound result 9243\n  Bound result 115792089237316195423570985008687907853269984665640314039458584007913129639935\n  Bound result 873\n  Bound result 2287400825\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129640188\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129646592\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129640067\n  Bound result 115792089237316195423570985008687907853269984665640314039487584007913129639937\n  Bound result 283442576842528295028945417025491166639858615094755\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639950\n  Bound result 200000000000000000000000000\n  Bound result 10645874290544402134202133156621886019496386\n  Bound result 13064003330658281653326369285815944985586711691934123401407207113113\n  Bound result 1289\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129651384\n  Bound result 128\n  Bound result 19684141922591\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129664109\n  Bound result 7424\n  Bound result 17\n  Bound result 64199\n  Bound result 64199\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129704230\n  Bound result 131249046872811440241463211\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129575899\n  Bound result 115792089237316195423570985008687907853269984665640434878663711264934503447342\n  Bound result 115792089237316195423570985008687907853269984665640333434397390533129640578343\n  Bound result 115792089237316195423570985008687907853269984665640182790410711196472888183726\n  Bound result 115792089237316195423570985008687907853269984665640434878663711264932726521119\n  Bound result 265625377923497572527254127937392135790437565745\n  Bound result 37565605889610866484950915\n  Bound result 115792089237316195423570985008687907853269984665639564040457584007913129639935\n  Bound result 115792089237316195423570985008687907853269984665640332481145214503684189696631\n  Bound result 10\n  Bound result 115792089237316195423570985008687907853269984665640182790410711196472888177151\n  Bound result 115792089237316195423570985008687907853269984665640182790410711196472888177585\n  Bound result 381249046872811440241463201\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129578562\n  Bound result 1011285031212138397276324\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007914129575735\n  Bound result 10\n  Bound result 10000\n  Bound result 115792089237316195423570985008687907853269984665640315050742615220051526918482\n  Bound result 127912605534828081955394907609037801823623133054687\n  Bound result 5900\n  Bound result 228951574224080143114681001\n\n[PASS] test_handlerExercisesMixedSequenceAndAllInvariants() (gas: 4013518)\nLogs:\n  Bound result 13\n  Bound result 4\n  Bound result 1\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 1\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 11.59s (11.59s CPU time)\n\nRan 4 test suites in 11.59s (12.35s CPU time): 58 tests passed, 0 failed, 0 skipped (58 total tests)\n","passed":true},{"durationMs":65,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ConditionalsImd.approve(address,uint256)\",\"ConditionalsImd.transfer(address,uint256)\",\"ConditionalsImd.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":130,\"foundry.toml\":18,\"remappings.txt\":2,\"src/ConditionalsImd.sol\":23,\"test/ConditionalsImd.accounting.invariant.t.sol\":124,\"test/ConditionalsImd.behavior.t.sol\":384,\"test/ConditionalsImd.invariant.t.sol\":83,\"test/ConditionalsImd.t.sol\":447,\"test/PROPERTIES.md\":70,\"test/helpers/ConditionalsImdAccountingHandler.sol\":209},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"a3a97135b22bc9a3225d8e8dac513cc8bd3faaecfab4dd3042d3f331a23f15a4","verifiedTreeHash":"91f42406a716b1dbd19577a2135721a40ddf06cd","verifierVersion":"0.1.0+a6eb4461"},{"checks":[{"durationMs":1543,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.44s\nCompiler run successful!\n","passed":true},{"durationMs":577,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 34 tests for test/ConditionalsImd.t.sol:ConditionalsImdTest\n[PASS] testFuzz_RevertWhen_transferAboveBalance(uint256,uint256) (runs: 256, μ: 93056, ~: 93473)\nLogs:\n  Bound result 16008\n  Bound result 2739854339\n\n[PASS] testFuzz_RevertWhen_transferFromAboveAllowance(uint256,uint256) (runs: 256, μ: 88108, ~: 88272)\nLogs:\n  Bound result 999999999999999999999999997\n  Bound result 999999999999999999999999998\n\n[PASS] testFuzz_launchSplitArrivesExactly(uint256,uint256) (runs: 256, μ: 237340, ~: 238675)\nLogs:\n  Bound result 3648\n  Bound result 3615\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 92388, ~: 93539)\nLogs:\n  Bound result 20000000000000000000\n\n[PASS] testFuzz_transferFromSpendsExactAllowance(address,address,uint256,uint256) (runs: 256, μ: 160333, ~: 161789)\nLogs:\n  Bound result 518792115976710109003275332\n  Bound result 82363984\n\n[PASS] test_RevertWhen_approveZeroSpender() (gas: 30802)\n[PASS] test_RevertWhen_deployerPullsFromHolder() (gas: 92797)\n[PASS] test_RevertWhen_etherSent() (gas: 37172)\n[PASS] test_RevertWhen_transferExceedsBalance() (gas: 85778)\n[PASS] test_RevertWhen_transferFromEmptyAccount() (gas: 33296)\n[PASS] test_RevertWhen_transferFromExceedsAllowance() (gas: 80739)\n[PASS] test_RevertWhen_transferFromExceedsOwnerBalance() (gas: 138820)\n[PASS] test_RevertWhen_transferFromToZeroAddress() (gas: 83934)\n[PASS] test_RevertWhen_transferFromWithoutAllowance() (gas: 33538)\n[PASS] test_RevertWhen_transferMoreThanSupply() (gas: 33511)\n[PASS] test_RevertWhen_transferToZeroAddress() (gas: 30798)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 99891)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 19850)\n[PASS] test_create2DeployerContractReceivesSupply() (gas: 209844)\n[PASS] test_eachDeploymentIsIndependent() (gas: 38831)\n[PASS] test_infiniteAllowanceIsNotDecreased() (gas: 116018)\n[PASS] test_interfaceIsPlainErc20() (gas: 27683)\n[PASS] test_launchDistributionArrivesExactly() (gas: 289446)\n[PASS] test_metadata() (gas: 50517)\n[PASS] test_noAdminFunctionsExist() (gas: 905806)\n[PASS] test_runtimeHasNoDelegatecallOrSelfdestruct() (gas: 2579525)\n[PASS] test_seedByTransferFromArrivesExactly() (gas: 136136)\n[PASS] test_totalSupplyIsOneBillionWith18Decimals() (gas: 29028)\n[PASS] test_transferFromSpendsAllowance() (gas: 142838)\n[PASS] test_transferMovesBalanceAndEmits() (gas: 79082)\n[PASS] test_transferToSelfKeepsBalance() (gas: 41393)\n[PASS] test_transferWholeSupplySucceeds() (gas: 71750)\n[PASS] test_transferZeroAmountSucceeds() (gas: 53738)\n[PASS] test_wholeSupplyMintedToDeployer() (gas: 31612)\nSuite result: ok. 34 passed; 0 failed; 0 skipped; finished in 27.50ms (130.12ms CPU time)\n\nRan 1 test for test/ConditionalsImd.invariant.t.sol:ConditionalsImdInvariantTest\n[PASS]\nConditionalsImdInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_totalSupplyIsFixed\n ConditionalsImdInvariantTest invariants (runs: 64, calls: 4096, reverts: 0)\n\n╭------------------------+--------------+-------+---------+----------╮\n| Contract               | Selector     | Calls | Reverts | Discards |\n+====================================================================+\n| ConditionalsImdHandler | approve      | 1401  | 0       | 0        |\n|------------------------+--------------+-------+---------+----------|\n| ConditionalsImdHandler | transfer     | 1366  | 0       | 0        |\n|------------------------+--------------+-------+---------+----------|\n| ConditionalsImdHandler | transferFrom | 1329  | 0       | 0        |\n╰------------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5896\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3791\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3666\n  Bound result 0\n  Bound result 6977309697943\n  Bound result 96\n  Bound result 0\n  Bound result 2479\n  Bound result 5729\n  Bound result 0\n  Bound result 118\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4\n  Bound result 96\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 17\n  Bound result 1\n  Bound result 0\n  Bound result 86\n  Bound result 700\n  Bound result 4492\n  Bound result 250\n  Bound result 19\n  Bound result 2624\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 436.80ms (434.40ms CPU time)\n\nRan 2 test suites in 438.37ms (464.30ms CPU time): 35 tests passed, 0 failed, 0 skipped (35 total tests)\n","passed":true},{"durationMs":62,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ConditionalsImd.approve(address,uint256)\",\"ConditionalsImd.transfer(address,uint256)\",\"ConditionalsImd.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":130,\"foundry.toml\":18,\"remappings.txt\":2,\"src/ConditionalsImd.sol\":23,\"test/ConditionalsImd.invariant.t.sol\":83,\"test/ConditionalsImd.t.sol\":447},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":584,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":256,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/ConditionalsImd.sol:18: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"d6ab3ae837c9dbef5375f02a2aa434c2a68e26987b173f7a3f9af1cb6d468e93","verifiedTreeHash":"8501c52282138aa09ec3c76641e34020f27b0d86","verifierVersion":"0.1.0+a6eb4461"}]}