{"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":"a661d5ef-85a0-4635-b55c-a59c9d676477","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"693980bd8e75d84fd51d17d5956ff2517d4bff25f20888c5f2d512cb2f1f21c2","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":"12b03e26e9629352c7f822df30b20619625312d08eab08b423bc3e6533db2c3d","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":"5752ae110038ca6b2aade3d1b113812012242942da23423244ebb38f9ec6aca2","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":"6f2d241eee801b1b410796cf0c1a09bc224586141d1b8093f9d9a3b2daed43bc","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":"7cdf37f6c7ef4fd97810f6549853b9c43e8c998b650769348c9d5e67357c7684","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":"908ccadec76fa814f62e30a32f4a37f5f4e826ff55350f999b19c8ee236abe66","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"6b8d2c2ebd3301cff2be8edb1e1cc6ba65c858c02fe7247be81722b969842265","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"6b8d2c2ebd3301cff2be8edb1e1cc6ba65c858c02fe7247be81722b969842265","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"1d12cb00706f3175f669e9a507a0063ec1b317376d92376e3ab1b297a5d30f0b","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"aaad51c879a787a09dce170dfed58dcf1e4852beafbd57a6edea646b8d87012b","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: Prediction Markets Run by AI Agents (VERDICT).\nToken name: Prediction Markets Run by AI Agents\nToken symbol: VERDICT\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"acc1b48776d4206d9f8614a316952db832f5b8738d0e0d97b34426e2072d34eb","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"a661d5ef-85a0-4635-b55c-a59c9d676477","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1666-prediction-markets-run-by-ai-agents"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52481","feedbackHash":"ec7c7264b2216f3c9f7c25f126025411d6c42088400fab8513404adfadf9028c","nodeKey":"audit_economics","submissionHash":"693980bd8e75d84fd51d17d5956ff2517d4bff25f20888c5f2d512cb2f1f21c2","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52149","feedbackHash":"c1ce2abf96bfd8ba471707636e7832d1e8272329134ba462fdf699e98b917704","nodeKey":"audit_flow","submissionHash":"12b03e26e9629352c7f822df30b20619625312d08eab08b423bc3e6533db2c3d","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52263","feedbackHash":"d5c319759ebda6b4204f8cd655f6fe53f50414d08de353796514bc7237753290","nodeKey":"audit_judge","submissionHash":"5752ae110038ca6b2aade3d1b113812012242942da23423244ebb38f9ec6aca2","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51445","feedbackHash":"4740b82da749535644adecf520005c1ce66bb344d602f40dd0b54ac11498d619","nodeKey":"audit_math","submissionHash":"6f2d241eee801b1b410796cf0c1a09bc224586141d1b8093f9d9a3b2daed43bc","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52159","feedbackHash":"514147378c2504997e38912575960bd150c2943cda4d5644e5a3f7d17897b6fa","nodeKey":"audit_permissions","submissionHash":"7cdf37f6c7ef4fd97810f6549853b9c43e8c998b650769348c9d5e67357c7684","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51512","feedbackHash":"39f6fc8e0f9d72c4c78b55790dad73ba4079ba6e1fc45552a14454db90fe4653","nodeKey":"build_contract_project","submissionHash":"908ccadec76fa814f62e30a32f4a37f5f4e826ff55350f999b19c8ee236abe66","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52179","feedbackHash":"9fc8d1825402007ab7f1b9bc548a20b64e1cba357690eb6c4744e0804e72e5b9","nodeKey":"manifest","submissionHash":"1d12cb00706f3175f669e9a507a0063ec1b317376d92376e3ab1b297a5d30f0b","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51146","feedbackHash":"b3a99359bfe68c3be5398c824016a44fc001bc479834e562029f90e5c2e7c7fc","nodeKey":"write_foundry_tests","submissionHash":"aaad51c879a787a09dce170dfed58dcf1e4852beafbd57a6edea646b8d87012b","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"543d9335bc6abceb689db887ba322e68416328dc0e00bd2a426dc879abff54a3","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"af1843f371022d4a","findings":[],"hash":"12b03e26e9629352c7f822df30b20619625312d08eab08b423bc3e6533db2c3d","nodeId":"ec9bb837-ccf4-4f1a-9e33-bd9db2b2a451","outcome":"completed","summary":"The review is complete and `.imd-findings.json` holds the result: no defects, with a nine-row coverage record.\n\n**What I reviewed.** VerdictToken is OpenZeppelin v5.4.0 `ERC20` plus a constructor that mints the full supply to `msg.sender` and emits one event. I applied the Senior Auditor's Mindset and the Execution Trace, Periphery and First Principles guides from the Pashov reference, and the Trail of Bits entry-point inventory.\n\n**Findings:** none. Every failure mode in the three guides either has no surface here or was traced and holds:\n\n- **Execution trace.** The only state-changing entry points are approve, transfer and transferFrom. There are no external calls, callbacks, encoding, sentinels or multi-step operations. Self-transfer, zero amount, zero receiver, allowance at max and max-1, and owner-as-spender all behave as the standard says.\n- **Periphery.** The five vendored OpenZeppelin files are byte-identical to the upstream v5.4.0 tag. No submodules, no modified library code.\n- **First principles.** The constructor mints exactly 1e27 to whoever creates it, confirmed for EOA, contract and CREATE2 deployers. Decimals are 18. The ABI has no privileged function, no receive or fallback, and the runtime has no DELEGATECALL, CALLCODE, SELFDESTRUCT or CBOR trailer.\n\n**Checks run.** Full project suite passes with 34 tests including fuzz and invariants. Formatting check passes. The aderyn large-literal lead is the intended supply constant, not a defect. Scratch tests were run and removed, and no tracked file was changed.","treeHash":null,"usage":{"cachedInputTokens":421765,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":9593,"runtime":"claude","turns":23,"wallClockMs":175679}},{"artifacts":[],"attempt":1,"bundleHash":"e65940b883ddf67d90b660051e23b3ce471eb527868dbddc85a7a56098243fe9","device":"02f22d6f13810ca8","findings":[],"hash":"1d12cb00706f3175f669e9a507a0063ec1b317376d92376e3ab1b297a5d30f0b","nodeId":"37d15912-85a4-4d66-9afa-e89989760691","outcome":"completed","summary":"I wrote launch.json for the VERDICT custom token launch and verified it against the accepted tree.\n\n**What the manifest says**\n\n- Token contract `VerdictToken`, name \"Prediction Markets Run by AI Agents\", symbol VERDICT, 18 decimals.\n- Constructor arguments are an empty list. The accepted constructor takes no parameters, confirmed from the compiled ABI, and it mints the whole supply once to msg.sender.\n- Total supply is 1000000000000000000000000000 minor units, matching the contract's TOTAL_SUPPLY constant.\n- No application contracts and no initialization calls, since the accepted tree contains only the token. The deploy script is a local helper and is not a launch contract.\n- Pool is IMD at 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 12500, tick spacing 60, initialPrice one to one as provenance.\n- Economics copied verbatim from the job, checked by string comparison.\n- Notes describe the token's behaviour and run 1173 characters, within the 4000 limit.\n\n**Checks run**\n\n- forge build compiled cleanly.\n- forge test with the verifier's fuzz seed passed all 34 tests.\n- git status shows launch.json as the only new file. Nothing else was changed.","treeHash":"a0ac779a2cc61e5872c27fd757f3a95881862ea7","usage":{"cachedInputTokens":193152,"inputTokens":130,"model":"claude-fable-5-1","outputTokens":2832,"runtime":"claude","turns":8,"wallClockMs":69090}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"6b16b4979d227241","findings":[],"hash":"5752ae110038ca6b2aade3d1b113812012242942da23423244ebb38f9ec6aca2","nodeId":"6f308112-26d6-4353-8acd-e50bf8b56fb2","outcome":"completed","summary":"The review is complete and the findings file holds an empty findings list with a full coverage record. Nothing in the tree was changed. The scratch test was removed.\n\n**Outcome:** no defects found. The four specialists and the independent tester reported nothing, so there was nothing to reproduce or merge. My own pass over the code confirmed their clean result.\n\n**What I verified**\n\n- The token is an unmodified OpenZeppelin v5.4.0 ERC-20. The five vendored library files hash identically to upstream v5.4.0.\n- The constructor takes no arguments and mints exactly the manifest supply once to msg.sender. The ABI exposes no mint, burn, owner, pause, receive or fallback path.\n- The compiled runtime contains no DELEGATECALL, CALLCODE, SELFDESTRUCT or CREATE opcodes, carries no metadata hash, and is far under the size limits.\n- A scratch Foundry test deployed the token through CREATE2 from a contract and traced every failure path of approve, transfer and transferFrom, plus the swarm share and claim flows arriving whole. All passed, as did the project's 73 existing tests.\n- The manifest uses only schema keys, matches the no-argument constructor and the minted supply, and has lowercase addresses and correctly typed fields.\n- The single static-analysis lead, a large numeric literal, is an underscored constant and not a defect.\n\nAll three listed entry points are marked holds in the coverage record, with extra rows for the constructor invariant, deployability, the manifest and the static-analysis lead.","treeHash":null,"usage":{"cachedInputTokens":384455,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":8551,"runtime":"claude","turns":15,"wallClockMs":144879}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a4e285247c6f8aed","findings":[],"hash":"693980bd8e75d84fd51d17d5956ff2517d4bff25f20888c5f2d512cb2f1f21c2","nodeId":"3a83250a-244c-4575-b4bd-5232601a44ce","outcome":"completed","summary":"The review is complete. No defects were found in the assigned area, and the findings file is written with an empty findings list and a full coverage record.\n\n**What was reviewed**\n\n- `src/VerdictToken.sol` is a 45-line fixed-supply ERC-20 with no custom logic beyond the constructor mint and one event. It inherits OpenZeppelin `ERC20` unchanged.\n- The five vendored OpenZeppelin files are byte-identical to the canonical v5.4.0 release. I fetched the upstream files and diffed them, so the transfer, approval and allowance logic is the audited upstream code, not a modified copy.\n- The runtime contains no mint, burn, burnFrom, pause, blacklist, owner or upgrade selector. Ether and unknown selectors revert. No DELEGATECALL, CALLCODE or SELFDESTRUCT is present, and there is no metadata trailer.\n\n**Checks run**\n\n- The project's own suite passed with the verifier's fuzz seed. 34 tests, including 3 stateful invariants over 128,000 handler calls.\n- A scratch Foundry test deployed the token through CREATE2 from a factory-like contract and replayed the launch flows. The swarm share, a claim, a pool seed measured by balance delta, the remainder transfer, a trader buy and sell, and an allowance pull all moved exactly the requested amount. Supply stayed at 1e27 and balances summed to it. The scratch directory was removed afterwards.\n- Allowance and balance boundaries behave as specified. A pull of the whole supply at exact allowance succeeds and one more unit reverts. Infinite allowance is not decremented.\n\n**Leads not promoted**\n\n- The aderyn large-numeric-literal line is style only. The constant is evaluated at compile time to exactly one billion times ten to the eighteenth.\n- The standard ERC-20 approve overwrite race exists, as in every OpenZeppelin v5 token. It is documented in the README and is not a defect of this code, so it is noted in the coverage row rather than reported.\n\n**Coverage record** has eight rows: the three entry points, two invariants, the constructor, and one row each for the Economic Security and Flow Gap guide areas, all marked holds. Nothing was left unreached. The working tree is unchanged apart from the findings file.","treeHash":null,"usage":{"cachedInputTokens":542511,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":11882,"runtime":"claude","turns":25,"wallClockMs":236870}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fa8fc4653a9e883d","findings":[],"hash":"6f2d241eee801b1b410796cf0c1a09bc224586141d1b8093f9d9a3b2daed43bc","nodeId":"fc1020a2-cc4d-498e-9b74-3fa35ff20f5f","outcome":"completed","summary":"The review is complete and the findings file is written. Nothing further is needed from the repository.\n\n**Result: no defects found in the assigned area.** The findings file at the repository root holds an empty findings list and nine coverage rows, one for each of the three state-changing entry points plus the invariants and guide passes I checked.\n\n**What the token is.** VerdictToken is OpenZeppelin v5.4.0 ERC20 with a single constructor mint of 1e27 units to the deployer. It has no owner, no hooks, no division, no external calls, no payable path and no narrowing casts. I verified the five vendored OpenZeppelin files hash-match upstream v5.4.0, so the inherited arithmetic is the audited one.\n\n**Coverage against the three guides:**\n- Math Precision: the only arithmetic in the token is the compile-time constant for supply, which folds to exactly the manifest value. The inherited unchecked blocks in transfer and allowance spending are each preceded by the revert that bounds them, and every balance is bounded by the fixed supply, so no wrap is reachable.\n- Boundary: no external call sites, payable functions, sentinel branches or bytes decoding exist to enumerate. I probed the ERC-20 edges directly with a scratch Foundry test, including max-uint transfer, whole-balance self-transfer, allowance exactly equal to balance and amount, max minus one allowance, zero-value calls without allowance, and transferFrom from the zero address. All behaved as OpenZeppelin documents.\n- Numerical Gap: with no scaling, division or accumulator there is no seam. The launch split of ten, eighty and ten percent of the supply divides with no dust.\n\n**Static-analysis lead.** The aderyn large-numeric-literal note on line 28 is a style remark about a constant that evaluates correctly. It is recorded in a coverage row, not reported as a finding.\n\n**Checks run.** Build succeeded, the project's 34 tests passed including invariants at 256 runs by 500 calls, and my 10 scratch probes passed. The scratch directory was removed afterwards, so the working tree is unchanged apart from the findings file.","treeHash":null,"usage":{"cachedInputTokens":453747,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":10588,"runtime":"claude","turns":22,"wallClockMs":157566}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"6b37e4ab65246705","findings":[],"hash":"7cdf37f6c7ef4fd97810f6549853b9c43e8c998b650769348c9d5e67357c7684","nodeId":"cf793941-1546-483a-9abc-41e10bc84de4","outcome":"completed","summary":"Review complete. No defects found in the assigned area, and the findings file is written with an empty list and full coverage.\n\n**What was reviewed.** The token at `src/VerdictToken.sol` is OpenZeppelin v5.4.0 ERC20 with a single constructor mint of one billion tokens to the deployer. I checked it against the Senior Auditor's Mindset and the Access Control, Trust Gap and Asymmetry guides, and against the custom-token floor in the protected tests.\n\n**Why it holds.**\n- **Access control:** the compiled ABI exposes only the ERC-20 views, the three state-changing functions, five constant getters and three events. There is no owner, minter, pause, blacklist, burn, upgrade or initializer, and no receive or fallback. Storage holds only the five OpenZeppelin slots.\n- **Trust gap:** the deployer gets the whole supply but no power beyond an ordinary holder. A scratch test confirmed the deployer's transferFrom against a holder with zero allowance reverts, and that a CREATE2 contract deployer receives the supply itself.\n- **Asymmetry:** approve and transferFrom mirror exactly. Allowance decrements unless infinite, and the balance check still gates an over-approved spend. Transfer has no exemption, fee or hook branch, so every caller class takes the same path.\n- **Library integrity:** all five vendored OpenZeppelin files hash identically to upstream tag v5.4.0, so no tampering of the inherited transfer logic.\n- **Supply:** the constant expression evaluates in uint256 per Solidity's literal-base rule, and the existing invariant suite plus my selector probes keep total supply fixed.\n\n**Leads dismissed.** The aderyn large-numeric-literal line is a style note on a constant that computes correctly. The ERC-20 approve overwrite race is a standard property the README already documents, so it is recorded as a coverage note rather than a finding.\n\n**Output.** The findings file holds zero findings and nine coverage rows: holds for all three entry points, the constructor, and five checked invariants and trust assumptions. The scratch test directory was removed and the tree is otherwise unchanged.","treeHash":null,"usage":{"cachedInputTokens":521596,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":11433,"runtime":"claude","turns":20,"wallClockMs":186760}},{"artifacts":[],"attempt":1,"bundleHash":"91ac655955c0e65869ff9255628cc014c4a1d078f51adcd13a15a91e22edf7fe","device":"8c9c4986ca881107","findings":[],"hash":"908ccadec76fa814f62e30a32f4a37f5f4e826ff55350f999b19c8ee236abe66","nodeId":"3a1dc3b5-9683-4a83-ae35-470e08518b0a","outcome":"completed","summary":"The deliverable is complete and committed. A fresh clone builds and tests offline with the verifier's fuzz seed.\n\n**What was built**\n\n- `src/VerdictToken.sol`: a fixed-supply ERC-20 named \"Prediction Markets Run by AI Agents\", symbol VERDICT, 18 decimals. The constructor takes no arguments, makes no external calls, mints the full one billion tokens to `msg.sender` once, and emits a `SupplyMinted` event. There is no owner, mint, burn, pause, blacklist, fee or upgrade path, so the launch flows move exactly what they say.\n- `foundry.toml` at the repository root pins solc 0.8.26, optimizer at 200 runs, EVM cancun, `bytecode_hash = \"none\"` and no CBOR metadata. FFI is off and no filesystem permissions are granted.\n- OpenZeppelin v5.4.0 ERC20 with its four imports and forge-std 1.17.0 are vendored under `lib/` as plain files. No submodules, no git metadata.\n- `script/DeployVerdictToken.s.sol` is a local Anvil helper that reads no environment variables. Tests call its `deploy()` directly.\n- `README.md` documents assumptions, the manifest parameters, the no-op \"After launch\" section, operational responsibilities, and the security notes.\n\n**Checks run**\n\n| Check | Result |\n| --- | --- |\n| forge build | passes |\n| forge test with the verifier's seed, empty env | 34 tests pass, 0 failed |\n| forge fmt --check | passes |\n| fresh clone, offline build and test | passes |\n\nTests cover metadata and constants, the one-time mint for EOA, contract and fuzzed deployers, transfer and allowance success and failure paths with ERC-6093 errors, 22 common privileged selectors all absent from both the deployer and a stranger, ether and unknown-selector rejection, no DELEGATECALL, CALLCODE or SELFDESTRUCT in the runtime, no metadata trailer, and three stateful invariants holding supply constant and balances summing to the supply. A scratch test also reproduced the protected harness's CREATE2 deploy and swarm-share flow, then was removed.\n\n**Left for the launch, not this task**\n\nNo values were open and nothing is blocked. Etherscan verification and the manifest belong to IdentityMD's deployer and manifest step. Slither and Mythril were not on this machine and did not run.","treeHash":"a8a68c4513edaf463a4775c1260800ce601ce48f","usage":{"cachedInputTokens":610996,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":24594,"runtime":"claude","turns":26,"wallClockMs":390980}},{"artifacts":[],"attempt":1,"bundleHash":"9970d56c2ccad35bbace5ec4a3c3d1e19fdb4d2ebb136eb2e28a9884b0de20a4","device":"824e6de6196c686f","findings":[],"hash":"aaad51c879a787a09dce170dfed58dcf1e4852beafbd57a6edea646b8d87012b","nodeId":"91b66856-06e4-47b9-b251-663fd22701be","outcome":"completed","summary":"The full suite passes under the verifier's seed and the working tree contains only the three new test files under `test/`. No defect was found, so no findings file was written.\n\n**Outcome.** The token is a one-time-mint OpenZeppelin ERC-20 with no privileged surface. I verified all five vendored OpenZeppelin files hash-match upstream v5.4.0 byte for byte, so the library was not tampered with. The accepted tests were left untouched and I added three files beside them. The complete run is 73 tests passing, including 5 fuzz suites and 2 invariant suites.\n\n**What I added.**\n\n- `test/VerdictToken.launch.t.sol` mirrors the protected floor. A factory stand-in deploys through CREATE2 and performs the swarm, pool-seed and remainder flows in one call, as the real launch does in one transaction. It checks the predicted CREATE2 address, that redeploying at the same salt fails without harming the first token, that every flow arrives whole for any fuzzed split, that an over-supply launch reverts as a whole and leaves no token behind, that many claims drain the distributor to exactly zero, and that the factory itself cannot pull from a holder or reach any of the floor's admin, freeze or burn selectors.\n- `test/VerdictToken.properties.t.sol` covers edge inputs with pinned unit tests beside each fuzz. It includes round trips, additivity, idempotent approve, exact allowance exhaustion, infinite versus max-minus-one allowances, per-spender independence, the owner spending its own allowance, the zero address as sender or approver, one unit over balance from any holder, the maximum amount, and that a failed call leaves no trace.\n- `test/VerdictToken.ghost.invariant.t.sol` adds a ghost-ledger handler with six actors. It drives successful transfers, approvals and pulls, plus expected failures asserted inside the handler: over-balance, over-allowance, zero receiver, privileged selectors from every actor, and ether sent to the token. Nine invariants compare the contract against the ledger, fix the supply, bound balances, account for the deployer's outflows, and pin metadata and runtime code.\n\n**One correction during the work.** My first draft expected `ERC20InvalidSender` for a zero-amount `transferFrom` from the zero address. The library spends allowance before transferring, so it reverts with `ERC20InvalidApprover` instead. That is correct library behaviour, so the test now pins both the zero and non-zero amount cases.","treeHash":"c10d3d44d4095bbfc2189d091cc24afd2107ae00","usage":{"cachedInputTokens":642745,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":27303,"runtime":"claude","turns":19,"wallClockMs":473642}}],"verification":[{"checks":[{"durationMs":1029,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 957.59ms\nCompiler run successful!\n","passed":true},{"durationMs":8127,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 33 tests for test/VerdictToken.t.sol:VerdictTokenTest\n[PASS] testFuzz_supplyGoesToWhoeverDeploys(address) (runs: 256, μ: 15499, ~: 15519)\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 38633, ~: 38562)\n[PASS] testFuzz_transferConservesSupplyAndIsExact(address,uint256) (runs: 256, μ: 83059, ~: 83379)\n[PASS] testFuzz_transferFromNeverExceedsAllowance(uint256,uint256) (runs: 256, μ: 116701, ~: 93837)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 92726)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 64922)\n[PASS] test_approveZeroAddressSpenderReverts() (gas: 32950)\n[PASS] test_chainedTransfersArriveWholeAndConserveSupply() (gas: 230846)\n[PASS] test_constantsAgreeWithEachOther() (gas: 27729)\n[PASS] test_constructorEmitsTransferFromZeroAndSupplyMinted() (gas: 9283)\n[PASS] test_contractDeployerReceivesSupply() (gas: 1606967)\n[PASS] test_creationCodeIsDeterministic() (gas: 3490)\n[PASS] test_deployerCannotPullFromHolderWithoutAllowance() (gas: 95346)\n[PASS] test_implementsIERC20() (gas: 15317)\n[PASS] test_metadata() (gas: 82993)\n[PASS] test_noAdminFunctionExistsOrChangesState() (gas: 1198237)\n[PASS] test_noEtherAccepted() (gas: 38754)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 925725)\n[PASS] test_runtimeHasNoMetadataTrailer() (gas: 6171)\n[PASS] test_transferFromRevertsOnInsufficientAllowance() (gas: 88125)\n[PASS] test_transferFromRevertsWhenOwnerBalanceTooLow() (gas: 148494)\n[PASS] test_transferFromSpendsAllowance() (gas: 147535)\n[PASS] test_transferFromWithMaxAllowanceDoesNotDecrement() (gas: 120528)\n[PASS] test_transferFromWithoutApprovalReverts() (gas: 40388)\n[PASS] test_transferMovesExactAmount() (gas: 87164)\n[PASS] test_transferRevertsFromEmptyAccount() (gas: 37755)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 92712)\n[PASS] test_transferToSelfIsANoOp() (gas: 40703)\n[PASS] test_transferToZeroAddressReverts() (gas: 32964)\n[PASS] test_transferWholeBalance() (gas: 72310)\n[PASS] test_transferZeroAmountSucceeds() (gas: 44622)\n[PASS] test_unknownSelectorReverts() (gas: 26577)\n[PASS] test_wholeSupplyMintedToDeployerOnce() (gas: 32929)\nSuite result: ok. 33 passed; 0 failed; 0 skipped; finished in 6.26ms (27.81ms CPU time)\n\nRan 1 test for test/VerdictToken.invariant.t.sol:VerdictTokenInvariantTest\n[PASS]\nVerdictTokenInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_noStrayBalances\n[PASS] invariant_totalSupplyIsConstant\n VerdictTokenInvariantTest invariants (runs: 256, calls: 128000, reverts: 0)\n\n╭----------------+--------------+-------+---------+----------╮\n| Contract       | Selector     | Calls | Reverts | Discards |\n+============================================================+\n| VerdictHandler | approve      | 42420 | 0       | 0        |\n|----------------+--------------+-------+---------+----------|\n| VerdictHandler | transfer     | 42819 | 0       | 0        |\n|----------------+--------------+-------+---------+----------|\n| VerdictHandler | transferFrom | 42761 | 0       | 0        |\n╰----------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 8.05s (8.05s CPU time)\n\nRan 2 test suites in 8.05s (8.05s CPU time): 34 tests passed, 0 failed, 0 skipped (34 total tests)\n","passed":true},{"durationMs":34,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"VerdictToken.approve(address,uint256)\",\"VerdictToken.transfer(address,uint256)\",\"VerdictToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":11,\"README.md\":166,\"foundry.toml\":28,\"launch.json\":24,\"remappings.txt\":2,\"script/DeployVerdictToken.s.sol\":28,\"src/VerdictToken.sol\":45,\"test/VerdictToken.invariant.t.sol\":92,\"test/VerdictToken.t.sol\":399},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"1d12cb00706f3175f669e9a507a0063ec1b317376d92376e3ab1b297a5d30f0b","verifiedTreeHash":"a0ac779a2cc61e5872c27fd757f3a95881862ea7","verifierVersion":"0.1.0+7129bf9d"},{"checks":[{"durationMs":1134,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.06s\nCompiler run successful!\n","passed":true},{"durationMs":8982,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 33 tests for test/VerdictToken.t.sol:VerdictTokenTest\n[PASS] testFuzz_supplyGoesToWhoeverDeploys(address) (runs: 256, μ: 15499, ~: 15519)\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 38633, ~: 38562)\n[PASS] testFuzz_transferConservesSupplyAndIsExact(address,uint256) (runs: 256, μ: 83059, ~: 83379)\n[PASS] testFuzz_transferFromNeverExceedsAllowance(uint256,uint256) (runs: 256, μ: 116701, ~: 93837)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 92726)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 64922)\n[PASS] test_approveZeroAddressSpenderReverts() (gas: 32950)\n[PASS] test_chainedTransfersArriveWholeAndConserveSupply() (gas: 230846)\n[PASS] test_constantsAgreeWithEachOther() (gas: 27729)\n[PASS] test_constructorEmitsTransferFromZeroAndSupplyMinted() (gas: 9283)\n[PASS] test_contractDeployerReceivesSupply() (gas: 1606967)\n[PASS] test_creationCodeIsDeterministic() (gas: 3490)\n[PASS] test_deployerCannotPullFromHolderWithoutAllowance() (gas: 95346)\n[PASS] test_implementsIERC20() (gas: 15317)\n[PASS] test_metadata() (gas: 82993)\n[PASS] test_noAdminFunctionExistsOrChangesState() (gas: 1198237)\n[PASS] test_noEtherAccepted() (gas: 38754)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 925725)\n[PASS] test_runtimeHasNoMetadataTrailer() (gas: 6171)\n[PASS] test_transferFromRevertsOnInsufficientAllowance() (gas: 88125)\n[PASS] test_transferFromRevertsWhenOwnerBalanceTooLow() (gas: 148494)\n[PASS] test_transferFromSpendsAllowance() (gas: 147535)\n[PASS] test_transferFromWithMaxAllowanceDoesNotDecrement() (gas: 120528)\n[PASS] test_transferFromWithoutApprovalReverts() (gas: 40388)\n[PASS] test_transferMovesExactAmount() (gas: 87164)\n[PASS] test_transferRevertsFromEmptyAccount() (gas: 37755)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 92712)\n[PASS] test_transferToSelfIsANoOp() (gas: 40703)\n[PASS] test_transferToZeroAddressReverts() (gas: 32964)\n[PASS] test_transferWholeBalance() (gas: 72310)\n[PASS] test_transferZeroAmountSucceeds() (gas: 44622)\n[PASS] test_unknownSelectorReverts() (gas: 26577)\n[PASS] test_wholeSupplyMintedToDeployerOnce() (gas: 32929)\nSuite result: ok. 33 passed; 0 failed; 0 skipped; finished in 15.89ms (48.58ms CPU time)\n\nRan 1 test for test/VerdictToken.invariant.t.sol:VerdictTokenInvariantTest\n[PASS]\nVerdictTokenInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_noStrayBalances\n[PASS] invariant_totalSupplyIsConstant\n VerdictTokenInvariantTest invariants (runs: 256, calls: 128000, reverts: 0)\n\n╭----------------+--------------+-------+---------+----------╮\n| Contract       | Selector     | Calls | Reverts | Discards |\n+============================================================+\n| VerdictHandler | approve      | 42420 | 0       | 0        |\n|----------------+--------------+-------+---------+----------|\n| VerdictHandler | transfer     | 42819 | 0       | 0        |\n|----------------+--------------+-------+---------+----------|\n| VerdictHandler | transferFrom | 42761 | 0       | 0        |\n╰----------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 8.89s (8.89s CPU time)\n\nRan 2 test suites in 8.89s (8.91s CPU time): 34 tests passed, 0 failed, 0 skipped (34 total tests)\n","passed":true},{"durationMs":38,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"VerdictToken.approve(address,uint256)\",\"VerdictToken.transfer(address,uint256)\",\"VerdictToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":11,\"README.md\":166,\"foundry.toml\":28,\"remappings.txt\":2,\"script/DeployVerdictToken.s.sol\":28,\"src/VerdictToken.sol\":45,\"test/VerdictToken.invariant.t.sol\":92,\"test/VerdictToken.t.sol\":399},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":450,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":246,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/VerdictToken.sol:28: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"908ccadec76fa814f62e30a32f4a37f5f4e826ff55350f999b19c8ee236abe66","verifiedTreeHash":"a8a68c4513edaf463a4775c1260800ce601ce48f","verifierVersion":"0.1.0+7129bf9d"},{"checks":[{"durationMs":1998,"exitCode":0,"name":"build","output":"Compiling 32 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.92s\nCompiler run successful!\n","passed":true},{"durationMs":25066,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 24 tests for test/VerdictToken.properties.t.sol:VerdictTokenPropertiesTest\n[PASS] testFuzz_allowanceDecrementsByExactlyWhatWasSpent(uint256,uint256,uint256) (runs: 1000, μ: 255533, ~: 259700)\n[PASS] testFuzz_allowancesAreIndependentPerSpender(uint256,uint256,uint256) (runs: 1000, μ: 196974, ~: 198735)\n[PASS] testFuzz_anyHolderCannotSendOneUnitOverBalance(address,uint256) (runs: 1000, μ: 105264, ~: 105534)\n[PASS] testFuzz_approveIsIdempotentAndOverwrites(uint256,uint256) (runs: 1000, μ: 134930, ~: 134999)\n[PASS] testFuzz_failedTransferLeavesNoTrace(uint256,uint256) (runs: 1000, μ: 173846, ~: 173965)\n[PASS] testFuzz_noPairOfBalancesExceedsSupply(uint256,uint256) (runs: 1000, μ: 170848, ~: 172212)\n[PASS] testFuzz_spendingExactAllowanceLeavesZero(uint256) (runs: 1000, μ: 169066, ~: 168862)\n[PASS] testFuzz_transferIsAdditive(uint256,uint256) (runs: 1000, μ: 113506, ~: 113981)\n[PASS] testFuzz_transferRoundTripRestoresState(uint256,uint256) (runs: 1000, μ: 202057, ~: 202949)\n[PASS] test_allowanceDoesNotExtendToOtherOwners() (gas: 195699)\n[PASS] test_approveWithoutBalanceSucceeds() (gas: 105389)\n[PASS] test_contractHolderWithoutHooksReceivesAndSends() (gas: 290710)\n[PASS] test_infiniteAllowanceSurvivesSpendingWholeSupply() (gas: 179865)\n[PASS] test_maxAmountRevertsEverywhere() (gas: 67986)\n[PASS] test_maxMinusOneAllowanceIsFinite() (gas: 123803)\n[PASS] test_ownerCanTransferFromItselfWithSelfAllowance() (gas: 190714)\n[PASS] test_ownerCannotTransferFromItselfWithoutSelfAllowance() (gas: 93271)\n[PASS] test_transferFromToOwnerIsNoOpOnBalanceButSpendsAllowance() (gas: 158915)\n[PASS] test_transferFromToZeroAddressReverts() (gas: 93319)\n[PASS] test_transferFromZeroAddressReverts() (gas: 75365)\n[PASS] test_transferToTokenContractStrandsTokens() (gas: 97339)\n[PASS] test_zeroAddressCannotApprove() (gas: 33087)\n[PASS] test_zeroAddressCannotTransfer() (gas: 40721)\n[PASS] test_zeroTransferFromWithoutAllowanceSucceeds() (gas: 59630)\nSuite result: ok. 24 passed; 0 failed; 0 skipped; finished in 77.93ms (672.23ms CPU time)\n\nRan 33 tests for test/VerdictToken.t.sol:VerdictTokenTest\n[PASS] testFuzz_supplyGoesToWhoeverDeploys(address) (runs: 256, μ: 15499, ~: 15519)\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 38637, ~: 38562)\n[PASS] testFuzz_transferConservesSupplyAndIsExact(address,uint256) (runs: 256, μ: 83123, ~: 83355)\n[PASS] testFuzz_transferFromNeverExceedsAllowance(uint256,uint256) (runs: 256, μ: 115696, ~: 93837)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 92726)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 64922)\n[PASS] test_approveZeroAddressSpenderReverts() (gas: 32950)\n[PASS] test_chainedTransfersArriveWholeAndConserveSupply() (gas: 230846)\n[PASS] test_constantsAgreeWithEachOther() (gas: 27729)\n[PASS] test_constructorEmitsTransferFromZeroAndSupplyMinted() (gas: 9283)\n[PASS] test_contractDeployerReceivesSupply() (gas: 1606967)\n[PASS] test_creationCodeIsDeterministic() (gas: 3490)\n[PASS] test_deployerCannotPullFromHolderWithoutAllowance() (gas: 95346)\n[PASS] test_implementsIERC20() (gas: 15317)\n[PASS] test_metadata() (gas: 82993)\n[PASS] test_noAdminFunctionExistsOrChangesState() (gas: 1198237)\n[PASS] test_noEtherAccepted() (gas: 38754)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 925725)\n[PASS] test_runtimeHasNoMetadataTrailer() (gas: 6171)\n[PASS] test_transferFromRevertsOnInsufficientAllowance() (gas: 88125)\n[PASS] test_transferFromRevertsWhenOwnerBalanceTooLow() (gas: 148494)\n[PASS] test_transferFromSpendsAllowance() (gas: 147535)\n[PASS] test_transferFromWithMaxAllowanceDoesNotDecrement() (gas: 120528)\n[PASS] test_transferFromWithoutApprovalReverts() (gas: 40388)\n[PASS] test_transferMovesExactAmount() (gas: 87164)\n[PASS] test_transferRevertsFromEmptyAccount() (gas: 37755)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 92712)\n[PASS] test_transferToSelfIsANoOp() (gas: 40703)\n[PASS] test_transferToZeroAddressReverts() (gas: 32964)\n[PASS] test_transferWholeBalance() (gas: 72310)\n[PASS] test_transferZeroAmountSucceeds() (gas: 44622)\n[PASS] test_unknownSelectorReverts() (gas: 26577)\n[PASS] test_wholeSupplyMintedToDeployerOnce() (gas: 32929)\nSuite result: ok. 33 passed; 0 failed; 0 skipped; finished in 77.93ms (247.92ms CPU time)\n\nRan 14 tests for test/VerdictToken.launch.t.sol:VerdictTokenLaunchTest\n[PASS] testFuzz_create2WorksForAnySalt(bytes32) (runs: 256, μ: 711017, ~: 711115)\n[PASS] testFuzz_launchFlowsConserveSupplyForAnySplit(uint256,uint256) (runs: 256, μ: 830482, ~: 832583)\n[PASS] test_create2DeploymentLandsAtPredictedAddressAndMintsToFactory() (gas: 768425)\n[PASS] test_create2RedeploymentAtSameSaltFails() (gas: 1040538470)\n[PASS] test_launchFlowsArriveWholeInOneTransaction() (gas: 825054)\n[PASS] test_launchRevertsAsAWholeWhenAFlowExceedsTheSupply() (gas: 718893)\n[PASS] test_manyClaimsDrainTheDistributorExactly() (gas: 3140141)\n[PASS] test_noBurnPermitOrAllowanceHelpers() (gas: 1005921)\n[PASS] test_noCommonAdminCallIncreasesSupply() (gas: 1451582)\n[PASS] test_noPrivilegedHandMovesOrFreezesAHolder() (gas: 1241996)\n[PASS] test_poolStyleTransferFromRoundTripIsExact() (gas: 953471)\n[PASS] test_runtimeIsIdenticalRegardlessOfDeployer() (gas: 714656)\n[PASS] test_swarmShareIsClaimableWhole() (gas: 859750)\n[PASS] test_twoDeploymentsAreIndependent() (gas: 1492918)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 77.98ms (157.98ms CPU time)\n\nRan 1 test for test/VerdictToken.invariant.t.sol:VerdictTokenInvariantTest\n[PASS]\nVerdictTokenInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_noStrayBalances\n[PASS] invariant_totalSupplyIsConstant\n VerdictTokenInvariantTest invariants (runs: 256, calls: 128000, reverts: 0)\n\n╭----------------+--------------+-------+---------+----------╮\n| Contract       | Selector     | Calls | Reverts | Discards |\n+============================================================+\n| VerdictHandler | approve      | 42420 | 0       | 0        |\n|----------------+--------------+-------+---------+----------|\n| VerdictHandler | transfer     | 42819 | 0       | 0        |\n|----------------+--------------+-------+---------+----------|\n| VerdictHandler | transferFrom | 42761 | 0       | 0        |\n╰----------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 8.68s (8.68s CPU time)\n\nRan 1 test for test/VerdictToken.ghost.invariant.t.sol:VerdictTokenGhostInvariantTest\n[PASS]\nVerdictTokenGhostInvariantTest invariants:\n[PASS] invariant_actorBalancesSumToSupply\n[PASS] invariant_allowancesMatchGhostLedger\n[PASS] invariant_balancesMatchGhostLedger\n[PASS] invariant_deployerBalanceAccountsForOutflows\n[PASS] invariant_metadataIsImmutable\n[PASS] invariant_noBalanceExceedsSupply\n[PASS] invariant_noStrayBalances\n[PASS] invariant_runtimeCodeIsUnchanged\n[PASS] invariant_totalSupplyNeverChanges\n VerdictTokenGhostInvariantTest invariants (runs: 256, calls: 51200, reverts: 0)\n\n╭---------------------+---------------------------+-------+---------+----------╮\n| Contract            | Selector                  | Calls | Reverts | Discards |\n+==============================================================================+\n| VerdictGhostHandler | approve                   | 5705  | 0       | 0        |\n|---------------------+---------------------------+-------+---------+----------|\n| VerdictGhostHandler | approveMax                | 5634  | 0       | 0        |\n|---------------------+---------------------------+-------+---------+----------|\n| VerdictGhostHandler | privilegedCall            | 5699  | 0       | 0        |\n|---------------------+---------------------------+-------+---------+----------|\n| VerdictGhostHandler | sendEther                 | 5746  | 0       | 0        |\n|---------------------+---------------------------+-------+---------+----------|\n| VerdictGhostHandler | transfer                  | 5790  | 0       | 0        |\n|---------------------+---------------------------+-------+---------+----------|\n| VerdictGhostHandler | transferFrom              | 5606  | 0       | 0        |\n|---------------------+---------------------------+-------+---------+----------|\n| VerdictGhostHandler | transferFromOverAllowance | 5605  | 0       | 0        |\n|---------------------+---------------------------+-------+---------+----------|\n| VerdictGhostHandler | transferOverBalance       | 5714  | 0       | 0        |\n|---------------------+---------------------------+-------+---------+----------|\n| VerdictGhostHandler | transferToZero            | 5701  | 0       | 0        |\n╰---------------------+---------------------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 24.97s (24.97s CPU time)\n\nRan 5 test suites in 24.97s (33.89s CPU time): 73 tests passed, 0 failed, 0 skipped (73 total tests)\n","passed":true},{"durationMs":47,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"VerdictToken.approve(address,uint256)\",\"VerdictToken.transfer(address,uint256)\",\"VerdictToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":11,\"README.md\":166,\"foundry.toml\":28,\"remappings.txt\":2,\"script/DeployVerdictToken.s.sol\":28,\"src/VerdictToken.sol\":45,\"test/VerdictToken.ghost.invariant.t.sol\":269,\"test/VerdictToken.invariant.t.sol\":92,\"test/VerdictToken.launch.t.sol\":356,\"test/VerdictToken.properties.t.sol\":356,\"test/VerdictToken.t.sol\":399},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"aaad51c879a787a09dce170dfed58dcf1e4852beafbd57a6edea646b8d87012b","verifiedTreeHash":"c10d3d44d4095bbfc2189d091cc24afd2107ae00","verifierVersion":"0.1.0+7129bf9d"}]}