{"assessments":[],"deployments":[{"attestationHash":"4058428af63d499bb3a8e13414e22d8f7552d9845978c9e126e8fff26b517f9b","chainId":1,"contracts":[{"address":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000","blockNumber":26273036,"name":"PoolInitializationGuard","role":"hook","txHash":"0x037c59beace5fc5fd4789eed645aa07b4ba9de2466af9ddbb54d9cc5fa648e25"},{"address":"0x1727a33c44e42709ee1986c9d1f9a978efac70f6","blockNumber":26273036,"name":"MerkleDistributor","role":"distributor","txHash":"0x037c59beace5fc5fd4789eed645aa07b4ba9de2466af9ddbb54d9cc5fa648e25"},{"address":"0x2afa98584239466dd158eaec4fa6b8d58434b16f","blockNumber":26273036,"name":"Bites","role":"token","txHash":"0x037c59beace5fc5fd4789eed645aa07b4ba9de2466af9ddbb54d9cc5fa648e25"}],"id":"76d370f2-53f2-4f47-8ea0-8b153bf86939","manifestHash":"76cffc3fe7ffd1d9c33a7aff4f95d592093600c172289b0bb4f795b27e348f11","status":"live"}],"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":"196b5ee4-5817-4497-816b-39b992bf645b","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"24f8b98e5364370ff65ad206c0a167cabdb23b6265530624df8770c5731e1d25","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"cd177cf99c90935295f721043a44b170a0d6344e3fa9712d5d811ed38ff8dfd4","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"a88d0bf961d0a776fcf27034317d743b397b6ca5b86faff984a95616514166d4","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","subagents":4,"tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"1158d1d3c0c84f32509e85e703d2892865fd69b8b5070332bd2ee6042110873f","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"4f63b3a04e8609ce31d8c0506ff3fa1acb7fc50620d5e10bb0667b9509f8d897","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"531866799d575a0d7b7042b9ca98e36e43dcf3d1ed8769b4e52c26d1e279e0fd","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"816fe39c7efd64504a19175b0f4dd9186d61069f37a22684c90358a18c60bddc","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"816fe39c7efd64504a19175b0f4dd9186d61069f37a22684c90358a18c60bddc","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"8b1dea45cf37db01876fc9f0e4b1da0a6ccf2d5cb566b9f51316b6fceaf6a91e","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"1432e63b9b962602b8c27b83ef72165b62e609e7901f9bdf59ffcae118296f5d","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","subagents":4,"tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: Bites (BIT).\nToken name: Bites\nToken symbol: BIT\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"ba7f805ecbbda67783961768e70cd7e2404900d0597ecb9139b4fd27ce557a74","previousHash":"1eb3e784040800d601dc87a220ba0e0e046540a150b715062458c8c2390b30e7","projectId":"196b5ee4-5817-4497-816b-39b992bf645b","publication":{"commit":"5fad93c029d9cd02e09708d91c13104d9bd1e913","deliveredAt":"2026-10-25T23:39:12.962Z","repoUrl":"https://github.com/identity-md-launches/launch-2587-bites"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":null,"snapshotHash":"a58bd751c5f76c0d5e9f942857d3ca2f292b390440c556024238df7e284c4614","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"89214b73ec1e0b7b","findings":[],"hash":"1158d1d3c0c84f32509e85e703d2892865fd69b8b5070332bd2ee6042110873f","nodeId":"60b5a8de-1961-48ed-a90c-10e2d5b013a0","outcome":"completed","summary":"Review complete. The math area is clean: no findings, and the findings file holds the coverage record.\n\n**What I checked**\n\n- `src/Bites.sol` is a plain OpenZeppelin v5.0.2 ERC20 with one constant and a constructor mint. The vendored ERC20 is byte-identical to upstream at the pinned commit, which I confirmed by hashing a fresh download.\n- Math Precision guide: there is no division, no scaling, no downcast and no fee math anywhere in the token or its inherited code. The supply constant evaluates exactly to 1e27 at compile time, so the aderyn \"large numeric literal\" lead is style only.\n- Boundary guide: no external calls, no payable function, no bytes decoding, no receive or fallback. Calls carrying ETH or an unknown selector revert.\n- Numerical Gap guide: the only invariant is a fixed supply equal to the sum of balances. Mint and burn branches of the inherited accounting are unreachable after construction, and the launch's 10% and 80% basis-point splits divide 1e27 with zero remainder.\n\n**How I verified it**\n\n- The project's own 31 tests pass, including the 256-run invariant suite.\n- A scratch Foundry test with 14 cases exercised 1 wei, whole supply, supply plus one, max uint, zero value, self-transfer under a finite allowance, infinite and max-minus-one allowances, revert ordering between allowance and balance, and a 1024-run conservation fuzz. All passed. The scratch file was removed afterwards and the tree is unchanged.\n\n**Output**\n\n`.imd-findings.json` contains an empty findings list and eight coverage rows: `holds` for each of the three entry points, plus rows for the supply constant, supply conservation, the launch split arithmetic, the external-boundary inventory, and decimals. Nothing was left unreached.","treeHash":null,"usage":{"cachedInputTokens":448872,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":12146,"runtime":"claude","turns":24,"wallClockMs":220915}},{"artifacts":[],"attempt":1,"bundleHash":"53a9c77f5abbf540013858d2eeddb92adfdf31dc92534235861a3e34db297ae3","device":"9d32b90c6bfdae99","findings":[],"hash":"1432e63b9b962602b8c27b83ef72165b62e609e7901f9bdf59ffcae118296f5d","nodeId":"695e8808-17a8-4f34-873f-17dc684188f6","outcome":"completed","summary":"Added failure-path and fuzz tests, and expanded invariants to cover 32,768 randomized calls.\n\n`forge build --offline` and all 46 tests pass with the required seed. Only `test/` changed. No implementation defects found.","treeHash":"27a86e40a66628ee288dff42577fef6ad56e30b5","usage":{"cachedInputTokens":960896,"inputTokens":78899,"model":"gpt-6-astra","outputTokens":13228,"runtime":"codex","turns":6,"wallClockMs":290891}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8472a2af9a9cf974","findings":[],"hash":"24f8b98e5364370ff65ad206c0a167cabdb23b6265530624df8770c5731e1d25","nodeId":"6778a9e7-58e6-42db-be16-10cc3b8a360b","outcome":"completed","summary":"The review is complete and the findings file is written. Nothing is left to request.\n\n**Result: no defects found in the economics area.** The findings file at the repository root holds an empty list and seven coverage rows, one for each of the three state-changing entry points plus four invariant and integrity checks I verified.\n\n**What the token is.** Bites is sixteen lines: unmodified OpenZeppelin v5.0.2 ERC20 plus a constant and a constructor that mints the whole supply to the immediate deployer. There are no constructor arguments, no owner, no mint or burn path, no receive or fallback, and no external calls at runtime.\n\n**What I checked against the three guides:**\n- Economic Security: no runtime dependencies to break, no fee or rebase or blocklist behaviour, exact amounts on every flow, no sentinel misuse. Transfers to the zero address revert, so there is not even a burn path.\n- Invariant: sum of balances equals totalSupply equals 10^27 forever. The repo's own invariant suite and a scratch fuzz run both confirm it. Finite allowances decrement exactly and the infinite allowance is preserved.\n- Flow Gap: with no periphery calls or callbacks there are no seams. The factory to distributor, distributor to claimant, factory to pool manager via transferFrom, factory to remainder recipient, and trader round-trip flows all move exactly the requested units under a factory probe deployed with CREATE2.\n\n**Supporting evidence.** The project's 31 tests pass with the pinned fuzz seed. My scratch suite under test/scratch passes seven checks, including the protected floor's reachable-opcode scan for DELEGATECALL, CALLCODE and SELFDESTRUCT and fourteen probed admin selectors that all revert. The vendored OpenZeppelin files match the lock file, and the ERC20 source matches upstream at the pinned commit.\n\n**Notes for the author, not defects.** The standard ERC-20 approve front-running race applies, as the README already documents. The ten percent remainder recipient and the single-sided pool are launch-system economics outside the token and are trust assumptions, not token behaviour. The aderyn large-numeric-literal lead is the supply constant and is correct as written.\n\nNo files in the tree were modified. The scratch test directory is gitignored and disposable.","treeHash":null,"usage":{"cachedInputTokens":660887,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":13930,"runtime":"claude","turns":28,"wallClockMs":235441}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a0f92fec784312b7","findings":[],"hash":"4f63b3a04e8609ce31d8c0506ff3fa1acb7fc50620d5e10bb0667b9509f8d897","nodeId":"3e4189b1-6998-4d92-9980-1e08e903b473","outcome":"completed","summary":"The permissions review of Bites (BIT) is complete and found no defects. The findings file at the repository root holds an empty findings list and eight coverage rows, all `holds`.\n\n**What was reviewed.** The token is a 16-line contract inheriting OpenZeppelin v5.0.2 ERC20 with a single constructor mint of 1e27 units to msg.sender. I hashed every vendored library file against the upstream commit fetched from GitHub, and they are byte-identical, so the three entry points are unmodified library code. I ran the Access Control, Asymmetry and Trust Gap passes from the Pashov reference, plus the Trail of Bits entry-point inventory.\n\n**Evidence the coverage rests on.**\n- The project's own 31 tests pass with the README's fuzz seed, and the delivered files pass the formatter.\n- A scratch Foundry probe, since removed, deployed the token through a CREATE2 stand-in for the factory and confirmed the whole supply lands on the immediate deployer and nothing on the origin.\n- The same probe tried 22 common privileged selectors from both a stranger and the deployer. All revert, and supply and balances are unchanged. Plain ETH and empty calldata are rejected, so there is no receive or fallback.\n- The deployer cannot pull a holder's tokens without allowance. Allowance accounting is exactly symmetric with approve, including delegated self-transfer and infinite allowance.\n- An opcode walk of the deployed runtime finds no reachable DELEGATECALL, CALLCODE or SELFDESTRUCT.\n\n**Not reported as a finding.** The standard ERC-20 approve front-running race applies to this token as to every plain ERC-20. It is specified behaviour, not an implementation defect, and the README documents the revoke-then-approve mitigation. I recorded it as a coverage note instead.\n\n**Leads from static analysis.** Aderyn's large-numeric-literal line is the supply constant, which evaluates correctly to 1e27. Slither reported nothing.\n\nNo files in the delivered tree were changed. The scratch test directory was removed after use.","treeHash":null,"usage":{"cachedInputTokens":424948,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":11653,"runtime":"claude","turns":22,"wallClockMs":344940}},{"artifacts":[],"attempt":1,"bundleHash":"b8a6270930575026ef2405b4baf2aa8f1569927e4f712885218e8ecbd745a333","device":"76afb0ddadaf7fbe","findings":[],"hash":"531866799d575a0d7b7042b9ca98e36e43dcf3d1ed8769b4e52c26d1e279e0fd","nodeId":"871e4809-42fb-4a8f-95fd-b918f964b666","outcome":"completed","summary":"Implemented Bites (BIT) with 18 decimals and exactly 1,000,000,000 tokens minted once to the deployer. No further minting or administrative controls.\n\nIncluded vendored dependencies, deployment documentation, and success/failure tests.\n\nVerified with Solidity 0.8.26:\n\n- `forge build` passed.\n- `forge test` passed: 31 tests using the requested fuzz seed.\n- `forge fmt --check` passed.","treeHash":"be0f53587252b16f5cba90f54ec60b03035297a9","usage":{"cachedInputTokens":608256,"inputTokens":46766,"model":"gpt-6-astra","outputTokens":14296,"runtime":"codex","turns":5,"wallClockMs":308521}},{"artifacts":[],"attempt":1,"bundleHash":"35e6bc6a584ff2e1a0ee22a0cd3c51855e3f900f7ade70edf368adf60af3d9a7","device":"cd309c94b2fdc871","findings":[],"hash":"8b1dea45cf37db01876fc9f0e4b1da0a6ccf2d5cb566b9f51316b6fceaf6a91e","nodeId":"446be01f-2737-4171-a9c1-8431016d1f67","outcome":"completed","summary":"Created [launch.json](/home/imd2/.identitymd/work/196b5ee4-5817-4497-816b-39b992bf645b/446be01f-2737-4171-a9c1-8431016d1f67/launch.json) matching Bites’ constructor, supply, and required pool/economics values.\n\nManifest checks and `forge build` passed. `forge test` passed all 31 tests with the supplied fuzz seed. Only `launch.json` is changed outside permitted scratch output.","treeHash":"15ea1270caa3789cfeb7510367afb1d5a4e6fb92","usage":{"cachedInputTokens":183808,"inputTokens":30533,"model":"gpt-6-astra","outputTokens":2751,"runtime":"codex","turns":3,"wallClockMs":72379}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e3a598aae0640402","findings":[{"citation":"resolved","description":"DEPENDENCIES.md states that dependencies.lock.json records the SHA-256 of each vendored file and that 'The dependency files are unmodified upstream sources.' Both claims are false for six forge-std files: lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol and interfaces/IMulticall3.sol. The lock entries (lines 28, 33, 37, 40, 41, 48) equal the upstream forge-std v1.9.6 hashes at commit 3b20d60d, but the files in the tree were reformatted after the lock was written (a forge fmt pass that touched lib/), so their hashes differ. The differences are whitespace-only (the two sides are byte-identical after stripping all whitespace), so test behaviour is unchanged and no production code is affected: all 26 OpenZeppelin and forge-std files used by src/ match both the lock and upstream. The defect is that the delivered integrity artifact fails its own check, which is exactly what a reviewer or the publication step would use to confirm the vendored tree is untouched. Fix: either restore the six files to their upstream bytes (and exclude lib/ from forge fmt), or regenerate the six hashes in dependencies.lock.json and amend the DEPENDENCIES.md wording to say the files were reformatted.","line":40,"path":"dependencies.lock.json","reproduction":"State: the tree as committed (git status clean). Input: for each entry in dependencies.lock.json compute sha256 of lib/<name>/<file> and compare with the recorded value. Expected: 32 of 32 match, as DEPENDENCIES.md asserts. Actual: 26 match and 6 mismatch. For lib/forge-std/src/Vm.sol the lock (line 40) says 37cdc22402df6c218ca65502e7fa2a24a3ce5b796eaaee330ad84fb9578bc73c; `sha256sum lib/forge-std/src/Vm.sol` prints 9ef7ee8c9a0a4fb18b830e85ce5cd31a56b97781e126ad1e7801389c49b0f408. Likewise StdAssertions.sol (lock d4c89eec..., actual 3fbf4a02...), StdJson.sol (0211b47e..., actual 61bbf9b3...), StdToml.sol (de3fb35a..., actual 187d2f0c...), console.sol (896c5a5a..., actual a2e632dc...), interfaces/IMulticall3.sol (6620d9c5..., actual 1b63ca78...). Fetching the same six files from github.com/foundry-rs/forge-std at commit 3b20d60d14b343ee4f908cb8079495c07f5e8981 reproduces the lock's hashes, and `diff -w` between upstream and the tree is empty, confirming a whitespace-only reformat. The git history shows the mismatch was introduced in commit 96e0165, which rewrote Vm.sol and StdAssertions.sol in the same commit that added dependencies.lock.json.","severity":"low","snippet":"      \"src/Vm.sol\": \"37cdc22402df6c218ca65502e7fa2a24a3ce5b796eaaee330ad84fb9578bc73c\",","title":"dependencies.lock.json records hashes that do not match six vendored forge-std files"}],"hash":"a88d0bf961d0a776fcf27034317d743b397b6ca5b86faff984a95616514166d4","nodeId":"c53efc47-44b7-4674-809c-69d04ebd921a","outcome":"completed","summary":"The review is complete and written to `.imd-findings.json`. The working tree is otherwise unchanged.\n\n**Outcome.** The Bites token is sound. All five specialists reported nothing, and I reproduced none of the failure modes from the supplied checklists against it. One low-severity defect in the delivered packaging is reported.\n\n**What I verified**\n\n- The contract is OpenZeppelin v5.0.2 ERC-20 with a parameterless constructor minting the manifest supply to the deployer. The five vendored OpenZeppelin files hash identically to upstream at the pinned commit.\n- The compiled ABI exposes only approve, transfer and transferFrom as state-changing functions. No mint, burn, owner, pause or upgrade entry exists.\n- An opcode walk of the runtime finds no reachable CALL, DELEGATECALL, CALLCODE, CREATE or SELFDESTRUCT. Creation code is well below the size limits.\n- The full project suite passes with the documented fuzz seed. Table below.\n\n| Check | Result |\n| --- | --- |\n| forge build | ok |\n| forge test (46 tests, 2 invariants at 256x64) | all pass |\n| forge fmt --check | clean |\n| Lock-file hash check | 26 of 32 match |\n\n**The one finding, low severity.** Six forge-std files under lib were reformatted after the lock file was written. Their SHA-256 values no longer match dependencies.lock.json, and the DEPENDENCIES.md claim that the vendored files are unmodified upstream sources is false. The differences are whitespace only and affect test-only code, so nothing deployed changes. The fix is to restore the upstream bytes or regenerate the six hashes.\n\n**Coverage.** All three listed entry points are marked holds with traced reasons. I added rows for the constructor and supply invariant, the manifest, and the static-analysis leads. The aderyn large-literal line is the intended supply constant and was dropped as a finding.","treeHash":null,"usage":{"cachedInputTokens":424513,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":10121,"runtime":"claude","turns":24,"wallClockMs":178938}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"c0fc4ea4f50e3380","findings":[],"hash":"cd177cf99c90935295f721043a44b170a0d6344e3fa9712d5d811ed38ff8dfd4","nodeId":"dfa6da31-018a-4590-b362-aeecf62ea095","outcome":"completed","summary":"The review is complete. No defects found in the control-flow area, and the findings file is written with an empty list and a seven-row coverage record.\n\n**What I checked** against the Execution Trace, Periphery and First Principles guides, plus the Mindset:\n\n- **Source under review.** Bites is an unmodified OpenZeppelin v5.0.2 ERC20 with a constructor that mints one billion tokens at 18 decimals to msg.sender. No overrides, no constructor arguments, no external calls.\n- **Execution Trace.** Traced approve, transfer and transferFrom through their internal paths. Zero-address sentinels revert, insufficient balance or allowance reverts before any write, the max-uint allowance is left untouched, and a revert on any path rolls back the allowance decrement. There are no coupled state updates that can be left half-done.\n- **Periphery.** All six vendored OpenZeppelin files hash to the lock file and to the upstream commit fetched from GitHub. The Context base returns plain msg.sender.\n- **First Principles.** CREATE2 deployment from an etched factory address credits the factory with exactly 10^27 units. The ABI exposes only ERC-20 functions plus the supply constant. Unknown selectors and any ETH value revert. The launch flows to the distributor, pool manager and requester move whole amounts.\n- **Static leads.** The aderyn large-literal lead at Bites.sol line 10 evaluates to exactly 10^27, which matches the brief, so it is not a defect.\n- **Bytecode.** The reachable runtime contains no DELEGATECALL, CALLCODE, SELFDESTRUCT or any call or create opcode, and is well under the size limit.\n\n**One open item, not a finding.** The runtime contains MCOPY and PUSH0, so the deployment chain must support Cancun. Ethereum mainnet and Base do, and the README names Ethereum, so this holds. It is recorded in the coverage row for the bytecode check.\n\n**Verification run.** The project's 31 tests pass with the documented fuzz seed, formatting check passes, and my scratch probe tests passed before I removed them. The working tree is clean apart from the findings file.","treeHash":null,"usage":{"cachedInputTokens":490608,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":15403,"runtime":"claude","turns":35,"wallClockMs":197410}}],"verification":[{"checks":[{"durationMs":1704,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.62s\nCompiler run successful!\n","passed":true},{"durationMs":14011,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/BitesFactory.t.sol:BitesFactoryTest\n[PASS] test_Create2MintsOnlyToImmediateFactory() (gas: 294651)\n[PASS] test_DistributionClaimAndPoolTransfersArriveWhole() (gas: 644310)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 5.89ms (900.01µs CPU time)\n\nRan 28 tests for test/Bites.t.sol:BitesTest\n[PASS] testFuzz_DelegatedOverspendReverts(uint256,uint256) (runs: 1024, μ: 123267, ~: 123895)\nLogs:\n  Bound result 50000000000000000000\n  Bound result 11206\n\n[PASS] testFuzz_DelegatedTransferConservesSupply(uint256,uint256) (runs: 1024, μ: 163187, ~: 165191)\nLogs:\n  Bound result 50000000000000000000\n  Bound result 11206\n\n[PASS] testFuzz_TransferAboveBalanceReverts(uint256,uint256) (runs: 1024, μ: 127338, ~: 127630)\nLogs:\n  Bound result 2\n  Bound result 282922198207488\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1024, μ: 92911, ~: 93205)\nLogs:\n  Bound result 86113932673461\n\n[PASS] test_ApproveDoesNotRequireBalanceAndDoesNotAuthorizeAnotherSpender() (gas: 106215)\n[PASS] test_ApproveEmitsEventAndReplacesAllowance() (gas: 119487)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37551)\n[PASS] test_ConstructorEmitsMintEventToDeployer() (gas: 22427)\n[PASS] test_DelegatedSelfTransferConsumesAllowanceButPreservesBalance() (gas: 113929)\n[PASS] test_DeployerCannotSpendHolderTokensWithoutApproval() (gas: 158475)\n[PASS] test_InfiniteAllowanceIsNotDecremented() (gas: 215001)\n[PASS] test_InsufficientBalanceRevertsWithoutMovingTokens() (gas: 67746)\n[PASS] test_MaximumTransferReverts() (gas: 55022)\n[PASS] test_MetadataAndInitialSupply() (gas: 96965)\n[PASS] test_NoMintBurnAdminOrUpgradeEntryPoints() (gas: 794832)\n[PASS] test_RevokingAllowanceBlocksFurtherSpending() (gas: 131951)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51463)\n[PASS] test_TransferEmitsEventAndDeliversExactAmount() (gas: 91548)\n[PASS] test_TransferEntireSupply() (gas: 161677)\n[PASS] test_TransferFromBeyondAllowanceIsAtomic() (gas: 116070)\n[PASS] test_TransferFromConsumesFiniteAllowanceAndEmitsTransfer() (gas: 242462)\n[PASS] test_TransferFromInsufficientBalanceRestoresAllowance() (gas: 126526)\n[PASS] test_TransferFromToZeroRestoresAllowance() (gas: 114529)\n[PASS] test_TransferFromWithoutApprovalReverts() (gas: 57778)\n[PASS] test_TransferToZeroRevertsEvenForZeroAmount() (gas: 71970)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73375)\n[PASS] test_ZeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 81425)\n[PASS] test_ZeroTransferFromZeroAddressReverts() (gas: 42208)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 92.05ms (262.27ms CPU time)\n\nRan 14 tests for test/BitesEdgeCases.t.sol:BitesEdgeCasesTest\n[PASS] testFuzz_ApprovalReplacementAndSpendingDoNotAffectOtherPairs(uint256,uint256,uint256) (runs: 1024, μ: 404006, ~: 405809)\nLogs:\n  Bound result 885990422245391044520185972\n\n[PASS] testFuzz_FailedSpendRestoresAllowanceAndSucceedsAfterFunding(uint256,uint256,uint256,bool) (runs: 1024, μ: 364064, ~: 364271)\nLogs:\n  Bound result 1709\n  Bound result 999999999999999999999999363\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129642292\n\n[PASS] testFuzz_RevocationAfterPartialSpendBlocksOldAuthority(uint256,uint256) (runs: 1024, μ: 362400, ~: 363038)\nLogs:\n  Bound result 50000000000000000000\n  Bound result 11364\n\n[PASS] testFuzz_SplitTransfersEqualOneTransfer(uint256,uint256) (runs: 1024, μ: 217100, ~: 218587)\nLogs:\n  Bound result 694\n  Bound result 109\n\n[PASS] testFuzz_TransferRoundTripRestoresBothHolders(uint256,uint256) (runs: 1024, μ: 221265, ~: 222609)\nLogs:\n  Bound result 50000000000000000000\n  Bound result 11364\n\n[PASS] testFuzz_ZeroTransfersPreserveExistingAllowance(uint256) (runs: 1024, μ: 164542, ~: 164865)\n[PASS] test_AllowanceIsBoundToOwnerAndSpenderNotRecipient() (gas: 331257)\n[PASS] test_MaximumFiniteAllowanceIsConsumedWhenSpendingEntireSupply() (gas: 153621)\n[PASS] test_OneWeiCanMoveAndBeSpentExactly() (gas: 220794)\n[PASS] test_SelfTransferStillRequiresSufficientBalance() (gas: 215284)\n[PASS] test_TransferFromByOwnerRequiresSelfApproval() (gas: 258566)\n[PASS] test_UnlimitedApprovalDoesNotPermitMaximumTransferWithoutBalance() (gas: 218631)\n[PASS] test_ZeroDelegatedTransferToZeroIsRejectedWithAndWithoutApproval() (gas: 325343)\n[PASS] test_ZeroSpenderRejectsZeroAndMaximumApprovalsWithoutChangingOtherApproval() (gas: 190137)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 95.52ms (553.60ms CPU time)\n\nRan 2 tests for test/BitesInvariant.t.sol:BitesInvariantTest\n[PASS]\nBitesInvariantTest invariants:\n[PASS] invariant_ExactAllowances\n[PASS] invariant_FixedSupplyAndExactBalances\n BitesInvariantTest invariants (runs: 256, calls: 32768, reverts: 0)\n\n╭--------------+-----------------------+-------+---------+----------╮\n| Contract     | Selector              | Calls | Reverts | Discards |\n+===================================================================+\n| BitesHandler | approve               | 3002  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| BitesHandler | approveUnlimited      | 2956  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| BitesHandler | move                  | 2948  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| BitesHandler | moveAll               | 2967  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| BitesHandler | overspend             | 2956  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| BitesHandler | rejectZeroAddress     | 3014  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| BitesHandler | revoke                | 2943  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| BitesHandler | roundTrip             | 2922  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| BitesHandler | spend                 | 3054  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| BitesHandler | spendBeyondBalance    | 2967  | 0       | 0        |\n|--------------+-----------------------+-------+---------+----------|\n| BitesHandler | transferBeyondBalance | 3039  | 0       | 0        |\n╰--------------+-----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 115792089237316195423570985008687907853269984665640364039457584007913129639946\n  Bound result 0\n  Bound result 0\n  Bound result 5372\n  Bound result 199999999999999999999999996\n  Bound result 199999999999999999999999996\n  Bound result 199999999999999999999999996\n  Bound result 115792089237316195423570985008687907853269984665640364039457584007913129639941\n  Bound result 83540722470317953824091604\n  Bound result 83540722470317953824091604\n  Bound result 83540722470317953824091604\n  Bound result 180197350652417566843289040\n  Bound result 100000000000000000000\n  Bound result 100000000000000000000\n  Bound result 100000000000000000000\n  Bound result 19802649347582433156710960\n  Bound result 219802649347582433156710960\n  Bound result 100\n  Bound result 9862\n  Bound result 9862\n  Bound result 9862\n  Bound result 219802649347582433156710960\n  Bound result 205279535397216623177402997\n  Bound result 115792089237316195423570985008687907853269984665640144236808236425479972928981\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640364039457584007913129640854\n  Bound result 85679996539633709683253659\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 290959531936850332860656656\n  Bound result 0\n  Bound result 9\n  Bound result 13\n  Bound result 13\n  Bound result 13\n  Bound result 80421558131816730582653364658707879968859623995003915937944393310803\n  Bound result 174917815255200943665886042\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 10159853437949112430178365771132227606762946831472114673121556025451698182\n  Bound result 1000000000\n  Bound result 5795\n  Bound result 795198583309790556069221503647135408600956283383268\n  Bound result 1000000000\n  Bound result 1000000000\n  Bound result 1000000000\n  Bound result 0\n  Bound result 21107358513476029189255284420276134363275519067\n  Bound result 465877347192051276526536903\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 122540923678211829868512919\n  Bound result 18\n  Bound result 1\n  Bound result 115792089237316195423570985008687907853269984665640364039557584007913129639917\n  Bound result 10\n  Bound result 1264811664\n  Bound result 3967\n  Bound result 0\n  Bound result 578764062696276267709565218108524308888907284659\n  Bound result 465877347192051275261729199\n  Bound result 2\n  Bound result 2\n  Bound result 2\n  Bound result 0\n  Bound result 0\n  Bound result 199999999999999999999996041\n  Bound result 115792089237316195423570985008687907853269984665640098162110391956637867916109\n  Bound result 110\n  Bound result 115792089237316195423570985008687907853269984665640098162110391956637867918795\n  Bound result 7539\n  Bound result 115792089237316195423570985008687907853269984665640029916804776059189656184425\n  Bound result 534122652807948723473459137\n  Bound result 7668\n  Bound result 7668\n  Bound result 7668\n  Bound result 0\n  Bound result 8758\n  Bound result 1\n  Bound result 432210035966287122686305190690045132257360723379701736\n  Bound result 0\n  Bound result 40000000000000000000\n  Bound result 40000000000000000000\n  Bound result 40000000000000000000\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 8\n  Bound result 14662278321211951003670239904198277391088153394920523702994646367823377470060\n  Bound result 0\n  Bound result 242515508224410698724142031093865830193094494169\n  Bound result 1194199613\n  Bound result 1194199613\n  Bound result 1194199613\n  Bound result 1254719576\n  Bound result 1254719576\n  Bound result 1254719576\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4\n  Bound result 11561\n  Bound result 11561\n  Bound result 11561\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1264811782\n  Bound result 1000000000000000000000000000\n  Bound result 1000000000000000000000000000\n  Bound result 1000000000000000000000000000\n\n[PASS] test_HandlerAllowanceLifecycleAndFailureRecovery() (gas: 8845109)\nLogs:\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 1\n  Bound result 10\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 10\n  Bound result 10\n  Bound result 1\n  Bound result 1\n  Bound result 1\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000021\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 1000000000000000000000000000\n  Bound result 1000000000000000000000000000\n  Bound result 1000000000000000000000000000\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 13.87s (13.87s CPU time)\n\nRan 4 test suites in 13.87s (14.06s CPU time): 46 tests passed, 0 failed, 0 skipped (46 total tests)\n","passed":true},{"durationMs":52,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Bites.approve(address,uint256)\",\"Bites.transfer(address,uint256)\",\"Bites.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":16,\"README.md\":128,\"dependencies.lock.json\":52,\"foundry.toml\":18,\"remappings.txt\":2,\"src/Bites.sol\":16,\"test/Bites.t.sol\":332,\"test/BitesEdgeCases.t.sol\":290,\"test/BitesFactory.t.sol\":82,\"test/BitesInvariant.t.sol\":256,\"test/README.md\":66},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"1432e63b9b962602b8c27b83ef72165b62e609e7901f9bdf59ffcae118296f5d","verifiedTreeHash":"27a86e40a66628ee288dff42577fef6ad56e30b5","verifierVersion":"0.1.0+f3653923"},{"checks":[{"durationMs":1278,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.20s\nCompiler run successful!\n","passed":true},{"durationMs":6762,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/BitesFactory.t.sol:BitesFactoryTest\n[PASS] test_Create2MintsOnlyToImmediateFactory() (gas: 294651)\n[PASS] test_DistributionClaimAndPoolTransfersArriveWhole() (gas: 644310)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 30.60ms (1.04ms CPU time)\n\nRan 28 tests for test/Bites.t.sol:BitesTest\n[PASS] testFuzz_DelegatedOverspendReverts(uint256,uint256) (runs: 1024, μ: 123278, ~: 123895)\nLogs:\n  Bound result 945511896057\n  Bound result 27200249339704970985603\n\n[PASS] testFuzz_DelegatedTransferConservesSupply(uint256,uint256) (runs: 1024, μ: 163098, ~: 165191)\nLogs:\n  Bound result 627128365900062589584015446\n  Bound result 293009206294017847133626921\n\n[PASS] testFuzz_TransferAboveBalanceReverts(uint256,uint256) (runs: 1024, μ: 127343, ~: 127606)\nLogs:\n  Bound result 840194288637416472783965728\n  Bound result 1293989\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1024, μ: 92892, ~: 93205)\nLogs:\n  Bound result 124115588561280812508898\n\n[PASS] test_ApproveDoesNotRequireBalanceAndDoesNotAuthorizeAnotherSpender() (gas: 106215)\n[PASS] test_ApproveEmitsEventAndReplacesAllowance() (gas: 119487)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37551)\n[PASS] test_ConstructorEmitsMintEventToDeployer() (gas: 22427)\n[PASS] test_DelegatedSelfTransferConsumesAllowanceButPreservesBalance() (gas: 113929)\n[PASS] test_DeployerCannotSpendHolderTokensWithoutApproval() (gas: 158475)\n[PASS] test_InfiniteAllowanceIsNotDecremented() (gas: 215001)\n[PASS] test_InsufficientBalanceRevertsWithoutMovingTokens() (gas: 67746)\n[PASS] test_MaximumTransferReverts() (gas: 55022)\n[PASS] test_MetadataAndInitialSupply() (gas: 96965)\n[PASS] test_NoMintBurnAdminOrUpgradeEntryPoints() (gas: 794832)\n[PASS] test_RevokingAllowanceBlocksFurtherSpending() (gas: 131951)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51463)\n[PASS] test_TransferEmitsEventAndDeliversExactAmount() (gas: 91548)\n[PASS] test_TransferEntireSupply() (gas: 161677)\n[PASS] test_TransferFromBeyondAllowanceIsAtomic() (gas: 116070)\n[PASS] test_TransferFromConsumesFiniteAllowanceAndEmitsTransfer() (gas: 242462)\n[PASS] test_TransferFromInsufficientBalanceRestoresAllowance() (gas: 126526)\n[PASS] test_TransferFromToZeroRestoresAllowance() (gas: 114529)\n[PASS] test_TransferFromWithoutApprovalReverts() (gas: 57778)\n[PASS] test_TransferToZeroRevertsEvenForZeroAmount() (gas: 71970)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73375)\n[PASS] test_ZeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 81425)\n[PASS] test_ZeroTransferFromZeroAddressReverts() (gas: 42208)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 30.71ms (121.38ms CPU time)\n\nRan 1 test for test/BitesInvariant.t.sol:BitesInvariantTest\n[PASS]\nBitesInvariantTest invariants:\n[PASS] invariant_ExactAllowances\n[PASS] invariant_FixedSupplyAndExactBalances\n BitesInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+-----------+-------+---------+----------╮\n| Contract     | Selector  | Calls | Reverts | Discards |\n+=======================================================+\n| BitesHandler | approve   | 4121  | 0       | 0        |\n|--------------+-----------+-------+---------+----------|\n| BitesHandler | move      | 3991  | 0       | 0        |\n|--------------+-----------+-------+---------+----------|\n| BitesHandler | overspend | 4136  | 0       | 0        |\n|--------------+-----------+-------+---------+----------|\n| BitesHandler | spend     | 4136  | 0       | 0        |\n╰--------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 982\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 2\n  Bound result 0\n  Bound result 0\n  Bound result 664\n  Bound result 0\n  Bound result 400\n  Bound result 0\n  Bound result 0\n  Bound result 52638526\n  Bound result 0\n  Bound result 659\n  Bound result 5968\n  Bound result 0\n  Bound result 0\n  Bound result 1000000000000000000\n  Bound result 14\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 3063\n  Bound result 417\n  Bound result 42987680\n  Bound result 1000000000\n  Bound result 0\n  Bound result 1\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.66s (6.66s CPU time)\n\nRan 3 test suites in 6.66s (6.72s CPU time): 31 tests passed, 0 failed, 0 skipped (31 total tests)\n","passed":true},{"durationMs":38,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Bites.approve(address,uint256)\",\"Bites.transfer(address,uint256)\",\"Bites.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":16,\"README.md\":128,\"dependencies.lock.json\":52,\"foundry.toml\":18,\"remappings.txt\":2,\"src/Bites.sol\":16,\"test/Bites.t.sol\":332,\"test/BitesFactory.t.sol\":82,\"test/BitesInvariant.t.sol\":114},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":467,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":224,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/Bites.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"531866799d575a0d7b7042b9ca98e36e43dcf3d1ed8769b4e52c26d1e279e0fd","verifiedTreeHash":"be0f53587252b16f5cba90f54ec60b03035297a9","verifierVersion":"0.1.0+f3653923"},{"checks":[{"durationMs":1147,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.08s\nCompiler run successful!\n","passed":true},{"durationMs":6343,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 2 tests for test/BitesFactory.t.sol:BitesFactoryTest\n[PASS] test_Create2MintsOnlyToImmediateFactory() (gas: 294651)\n[PASS] test_DistributionClaimAndPoolTransfersArriveWhole() (gas: 644310)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 28.00ms (1.02ms CPU time)\n\nRan 28 tests for test/Bites.t.sol:BitesTest\n[PASS] testFuzz_DelegatedOverspendReverts(uint256,uint256) (runs: 1024, μ: 123278, ~: 123895)\nLogs:\n  Bound result 12000000000000000000\n  Bound result 11206\n\n[PASS] testFuzz_DelegatedTransferConservesSupply(uint256,uint256) (runs: 1024, μ: 163098, ~: 165191)\nLogs:\n  Bound result 5\n  Bound result 3\n\n[PASS] testFuzz_TransferAboveBalanceReverts(uint256,uint256) (runs: 1024, μ: 127343, ~: 127606)\nLogs:\n  Bound result 945511896057\n  Bound result 27200249339704970985603\n\n[PASS] testFuzz_TransferConservesSupply(address,uint256) (runs: 1024, μ: 92892, ~: 93205)\nLogs:\n  Bound result 3\n\n[PASS] test_ApproveDoesNotRequireBalanceAndDoesNotAuthorizeAnotherSpender() (gas: 106215)\n[PASS] test_ApproveEmitsEventAndReplacesAllowance() (gas: 119487)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37551)\n[PASS] test_ConstructorEmitsMintEventToDeployer() (gas: 22427)\n[PASS] test_DelegatedSelfTransferConsumesAllowanceButPreservesBalance() (gas: 113929)\n[PASS] test_DeployerCannotSpendHolderTokensWithoutApproval() (gas: 158475)\n[PASS] test_InfiniteAllowanceIsNotDecremented() (gas: 215001)\n[PASS] test_InsufficientBalanceRevertsWithoutMovingTokens() (gas: 67746)\n[PASS] test_MaximumTransferReverts() (gas: 55022)\n[PASS] test_MetadataAndInitialSupply() (gas: 96965)\n[PASS] test_NoMintBurnAdminOrUpgradeEntryPoints() (gas: 794832)\n[PASS] test_RevokingAllowanceBlocksFurtherSpending() (gas: 131951)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51463)\n[PASS] test_TransferEmitsEventAndDeliversExactAmount() (gas: 91548)\n[PASS] test_TransferEntireSupply() (gas: 161677)\n[PASS] test_TransferFromBeyondAllowanceIsAtomic() (gas: 116070)\n[PASS] test_TransferFromConsumesFiniteAllowanceAndEmitsTransfer() (gas: 242462)\n[PASS] test_TransferFromInsufficientBalanceRestoresAllowance() (gas: 126526)\n[PASS] test_TransferFromToZeroRestoresAllowance() (gas: 114529)\n[PASS] test_TransferFromWithoutApprovalReverts() (gas: 57778)\n[PASS] test_TransferToZeroRevertsEvenForZeroAmount() (gas: 71970)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 73375)\n[PASS] test_ZeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 81425)\n[PASS] test_ZeroTransferFromZeroAddressReverts() (gas: 42208)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 28.32ms (113.51ms CPU time)\n\nRan 1 test for test/BitesInvariant.t.sol:BitesInvariantTest\n[PASS]\nBitesInvariantTest invariants:\n[PASS] invariant_ExactAllowances\n[PASS] invariant_FixedSupplyAndExactBalances\n BitesInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------+-----------+-------+---------+----------╮\n| Contract     | Selector  | Calls | Reverts | Discards |\n+=======================================================+\n| BitesHandler | approve   | 4121  | 0       | 0        |\n|--------------+-----------+-------+---------+----------|\n| BitesHandler | move      | 3991  | 0       | 0        |\n|--------------+-----------+-------+---------+----------|\n| BitesHandler | overspend | 4136  | 0       | 0        |\n|--------------+-----------+-------+---------+----------|\n| BitesHandler | spend     | 4136  | 0       | 0        |\n╰--------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 982\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 2\n  Bound result 0\n  Bound result 0\n  Bound result 664\n  Bound result 0\n  Bound result 400\n  Bound result 0\n  Bound result 0\n  Bound result 52638526\n  Bound result 0\n  Bound result 659\n  Bound result 5968\n  Bound result 0\n  Bound result 0\n  Bound result 1000000000000000000\n  Bound result 14\n  Bound result 1\n  Bound result 1313373040\n  Bound result 0\n  Bound result 3062\n  Bound result 417\n  Bound result 12016010\n  Bound result 1000000000\n  Bound result 0\n  Bound result 1\n  Bound result 255\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.25s (6.25s CPU time)\n\nRan 3 test suites in 6.25s (6.31s CPU time): 31 tests passed, 0 failed, 0 skipped (31 total tests)\n","passed":true},{"durationMs":33,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Bites.approve(address,uint256)\",\"Bites.transfer(address,uint256)\",\"Bites.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":16,\"README.md\":128,\"dependencies.lock.json\":52,\"foundry.toml\":18,\"launch.json\":24,\"remappings.txt\":2,\"src/Bites.sol\":16,\"test/Bites.t.sol\":332,\"test/BitesFactory.t.sol\":82,\"test/BitesInvariant.t.sol\":114},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"8b1dea45cf37db01876fc9f0e4b1da0a6ccf2d5cb566b9f51316b6fceaf6a91e","verifiedTreeHash":"15ea1270caa3789cfeb7510367afb1d5a4e6fb92","verifierVersion":"0.1.0+f3653923"}]}