{"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":"4ecf4de9-5046-4f3b-a488-8838e499733e","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"f8af3b86c76883b646207a1268781b8c13f2246f30637373c30451f55d126b74","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":"74e43f1d27c8fa73b709ee625d51409404e14823cf07f7738f9989590850e31f","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":"21bea10fe29d6fd72f6f806b4e50d697ce3d182412024eaeb03835e45ec4c12b","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":"7afbfcfdd63a65aa91c022de30831d5b66c94512a94955ba615992f3fe45b20e","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":"f60b1e0cc3ff6879764cd298213adc19bc8fdcf50179a2f0a29387d52d200778","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":"e73a530cecb91586a423deff16b6b136eaf395d76aad6ccc62fa94ffb7b0a69a","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"f41b16e338620c149a50a1211cced8311b7f64a40bcc17b8aae8c85b21f435b2","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"a8883706f3dc09f1d63ed0c1f9cc7f6640d94f1bafd882da2fbbf1a1e93e8801","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: GoatPro (GPRO).\nToken name: GoatPro\nToken symbol: GPRO\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"a9b2598dd0d32ba9a057e7f7d8ebde622c67b276d0344f87e38a231f5fb87d33","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"4ecf4de9-5046-4f3b-a488-8838e499733e","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2288-goatpro"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"53917","feedbackHash":"56c38d9775ba2a8c1e130e2ffe8dbded331d093b61623bcd69a269bea90edf4e","nodeKey":"audit_economics","submissionHash":"f8af3b86c76883b646207a1268781b8c13f2246f30637373c30451f55d126b74","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51557","feedbackHash":"e24de49e8b66dfa4ec71aaf87a53122d5b09117a55a06e0b606593ee923746b5","nodeKey":"audit_flow","submissionHash":"74e43f1d27c8fa73b709ee625d51409404e14823cf07f7738f9989590850e31f","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52641","feedbackHash":"28ca23f10e851408269d8c42c9b4d83e07f733541635cf5b0f7cd6fec1fb88a9","nodeKey":"audit_judge","submissionHash":"21bea10fe29d6fd72f6f806b4e50d697ce3d182412024eaeb03835e45ec4c12b","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52150","feedbackHash":"10058dc0baf08aa2309ee4936d2d5ff7abeba077fb06afa1ff1314fb5633f355","nodeKey":"audit_math","submissionHash":"7afbfcfdd63a65aa91c022de30831d5b66c94512a94955ba615992f3fe45b20e","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52479","feedbackHash":"205a579a59d239a4799041ce24d911a2d2aa4f50066e448ae3c3325bebd4c4f8","nodeKey":"audit_permissions","submissionHash":"f60b1e0cc3ff6879764cd298213adc19bc8fdcf50179a2f0a29387d52d200778","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50971","feedbackHash":"43f94dc76aaf81d4fcb46eda1e0b487699e82434dc217cca2c9299de21130849","nodeKey":"build_contract_project","submissionHash":"e73a530cecb91586a423deff16b6b136eaf395d76aad6ccc62fa94ffb7b0a69a","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51274","feedbackHash":"bc978a2be7e9b012b4566f77fcf3b8d469bf93a6f2ab2ac2b383e1ae5924b7a6","nodeKey":"manifest","submissionHash":"f41b16e338620c149a50a1211cced8311b7f64a40bcc17b8aae8c85b21f435b2","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51156","feedbackHash":"9f3bf410608e255e6d3b86952b3ba5522a4f484cdaa024904a385288ebdd2ae6","nodeKey":"write_foundry_tests","submissionHash":"a8883706f3dc09f1d63ed0c1f9cc7f6640d94f1bafd882da2fbbf1a1e93e8801","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"23514b4d085f6bcfbc29698d9693e96ce6ba660818272bc99b101e0d25857929","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"803eeae3d8b63de3","findings":[],"hash":"21bea10fe29d6fd72f6f806b4e50d697ce3d182412024eaeb03835e45ec4c12b","nodeId":"12c16e29-e727-4a8e-8bb7-d2a0a0c95014","outcome":"completed","summary":"The review is complete. No defects found, and `.imd-findings.json` holds an empty findings list with a full coverage record.\n\n**What the specialists reported**\n\nAll four specialists and the independent tester reported no findings. There was nothing to reproduce or merge, so nothing was dropped and nothing was kept.\n\n**What I verified myself**\n\n- `src/GoatPro.sol` is a 17-line contract inheriting the unmodified OpenZeppelin v5.0.2 ERC20. Its constructor mints exactly 10^27 units to the deployer, which is the factory under the launch model.\n- The compiled ABI exposes only approve, transfer and transferFrom as state-changing functions. There is no owner, mint, burn, pause, blacklist, receive or fallback.\n- The vendored ERC20, Context and interface files match the v5.0.2 release text line by line. The upstream hash fetch was refused by the sandbox network policy, so that check is a manual read, not a checksum.\n- The manifest matches the code: empty constructor arguments, totalSupply of 10^27, 18 decimals, schema-only keys, lowercase addresses. Creation code is 2,720 bytes and runtime 1,814 bytes, far below the protocol limits.\n- The project suite passes, 47 of 47 tests including fuzz and invariant runs. The runtime opcode scan confirms no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- The aderyn large-numeric-literal lead does not reproduce as a defect. The literal evaluates to exactly 10^27, as the tests assert.\n\n**Coverage record**\n\nAll three listed entry points are marked `holds`, with four additional invariant rows covering the constructor mint, absence of privileged paths, factory deployability and the vendored library's integrity. No files in the repository were changed.","treeHash":null,"usage":{"cachedInputTokens":450010,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":6712,"runtime":"claude","turns":18,"wallClockMs":136253}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"559cfaaab2c0d013","findings":[],"hash":"74e43f1d27c8fa73b709ee625d51409404e14823cf07f7738f9989590850e31f","nodeId":"d2084f56-36b3-42d5-abc0-f2cfeb3213a7","outcome":"completed","summary":"The review is complete and the findings file is written. The tree is otherwise clean, with the scratch tests removed and nothing in `src/`, `test/`, `lib/` or config touched.\n\n**Result: no defects found in the assigned area.** `.imd-findings.json` holds an empty findings list and nine coverage rows: the three entry points, five invariants, and one honestly marked `unreached` row.\n\n**What I checked, by guide**\n\n- **Execution Trace.** Traced `approve`, `transfer` and `transferFrom` from entry to final state through the vendored OpenZeppelin code. Every revert path fires before any storage write, so there is no partial state. A revert inside the transfer step of `transferFrom` rolls back the allowance decrement. A stranger's zero-value `transferFrom` cannot alter another spender's allowance. The max-uint allowance sentinel is the documented infinite approval and is not bypassable.\n- **Periphery.** Every vendored OpenZeppelin file, including the LICENSE, is byte-identical to the upstream v5.0.2 tag. `Context` returns plain `msg.sender`, `decimals()` returns 18, and no 5.0.x advisory affects ERC-20.\n- **First Principles.** The supply literal evaluates to exactly 10^27. The constructor mints once to the CREATE2 creator, so the factory receives the whole supply and the transaction origin receives nothing. The disassembled runtime contains no CALL family, DELEGATECALL, CALLCODE, SELFDESTRUCT, CREATE, transient storage or PUSH0 opcodes. There is no receive or fallback, so value-carrying and unknown-selector calls revert. Only the five ERC-20 storage slots are populated.\n\n**Verification run**\n\n| Check | Outcome |\n| --- | --- |\n| `forge build`, `forge fmt --check` | pass |\n| Project suite with the pinned fuzz seed | 29 passed, 0 failed |\n| Scratch tests (native sends, unknown selectors, contract-caller settle flows, CREATE2 recipient, storage layout) | 7 passed, then removed |\n\n**Static-analysis leads.** Slither reported nothing. The aderyn large-numeric-literal note is a style remark on a literal that is correct, so it is recorded in coverage rather than as a finding.\n\n**Not reached.** The protected launch harness needs v4-core and the launch environment, which are not in this tree. I checked each of its token-side requirements individually instead and found no token-side reason for it to fail.","treeHash":null,"usage":{"cachedInputTokens":501767,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":16027,"runtime":"claude","turns":24,"wallClockMs":263715}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e764f15311426447","findings":[],"hash":"7afbfcfdd63a65aa91c022de30831d5b66c94512a94955ba615992f3fe45b20e","nodeId":"b606c9e4-9bb4-4f48-95b6-e7ef7bf8af91","outcome":"completed","summary":"The review is complete. GoatPro has no defects in the Math Precision, Boundary or Numerical Gap areas, and `.imd-findings.json` records an empty findings list with eight coverage rows.\n\n**What I checked**\n\n- **Source and dependency integrity.** The token is a 17-line contract that inherits unmodified OpenZeppelin ERC20. All five vendored OpenZeppelin files hash-match the upstream v5.0.2 release archive byte for byte, so the arithmetic under review is the audited upstream code.\n- **Math precision.** The supply constant is a compile-time expression equal to exactly 10^27. It fits uint128 and is divisible by 10,000, so the factory's 10/80/10 basis-point splits truncate nothing and cannot overflow. There are no divisions, fees, scale conversions or downcasts anywhere in the token. The aderyn large-literal lead is a style note only.\n- **Boundaries.** I exercised allowance at max, max minus one, exactly the spent value, and one above it. I exercised transfers at balance plus one and max uint, full-balance self-transfers, delegated self-transfers, and zero amounts to and from empty and zero addresses. Every case reverts or succeeds exactly as the ERC-20 spec and the README state. The runtime bytecode contains no CALL, STATICCALL, DELEGATECALL, CALLCODE, CREATE, SELFDESTRUCT or PUSH0, and there is no receive or fallback.\n- **Numerical gaps.** Zero-amount fast paths still hit the zero-address guards. Conservation of balances held under the project's stateful invariant and under my own 512-run three-party fuzz.\n\n**Coverage record**\n\n| Entry point | Verdict |\n| --- | --- |\n| approve | holds |\n| transfer | holds |\n| transferFrom | holds |\n| Supply, decimals, conservation, launch-split exactness, boundary surface, dependency integrity | holds |\n\n**What I did not reach.** Nothing in my area was left unexamined. Chain-specific concerns outside my area, such as Robinhood Chain opcode support beyond the Paris target, were not reviewed. The scratch test directory was removed and the working tree holds only the findings file.","treeHash":null,"usage":{"cachedInputTokens":564941,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":12496,"runtime":"claude","turns":26,"wallClockMs":182691}},{"artifacts":[],"attempt":1,"bundleHash":"2dd878091e5d3a5332d64aafa1df04ba71a2624661a3041857c847399d8a23d4","device":"1ccda5cdb3f24f3e","findings":[],"hash":"a8883706f3dc09f1d63ed0c1f9cc7f6640d94f1bafd882da2fbbf1a1e93e8801","nodeId":"d3f74e3b-e5a6-4546-b96f-1c77afc5a8cf","outcome":"completed","summary":"Expanded the existing suite with failure-path tests, 12 fuzz properties, and three stateful invariants.\n\n`forge build` and `forge test` pass with the required seed: **47 tests passed**, including **16,384 random invariant calls**.\n\nOnly `test/` files changed. No implementation defects were found.","treeHash":"a9cd3dcc7cc72aff2784ba89ea681e0295641d67","usage":{"cachedInputTokens":715008,"inputTokens":79732,"model":"gpt-6-astra","outputTokens":13376,"runtime":"codex","turns":5,"wallClockMs":326500}},{"artifacts":[],"attempt":1,"bundleHash":"3bdf52ae880a423ef4cd4a1cdd63f6130b42188acf04b649c352f990be75988d","device":"35c52a5b502e847c","findings":[],"hash":"e73a530cecb91586a423deff16b6b136eaf395d76aad6ccc62fa94ffb7b0a69a","nodeId":"a6de284e-83b8-4972-932b-75112f642049","outcome":"completed","summary":"Implemented [GoatPro.sol](/home/identitymd5/.identitymd/work/4ecf4de9-5046-4f3b-a488-8838e499733e/a6de284e-83b8-4972-932b-75112f642049/src/GoatPro.sol): 1 billion GPRO, 18 decimals, minted once to the deployer, with no administrative powers.\n\nIncluded vendored dependencies and deployment documentation.\n\nValidation passed:\n\n- `forge build` with Solidity 0.8.26\n- `forge test`: 29 passing checks using the specified fuzz seed\n- `forge fmt --check`\n\nFull launch integration remains for the independent verifier.","treeHash":"67dce53659558557d4e58d6b5e2e42062bf7d47e","usage":{"cachedInputTokens":701568,"inputTokens":64909,"model":"gpt-6-astra","outputTokens":11740,"runtime":"codex","turns":5,"wallClockMs":290839}},{"artifacts":[],"attempt":1,"bundleHash":"8aaee2b70e49c46df0a614e770c446d84f905fb0106423dc019fca4d0e52c87f","device":"34d50a3af6e87087","findings":[],"hash":"f41b16e338620c149a50a1211cced8311b7f64a40bcc17b8aae8c85b21f435b2","nodeId":"3c54bf80-60b6-4885-b0bc-f2401e0aefed","outcome":"completed","summary":"Created `launch.json` matching GoatPro’s constructor, exact supply, and required pool/economics values. No application contracts are listed.\n\n`forge build` succeeded; all 29 tests passed with the supplied fuzz seed. Manifest fields and constructor ABI checks passed. Only `launch.json` is changed.","treeHash":"5cc50f1569b3405c78b8519659b56bbcc3c38a7e","usage":{"cachedInputTokens":179200,"inputTokens":38701,"model":"gpt-6-astra","outputTokens":2261,"runtime":"codex","turns":3,"wallClockMs":71367}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"dfa08759ca0424de","findings":[],"hash":"f60b1e0cc3ff6879764cd298213adc19bc8fdcf50179a2f0a29387d52d200778","nodeId":"cf737bcc-fbc3-494b-9292-b5a9f97364d5","outcome":"completed","summary":"The review is complete. The findings file is written with zero defects and a full coverage record, and the working tree is otherwise untouched.\n\n**Result: no defects in the assigned area.** GoatPro is a 17-line contract that inherits the unmodified OpenZeppelin v5.0.2 ERC-20 and mints 1e27 units to msg.sender in its constructor. I confirmed every vendored OpenZeppelin file is byte-identical to the upstream v5.0.2 release.\n\n**What I checked, per guide**\n\n- **Access control.** There is no role, modifier, initializer, proxy or admin function. The only state-changing entry points are approve, transfer and transferFrom, each scoped to msg.sender. Scratch probes confirmed the deployer cannot pull from a holder without an allowance, a stranger cannot pull from the factory, approve only writes the caller's own allowance, and mint, burn, burnFrom, pause, owner and initialize selectors all revert. No receive or fallback, so ETH sends revert. The project's own opcode test shows no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **Asymmetry.** transferFrom is the allowance spend plus the same internal transfer that transfer uses. The mint and burn branches of the balance update are both unreachable after construction. The only asymmetry is the standard ERC-20 approval replacement race, which the README documents and which is not a code defect.\n- **Trust gap.** With no privileged actor, setter, fee recipient, oracle or callback, there is no seam between authorization and value flow. The factory holding the whole supply at deployment is the launch design.\n\n**Coverage record.** All three listed entry points are marked `holds`, plus five invariant rows covering the one-time mint, the absent admin surface, the fixed supply, the paired-function diff and the trust seams. The existing suite of 29 tests, including the 128-run invariant, passes. Slither and Aderyn reported nothing above a cosmetic large-literal note, which I verified is the correct 1e27 supply.\n\nOne item is outside what I could verify: the README's claim of chain ID 4663 as the launch target. The token has no chain dependency, so this does not affect the audit.","treeHash":null,"usage":{"cachedInputTokens":382834,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":8859,"runtime":"claude","turns":14,"wallClockMs":130640}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"1eba9b0f789fcc77","findings":[],"hash":"f8af3b86c76883b646207a1268781b8c13f2246f30637373c30451f55d126b74","nodeId":"c5f26e6e-c78c-4afb-91a1-d45448a4f4df","outcome":"completed","summary":"The findings file is in place and is excluded from the tree by the repository's own exclude list, as intended. No source files were changed.\n\n**Result: no defects found in the assigned area.** The economics audit of GoatPro (GPRO) against the Pashov Economic Security, Invariant and Flow Gap guides turned up nothing reproducible. The written report is `.imd-findings.json` with an empty findings list and eight coverage rows.\n\n**What the token is.** A single 17-line contract inheriting the unmodified OpenZeppelin v5.0.2 ERC-20. The five vendored OpenZeppelin files hash byte for byte to the upstream release. The constructor mints the whole supply to msg.sender and takes no arguments. The ABI exposes only approve, transfer and transferFrom as state-changing entry points.\n\n**What I verified.**\n- Supply invariant. Only the constructor mints, there is no burn, and transfers to the zero address revert. So the supply is fixed at one billion times ten to the eighteenth and can neither grow nor shrink.\n- Conservation. The project's 128-run stateful invariant and my own fuzz with eight recipients, including the token contract itself, both keep the sum of balances equal to the supply.\n- Launch flows. I modelled the Uniswap v4 sync, transfer and settle balance-delta accounting, the distributor share, the remainder transfer, a claim and a buy-and-sell round trip. Every leg credits exactly the amount sent, so no exemption list is needed because there is no tax or burn.\n- Economic dependencies. The runtime bytecode contains no CALL, STATICCALL, DELEGATECALL, CALLCODE, CREATE or SELFDESTRUCT, and no PUSH0 or transient-storage opcodes. There is no oracle, pause, blacklist or owner. Native value sent to the token reverts.\n- Sentinels. The zero address as sender, receiver, spender or approver reverts with the ERC-6093 errors.\n\n**Static analysis leads.** Slither reported nothing. Aderyn's low-severity \"large numeric literal\" is the supply constant itself, which the tests confirm equals the brief's supply. It is style only and not a defect.\n\n**Coverage.** All three listed entry points are marked holds, plus rows for the fixed-supply invariant, the constructor mint recipient, the launch flows, the dependency surface and the compiler target. Nothing in my area was left unreached. The existing 29-test suite passes under the pinned fuzz seed. The protected launch harness needs the v4-core dependency and factory environment, which are not in this tree, so the real PoolManager seed and swap remain for the launch verifier.","treeHash":null,"usage":{"cachedInputTokens":632632,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":11737,"runtime":"claude","turns":21,"wallClockMs":170011}}],"verification":[{"checks":[{"durationMs":1354,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.28s\nCompiler run successful!\n","passed":true},{"durationMs":5236,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 46 tests for test/GoatPro.t.sol:GoatProTest\n[PASS] testFuzz_ApprovalReplacementIsIdempotentAndIsolated(uint256,uint256) (runs: 1000, μ: 391465, ~: 391488)\n[PASS] testFuzz_DelegatedBalanceFailureIsAtomicAndAllowanceRemainsUsable(uint256,uint256,uint256) (runs: 1000, μ: 317955, ~: 318121)\nLogs:\n  Bound result 61582249344992685160625577\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n\n[PASS] testFuzz_DelegatedSelfTransferConsumesFiniteAllowance(uint256,uint256) (runs: 1000, μ: 143649, ~: 143945)\nLogs:\n  Bound result 102\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639841\n\n[PASS] testFuzz_DelegatedZeroReceiverFailurePreservesFiniteAllowance(uint256,uint256) (runs: 1000, μ: 239073, ~: 239937)\nLogs:\n  Bound result 505189942888395699956972038\n  Bound result 2804557042909114562449317632389347807652673968077736422092\n\n[PASS] testFuzz_FiniteAllowanceLimitsCumulativeSpending(uint256,uint256) (runs: 1000, μ: 293478, ~: 295994)\nLogs:\n  Bound result 8\n  Bound result 3\n\n[PASS] testFuzz_SelfTransferCannotBypassBalanceCheck(uint256,uint256,bool) (runs: 1000, μ: 170250, ~: 145498)\nLogs:\n  Bound result 12919111173946610490766914\n  Bound result 12919111173946610490766915\n\n[PASS] testFuzz_SplitTransfersMatchSingleTransfer(uint256,uint256) (runs: 1000, μ: 225139, ~: 226571)\nLogs:\n  Bound result 505189942888395699956972038\n  Bound result 434763690168383140866651225\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1000, μ: 100389, ~: 100617)\nLogs:\n  Bound result 1\n  Bound result 123000000000000000000\n\n[PASS] testFuzz_TransferFromRejectsOverspending(uint256,uint256) (runs: 1000, μ: 128524, ~: 128978)\nLogs:\n  Bound result 1567\n  Bound result 4881\n\n[PASS] testFuzz_TransferFromRespectsApproval(uint256,uint256) (runs: 1000, μ: 169663, ~: 170331)\nLogs:\n  Bound result 790764743559405628418792508\n  Bound result 7724255960505189942888395707681227998\n\n[PASS] testFuzz_TransferMoreThanSupplyReverts(uint256) (runs: 1000, μ: 62089, ~: 62440)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913894865979\n\n[PASS] testFuzz_TransferRoundTripPreservesBalancesAndApprovals(uint256,uint256,uint256) (runs: 1000, μ: 265049, ~: 265846)\nLogs:\n  Bound result 999999999999999999999999998\n  Bound result 0\n\n[PASS] test_ApprovalFromAnotherOwnerDoesNotAuthorizeSpending() (gas: 193565)\n[PASS] test_ApproveEmitsEventAndCanBeReplacedAndRevoked() (gas: 205515)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 40454)\n[PASS] test_ConstructorEmitsExactlyOneMint() (gas: 18397)\n[PASS] test_Create2FactoryReceivesSupplyAndLaunchTransfersAreExact() (gas: 687682)\n[PASS] test_DelegatedTransferToSpenderCreditsOnlyOnce() (gas: 220813)\n[PASS] test_DeployerCannotSeizeHolderTokens() (gas: 161706)\n[PASS] test_EntireBalanceCanBeTransferred() (gas: 78425)\n[PASS] test_HolderNeedsSelfApprovalForTransferFrom() (gas: 201064)\n[PASS] test_InfiniteAllowanceIsNotDecreased() (gas: 144289)\n[PASS] test_InsufficientAllowanceRevertsWithoutSpendingIt() (gas: 120995)\n[PASS] test_InsufficientBalanceRevertsWithoutChangingBalances() (gas: 57807)\n[PASS] test_MaximumUintTransferFailsEvenWithUnlimitedApproval() (gas: 165289)\n[PASS] test_MetadataAndInitialSupply() (gas: 112745)\n[PASS] test_NoMintBurnOrAdministrativeEntryPoints() (gas: 734361)\n[PASS] test_OneBelowMaximumAllowanceIsFinite() (gas: 152868)\n[PASS] test_OneWeiAllowanceCannotBeReusedAfterTokensReturn() (gas: 253914)\n[PASS] test_RuntimeHasNoPrivilegedExecutionOpcodes() (gas: 790602)\n[PASS] test_SelfTransferPreservesBalance() (gas: 54261)\n[PASS] test_TransferEmitsEventAndMovesExactAmount() (gas: 96327)\n[PASS] test_TransferFromConsumesAllowanceAndEmitsTransfer() (gas: 234543)\n[PASS] test_TransferFromInsufficientBalanceRestoresAllowance() (gas: 126581)\n[PASS] test_TransferFromToSelfConsumesAllowanceButPreservesBalance() (gas: 114453)\n[PASS] test_TransferFromToZeroRestoresAllowance() (gas: 119237)\n[PASS] test_TransferFromZeroAmountNeedsNoApproval() (gas: 78809)\n[PASS] test_TransferFromZeroSenderCannotMint() (gas: 79145)\n[PASS] test_TransferFromZeroSenderRevertsEvenForZeroAmount() (gas: 38035)\n[PASS] test_TransferToZeroReverts() (gas: 50481)\n[PASS] test_UnapprovedSpenderCannotMoveTokens() (gas: 122990)\n[PASS] test_UnlimitedAllowanceCanBeRevokedAndReplacedWithFiniteAllowance() (gas: 337974)\n[PASS] test_ZeroApprovalToZeroSpenderReverts() (gas: 53019)\n[PASS] test_ZeroDelegatedTransferToZeroReceiverReverts() (gas: 127247)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73466)\n[PASS] test_ZeroTransferToZeroAlsoReverts() (gas: 33169)\nSuite result: ok. 46 passed; 0 failed; 0 skipped; finished in 117.20ms (1.39s CPU time)\n\nRan 1 test for test/GoatPro.invariant.t.sol:GoatProInvariantTest\n[PASS]\nGoatProInvariantTest invariants:\n[PASS] invariant_BalancesAndAllowancesMatchAuthorizedCalls\n[PASS] invariant_MetadataAndUninvolvedAccountsStayUnchanged\n[PASS] invariant_SupplyAndSumOfBalancesStayConstant\n GoatProInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭----------------+-------------------------+-------+---------+----------╮\n| Contract       | Selector                | Calls | Reverts | Discards |\n+=======================================================================+\n| GoatProHandler | approve                 | 1643  | 0       | 0        |\n|----------------+-------------------------+-------+---------+----------|\n| GoatProHandler | rejectDelegatedOverdraw | 1582  | 0       | 0        |\n|----------------+-------------------------+-------+---------+----------|\n| GoatProHandler | rejectOverAllowance     | 1651  | 0       | 0        |\n|----------------+-------------------------+-------+---------+----------|\n| GoatProHandler | rejectOverdraw          | 1615  | 0       | 0        |\n|----------------+-------------------------+-------+---------+----------|\n| GoatProHandler | rejectZeroReceiver      | 1685  | 0       | 0        |\n|----------------+-------------------------+-------+---------+----------|\n| GoatProHandler | rejectZeroSpender       | 1683  | 0       | 0        |\n|----------------+-------------------------+-------+---------+----------|\n| GoatProHandler | setAllowanceBoundary    | 1614  | 0       | 0        |\n|----------------+-------------------------+-------+---------+----------|\n| GoatProHandler | transfer                | 1678  | 0       | 0        |\n|----------------+-------------------------+-------+---------+----------|\n| GoatProHandler | transferEntireBalance   | 1605  | 0       | 0        |\n|----------------+-------------------------+-------+---------+----------|\n| GoatProHandler | transferFrom            | 1628  | 0       | 0        |\n╰----------------+-------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 250000000000000000000000000\n  Bound result 250000000000000000000000000\n  Bound result 250000000000000000000000000\n  Bound result 4\n  Bound result 8\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129643059\n  Bound result 5460183467816259316447901\n  Bound result 242\n  Bound result 60000000000000000000\n  Bound result 233619449596551222050656294\n  Bound result 39\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129639975\n  Bound result 0\n  Bound result 17750770680245815\n  Bound result 0\n  Bound result 50\n  Bound result 227540689635585136558531\n  Bound result 11\n  Bound result 115792089237316195423570985008687907853269984665640313811976912123098673327225\n  Bound result 1000000000\n  Bound result 0\n  Bound result 299\n  Bound result 115792089237316195423570985008687907853269984665640314266998273643498266198472\n  Bound result 540449747967130343465723782\n  Bound result 5467\n  Bound result 0\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.16s (5.16s CPU time)\n\nRan 2 test suites in 5.16s (5.28s CPU time): 47 tests passed, 0 failed, 0 skipped (47 total tests)\n","passed":true},{"durationMs":31,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"GoatPro.approve(address,uint256)\",\"GoatPro.transfer(address,uint256)\",\"GoatPro.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":26,\"README.md\":110,\"foundry.toml\":18,\"remappings.txt\":2,\"src/GoatPro.sol\":17,\"test/GoatPro.invariant.t.sol\":256,\"test/GoatPro.t.sol\":716},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"a8883706f3dc09f1d63ed0c1f9cc7f6640d94f1bafd882da2fbbf1a1e93e8801","verifiedTreeHash":"a9cd3dcc7cc72aff2784ba89ea681e0295641d67","verifierVersion":"0.1.0+6a374fcd"},{"checks":[{"durationMs":2184,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.05s\nCompiler run successful!\n","passed":true},{"durationMs":1090,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 28 tests for test/GoatPro.t.sol:GoatProTest\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 512, μ: 99793, ~: 100081)\nLogs:\n  Bound result 948136135774031025151141340\n\n[PASS] testFuzz_TransferFromRejectsOverspending(uint256,uint256) (runs: 512, μ: 128461, ~: 128831)\nLogs:\n  Bound result 464463614571231623843857717\n  Bound result 740774255166436832137705306\n\n[PASS] testFuzz_TransferFromRespectsApproval(uint256,uint256) (runs: 512, μ: 169551, ~: 170272)\nLogs:\n  Bound result 164975833331839173740416700\n  Bound result 1656864534384245618128076406279129\n\n[PASS] testFuzz_TransferMoreThanSupplyReverts(uint256) (runs: 512, μ: 62033, ~: 62379)\nLogs:\n  Bound result 388461169720686494277844552435481572577055479334047203\n\n[PASS] test_ApproveEmitsEventAndCanBeReplacedAndRevoked() (gas: 205420)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 40414)\n[PASS] test_ConstructorEmitsExactlyOneMint() (gas: 18436)\n[PASS] test_Create2FactoryReceivesSupplyAndLaunchTransfersAreExact() (gas: 687716)\n[PASS] test_DeployerCannotSeizeHolderTokens() (gas: 161597)\n[PASS] test_EntireBalanceCanBeTransferred() (gas: 78395)\n[PASS] test_InfiniteAllowanceIsNotDecreased() (gas: 144308)\n[PASS] test_InsufficientAllowanceRevertsWithoutSpendingIt() (gas: 120947)\n[PASS] test_InsufficientBalanceRevertsWithoutChangingBalances() (gas: 57844)\n[PASS] test_MetadataAndInitialSupply() (gas: 112875)\n[PASS] test_NoMintBurnOrAdministrativeEntryPoints() (gas: 734302)\n[PASS] test_RuntimeHasNoPrivilegedExecutionOpcodes() (gas: 790580)\n[PASS] test_SelfTransferPreservesBalance() (gas: 54187)\n[PASS] test_TransferEmitsEventAndMovesExactAmount() (gas: 96287)\n[PASS] test_TransferFromConsumesAllowanceAndEmitsTransfer() (gas: 234544)\n[PASS] test_TransferFromInsufficientBalanceRestoresAllowance() (gas: 126578)\n[PASS] test_TransferFromToSelfConsumesAllowanceButPreservesBalance() (gas: 114449)\n[PASS] test_TransferFromToZeroRestoresAllowance() (gas: 119168)\n[PASS] test_TransferFromZeroAmountNeedsNoApproval() (gas: 78856)\n[PASS] test_TransferFromZeroSenderRevertsEvenForZeroAmount() (gas: 38072)\n[PASS] test_TransferToZeroReverts() (gas: 50430)\n[PASS] test_UnapprovedSpenderCannotMoveTokens() (gas: 123009)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73403)\n[PASS] test_ZeroTransferToZeroAlsoReverts() (gas: 33096)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 41.45ms (156.22ms CPU time)\n\nRan 1 test for test/GoatPro.invariant.t.sol:GoatProInvariantTest\n[PASS] invariant_SupplyAndSumOfBalancesStayConstant() (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+--------------+-------+---------+----------╮\n| Contract       | Selector     | Calls | Reverts | Discards |\n+============================================================+\n| GoatProHandler | approve      | 2778  | 0       | 0        |\n|----------------+--------------+-------+---------+----------|\n| GoatProHandler | transfer     | 2704  | 0       | 0        |\n|----------------+--------------+-------+---------+----------|\n| GoatProHandler | transferFrom | 2710  | 0       | 0        |\n╰----------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 692\n  Bound result 0\n  Bound result 0\n  Bound result 595\n  Bound result 51\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 289\n  Bound result 0\n  Bound result 429478163786895935972711113\n  Bound result 0\n  Bound result 174\n  Bound result 6\n  Bound result 0\n  Bound result 4164\n  Bound result 601\n  Bound result 0\n  Bound result 5210\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 163\n  Bound result 11\n  Bound result 50\n  Bound result 0\n  Bound result 416\n  Bound result 124\n  Bound result 29\n  Bound result 0\n  Bound result 3\n  Bound result 61\n  Bound result 60\n  Bound result 1405\n  Bound result 96\n  Bound result 1495\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 939.10ms (937.10ms CPU time)\n\nRan 2 test suites in 942.51ms (980.55ms CPU time): 29 tests passed, 0 failed, 0 skipped (29 total tests)\n","passed":true},{"durationMs":77,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"GoatPro.approve(address,uint256)\",\"GoatPro.transfer(address,uint256)\",\"GoatPro.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":26,\"README.md\":110,\"foundry.toml\":18,\"remappings.txt\":2,\"src/GoatPro.sol\":17,\"test/GoatPro.invariant.t.sol\":80,\"test/GoatPro.t.sol\":382},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":1427,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":551,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/GoatPro.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"e73a530cecb91586a423deff16b6b136eaf395d76aad6ccc62fa94ffb7b0a69a","verifiedTreeHash":"67dce53659558557d4e58d6b5e2e42062bf7d47e","verifierVersion":"0.1.0+6a374fcd"},{"checks":[{"durationMs":1915,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.80s\nCompiler run successful!\n","passed":true},{"durationMs":875,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 28 tests for test/GoatPro.t.sol:GoatProTest\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 512, μ: 99793, ~: 100081)\nLogs:\n  Bound result 300715887537547750967358602\n\n[PASS] testFuzz_TransferFromRejectsOverspending(uint256,uint256) (runs: 512, μ: 128461, ~: 128831)\nLogs:\n  Bound result 767662723384639463218160416\n  Bound result 868598778033831026245798466\n\n[PASS] testFuzz_TransferFromRespectsApproval(uint256,uint256) (runs: 512, μ: 169551, ~: 170272)\nLogs:\n  Bound result 5682\n  Bound result 8305\n\n[PASS] testFuzz_TransferMoreThanSupplyReverts(uint256) (runs: 512, μ: 62033, ~: 62379)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129655315\n\n[PASS] test_ApproveEmitsEventAndCanBeReplacedAndRevoked() (gas: 205420)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 40414)\n[PASS] test_ConstructorEmitsExactlyOneMint() (gas: 18436)\n[PASS] test_Create2FactoryReceivesSupplyAndLaunchTransfersAreExact() (gas: 687716)\n[PASS] test_DeployerCannotSeizeHolderTokens() (gas: 161597)\n[PASS] test_EntireBalanceCanBeTransferred() (gas: 78395)\n[PASS] test_InfiniteAllowanceIsNotDecreased() (gas: 144308)\n[PASS] test_InsufficientAllowanceRevertsWithoutSpendingIt() (gas: 120947)\n[PASS] test_InsufficientBalanceRevertsWithoutChangingBalances() (gas: 57844)\n[PASS] test_MetadataAndInitialSupply() (gas: 112875)\n[PASS] test_NoMintBurnOrAdministrativeEntryPoints() (gas: 734302)\n[PASS] test_RuntimeHasNoPrivilegedExecutionOpcodes() (gas: 790580)\n[PASS] test_SelfTransferPreservesBalance() (gas: 54187)\n[PASS] test_TransferEmitsEventAndMovesExactAmount() (gas: 96287)\n[PASS] test_TransferFromConsumesAllowanceAndEmitsTransfer() (gas: 234544)\n[PASS] test_TransferFromInsufficientBalanceRestoresAllowance() (gas: 126578)\n[PASS] test_TransferFromToSelfConsumesAllowanceButPreservesBalance() (gas: 114449)\n[PASS] test_TransferFromToZeroRestoresAllowance() (gas: 119168)\n[PASS] test_TransferFromZeroAmountNeedsNoApproval() (gas: 78856)\n[PASS] test_TransferFromZeroSenderRevertsEvenForZeroAmount() (gas: 38072)\n[PASS] test_TransferToZeroReverts() (gas: 50430)\n[PASS] test_UnapprovedSpenderCannotMoveTokens() (gas: 123009)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73403)\n[PASS] test_ZeroTransferToZeroAlsoReverts() (gas: 33096)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 28.22ms (119.99ms CPU time)\n\nRan 1 test for test/GoatPro.invariant.t.sol:GoatProInvariantTest\n[PASS] invariant_SupplyAndSumOfBalancesStayConstant() (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+--------------+-------+---------+----------╮\n| Contract       | Selector     | Calls | Reverts | Discards |\n+============================================================+\n| GoatProHandler | approve      | 2778  | 0       | 0        |\n|----------------+--------------+-------+---------+----------|\n| GoatProHandler | transfer     | 2704  | 0       | 0        |\n|----------------+--------------+-------+---------+----------|\n| GoatProHandler | transferFrom | 2710  | 0       | 0        |\n╰----------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 692\n  Bound result 0\n  Bound result 0\n  Bound result 595\n  Bound result 51\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 289\n  Bound result 0\n  Bound result 429478163786895935972711113\n  Bound result 0\n  Bound result 174\n  Bound result 6\n  Bound result 0\n  Bound result 4164\n  Bound result 594\n  Bound result 0\n  Bound result 308\n  Bound result 1709\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 11\n  Bound result 50\n  Bound result 0\n  Bound result 3772\n  Bound result 0\n  Bound result 0\n  Bound result 60\n  Bound result 51\n  Bound result 17\n  Bound result 60\n  Bound result 14\n  Bound result 96\n  Bound result 1495\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 750.07ms (748.15ms CPU time)\n\nRan 2 test suites in 751.76ms (778.29ms CPU time): 29 tests passed, 0 failed, 0 skipped (29 total tests)\n","passed":true},{"durationMs":60,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"GoatPro.approve(address,uint256)\",\"GoatPro.transfer(address,uint256)\",\"GoatPro.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":26,\"README.md\":110,\"foundry.toml\":18,\"launch.json\":24,\"remappings.txt\":2,\"src/GoatPro.sol\":17,\"test/GoatPro.invariant.t.sol\":80,\"test/GoatPro.t.sol\":382},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"f41b16e338620c149a50a1211cced8311b7f64a40bcc17b8aae8c85b21f435b2","verifiedTreeHash":"5cc50f1569b3405c78b8519659b56bbcc3c38a7e","verifierVersion":"0.1.0+6a374fcd"}]}