{"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":"a12a64ee-21b6-47f0-83b0-853d7c5d639e","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"7038cb73b1e4aa85aaf8838ab5f0fd72ad883b175e3db9c1339d20fc575fe0aa","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":"54e60993cad65c80d3ca96df75b18bfe37ea1d518e94b914e9b738e1c1ac4f6a","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":"d96108c237f3701f6dec534ce71294e78d92e4cbf1e6ba8095e8c4a75b9d8456","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":"6c97d36f3f16fabc1612dd2d0a6c7a9e3d599ec86c36b4d612e9499aceeda718","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":"2a608c7acecde1d9c84effc55055c1e9c76d0cbdbef698ac7d7e5948ab9d1103","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":"088f8be132eb9e5f249c079b01ab2b916f08f7dbaf73919baddbc04823818575","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":"35782affae8776e5c9bb706d0119bdb895889eac59e0d86ee0bfa21d2aa7cf55","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"26060593ae2a9990c43acdf8f1b32f21b846432b41282bd6f5785df768c8e161","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: Vault Street (VST).\nToken name: Vault Street\nToken symbol: VST\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"fb6d70d41528d0cd4f97829dd3f4b8db0e81e0c259679da223fa6c25c4a21c22","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"a12a64ee-21b6-47f0-83b0-853d7c5d639e","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2231-vault-street"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51142","feedbackHash":"c4fd719eeacac4580e2a3ceeec96172ea26c2b87f6a4baf525ae63bf6c31ea42","nodeKey":"audit_economics","submissionHash":"7038cb73b1e4aa85aaf8838ab5f0fd72ad883b175e3db9c1339d20fc575fe0aa","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51423","feedbackHash":"9803d6a64519cc437b503dadb5f8df7f5daa4cb3215a52a395c5812ef9457526","nodeKey":"audit_flow","submissionHash":"54e60993cad65c80d3ca96df75b18bfe37ea1d518e94b914e9b738e1c1ac4f6a","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52216","feedbackHash":"500bda3a05109d9c9cee442cea3fca17cf72db391fde3529e8f8868c08dba92b","nodeKey":"audit_judge","submissionHash":"d96108c237f3701f6dec534ce71294e78d92e4cbf1e6ba8095e8c4a75b9d8456","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52214","feedbackHash":"fa3f8383e4a7a9c2dd65a2cfd7ebc38e5ae1647b9d89a3a7090bd6d56b68a721","nodeKey":"audit_math","submissionHash":"6c97d36f3f16fabc1612dd2d0a6c7a9e3d599ec86c36b4d612e9499aceeda718","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51367","feedbackHash":"ea6791683cafcaf469ae71184340d5ad5369b2b7961e299b5cfa1032911b1093","nodeKey":"audit_permissions","submissionHash":"2a608c7acecde1d9c84effc55055c1e9c76d0cbdbef698ac7d7e5948ab9d1103","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51005","feedbackHash":"09cf60387a77422a7b574d4e2e34e1c66e2a4ad5a72ef44d8a6f3789fa538685","nodeKey":"build_contract_project","submissionHash":"088f8be132eb9e5f249c079b01ab2b916f08f7dbaf73919baddbc04823818575","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51884","feedbackHash":"3edd425700ae37bd26f02fae3acdc27bc57119c45c5dcfd3aa0d1b5ef62c04a0","nodeKey":"manifest","submissionHash":"35782affae8776e5c9bb706d0119bdb895889eac59e0d86ee0bfa21d2aa7cf55","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51875","feedbackHash":"2475b79f8319a9717108f5c48cb6401c4f373063820d708361f58241d3a4637e","nodeKey":"write_foundry_tests","submissionHash":"26060593ae2a9990c43acdf8f1b32f21b846432b41282bd6f5785df768c8e161","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"567827f4bf7aaa2b78b2d26127c8ad8f93635348ef9d794c535e94887e3163d8","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"561606de6d57594e47851c37e5fef657d7ae1f8f62a0b7dcaf7df4e052b866a6","device":"9b2fda471b13b14a","findings":[],"hash":"088f8be132eb9e5f249c079b01ab2b916f08f7dbaf73919baddbc04823818575","nodeId":"9bb6f87b-7de3-41c5-a668-1651a9a4a1b6","outcome":"completed","summary":"Implemented Vault Street (VST) with 18 decimals and exactly 1,000,000,000 tokens minted once to the deployer. No additional minting or administrative powers.\n\nIncluded vendored dependencies, deployment documentation, and success, failure, fuzz, and invariant tests.\n\nValidation passed:\n\n- `forge build`\n- `forge test` — all 35 tests passed using the supplied seed\n- `forge fmt --check`","treeHash":"54633848e0ec2e548c84886c208c5f243fd855e6","usage":{"cachedInputTokens":538368,"inputTokens":52442,"model":"gpt-6-astra","outputTokens":15830,"runtime":"codex","turns":5,"wallClockMs":392783}},{"artifacts":[],"attempt":1,"bundleHash":"e40ca718f17defb2401c52e6f91cf633b4e5194834db37883e8fa87df0d7cd59","device":"672c29f92850efe0","findings":[],"hash":"26060593ae2a9990c43acdf8f1b32f21b846432b41282bd6f5785df768c8e161","nodeId":"58d0bf05-4e9a-453d-ae88-7b71dfce103a","outcome":"completed","summary":"I added two test files. All 49 tests pass under `forge build` and `forge test` with the verifier's fuzz seed (`0x560c…d17e`). I found no defects in the token, so there is no `.imd-findings.json`.\n\n**What the token is:** `src/VaultStreet.sol` is a plain OpenZeppelin v5.4.0 ERC-20 named \"Vault Street\" (VST). It has 18 decimals and mints 1,000,000,000 tokens once, to whoever deploys it. There are no admin, mint, burn, pause or upgrade functions. The earlier contributor's suite was already thorough and I left it unchanged.\n\n**`test/VaultStreet.model.invariant.t.sol`** is the invariant suite, set to 256 runs × 64 calls in the test file itself:\n- **Actors:** besides the deployer and two named holders, it pulls in new random addresses as the sequence runs. The token's own address is also an actor.\n- **What it checks:** it keeps its own copy of every balance and allowance and compares it with the token after each call. Specifically:\n  - the supply never changes;\n  - each balance matches the copy, and all tracked balances add up to the whole supply, so nothing leaks to an address outside the set;\n  - each allowance matches the copy;\n  - the zero address never gets a balance or an allowance;\n  - the token never holds ETH, and its name, symbol and decimals stay fixed.\n- **Failure paths in the same random sequences:** sending more than a balance, spending more than an allowance, spending within the allowance but beyond the balance, sending to the zero address, pulling from the zero address, and approving the zero address. Each must revert with the exact OpenZeppelin error and leave balances and allowances unchanged.\n- **Guard against empty runs:** a check after each sequence fails the test if no transfer succeeded or no failure path was exercised.\n\n**`test/VaultStreet.edge.t.sol`** has 13 unit and fuzz tests:\n- deploying and doing the launch transfers in one transaction, with each recipient receiving the exact amount;\n- the off-by-one overdraw, and sending the maximum possible amount without overflow;\n- an unlimited approval cannot pull more than the holder's balance;\n- the token's own address can receive and send VST;\n- spending a limited allowance emits only the `Transfer` event;\n- functions the token doesn't have (`permit`, `increaseAllowance`) revert, and so does sending ETH with `approve`;\n- fuzzed chains of transfers keep the supply intact, re-approving always sets the exact new value, and a stranger can never pull a holder's tokens.\n\nThe launch checks you supplied need the Uniswap v4 code and launch settings that this repository doesn't have, so I didn't run them here. My own launch test checks that the transfers arrive exact, not a real pool or swap. I haven't committed the new files.","treeHash":"2e18957a9a1e78a2db35df7fbd2353652ddddc0e","usage":{"cachedInputTokens":420637,"inputTokens":18,"model":"claude-opus-5-5","outputTokens":11965,"runtime":"claude","turns":12,"wallClockMs":212032}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"ddfb1efa72fe9a94","findings":[],"hash":"2a608c7acecde1d9c84effc55055c1e9c76d0cbdbef698ac7d7e5948ab9d1103","nodeId":"6665a079-4bdc-4c3c-9423-c68db1a6663a","outcome":"completed","summary":"The review is complete. The findings file is written, the scratch test directory is removed, and the working tree holds no changes beyond the findings file, which the harness excludes from git on purpose.\n\n**Result: no defects found in the Access Control, Trust Gap and Asymmetry areas.** The file `.imd-findings.json` holds an empty findings list and eight coverage rows, one per listed entry point plus the invariants I checked.\n\nWhat I verified, with concrete traces:\n\n- **Access control.** The ABI, enumerated from the compiled artifact, exposes only the standard ERC-20 functions plus the supply constant. There is no owner, minter, pauser, blacklist, initializer, receive or fallback. The factory that deploys the token keeps no power afterwards. A 1 wei pull from a holder by the deployer reverts with an insufficient-allowance error.\n- **Asymmetry.** The approve and spend pair is symmetric. Spending an exact allowance leaves zero, one wei more reverts, and an unlimited allowance stays unlimited. Both transfer paths reach the same internal update, refuse the zero receiver, and move exact amounts.\n- **Trust gap.** There is no economic formula, fee, exemption list or external call, so no seam exists between authorization, economics and caller class. Every launch flow the protected test requires arrives whole.\n- **Dependency and bytecode integrity.** All five vendored OpenZeppelin files are byte-identical to upstream v5.4.0. Neither the creation nor the runtime bytecode contains DELEGATECALL, CALLCODE, SELFDESTRUCT, CREATE or ORIGIN. The supply and decimals match the task's manifest values.\n\nChecks run: the project's own suite passed with 35 tests, including the seeded fuzz and invariant runs. A six-test scratch suite I wrote for my area also passed before I deleted it. Both static-analysis leads were low-impact and turned out to be the supply literal, which is correct.\n\nTwo inherent ERC-20 properties are noted in the coverage record rather than reported as defects. The approve replacement race is standard and already documented in the README. A zero-value transferFrom emits a Transfer event without allowance, which is upstream OpenZeppelin behaviour and breaks no guarantee this project makes.","treeHash":null,"usage":{"cachedInputTokens":605009,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":12373,"runtime":"claude","turns":27,"wallClockMs":195759}},{"artifacts":[],"attempt":1,"bundleHash":"127b240e5dc0ac6a2412c64998df7376f918834f0ad7ffbfafb54fa92f270119","device":"4aa8623bfb8d8e5e","findings":[],"hash":"35782affae8776e5c9bb706d0119bdb895889eac59e0d86ee0bfa21d2aa7cf55","nodeId":"751d110c-1c52-4927-ba17-4d717750806f","outcome":"completed","summary":"Done. I wrote launch.json for the Vault Street launch, and it is the only changed file.\n\n**What the manifest says**\n\n- **Token:** contract `VaultStreet`, name Vault Street, symbol VST, 18 decimals, empty constructorArgs, totalSupply of one billion tokens in minor units. This matches the accepted source, whose constructor takes no arguments and mints that constant to msg.sender.\n- **Contracts:** an empty list. The accepted tree has no application contracts, only the token and test helpers under test/.\n- **Pool:** native ETH as the zero address, fee 12500, tick spacing 60, and the one-to-one initialPrice from the reference.\n- **Economics:** copied verbatim from the job.\n- **Notes:** a short description of the token's fixed supply, lack of transfer fees or admin powers, and the absence of application contracts.\n\n**Checks run**\n\n- A local script confirmed the manifest parses, uses only the schema's keys, and carries the exact supply, pool and economics values.\n- `forge build` compiled cleanly and the seeded `forge test` run passed all 35 tests.\n- `git status` shows launch.json as the only new or changed file.","treeHash":"edfeca4c9978c8b321af08bc3044d497464e3a64","usage":{"cachedInputTokens":181960,"inputTokens":130,"model":"claude-fable-5-1","outputTokens":2705,"runtime":"claude","turns":9,"wallClockMs":48866}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"56e50117311155be","findings":[],"hash":"54e60993cad65c80d3ca96df75b18bfe37ea1d518e94b914e9b738e1c1ac4f6a","nodeId":"06377bed-8302-4e77-864c-3b343b198e0f","outcome":"completed","summary":"The review is complete and `.imd-findings.json` holds the result: zero findings, six coverage rows. The only files touched are that report and the scratch test, which I removed.\n\n**What I checked, by guide**\n\n- **Execution Trace.** Traced all three entry points through the inherited OpenZeppelin code: zero-address sentinels, balance check before the unchecked debit, finite allowance decrement with the max-uint exemption, and atomic rollback of allowance when the transfer leg reverts. No value leak, stale read or partial update exists. The approval replacement race is standard ERC-20 behaviour and is documented in the README.\n- **Periphery.** The token is a 16-line wrapper, so the base contract is the whole attack surface. I fetched the five vendored OpenZeppelin files and the licence from the upstream v5.4.0 tag and compared them byte for byte. All are identical.\n- **First Principles.** The one constant was verified as exactly 10^27. The constructor mints once to `msg.sender`, which under CREATE2 is the factory and not the transaction origin. There is no initializer, owner, fallback, receive, assembly or low-level call anywhere in src or lib.\n\n**Evidence run**\n\n- The project's 35 tests pass under the seeded fuzz command, and `forge fmt --check` is clean.\n- Four scratch tests I wrote for edge cases the suite does not cover (owner calling transferFrom on itself, deployment through a contract, approval residual then replacement, max-uint transfer) all behaved as intended.\n- Static analysis leads were both benign. Slither reported nothing. Aderyn flagged the large numeric literal, which is the intended supply constant.\n\n**Protected checks.** By inspection the token satisfies every clause of the custom-token floor: exact supply to the factory, 18 decimals, no transfer tax, no supply growth path, no privileged freeze or seize, no forbidden opcodes. I could not run the protected tests themselves because they depend on the verifier's launch harness and environment variables that are not in this tree.","treeHash":null,"usage":{"cachedInputTokens":580827,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":10007,"runtime":"claude","turns":29,"wallClockMs":153358}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"6b47d1bf92391c22","findings":[],"hash":"6c97d36f3f16fabc1612dd2d0a6c7a9e3d599ec86c36b4d612e9499aceeda718","nodeId":"32da811a-ec46-4a1f-84cd-2dfe21ff554c","outcome":"completed","summary":"I found no defects in the math, boundary or numerical-gap areas for Vault Street (VST). `.imd-findings.json` holds an empty findings list and a coverage row for each of the three entry points.\n\n**What I reviewed:** `src/VaultStreet.sol` is a plain OpenZeppelin v5.4 `ERC20` with no overrides. The constructor sets `INITIAL_SUPPLY = 1_000_000_000 * 10 ** 18`, which is 1e27, and mints all of it once to `msg.sender`. I read the vendored `ERC20.sol` in `lib/` and its code matches standard OpenZeppelin, so the token has none of its own arithmetic.\n\n- **Precision:** no fees, taxes, rounding, division or narrowing casts, so every transfer moves exactly the amount asked.\n- **Boundaries:**\n  - `transfer`/`transferFrom` revert when the amount exceeds the balance or allowance.\n  - The unchecked subtraction and addition can't wrap, because the checks before them and the fixed 1e27 supply bound them.\n  - Transfers of zero, of the whole balance, and to yourself all behave correctly.\n  - An allowance of `type(uint256).max` is treated as unlimited, which is OpenZeppelin's intended behaviour.\n  - Approving or sending to the zero address reverts.\n- **Gaps:** there is no mint, burn or admin function after the constructor, so the supply can't change. `decimals()` returns 18, matching the brief. The constant fits easily in a `uint256`.\n- **Static analysis lead:** aderyn's \"large numeric literal\" warning at line 10 is about style only; the value is correct.\n\nThe project's existing suite ran with 35 of 35 tests passing, including the fixed-supply invariant over 8,192 calls.\n\n**Coverage rows:** `approve`, `transfer` and `transferFrom` are each marked `holds`, plus one extra row for the fixed-supply invariant. Every listed entry point was reached.\n\nI changed no files; the only file written is `.imd-findings.json`.","treeHash":null,"usage":{"cachedInputTokens":275404,"inputTokens":12,"model":"claude-opus-5-5","outputTokens":2478,"runtime":"claude","turns":6,"wallClockMs":36029}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e57a8e639cccfbab","findings":[],"hash":"7038cb73b1e4aa85aaf8838ab5f0fd72ad883b175e3db9c1339d20fc575fe0aa","nodeId":"a8eca6ef-7d6c-4d5a-a4d3-d09ae195edfa","outcome":"completed","summary":"The review is complete. The Vault Street (VST) token holds under the Economic Security, Invariant and Flow Gap guides, and I report no defects.\n\n**What I checked**\n\n- `src/VaultStreet.sol` is a 16-line contract: an unmodified OpenZeppelin v5.4.0 ERC20 whose constructor mints 1e27 units once to msg.sender. There are no overrides of `_update`, no owner, no mint or burn path, no external calls, no receive or fallback.\n- All five vendored OpenZeppelin files hash-match upstream v5.4.0 byte for byte, so the only place a defect could hide in such a thin token is clean.\n- The compiled ABI exposes exactly the nine ERC-20 functions plus the `INITIAL_SUPPLY` constant. The runtime has no DELEGATECALL, CALLCODE or SELFDESTRUCT and no linked libraries.\n- Every economic invariant from the guides was traced through the code and exercised: fixed supply after the constructor, sum of balances equal to supply, exact-amount launch flows (10% to the distributor, 80% seeded by balance delta to the pool manager, remainder to the requester, claims, buy and sell), finite and infinite allowance semantics, and reverts that leave allowances and balances untouched.\n- The supply fits Uniswap v4's int128 deltas and uint128 liquidity, so the seed and swaps cannot overflow.\n- The aderyn \"large numeric literal\" lead was checked: the literal evaluates to exactly 10^27 as the README and manifest state.\n- The project's 35 tests pass with the pinned fuzz seed, and an independent scratch probe of the launch flows passed before being removed.\n\n**Output**\n\n`.imd-findings.json` holds an empty findings list and nine coverage rows: `holds` for all three listed entry points plus six invariant and trust-assumption rows. No scratch files remain and the working tree contains only the findings file.\n\n**Trust assumptions, not defects:** the factory holds the whole supply after construction as an ordinary balance, and allowances granted to malicious spenders cannot be reversed by anyone. Both are inherent to the requested fixed-supply, admin-free design.","treeHash":null,"usage":{"cachedInputTokens":1010681,"inputTokens":418,"model":"claude-fable-5-1","outputTokens":12563,"runtime":"claude","turns":32,"wallClockMs":214311}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"47f3603854a893a3","findings":[],"hash":"d96108c237f3701f6dec534ce71294e78d92e4cbf1e6ba8095e8c4a75b9d8456","nodeId":"ec4f8f84-849b-4d70-9d45-5fef8d8c6321","outcome":"completed","summary":"I found no defects in this audit. `.imd-findings.json` has an empty findings list, and its coverage record answers all three entry points plus two invariants. Nothing in the tree was changed, and `git status` is clean.\n\n**The specialists' reports:** none of the four specialists or the test writer reported a finding, so there was nothing to reproduce or merge. I read the code myself rather than relying on their `holds` answers.\n\n**The code:** `src/VaultStreet.sol` is a plain OpenZeppelin v5.4 ERC20 with no overrides. The constructor mints exactly `1_000_000_000 * 10 ** 18` once to `msg.sender`. There is no owner, no mint or burn after deployment, no transfer fee, no pause or blocklist, and no external calls.\n\n**Entry points:**\n- **`transfer`:** holds. It moves exactly the amount requested, so the factory's transfer to the distributor, the pool seed and swaps all arrive in full.\n- **`transferFrom`:** holds. It checks and spends the allowance, then makes the same exact transfer.\n- **`approve`:** holds. It sets the allowance exactly and rejects the zero address.\n\n**Manifest and deployment:**\n- `launch.json` is valid against the schema.\n- `constructorArgs: []` matches the constructor, which takes no arguments.\n- `totalSupply` (1000000000000000000000000000) and `decimals` (18) match the code.\n- The contract is well under the size limits: 1,753 bytes deployed and 2,641 bytes of creation code.\n- It needs no particular address bits, so the factory's CREATE2 deployment works as is.\n\n**Static analysis:** the only lead was aderyn's \"large numeric literal\" warning at line 10. That line is the correct supply of 1e27, not a defect.\n\n**Tests:** the existing suite passes, 49 of 49. I did not run the protected tests: they import files that are not in this tree (for example `src/LaunchLiquidity.sol` and the v4-core library).\n\nAs with any review, finding nothing doesn't prove the code has no defects.","treeHash":null,"usage":{"cachedInputTokens":201963,"inputTokens":10,"model":"claude-opus-5-5","outputTokens":2198,"runtime":"claude","turns":5,"wallClockMs":44392}}],"verification":[{"checks":[{"durationMs":2606,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.43s\nCompiler run successful!\n","passed":true},{"durationMs":1592,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 34 tests for test/VaultStreet.t.sol:VaultStreetTest\n[PASS] testFuzz_approvedTransferAccountsForAllowanceAndBalances(uint256,uint256) (runs: 1000, μ: 167829, ~: 169723)\nLogs:\n  Bound result 751859630794367391458130949\n  Bound result 702846685466250158611163958\n\n[PASS] testFuzz_failedTransferFromPreservesAllowance(uint256,uint256) (runs: 1000, μ: 198751, ~: 199031)\nLogs:\n  Bound result 2\n  Bound result 6247895585831994\n\n[PASS] testFuzz_transferAboveAllowanceReverts(uint256,uint256) (runs: 1000, μ: 127998, ~: 128221)\nLogs:\n  Bound result 474172250153601912813398899\n  Bound result 678183986510592040067510531\n\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 1000, μ: 61555, ~: 61876)\nLogs:\n  Bound result 1759309342547678309070379151806491\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 1000, μ: 106053, ~: 106311)\nLogs:\n  Bound result 23237\n\n[PASS] test_approvalIsScopedToOwnerAndSpender() (gas: 203782)\n[PASS] test_approveDoesNotRequireTokenBalance() (gas: 78615)\n[PASS] test_approveEmitsEventAndCanReplaceOrRevokeAllowance() (gas: 177588)\n[PASS] test_approveZeroSpenderReverts() (gas: 40274)\n[PASS] test_constructorEmitsMintTransfer() (gas: 14187)\n[PASS] test_create2DeploymentMintsToFactoryInsteadOfTransactionOrigin() (gas: 287331)\n[PASS] test_deployerCannotMoveHolderBalanceWithoutApproval() (gas: 98204)\n[PASS] test_factoryDistributionClaimsAndPoolTransfersDeliverExactAmounts() (gas: 636853)\n[PASS] test_metadataAndEntireInitialSupply() (gas: 122254)\n[PASS] test_nativeEtherTransferReverts() (gas: 45234)\n[PASS] test_noMintBurnAdministrationOrUpgradeEntryPoints() (gas: 914672)\n[PASS] test_revokedApprovalCannotBeSpent() (gas: 120531)\n[PASS] test_runtimeHasNoForbiddenOpcodesAndFitsDeploymentLimit() (gas: 1039951)\n[PASS] test_selfTransferDoesNotChangeBalance() (gas: 54252)\n[PASS] test_selfTransferStillRequiresSufficientBalance() (gas: 35842)\n[PASS] test_transferEntireBalance() (gas: 88714)\n[PASS] test_transferFromCanSpendExactAllowanceOnlyOnce() (gas: 181259)\n[PASS] test_transferFromEmitsTransferAndConsumesFiniteAllowance() (gas: 165057)\n[PASS] test_transferFromEmptyAccountReverts() (gas: 57449)\n[PASS] test_transferFromInfiniteApprovalRemainsInfinite() (gas: 214981)\n[PASS] test_transferFromToSameHolderConsumesAllowanceWithoutChangingBalance() (gas: 108102)\n[PASS] test_transferFromToZeroRevertsAndPreservesAllowance() (gas: 119083)\n[PASS] test_transferFromWithoutApprovalReverts() (gas: 60101)\n[PASS] test_transferReturnsTrueEmitsEventAndMovesExactAmount() (gas: 96241)\n[PASS] test_transferToZeroReverts() (gas: 50187)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 73323)\n[PASS] test_zeroTransferFromRequiresNoAllowanceForValidAddresses() (gas: 81493)\n[PASS] test_zeroTransferFromZeroSenderReverts() (gas: 55078)\n[PASS] test_zeroTransferToZeroReverts() (gas: 32974)\nSuite result: ok. 34 passed; 0 failed; 0 skipped; finished in 64.94ms (332.18ms CPU time)\n\nRan 1 test for test/VaultStreet.invariant.t.sol:VaultStreetInvariantTest\n[PASS] invariant_supplyIsFixedAndAllBalancesAreAccountedFor() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| VaultStreetHandler | approve      | 2738  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| VaultStreetHandler | transfer     | 2765  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| VaultStreetHandler | transferFrom | 2689  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 420\n  Bound result 3330673\n  Bound result 4\n  Bound result 1556\n  Bound result 0\n  Bound result 3831\n  Bound result 28\n  Bound result 2\n  Bound result 1799\n  Bound result 33\n  Bound result 5656\n  Bound result 0\n  Bound result 412\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 0\n  Bound result 95\n  Bound result 0\n  Bound result 770\n  Bound result 5523\n  Bound result 1\n  Bound result 3124842407\n  Bound result 5\n  Bound result 362\n  Bound result 4\n  Bound result 0\n  Bound result 3980\n  Bound result 710\n  Bound result 16\n  Bound result 3707\n  Bound result 4513\n  Bound result 2393\n  Bound result 3\n  Bound result 2\n  Bound result 8\n  Bound result 24576\n  Bound result 228125770413316420263463286\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 586\n  Bound result 638212886\n  Bound result 3714247998\n  Bound result 5512\n  Bound result 3052\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.41s (1.41s CPU time)\n\nRan 2 test suites in 1.41s (1.47s CPU time): 35 tests passed, 0 failed, 0 skipped (35 total tests)\n","passed":true},{"durationMs":97,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"VaultStreet.approve(address,uint256)\",\"VaultStreet.transfer(address,uint256)\",\"VaultStreet.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":13,\"README.md\":124,\"foundry.toml\":25,\"src/VaultStreet.sol\":16,\"test/VaultStreet.invariant.t.sol\":98,\"test/VaultStreet.t.sol\":466},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":974,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":355,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/VaultStreet.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"088f8be132eb9e5f249c079b01ab2b916f08f7dbaf73919baddbc04823818575","verifiedTreeHash":"54633848e0ec2e548c84886c208c5f243fd855e6","verifierVersion":"0.1.0+a6ee6548"},{"checks":[{"durationMs":3590,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 3.41s\nCompiler run successful!\n","passed":true},{"durationMs":16934,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 13 tests for test/VaultStreet.edge.t.sol:VaultStreetEdgeTest\n[PASS] testFuzz_approveSetsExactValueRegardlessOfPrevious(uint256,uint256) (runs: 1000, μ: 110520, ~: 110651)\n[PASS] testFuzz_chainOfTransfersConservesSupply(uint256,uint256,uint256) (runs: 1000, μ: 246125, ~: 249387)\nLogs:\n  Bound result 255\n  Bound result 175\n  Bound result 132\n\n[PASS] testFuzz_strangerCannotPullFromHolder(address,uint256) (runs: 1000, μ: 51658, ~: 51477)\nLogs:\n  Bound result 902301796852135346668030784\n\n[PASS] test_approveDoesNotAcceptEther() (gas: 48578)\n[PASS] test_eachDeploymentIsIndependentAndMintsOnlyOnce() (gas: 42675)\n[PASS] test_launchInOneTransactionDeliversExactAmounts() (gas: 459817)\n[PASS] test_maxApprovalIsNotEnoughToOverdrawBalance() (gas: 95804)\n[PASS] test_spendingFiniteAllowanceEmitsNoApprovalEvent() (gas: 129962)\n[PASS] test_supplyConstantMatchesBrief() (gas: 19110)\n[PASS] test_tokenAddressCanReceiveAndSendItsOwnToken() (gas: 136318)\n[PASS] test_transferMaxUintRevertsWithoutOverflow() (gas: 38118)\n[PASS] test_transferOfOneMoreThanBalanceReverts() (gas: 112009)\n[PASS] test_unknownSelectorAndCalldataRevert() (gas: 86512)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 75.76ms (225.30ms CPU time)\n\nRan 34 tests for test/VaultStreet.t.sol:VaultStreetTest\n[PASS] testFuzz_approvedTransferAccountsForAllowanceAndBalances(uint256,uint256) (runs: 1000, μ: 167637, ~: 169723)\nLogs:\n  Bound result 3667977003543589\n  Bound result 348616\n\n[PASS] testFuzz_failedTransferFromPreservesAllowance(uint256,uint256) (runs: 1000, μ: 198725, ~: 199036)\nLogs:\n  Bound result 2\n  Bound result 6247895585831994\n\n[PASS] testFuzz_transferAboveAllowanceReverts(uint256,uint256) (runs: 1000, μ: 127976, ~: 128223)\nLogs:\n  Bound result 472266242407840528188698193\n  Bound result 808016494324141746532470534\n\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 1000, μ: 61553, ~: 61876)\nLogs:\n  Bound result 47731488470554319284652099384190542288143661499128642288950593\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 1000, μ: 106094, ~: 106311)\nLogs:\n  Bound result 358369655462434950997368130\n\n[PASS] test_approvalIsScopedToOwnerAndSpender() (gas: 203782)\n[PASS] test_approveDoesNotRequireTokenBalance() (gas: 78615)\n[PASS] test_approveEmitsEventAndCanReplaceOrRevokeAllowance() (gas: 177588)\n[PASS] test_approveZeroSpenderReverts() (gas: 40274)\n[PASS] test_constructorEmitsMintTransfer() (gas: 14187)\n[PASS] test_create2DeploymentMintsToFactoryInsteadOfTransactionOrigin() (gas: 287331)\n[PASS] test_deployerCannotMoveHolderBalanceWithoutApproval() (gas: 98204)\n[PASS] test_factoryDistributionClaimsAndPoolTransfersDeliverExactAmounts() (gas: 636853)\n[PASS] test_metadataAndEntireInitialSupply() (gas: 122254)\n[PASS] test_nativeEtherTransferReverts() (gas: 45234)\n[PASS] test_noMintBurnAdministrationOrUpgradeEntryPoints() (gas: 914672)\n[PASS] test_revokedApprovalCannotBeSpent() (gas: 120531)\n[PASS] test_runtimeHasNoForbiddenOpcodesAndFitsDeploymentLimit() (gas: 1039951)\n[PASS] test_selfTransferDoesNotChangeBalance() (gas: 54252)\n[PASS] test_selfTransferStillRequiresSufficientBalance() (gas: 35842)\n[PASS] test_transferEntireBalance() (gas: 88714)\n[PASS] test_transferFromCanSpendExactAllowanceOnlyOnce() (gas: 181259)\n[PASS] test_transferFromEmitsTransferAndConsumesFiniteAllowance() (gas: 165057)\n[PASS] test_transferFromEmptyAccountReverts() (gas: 57449)\n[PASS] test_transferFromInfiniteApprovalRemainsInfinite() (gas: 214981)\n[PASS] test_transferFromToSameHolderConsumesAllowanceWithoutChangingBalance() (gas: 108102)\n[PASS] test_transferFromToZeroRevertsAndPreservesAllowance() (gas: 119083)\n[PASS] test_transferFromWithoutApprovalReverts() (gas: 60101)\n[PASS] test_transferReturnsTrueEmitsEventAndMovesExactAmount() (gas: 96241)\n[PASS] test_transferToZeroReverts() (gas: 50187)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 73323)\n[PASS] test_zeroTransferFromRequiresNoAllowanceForValidAddresses() (gas: 81493)\n[PASS] test_zeroTransferFromZeroSenderReverts() (gas: 55078)\n[PASS] test_zeroTransferToZeroReverts() (gas: 32974)\nSuite result: ok. 34 passed; 0 failed; 0 skipped; finished in 75.72ms (368.55ms CPU time)\n\nRan 1 test for test/VaultStreet.invariant.t.sol:VaultStreetInvariantTest\n[PASS] invariant_supplyIsFixedAndAllBalancesAreAccountedFor() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| VaultStreetHandler | approve      | 2738  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| VaultStreetHandler | transfer     | 2765  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| VaultStreetHandler | transferFrom | 2689  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 3330673\n  Bound result 1000\n  Bound result 1589\n  Bound result 6850\n  Bound result 4013\n  Bound result 452\n  Bound result 242\n  Bound result 1905\n  Bound result 502\n  Bound result 5676\n  Bound result 0\n  Bound result 412\n  Bound result 0\n  Bound result 0\n  Bound result 25000000000000000000\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 546\n  Bound result 5510\n  Bound result 1\n  Bound result 3124842407\n  Bound result 25000000000000000000\n  Bound result 335\n  Bound result 4\n  Bound result 17000000000000000000\n  Bound result 3980\n  Bound result 711\n  Bound result 100000000000000000000\n  Bound result 3408\n  Bound result 443\n  Bound result 1837\n  Bound result 0\n  Bound result 262\n  Bound result 0\n  Bound result 15\n  Bound result 132861492607344909366543870\n  Bound result 120\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2109\n  Bound result 220692568161760601090191818\n  Bound result 2320\n  Bound result 3\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.22s (1.22s CPU time)\n\nRan 1 test for test/VaultStreet.model.invariant.t.sol:VaultStreetModelInvariantTest\n[PASS]\nVaultStreetModelInvariantTest invariants:\n[PASS] invariant_everyAllowanceMatchesTheModel\n[PASS] invariant_everyBalanceMatchesTheModelAndSumsToSupply\n[PASS] invariant_supplyNeverChanges\n[PASS] invariant_tokenHoldsNoEtherAndMetadataIsFixed\n VaultStreetModelInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------------------+-----------------------+-------+---------+----------╮\n| Contract                | Selector              | Calls | Reverts | Discards |\n+==============================================================================+\n| VaultStreetModelHandler | allowedButOverdrawn   | 1660  | 0       | 0        |\n|-------------------------+-----------------------+-------+---------+----------|\n| VaultStreetModelHandler | approve               | 1567  | 0       | 0        |\n|-------------------------+-----------------------+-------+---------+----------|\n| VaultStreetModelHandler | approveZeroSpender    | 1673  | 0       | 0        |\n|-------------------------+-----------------------+-------+---------+----------|\n| VaultStreetModelHandler | overdrawTransfer      | 1619  | 0       | 0        |\n|-------------------------+-----------------------+-------+---------+----------|\n| VaultStreetModelHandler | overspendAllowance    | 1692  | 0       | 0        |\n|-------------------------+-----------------------+-------+---------+----------|\n| VaultStreetModelHandler | transfer              | 1610  | 0       | 0        |\n|-------------------------+-----------------------+-------+---------+----------|\n| VaultStreetModelHandler | transferFrom          | 1570  | 0       | 0        |\n|-------------------------+-----------------------+-------+---------+----------|\n| VaultStreetModelHandler | transferFromToZero    | 1580  | 0       | 0        |\n|-------------------------+-----------------------+-------+---------+----------|\n| VaultStreetModelHandler | transferFromZeroOwner | 1712  | 0       | 0        |\n|-------------------------+-----------------------+-------+---------+----------|\n| VaultStreetModelHandler | transferToZero        | 1701  | 0       | 0        |\n╰-------------------------+-----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1\n  Bound result 479\n  Bound result 0\n  Bound result 0\n  Bound result 1000000000000000000000000001\n  Bound result 6000\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 315\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 998798044\n  Bound result 6\n  Bound result 4079016292\n  Bound result 4\n  Bound result 0\n  Bound result 11107\n  Bound result 8871\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 0\n  Bound result 20871\n  Bound result 0\n  Bound result 15\n  Bound result 231642832918683122330336581127\n  Bound result 1\n  Bound result 4046334295870510\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 719206529\n  Bound result 120209876281281145568259942\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 9171\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 16.76s (16.76s CPU time)\n\nRan 4 test suites in 16.76s (18.13s CPU time): 49 tests passed, 0 failed, 0 skipped (49 total tests)\n","passed":true},{"durationMs":94,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"VaultStreet.approve(address,uint256)\",\"VaultStreet.transfer(address,uint256)\",\"VaultStreet.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":13,\"README.md\":124,\"foundry.toml\":25,\"src/VaultStreet.sol\":16,\"test/VaultStreet.edge.t.sol\":184,\"test/VaultStreet.invariant.t.sol\":98,\"test/VaultStreet.model.invariant.t.sol\":262,\"test/VaultStreet.t.sol\":466},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"26060593ae2a9990c43acdf8f1b32f21b846432b41282bd6f5785df768c8e161","verifiedTreeHash":"2e18957a9a1e78a2db35df7fbd2353652ddddc0e","verifierVersion":"0.1.0+a6ee6548"},{"checks":[{"durationMs":1145,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.07s\nCompiler run successful!\n","passed":true},{"durationMs":805,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 34 tests for test/VaultStreet.t.sol:VaultStreetTest\n[PASS] testFuzz_approvedTransferAccountsForAllowanceAndBalances(uint256,uint256) (runs: 1000, μ: 167829, ~: 169723)\nLogs:\n  Bound result 2\n  Bound result 2\n\n[PASS] testFuzz_failedTransferFromPreservesAllowance(uint256,uint256) (runs: 1000, μ: 198751, ~: 199031)\nLogs:\n  Bound result 2\n  Bound result 16274300769287201\n\n[PASS] testFuzz_transferAboveAllowanceReverts(uint256,uint256) (runs: 1000, μ: 127998, ~: 128221)\nLogs:\n  Bound result 750325719444148761099486546\n  Bound result 802396521924967774154079956\n\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 1000, μ: 61555, ~: 61876)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913159970747\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 1000, μ: 106053, ~: 106311)\nLogs:\n  Bound result 2126648730\n\n[PASS] test_approvalIsScopedToOwnerAndSpender() (gas: 203782)\n[PASS] test_approveDoesNotRequireTokenBalance() (gas: 78615)\n[PASS] test_approveEmitsEventAndCanReplaceOrRevokeAllowance() (gas: 177588)\n[PASS] test_approveZeroSpenderReverts() (gas: 40274)\n[PASS] test_constructorEmitsMintTransfer() (gas: 14187)\n[PASS] test_create2DeploymentMintsToFactoryInsteadOfTransactionOrigin() (gas: 287331)\n[PASS] test_deployerCannotMoveHolderBalanceWithoutApproval() (gas: 98204)\n[PASS] test_factoryDistributionClaimsAndPoolTransfersDeliverExactAmounts() (gas: 636853)\n[PASS] test_metadataAndEntireInitialSupply() (gas: 122254)\n[PASS] test_nativeEtherTransferReverts() (gas: 45234)\n[PASS] test_noMintBurnAdministrationOrUpgradeEntryPoints() (gas: 914672)\n[PASS] test_revokedApprovalCannotBeSpent() (gas: 120531)\n[PASS] test_runtimeHasNoForbiddenOpcodesAndFitsDeploymentLimit() (gas: 1039951)\n[PASS] test_selfTransferDoesNotChangeBalance() (gas: 54252)\n[PASS] test_selfTransferStillRequiresSufficientBalance() (gas: 35842)\n[PASS] test_transferEntireBalance() (gas: 88714)\n[PASS] test_transferFromCanSpendExactAllowanceOnlyOnce() (gas: 181259)\n[PASS] test_transferFromEmitsTransferAndConsumesFiniteAllowance() (gas: 165057)\n[PASS] test_transferFromEmptyAccountReverts() (gas: 57449)\n[PASS] test_transferFromInfiniteApprovalRemainsInfinite() (gas: 214981)\n[PASS] test_transferFromToSameHolderConsumesAllowanceWithoutChangingBalance() (gas: 108102)\n[PASS] test_transferFromToZeroRevertsAndPreservesAllowance() (gas: 119083)\n[PASS] test_transferFromWithoutApprovalReverts() (gas: 60101)\n[PASS] test_transferReturnsTrueEmitsEventAndMovesExactAmount() (gas: 96241)\n[PASS] test_transferToZeroReverts() (gas: 50187)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 73323)\n[PASS] test_zeroTransferFromRequiresNoAllowanceForValidAddresses() (gas: 81493)\n[PASS] test_zeroTransferFromZeroSenderReverts() (gas: 55078)\n[PASS] test_zeroTransferToZeroReverts() (gas: 32974)\nSuite result: ok. 34 passed; 0 failed; 0 skipped; finished in 45.00ms (223.99ms CPU time)\n\nRan 1 test for test/VaultStreet.invariant.t.sol:VaultStreetInvariantTest\n[PASS] invariant_supplyIsFixedAndAllBalancesAreAccountedFor() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| VaultStreetHandler | approve      | 2738  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| VaultStreetHandler | transfer     | 2765  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| VaultStreetHandler | transferFrom | 2689  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 420\n  Bound result 3330673\n  Bound result 4\n  Bound result 1556\n  Bound result 0\n  Bound result 3831\n  Bound result 28\n  Bound result 2\n  Bound result 1799\n  Bound result 33\n  Bound result 5656\n  Bound result 0\n  Bound result 412\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 0\n  Bound result 95\n  Bound result 0\n  Bound result 770\n  Bound result 5523\n  Bound result 1\n  Bound result 3124842407\n  Bound result 5\n  Bound result 362\n  Bound result 4\n  Bound result 0\n  Bound result 3980\n  Bound result 710\n  Bound result 16\n  Bound result 3707\n  Bound result 4513\n  Bound result 2393\n  Bound result 3\n  Bound result 2\n  Bound result 8\n  Bound result 24576\n  Bound result 228125770413316420263463286\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 586\n  Bound result 638212886\n  Bound result 3714247998\n  Bound result 5512\n  Bound result 3052\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 724.29ms (723.23ms CPU time)\n\nRan 2 test suites in 725.82ms (769.29ms CPU time): 35 tests passed, 0 failed, 0 skipped (35 total tests)\n","passed":true},{"durationMs":54,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"VaultStreet.approve(address,uint256)\",\"VaultStreet.transfer(address,uint256)\",\"VaultStreet.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":13,\"README.md\":124,\"foundry.toml\":25,\"launch.json\":24,\"src/VaultStreet.sol\":16,\"test/VaultStreet.invariant.t.sol\":98,\"test/VaultStreet.t.sol\":466},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"35782affae8776e5c9bb706d0119bdb895889eac59e0d86ee0bfa21d2aa7cf55","verifiedTreeHash":"edfeca4c9978c8b321af08bc3044d497464e3a64","verifierVersion":"0.1.0+a6ee6548"}]}