{"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":"56b91400-6742-49cc-82b3-b60118945585","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"9fb2c676e76d8d4ffc0af367cbd00f4b800b539ac887784a6f56141a60302ad3","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":"ce6a387943e2b60f9f0afd6b3efc6ba2d7b3a1982dc5e55bf1ef104db5b99ebe","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":"df9d0570de8f2ea3a8384c9bcb82ca2303dd26e68e245540a0d3500f3d2daca3","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":"4622e3e324e263609c98869333500ac5b80f2a4f80eee20b24b035e760865a81","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":"fbca7de8c69bea2b30efa90c2a883c0acf823333f69a251bc9ef459f4a3a15df","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":"319968af8e71292a74753229d7d4fe5d313a743efa786d039a43e869bad1ced7","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":"fce1730354c7a0b5bd57482f96d44a5d36ca78b170021376f7a99e0d857730b5","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"0b238335c0469f99dab8843807d17329221a7fade8e70e971325f22110d5b361","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: Polyneum (POLYNEUM).\nToken name: Polyneum\nToken symbol: POLYNEUM\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"9351a15eac0dcfb222576e59da7b9a768da767685b05251f266858b3c0a18c70","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"56b91400-6742-49cc-82b3-b60118945585","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1596-polyneum"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51482","feedbackHash":"66a6de3cc87fddb3eff237b61ca5a8404dc06bcf8f35b7e0c2abdf299884bef9","nodeKey":"audit_economics","submissionHash":"9fb2c676e76d8d4ffc0af367cbd00f4b800b539ac887784a6f56141a60302ad3","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52127","feedbackHash":"5f51d357120aa062e2adf8c67fb628ecb546ea786e77158d645820001409ae90","nodeKey":"audit_flow","submissionHash":"ce6a387943e2b60f9f0afd6b3efc6ba2d7b3a1982dc5e55bf1ef104db5b99ebe","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52480","feedbackHash":"da30a7e23e777d799abbb29af17fdb7886086930139a0e75323d72fdbbf6823b","nodeKey":"audit_judge","submissionHash":"df9d0570de8f2ea3a8384c9bcb82ca2303dd26e68e245540a0d3500f3d2daca3","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51139","feedbackHash":"6517683cf4ff38a233fd2152d5752c821fe885042be9fc3f4708553bbaf96bbb","nodeKey":"audit_math","submissionHash":"4622e3e324e263609c98869333500ac5b80f2a4f80eee20b24b035e760865a81","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51468","feedbackHash":"4458e4772254f95f7aadfe8c4439627dc162a2e1fa842dc5ad1fdc9e134ff1eb","nodeKey":"audit_permissions","submissionHash":"fbca7de8c69bea2b30efa90c2a883c0acf823333f69a251bc9ef459f4a3a15df","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51203","feedbackHash":"b7df11724acc4a2d0b642050b205f8f58221b9c4a02186eb07f0eaaaeff8a301","nodeKey":"build_contract_project","submissionHash":"319968af8e71292a74753229d7d4fe5d313a743efa786d039a43e869bad1ced7","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"53928","feedbackHash":"bcc46f2dc4de5523fe6be5ce0d58f773332755f6645e587a82bd27d690098285","nodeKey":"manifest","submissionHash":"fce1730354c7a0b5bd57482f96d44a5d36ca78b170021376f7a99e0d857730b5","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52129","feedbackHash":"44678d271357490c44fd3132854a2cb13dcacf8067f444c596ea79ea3170dac8","nodeKey":"write_foundry_tests","submissionHash":"0b238335c0469f99dab8843807d17329221a7fade8e70e971325f22110d5b361","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"3907e23d8cbd4dc8e30fbd0f83be439de69aacdc182c501358ba181f5c5879de","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"5f9a83f6a4fb58646ddd3c10ed7b5f783cabc151fd36cde75e1aa55beae0514f","device":"63c29c49a249ab7e","findings":[{"description":"The token was read adversarially and driven with unit tests at every boundary (zero, one wei, the full supply, uint256 max, the unlimited-allowance sentinel and the value one below it, the owner spending through transferFrom, repeated calls, truncated and arbitrary calldata from strangers, value-bearing calls), stateless fuzz properties (round trip, additivity, commutativity, transfer/transferFrom equivalence, exact revert data above balance and above allowance), a CREATE2 launch-floor emulation of the factory flows, and two invariant suites over random call sequences (the existing one and a new ghost-accounted one with unclamped handlers that predict and check every revert exactly, privileged-selector and unknown-selector probes, and fail-on-revert enabled). Nothing failed. The new ghost suite was validated against three mutants kept in test/scratch (a one-wei fee on transfer, an allowance that is not decremented, and a public mint); each was caught by the handler's per-call check and by the corresponding invariant, so the properties are not vacuous.","line":11,"path":"src/Polyneum.sol","reproduction":"forge test (all suites pass). Mutation check: copy test/Polyneum.ghost.invariant.t.sol against a token whose _transfer credits amount-1, or whose transferFrom does not decrement the allowance, or that exposes mint(address,uint256); invariant_handlerSawNoViolation, invariant_sumOfAllTouchedBalancesIsSupply / invariant_allowancesMatchGhost fail within the first run.","severity":"info","title":"No defect found: every tested property of Polyneum holds, including failure paths"},{"description":"approve(spender, amount) overwrites the allowance. If an owner lowers an allowance from X to Y while the spender front-runs with transferFrom(X), the spender can then also spend Y, moving X+Y in total. This is the well-known EIP-20 limitation, not an implementation error, and the contract offers no increaseAllowance/decreaseAllowance or permit to mitigate it. Holders should set an allowance to 0 before changing it to a non-zero value. Not testable as a contract defect: the behaviour is exactly what EIP-20 specifies; pinned by test_approveOverwritesPreviousAllowance and testFuzz_approveLastWriteWins.","line":88,"path":"src/Polyneum.sol","reproduction":"Owner approves spender 100. Spender's transferFrom(owner, s, 100) is mined before owner's approve(spender, 50). Spender then calls transferFrom(owner, s, 50). Expected by the owner: at most 100 moved. Actual: 150 moved. Both transfers are valid under EIP-20 semantics.","severity":"info","title":"Standard EIP-20 approve race: no increaseAllowance / decreaseAllowance helpers"}],"hash":"0b238335c0469f99dab8843807d17329221a7fade8e70e971325f22110d5b361","nodeId":"8e8f1d91-45f7-4e6c-8013-5348bc502ea6","outcome":"completed","summary":"The findings file is deliberately excluded by the harness via `.git/info/exclude`, so it is read from disk as designed. The work is complete.\n\n**Outcome:** `forge build` and `forge test` pass with no failures. The suite grew from 33 to 80 tests across 5 suites, and the full run takes about 55 seconds. No defect was found in the token.\n\n**What I added** (three new files under `test/`, the existing two suites untouched):\n\n- `test/Polyneum.ghost.invariant.t.sol`: a ghost-accounted invariant suite over random call sequences. The handler has unclamped entry points with arbitrary receivers, spenders and amounts that predict the exact outcome before every call, so every failure path (wrong success, wrong revert, wrong error data, state change on a failed call) is checked in-sequence with fail-on-revert enabled. Clamped and stress variants pin full-balance, one-wei, zero, and the unlimited-allowance sentinel. Hostile probes try 22 admin selectors, unknown selectors, and ether from random actors. Invariants cover fixed supply, sum of all touched balances including strangers, per-address flow accounting, allowance accounting, and no allowance outside recorded pairs.\n- `test/Polyneum.edges.t.sol`: 35 boundary and algebraic tests. Zero to the zero address, max uint, max-minus-one allowance, the owner spending through `transferFrom` with no implicit allowance, error precedence, truncated calldata, value-bearing calls, and a raw-ABI fuzz where arbitrary calldata from a stranger never moves a holder. Properties include round-trip, additivity, commutativity, transfer and transferFrom equivalence, and exact revert data above balance and above allowance.\n- `test/Polyneum.launch.t.sol`: a launch-floor emulation mirroring the protected harness without the Uniswap dependency. A factory probe deploys through CREATE2, the address is predicted from creation code alone, the swarm share and remainder arrive and are claimable whole, many fuzzed claims sum exactly, and no admin call from a stranger or the factory grows the supply or moves a holder.\n\n**Validation of the suite itself:** I ran the ghost suite in scratch against three mutants (one-wei fee on transfer, allowance not decremented, public mint). Each was caught within the first run by the handler's per-call check and the corresponding invariant, so the properties are not vacuous. The scratch files were removed afterwards.\n\n**Findings file:** `.imd-findings.json` holds two info entries only. One records that no defect was found and how the suite was validated. The other notes the standard EIP-20 approve race with no increase or decrease allowance helpers, which is specification behaviour rather than an implementation error, so it carries no proof.\n\nThe three new files are untracked in the working tree and not committed, since no commit was requested.","treeHash":"d75b1e95298828cb55f5c8abffbeb2ca0d7c2c8e","usage":{"cachedInputTokens":1387386,"inputTokens":546,"model":"claude-fable-5-1","outputTokens":42598,"runtime":"claude","turns":30,"wallClockMs":780104}},{"artifacts":[],"attempt":1,"bundleHash":"fd9ae070d8dbe08c363dc5cbeb30d6aafa3a7399f442d35e1203a61fe106575c","device":"896d1238054266ca","findings":[],"hash":"319968af8e71292a74753229d7d4fe5d313a743efa786d039a43e869bad1ced7","nodeId":"5218ed4c-eb0e-488d-9769-907c29f84053","outcome":"completed","summary":"The Polyneum token is implemented, tested, documented, and committed on main.\n\n**What was delivered**\n\n- `src/Polyneum.sol` is a self-contained fixed-supply ERC-20. Name `Polyneum`, symbol `POLYNEUM`, 18 decimals, and the full 1,000,000,000 supply minted once to `msg.sender` in a no-argument constructor. It has no owner, mint, pause, blocklist, burn, fee, or upgrade path, so every launch flow moves exactly what it says and no privileged call can touch a holder.\n- `foundry.toml` pins solc 0.8.26, sets `bytecode_hash = \"none\"`, enables the optimizer, and leaves ffi and filesystem access off. forge-std v1.9.6 is vendored under `lib/forge-std` as plain files with no git metadata.\n- `test/Polyneum.t.sol` holds 32 unit, failure, and fuzz tests covering metadata, the one-time mint, transfers, allowances, custom-error reverts, absence of admin selectors, and an opcode scan for delegatecall, callcode, and selfdestruct. `test/Polyneum.invariant.t.sol` adds stateful invariants for supply conservation.\n- `script/DeployPolyneum.s.sol` exposes a tested `deploy()` function and reads nothing from the environment.\n- `README.md` documents behaviour, deployment parameters, launch economics, assumptions, operational responsibilities, and the security checklist review.\n\n**Checks run**\n\n| Check | Result |\n| --- | --- |\n| forge build | passes |\n| forge test with empty environment | 33 passed, 0 failed |\n| forge fmt --check | clean |\n| scratch mirror of the protected floor's non-Uniswap flows | 3 passed |\n\nThe protected test's Uniswap v4 seed and swap cases could not be run here because v4-core is not available offline, but the token has no transfer hooks or exemptions, so those flows see a plain ERC-20. Slither and Mythril were not available and did not run. Explorer verification remains an open item for the launch deployer.","treeHash":"91ae8fec39f17ad677caee81369eb105d4edded6","usage":{"cachedInputTokens":870443,"inputTokens":578,"model":"claude-fable-5-1","outputTokens":22812,"runtime":"claude","turns":32,"wallClockMs":344376}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8d26cb1a4eaeb75a","findings":[],"hash":"4622e3e324e263609c98869333500ac5b80f2a4f80eee20b24b035e760865a81","nodeId":"93cfc551-790d-45f8-8f93-8bd62156d55c","outcome":"completed","summary":"The findings file parses as valid JSON, the scratch directory is gone, and `git status --porcelain` shows only the gitignored build output and the findings file. The review is complete.\n\n**Result: no defects found in the Math Precision, Boundary and Numerical Gap area.** The findings file at `.imd-findings.json` holds an empty findings list and seven coverage rows.\n\n**What I checked**\n\n- All three entry points, approve, transfer and transferFrom, trace as intended. Each unchecked subtraction sits behind a strict less-than guard, and the unchecked addition cannot wrap because the sum of balances is pinned at the one-time mint of 1e27.\n- Self-transfer and self-transferFrom read storage after the write, so a holder's balance is unchanged and only the allowance moves.\n- Zero amounts, whole-balance amounts, supply plus one, max-uint amounts, and max-minus-one allowances all behave correctly. The max allowance is never decremented, and the max-minus-one allowance decrements without wrapping.\n- The contract has no division, no downcast, no payable path, no external call and no bytes decoding, so most of the Boundary and Numerical Gap checklist has no surface to hit. The only sentinel branches are the zero-address rejections, and both sides behave as documented.\n- The aderyn large-literal lead on line 26 folds at compile time to exactly 1000000000000000000000000000. It is not a defect.\n\n**Evidence run**\n\nThe existing suite of 32 unit and fuzz tests passed, the stateful invariant suite passed, and a scratch file of 11 extra edge-case tests passed before I deleted it. Slither reported nothing.\n\n**Noted, not reported**\n\nThe plain set-to-value approve carries the standard EIP-20 front-running caveat, and transfers to the token's own address are allowed. Both are ordinary ERC-20 behaviour and match the requested plain-token design, so they appear as coverage notes rather than findings.","treeHash":null,"usage":{"cachedInputTokens":522633,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":9354,"runtime":"claude","turns":19,"wallClockMs":147616}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"dedd4428da8fa41e","findings":[],"hash":"9fb2c676e76d8d4ffc0af367cbd00f4b800b539ac887784a6f56141a60302ad3","nodeId":"7524d2f3-a2b4-47b6-b5c0-3fa58e372d7c","outcome":"completed","summary":"I found no defects in `src/Polyneum.sol`. I wrote `.imd-findings.json` with an empty findings list and a coverage record. I didn't run any tests.\n\n**What the contract is:** a plain fixed-supply ERC-20. It has no owner, no mint, no burn, no fee and no pause.\n\n**What I checked against the economic security, invariant and flow gap guides:**\n- **Supply:** exactly 1e27 minor units (1,000,000,000 tokens at 18 decimals) is minted once to `msg.sender` in the constructor. `totalSupply` is immutable, and nothing can increase or lower it later.\n- **Launch flows:** the factory's transfer to the distributor, the claims, the pool seed and swaps both ways all move the exact amount. Nothing is skimmed, so no flow arrives short.\n- **Math:** `_transfer` checks the balance before its unchecked subtraction. The unchecked addition can't overflow because all balances together never exceed `totalSupply`.\n- **Allowances:** `transferFrom` checks the allowance before reducing it. An allowance of `type(uint256).max` is treated as unlimited, as documented.\n- **Edge cases:** a transfer to yourself leaves balances unchanged, and a failed transfer reverts everything.\n- **Static analysis:** aderyn's one note, a large number at line 26, is just the supply constant and not a defect.\n\n**Coverage:** all three entry points (`approve`, `transfer`, `transferFrom`) are marked `holds`, with one more row for the fixed-supply invariant.\n\n**One gap:** the constructor takes no arguments, so it doesn't use the `$factory`, `$poolManager` or `$launchNumber` inputs. That's fine here because the token has no transfer rules that would need exemptions.","treeHash":null,"usage":{"cachedInputTokens":131206,"inputTokens":8,"model":"claude-opus-5-5","outputTokens":1290,"runtime":"claude","turns":4,"wallClockMs":21417}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fd5402086dce252e","findings":[{"citation":"resolved","description":"Execution-trace / sentinel check. `_transfer` rejects `to == address(0)` (line 112) but neither `transferFrom` nor `_transfer` rejects `from == address(0)`. With `amount == 0`, `allowance[address(0)][msg.sender]` is 0, the check `0 < 0` is false, so the call proceeds into `_transfer(address(0), to, 0)`, which passes the balance check (`0 < 0` is false) and emits `Transfer(address(0), to, 0)`. The ERC-20 specification reserves `Transfer` events with `_from == 0x0` for token creation, so any unprivileged caller can emit an event that looks like a zero-value mint to any address. Balances, allowances and totalSupply are untouched, so there is no loss and no supply growth; the effect is limited to misleading event consumers (indexers, explorers, mint-watching alerts) that key on the from-zero shape without checking value. OpenZeppelin v5 reverts this path with ERC20InvalidSender; Solmate accepts it as this contract does. Minimal fix if wanted: `if (from == address(0)) revert InvalidSender(address(0));` at the top of `_transfer`, which does not change any launch flow because the factory, distributor and PoolManager never call transferFrom with a zero `from`. Non-zero amounts from the zero address already revert with InsufficientAllowance (allowance is 0) so the guard only affects the zero-amount case.","line":96,"path":"src/Polyneum.sol","reproduction":"State: fresh deployment, caller 0xBAD holds nothing and has no allowance. Call: vm.prank(0xBAD); token.transferFrom(address(0), 0xBAD, 0). Expected (strict ERC-20 implementations such as OpenZeppelin v5): revert on invalid sender. Actual: returns true and emits Transfer(0x0000000000000000000000000000000000000000, 0xBAD, 0); totalSupply remains 1000000000000000000000000000 and balanceOf(0xBAD) remains 0. Verified with a Foundry test using vm.expectEmit(true,true,true,true) for Transfer(address(0), 0xBAD, 0): passes on the current code. With amount 1 the same call reverts InsufficientAllowance(0xBAD, 0, 1), so no value can ever be moved from the zero address.","severity":"info","snippet":"        uint256 allowed = allowance[from][msg.sender];\n        if (allowed != type(uint256).max) {\n            if (allowed < amount) revert InsufficientAllowance(msg.sender, allowed, amount);","title":"transferFrom accepts from == address(0) with amount 0 and emits a mint-shaped Transfer(0x0, to, 0) event callable by anyone"}],"hash":"ce6a387943e2b60f9f0afd6b3efc6ba2d7b3a1982dc5e55bf1ef104db5b99ebe","nodeId":"5f8641d5-3464-476c-a00f-1daf010cd15e","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written with one info-level finding and nine coverage rows. The working tree is otherwise unchanged (`git status` reports nothing; `.imd-findings.json` is gitignored).\n\n**Outcome:** no defect of low severity or higher in the Polyneum token. The three entry points plus the constructor, the deploy script, and the launch-flow and supply invariants all hold under the Execution Trace, Periphery and First Principles checklists.\n\n**What I verified**\n\n- **Execution trace.** Both value paths check receiver, then balance, then move exactly the requested amount with no fee or burn. The unchecked block is bounded by the fixed supply. Self-transfers and self-`transferFrom` leave balances intact. The unlimited-allowance sentinel is documented and behaves as stated. Allowance is decremented before the transfer and the whole call reverts atomically.\n- **Periphery.** There are no libraries, helpers or external calls. The deploy script only wraps `new Polyneum()` in a broadcast and reads no environment. The tests pass (33 of 33, including the 256x500 invariant run).\n- **First principles.** The supply constant evaluates to exactly the manifest's minor units. The constructor takes no arguments and credits everything to the creator, which is the factory under CREATE2. No fallback or receive exists, so unknown selectors and ether revert. The runtime has no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n\n**The one finding (info):** `transferFrom(address(0), X, 0)` succeeds for any caller and emits `Transfer(0x0, X, 0)`, which the ERC-20 spec reserves for mints. Balances and supply are untouched, so this only affects event consumers that key on the from-zero shape. OpenZeppelin v5 rejects this path; Solmate accepts it. I reproduced it with a Foundry test and documented a one-line optional guard that would not alter any launch flow.\n\n**Not reached:** the protected harness itself cannot run here because Uniswap v4 core is not vendored. Since the token has no transfer rules or callbacks, I covered the launch flows by tracing the code rather than executing the harness. The aderyn large-literal lead is style only.","treeHash":null,"usage":{"cachedInputTokens":322840,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":10635,"runtime":"claude","turns":20,"wallClockMs":178702}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"b0b4e7bbc84f9d80","findings":[{"citation":"resolved","description":"Merged from audit_flow (the only specialist to raise it). `_transfer` rejects a zero receiver but neither `transferFrom` nor `_transfer` rejects a zero sender. For `amount == 0` the allowance check at line 98 is `0 < 0` (false), the allowance write at line 100 stores 0 - 0 = 0, and the balance check at line 114 is `0 < 0` (false), so the call succeeds and emits `Transfer(address(0), to, 0)`. EIP-20 reserves a Transfer with from == 0x0 for token creation, so an unprivileged caller can produce a zero-value event that mint-watching indexers or alerts may misread. No balance, allowance or totalSupply changes; any non-zero amount reverts with InsufficientAllowance because the zero address never has an allowance, so no value can ever leave the zero address. This matches Solmate's behaviour and differs from OpenZeppelin v5, which reverts with ERC20InvalidSender. Not a loss or a floor failure. Optional fix: add `if (from == address(0)) revert InvalidSender(address(0));` at the top of `_transfer`; no launch flow (factory, distributor, PoolManager) ever calls transferFrom with a zero `from`, so nothing the floor tests changes.","line":112,"path":"src/Polyneum.sol","reproduction":"Fresh deployment by FACTORY (0xFAC7). Caller 0xBAD holds 0 and has no allowance from anyone. vm.prank(0xBAD); token.transferFrom(address(0), 0xBAD, 0). Expected under strict ERC-20 (OZ v5): revert InvalidSender. Actual: returns true and emits Transfer(0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000BAd, 0); totalSupply stays 1000000000000000000000000000 and balanceOf(0xBAD) stays 0. Verified with vm.expectEmit(true,true,true,true) in test/scratch/Repro.t.sol::test_zeroFromZeroAmountEmitsMintShapedTransfer (passes on current code). Control: the same call with amount 1 reverts InsufficientAllowance(0xBAD, 0, 1) (test_zeroFromNonZeroAmountReverts).","severity":"info","snippet":"        if (to == address(0)) revert InvalidReceiver(address(0));","title":"transferFrom accepts from == address(0) with amount 0 and lets anyone emit a mint-shaped Transfer(0x0, to, 0) event"},{"citation":"resolved","description":"From write_foundry_tests. `approve` overwrites the stored allowance unconditionally, so an owner lowering an allowance from X to Y can be front-run by the spender spending X, after which the spender also spends Y. This is exactly EIP-20's specified behaviour and not an implementation error; the contract simply offers no increaseAllowance/decreaseAllowance or ERC-2612 permit as mitigations. Recorded as a trust/usage note for holders (set to 0 before re-approving, or approve exact amounts), not as a defect that needs a revision.","line":126,"path":"src/Polyneum.sol","reproduction":"Owner O holds 1000. O.approve(S, 100). S.transferFrom(O, S, 100) is mined first: allowance becomes 0, S holds 100. O.approve(S, 50) is then mined: allowance becomes 50. S.transferFrom(O, S, 50): allowance 50 >= 50, O's balance 900 >= 50, succeeds. Expected by O: at most 100 moved. Actual: 150 moved, O holds 850. Every step is a valid EIP-20 operation on this contract; traced against lines 88-91, 95-105 and 124-128.","severity":"info","snippet":"        allowance[owner][spender] = amount;","title":"Standard EIP-20 approve overwrite race; no increaseAllowance/decreaseAllowance or permit offered"}],"hash":"df9d0570de8f2ea3a8384c9bcb82ca2303dd26e68e245540a0d3500f3d2daca3","nodeId":"46fa6b2f-22c0-470d-9c4d-e37b73d3fa75","outcome":"completed","summary":"The review is complete and the findings file is written. Snippets match the source lines exactly, the JSON parses, and the working tree is clean apart from the gitignored findings file and scratch tests.\n\n**Outcome:** Polyneum has no defect that needs a revision. All 85 repository tests pass, including the launch-floor emulation, and my six scratch checks pass.\n\n**Specialist findings, settled:**\n- **Kept as info (audit_flow):** `transferFrom(address(0), to, 0)` from any caller succeeds and emits a mint-shaped `Transfer(0x0, to, 0)`. Reproduced with an exact event expectation. Nothing moves and any non-zero amount reverts, so impact is limited to event consumers.\n- **Kept as info (write_foundry_tests):** the standard EIP-20 approve overwrite race, with no increase/decrease helpers. Traced step by step. It is specified behaviour, recorded as a usage note rather than a defect.\n- **Dropped:** the \"no defect found\" report is a coverage statement, not a finding. The aderyn large-literal lead is the readable `1_000_000_000 * 10 ** 18` constant and not a defect.\n\n**My own pass:** the constructor mints exactly the manifest supply to msg.sender with no arguments, self-transfers preserve balances, the unlimited-allowance sentinel is handled correctly, the owner needs an allowance to spend via `transferFrom`, there are no privileged functions or forbidden opcodes, and launch.json matches the code. Coverage answers all three listed entry points plus three invariant rows.","treeHash":null,"usage":{"cachedInputTokens":285298,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":7796,"runtime":"claude","turns":12,"wallClockMs":260921}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"ea62f3bebece9304","findings":[],"hash":"fbca7de8c69bea2b30efa90c2a883c0acf823333f69a251bc9ef459f4a3a15df","nodeId":"958a31f5-4756-41b6-a0f8-43e7b8fc7b81","outcome":"completed","summary":"I found no access-control defects in Polyneum, so `.imd-findings.json` has an empty findings list. It also has a coverage row for each of the three entry points, all `holds`, plus two invariant rows. No source files were changed. The project's own test suite passes (33 of 33).\n\nWhat I checked against the Access Control, Trust Gap and Asymmetry guides:\n\n- **Roles:** the constructor takes no arguments and only mints the full supply to `msg.sender`, which is the factory at launch. After deployment there is no owner, minter, pause, blocklist, freeze, burn or upgrade path. `totalSupply` is fixed at deployment (`immutable`), so the supply can never grow.\n- **`approve`:** it only writes the caller's own allowance. A zero-address spender reverts.\n- **`transfer`:** it only debits the caller, after checking the balance. Sending to the zero address reverts, and sending to yourself leaves the balance unchanged.\n- **`transferFrom`:** it checks the `(from, msg.sender)` allowance before moving anything. Without the holder's approval, no caller can move their tokens, including the factory or the deployer. An allowance of `type(uint256).max` is treated as unlimited, as documented.\n- **Launch flows:** there is no fee, burn or exemption list on transfers. The four launch flows are factory to distributor, distributor to claimant, the pool seed, and swaps. Each moves exactly the amount stated, and nothing can switch the token off for one party and not another.\n\nTwo leads I set aside:\n\n- **Static analysis:** aderyn's \"large numeric literal\" warning is about `1_000_000_000 * 10 ** 18`, which is correct and harmless. Slither reported nothing.\n- **Zero-amount `transferFrom(address(0), x, 0)`:** it emits a Transfer event from the zero address with value 0. Nothing moves, so I left it out.\n\n**Not run:** the launch's protected test file imports contracts this repo doesn't contain, so it can't run here. I only checked by reading that the token meets each of its requirements.","treeHash":null,"usage":{"cachedInputTokens":158732,"inputTokens":8,"model":"claude-opus-5-5","outputTokens":2046,"runtime":"claude","turns":4,"wallClockMs":39193}},{"artifacts":[],"attempt":1,"bundleHash":"8c5985079109dd52f40cef64110751396ec2f070dd976e7b39e44c9d13f9f3f3","device":"65953ebb855c1b23","findings":[],"hash":"fce1730354c7a0b5bd57482f96d44a5d36ca78b170021376f7a99e0d857730b5","nodeId":"7506a708-70a2-40d3-af3c-9956e7e9058c","outcome":"completed","summary":"Created `launch.json` matching Polyneum’s constructor, exact supply, required pool settings, and verbatim economics.\n\n`forge build` succeeded; `forge test` passed all 33 tests. Only `launch.json` is changed for submission.","treeHash":"1b696890c79dc0cbc38467fd68a9f4f16e380491","usage":{"cachedInputTokens":241664,"inputTokens":23037,"model":"gpt-6-astra","outputTokens":2197,"runtime":"codex","turns":3,"wallClockMs":98656}}],"verification":[{"checks":[{"durationMs":2174,"exitCode":0,"name":"build","output":"Compiling 26 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.05s\nCompiler run successful!\n","passed":true},{"durationMs":27588,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 11 tests for test/Polyneum.launch.t.sol:PolyneumLaunchTest\n[PASS] testFuzz_manyClaimsSumExactly(uint8,uint256) (runs: 256, μ: 1459876, ~: 901240)\nLogs:\n  Bound result 6\n  Bound result 87042743602443747745972747\n  Bound result 7090858621418766149880612\n  Bound result 5415003166634715351168687\n  Bound result 159885176619156647288334\n  Bound result 218364072972344355675036\n\n[PASS] test_create2AddressIsPredictableFromCreationCodeAlone() (gas: 9296)\n[PASS] test_creationCodeHasNoConstructorArguments() (gas: 744836)\n[PASS] test_factoryCannotPayOutMoreThanItHolds() (gas: 89568)\n[PASS] test_fullLaunchSplitLeavesNothingBehind() (gas: 209822)\n[PASS] test_mintsTheWholeSupplyToTheFactory() (gas: 39808)\n[PASS] test_noCommonAdminCallIncreasesSupplyFromStrangerOrFactory() (gas: 835938)\n[PASS] test_noPrivilegedHandMovesOrFreezesAHolder() (gas: 522348)\n[PASS] test_redeployingWithTheSameSaltFails() (gas: 1040474512)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 1673199)\n[PASS] test_swarmShareArrivesWholeAndIsClaimableWhole() (gas: 149054)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 87.91ms (85.73ms CPU time)\n\nRan 32 tests for test/Polyneum.t.sol:PolyneumTest\n[PASS] testFuzz_chainOfTransfersConservesSupply(uint256,uint256,uint256) (runs: 256, μ: 208609, ~: 211964)\nLogs:\n  Bound result 1956\n  Bound result 822\n  Bound result 370\n\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 37304, ~: 37660)\nLogs:\n  Bound result 5713142665881327461239606733662801601103567699919726945712018624519800\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 90434, ~: 90648)\nLogs:\n  Bound result 669041634058098605386026648\n\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256) (runs: 256, μ: 142842, ~: 144358)\nLogs:\n  Bound result 151681544889708956244750631\n  Bound result 1640\n\n[PASS] test_allowanceIsPerSpender() (gas: 91057)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 90235)\n[PASS] test_approveRevertsForZeroSpender() (gas: 30738)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 63036)\n[PASS] test_constructorEmitsMintTransfer() (gas: 5881)\n[PASS] test_constructorMintsWholeSupplyToDeployer() (gas: 21128)\n[PASS] test_contractRejectsEther() (gas: 37250)\n[PASS] test_deployScriptMintsToCaller() (gas: 877052)\n[PASS] test_deployerCannotMoveAHoldersBalance() (gas: 92437)\n[PASS] test_eachDeploymentMintsToItsOwnDeployer() (gas: 28224)\n[PASS] test_metadata() (gas: 26659)\n[PASS] test_noMintOrAdminFunctionExists() (gas: 366113)\n[PASS] test_runtimeFitsEip170() (gas: 7935)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 1672977)\n[PASS] test_supplyIsOneBillionWithEighteenDecimals() (gas: 24880)\n[PASS] test_transferFromRevertsBeyondAllowance() (gas: 80551)\n[PASS] test_transferFromRevertsBeyondBalanceEvenWithAllowance() (gas: 145155)\n[PASS] test_transferFromRevertsToZeroAddress() (gas: 83367)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 33393)\n[PASS] test_transferFromSpendsAllowance() (gas: 149996)\n[PASS] test_transferFromUnlimitedAllowanceIsNotDecreased() (gas: 125954)\n[PASS] test_transferMovesExactAmount() (gas: 86677)\n[PASS] test_transferRevertsFromEmptyAccount() (gas: 33124)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 85430)\n[PASS] test_transferRevertsToZeroAddress() (gas: 30759)\n[PASS] test_transferToSelfIsNoOp() (gas: 40636)\n[PASS] test_transferWholeBalance() (gas: 71017)\n[PASS] test_transferZeroAmountSucceeds() (gas: 43015)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 88.61ms (361.21ms CPU time)\n\nRan 35 tests for test/Polyneum.edges.t.sol:PolyneumEdgesTest\n[PASS] testFuzz_approveLastWriteWins(uint256,uint256,address) (runs: 1000, μ: 120923, ~: 121227)\nLogs:\n  Bound result 1112798025700583229870643553507716100805229759957\n\n[PASS] testFuzz_arbitraryCallFromStrangerNeverMovesAHolder(address,bytes) (runs: 1000, μ: 167099, ~: 166892)\n[PASS] testFuzz_receiverNeverExceedsSupply(uint256,uint256,uint256) (runs: 1000, μ: 160488, ~: 164201)\nLogs:\n  Bound result 428217115899871504841781124\n  Bound result 999999999999999999999999997\n  Bound result 613173260803078222958895801\n\n[PASS] testFuzz_splitTransferEqualsSingleTransfer(uint256,uint256) (runs: 1000, μ: 188265, ~: 188939)\nLogs:\n  Bound result 2886964586\n  Bound result 7444\n\n[PASS] testFuzz_transferAboveBalanceRevertsExactly(uint256,uint256) (runs: 1000, μ: 109976, ~: 110589)\nLogs:\n  Bound result 2592286113\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007910537353834\n\n[PASS] testFuzz_transferFromAboveFiniteAllowanceReverts(uint256,uint256) (runs: 1000, μ: 105314, ~: 105523)\nLogs:\n  Bound result 2886964586\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007910242682793\n\n[PASS] testFuzz_transferFromEquivalentToTransfer(uint256) (runs: 1000, μ: 207756, ~: 208255)\nLogs:\n  Bound result 756774618619179842084093271\n\n[PASS] testFuzz_transferRoundTrip(uint256) (runs: 1000, μ: 109636, ~: 109507)\nLogs:\n  Bound result 962\n\n[PASS] testFuzz_transfersToDistinctReceiversCommute(uint256,uint256) (runs: 1000, μ: 273013, ~: 275911)\nLogs:\n  Bound result 2592286113\n  Bound result 12\n\n[PASS] test_allowanceIsDirectional() (gas: 132559)\n[PASS] test_allowanceMaxMinusOneIsDecreased() (gas: 118766)\n[PASS] test_approveIsIndependentOfBalance() (gas: 94272)\n[PASS] test_approveSelfThenSpendOwnTokensViaTransferFrom() (gas: 123881)\n[PASS] test_approveZeroAmountSucceedsAndEmits() (gas: 88093)\n[PASS] test_approveZeroSpenderWithZeroAmountStillReverts() (gas: 30702)\n[PASS] test_emptyCalldataReverts() (gas: 29379)\n[PASS] test_failedTransferLeavesNoTrace() (gas: 111514)\n[PASS] test_ownerHasNoImplicitAllowanceForTransferFrom() (gas: 33563)\n[PASS] test_revokedAllowanceCannotBeUsed() (gas: 105414)\n[PASS] test_sameTransferTwiceFailsOnceDrained() (gas: 149927)\n[PASS] test_shortCalldataReverts() (gas: 49205)\n[PASS] test_transferFromErrorPrecedence() (gas: 110483)\n[PASS] test_transferFromExactAllowanceThenOneWeiMoreReverts() (gas: 144152)\n[PASS] test_transferFromSelfToSelfKeepsBalanceButSpendsAllowance() (gas: 103957)\n[PASS] test_transferFromZeroAmountWithoutAllowanceSucceeds() (gas: 48337)\n[PASS] test_transferMaxUintReverts() (gas: 40499)\n[PASS] test_transferOneWei() (gas: 75786)\n[PASS] test_transferOneWeiMoreThanBalanceReverts() (gas: 33487)\n[PASS] test_transferZeroAmountEmitsEvent() (gas: 38814)\n[PASS] test_transferZeroAmountToSelfFromEmptyAccount() (gas: 41026)\n[PASS] test_transferZeroAmountToZeroAddressStillReverts() (gas: 30790)\n[PASS] test_unknownSelectorReverts() (gas: 29501)\n[PASS] test_unlimitedAllowanceSurvivesSpendingTheWholeBalance() (gas: 164676)\n[PASS] test_valueBearingCallToTransferReverts() (gas: 48646)\n[PASS] test_viewFunctionsAnswerForAnyCaller() (gas: 59046)\nSuite result: ok. 35 passed; 0 failed; 0 skipped; finished in 88.73ms (782.25ms CPU time)\n\nRan 1 test for test/Polyneum.invariant.t.sol:PolyneumInvariantTest\n[PASS]\nPolyneumInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_totalSupplyNeverChanges\n[PASS] invariant_zeroAddressHoldsNothing\n PolyneumInvariantTest invariants (runs: 256, calls: 128000, reverts: 0)\n\n╭-----------------+--------------+-------+---------+----------╮\n| Contract        | Selector     | Calls | Reverts | Discards |\n+=============================================================+\n| PolyneumHandler | approve      | 42552 | 0       | 0        |\n|-----------------+--------------+-------+---------+----------|\n| PolyneumHandler | transfer     | 42612 | 0       | 0        |\n|-----------------+--------------+-------+---------+----------|\n| PolyneumHandler | transferFrom | 42836 | 0       | 0        |\n╰-----------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 20\n  Bound result 48879\n  Bound result 40920\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4306\n  Bound result 0\n  Bound result 5210\n  Bound result 0\n  Bound result 40484\n  Bound result 1000\n  Bound result 3393\n  Bound result 0\n  Bound result 0\n  Bound result 361\n  Bound result 206\n  Bound result 5\n  Bound result 244\n  Bound result 2\n  Bound result 424409150356527634686561937\n  Bound result 4\n  Bound result 0\n  Bound result 4\n  Bound result 1\n  Bound result 37056\n  Bound result 3\n  Bound result 317\n  Bound result 1\n  Bound result 0\n  Bound result 25\n  Bound result 1000000000000000000000\n  Bound result 95\n  Bound result 1281\n  Bound result 49569\n  Bound result 36876\n  Bound result 1375\n  Bound result 136\n  Bound result 27012\n  Bound result 1000\n  Bound result 96\n  Bound result 3376\n  Bound result 306\n  Bound result 23270\n  Bound result 2478893114\n  Bound result 0\n  Bound result 599661774021322469276\n  Bound result 379\n  Bound result 6\n  Bound result 0\n  Bound result 6\n  Bound result 5978\n  Bound result 1359\n  Bound result 48879\n  Bound result 51\n  Bound result 8\n  Bound result 0\n  Bound result 82\n  Bound result 242\n  Bound result 0\n  Bound result 0\n  Bound result 342498606979762291242\n  Bound result 13\n  Bound result 2\n  Bound result 57839618998915256942\n  Bound result 0\n  Bound result 425898561900853949836271026\n  Bound result 5786927992643343694\n  Bound result 692345398\n  Bound result 5\n  Bound result 9\n  Bound result 8693196514101950677455\n  Bound result 4809\n  Bound result 363090931\n  Bound result 1000\n  Bound result 17\n  Bound result 4212127039157719143155658\n  Bound result 1000\n  Bound result 2478893113\n  Bound result 1725891719620398985301492\n  Bound result 2268297\n  Bound result 421686492701315228916021343\n  Bound result 421\n  Bound result 827905\n  Bound result 4697\n  Bound result 5068\n  Bound result 0\n  Bound result 3000000000000000000\n  Bound result 1000000000\n  Bound result 55934\n  Bound result 2\n  Bound result 12\n  Bound result 0\n  Bound result 4999999999999999801\n  Bound result 670\n  Bound result 441538192227040516977739\n  Bound result 11\n  Bound result 44832066289207901671\n  Bound result 3480707394\n  Bound result 8\n  Bound result 1656590528794318442265845\n  Bound result 37\n  Bound result 69826264324375559586668\n  Bound result 64199\n  Bound result 0\n  Bound result 40\n  Bound result 1\n  Bound result 840\n  Bound result 2021\n  Bound result 855509298153725296912772\n  Bound result 435766700496771431997890\n  Bound result 2951\n  Bound result 6000000000000000000\n  Bound result 870393421466673688329392\n  Bound result 0\n  Bound result 1365\n  Bound result 340071921208965755002761\n  Bound result 318\n  Bound result 5326\n  Bound result 358503850566115630441783735\n  Bound result 36876\n  Bound result 1176\n  Bound result 1000000000000000000\n  Bound result 4532\n  Bound result 96\n  Bound result 84087432592650959057618403\n  Bound result 397\n  Bound result 12\n  Bound result 318277334191589812041843\n  Bound result 181\n  Bound result 10\n  Bound result 20722\n  Bound result 2\n  Bound result 2990\n  Bound result 0\n  Bound result 6\n  Bound result 2021\n  Bound result 14\n  Bound result 251066484835806713446784\n  Bound result 100000000000000000000\n  Bound result 48044051186740460738331\n  Bound result 3662\n  Bound result 55934\n  Bound result 7\n  Bound result 1\n  Bound result 1\n  Bound result 4867\n  Bound result 8\n  Bound result 48879\n  Bound result 3480707394\n  Bound result 7904332559334133141249\n  Bound result 50354605507768532\n  Bound result 0\n  Bound result 15484242170\n  Bound result 22\n  Bound result 47686\n  Bound result 0\n  Bound result 1300310915064131739997162\n  Bound result 263\n  Bound result 616482427198107123259031926\n  Bound result 0\n  Bound result 783164068407479070840052032\n  Bound result 255\n  Bound result 0\n  Bound result 363237278373114001859608162\n  Bound result 0\n  Bound result 15\n  Bound result 1662\n  Bound result 654793026770785923764463\n  Bound result 234822750717230252740919014\n  Bound result 4487\n  Bound result 166682898455244414588836238\n  Bound result 234821493421003195709625373\n  Bound result 97813515071024882292473312\n  Bound result 139152255128940328337918948\n  Bound result 5300\n  Bound result 239\n  Bound result 2\n  Bound result 3\n  Bound result 36876\n  Bound result 17\n  Bound result 95\n  Bound result 889\n  Bound result 238\n  Bound result 6\n  Bound result 17\n  Bound result 4356527637104901061\n  Bound result 22\n  Bound result 93\n  Bound result 546\n  Bound result 53591\n  Bound result 37415009304325264748674175\n  Bound result 66\n  Bound result 99\n  Bound result 93746231970826996074641376\n  Bound result 15\n  Bound result 2\n  Bound result 2486233319537320850203340\n  Bound result 9\n  Bound result 4\n  Bound result 0\n  Bound result 2556\n  Bound result 2583\n  Bound result 65601256305663244662927189\n  Bound result 20\n  Bound result 5758\n  Bound result 2021\n  Bound result 9\n  Bound result 3772\n  Bound result 256\n  Bound result 3143416\n  Bound result 436\n  Bound result 102017086484\n  Bound result 36\n  Bound result 870393421466673688329393\n  Bound result 446\n  Bound result 54839618996436334616\n  Bound result 851\n  Bound result 1324\n  Bound result 2704\n  Bound result 882\n  Bound result 2598\n  Bound result 217794651346243079785298959\n  Bound result 4000000000000000000\n  Bound result 4168\n  Bound result 23068442808573405785421150\n  Bound result 1000000000000000000\n  Bound result 2\n  Bound result 128\n  Bound result 2\n  Bound result 1219\n  Bound result 7043633030052953\n  Bound result 64199\n  Bound result 3662\n  Bound result 1000000000\n  Bound result 6432\n  Bound result 2\n  Bound result 53\n  Bound result 1058\n  Bound result 94124854692928766214321268\n  Bound result 9482309082\n  Bound result 0\n  Bound result 13\n  Bound result 33\n  Bound result 2999\n  Bound result 64199\n  Bound result 1\n  Bound result 255\n  Bound result 128344059936004492729807235\n  Bound result 10000000000000000000\n  Bound result 42566096057018583824\n  Bound result 1725540768\n  Bound result 2021\n  Bound result 0\n  Bound result 21723894089541431296046974\n  Bound result 1574\n  Bound result 3308\n  Bound result 388530797480309139539247371\n  Bound result 2194307449515095555952177\n  Bound result 13\n  Bound result 287\n  Bound result 9\n  Bound result 5660\n  Bound result 6\n  Bound result 528870789\n  Bound result 0\n  Bound result 1521\n  Bound result 312676600860555227209613017\n  Bound result 6\n  Bound result 10000\n  Bound result 17\n  Bound result 7\n  Bound result 4\n  Bound result 12\n  Bound result 64\n  Bound result 54839618996436334615\n  Bound result 4\n  Bound result 0\n  Bound result 20\n  Bound result 82308015400147747180418519\n  Bound result 170355677137685922855486906\n  Bound result 4\n  Bound result 3398847\n  Bound result 2\n  Bound result 19845\n  Bound result 2407\n  Bound result 118117131978461531145628411\n  Bound result 19\n  Bound result 5777\n  Bound result 243680377\n  Bound result 1000\n  Bound result 20026\n  Bound result 48879\n  Bound result 451\n  Bound result 217\n  Bound result 0\n  Bound result 6000000000000000000\n  Bound result 0\n  Bound result 1\n  Bound result 9\n  Bound result 43784148189255307674966782\n  Bound result 0\n  Bound result 428632\n  Bound result 0\n  Bound result 7000000000000000000\n  Bound result 96\n  Bound result 696\n  Bound result 211143208\n  Bound result 2\n  Bound result 451115\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 8.92s (8.91s CPU time)\n\nRan 1 test for test/Polyneum.ghost.invariant.t.sol:PolyneumGhostInvariantTest\n[PASS]\nPolyneumGhostInvariantTest invariants:\n[PASS] invariant_allowancesMatchGhost\n[PASS] invariant_eachBalanceEqualsItsFlows\n[PASS] invariant_handlerSawNoViolation\n[PASS] invariant_noAllowanceOutsideRecordedPairs\n[PASS] invariant_sumOfAllTouchedBalancesIsSupply\n[PASS] invariant_tokenHoldsNoEther\n[PASS] invariant_totalSupplyIsFixed\n[PASS] invariant_zeroAddressHoldsNothing\n PolyneumGhostInvariantTest invariants (runs: 256, calls: 32768, reverts: 0)\n\n╭----------------------+----------------------------+-------+---------+----------╮\n| Contract             | Selector                   | Calls | Reverts | Discards |\n+================================================================================+\n| PolyneumGhostHandler | approveClamped             | 1651  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | approveMax                 | 1614  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | approveMaxMinusOne         | 1653  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | approveRaw                 | 1665  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | approveZero                | 1670  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | privilegedCall             | 1634  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | sendEther                  | 1668  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferAboveBalance       | 1614  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferAll                | 1609  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferClamped            | 3244  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferFromAboveAllowance | 1658  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferFromByStranger     | 1613  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferFromClamped        | 1638  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferFromExactAllowance | 1661  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferFromRaw            | 1629  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferOneWei             | 1628  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferRaw                | 1631  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | transferZero               | 1651  | 0       | 0        |\n|----------------------+----------------------------+-------+---------+----------|\n| PolyneumGhostHandler | unknownSelector            | 1637  | 0       | 0        |\n╰----------------------+----------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 42973990474041844812\n  Bound result 5795\n  Bound result 0\n  Bound result 27197606582149788354002044\n  Bound result 0\n  Bound result 12862\n  Bound result 44518150793899543585574302376765868865410859381106753607565790969796457660451\n  Bound result 0\n  Bound result 8548\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 51966\n  Bound result 4000000000000000000\n  Bound result 98\n  Bound result 15\n  Bound result 4601\n  Bound result 9012\n  Bound result 1\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 8188044648342310148064\n  Bound result 0\n  Bound result 24576\n  Bound result 4467\n  Bound result 999999999999999999999999999\n  Bound result 0\n  Bound result 659918\n  Bound result 2\n  Bound result 1000000000000000000\n  Bound result 3661\n  Bound result 64199\n  Bound result 0\n  Bound result 99999999999999999999\n  Bound result 874\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 27.49s (27.49s CPU time)\n\nRan 5 test suites in 27.49s (36.67s CPU time): 80 tests passed, 0 failed, 0 skipped (80 total tests)\n","passed":true},{"durationMs":37,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Polyneum.approve(address,uint256)\",\"Polyneum.transfer(address,uint256)\",\"Polyneum.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":117,\"foundry.toml\":20,\"remappings.txt\":1,\"script/DeployPolyneum.s.sol\":26,\"src/Polyneum.sol\":129,\"test/Polyneum.edges.t.sol\":460,\"test/Polyneum.ghost.invariant.t.sol\":502,\"test/Polyneum.invariant.t.sol\":84,\"test/Polyneum.launch.t.sol\":241,\"test/Polyneum.t.sol\":356},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"0b238335c0469f99dab8843807d17329221a7fade8e70e971325f22110d5b361","verifiedTreeHash":"d75b1e95298828cb55f5c8abffbeb2ca0d7c2c8e","verifierVersion":"0.1.0+327e1e9f"},{"checks":[{"durationMs":1743,"exitCode":0,"name":"build","output":"Compiling 23 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.58s\nCompiler run successful!\n","passed":true},{"durationMs":12562,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 32 tests for test/Polyneum.t.sol:PolyneumTest\n[PASS] testFuzz_chainOfTransfersConservesSupply(uint256,uint256,uint256) (runs: 256, μ: 207906, ~: 211982)\nLogs:\n  Bound result 20557\n  Bound result 4358\n  Bound result 3172\n\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 37322, ~: 37660)\nLogs:\n  Bound result 600179588357638401895326616450704397\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 89551, ~: 90672)\nLogs:\n  Bound result 1040\n\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256) (runs: 256, μ: 142948, ~: 144374)\nLogs:\n  Bound result 100000000000000000000\n  Bound result 242\n\n[PASS] test_allowanceIsPerSpender() (gas: 91057)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 90235)\n[PASS] test_approveRevertsForZeroSpender() (gas: 30738)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 63036)\n[PASS] test_constructorEmitsMintTransfer() (gas: 5881)\n[PASS] test_constructorMintsWholeSupplyToDeployer() (gas: 21128)\n[PASS] test_contractRejectsEther() (gas: 37250)\n[PASS] test_deployScriptMintsToCaller() (gas: 877052)\n[PASS] test_deployerCannotMoveAHoldersBalance() (gas: 92437)\n[PASS] test_eachDeploymentMintsToItsOwnDeployer() (gas: 28224)\n[PASS] test_metadata() (gas: 26659)\n[PASS] test_noMintOrAdminFunctionExists() (gas: 366113)\n[PASS] test_runtimeFitsEip170() (gas: 7935)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 1672977)\n[PASS] test_supplyIsOneBillionWithEighteenDecimals() (gas: 24880)\n[PASS] test_transferFromRevertsBeyondAllowance() (gas: 80551)\n[PASS] test_transferFromRevertsBeyondBalanceEvenWithAllowance() (gas: 145155)\n[PASS] test_transferFromRevertsToZeroAddress() (gas: 83367)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 33393)\n[PASS] test_transferFromSpendsAllowance() (gas: 149996)\n[PASS] test_transferFromUnlimitedAllowanceIsNotDecreased() (gas: 125954)\n[PASS] test_transferMovesExactAmount() (gas: 86677)\n[PASS] test_transferRevertsFromEmptyAccount() (gas: 33124)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 85430)\n[PASS] test_transferRevertsToZeroAddress() (gas: 30759)\n[PASS] test_transferToSelfIsNoOp() (gas: 40636)\n[PASS] test_transferWholeBalance() (gas: 71017)\n[PASS] test_transferZeroAmountSucceeds() (gas: 43015)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 16.91ms (68.01ms CPU time)\n\nRan 1 test for test/Polyneum.invariant.t.sol:PolyneumInvariantTest\n[PASS]\nPolyneumInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_totalSupplyNeverChanges\n[PASS] invariant_zeroAddressHoldsNothing\n PolyneumInvariantTest invariants (runs: 256, calls: 128000, reverts: 0)\n\n╭-----------------+--------------+-------+---------+----------╮\n| Contract        | Selector     | Calls | Reverts | Discards |\n+=============================================================+\n| PolyneumHandler | approve      | 42958 | 0       | 0        |\n|-----------------+--------------+-------+---------+----------|\n| PolyneumHandler | transfer     | 42525 | 0       | 0        |\n|-----------------+--------------+-------+---------+----------|\n| PolyneumHandler | transferFrom | 42517 | 0       | 0        |\n╰-----------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 127\n  Bound result 0\n  Bound result 255\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 18\n  Bound result 17\n  Bound result 0\n  Bound result 0\n  Bound result 138\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 140\n  Bound result 0\n  Bound result 2664\n  Bound result 7000000000000000000\n  Bound result 0\n  Bound result 82\n  Bound result 1069\n  Bound result 195\n  Bound result 14\n  Bound result 4\n  Bound result 5\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 34\n  Bound result 207\n  Bound result 37\n  Bound result 4602\n  Bound result 244\n  Bound result 0\n  Bound result 14\n  Bound result 61894883223642618\n  Bound result 12019039227\n  Bound result 729238\n  Bound result 4478\n  Bound result 7029706596\n  Bound result 655\n  Bound result 0\n  Bound result 0\n  Bound result 24\n  Bound result 13\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 8\n  Bound result 0\n  Bound result 2\n  Bound result 58092364428016320\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 3284\n  Bound result 1076\n  Bound result 0\n  Bound result 999999999938105123806785040\n  Bound result 723\n  Bound result 3295275121321746\n  Bound result 2961\n  Bound result 24576\n  Bound result 411240002460380\n  Bound result 0\n  Bound result 100\n  Bound result 0\n  Bound result 1794\n  Bound result 14\n  Bound result 18\n  Bound result 36\n  Bound result 487\n  Bound result 244\n  Bound result 542\n  Bound result 4056230107517042\n  Bound result 21\n  Bound result 5299\n  Bound result 1892\n  Bound result 18\n  Bound result 273\n  Bound result 50544814805108046131040608\n  Bound result 95\n  Bound result 659918\n  Bound result 3492\n  Bound result 24\n  Bound result 4334\n  Bound result 87\n  Bound result 62\n  Bound result 19781335897648415997709870\n  Bound result 3314227558794446\n  Bound result 242\n  Bound result 244\n  Bound result 22\n  Bound result 0\n  Bound result 1000000000\n  Bound result 3000000000000000000\n  Bound result 1629\n  Bound result 224\n  Bound result 14969061525003640221271045\n  Bound result 0\n  Bound result 418499048605274932\n  Bound result 71\n  Bound result 108\n  Bound result 95\n  Bound result 40\n  Bound result 0\n  Bound result 1000000000000000000000\n  Bound result 4616\n  Bound result 23847424108810711351783598\n  Bound result 9933275459787632973416071\n  Bound result 29\n  Bound result 20830203450986223718711283\n  Bound result 98668\n  Bound result 0\n  Bound result 1\n  Bound result 456\n  Bound result 3041954472\n  Bound result 33\n  Bound result 48879\n  Bound result 0\n  Bound result 2\n  Bound result 1\n  Bound result 0\n  Bound result 3344\n  Bound result 14\n  Bound result 96\n  Bound result 255\n  Bound result 17\n  Bound result 245\n  Bound result 1798\n  Bound result 951384398389483136440002133\n  Bound result 806\n  Bound result 325\n  Bound result 265\n  Bound result 3124842406\n  Bound result 12\n  Bound result 173\n  Bound result 175\n  Bound result 2\n  Bound result 1441\n  Bound result 4034\n  Bound result 4056\n  Bound result 2089331274\n  Bound result 10\n  Bound result 27784395108712732359983635\n  Bound result 0\n  Bound result 1000000000000000000000\n  Bound result 0\n  Bound result 1\n  Bound result 11736605527533593044914330\n  Bound result 2156\n  Bound result 5066\n  Bound result 54\n  Bound result 931\n  Bound result 1022\n  Bound result 10000000000000000001\n  Bound result 270920387675674833407\n  Bound result 36\n  Bound result 625\n  Bound result 5804\n  Bound result 493297410467422973644561579\n  Bound result 4140\n  Bound result 5000000000000000000\n  Bound result 10636338503549003\n  Bound result 54960350829682\n  Bound result 247547795306299526291\n  Bound result 14\n  Bound result 493297405478059313183626487\n  Bound result 351554946788005505778179911\n  Bound result 1199\n  Bound result 18\n  Bound result 28360866921404830356\n  Bound result 7000000000000000000\n  Bound result 0\n  Bound result 147\n  Bound result 1\n  Bound result 357728592257617423636753588\n  Bound result 3464\n  Bound result 478917199373142381208094340\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 4115\n  Bound result 318134047580518776\n  Bound result 0\n  Bound result 719206528\n  Bound result 4989336844\n  Bound result 104704135915184581\n  Bound result 589890881687626675\n  Bound result 292931563526876420804992188\n  Bound result 3076\n  Bound result 1285\n  Bound result 64199\n  Bound result 108259984647919336\n  Bound result 956\n  Bound result 521\n  Bound result 250577883\n  Bound result 7000000000000000000\n  Bound result 109497182338371750200652916\n  Bound result 1175\n  Bound result 827905\n  Bound result 654493342\n  Bound result 3339036233\n  Bound result 30763478910773857692127492\n  Bound result 2827\n  Bound result 57781685303273389166977489\n  Bound result 10000000000000000001\n  Bound result 5650096728793746671447394\n  Bound result 271\n  Bound result 147\n  Bound result 242\n  Bound result 132\n  Bound result 95\n  Bound result 4266\n  Bound result 100000000000000000000\n  Bound result 4338557246578444\n  Bound result 95\n  Bound result 19883419172960842458998425\n  Bound result 24576\n  Bound result 244\n  Bound result 5239\n  Bound result 5533\n  Bound result 1009\n  Bound result 37898995214263424940716973\n  Bound result 2478893115\n  Bound result 241320974785536296799132512\n  Bound result 34659545492532107756618564\n  Bound result 1893\n  Bound result 1959\n  Bound result 1000000000000000000\n  Bound result 1904\n  Bound result 169\n  Bound result 30782816567720329258192147\n  Bound result 18\n  Bound result 335522\n  Bound result 845222989500465364476168\n  Bound result 173349963099983170161123694\n  Bound result 1881\n  Bound result 4\n  Bound result 484435916\n  Bound result 33294498664993556712801562\n  Bound result 17826835110094331271373915\n  Bound result 14057787491588056067220399\n  Bound result 5000000000000000000\n  Bound result 33\n  Bound result 222840306833028329261186048\n  Bound result 20\n  Bound result 81570\n  Bound result 7\n  Bound result 1144988269\n  Bound result 1000000000000000000\n  Bound result 827905\n  Bound result 2827\n  Bound result 308249879850451032313125241\n  Bound result 521\n  Bound result 3490\n  Bound result 1291\n  Bound result 4866\n  Bound result 915\n  Bound result 61946\n  Bound result 1000000000000000000\n  Bound result 2029\n  Bound result 4385062248545298363535133\n  Bound result 1764\n  Bound result 103358992329163447044682603\n  Bound result 1\n  Bound result 827905\n  Bound result 26\n  Bound result 1\n  Bound result 0\n  Bound result 23294\n  Bound result 242\n  Bound result 1732297182487460989952362\n  Bound result 92600739783680585328373754\n  Bound result 13\n  Bound result 4660879611611800888\n  Bound result 0\n  Bound result 64199\n  Bound result 622\n  Bound result 76095258287062258621435442\n  Bound result 0\n  Bound result 1035510786\n  Bound result 24576\n  Bound result 27784395108712732359987778\n  Bound result 1630\n  Bound result 20115248874618249640969239\n  Bound result 18\n  Bound result 1109\n  Bound result 1\n  Bound result 110615214839155450198537629\n  Bound result 100000000000000000000\n  Bound result 2092668393154668955059951\n  Bound result 18014475055474863834651984\n  Bound result 0\n  Bound result 244\n  Bound result 8827500253542291194225997\n  Bound result 504560486\n  Bound result 242\n  Bound result 0\n  Bound result 1\n  Bound result 11096651821857806261966395\n  Bound result 1127071538682080199\n  Bound result 18\n  Bound result 83910568729481573502237319\n  Bound result 1\n  Bound result 40\n  Bound result 14953777542164858297831392\n  Bound result 24576\n  Bound result 625377\n  Bound result 226045873\n  Bound result 40740019905557183528902896\n  Bound result 127\n  Bound result 104025533709703473375221626\n  Bound result 3290\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 12.42s (12.42s CPU time)\n\nRan 2 test suites in 12.43s (12.44s CPU time): 33 tests passed, 0 failed, 0 skipped (33 total tests)\n","passed":true},{"durationMs":65,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Polyneum.approve(address,uint256)\",\"Polyneum.transfer(address,uint256)\",\"Polyneum.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":117,\"foundry.toml\":20,\"remappings.txt\":1,\"script/DeployPolyneum.s.sol\":26,\"src/Polyneum.sol\":129,\"test/Polyneum.invariant.t.sol\":84,\"test/Polyneum.t.sol\":356},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":556,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":176,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/Polyneum.sol:26: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"319968af8e71292a74753229d7d4fe5d313a743efa786d039a43e869bad1ced7","verifiedTreeHash":"91ae8fec39f17ad677caee81369eb105d4edded6","verifierVersion":"0.1.0+327e1e9f"},{"checks":[{"durationMs":968,"exitCode":0,"name":"build","output":"Compiling 23 files with Solc 0.8.26\nSolc 0.8.26 finished in 877.37ms\nCompiler run successful!\n","passed":true},{"durationMs":7903,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 32 tests for test/Polyneum.t.sol:PolyneumTest\n[PASS] testFuzz_chainOfTransfersConservesSupply(uint256,uint256,uint256) (runs: 256, μ: 208406, ~: 211952)\nLogs:\n  Bound result 448246210339479709095383461\n  Bound result 15133739579\n  Bound result 15133739577\n\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 37283, ~: 37018)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129640062\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 88885, ~: 90660)\nLogs:\n  Bound result 22160\n\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256) (runs: 256, μ: 142278, ~: 144356)\nLogs:\n  Bound result 853380025017946997430220638\n  Bound result 348687459543195446198103722\n\n[PASS] test_allowanceIsPerSpender() (gas: 91057)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 90235)\n[PASS] test_approveRevertsForZeroSpender() (gas: 30738)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 63036)\n[PASS] test_constructorEmitsMintTransfer() (gas: 5881)\n[PASS] test_constructorMintsWholeSupplyToDeployer() (gas: 21128)\n[PASS] test_contractRejectsEther() (gas: 37250)\n[PASS] test_deployScriptMintsToCaller() (gas: 877052)\n[PASS] test_deployerCannotMoveAHoldersBalance() (gas: 92437)\n[PASS] test_eachDeploymentMintsToItsOwnDeployer() (gas: 28224)\n[PASS] test_metadata() (gas: 26659)\n[PASS] test_noMintOrAdminFunctionExists() (gas: 366113)\n[PASS] test_runtimeFitsEip170() (gas: 7935)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 1672977)\n[PASS] test_supplyIsOneBillionWithEighteenDecimals() (gas: 24880)\n[PASS] test_transferFromRevertsBeyondAllowance() (gas: 80551)\n[PASS] test_transferFromRevertsBeyondBalanceEvenWithAllowance() (gas: 145155)\n[PASS] test_transferFromRevertsToZeroAddress() (gas: 83367)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 33393)\n[PASS] test_transferFromSpendsAllowance() (gas: 149996)\n[PASS] test_transferFromUnlimitedAllowanceIsNotDecreased() (gas: 125954)\n[PASS] test_transferMovesExactAmount() (gas: 86677)\n[PASS] test_transferRevertsFromEmptyAccount() (gas: 33124)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 85430)\n[PASS] test_transferRevertsToZeroAddress() (gas: 30759)\n[PASS] test_transferToSelfIsNoOp() (gas: 40636)\n[PASS] test_transferWholeBalance() (gas: 71017)\n[PASS] test_transferZeroAmountSucceeds() (gas: 43015)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 12.78ms (44.51ms CPU time)\n\nRan 1 test for test/Polyneum.invariant.t.sol:PolyneumInvariantTest\n[PASS]\nPolyneumInvariantTest invariants:\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_totalSupplyNeverChanges\n[PASS] invariant_zeroAddressHoldsNothing\n PolyneumInvariantTest invariants (runs: 256, calls: 128000, reverts: 0)\n\n╭-----------------+--------------+-------+---------+----------╮\n| Contract        | Selector     | Calls | Reverts | Discards |\n+=============================================================+\n| PolyneumHandler | approve      | 42658 | 0       | 0        |\n|-----------------+--------------+-------+---------+----------|\n| PolyneumHandler | transfer     | 42862 | 0       | 0        |\n|-----------------+--------------+-------+---------+----------|\n| PolyneumHandler | transferFrom | 42480 | 0       | 0        |\n╰-----------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 4242\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4000000000000000000\n  Bound result 0\n  Bound result 147\n  Bound result 1280\n  Bound result 4744\n  Bound result 42731187972\n  Bound result 2498\n  Bound result 1079\n  Bound result 559\n  Bound result 18\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 255\n  Bound result 2002\n  Bound result 1000000000000000000\n  Bound result 546\n  Bound result 1109\n  Bound result 0\n  Bound result 5436\n  Bound result 0\n  Bound result 0\n  Bound result 1529\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 185\n  Bound result 0\n  Bound result 24\n  Bound result 0\n  Bound result 181\n  Bound result 0\n  Bound result 64199\n  Bound result 0\n  Bound result 326\n  Bound result 4356\n  Bound result 4627\n  Bound result 18\n  Bound result 244\n  Bound result 2619\n  Bound result 96\n  Bound result 240\n  Bound result 2827\n  Bound result 469263821179808614807492102\n  Bound result 469263826179808614807494943\n  Bound result 279112493629799837386879019\n  Bound result 77\n  Bound result 515\n  Bound result 3816001891599431246\n  Bound result 682\n  Bound result 5000000000000000000\n  Bound result 1891\n  Bound result 10000000000000000000\n  Bound result 2\n  Bound result 3808\n  Bound result 127\n  Bound result 1889567281\n  Bound result 1190\n  Bound result 125\n  Bound result 5000000000000000000\n  Bound result 42731199030\n  Bound result 2853\n  Bound result 5239\n  Bound result 949\n  Bound result 4000000000000000000\n  Bound result 251623680190391503184866550\n  Bound result 2582\n  Bound result 2092479351987186434\n  Bound result 2951\n  Bound result 22378936458798070545957994\n  Bound result 98\n  Bound result 14\n  Bound result 11\n  Bound result 1359\n  Bound result 162\n  Bound result 2907520562550418087\n  Bound result 3\n  Bound result 1681\n  Bound result 4129\n  Bound result 5126\n  Bound result 190151341550008820151813390\n  Bound result 0\n  Bound result 0\n  Bound result 12\n  Bound result 75269969464416539255813899\n  Bound result 0\n  Bound result 0\n  Bound result 3343\n  Bound result 0\n  Bound result 0\n  Bound result 1849806023356782127\n  Bound result 1000000000\n  Bound result 107477462\n  Bound result 12220755445153288\n  Bound result 32789547300841145514919533\n  Bound result 502\n  Bound result 1144988270\n  Bound result 1077\n  Bound result 0\n  Bound result 18\n  Bound result 10000000000000000000\n  Bound result 64199\n  Bound result 121\n  Bound result 10\n  Bound result 24576\n  Bound result 1000000000\n  Bound result 2835717308\n  Bound result 4\n  Bound result 133\n  Bound result 1000000000000000000000\n  Bound result 2365515539835420790\n  Bound result 255\n  Bound result 4389\n  Bound result 353441791360237240\n  Bound result 3255\n  Bound result 180\n  Bound result 1440\n  Bound result 414\n  Bound result 6358118006131122004891850\n  Bound result 1150193979478971589\n  Bound result 95\n  Bound result 1000000000000000000\n  Bound result 0\n  Bound result 11\n  Bound result 3\n  Bound result 31183426547726745651193914\n  Bound result 1\n  Bound result 3081\n  Bound result 305675612110509862958763103\n  Bound result 5777\n  Bound result 1855315959740954156\n  Bound result 13327953781811092360088793\n  Bound result 1000000000\n  Bound result 0\n  Bound result 1755\n  Bound result 242\n  Bound result 533\n  Bound result 517440284\n  Bound result 57\n  Bound result 16\n  Bound result 443\n  Bound result 1000000000000000000000\n  Bound result 450817781730456397374029311\n  Bound result 24576\n  Bound result 10\n  Bound result 523\n  Bound result 3000000000000000000\n  Bound result 66\n  Bound result 981\n  Bound result 10000000000000000001\n  Bound result 2069\n  Bound result 0\n  Bound result 24\n  Bound result 322\n  Bound result 153525962402022581902437950\n  Bound result 325\n  Bound result 96\n  Bound result 54\n  Bound result 14\n  Bound result 827905\n  Bound result 117046835727119375220963\n  Bound result 181043214683753539902745391\n  Bound result 0\n  Bound result 431236645447559843\n  Bound result 4000000000000000000\n  Bound result 95\n  Bound result 1284\n  Bound result 1000000000\n  Bound result 659918\n  Bound result 21\n  Bound result 581\n  Bound result 93999996282\n  Bound result 9260493564183585007471976\n  Bound result 326893649897481370071092729\n  Bound result 849806114521024786\n  Bound result 4335\n  Bound result 1\n  Bound result 51647062851586078234548990\n  Bound result 69877856346768199145348221\n  Bound result 0\n  Bound result 2301971207989320888524145\n  Bound result 2827\n  Bound result 1000000000000000000000\n  Bound result 110\n  Bound result 49287394752616278724138674\n  Bound result 964352\n  Bound result 72297896391068160644\n  Bound result 244\n  Bound result 345430867907674397912490312\n  Bound result 874\n  Bound result 600\n  Bound result 301711998341275423263180751\n  Bound result 3769\n  Bound result 127\n  Bound result 4662\n  Bound result 10000000000000000001\n  Bound result 1000000000000000000\n  Bound result 0\n  Bound result 3000001185749988374\n  Bound result 495790613314\n  Bound result 559\n  Bound result 6000000000000000000\n  Bound result 6\n  Bound result 64199\n  Bound result 50485181552030216099\n  Bound result 1009\n  Bound result 36022387251134251214314903\n  Bound result 2189\n  Bound result 347\n  Bound result 361\n  Bound result 64199\n  Bound result 1849\n  Bound result 3027601142770001591\n  Bound result 108717473715563010997625852\n  Bound result 7\n  Bound result 424355068800357371920651\n  Bound result 4712896470554554412241856\n  Bound result 80258682004364425\n  Bound result 267\n  Bound result 975063843797\n  Bound result 213\n  Bound result 1\n  Bound result 6000000000000000000\n  Bound result 10085061617245180245633840\n  Bound result 10000000000000000001\n  Bound result 4000000000000000000\n  Bound result 5692750340333395699300189\n  Bound result 326893651747287394427875376\n  Bound result 1000000000000000000\n  Bound result 244\n  Bound result 64154302236434994942204696\n  Bound result 929\n  Bound result 2238533398067066\n  Bound result 100000000000000000000\n  Bound result 18\n  Bound result 23205085184\n  Bound result 6090876085387650053098741\n  Bound result 7000000000000000000\n  Bound result 55934\n  Bound result 312234191477833403802676341\n  Bound result 2\n  Bound result 4304\n  Bound result 4396\n  Bound result 7000000000000000000\n  Bound result 303824078852604988549125\n  Bound result 7975170163705\n  Bound result 570005351987538\n  Bound result 0\n  Bound result 4\n  Bound result 0\n  Bound result 360419735372301300223623\n  Bound result 30\n  Bound result 171992869979066394883431\n  Bound result 2584\n  Bound result 3372\n  Bound result 237055323755130758800780790\n  Bound result 26063035410146419632577\n  Bound result 474\n  Bound result 1000000000\n  Bound result 662\n  Bound result 10000000000000000001\n  Bound result 2808\n  Bound result 20\n  Bound result 17748493910963542464209102\n  Bound result 96\n  Bound result 592\n  Bound result 0\n  Bound result 1\n  Bound result 95\n  Bound result 14\n  Bound result 2775447337\n  Bound result 20589393115744389432016\n  Bound result 4243\n  Bound result 103572918257320552449571\n  Bound result 95\n  Bound result 1167\n  Bound result 16\n  Bound result 17\n  Bound result 156979995030100266603921044\n  Bound result 119072070\n  Bound result 18538139354439775990665846\n  Bound result 296779053455386873978438388\n  Bound result 396\n  Bound result 581\n  Bound result 78\n  Bound result 95\n  Bound result 2\n  Bound result 1400\n  Bound result 3511\n  Bound result 2246\n  Bound result 3000000000000000000\n  Bound result 1\n  Bound result 56828976\n  Bound result 39527150378762642153607741\n  Bound result 10000000000000000001\n  Bound result 42459808527158571275727476\n  Bound result 680643297303477900747138\n  Bound result 4122\n  Bound result 255\n  Bound result 827905\n  Bound result 282\n  Bound result 425133908940779205\n  Bound result 255\n  Bound result 7000000000000000000\n  Bound result 10195302739213491069052127\n  Bound result 7\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 7.82s (7.82s CPU time)\n\nRan 2 test suites in 7.82s (7.84s CPU time): 33 tests passed, 0 failed, 0 skipped (33 total tests)\n","passed":true},{"durationMs":31,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Polyneum.approve(address,uint256)\",\"Polyneum.transfer(address,uint256)\",\"Polyneum.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":117,\"foundry.toml\":20,\"launch.json\":20,\"remappings.txt\":1,\"script/DeployPolyneum.s.sol\":26,\"src/Polyneum.sol\":129,\"test/Polyneum.invariant.t.sol\":84,\"test/Polyneum.t.sol\":356},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"fce1730354c7a0b5bd57482f96d44a5d36ca78b170021376f7a99e0d857730b5","verifiedTreeHash":"1b696890c79dc0cbc38467fd68a9f4f16e380491","verifierVersion":"0.1.0+327e1e9f"}]}