{"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":"1a85f69f-c810-4e58-8d62-094fdaf9a086","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"1e64c92586fd9b229f66e513f91850ab5aeb15249c190f90e1aee1e1134e6d81","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"469e23c26afdcc716358c17b8066d6251d8af2ef96110bc0c6071bf1371a0922","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"eaa048bd612a8ebf5da8976beea13ce25d7a3df093419700c1908cfa3a41efc9","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"9da669e3e5546b0f1efc4a984b7638a1f0498f3e0c687d2191b516b3e8747397","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"c89c778e9a1a619f2fcc6e9bd157a9dc2f3fa2dcee1c458c34fa153d4fb60c84","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"b31fd7b523530f00cee091646501acc4a11b7e7dc1c71ce00a9947e0cd4b2c2b","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":"35d4c78fcf2dfeeb464f65eb573c454dc847721a76bfb3d8e00163831dd8e775","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"4b5365dfc945b8fae5356b717b548e6f8ef8345948275805260a8fc2173230b4","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":"A custom token: Claus (CLAUS).\nToken name: Claus\nToken symbol: CLAUS\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"25febabe524ef5e6ab1fad6bf51b1c6d7a4973f7d7b232a51a36828f1aceee99","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"1a85f69f-c810-4e58-8d62-094fdaf9a086","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1176-claus"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52232","feedbackHash":"7eb0d226d355b3d3d0aa89316ea45ff62e4181eec861eadeecacbb8e486bd360","nodeKey":"audit_economics","submissionHash":"1e64c92586fd9b229f66e513f91850ab5aeb15249c190f90e1aee1e1134e6d81","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51141","feedbackHash":"d9d985a69d4f57eb551e9d251518bc4ef6fe2ccd7b17789b398d6722b14ca906","nodeKey":"audit_flow","submissionHash":"469e23c26afdcc716358c17b8066d6251d8af2ef96110bc0c6071bf1371a0922","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52161","feedbackHash":"285721942bbbe45bcda106c905eb7af80a4bc307b60a2eee6b569864d1579a7e","nodeKey":"audit_judge","submissionHash":"eaa048bd612a8ebf5da8976beea13ce25d7a3df093419700c1908cfa3a41efc9","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51162","feedbackHash":"c68bfeef7350bdc7f8eeb25488f50f45b5a42be12751f593be31d1391594e5e4","nodeKey":"audit_math","submissionHash":"9da669e3e5546b0f1efc4a984b7638a1f0498f3e0c687d2191b516b3e8747397","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52166","feedbackHash":"e0055379ac3aec9cb3e85ecfb38dffc0ccc2f49a16a0f14c8e88de917a357a36","nodeKey":"audit_permissions","submissionHash":"c89c778e9a1a619f2fcc6e9bd157a9dc2f3fa2dcee1c458c34fa153d4fb60c84","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52265","feedbackHash":"7ddfc2b96662efa52373dce912271c4cc5c6bff14adacdd1e43755f3f374367f","nodeKey":"build_contract_project","submissionHash":"b31fd7b523530f00cee091646501acc4a11b7e7dc1c71ce00a9947e0cd4b2c2b","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"50986","feedbackHash":"95250eb501df7e67a9a27015df754dbce6955fafbfa6791e2e4413e01f19c1e8","nodeKey":"manifest","submissionHash":"35d4c78fcf2dfeeb464f65eb573c454dc847721a76bfb3d8e00163831dd8e775","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51229","feedbackHash":"013631cebf5cf09e8e85a6d3ea55e2ad84ad27c01196a2629a9c475efe4280b3","nodeKey":"write_foundry_tests","submissionHash":"4b5365dfc945b8fae5356b717b548e6f8ef8345948275805260a8fc2173230b4","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"a5e0af787ce576f4ef257bf95d0c5d7826de3fb86b56665f97b005faacbce12c","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"82692ab5f7f7e54e","findings":[],"hash":"1e64c92586fd9b229f66e513f91850ab5aeb15249c190f90e1aee1e1134e6d81","nodeId":"8b5ae935-dba2-4238-aa36-3addc8a16ce7","outcome":"completed","summary":"The review is complete. The findings file is written and the working tree is otherwise unchanged.\n\n**Result: no defects found.** The economics, invariant and flow-gap review of `src/ClausToken.sol` turned up nothing to fix. `.imd-findings.json` holds an empty findings list and nine coverage rows, all `holds`.\n\n**What was checked**\n\n- The token is OpenZeppelin 5.4.0 `ERC20` plus a one-time constructor mint and a `decimals()` override. I diffed all five vendored OpenZeppelin files against upstream v5.4.0 and they are byte-identical.\n- Supply conservation: `_mint` runs once in the constructor, `_burn` is never called, and `_transfer` rejects the zero address on both sides. No post-deployment path can change the total of 1e27 or let the sum of balances diverge from it.\n- Launch flows: there is no fee, tax, reflection or exemption logic, so the swarm's share, each claim, the pool seed and both swap directions move exactly the amount requested. Nothing in the token treats the factory, PoolManager or distributor differently from any holder.\n- Economic surface: no external dependency, oracle, price or fee formula exists to manipulate. Zero-address sentinel paths revert with ERC-6093 errors. Zero-value transfers succeed and emit as ERC-20 requires.\n- The aderyn \"large numeric literal\" lead is correct arithmetic and tested, so it is not a defect.\n- The existing suite passed, including the invariant suite at 128,000 calls. A scratch test I wrote for whole-supply hops, exact allowance spending, self-pull without allowance, zero-value transfers from empty accounts and unknown selectors also passed, and I removed it afterwards.\n\n**One observation, not a finding.** The standard ERC-20 approve front-running property applies, as it does to every plain OpenZeppelin token. It is inherent to the requested design and noted in the coverage record rather than reported as a defect.","treeHash":null,"usage":{"cachedInputTokens":583269,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":10737,"runtime":"claude","turns":24,"wallClockMs":227049}},{"artifacts":[],"attempt":1,"bundleHash":"ccd1c2da25fe099356b125928a23be36d821a1545686c1f4600515135062d980","device":"ef5038c1bdac3372","findings":[],"hash":"35d4c78fcf2dfeeb464f65eb573c454dc847721a76bfb3d8e00163831dd8e775","nodeId":"3f19e113-fdc5-4419-bc27-2697acee6559","outcome":"completed","summary":"Done. launch.json is written and verified, and it is the only change in the working tree.\n\n**What the manifest says**\n\n- Token: contract ClausToken, name Claus, symbol CLAUS, 18 decimals, empty constructorArgs, totalSupply 1000000000000000000000000000. That matches the compiled ABI, which has no constructor inputs, and the single mint to msg.sender in the constructor.\n- Contracts: an empty list. The accepted tree holds only the token in src. The deploy script is a manual-deployment helper, not a launch contract.\n- Pool and economics are copied exactly from the launch terms: IMD pair at 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 12500, tick spacing 60, the one-to-one initialPrice, and the requester's economics object verbatim.\n- Notes describe only ClausToken and its behaviour, at 1180 characters.\n\n**Checks run**\n\n- A script asserted the schema keys, string types for uint256 and address fields, lowercase addresses, the contract-name constraint, the supply value and the verbatim economics.\n- `forge build` compiled cleanly and `forge test` passed all 32 tests in 3 suites.\n- `git status` shows launch.json as the sole untracked file. No configuration, lib or workflow file was touched.","treeHash":"d36d44bf3b83d013d07b2976d6317388b2ac5440","usage":{"cachedInputTokens":221183,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":3577,"runtime":"claude","turns":9,"wallClockMs":59713}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"7d454e6cee88c390","findings":[],"hash":"469e23c26afdcc716358c17b8066d6251d8af2ef96110bc0c6071bf1371a0922","nodeId":"0263a478-4e2d-49dc-9c53-438deac035bc","outcome":"completed","summary":"The review is finished and the working tree is clean apart from the required findings file.\n\n**Outcome:** no defects found in the Claus token. The findings file at the repository root holds an empty findings list and seven coverage rows, one for each of the three listed entry points plus four invariant and periphery rows.\n\n**What I checked in my area (Execution Trace, Periphery, First Principles):**\n- Traced `approve`, `transfer` and `transferFrom` through the vendored OpenZeppelin ERC20 to every guard, state write and revert path. Zero addresses revert, insufficient balance or allowance reverts before any write, infinite allowance is not decremented, and a failed balance check does not spend allowance.\n- Verified the five vendored OpenZeppelin files are byte-identical to the upstream v5.4.0 tag by hash, so the base contract the token trusts is the audited one.\n- Confirmed the compiled ABI exposes exactly three state-changing functions with no mint, burn, owner, pause, receive or fallback entry.\n- Deployed the creation code via CREATE2 from an etched factory address in a scratch test, confirmed the whole 1e27 supply lands on that address, and walked the 10/88/2 launch flows plus an approve and transferFrom round trip. All amounts arrived whole and supply stayed fixed. The scratch test was removed afterwards.\n- Checked the static-analysis lead about the large numeric literal. The constant evaluates to exactly one billion times ten to the eighteenth, so it is not a defect.\n- Ran the full repository suite: 32 tests pass, including the invariant suite at 128,000 calls.\n\n**Not covered:** the verifier's protected floor test imports Uniswap v4 sources that are not in this tree, so I did not run it directly. The token has no fee, hook or exemption logic, and the equivalent flows passed in the scratch test, so I expect it to pass.","treeHash":null,"usage":{"cachedInputTokens":641438,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":9504,"runtime":"claude","turns":27,"wallClockMs":142517}},{"artifacts":[],"attempt":1,"bundleHash":"53e4fda399dd3f3f6c5f4e6b3ed965f8846e2f6864dc1236ca3f3ec8d38b57fd","device":"4199bf0c80a9d6cf","findings":[],"hash":"4b5365dfc945b8fae5356b717b548e6f8ef8345948275805260a8fc2173230b4","nodeId":"12d9d89b-99eb-4cf1-9af6-b5c8ffe4d2f6","outcome":"completed","summary":"The findings file is in place and excluded by the repository's own exclude list, as intended. The work is complete.\n\n**Outcome.** `forge test` passes with 79 tests across 5 suites, up from 32. I found no defect in the token, so `.imd-findings.json` reports an empty findings list. The vendored OpenZeppelin files are byte-identical to upstream v5.4.0, and the token adds only a name, symbol, decimals override and a one-time mint on top of them.\n\n**What I added, both under `test/`:**\n\n- `ClausToken.edges.t.sol` holds 46 adversarial unit and fuzz tests that the existing suite did not cover. It deploys through CREATE2 from a factory contract the way the launch does, and checks the predicted address and that trailing constructor data changes nothing. It pins balance boundaries (exactly the supply, one wei over, max uint), the zero address on every side of transfer, approve and transferFrom, an owner spending from itself with and without self-approval, the max-minus-one allowance boundary, allowance survival across plain transfers, event counts on transferFrom, inert contract and self-address recipients, unknown selectors from fuzzed callers, truncated calldata, ether on every entry point, and the exact number of storage writes each call may make with no outgoing calls. Fuzz properties cover round trips, split-then-merge, self-transfer identity, fan-out conservation, and reverts beyond allowance or balance.\n- `ClausToken.ledger.invariant.t.sol` is a second invariant suite that runs with fail-on-revert. The handler keeps a ghost ledger of every accepted transfer and allowance, grows the holder set with fuzzed strangers up to a cap, and includes the token's own address as a holder. Five handler paths exercise failure cases and assert the revert plus unchanged state inside the handler. Nine invariants check the fixed supply, that tracked holders sum to the supply, balances equal received minus sent, allowances equal granted minus spent, strangers hold no allowance, the zero address holds nothing, no ether is held, and the code hash and metadata never change. Run counts are set with inline config so foundry.toml is untouched.\n\n**Grounding.** A scratch mutant that skims one wei per transfer failed the ledger invariant on the first drifted balance, so the harness is live rather than vacuous. The scratch directory has been removed.\n\n**One behaviour worth knowing, not a defect.** The token accepts itself as a transfer recipient, and with no admin or rescue function those tokens stay there permanently. That is standard ERC-20 behaviour and consistent with the stated design of having no privileged powers, so it is documented in a test rather than reported.","treeHash":"0e3b3208ac7e39383dac22f543dcacfa202beef5","usage":{"cachedInputTokens":1475558,"inputTokens":546,"model":"claude-fable-5-1","outputTokens":41041,"runtime":"claude","turns":40,"wallClockMs":539499}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"771f83f312eace21","findings":[],"hash":"9da669e3e5546b0f1efc4a984b7638a1f0498f3e0c687d2191b516b3e8747397","nodeId":"c91d725f-551a-4549-af0e-caf80d65edc4","outcome":"completed","summary":"The review is complete and the findings file is written. No defects were found in the assigned area.\n\n**Result:** `.imd-findings.json` holds an empty findings list and eight coverage rows, one for each of the three ABI entry points plus five invariants and boundaries I checked. The working tree is otherwise unchanged. The scratch test directory was removed after use.\n\n**What I checked, against the Math Precision, Boundary and Numerical Gap guides:**\n\n- **Math.** The only arithmetic the token adds is the supply constant at `src/ClausToken.sol:21`. It evaluates to 1e27 at compile time with checked arithmetic, uses a widening cast only, and is the single value ever minted. The aderyn large-literal lead resolves to this constant and is not a defect. All other arithmetic is OpenZeppelin's `_update`, whose unchecked blocks are bounded by the prior balance check and by a supply far below the type limit.\n- **Boundary.** The token makes no external calls, has no payable, receive or fallback function, decodes no bytes, and its only sentinel branches are the zero-address reverts. I traced both sides of each. Scratch tests confirmed 1 wei, zero, exact-supply, supply-plus-one and max-uint inputs, self-transfer through transferFrom, max and max-minus-one allowances, and that sending value to any selector reverts.\n- **Numerical gap.** There is no division, fee, rounding or scale conversion, so no seam between precision, invariant and boundary exists. Fuzzed transfer chains kept the balance sum exactly equal to total supply.\n- **Dependency integrity.** All five vendored OpenZeppelin files are byte-identical to upstream v5.4.0, so the inherited behaviour is the audited library's.\n\n**Tooling that ran:** the project's own suite of 32 tests including the invariant suite, plus 13 scratch tests. The one scratch failure was a wrong expectation on my side about which custom error fires for a zero-value transferFrom from the zero address. The call reverts in every case.\n\n**Outside the area, nothing severe surfaced.** The token has no privileged functions, no exemptions and no transfer-time logic, so the launch flows, pool seed and swaps move exact amounts as the protected test requires.","treeHash":null,"usage":{"cachedInputTokens":451576,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":10473,"runtime":"claude","turns":22,"wallClockMs":160403}},{"artifacts":[],"attempt":1,"bundleHash":"029d9037f94df724cb85d42a4ec298618e074d6c28b0d52b2c05e95ff35f0c51","device":"8db4eebdd7bd2744","findings":[],"hash":"b31fd7b523530f00cee091646501acc4a11b7e7dc1c71ce00a9947e0cd4b2c2b","nodeId":"3345c5bf-1f5c-4aa7-b202-dc113608316a","outcome":"completed","summary":"The Claus token is complete, committed on main, and verified from a fresh clone of the commit.\n\n**What was delivered**\n\n- `src/ClausToken.sol`: contract identifier `ClausToken`, name \"Claus\", symbol \"CLAUS\", 18 decimals. The constructor takes no arguments and mints the full 1,000,000,000 × 10^18 supply once to the deployer. It is OpenZeppelin 5.4.0 ERC20 with nothing else: no owner, mint, burn, pause, blocklist, fee or external call.\n- `script/DeployClausToken.s.sol`: a deploy function with constants that the tests call directly, plus a broadcast wrapper. No environment variables are read in the deploy path.\n- Tests in `test/`: 32 tests across unit, fuzz and invariant suites. They cover metadata, the one-time mint event, launch flows arriving whole, transfer and allowance success paths, revert paths with typed errors, rejection of every common admin or freeze selector from both a stranger and the deployer, no delegatecall or selfdestruct in the runtime, and supply conservation under 128,000 random handler calls.\n- `README.md`: assumptions, manifest values, deployment parameters, after-launch section, operational responsibilities and the security checklist pass.\n- Vendored dependencies as plain files under `lib/`: forge-std 1.17.0 sources and the five OpenZeppelin files the ERC20 needs. No git submodules.\n\n**Checks run**\n\n| Check | Result |\n| --- | --- |\n| forge build with solc 0.8.26 | pass |\n| forge test with an empty environment | 32 passed, 0 failed |\n| forge fmt --check | pass |\n| Fresh clone of the commit, same three checks | pass |\n\n`foundry.toml` sets `bytecode_hash = \"none\"` and disables CBOR metadata, so the creation bytecode carries no metadata trailer. No launch.json was written. Slither and Mythril were not run, and the README says so.\n\n**Open items for the requester**\n\nNone required for the launch. If burns or any admin power are wanted later, that would be a new contract rather than a change to this one.","treeHash":"c306c442c1b934f9252d72d95dce210710ba34dd","usage":{"cachedInputTokens":746055,"inputTokens":450,"model":"claude-fable-5-1","outputTokens":21977,"runtime":"claude","turns":28,"wallClockMs":285797}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"7f1dec5ffcbde1d8","findings":[],"hash":"c89c778e9a1a619f2fcc6e9bd157a9dc2f3fa2dcee1c458c34fa153d4fb60c84","nodeId":"eb783577-97ff-4ee2-b536-6e6aa07e0e49","outcome":"completed","summary":"The review is complete. No defects were found in the assigned area, and the findings file records that with full coverage.\n\n**Outcome.** `.imd-findings.json` holds an empty findings list and seven coverage rows, one for each of the three listed entry points plus the constructor and three invariants, all marked `holds`. No repository file was changed. The scratch test I used was removed and the working tree is clean apart from the findings file.\n\n**What was checked, per guide:**\n\n- **Access Control.** The permission map is empty. The contract has no modifiers, roles, inline sender checks, initializer, owner, mint, burn, pause or upgrade path. The compiled ABI exposes only the standard ERC-20 functions plus two view constants. There is no fallback or receive, and the deployer, once tokens leave it, cannot pull from any holder without allowance. I confirmed that with a test that got the expected insufficient-allowance revert.\n- **Trust Gap.** The one place a backdoor could hide in a \"plain\" token is the vendored library. The five OpenZeppelin files hash identically to the upstream v5.4.0 tag, and `_msgSender` is plain `msg.sender`. No actor class is treated differently from any other, so no seam between access, economics and asymmetry exists.\n- **Asymmetry.** The approve/transferFrom pair and the transfer/transferFrom pair share the same zero-address and balance guards, the only storage writers are the inherited ones, and the infinite-allowance boundary behaves as documented at both `max` and `max - 1`. The runtime bytecode scan found no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n\n**Static-analysis leads.** Slither reported nothing. The aderyn large-numeric-literal note on `TOTAL_SUPPLY` is cosmetic; the constant evaluates to exactly 10^27 and matches the manifest supply.\n\n**Not a finding, but worth the author knowing.** The standard ERC-20 approve front-running race exists here as it does in every OpenZeppelin ERC20. The README already states standard semantics, so I did not report it as a defect.","treeHash":null,"usage":{"cachedInputTokens":442870,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":8870,"runtime":"claude","turns":21,"wallClockMs":152090}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"ca075d17c94a854b","findings":[],"hash":"eaa048bd612a8ebf5da8976beea13ce25d7a3df093419700c1908cfa3a41efc9","nodeId":"4e22b19f-326b-4ebc-90e7-ff2cd8690632","outcome":"completed","summary":"The review is complete. No defects were found, and `.imd-findings.json` holds an empty findings list with a full coverage record.\n\n**What I checked**\n\n- The token is OpenZeppelin v5.4.0 ERC20 with only a name, symbol, 18 decimals and a one-time mint of the manifest supply to the deployer. There is no owner, minter, pause, blocklist, fee, burn or hook.\n- All three listed entry points are unmodified library code. I traced the zero-address, balance and allowance revert paths for each and marked them as holding.\n- Deployability holds under the factory's CREATE2 model. The constructor takes no arguments, matching the empty constructorArgs in launch.json, and the manifest supply and decimals match the contract.\n- The runtime bytecode contains no DELEGATECALL, CALLCODE or SELFDESTRUCT, and both runtime and creation sizes are far below the protocol limits.\n- Dependencies are committed as ordinary files with no git submodules, so an offline build succeeds.\n- The build passed and all 79 existing tests passed, including the fuzz and invariant suites.\n\n**Specialist and tool input**\n\nAll four specialists and the independent tester reported nothing, so there was nothing to reproduce or merge. Slither reported nothing. The single aderyn note is the compile-time supply constant on line 21, which evaluates exactly to the manifest supply and is not a defect.\n\n**What I could not run**\n\nThe protected token test imports Uniswap v4 core and launch helper sources that are not in this tree, so it cannot execute here. Its individual assertions, supply to factory, decimals, whole-amount transfers, no supply growth, no privileged balance moves, and the opcode scan, were each verified by hand against the code and the existing tests.\n\nNo files other than `.imd-findings.json` were created or changed.","treeHash":null,"usage":{"cachedInputTokens":238664,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":4567,"runtime":"claude","turns":6,"wallClockMs":103310}}],"verification":[{"checks":[{"durationMs":1255,"exitCode":0,"name":"build","output":"Compiling 30 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.13s\nCompiler run successful!\n","passed":true},{"durationMs":9573,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/DeployClausToken.t.sol:DeployClausTokenTest\n[PASS] test_deployIsRepeatableAndEachDeploymentIsIndependent() (gas: 2315577)\n[PASS] test_deployMintsSupplyToTheDeployingAccount() (gas: 1787146)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 5.08ms (582.14µs CPU time)\n\nRan 29 tests for test/ClausToken.t.sol:ClausTokenTest\n[PASS] testFuzz_transferAboveBalanceReverts(uint256,uint256) (runs: 256, μ: 92199, ~: 92623)\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 86473, ~: 86664)\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256,uint256) (runs: 256, μ: 195441, ~: 198086)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 87719)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 60172)\n[PASS] test_approveZeroSpenderReverts() (gas: 30751)\n[PASS] test_constructorEmitsASingleMintTransfer() (gas: 239819)\n[PASS] test_constructorTakesNoArgumentsAndCallsNoContract() (gas: 648180)\n[PASS] test_deploymentFromAnEoaMintsToThatEoa() (gas: 11802)\n[PASS] test_launchFlowsArriveWhole() (gas: 280442)\n[PASS] test_metadata() (gas: 34532)\n[PASS] test_noCommonAdminCallIncreasesSupply() (gas: 793027)\n[PASS] test_noPrivilegedHandMovesOrFreezesAHolder() (gas: 471162)\n[PASS] test_plainEtherIsRejected() (gas: 61400)\n[PASS] test_runtimeCodeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 875893)\n[PASS] test_supplyIsOneBillionWithEighteenDecimals() (gas: 20644)\n[PASS] test_transferFromEmptyAccountReverts() (gas: 33222)\n[PASS] test_transferFromRevertsWhenAllowanceTooSmall() (gas: 138694)\n[PASS] test_transferFromRevertsWhenBalanceTooSmallDespiteAllowance() (gas: 148693)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 95417)\n[PASS] test_transferFromSpendsAllowance() (gas: 199152)\n[PASS] test_transferFromWithInfiniteAllowanceDoesNotDecrement() (gas: 170958)\n[PASS] test_transferMovesExactAmountAndEmits() (gas: 88126)\n[PASS] test_transferOfWholeBalanceEmptiesSender() (gas: 123436)\n[PASS] test_transferOfZeroSucceeds() (gas: 40015)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 102862)\n[PASS] test_transferToSelfKeepsBalance() (gas: 96038)\n[PASS] test_transferToZeroAddressReverts() (gas: 88794)\n[PASS] test_wholeSupplyIsMintedOnceToTheDeployer() (gas: 25286)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 19.33ms (46.50ms CPU time)\n\nRan 1 test for test/ClausToken.invariant.t.sol:ClausTokenInvariantTest\n[PASS]\nClausTokenInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_metadataIsFixed\n[PASS] invariant_totalSupplyNeverChanges\n ClausTokenInvariantTest invariants (runs: 256, calls: 128000, reverts: 0)\n\n╭-------------------+--------------+-------+---------+----------╮\n| Contract          | Selector     | Calls | Reverts | Discards |\n+===============================================================+\n| ClausTokenHandler | approve      | 32231 | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ClausTokenHandler | poke         | 32013 | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ClausTokenHandler | transfer     | 31778 | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ClausTokenHandler | transferFrom | 31978 | 0       | 0        |\n╰-------------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 9.46s (9.46s CPU time)\n\nRan 3 test suites in 9.47s (9.49s CPU time): 32 tests passed, 0 failed, 0 skipped (32 total tests)\n","passed":true},{"durationMs":33,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ClausToken.approve(address,uint256)\",\"ClausToken.transfer(address,uint256)\",\"ClausToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":6,\"README.md\":131,\"foundry.toml\":21,\"launch.json\":24,\"remappings.txt\":2,\"script/DeployClausToken.s.sol\":37,\"src/ClausToken.sol\":33,\"test/ClausToken.invariant.t.sol\":92,\"test/ClausToken.t.sol\":389,\"test/DeployClausToken.t.sol\":31},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"35d4c78fcf2dfeeb464f65eb573c454dc847721a76bfb3d8e00163831dd8e775","verifiedTreeHash":"d36d44bf3b83d013d07b2976d6317388b2ac5440","verifierVersion":"0.1.0+c4d32abc"},{"checks":[{"durationMs":2300,"exitCode":0,"name":"build","output":"Compiling 32 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.19s\nCompiler run successful!\n","passed":true},{"durationMs":11476,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/DeployClausToken.t.sol:DeployClausTokenTest\n[PASS] test_deployIsRepeatableAndEachDeploymentIsIndependent() (gas: 2315577)\n[PASS] test_deployMintsSupplyToTheDeployingAccount() (gas: 1787146)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 957.80µs (785.31µs CPU time)\n\nRan 29 tests for test/ClausToken.t.sol:ClausTokenTest\n[PASS] testFuzz_transferAboveBalanceReverts(uint256,uint256) (runs: 256, μ: 92156, ~: 92616)\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 86641, ~: 86700)\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256,uint256) (runs: 256, μ: 195491, ~: 198152)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 87719)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 60172)\n[PASS] test_approveZeroSpenderReverts() (gas: 30751)\n[PASS] test_constructorEmitsASingleMintTransfer() (gas: 239819)\n[PASS] test_constructorTakesNoArgumentsAndCallsNoContract() (gas: 648180)\n[PASS] test_deploymentFromAnEoaMintsToThatEoa() (gas: 11802)\n[PASS] test_launchFlowsArriveWhole() (gas: 280442)\n[PASS] test_metadata() (gas: 34532)\n[PASS] test_noCommonAdminCallIncreasesSupply() (gas: 793027)\n[PASS] test_noPrivilegedHandMovesOrFreezesAHolder() (gas: 471162)\n[PASS] test_plainEtherIsRejected() (gas: 61400)\n[PASS] test_runtimeCodeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 875893)\n[PASS] test_supplyIsOneBillionWithEighteenDecimals() (gas: 20644)\n[PASS] test_transferFromEmptyAccountReverts() (gas: 33222)\n[PASS] test_transferFromRevertsWhenAllowanceTooSmall() (gas: 138694)\n[PASS] test_transferFromRevertsWhenBalanceTooSmallDespiteAllowance() (gas: 148693)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 95417)\n[PASS] test_transferFromSpendsAllowance() (gas: 199152)\n[PASS] test_transferFromWithInfiniteAllowanceDoesNotDecrement() (gas: 170958)\n[PASS] test_transferMovesExactAmountAndEmits() (gas: 88126)\n[PASS] test_transferOfWholeBalanceEmptiesSender() (gas: 123436)\n[PASS] test_transferOfZeroSucceeds() (gas: 40015)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 102862)\n[PASS] test_transferToSelfKeepsBalance() (gas: 96038)\n[PASS] test_transferToZeroAddressReverts() (gas: 88794)\n[PASS] test_wholeSupplyIsMintedOnceToTheDeployer() (gas: 25286)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 90.85ms (218.30ms CPU time)\n\nRan 46 tests for test/ClausToken.edges.t.sol:ClausTokenEdgesTest\n[PASS] testFuzz_anyAddressWithoutBalanceCannotSendOneWei(address,address) (runs: 1000, μ: 36768, ~: 36836)\n[PASS] testFuzz_approveThenTransferFromRoundTrip(uint256,uint256) (runs: 1000, μ: 213656, ~: 216069)\n[PASS] testFuzz_fanOutDeliversExactlyWhatWasSent(uint8,uint256) (runs: 1000, μ: 760879, ~: 534261)\n[PASS] testFuzz_infiniteAllowanceStillCannotExceedBalance(uint256,uint256) (runs: 1000, μ: 146694, ~: 147385)\n[PASS] testFuzz_splitThenMergeIsTheSameAsOneTransfer(uint256,uint256) (runs: 1000, μ: 158999, ~: 160041)\n[PASS] testFuzz_transferFromBeyondAllowanceReverts(uint256,uint256,uint256) (runs: 1000, μ: 151868, ~: 152580)\n[PASS] testFuzz_transferRoundTripRestoresBothBalances(uint256,uint256) (runs: 1000, μ: 165900, ~: 167281)\n[PASS] testFuzz_transferToSelfIsAnIdentity(uint256,uint256) (runs: 1000, μ: 96889, ~: 97218)\n[PASS] testFuzz_unknownSelectorReverts(bytes4,bytes,uint256) (runs: 1000, μ: 57640, ~: 58105)\n[PASS] test_allowanceDoesNotGrantBalanceAndIsNotConsumedWhenBalanceIsZero() (gas: 90720)\n[PASS] test_allowanceOfMaxMinusOneIsFiniteAndIsDecremented() (gas: 174697)\n[PASS] test_approvalIsDirectionalAndPerSpender() (gas: 157270)\n[PASS] test_approvalSurvivesTheOwnersOwnTransfers() (gas: 207295)\n[PASS] test_approveFromTheZeroAddressReverts() (gas: 35135)\n[PASS] test_approveIsIdempotentAndResettableToZero() (gas: 153680)\n[PASS] test_approveWritesExactlyOneSlot() (gas: 63464)\n[PASS] test_create2DeploymentLandsAtThePredictedAddressAndMintsToTheFactory() (gas: 23529)\n[PASS] test_creationCodeHasNoConstructorArguments() (gas: 646499)\n[PASS] test_emptyCalldataReverts() (gas: 47808)\n[PASS] test_factoryCanTransferExactlyTheWholeSupply() (gas: 70826)\n[PASS] test_factoryCannotTransferOneWeiMoreThanTheSupply() (gas: 40019)\n[PASS] test_knownSelectorsWithTruncatedArgumentsRevert() (gas: 70953)\n[PASS] test_metadataIsExactBytes() (gas: 51778)\n[PASS] test_metadataViewsAreCallableFromAnyoneIncludingZeroAddress() (gas: 57973)\n[PASS] test_nothingCanBeMovedOutOfTheZeroAddressWithAnInfiniteApprovalTrick() (gas: 40564)\n[PASS] test_ownerCanTransferFromItselfAfterSelfApproval() (gas: 194947)\n[PASS] test_ownerCannotTransferFromItselfWithoutApprovingItself() (gas: 95533)\n[PASS] test_revertedTransferWritesNothing() (gas: 99585)\n[PASS] test_selfTransferOfMoreThanBalanceReverts() (gas: 95250)\n[PASS] test_selfTransferOfZeroFromEmptyAccountSucceeds() (gas: 38021)\n[PASS] test_selfTransferWritesTwoSlotsWithNoNetEffect() (gas: 107806)\n[PASS] test_spendingTheExactAllowanceLeavesZeroAndTheNextWeiReverts() (gas: 206657)\n[PASS] test_stateChangingCallsRejectEther() (gas: 111035)\n[PASS] test_transferFromEmitsOnlyOneTransferAndNoApprovalEvent() (gas: 174633)\n[PASS] test_transferFromOfZeroWithNoAllowanceSucceedsAndMovesNothing() (gas: 116590)\n[PASS] test_transferFromTheZeroAddressAsSpenderReverts() (gas: 60690)\n[PASS] test_transferFromTheZeroAddressRevertsEvenForZeroAmount() (gas: 30833)\n[PASS] test_transferFromToTheZeroAddressRevertsAndKeepsTheAllowance() (gas: 153894)\n[PASS] test_transferFromWritesThreeSlotsOrTwoWithInfiniteAllowance() (gas: 265529)\n[PASS] test_transferOfMaxUintRevertsWithoutWrapping() (gas: 47369)\n[PASS] test_transferOfOneWeiMoreThanBalanceRevertsAfterASuccessfulOne() (gas: 177822)\n[PASS] test_transferOfZeroToTheZeroAddressReverts() (gas: 30813)\n[PASS] test_transferToAContractWithoutReceiveSucceeds() (gas: 153432)\n[PASS] test_transferToTheTokenItselfSucceedsAndIsCountedInSupply() (gas: 128877)\n[PASS] test_transferWritesExactlyTwoSlotsAndCallsNothing() (gas: 130139)\n[PASS] test_twoDeploymentsAreIndependentAndByteIdentical() (gas: 696302)\nSuite result: ok. 46 passed; 0 failed; 0 skipped; finished in 105.43ms (803.36ms CPU time)\n\nRan 1 test for test/ClausToken.invariant.t.sol:ClausTokenInvariantTest\n[PASS]\nClausTokenInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_metadataIsFixed\n[PASS] invariant_totalSupplyNeverChanges\n ClausTokenInvariantTest invariants (runs: 256, calls: 128000, reverts: 0)\n\n╭-------------------+--------------+-------+---------+----------╮\n| Contract          | Selector     | Calls | Reverts | Discards |\n+===============================================================+\n| ClausTokenHandler | approve      | 32115 | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ClausTokenHandler | poke         | 31936 | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ClausTokenHandler | transfer     | 31912 | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ClausTokenHandler | transferFrom | 32037 | 0       | 0        |\n╰-------------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 10.21s (10.21s CPU time)\n\nRan 1 test for test/ClausToken.ledger.invariant.t.sol:ClausTokenLedgerInvariantTest\n[PASS]\nClausTokenLedgerInvariantTest invariants:\n[PASS] invariant_codeAndMetadataNeverChange\n[PASS] invariant_everyAllowanceMatchesWhatWasGrantedLessWhatWasSpent\n[PASS] invariant_everyBalanceMatchesTheGhostLedger\n[PASS] invariant_everyCallWasAcceptedRejectedOrSkipped\n[PASS] invariant_noSingleHolderExceedsTheSupplyAndNoEtherIsHeld\n[PASS] invariant_strangersHoldNoAllowanceFromAnyone\n[PASS] invariant_totalSupplyIsTheMintedConstant\n[PASS] invariant_trackedHoldersAccountForTheWholeSupply\n[PASS] invariant_zeroAddressHoldsNothing\n ClausTokenLedgerInvariantTest invariants (runs: 128, calls: 12800, reverts: 0)\n\n╭---------------+----------------------+-------+---------+----------╮\n| Contract      | Selector             | Calls | Reverts | Discards |\n+===================================================================+\n| LedgerHandler | approve              | 1332  | 0       | 0        |\n|---------------+----------------------+-------+---------+----------|\n| LedgerHandler | approveZeroSpender   | 1272  | 0       | 0        |\n|---------------+----------------------+-------+---------+----------|\n| LedgerHandler | pullWithoutAllowance | 1259  | 0       | 0        |\n|---------------+----------------------+-------+---------+----------|\n| LedgerHandler | sendEther            | 1218  | 0       | 0        |\n|---------------+----------------------+-------+---------+----------|\n| LedgerHandler | transfer             | 1303  | 0       | 0        |\n|---------------+----------------------+-------+---------+----------|\n| LedgerHandler | transferFrom         | 1239  | 0       | 0        |\n|---------------+----------------------+-------+---------+----------|\n| LedgerHandler | transferFromTooMuch  | 1296  | 0       | 0        |\n|---------------+----------------------+-------+---------+----------|\n| LedgerHandler | transferToZero       | 1321  | 0       | 0        |\n|---------------+----------------------+-------+---------+----------|\n| LedgerHandler | transferTooMuch      | 1266  | 0       | 0        |\n|---------------+----------------------+-------+---------+----------|\n| LedgerHandler | unknownSelector      | 1294  | 0       | 0        |\n╰---------------+----------------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 11.38s (11.38s CPU time)\n\nRan 5 test suites in 11.38s (21.79s CPU time): 79 tests passed, 0 failed, 0 skipped (79 total tests)\n","passed":true},{"durationMs":34,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ClausToken.approve(address,uint256)\",\"ClausToken.transfer(address,uint256)\",\"ClausToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":6,\"README.md\":131,\"foundry.toml\":21,\"remappings.txt\":2,\"script/DeployClausToken.s.sol\":37,\"src/ClausToken.sol\":33,\"test/ClausToken.edges.t.sol\":620,\"test/ClausToken.invariant.t.sol\":92,\"test/ClausToken.ledger.invariant.t.sol\":403,\"test/ClausToken.t.sol\":389,\"test/DeployClausToken.t.sol\":31},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"4b5365dfc945b8fae5356b717b548e6f8ef8345948275805260a8fc2173230b4","verifiedTreeHash":"0e3b3208ac7e39383dac22f543dcacfa202beef5","verifierVersion":"0.1.0+c4d32abc"},{"checks":[{"durationMs":1308,"exitCode":0,"name":"build","output":"Compiling 30 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.21s\nCompiler run successful!\n","passed":true},{"durationMs":9603,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/DeployClausToken.t.sol:DeployClausTokenTest\n[PASS] test_deployIsRepeatableAndEachDeploymentIsIndependent() (gas: 2315577)\n[PASS] test_deployMintsSupplyToTheDeployingAccount() (gas: 1787146)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 476.13µs (392.11µs CPU time)\n\nRan 29 tests for test/ClausToken.t.sol:ClausTokenTest\n[PASS] testFuzz_transferAboveBalanceReverts(uint256,uint256) (runs: 256, μ: 92158, ~: 92605)\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 86294, ~: 86676)\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256,uint256) (runs: 256, μ: 194418, ~: 198044)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 87719)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 60172)\n[PASS] test_approveZeroSpenderReverts() (gas: 30751)\n[PASS] test_constructorEmitsASingleMintTransfer() (gas: 239819)\n[PASS] test_constructorTakesNoArgumentsAndCallsNoContract() (gas: 648180)\n[PASS] test_deploymentFromAnEoaMintsToThatEoa() (gas: 11802)\n[PASS] test_launchFlowsArriveWhole() (gas: 280442)\n[PASS] test_metadata() (gas: 34532)\n[PASS] test_noCommonAdminCallIncreasesSupply() (gas: 793027)\n[PASS] test_noPrivilegedHandMovesOrFreezesAHolder() (gas: 471162)\n[PASS] test_plainEtherIsRejected() (gas: 61400)\n[PASS] test_runtimeCodeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 875893)\n[PASS] test_supplyIsOneBillionWithEighteenDecimals() (gas: 20644)\n[PASS] test_transferFromEmptyAccountReverts() (gas: 33222)\n[PASS] test_transferFromRevertsWhenAllowanceTooSmall() (gas: 138694)\n[PASS] test_transferFromRevertsWhenBalanceTooSmallDespiteAllowance() (gas: 148693)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 95417)\n[PASS] test_transferFromSpendsAllowance() (gas: 199152)\n[PASS] test_transferFromWithInfiniteAllowanceDoesNotDecrement() (gas: 170958)\n[PASS] test_transferMovesExactAmountAndEmits() (gas: 88126)\n[PASS] test_transferOfWholeBalanceEmptiesSender() (gas: 123436)\n[PASS] test_transferOfZeroSucceeds() (gas: 40015)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 102862)\n[PASS] test_transferToSelfKeepsBalance() (gas: 96038)\n[PASS] test_transferToZeroAddressReverts() (gas: 88794)\n[PASS] test_wholeSupplyIsMintedOnceToTheDeployer() (gas: 25286)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 7.90ms (28.13ms CPU time)\n\nRan 1 test for test/ClausToken.invariant.t.sol:ClausTokenInvariantTest\n[PASS]\nClausTokenInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_metadataIsFixed\n[PASS] invariant_totalSupplyNeverChanges\n ClausTokenInvariantTest invariants (runs: 256, calls: 128000, reverts: 0)\n\n╭-------------------+--------------+-------+---------+----------╮\n| Contract          | Selector     | Calls | Reverts | Discards |\n+===============================================================+\n| ClausTokenHandler | approve      | 32114 | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ClausTokenHandler | poke         | 32040 | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ClausTokenHandler | transfer     | 31774 | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ClausTokenHandler | transferFrom | 32072 | 0       | 0        |\n╰-------------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 9.51s (9.51s CPU time)\n\nRan 3 test suites in 9.51s (9.52s CPU time): 32 tests passed, 0 failed, 0 skipped (32 total tests)\n","passed":true},{"durationMs":49,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ClausToken.approve(address,uint256)\",\"ClausToken.transfer(address,uint256)\",\"ClausToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":6,\"README.md\":131,\"foundry.toml\":21,\"remappings.txt\":2,\"script/DeployClausToken.s.sol\":37,\"src/ClausToken.sol\":33,\"test/ClausToken.invariant.t.sol\":92,\"test/ClausToken.t.sol\":389,\"test/DeployClausToken.t.sol\":31},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":437,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":235,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/ClausToken.sol:21: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"b31fd7b523530f00cee091646501acc4a11b7e7dc1c71ce00a9947e0cd4b2c2b","verifiedTreeHash":"c306c442c1b934f9252d72d95dce210710ba34dd","verifierVersion":"0.1.0+c4d32abc"}]}