{"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":"ced71e54-4346-4714-aa89-5d525ac5934a","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"a70dbf57f0b2de42b12532a4fb38fef9c8ae0a6de5fd7d1fb9bab3f51bba4eb1","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":"4cc5cd90b2dc283362f89a5c2f6cdbe1fd32347f9b6e248ba4962a44f3db3f6f","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":"c9bf7d229821d9033d8cb84e540e8c02d0614ce0ff1ec363d3a274d5cb260f35","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":"0e0c4d8676c36a2a37823edd04a17a6e61db78598aa6974463a1c4915c08023c","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":"4ab161dfbae58b14ef782b617eb0eb8b426b4a957d6e27e8002c811f51064088","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":"1d198c33fb7f17edf9446ed09c326dd76ddf6b564d3d6a85aebfc74e077c3786","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":"2eedd379ae1a4233455a87532e4ee628289034517f474ebe5d8fbc960cdd493a","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"f7461b9d7f07d620a7caf6a5e1698f7da42679f07f69ccb9be6cee0b6d7802ab","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: Proof House (ARTIFACTS).\nToken name: Proof House\nToken symbol: ARTIFACTS\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"2a9f8f5af50c8239313c2ed186bb6abff528732819aa51bcdf9ea66c7aa2bf20","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"ced71e54-4346-4714-aa89-5d525ac5934a","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1886-proof-house"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51488","feedbackHash":"456fe59728d541c1ece6a8c9bc9d0d0f1f9757bf6440a547bc90e75918c83c89","nodeKey":"audit_economics","submissionHash":"a70dbf57f0b2de42b12532a4fb38fef9c8ae0a6de5fd7d1fb9bab3f51bba4eb1","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51035","feedbackHash":"4380af7660580aba04e9010af69a80f67b50d87939f85888532dd82c555fcc07","nodeKey":"audit_flow","submissionHash":"4cc5cd90b2dc283362f89a5c2f6cdbe1fd32347f9b6e248ba4962a44f3db3f6f","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50969","feedbackHash":"821f94eb7a1b3b91308a0fe8fc1521907c3a32b9af1844c92c95562485265d4a","nodeKey":"audit_judge","submissionHash":"c9bf7d229821d9033d8cb84e540e8c02d0614ce0ff1ec363d3a274d5cb260f35","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51203","feedbackHash":"9df85c7e53ed765cb6976655d1bfaee64d157e66b2d941091bd41cf962ad9565","nodeKey":"audit_math","submissionHash":"0e0c4d8676c36a2a37823edd04a17a6e61db78598aa6974463a1c4915c08023c","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52628","feedbackHash":"54a0e241d2cfcd72b5381a5c6c4b1da004eca061fa3221dcfe31eb47876346c2","nodeKey":"audit_permissions","submissionHash":"4ab161dfbae58b14ef782b617eb0eb8b426b4a957d6e27e8002c811f51064088","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51456","feedbackHash":"f5dd2bf745c7614a3de11b887efdd52022737efcec7193f4e9f5f8e1ea6bc301","nodeKey":"build_contract_project","submissionHash":"1d198c33fb7f17edf9446ed09c326dd76ddf6b564d3d6a85aebfc74e077c3786","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"50973","feedbackHash":"0fd94ded5c13cee26b36be569da9a47407cc1a576b6070ec5d6edd321e956582","nodeKey":"manifest","submissionHash":"2eedd379ae1a4233455a87532e4ee628289034517f474ebe5d8fbc960cdd493a","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52094","feedbackHash":"c0bf553cf726d14c65b013523efd332b6826338d4859583da5f8ab36b2bc4404","nodeKey":"write_foundry_tests","submissionHash":"f7461b9d7f07d620a7caf6a5e1698f7da42679f07f69ccb9be6cee0b6d7802ab","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"e02cca0e7a9f0b1e989b979619bc36bf44666a807792d0a9ee279eebc569d744","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"896d1238054266ca","findings":[],"hash":"0e0c4d8676c36a2a37823edd04a17a6e61db78598aa6974463a1c4915c08023c","nodeId":"d3786a6a-c680-4534-9119-58a61774f789","outcome":"completed","summary":"Review complete. The findings file is written with zero defects and a full coverage record. Nothing else is needed.\n\n**Result: no math, boundary or numerical-gap defects in Proof House (ARTIFACTS).** The token is a plain OpenZeppelin v5.0.2 ERC-20 whose only addition is a constant supply minted once in the constructor. There is no division, scaling, casting, fee or external call anywhere in the contract, so most failure modes in the Math Precision, Boundary and Numerical Gap guides have no code to attach to.\n\nWhat I verified, all passing:\n\n- **Supply constant is exact.** The literal evaluates to exactly 10^27 at compile time with zero remainder against 18 decimals, and it fits uint96 and uint128. The aderyn \"large numeric literal\" lead is style only.\n- **Every unchecked block is guarded.** The balance subtract and allowance subtract each sit behind a checked comparison, and the balance add cannot wrap because balances always sum to the supply.\n- **Edge inputs behave correctly.** Zero, one wei, full supply, supply plus one, max uint, allowance of max and max minus one, exact allowance, self-transfer and self-overdraw all either move the exact amount or revert atomically with the OZ custom error.\n- **Supply conservation holds under rounding-adjacent splits.** A seven-way split with a non-zero dust remainder, the project's 8,192-call invariant run, and fuzzed allowance decrements all conserve totals exactly.\n- **Launch split math is exact.** The ten, eighty, two and eight percent shares of 10^27 have no remainder, and the basis-point multiplication cannot overflow.\n- **Vendored library is genuine.** I downloaded the v5.0.2 release, matched its SHA-256 to the hash declared in UPSTREAM.md, and all five vendored files are byte-identical to upstream.\n\nThe coverage record marks all three entry points as holding, plus five invariant rows. The scratch tests I wrote under test/scratch were removed after they passed, since there is no finding to attach them to, and the working tree is otherwise untouched.","treeHash":null,"usage":{"cachedInputTokens":643865,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":12305,"runtime":"claude","turns":21,"wallClockMs":184702}},{"artifacts":[],"attempt":1,"bundleHash":"8bb250bb5e5452895d4b05defa05b41cfa5635284b5d35da2e3cb272e473a0b7","device":"f4cf051c8a9d8584","findings":[],"hash":"1d198c33fb7f17edf9446ed09c326dd76ddf6b564d3d6a85aebfc74e077c3786","nodeId":"eccae354-4a97-446c-a587-9f850276ca6e","outcome":"completed","summary":"Implemented Proof House (ARTIFACTS) with 18 decimals and exactly 1,000,000,000 tokens minted once to the deployer.\n\nDependencies are vendored for offline builds. README documents deployment, assumptions, and operational responsibilities.\n\nVerified with Solidity 0.8.26:\n\n- `forge build` — passed, including a fresh offline build.\n- `forge test` — all 38 tests passed with the required fuzz seed.\n- `forge fmt --check` — passed.","treeHash":"fc94d1454a5da02ec0f6535f2062177fbea11bba","usage":{"cachedInputTokens":336896,"inputTokens":47100,"model":"gpt-6-astra","outputTokens":13274,"runtime":"codex","turns":5,"wallClockMs":315949}},{"artifacts":[],"attempt":1,"bundleHash":"b17107f80338ebefd484d2e933f464665fd373e453057ecbecf15d449e006552","device":"2717ac8e1d58fd36","findings":[],"hash":"2eedd379ae1a4233455a87532e4ee628289034517f474ebe5d8fbc960cdd493a","nodeId":"462e124c-6f0c-418e-9bec-91a03407bb9c","outcome":"completed","summary":"Created `launch.json` matching `ProofHouseToken`, its parameterless constructor, exact supply, and required pool/economics.\n\nValidation passed: manifest checks, compiled constructor ABI, `forge build`, and all 38 tests using the supplied fuzz seed.\n\nOnly `launch.json` is changed for submission.","treeHash":"cecc47f15a7eda900ab8be7c46a8e13469297876","usage":{"cachedInputTokens":236672,"inputTokens":27915,"model":"gpt-6-astra","outputTokens":2454,"runtime":"codex","turns":3,"wallClockMs":95827}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"764cd99b4c628a47","findings":[{"citation":"resolved","description":"Asymmetry / trust-gap note, not a defect in this token. The approve <-> transferFrom pair is the only paired surface in the contract. approve writes _allowances[owner][spender] = value unconditionally (ERC20.sol:291), while transferFrom reads and decrements it (ERC20.sol:305-315). Because the write is a replacement rather than a delta, a spender who already holds a nonzero allowance can spend it in the same block as, and ahead of, the holder's replacement approve, and then spend the replacement too. This is the standard ERC-20 approval race (EIP-20, 'approve' note); OpenZeppelin v5 removed increaseAllowance/decreaseAllowance and the project's README (lines 107-109) tells holders to revoke to zero first. The requested design is a plain ERC-20 with no extensions, so adding increase/decrease or permit helpers would widen the agreed ABI. Reported so the judge has the trust assumption on record with a reproduction; the recommended action is to keep the README guidance, not to change the contract. Everything else in the assigned area (Access Control, Trust Gap, Asymmetry) holds: there is no owner, role, modifier, initializer, proxy, delegatecall, receive/fallback, mint path (_mint is called only in the constructor; transferFrom(address(0), ...) is stopped by _spendAllowance before _update), burn path (_burn has no caller; to == address(0) reverts in _transfer), or deployer privilege (the deployer is an ordinary holder once it transfers its balance). The five vendored OpenZeppelin files are byte-identical to the v5.0.2 release archive (SHA-256 18c7b7e9...925a), the compiled ABI exposes exactly approve/transfer/transferFrom as state-changing functions, and INITIAL_SUPPLY is 10^27 (the aderyn large-literal lead is a compile-time constant that matches the manifest supply).","line":132,"path":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","reproduction":"State: deployer transfers 150e18 ARTIFACTS to alice; alice calls approve(spender, 100e18). alice then broadcasts approve(spender, 50e18) intending to reduce. Spender front-runs with transferFrom(alice, spender, 100e18) (succeeds: allowance 100e18 >= 100e18), alice's approve(spender, 50e18) lands and sets allowance to 50e18, spender calls transferFrom(alice, spender, 50e18). Expected by alice: at most 50e18 spendable after the change. Actual: balanceOf(spender) == 150e18, balanceOf(alice) == 0. Verified with a Foundry test (test_approveReplaceRace) against the unmodified tree; it passes, i.e. the behaviour is as described. Revoking to zero and confirming before re-approving (as the README instructs) closes the window.","severity":"info","snippet":"    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }","title":"approve replaces the allowance outright, so a spender can capture old plus new allowance by front-running a re-approval (inherent ERC-20 behaviour, documented, no code change required)"}],"hash":"4ab161dfbae58b14ef782b617eb0eb8b426b4a957d6e27e8002c811f51064088","nodeId":"be926ce7-7b74-4663-bd18-e74a17acbba1","outcome":"completed","summary":"The review is complete and the findings file is written. The permissions audit of Proof House (ARTIFACTS) found no defect in the assigned area.\n\n**Outcome.** `.imd-findings.json` holds one informational note and six coverage rows, all `holds`. The token is a 17-line wrapper over the vendored OpenZeppelin ERC-20 with a single constructor mint, and nothing in the Access Control, Trust Gap or Asymmetry checklists reaches a failure.\n\n**What I verified**\n- **No privileged surface.** The compiled ABI exposes only approve, transfer and transferFrom as state-changing functions, plus seven views. There is no owner, role, modifier, initializer, proxy, delegatecall, selfdestruct, receive or fallback. ETH and unknown selectors revert.\n- **Supply is fixed.** The mint branch of the internal update function is reachable only from the constructor. Calling transferFrom with the zero address as the source is stopped by the allowance check before any balance write. No burn caller exists and transfers to the zero address revert.\n- **Deployer has no residual power.** Once the factory moves its balance it is an ordinary account and cannot pull from holders without allowance.\n- **Paired surfaces are symmetric.** transfer and transferFrom share the same internal path. The only asymmetry is the standard approve-replace semantics, recorded as the info note with a concrete front-running reproduction. The README already tells holders to revoke to zero first, and the requested design is a plain ERC-20, so I recommend no contract change.\n- **Dependencies are genuine.** All five vendored OpenZeppelin files are byte-identical to the v5.0.2 release archive, whose hash matches the project's UPSTREAM.md. The context helper uses plain msg.sender with no meta-transaction forwarder.\n- **Static analysis leads.** Slither reported nothing. Aderyn's large-literal lead is a compile-time constant equal to the manifest supply of 10^27, so it is not a finding.\n\n**Checks run.** The existing suite of 38 unit, fuzz and invariant tests passed with the documented seed. Six scratch probe tests I wrote to pin down the claims above also passed. The scratch directory has been removed and no repository file was changed.\n\n**Not covered.** The protected launch harness depends on the platform's factory, pool manager and manifest environment and cannot run here. I did not attempt it.","treeHash":null,"usage":{"cachedInputTokens":588329,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":13010,"runtime":"claude","turns":24,"wallClockMs":187517}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8472a2af9a9cf974","findings":[],"hash":"4cc5cd90b2dc283362f89a5c2f6cdbe1fd32347f9b6e248ba4962a44f3db3f6f","nodeId":"885521e4-62e4-4ed5-b972-c6557a3684d1","outcome":"completed","summary":"The review is complete. No defects were found, and the findings file on disk records that result with full coverage.\n\n**Outcome:** `.imd-findings.json` holds an empty findings list and six coverage rows, all `holds`: the three listed entry points, the constructor mint, the vendored OpenZeppelin periphery, and the launch flows.\n\n**What I verified**\n\n- **Execution Trace.** Each of `approve`, `transfer` and `transferFrom` was traced through OpenZeppelin's `_approve`, `_transfer`, `_update` and `_spendAllowance`. There are no external calls, so no stale reads or partial-update windows exist. A failing transfer inside `transferFrom` reverts the whole call and restores the allowance. Zero-address sentinels revert on every path, and the max-uint allowance is the only special value, behaving as documented.\n- **Periphery.** All five vendored OpenZeppelin files are SHA-256 identical to the upstream v5.0.2 tag, so the base contract the token trusts is genuine. `Context` returns plain `msg.sender`, with no meta-transaction forwarder.\n- **First Principles.** The constant equals 10^27, matching one billion tokens at 18 decimals. One mint to `msg.sender` means the factory holds the whole supply under CREATE2 deployment. The compiled ABI exposes only the three non-view functions plus views, with no receive, fallback, owner, mint, burn, pause or forbidden opcodes.\n- **Checks run.** The shipped suite passed with the README's seed, 38 tests including the invariant run. `forge fmt --check` passed. A scratch suite of seven extra boundary tests passed and was removed afterwards. Static analysis reported only a style-level large-literal note, which is not a defect.\n\n**Trust assumptions, not findings.** The standard ERC-20 approve ordering race applies, as it does to every OpenZeppelin v5 token, and the README already advises revoking before re-approving. Tokens sent to the contract itself are unrecoverable by design, since there is no administrator.\n\n**Not reached.** Nothing within the assigned area was left unchecked. The protected Uniswap v4 harness could not be executed here because it depends on platform contracts outside this tree, but the token has no transfer rule that could short those flows.","treeHash":null,"usage":{"cachedInputTokens":1016235,"inputTokens":482,"model":"claude-fable-5-1","outputTokens":10609,"runtime":"claude","turns":16,"wallClockMs":172665}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"5835e48821d8827d","findings":[],"hash":"a70dbf57f0b2de42b12532a4fb38fef9c8ae0a6de5fd7d1fb9bab3f51bba4eb1","nodeId":"3c15eab0-7351-4b2c-ade6-21ea22650e85","outcome":"completed","summary":"The review is complete and no defects were found. The findings file is written with an empty findings list and a full coverage record.\n\n**What I reviewed**\n\nThe token at `src/ProofHouseToken.sol` is a 17-line contract that inherits the vendored OpenZeppelin v5.0.2 ERC20 unchanged and mints the whole supply once in the constructor. I checked it against the Economic Security, Invariant and Flow Gap guides, the Senior Auditor's Mindset, and the Finding Validation gates.\n\n- **Vendored dependency.** The ERC20 body, Context, and the interface closure match upstream v5.0.2. There is no override of the transfer or allowance internals.\n- **Entry points.** The compiled ABI exposes only approve, transfer and transferFrom as state-changing functions. There is no receive, fallback, owner, mint, burn, pause or blacklist path.\n- **Conservation.** Supply is minted once and can never change. The existing invariant suite and my own multi-actor fuzz confirm the sum of balances always equals the supply.\n- **Launch flow economics.** The ten percent swarm and eighty percent pool splits divide the supply with zero dust. Transfers to the distributor, the pool, the requester and a trader in both directions move exactly the stated amount. No fee, exemption or callback exists to short any leg.\n- **Sentinels and boundaries.** Transfers and approvals involving the zero address revert. Overdrafts and over-allowance spends revert atomically, restoring state. The unlimited allowance is never decremented.\n- **Static-analysis leads.** Slither reported nothing. Aderyn's large-numeric-literal note is the supply constant and is not a defect.\n\n**What I ran**\n\nThe existing suite of 38 unit, fuzz and invariant tests passes. My scratch tests covering the launch split, eight-actor conservation and the absence of supply growth or ETH acceptance also passed. The scratch directory has been removed so the tree is unchanged apart from the findings file.\n\n**Coverage record**\n\nAll three listed entry points are marked holds, with four extra rows for the supply, launch-flow, privilege and deployment invariants. The only standard caveat is the ERC-20 approve ordering race, which the README already documents and which is inherent to the requested design rather than a defect.","treeHash":null,"usage":{"cachedInputTokens":482915,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":10326,"runtime":"claude","turns":23,"wallClockMs":155575}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"93ca4a1020037bf1","findings":[],"hash":"c9bf7d229821d9033d8cb84e540e8c02d0614ce0ff1ec363d3a274d5cb260f35","nodeId":"42b4a1a1-3172-493a-af34-40e7e833d814","outcome":"completed","summary":"I found no defects in Proof House (ARTIFACTS), so `.imd-findings.json` holds `{\"findings\":[]}` plus a coverage record for every entry point.\n\n**What the code is:** `src/ProofHouseToken.sol` is a plain OpenZeppelin v5 ERC-20 that changes nothing in the library. Its constructor mints `1_000_000_000 * 10 ** 18` once to `msg.sender`, the launch factory. There is no owner, no mint or burn function, no fee or burn on transfer, no pause or blacklist, and no DELEGATECALL or SELFDESTRUCT.\n\n**The specialists' one finding (permissions, info) is dropped.** It describes the approve front-running race, where a spender uses the old allowance before a new `approve` replaces it. I confirmed the vendored `_approve` overwrites the allowance, so the behaviour is real. But every ERC-20 works this way under the standard, and nothing in this code makes it worse, so it isn't a defect to send back to the author. The other areas reported no findings. There was nothing to merge.\n\n**Static-analysis lead:** aderyn flagged a large numeric literal at line 10. That is the `INITIAL_SUPPLY` constant, and it equals the manifest's `totalSupply` of `\"1000000000000000000000000000\"`. Slither reported nothing.\n\n**Coverage, all `holds`:**\n- **`approve`:** rejects a zero owner or spender, sets the allowance and emits the event.\n- **`transfer`:** moves exactly the amount sent and rejects zero addresses and short balances. So the launch flows arrive whole: factory to distributor, distributor to claimants, and in and out of the pool manager.\n- **`transferFrom`:** spends the allowance before the transfer, and an unlimited allowance is not reduced. A `transferFrom` from the zero address cannot mint.\n- **Fixed supply and deployability:** the constructor takes no arguments, which matches `constructorArgs: []`. Decimals are 18, as the manifest says, and nothing needs special address bits or exceeds size limits.\n\n`forge test` on the existing suite passed 45 of 45. I ran the project's tests only, not the protected launch-floor tests (`Token.protected.t.sol`), because they need the verifier's launch environment. I wrote no test of my own because there was nothing to prove. No other files were changed.","treeHash":null,"usage":{"cachedInputTokens":223426,"inputTokens":10,"model":"claude-opus-5-5","outputTokens":2495,"runtime":"claude","turns":5,"wallClockMs":49689}},{"artifacts":[],"attempt":1,"bundleHash":"117ce688503e5f2aa451a59df1b9169f38bf58d3fedd3b0956e8798c711d5e0c","device":"cd33e6f138d75a0c","findings":[],"hash":"f7461b9d7f07d620a7caf6a5e1698f7da42679f07f69ccb9be6cee0b6d7802ab","nodeId":"5d95e2a5-2f88-483c-8219-effd7b625899","outcome":"completed","summary":"Extended only the existing files under `test/` with allowance edge cases, failure rollback checks, fuzz tests, and randomized invariants.\n\nVerified:\n\n- `forge build` passes.\n- All 45 tests pass with the supplied seed.\n- Invariants pass across 32,768 handler calls.\n\nNo implementation defects found.","treeHash":"91c06a52acd2a3f2114e8b9e96b8e6da6c9753e0","usage":{"cachedInputTokens":425216,"inputTokens":54556,"model":"gpt-6.1-sol","outputTokens":6339,"runtime":"codex","turns":4,"wallClockMs":140544}}],"verification":[{"checks":[{"durationMs":1238,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.13s\nCompiler run successful!\n","passed":true},{"durationMs":1940,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 37 tests for test/ProofHouseToken.t.sol:ProofHouseTokenTest\n[PASS] testApprovalCanBeReplacedAndRevoked() (gas: 174334)\n[PASS] testApprovalDoesNotRequireBalance() (gas: 78637)\n[PASS] testApprovalEmitsEventAndIsIsolated() (gas: 104165)\n[PASS] testConstructorEmitsExactlyOneMint() (gas: 9674)\n[PASS] testDeployerCannotTakeHolderTokens() (gas: 158380)\n[PASS] testDirectDeploymentMintsToCaller() (gas: 20167)\n[PASS] testEntireSupplyCanMoveAndReturn() (gas: 149103)\n[PASS] testExactAllowanceIsExhausted() (gas: 162038)\n[PASS] testFactoryDeploymentAndLaunchTransfersAreExact() (gas: 675572)\n[PASS] testFuzzInsufficientAllowanceIsAtomic(uint256,uint256) (runs: 512, μ: 123397, ~: 123860)\nLogs:\n  Bound result 17162\n  Bound result 4202047188\n\n[PASS] testFuzzNonzeroRecipientsReceiveExactAmount(address,uint256) (runs: 512, μ: 92947, ~: 93175)\nLogs:\n  Bound result 687123929169888781597852607\n\n[PASS] testFuzzSelfTransfersPreserveSupply(uint256) (runs: 512, μ: 55142, ~: 54879)\nLogs:\n  Bound result 13723\n\n[PASS] testFuzzTransferAboveBalanceIsAtomic(uint256) (runs: 512, μ: 69248, ~: 69567)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129921374\n\n[PASS] testFuzzTransferFromAccounting(uint256,uint256) (runs: 512, μ: 164632, ~: 165589)\nLogs:\n  Bound result 543204009797043854277634324\n  Bound result 43765242435544717645350708588001074263518386102773955772234\n\n[PASS] testFuzzTransfersConserveSupply(uint256) (runs: 512, μ: 187502, ~: 188110)\nLogs:\n  Bound result 430456253081319529382167298\n\n[PASS] testMetadataAndInitialSupply() (gas: 107628)\n[PASS] testNoMintBurnOrAdministrativeEntryPoints() (gas: 782316)\n[PASS] testRejectsNativeCurrency() (gas: 42662)\n[PASS] testRevertApprovalToZeroSpender() (gas: 37573)\n[PASS] testRevertTransferAboveBalance() (gas: 54968)\n[PASS] testRevertTransferFromAboveAllowance() (gas: 105640)\n[PASS] testRevertTransferFromAboveBalanceRestoresAllowance() (gas: 122112)\n[PASS] testRevertTransferFromEmptyAccount() (gas: 37930)\n[PASS] testRevertTransferFromToZeroRestoresAllowance() (gas: 114485)\n[PASS] testRevertTransferFromWithWrongSpender() (gas: 105568)\n[PASS] testRevertTransferFromZeroSender() (gas: 35342)\n[PASS] testRevertTransferToZero() (gas: 47640)\n[PASS] testRevertZeroTransferToZero() (gas: 30434)\n[PASS] testRuntimeHasNoForbiddenOpcodesOrOversizedCode() (gas: 1038944)\n[PASS] testSelfTransferFromConsumesAllowanceWithoutChangingBalance() (gas: 110115)\n[PASS] testSelfTransferPreservesBalance() (gas: 51487)\n[PASS] testTransferDoesNotCallRecipient() (gas: 173836)\n[PASS] testTransferEmitsEventAndMovesExactAmount() (gas: 93528)\n[PASS] testTransferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 162526)\n[PASS] testUnlimitedAllowanceRemainsUnchanged() (gas: 204573)\n[PASS] testZeroTransferFromEmptyAccountEmitsEvent() (gas: 63035)\n[PASS] testZeroTransferFromNeedsNoAllowance() (gas: 80739)\nSuite result: ok. 37 passed; 0 failed; 0 skipped; finished in 32.35ms (163.24ms CPU time)\n\nRan 1 test for test/ProofHouseToken.invariant.t.sol:ProofHouseTokenInvariantTest\n[PASS] invariantSupplyBalancesAndAllowancesMatchModel() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 2020  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | overdraw     | 1963  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 2089  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 2120  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 9\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 29\n  Bound result 10\n  Bound result 2\n  Bound result 6\n  Bound result 2415\n  Bound result 0\n  Bound result 0\n  Bound result 4\n  Bound result 0\n  Bound result 12\n  Bound result 586\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 636\n  Bound result 0\n  Bound result 2\n  Bound result 5037\n  Bound result 18\n  Bound result 130082711171594828980783612\n  Bound result 242\n  Bound result 0\n  Bound result 3164\n  Bound result 410\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.86s (1.86s CPU time)\n\nRan 2 test suites in 1.86s (1.89s CPU time): 38 tests passed, 0 failed, 0 skipped (38 total tests)\n","passed":true},{"durationMs":33,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ProofHouseToken.approve(address,uint256)\",\"ProofHouseToken.transfer(address,uint256)\",\"ProofHouseToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":125,\"foundry.toml\":18,\"remappings.txt\":2,\"src/ProofHouseToken.sol\":17,\"test/ProofHouseToken.invariant.t.sol\":107,\"test/ProofHouseToken.t.sol\":437},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":409,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":227,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/ProofHouseToken.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"1d198c33fb7f17edf9446ed09c326dd76ddf6b564d3d6a85aebfc74e077c3786","verifiedTreeHash":"fc94d1454a5da02ec0f6535f2062177fbea11bba","verifierVersion":"0.1.0+8fbf00a5"},{"checks":[{"durationMs":1210,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.12s\nCompiler run successful!\n","passed":true},{"durationMs":2053,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 37 tests for test/ProofHouseToken.t.sol:ProofHouseTokenTest\n[PASS] testApprovalCanBeReplacedAndRevoked() (gas: 174334)\n[PASS] testApprovalDoesNotRequireBalance() (gas: 78637)\n[PASS] testApprovalEmitsEventAndIsIsolated() (gas: 104165)\n[PASS] testConstructorEmitsExactlyOneMint() (gas: 9674)\n[PASS] testDeployerCannotTakeHolderTokens() (gas: 158380)\n[PASS] testDirectDeploymentMintsToCaller() (gas: 20167)\n[PASS] testEntireSupplyCanMoveAndReturn() (gas: 149103)\n[PASS] testExactAllowanceIsExhausted() (gas: 162038)\n[PASS] testFactoryDeploymentAndLaunchTransfersAreExact() (gas: 675572)\n[PASS] testFuzzInsufficientAllowanceIsAtomic(uint256,uint256) (runs: 512, μ: 123397, ~: 123860)\nLogs:\n  Bound result 17162\n  Bound result 4202047188\n\n[PASS] testFuzzNonzeroRecipientsReceiveExactAmount(address,uint256) (runs: 512, μ: 92947, ~: 93175)\nLogs:\n  Bound result 445925520884299102588153872\n\n[PASS] testFuzzSelfTransfersPreserveSupply(uint256) (runs: 512, μ: 55142, ~: 54879)\nLogs:\n  Bound result 591712535660479287970630414\n\n[PASS] testFuzzTransferAboveBalanceIsAtomic(uint256) (runs: 512, μ: 69248, ~: 69567)\nLogs:\n  Bound result 180424596623399444705474353640587614396462355797140588831500532254245345947\n\n[PASS] testFuzzTransferFromAccounting(uint256,uint256) (runs: 512, μ: 164632, ~: 165589)\nLogs:\n  Bound result 904802835945934848425838123\n  Bound result 19761143206426591680953560954774099930701873975\n\n[PASS] testFuzzTransfersConserveSupply(uint256) (runs: 512, μ: 187502, ~: 188110)\nLogs:\n  Bound result 591712535660479287970630414\n\n[PASS] testMetadataAndInitialSupply() (gas: 107628)\n[PASS] testNoMintBurnOrAdministrativeEntryPoints() (gas: 782316)\n[PASS] testRejectsNativeCurrency() (gas: 42662)\n[PASS] testRevertApprovalToZeroSpender() (gas: 37573)\n[PASS] testRevertTransferAboveBalance() (gas: 54968)\n[PASS] testRevertTransferFromAboveAllowance() (gas: 105640)\n[PASS] testRevertTransferFromAboveBalanceRestoresAllowance() (gas: 122112)\n[PASS] testRevertTransferFromEmptyAccount() (gas: 37930)\n[PASS] testRevertTransferFromToZeroRestoresAllowance() (gas: 114485)\n[PASS] testRevertTransferFromWithWrongSpender() (gas: 105568)\n[PASS] testRevertTransferFromZeroSender() (gas: 35342)\n[PASS] testRevertTransferToZero() (gas: 47640)\n[PASS] testRevertZeroTransferToZero() (gas: 30434)\n[PASS] testRuntimeHasNoForbiddenOpcodesOrOversizedCode() (gas: 1038944)\n[PASS] testSelfTransferFromConsumesAllowanceWithoutChangingBalance() (gas: 110115)\n[PASS] testSelfTransferPreservesBalance() (gas: 51487)\n[PASS] testTransferDoesNotCallRecipient() (gas: 173836)\n[PASS] testTransferEmitsEventAndMovesExactAmount() (gas: 93528)\n[PASS] testTransferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 162526)\n[PASS] testUnlimitedAllowanceRemainsUnchanged() (gas: 204573)\n[PASS] testZeroTransferFromEmptyAccountEmitsEvent() (gas: 63035)\n[PASS] testZeroTransferFromNeedsNoAllowance() (gas: 80739)\nSuite result: ok. 37 passed; 0 failed; 0 skipped; finished in 25.26ms (132.44ms CPU time)\n\nRan 1 test for test/ProofHouseToken.invariant.t.sol:ProofHouseTokenInvariantTest\n[PASS] invariantSupplyBalancesAndAllowancesMatchModel() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 2020  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | overdraw     | 1963  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 2089  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 2120  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 9\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 29\n  Bound result 10\n  Bound result 2\n  Bound result 6\n  Bound result 2415\n  Bound result 0\n  Bound result 0\n  Bound result 4\n  Bound result 0\n  Bound result 12\n  Bound result 586\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 636\n  Bound result 0\n  Bound result 2\n  Bound result 5037\n  Bound result 18\n  Bound result 130082711171594828980783612\n  Bound result 242\n  Bound result 0\n  Bound result 3164\n  Bound result 410\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.96s (1.96s CPU time)\n\nRan 2 test suites in 1.96s (1.99s CPU time): 38 tests passed, 0 failed, 0 skipped (38 total tests)\n","passed":true},{"durationMs":32,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ProofHouseToken.approve(address,uint256)\",\"ProofHouseToken.transfer(address,uint256)\",\"ProofHouseToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":125,\"foundry.toml\":18,\"launch.json\":24,\"remappings.txt\":2,\"src/ProofHouseToken.sol\":17,\"test/ProofHouseToken.invariant.t.sol\":107,\"test/ProofHouseToken.t.sol\":437},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"2eedd379ae1a4233455a87532e4ee628289034517f474ebe5d8fbc960cdd493a","verifiedTreeHash":"cecc47f15a7eda900ab8be7c46a8e13469297876","verifierVersion":"0.1.0+8fbf00a5"},{"checks":[{"durationMs":1321,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.24s\nCompiler run successful!\n","passed":true},{"durationMs":7693,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 44 tests for test/ProofHouseToken.t.sol:ProofHouseTokenTest\n[PASS] testApprovalCanBeReplacedAndRevoked() (gas: 174357)\n[PASS] testApprovalDoesNotRequireBalance() (gas: 78659)\n[PASS] testApprovalEmitsEventAndIsIsolated() (gas: 104143)\n[PASS] testConstructorEmitsExactlyOneMint() (gas: 9719)\n[PASS] testDelegatedEntireSupplyRoundTripExhaustsAllowances() (gas: 286022)\n[PASS] testDeployerCannotTakeHolderTokens() (gas: 158380)\n[PASS] testDirectDeploymentMintsToCaller() (gas: 20167)\n[PASS] testEntireSupplyCanMoveAndReturn() (gas: 149126)\n[PASS] testExactAllowanceIsExhausted() (gas: 162072)\n[PASS] testFactoryDeploymentAndLaunchTransfersAreExact() (gas: 675550)\n[PASS] testFuzzFailedDelegatedSpendCanBeRetriedAfterFunding(uint256,uint256,uint256) (runs: 1000, μ: 364783, ~: 365628)\nLogs:\n  Bound result 60000000000000000000\n  Bound result 999999940000000000000009437\n  Bound result 115792089237316195423570985008687907853269984665639564039517584007913129631986\n\n[PASS] testFuzzInsufficientAllowanceIsAtomic(uint256,uint256) (runs: 1000, μ: 123535, ~: 123905)\nLogs:\n  Bound result 127\n  Bound result 128\n\n[PASS] testFuzzInvalidDelegatedRecipientRestoresAllowance(uint256,uint256) (runs: 1000, μ: 132441, ~: 132757)\nLogs:\n  Bound result 1000000000000000000000000000\n  Bound result 2081707649745001973296130242587041001140186033494569837409704204319\n\n[PASS] testFuzzNonzeroRecipientsReceiveExactAmount(address,uint256) (runs: 1000, μ: 90382, ~: 90988)\nLogs:\n  Bound result 269400157224338655181909896\n\n[PASS] testFuzzSelfTransfersPreserveSupply(uint256) (runs: 1000, μ: 55098, ~: 54835)\nLogs:\n  Bound result 1000000000000000000\n\n[PASS] testFuzzTransferAboveBalanceIsAtomic(uint256) (runs: 1000, μ: 69239, ~: 69567)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913182330518\n\n[PASS] testFuzzTransferFromAccounting(uint256,uint256) (runs: 1000, μ: 164494, ~: 165555)\nLogs:\n  Bound result 653232018063968876966577378\n  Bound result 674279787013111601693109212711917899402725\n\n[PASS] testFuzzTransfersConserveSupply(uint256) (runs: 1000, μ: 187547, ~: 188110)\nLogs:\n  Bound result 51\n\n[PASS] testIndependentSpendersCannotReuseExhaustedAllowance() (gas: 287158)\n[PASS] testMaxMinusOneAllowanceIsFiniteAndCanReplaceUnlimitedApproval() (gas: 178612)\n[PASS] testMaximumTransferFromWithUnlimitedApprovalRevertsWithoutChangingState() (gas: 129417)\n[PASS] testMetadataAndInitialSupply() (gas: 107628)\n[PASS] testNoMintBurnOrAdministrativeEntryPoints() (gas: 782316)\n[PASS] testOwnerUsingTransferFromStillNeedsAllowance() (gas: 181775)\n[PASS] testRejectsNativeCurrency() (gas: 42640)\n[PASS] testRevertApprovalToZeroSpender() (gas: 37618)\n[PASS] testRevertTransferAboveBalance() (gas: 54946)\n[PASS] testRevertTransferFromAboveAllowance() (gas: 105662)\n[PASS] testRevertTransferFromAboveBalanceRestoresAllowance() (gas: 122135)\n[PASS] testRevertTransferFromEmptyAccount() (gas: 37908)\n[PASS] testRevertTransferFromToZeroRestoresAllowance() (gas: 114463)\n[PASS] testRevertTransferFromWithWrongSpender() (gas: 105568)\n[PASS] testRevertTransferFromZeroSender() (gas: 35342)\n[PASS] testRevertTransferToZero() (gas: 47640)\n[PASS] testRevertZeroTransferToZero() (gas: 30456)\n[PASS] testRuntimeHasNoForbiddenOpcodesOrOversizedCode() (gas: 1038944)\n[PASS] testSelfTransferFromConsumesAllowanceWithoutChangingBalance() (gas: 110051)\n[PASS] testSelfTransferPreservesBalance() (gas: 51443)\n[PASS] testTransferDoesNotCallRecipient() (gas: 173858)\n[PASS] testTransferEmitsEventAndMovesExactAmount() (gas: 93484)\n[PASS] testTransferFromSpendsFiniteAllowanceAndEmitsTransfer() (gas: 162504)\n[PASS] testUnlimitedAllowanceRemainsUnchanged() (gas: 204595)\n[PASS] testZeroTransferFromEmptyAccountEmitsEvent() (gas: 63102)\n[PASS] testZeroTransferFromNeedsNoAllowance() (gas: 80762)\nSuite result: ok. 44 passed; 0 failed; 0 skipped; finished in 83.32ms (610.15ms CPU time)\n\nRan 1 test for test/ProofHouseToken.invariant.t.sol:ProofHouseTokenInvariantTest\n[PASS] invariantSupplyBalancesAndAllowancesMatchModel() (runs: 256, calls: 32768, reverts: 0)\n\n╭--------------+-----------------------+-------+---------+----------╮\n| Contract     | Selector              | Calls | Reverts | Discards |\n+===================================================================+\n| TokenHandler | approve               | 3026  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| TokenHandler | approveBoundary       | 2941  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| TokenHandler | insufficientAllowance | 3021  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| TokenHandler | insufficientBalance   | 2911  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| TokenHandler | invalidReceiver       | 3031  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| TokenHandler | invalidSpender        | 3055  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| TokenHandler | overdraw              | 2950  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| TokenHandler | transfer              | 2917  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| TokenHandler | transferBoundary      | 2952  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| TokenHandler | transferFrom          | 3006  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| TokenHandler | transferFromBoundary  | 2958  | 0       | 0        |\n╰--------------+-----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 195163341003610588401116347\n  Bound result 0\n  Bound result 6414\n  Bound result 6973\n  Bound result 1869340389698067393186288\n  Bound result 7641\n  Bound result 0\n  Bound result 7756\n  Bound result 1513\n  Bound result 3\n  Bound result 3620\n  Bound result 3\n  Bound result 999999999999999999999993586\n  Bound result 1490\n  Bound result 0\n  Bound result 836016882697453241150982911\n  Bound result 4160\n  Bound result 164156753144507892766584\n  Bound result 0\n  Bound result 3291\n  Bound result 1219\n  Bound result 410711643721924248202651661\n  Bound result 0\n  Bound result 3124842405\n  Bound result 0\n  Bound result 64210632\n  Bound result 1448589328\n  Bound result 11\n  Bound result 12\n  Bound result 1254\n  Bound result 6151\n  Bound result 0\n  Bound result 0\n  Bound result 836016882697453239638182951\n  Bound result 3620\n  Bound result 0\n  Bound result 1689\n  Bound result 999999999999999998487194845\n  Bound result 35814022364611761125328\n  Bound result 242\n  Bound result 8\n  Bound result 42000000000000000000\n  Bound result 5800\n  Bound result 0\n  Bound result 4450\n  Bound result 3628\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4822\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 8774\n  Bound result 0\n  Bound result 242\n  Bound result 81\n  Bound result 1000000000\n  Bound result 0\n  Bound result 461\n  Bound result 4822\n  Bound result 10\n  Bound result 242\n  Bound result 727897402484410696326917934\n  Bound result 5281\n  Bound result 945414468689355968790252493\n  Bound result 9\n  Bound result 2\n  Bound result 0\n  Bound result 0\n  Bound result 78385930093103832305571959\n  Bound result 11\n  Bound result 533\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 7.60s (7.60s CPU time)\n\nRan 2 test suites in 7.60s (7.68s CPU time): 45 tests passed, 0 failed, 0 skipped (45 total tests)\n","passed":true},{"durationMs":37,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ProofHouseToken.approve(address,uint256)\",\"ProofHouseToken.transfer(address,uint256)\",\"ProofHouseToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":125,\"foundry.toml\":18,\"remappings.txt\":2,\"src/ProofHouseToken.sol\":17,\"test/ProofHouseToken.invariant.t.sol\":182,\"test/ProofHouseToken.t.sol\":557},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"f7461b9d7f07d620a7caf6a5e1698f7da42679f07f69ccb9be6cee0b6d7802ab","verifiedTreeHash":"91c06a52acd2a3f2114e8b9e96b8e6da6c9753e0","verifierVersion":"0.1.0+8fbf00a5"}]}