{"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":"916dd57d-080f-42cb-a1dc-894357e29a30","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"05d3f4cf8fb249946da56877b696e1cdc1c03479e0ba207cd8e0f78807227190","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":"74c8ba6ab5809c09594ddccd75073bda6f2677398b8f627ed01dd6974242ce8a","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":"b7841d7ae2e0c7da682d93f64bb90c604f7e2f314926b0e284ad568976241d0a","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":"de3015b40bdc2d2e3eefa096a4d6d4a066073c80432b5c1a7d383c82209876fb","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":"d13fb50d98c78ded27ea1319e1cc5aaac1196ca03c1acc47ebe12c541d408353","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":"83fde5ded78a94d870dda73dab42bc4bee635332e1afb898639269decc5ae1c7","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":"e1691a741146d862a6705403ce43c910c633ed23d60bcb3713f6f73a6de01f77","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"c9d236ec74c8e52d575bfc5c03b8a62a4a9a62b90f39682a81767270ce4292a8","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: Pangea (PANGEA).\nToken name: Pangea\nToken symbol: PANGEA\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"1ebb6d03056e46117c06d1fc5042ed0696097e58977ea2832b6eac318dc59a7a","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"916dd57d-080f-42cb-a1dc-894357e29a30","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2405-pangea"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51188","feedbackHash":"5a76aa72df6bd4ca43f0208dba35658337830da994f9d20e413a853da2b42e7c","nodeKey":"audit_economics","submissionHash":"05d3f4cf8fb249946da56877b696e1cdc1c03479e0ba207cd8e0f78807227190","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51041","feedbackHash":"d9f2f73cf590e8c4131b4f65a6a0a4ec4cfd75dc821749c9d880afb4542dea1f","nodeKey":"audit_flow","submissionHash":"74c8ba6ab5809c09594ddccd75073bda6f2677398b8f627ed01dd6974242ce8a","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52166","feedbackHash":"8f761e79bc8661419c85cf27cdb1323f7e2cd42855da56901f9761af6a8aa7ac","nodeKey":"audit_judge","submissionHash":"b7841d7ae2e0c7da682d93f64bb90c604f7e2f314926b0e284ad568976241d0a","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52608","feedbackHash":"85865c4cb6447c3bdf57bae20bf1621003fc2dcad7a3ffcc092aaaeeef2d288a","nodeKey":"audit_math","submissionHash":"de3015b40bdc2d2e3eefa096a4d6d4a066073c80432b5c1a7d383c82209876fb","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52604","feedbackHash":"95365f1ef847b8f9fc20a9b579c1ea4e3c580a9c61d6d4f17b93856f73092c08","nodeKey":"audit_permissions","submissionHash":"d13fb50d98c78ded27ea1319e1cc5aaac1196ca03c1acc47ebe12c541d408353","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52191","feedbackHash":"45651cfb810a9bc340346437e34d99f7dc54dc46006900c829f667368ba53d8c","nodeKey":"build_contract_project","submissionHash":"83fde5ded78a94d870dda73dab42bc4bee635332e1afb898639269decc5ae1c7","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51369","feedbackHash":"782e5fe6db608ccf5bdcfc594a6abac96f81beed18e04e18f5709216d0f4a252","nodeKey":"manifest","submissionHash":"e1691a741146d862a6705403ce43c910c633ed23d60bcb3713f6f73a6de01f77","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52679","feedbackHash":"39900d8158c516383d731f5be16a25c47d3a2f2322dbeb889019d0f8f15f7a9f","nodeKey":"write_foundry_tests","submissionHash":"c9d236ec74c8e52d575bfc5c03b8a62a4a9a62b90f39682a81767270ce4292a8","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"7fabb09fd0e86865eded91c847a2a5a96cd89cb0ba4b676043643282bdccbbb9","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"0b0761c9b10fe0bb","findings":[],"hash":"05d3f4cf8fb249946da56877b696e1cdc1c03479e0ba207cd8e0f78807227190","nodeId":"a2537dca-760f-4d6e-8202-0ce33cc4ac1e","outcome":"completed","summary":"The review is complete and the findings file is written. The result is a clean review with no defects.\n\n**Outcome**\n\n`.imd-findings.json` holds an empty findings list and eight coverage rows: the three state-changing entry points, four invariants, and the dependency check. Every entry point is marked `holds`.\n\n**What I checked, against the Economic Security, Invariant and Flow Gap guides**\n\n- **Supply is fixed.** `_mint` is reachable only from the constructor, `_update` is not overridden, and transfers to the zero address revert, so nothing can mint or burn. The compiled ABI has only the standard ERC-20 surface plus five view constants.\n- **Conservation.** A handler-driven invariant run over `transfer`, `approve` and `transferFrom` kept the sum of balances equal to the total supply and the zero address empty across 6,400 random calls, including deliberate over-balance and over-allowance attempts.\n- **Launch flows arrive whole.** With no fee, tax, reflection, exemption list or hook, the 10% swarm share, the pool share and the remainder split losslessly for any pool share up to 90%. A balance-delta settle probe, the pattern Uniswap v4 uses, credits a seed and a sell back exactly.\n- **Dependency integrity.** The five vendored OpenZeppelin files the token compiles are byte-identical to the published 5.1.0 package, and the source tree contains no non-ASCII characters. This was the one realistic place a defect could hide in a token this thin.\n- **Deployment.** The constructor takes no arguments, makes no external call, and mints to `msg.sender`, so the factory receives the whole supply as the protected floor requires. Decimals are the default 18.\n\n**Trust notes, not defects**\n\n- Unlimited approvals are honoured and never decremented, and the standard ERC-20 approve race applies. Both are documented in the README and inherent to the standard.\n- Tokens sent to the token contract itself are unrecoverable by design.\n\n**Not covered**\n\nNothing in the assigned area was left unreached. Slither and Mythril were not run beyond the verifier's output, which reported only a cosmetic numeric-literal note. The scratch test directory was removed, so the tree carries only the findings file.","treeHash":null,"usage":{"cachedInputTokens":791186,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":13901,"runtime":"claude","turns":29,"wallClockMs":214059}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"3bed38612db34f32","findings":[],"hash":"74c8ba6ab5809c09594ddccd75073bda6f2677398b8f627ed01dd6974242ce8a","nodeId":"946b1c1b-bf9b-4f93-bd37-b00ec463b2f8","outcome":"completed","summary":"The review is complete and the findings file is written with zero defects and full coverage.\n\n**Outcome.** I found no defect in the Pangea token. The findings record at `.imd-findings.json` holds an empty findings list and eight coverage rows, one for each of the three listed entry points plus the constructor, two invariants and two periphery targets. Git shows no other change to the tree, and I created nothing under `test/scratch/` because no finding needed a proof.\n\n**What I checked, by guide.**\n- Execution Trace: traced approve, transfer and transferFrom from entry to final state through the OpenZeppelin base. Every failure path reverts before any write, debits and credits are exact, and no reachable path passes the zero address into the supply-changing branches of the update function. The constructor is the only mint, for exactly one billion tokens at 18 decimals, to the caller, which is the factory under the launch's CREATE2 deployment.\n- Periphery: hashed the five vendored OpenZeppelin files the token depends on against the published 5.1.0 release, and all five match byte for byte. The deploy script reads no environment and is not on the launch path.\n- First Principles: the ABI exposes only the ERC-20 surface and five view constants. No receive, fallback, owner, initializer, mint, burn, pause or blocklist exists, so there is no state a privileged hand could reach. The runtime disassembly contains no DELEGATECALL, CALLCODE, SELFDESTRUCT, CALL, STATICCALL or CREATE.\n\n**Evidence run.** The build and all 34 project tests pass under the verifier's fuzz seed, including the factory-to-distributor-to-claimant and factory-to-requester flows arriving whole. The protected floor test itself could not be run here because it needs the v4-core dependency and launch environment variables, so my floor claims rest on reading it against the token's behaviour rather than on executing it.\n\n**Two non-defect notes for the author.** The README states chain id 1, an IMD pair, fee 12500, tick spacing 60 and a specific remainder address. Those are launch facts the manifest step owns, so if the job differs the README will be stale, but nothing in the code depends on them. The aderyn large-numeric-literal lead on line 24 is the supply constant, which the tests assert equals one billion times ten to the eighteenth, so it is not a defect.","treeHash":null,"usage":{"cachedInputTokens":646293,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":10412,"runtime":"claude","turns":19,"wallClockMs":168537}},{"artifacts":[],"attempt":1,"bundleHash":"e374540b359697937242522fde7591b603013bdac9df5c6aa97f66ddad74dd45","device":"1f9cb1750ebf47ed","findings":[],"hash":"83fde5ded78a94d870dda73dab42bc4bee635332e1afb898639269decc5ae1c7","nodeId":"45af0bb8-00b8-42f3-85f3-1de0370cfbff","outcome":"completed","summary":"The Pangea token project is complete and verified.\n\n**What was built**\n\n- `src/PangeaToken.sol`: contract `PangeaToken`, a plain OpenZeppelin v5.1.0 ERC-20 named Pangea with symbol PANGEA and 18 decimals. The constructor takes no arguments and mints the full one billion token supply once to `msg.sender`, which is the factory at launch. There is no owner, mint, burn, pause, blocklist, fee or fallback, so no privileged call exists and the supply cannot grow.\n- `foundry.toml` pins solc 0.8.26, sets `bytecode_hash = \"none\"` and disables CBOR metadata, with ffi off and no filesystem permissions. `remappings.txt` maps forge-std and OpenZeppelin.\n- `lib/forge-std` (v1.9.7) and `lib/openzeppelin` (v5.1.0, contracts only) are vendored as ordinary files with no git submodules.\n- `script/DeployPangea.s.sol` exposes a `deploy()` function the tests call directly. It reads no environment variables.\n- `test/PangeaToken.t.sol` and `test/DeployPangea.t.sol` hold 34 tests. They cover metadata and the one-time mint (including when a contract deploys, as the factory does), successful and failing transfers and allowances with exact revert reasons, rejection of every admin-shaped and privilege-shaped selector from both a stranger and the deployer, a bytecode scan for DELEGATECALL, CALLCODE and SELFDESTRUCT, the launch flows arriving whole, and four fuzz tests for conservation and allowance arithmetic.\n- `README.md` documents assumptions, deployment parameters, the empty \"After launch\" list, operational responsibilities and the security checklist walk-through.\n\n**Verification**\n\n`forge build`, `forge test` and `forge fmt --check` all pass, including a clean offline rebuild with an empty environment. The fuzz suite passes with the verifier's seed, three other seeds, and a 2000-run pass. Slither and Mythril are not on this machine and were not run.\n\n**One environment note**\n\nThe sandbox bind-mounts every `.gitmodules` file read-only, so the nested one from the OpenZeppelin clone could not be deleted. The vendored sources were moved to `lib/openzeppelin` and the orphaned `lib/openzeppelin-contracts/` directory, which now contains only that one locked file, is listed in `.gitignore`. It is a plain file, not a submodule, and git's dry-run add confirms it is excluded.","treeHash":"9faafa837bb076803f6411f1741cb2973ab4ba57","usage":{"cachedInputTokens":1404768,"inputTokens":642,"model":"claude-fable-5-1","outputTokens":27055,"runtime":"claude","turns":35,"wallClockMs":373598}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"7f1dec5ffcbde1d8","findings":[],"hash":"b7841d7ae2e0c7da682d93f64bb90c604f7e2f314926b0e284ad568976241d0a","nodeId":"9a4e7d72-8d0f-4313-8d00-b8dc7595e09d","outcome":"completed","summary":"Review complete. No defects found, and the findings file is written with an empty list and a full coverage record.\n\n**What I checked**\n\n- **The token itself.** `src/PangeaToken.sol` is a 34-line wrapper over OpenZeppelin ERC20 with a no-argument constructor that mints the whole supply to msg.sender once. There is no owner, mint, burn, pause, blocklist, fee or hook, and the ABI exposes only the standard ERC-20 surface plus five constants.\n- **Dependency integrity.** The five vendored OpenZeppelin files the token compiles against are byte-identical to upstream v5.1.0, so the inherited transfer, approve and transferFrom logic is the audited library code.\n- **The protected floor, replayed locally.** The platform's protected tests need v4-core sources this tree lacks, so I wrote a scratch test replaying their checks: CREATE2 deployment from a contract, the swarm share and requester remainder arriving whole, a pull of the pool share via transferFrom, 22 admin and privileged selectors reverting from both the deployer and a stranger, and a reachable-opcode walk of the runtime finding no DELEGATECALL, CALLCODE or SELFDESTRUCT. All passed. Creation and runtime bytecode are far under the size limits.\n- **Entry points.** All three listed entry points hold, with their revert paths traced and exercised: zero-address receiver or spender, balance short by one wei, allowance exhausted, and the unlimited-allowance case.\n- **Specialists and tooling.** All four specialists and the test writer reported nothing, so there was nothing to reproduce or merge. The one aderyn lead, the large numeric literal, is a compile-time constant that evaluates to exactly 1e27 and is not a defect.\n- **Manifest.** `launch.json` uses only schema keys, lowercase addresses, strings for uint256 values, an empty constructorArgs matching the no-argument constructor, and a totalSupply equal to what the constructor mints.\n\nThe project's own 56 tests also pass with the verifier's fuzz seed, and formatting is clean. The scratch directory is removed and the tree is unchanged apart from the findings file.","treeHash":null,"usage":{"cachedInputTokens":788907,"inputTokens":450,"model":"claude-fable-5-1","outputTokens":10105,"runtime":"claude","turns":15,"wallClockMs":171753}},{"artifacts":[],"attempt":1,"bundleHash":"0d67cf7694d658f6aa3b84711c51f8ea3ba0578ffd366714aa5d7eb387f5bcbc","device":"9812c5faf226f7c7","findings":[],"hash":"c9d236ec74c8e52d575bfc5c03b8a62a4a9a62b90f39682a81767270ce4292a8","nodeId":"15b4bf03-c411-4da6-b79a-391ba706d771","outcome":"completed","summary":"I added two test files for the Pangea token. `forge build` succeeds, and `forge test` passes 56 tests with both the verifier's seed and a random seed. I didn't find any defects, so there is no `.imd-findings.json`.\n\n**What the token is:** `src/PangeaToken.sol` is a plain OpenZeppelin v5.1.0 ERC-20. It adds only constants and a constructor that mints 1,000,000,000 × 10^18 to whoever deploys it. It has no owner, no further minting, no fees, no pause and no burn.\n\n**`test/PangeaToken.invariant.t.sol`** runs random call sequences against the token (256 runs × 64 calls), which the brief requires for a contract that holds value.\n- **How it works:** a handler contract makes random calls from five accounts that start with uneven balances, including one holding a single wei. It keeps its own record of what every balance and allowance should be.\n- **Calls it makes:** normal transfers, transfers of a whole balance, transfers to outside addresses and to the token itself, approvals (including unlimited ones) and `transferFrom`.\n- **Failure paths:** it also tries calls that must fail: sending more than the balance or allowance, sending to the zero address, approving the zero address, and admin-style calls like mint, burn, burnFrom, pause, blacklist, permit and increaseAllowance. Each must revert with the exact expected error and change nothing.\n- **Checked after every call:**\n  - the supply never changes;\n  - all balances add up to the supply and match the handler's record;\n  - all allowances match the handler's record;\n  - nothing ever lands on the zero address and the token never holds ETH;\n  - name, symbol and decimals never change;\n  - none of the calls above did anything unexpected.\n\n  The handler never reverts and logs problems instead, so no run is silently thrown away; the run reports 0 reverts.\n- **Sanity check:** I confirmed with a throwaway test that the handler actually catches problems. When I moved tokens behind its back, it flagged the mismatch.\n\n**`test/PangeaToken.edges.t.sol`** covers edge cases the existing suite missed:\n- spending your own tokens through `transferFrom` still needs an allowance;\n- a zero-amount `transferFrom` works without any allowance;\n- the zero address is rejected as receiver, owner, approver and sender;\n- the whole supply can move through an exact allowance;\n- an unlimited allowance still can't exceed the owner's balance;\n- setting an allowance to zero revokes it;\n- `transferFrom` emits a Transfer event but no Approval event;\n- tokens sent to the token contract are stuck there for good, since it has no rescue function;\n- there is no permit or increase/decrease-allowance function, and `transfer` won't accept ETH.\n\nIt also has fuzz tests (1,000 runs each) showing that a failed transfer or `transferFrom` changes nothing, that `approve` sets exactly the amount given, and that sending tokens to yourself changes nothing.\n\nI didn't change the earlier contributors' test files or anything outside `test/`. The two new files are uncommitted in the working tree.","treeHash":"c6b11a82330fecdfb1e0488a9f863a2bba961d96","usage":{"cachedInputTokens":499276,"inputTokens":20,"model":"claude-opus-5-5","outputTokens":16596,"runtime":"claude","turns":10,"wallClockMs":170544}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"9e17b97b8ac7c97a","findings":[],"hash":"d13fb50d98c78ded27ea1319e1cc5aaac1196ca03c1acc47ebe12c541d408353","nodeId":"5ad1c04c-ae26-4bd2-999b-eee14059d749","outcome":"completed","summary":"The review is complete. The findings file holds no defects and a seven-row coverage record.\n\n**Result: no defects found in the Access Control, Trust Gap and Asymmetry areas.** The token at `src/PangeaToken.sol` is OpenZeppelin v5.1.0 ERC20 plus constants and a constructor that mints the whole supply once to the deployer. There is no owner, role, modifier, initializer, mint, burn, pause, blocklist, receive or fallback, so no privileged seam exists for any of the three guides' failure modes.\n\nWhat I verified:\n\n- **Permission map.** The compiled ABI exposes only the standard ERC-20 surface plus five view constants. Every writer of balances, allowances and supply is reached solely through the three listed entry points or the constructor.\n- **Vendored library integrity.** I read the ERC20 and Context sources in full. They match OpenZeppelin v5.1.0 with no hidden branch or extra writer.\n- **Entry points.** All three rows are marked holds. A stranger or the deployer cannot pull from a holder without an allowance, approve writes only the caller's own row, and transfer and transferFrom move identical amounts with the supply unchanged.\n- **Static-analysis lead.** The aderyn large-literal note is style only. The supply constant evaluates to exactly one billion times ten to the eighteenth.\n- **Tests.** The existing 34 tests pass with the verifier's fuzz seed, and a four-test scratch probe I wrote under test/scratch also passes. Slither and Mythril were not run.\n\nTrust assumptions recorded as notes rather than findings: the deployer receives the whole supply, the remainder key controls ten percent after launch, and unlimited approvals are never decremented. The manifest file is absent from the tree, which the README states is written by a later step, so it is outside this review.","treeHash":null,"usage":{"cachedInputTokens":865070,"inputTokens":386,"model":"claude-fable-5-1","outputTokens":9853,"runtime":"claude","turns":21,"wallClockMs":149720}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"3c9b660ee1938912","findings":[],"hash":"de3015b40bdc2d2e3eefa096a4d6d4a066073c80432b5c1a7d383c82209876fb","nodeId":"2f0762b9-fcf7-4871-a310-fcf00957435a","outcome":"completed","summary":"I found no math, precision, boundary or numerical-gap defects in Pangea (PANGEA), so `.imd-findings.json` has an empty findings list and five coverage rows, all `holds`.\n\n**What's in the code:** `src/PangeaToken.sol` is an unchanged OpenZeppelin v5.1 ERC20. It has no overrides, no fee, burn, owner or rounding, and one mint in the constructor. The only arithmetic in the project is `TOTAL_SUPPLY = SUPPLY_WHOLE_TOKENS * 10 ** DECIMALS`.\n\n**What I checked against the three guides:**\n- **Supply math:** `10 ** DECIMALS` uses a small 8-bit constant as the exponent, but Solidity still computes it in full 256-bit integers. The result is 1e27 tokens in minor units, which matches the requested 1,000,000,000 tokens with 18 decimals. A scratch test confirmed `totalSupply()`, the deployer's balance and `decimals() == 18`.\n- **Overflow in unchecked code:** the library skips overflow checks when it adds to or subtracts from balances. Those sums can never exceed the fixed supply of 1e27, which is far below the 2^256 limit, and supply can't grow after the constructor.\n- **Edge values:** sending 1 wei more than a balance reverts, and so does sending 2^256−1. A zero-value `transferFrom` leaves the allowance unchanged, and a maximum allowance stays unlimited while the full 1e27 moves exactly.\n- **Totals add up (fuzzed, 256 runs):** after any sequence of `transfer` and `transferFrom`, including sending to yourself and to the same address twice, the balances still add up to the total supply. Spent allowances also go down by exactly the amount moved.\n- **Boundary and numerical-gap items:** none apply. The contract makes no external calls, has no payable functions, no special-case address branches, no byte decoding, and no division anywhere.\n\n**Coverage:** all three listed entry points, `approve`, `transfer` and `transferFrom`, are marked `holds`. There are two more rows for the supply and balance-total rules.\n\n**Static analysis:** slither reported nothing. aderyn's \"large numeric literal\" note on line 24 is about how `1_000_000_000` is written, not a defect, so I didn't report it.\n\n**Not run:** the supplied protected test files import harness files that aren't in this repository, so I couldn't run them. The project's own 34 tests pass. The scratch tests are deleted and the tree is unchanged apart from the findings file.","treeHash":null,"usage":{"cachedInputTokens":377668,"inputTokens":20,"model":"claude-opus-5-5","outputTokens":5423,"runtime":"claude","turns":10,"wallClockMs":62868}},{"artifacts":[],"attempt":1,"bundleHash":"a86e4d41309d4557b81c372d662bc956a10a76b3daee4f0b15f8a4e3394e1b23","device":"aa07938bd6eeb599","findings":[],"hash":"e1691a741146d862a6705403ce43c910c633ed23d60bcb3713f6f73a6de01f77","nodeId":"1e822a14-6586-4a77-b55d-8951aab26fa7","outcome":"completed","summary":"Created `launch.json` matching `PangeaToken`, its no-argument constructor, exact supply, and required pool/economics values.\n\n`forge build` succeeded; all 34 tests passed. Manifest fields and compiled ABI match. Only `launch.json` is included in the submission changes.","treeHash":"a43f3a7a1005b6a8b7ab10aa24d4f1f5ad574eab","usage":{"cachedInputTokens":176256,"inputTokens":37497,"model":"gpt-6-astra","outputTokens":2169,"runtime":"codex","turns":3,"wallClockMs":52849}}],"verification":[{"checks":[{"durationMs":863,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 795.81ms\nCompiler run successful!\n","passed":true},{"durationMs":228,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/DeployPangea.t.sol:DeployPangeaTest\n[PASS] test_deployMintsWholeSupplyToTheDeployingAccount() (gas: 1563866)\n[PASS] test_deployTwiceGivesTwoIndependentTokens() (gas: 2138085)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 142.64ms (478.18µs CPU time)\n\nRan 32 tests for test/PangeaToken.t.sol:PangeaTokenTest\n[PASS] testFuzz_manyHopsNeverChangeSupply(uint8,uint256) (runs: 256, μ: 4147215, ~: 1219332)\nLogs:\n  Bound result 7899\n\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 39184, ~: 39532)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564043832416707014600644788\n\n[PASS] testFuzz_transferConservesSupplyAndIsExact(address,uint256) (runs: 256, μ: 117755, ~: 117698)\nLogs:\n  Bound result 999999999999999999999999998\n\n[PASS] testFuzz_transferFromRespectsAllowanceExactly(uint256,uint256) (runs: 256, μ: 118568, ~: 90964)\nLogs:\n  Bound result 500000000000000000000\n  Bound result 18\n\n[PASS] test_allowanceDoesNotLetSpenderMoveOwnTokensFromOthers() (gas: 82563)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 89552)\n[PASS] test_approveRevertsForZeroSpender() (gas: 30454)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 65113)\n[PASS] test_constantsMatchTheRequestedSupply() (gas: 25706)\n[PASS] test_deploymentEmitsSingleMintTransfer() (gas: 19967)\n[PASS] test_eachDeploymentIsIndependent() (gas: 21814)\n[PASS] test_launchSharesArriveWholeAndClaimWhole() (gas: 477904)\n[PASS] test_metadata() (gas: 58711)\n[PASS] test_mintsWholeSupplyToDeployerOnce() (gas: 23729)\n[PASS] test_noAdminCallIncreasesSupplyOrMovesBalances() (gas: 820044)\n[PASS] test_noPrivilegedCallMovesOrFreezesAHolder() (gas: 461620)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 3108485)\n[PASS] test_supplyMintsToWhoeverDeploysIncludingAContract() (gas: 285430)\n[PASS] test_transferChainArrivesWhole() (gas: 192039)\n[PASS] test_transferFromRevertsAboveAllowance() (gas: 82607)\n[PASS] test_transferFromRevertsWhenOwnerLacksBalance() (gas: 86317)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 35834)\n[PASS] test_transferFromSpendsAllowance() (gas: 146464)\n[PASS] test_transferFromWithInfiniteAllowanceDoesNotDecrement() (gas: 117979)\n[PASS] test_transferMovesExactAmountAndEmits() (gas: 93091)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 33286)\n[PASS] test_transferRevertsOneWeiOverBalance() (gas: 85275)\n[PASS] test_transferRevertsToZeroAddress() (gas: 30425)\n[PASS] test_transferToSelfKeepsBalance() (gas: 43411)\n[PASS] test_transferWholeBalance() (gas: 73558)\n[PASS] test_transferZeroAmountSucceeds() (gas: 55488)\n[PASS] test_unknownSelectorAndPlainEtherRevert() (gas: 60033)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 142.74ms (189.66ms CPU time)\n\nRan 2 test suites in 143.73ms (285.39ms CPU time): 34 tests passed, 0 failed, 0 skipped (34 total tests)\n","passed":true},{"durationMs":33,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"PangeaToken.approve(address,uint256)\",\"PangeaToken.transfer(address,uint256)\",\"PangeaToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":11,\"README.md\":147,\"foundry.toml\":21,\"remappings.txt\":2,\"script/DeployPangea.s.sol\":26,\"src/PangeaToken.sol\":34,\"test/DeployPangea.t.sol\":33,\"test/PangeaToken.t.sol\":395},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":417,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":218,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/PangeaToken.sol:24: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"83fde5ded78a94d870dda73dab42bc4bee635332e1afb898639269decc5ae1c7","verifiedTreeHash":"9faafa837bb076803f6411f1741cb2973ab4ba57","verifierVersion":"0.1.0+560ab6a2"},{"checks":[{"durationMs":1460,"exitCode":0,"name":"build","output":"Compiling 31 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.38s\nCompiler run successful!\n","passed":true},{"durationMs":8441,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/DeployPangea.t.sol:DeployPangeaTest\n[PASS] test_deployMintsWholeSupplyToTheDeployingAccount() (gas: 1563866)\n[PASS] test_deployTwiceGivesTwoIndependentTokens() (gas: 2138085)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.19ms (459.12µs CPU time)\n\nRan 21 tests for test/PangeaToken.edges.t.sol:PangeaTokenEdgesTest\n[PASS] testFuzz_approveIsExactAndOverwrites(address,uint256,uint256) (runs: 1000, μ: 115987, ~: 116159)\n[PASS] testFuzz_overAllowanceTransferFromChangesNothing(uint256,uint256) (runs: 1000, μ: 120201, ~: 120354)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639932\n  Bound result 3\n\n[PASS] testFuzz_overBalanceTransferChangesNothing(uint256,uint256,address) (runs: 1000, μ: 132485, ~: 132737)\nLogs:\n  Bound result 11766\n  Bound result 4069379762\n\n[PASS] testFuzz_selfTransferIsANoOp(address,uint256,uint256) (runs: 1000, μ: 115709, ~: 116111)\nLogs:\n  Bound result 10154\n  Bound result 5128\n\n[PASS] testFuzz_transferFromEitherSucceedsExactlyOrRevertsCleanly(uint256,uint256,uint256) (runs: 1000, μ: 184309, ~: 173422)\nLogs:\n  Bound result 827905\n  Bound result 2827\n  Bound result 2778212486\n\n[PASS] test_approveFromZeroAddressReverts() (gas: 30782)\n[PASS] test_approveZeroRevokes() (gas: 107346)\n[PASS] test_cannotSendEtherWithTransfer() (gas: 50461)\n[PASS] test_freshAccountsStartEmpty() (gas: 44777)\n[PASS] test_infiniteAllowanceStillBoundedByBalance() (gas: 142496)\n[PASS] test_noPermitOrAllowanceHelpers() (gas: 106650)\n[PASS] test_supplyFitsComfortablyInUint256() (gas: 10548)\n[PASS] test_tokensSentToTheTokenAreStuck() (gas: 131420)\n[PASS] test_transferFromEmitsTransferButNoApproval() (gas: 120106)\n[PASS] test_transferFromSelfStillNeedsAllowance() (gas: 42619)\n[PASS] test_transferFromSelfWithAllowanceSpendsIt() (gas: 131716)\n[PASS] test_transferFromTheZeroAddressReverts() (gas: 30807)\n[PASS] test_transferFromToZeroAddressReverts() (gas: 93247)\n[PASS] test_transferFromZeroAddressOwnerReverts() (gas: 33538)\n[PASS] test_transferFromZeroAmountWithoutAllowanceSucceeds() (gas: 61538)\n[PASS] test_wholeSupplyThroughExactAllowance() (gas: 147349)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 40.33ms (196.21ms CPU time)\n\nRan 32 tests for test/PangeaToken.t.sol:PangeaTokenTest\n[PASS] testFuzz_manyHopsNeverChangeSupply(uint8,uint256) (runs: 256, μ: 3704150, ~: 1066942)\nLogs:\n  Bound result 7899\n\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 39177, ~: 39532)\nLogs:\n  Bound result 41543494816284309217499089845049820536530372646739226843737564201383\n\n[PASS] testFuzz_transferConservesSupplyAndIsExact(address,uint256) (runs: 256, μ: 117658, ~: 117686)\nLogs:\n  Bound result 11\n\n[PASS] testFuzz_transferFromRespectsAllowanceExactly(uint256,uint256) (runs: 256, μ: 119732, ~: 108191)\nLogs:\n  Bound result 365490018874829732529702019\n  Bound result 18855\n\n[PASS] test_allowanceDoesNotLetSpenderMoveOwnTokensFromOthers() (gas: 82563)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 89552)\n[PASS] test_approveRevertsForZeroSpender() (gas: 30454)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 65113)\n[PASS] test_constantsMatchTheRequestedSupply() (gas: 25706)\n[PASS] test_deploymentEmitsSingleMintTransfer() (gas: 19967)\n[PASS] test_eachDeploymentIsIndependent() (gas: 21814)\n[PASS] test_launchSharesArriveWholeAndClaimWhole() (gas: 477904)\n[PASS] test_metadata() (gas: 58711)\n[PASS] test_mintsWholeSupplyToDeployerOnce() (gas: 23729)\n[PASS] test_noAdminCallIncreasesSupplyOrMovesBalances() (gas: 820044)\n[PASS] test_noPrivilegedCallMovesOrFreezesAHolder() (gas: 461620)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 3108485)\n[PASS] test_supplyMintsToWhoeverDeploysIncludingAContract() (gas: 285430)\n[PASS] test_transferChainArrivesWhole() (gas: 192039)\n[PASS] test_transferFromRevertsAboveAllowance() (gas: 82607)\n[PASS] test_transferFromRevertsWhenOwnerLacksBalance() (gas: 86317)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 35834)\n[PASS] test_transferFromSpendsAllowance() (gas: 146464)\n[PASS] test_transferFromWithInfiniteAllowanceDoesNotDecrement() (gas: 117979)\n[PASS] test_transferMovesExactAmountAndEmits() (gas: 93091)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 33286)\n[PASS] test_transferRevertsOneWeiOverBalance() (gas: 85275)\n[PASS] test_transferRevertsToZeroAddress() (gas: 30425)\n[PASS] test_transferToSelfKeepsBalance() (gas: 43411)\n[PASS] test_transferWholeBalance() (gas: 73558)\n[PASS] test_transferZeroAmountSucceeds() (gas: 55488)\n[PASS] test_unknownSelectorAndPlainEtherRevert() (gas: 60033)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 143.38ms (273.36ms CPU time)\n\nRan 1 test for test/PangeaToken.invariant.t.sol:PangeaTokenInvariantTest\n[PASS]\nPangeaTokenInvariantTest invariants:\n[PASS] invariant_allowancesMatchLedger\n[PASS] invariant_balancesSumToSupplyAndMatchLedger\n[PASS] invariant_metadataNeverChanges\n[PASS] invariant_noHandlerViolation\n[PASS] invariant_nothingOnZeroAddressAndNoEther\n[PASS] invariant_supplyIsFixed\n PangeaTokenInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭---------------+---------------------------+-------+---------+----------╮\n| Contract      | Selector                  | Calls | Reverts | Discards |\n+========================================================================+\n| PangeaHandler | approve                   | 1426  | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| PangeaHandler | approveZeroSpender        | 1528  | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| PangeaHandler | privilegedCall            | 1469  | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| PangeaHandler | transfer                  | 1520  | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| PangeaHandler | transferAll               | 1423  | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| PangeaHandler | transferFrom              | 1508  | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| PangeaHandler | transferFromOverAllowance | 1502  | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| PangeaHandler | transferFromOverBalance   | 1553  | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| PangeaHandler | transferOut               | 1477  | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| PangeaHandler | transferToZero            | 1463  | 0       | 0        |\n|---------------+---------------------------+-------+---------+----------|\n| PangeaHandler | transferTooMuch           | 1515  | 0       | 0        |\n╰---------------+---------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 3\n  Bound result 3\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 4\n  Bound result 1\n  Bound result 3\n  Bound result 1234000000000000000000\n  Bound result 3\n  Bound result 0\n  Bound result 4\n  Bound result 4588\n  Bound result 0\n  Bound result 3\n  Bound result 1\n  Bound result 4\n  Bound result 0\n  Bound result 7\n  Bound result 0\n  Bound result 4\n  Bound result 1\n  Bound result 0\n  Bound result 3\n  Bound result 2\n  Bound result 1\n  Bound result 31436885146411738235883085\n  Bound result 2\n  Bound result 2\n  Bound result 1\n  Bound result 6766\n  Bound result 0\n  Bound result 4\n  Bound result 27\n  Bound result 1\n  Bound result 500000000000000000000\n  Bound result 4\n  Bound result 3\n  Bound result 3\n  Bound result 0\n  Bound result 4\n  Bound result 1\n  Bound result 3\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 297415147304322555074541158\n  Bound result 0\n  Bound result 67212618319620701154379513\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 10461\n  Bound result 4\n  Bound result 3\n  Bound result 4\n  Bound result 665\n  Bound result 1\n  Bound result 12\n  Bound result 1\n  Bound result 3\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 25340605944047055239449135\n  Bound result 4\n  Bound result 0\n  Bound result 1\n  Bound result 500000000000000000000\n  Bound result 0\n  Bound result 2\n  Bound result 4\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640554007829151998224598009742\n  Bound result 0\n  Bound result 1\n  Bound result 3\n  Bound result 1\n  Bound result 38257187041684016708991915766494052312541795880764195287426999091724927\n  Bound result 4\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 4\n  Bound result 2\n  Bound result 0\n  Bound result 4\n  Bound result 5\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 3\n  Bound result 32\n  Bound result 2\n  Bound result 3\n  Bound result 4\n  Bound result 86\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 2\n  Bound result 6384737\n  Bound result 0\n  Bound result 0\n  Bound result 4\n  Bound result 1\n  Bound result 0\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 4\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 24576\n  Bound result 0\n  Bound result 11788\n  Bound result 4\n  Bound result 3\n  Bound result 0\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 11742\n  Bound result 1\n  Bound result 2\n  Bound result 4\n  Bound result 0\n  Bound result 0\n  Bound result 1000000000000000000\n  Bound result 2\n  Bound result 10062700641164259890401214\n  Bound result 3\n  Bound result 4\n  Bound result 3\n  Bound result 7432\n  Bound result 0\n  Bound result 0\n  Bound result 1243\n  Bound result 4\n  Bound result 0\n  Bound result 4\n  Bound result 3\n  Bound result 4\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 6\n  Bound result 4\n  Bound result 1\n  Bound result 1\n  Bound result 2\n  Bound result 0\n  Bound result 1000000000\n  Bound result 2\n  Bound result 8\n  Bound result 1\n  Bound result 4\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 8.36s (8.36s CPU time)\n\nRan 4 test suites in 8.36s (8.54s CPU time): 56 tests passed, 0 failed, 0 skipped (56 total tests)\n","passed":true},{"durationMs":47,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"PangeaToken.approve(address,uint256)\",\"PangeaToken.transfer(address,uint256)\",\"PangeaToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":11,\"README.md\":147,\"foundry.toml\":21,\"remappings.txt\":2,\"script/DeployPangea.s.sol\":26,\"src/PangeaToken.sol\":34,\"test/DeployPangea.t.sol\":33,\"test/PangeaToken.edges.t.sol\":254,\"test/PangeaToken.invariant.t.sol\":388,\"test/PangeaToken.t.sol\":395},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"c9d236ec74c8e52d575bfc5c03b8a62a4a9a62b90f39682a81767270ce4292a8","verifiedTreeHash":"c6b11a82330fecdfb1e0488a9f863a2bba961d96","verifierVersion":"0.1.0+560ab6a2"},{"checks":[{"durationMs":883,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 812.79ms\nCompiler run successful!\n","passed":true},{"durationMs":224,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/DeployPangea.t.sol:DeployPangeaTest\n[PASS] test_deployMintsWholeSupplyToTheDeployingAccount() (gas: 1563866)\n[PASS] test_deployTwiceGivesTwoIndependentTokens() (gas: 2138085)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 361.16µs (361.30µs CPU time)\n\nRan 32 tests for test/PangeaToken.t.sol:PangeaTokenTest\n[PASS] testFuzz_manyHopsNeverChangeSupply(uint8,uint256) (runs: 256, μ: 4147215, ~: 1219332)\nLogs:\n  Bound result 7899\n\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 39184, ~: 39532)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564043832416707014600644788\n\n[PASS] testFuzz_transferConservesSupplyAndIsExact(address,uint256) (runs: 256, μ: 117755, ~: 117698)\nLogs:\n  Bound result 5128\n\n[PASS] testFuzz_transferFromRespectsAllowanceExactly(uint256,uint256) (runs: 256, μ: 118568, ~: 90964)\nLogs:\n  Bound result 15927323837932449931638\n  Bound result 825349100616562305755069831\n\n[PASS] test_allowanceDoesNotLetSpenderMoveOwnTokensFromOthers() (gas: 82563)\n[PASS] test_approveOverwritesPreviousAllowance() (gas: 89552)\n[PASS] test_approveRevertsForZeroSpender() (gas: 30454)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 65113)\n[PASS] test_constantsMatchTheRequestedSupply() (gas: 25706)\n[PASS] test_deploymentEmitsSingleMintTransfer() (gas: 19967)\n[PASS] test_eachDeploymentIsIndependent() (gas: 21814)\n[PASS] test_launchSharesArriveWholeAndClaimWhole() (gas: 477904)\n[PASS] test_metadata() (gas: 58711)\n[PASS] test_mintsWholeSupplyToDeployerOnce() (gas: 23729)\n[PASS] test_noAdminCallIncreasesSupplyOrMovesBalances() (gas: 820044)\n[PASS] test_noPrivilegedCallMovesOrFreezesAHolder() (gas: 461620)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 3108485)\n[PASS] test_supplyMintsToWhoeverDeploysIncludingAContract() (gas: 285430)\n[PASS] test_transferChainArrivesWhole() (gas: 192039)\n[PASS] test_transferFromRevertsAboveAllowance() (gas: 82607)\n[PASS] test_transferFromRevertsWhenOwnerLacksBalance() (gas: 86317)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 35834)\n[PASS] test_transferFromSpendsAllowance() (gas: 146464)\n[PASS] test_transferFromWithInfiniteAllowanceDoesNotDecrement() (gas: 117979)\n[PASS] test_transferMovesExactAmountAndEmits() (gas: 93091)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 33286)\n[PASS] test_transferRevertsOneWeiOverBalance() (gas: 85275)\n[PASS] test_transferRevertsToZeroAddress() (gas: 30425)\n[PASS] test_transferToSelfKeepsBalance() (gas: 43411)\n[PASS] test_transferWholeBalance() (gas: 73558)\n[PASS] test_transferZeroAmountSucceeds() (gas: 55488)\n[PASS] test_unknownSelectorAndPlainEtherRevert() (gas: 60033)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 150.43ms (188.55ms CPU time)\n\nRan 2 test suites in 151.19ms (150.79ms CPU time): 34 tests passed, 0 failed, 0 skipped (34 total tests)\n","passed":true},{"durationMs":42,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"PangeaToken.approve(address,uint256)\",\"PangeaToken.transfer(address,uint256)\",\"PangeaToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":11,\"README.md\":147,\"foundry.toml\":21,\"launch.json\":24,\"remappings.txt\":2,\"script/DeployPangea.s.sol\":26,\"src/PangeaToken.sol\":34,\"test/DeployPangea.t.sol\":33,\"test/PangeaToken.t.sol\":395},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"e1691a741146d862a6705403ce43c910c633ed23d60bcb3713f6f73a6de01f77","verifiedTreeHash":"a43f3a7a1005b6a8b7ab10aa24d4f1f5ad574eab","verifierVersion":"0.1.0+560ab6a2"}]}