{"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":"79803f3b-aab4-4794-b76b-e9659d6c4079","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"85290eb7e617dada42c920b8ff2bed5b77c8402ed610a888c191726aab3234a1","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":"1d2e820b66c0de3f3c8d2495265225e82972a90b2e315ccaab1699110a5eef91","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":"f37a9380e8b222ccc16b1436446a0c2de1e2c5202c12e57038368b90c5ecd3d0","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"338b17f8dfef9d4cc0c4e0d81e3453c13ba5e146d9b073448c204e1751c697ef","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":"83779254fe5c7ef23e4db3c4f3adc2111e0606b28e61bc0d20a18b972db6e2be","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":"547e41562a78922af7a53154c6c576e91803a5e562b2a4b22d03cc898b73a009","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"950ac2e67a2f1eccf4e3c22be05d13a61f6d1cee3cc01ed3e5e3c88b2997e644","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"661e02a56daf0a12811aa873aef2f8cf6dda6d28626dbf8274eed92195b7e4c0","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: Rise (RISE).\nToken name: Rise\nToken symbol: RISE\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.\nWhat it does: Token: RISE (RISE), fixed supply 1,000,000,000, 18 decimals, no mint.\nPurpose: a community meme token. Reference: https://x.com/surfcoderepeat/status/2107650558039658980\nContracts: standard ERC-20 with plain transfers. No fees on token transfers (the launch pool's standard trading fee still applies). No owner privileges over user funds, no minting after launch, no upgradeability, no blacklist.\nLaunch: put 90% of supply into the liquidity pool, 0 tokens to the creator wallet.\nSingle job, do NOT ask clarifying questions, pick sane defaults and document them.","parentJobId":null,"planHash":"08242aada4d501400a36481a9b0733f1e2480db05850a48b67b7a0e91d83bdac","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"79803f3b-aab4-4794-b76b-e9659d6c4079","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-870-rise"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52223","feedbackHash":"3dacce796cf791f94527441353c5295a6be0f87d05fa1dd22472fd20004f14ba","nodeKey":"audit_economics","submissionHash":"85290eb7e617dada42c920b8ff2bed5b77c8402ed610a888c191726aab3234a1","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52130","feedbackHash":"3ea0254647c881a64833c177fe1f2a55b79af76fe3c0f78f4ef48a60eed8ab62","nodeKey":"audit_flow","submissionHash":"1d2e820b66c0de3f3c8d2495265225e82972a90b2e315ccaab1699110a5eef91","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52013","feedbackHash":"479d4e3d68d69e1c78c99efb7eb9d57483ee510d0456f902706dd43b7e41c0c0","nodeKey":"audit_judge","submissionHash":"f37a9380e8b222ccc16b1436446a0c2de1e2c5202c12e57038368b90c5ecd3d0","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52216","feedbackHash":"b91f735486083df2cabf6cf9587953ab621b3ae74a552b8ed9bb753bb1b47914","nodeKey":"audit_math","submissionHash":"338b17f8dfef9d4cc0c4e0d81e3453c13ba5e146d9b073448c204e1751c697ef","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52214","feedbackHash":"5b5670e6464a40a6a4430196d3eac1396f94272c892c1398c14b875b3225e797","nodeKey":"audit_permissions","submissionHash":"83779254fe5c7ef23e4db3c4f3adc2111e0606b28e61bc0d20a18b972db6e2be","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51171","feedbackHash":"7126fdcef6b59950ac90d4253523e907c99e1f5cab457b663903564257cdacf7","nodeKey":"build_contract_project","submissionHash":"547e41562a78922af7a53154c6c576e91803a5e562b2a4b22d03cc898b73a009","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52146","feedbackHash":"226fd44b701a63d4ae60ec81a8f04da6d69b49c4020e12a15389f02f96cfbd6a","nodeKey":"manifest","submissionHash":"950ac2e67a2f1eccf4e3c22be05d13a61f6d1cee3cc01ed3e5e3c88b2997e644","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51747","feedbackHash":"1d102aeca590cbfc9d62463ebbfa8c7ee4adb7909647c8dcabfdaf2037c8e453","nodeKey":"write_foundry_tests","submissionHash":"661e02a56daf0a12811aa873aef2f8cf6dda6d28626dbf8274eed92195b7e4c0","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"6bf4215b0c55a6e8b7fc903f0507dd2ec618d85ded2b9367d9b958a41573ea69","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"1c29c7c6e4cf57eb","findings":[{"citation":"resolved","description":"Outside the assigned control-flow area; test-only dependency, no effect on the deployed Rise bytecode. lib/DEPENDENCIES.md says forge-std v1.9.7 is 'unmodified' and README says 'Vendored checksums matched', and both direct readers to `sha256sum --check lib/SHA256SUMS`. The recorded hashes are those of upstream v1.9.7, but seven committed files (StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol) were reflowed by `forge fmt` (line_length 120): e.g. Vm.sol `getDeployment(...)` and `parseJsonAddressArray(...)` declarations are joined onto single lines, console.sol's CONSOLE_ADDRESS constant and staticcall block are collapsed. Semantics appear unchanged, but the provenance check the docs advertise fails, so a verifier cannot confirm the vendored test library is upstream code from the checksum file.","line":18,"path":"lib/SHA256SUMS","reproduction":"From the repository root at this commit: `sha256sum --check lib/SHA256SUMS` -> expected: all OK (as README/DEPENDENCIES.md claim); actual: 'lib/forge-std/src/Vm.sol: FAILED' (computed a1b1c829...a15 vs recorded 9068805b...cb1) plus 6 more FAILED, 'WARNING: 7 computed checksums did NOT match'. `curl https://raw.githubusercontent.com/foundry-rs/forge-std/v1.9.7/src/Vm.sol | sha256sum` gives 9068805b...cb1 (the recorded value), confirming the committed file differs from upstream. Fix: restore the seven files byte-for-byte from v1.9.7 (and exclude lib/ from forge fmt), or regenerate SHA256SUMS and drop the 'unmodified' claim.","severity":"info","snippet":"9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1  lib/forge-std/src/Vm.sol","title":"lib/SHA256SUMS does not match the committed forge-std files (vendored forge-std was reformatted, contrary to 'unmodified' claim)"}],"hash":"1d2e820b66c0de3f3c8d2495265225e82972a90b2e315ccaab1699110a5eef91","nodeId":"cd5c1054-1850-4617-a5c7-7f6f425a57a4","outcome":"completed","summary":"I found no defects in Rise's control flow. The results are in `.imd-findings.json`: one info-level note outside my area and a coverage row for each of the three entry points. I changed no tracked files.\n\n**What I checked** (the Senior Auditor's Mindset, then the Execution Trace, Periphery and First Principles guides):\n- **The contract:** `src/Rise.sol` is a bare OpenZeppelin v5.0.2 ERC-20. Its constructor mints `1_000_000_000 * 10**18` to `msg.sender`, which is the factory. It has no owner or roles, no fee branches, no outside calls, and no mint or burn reachable after deployment.\n- **Within a transaction:**\n  - `transferFrom` spends the allowance before it moves the balance, and any revert undoes both.\n  - The unlimited-allowance value (`type(uint256).max`) only skips reducing the allowance. It never skips the balance or receiver checks.\n  - Transfers to or from `address(0)` revert, so tokens can't be burned that way.\n  - A transfer to yourself keeps your balance correct.\n  - Every amount moves exactly, so the launch transfers (factory → distributor, distributor → claimant, both directions through the PoolManager) arrive whole.\n- **Across transactions:** there are no settings to change, no multi-step operations and no roles. The approve front-running race is ordinary ERC-20 behaviour and the README already documents it.\n- **Supporting code:** the five vendored OpenZeppelin files match their recorded checksums and the v5.0.2 code. `Context._msgSender` simply returns `msg.sender`.\n- **Static analysis:** aderyn's large-numeric-literal warning at `src/Rise.sol:12` is about style only, not a defect.\n- **Tests:** `forge test --offline` passed all 32 tests, including both invariant checks.\n\n**Finding (info, outside my area, test-only):** `sha256sum --check lib/SHA256SUMS` fails for 7 forge-std files. They were reformatted with `forge fmt`, but the checksums recorded are upstream v1.9.7's; I confirmed that by fetching upstream `Vm.sol` and `console.sol`. This contradicts the docs' claims that the files are \"unmodified\" and the checksums matched. It doesn't change the deployed bytecode.\n\n**Coverage:** all three entry points (`approve`, `transfer`, `transferFrom`) hold. I added rows for the supply invariant, the exact launch transfers, the constructor's roles and starting balances, and the vendored dependencies; all hold.\n\n**Not covered:** I couldn't run the protected admission test here, because it needs the factory, Uniswap v4 and launch inputs that aren't in this repo. The other specialists' guides were outside my assignment.","treeHash":null,"usage":{"cachedInputTokens":557495,"inputTokens":24,"model":"claude-opus-5-5","outputTokens":6873,"runtime":"claude","turns":12,"wallClockMs":116794}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"47f3603854a893a3","findings":[{"citation":"resolved","description":"lib/DEPENDENCIES.md says SHA256SUMS records every vendored file and that `sha256sum --check lib/SHA256SUMS` verifies them, but seven forge-std files differ from the recorded hashes. The OpenZeppelin files that compile into Rise all verify, so the deployed token is unaffected; only the provenance claim for test-only forge-std is wrong. Outside the assigned math area, reported as a note.","line":18,"path":"lib/SHA256SUMS","reproduction":"From repo root: `sha256sum --check lib/SHA256SUMS` -> FAILED for lib/forge-std/src/{StdAssertions,StdJson,StdToml,Vm,console}.sol and interfaces/{IERC7540,IMulticall3}.sol ('7 computed checksums did NOT match'). E.g. Vm.sol recorded 9068805b...2cb1, actual a1b1c829...2a15. Expected: all OK. Fix: regenerate SHA256SUMS or restore the exact v1.9.7 files (lib/ edits are author-side).","severity":"info","snippet":"9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1  lib/forge-std/src/Vm.sol","title":"lib/SHA256SUMS does not match 7 vendored forge-std files (test-only; out of math area)"}],"hash":"338b17f8dfef9d4cc0c4e0d81e3453c13ba5e146d9b073448c204e1751c697ef","nodeId":"2dd2b147-b98a-47da-93be-060cc466c3be","outcome":"completed","summary":"I found no math defects in Rise. The only thing I reported is one info-level note outside the math area. Results are in `.imd-findings.json`, and I changed no other files.\n\n**What the token is:** `src/Rise.sol` is a plain OpenZeppelin v5.0.2 `ERC20`. Its constructor mints `1_000_000_000 * 10**18` to the deployer once, and there are no other functions. The OpenZeppelin files match their recorded checksums, so the library code is unmodified. The build succeeds and all 32 existing tests pass, including the invariant test.\n\n**What I checked against the Math Precision, Boundary and Numerical Gap guides:**\n- **Supply:** the amount is a compile-time constant equal to exactly 1e27, far below the uint256 limit. Aderyn's \"large numeric literal\" warning is just this intended value.\n- **Transfer math:** a transfer larger than the sender's balance reverts. OpenZeppelin skips overflow checks on the subtraction and addition, which is safe because no balance can exceed the fixed 1e27 supply. Zero-amount and self-transfers keep balances unchanged, and there is no fee.\n- **Allowance math:** an unlimited allowance is never reduced. Otherwise the call reverts before the unchecked subtraction if the allowance is too small.\n- **Launch split:** the 10% swarm share comes to exactly 1e26 and the 90% pool share to exactly 9e26, with nothing left over. That matches 0 tokens to the creator. 9e26 also fits within the 128-bit amounts the Uniswap v4 pool uses.\n\n**Coverage:** `approve`, `transfer` and `transferFrom` are all marked `holds`. I also added rows for the supply, launch-split and total-supply invariants.\n\n**The note:** running `sha256sum --check lib/SHA256SUMS` fails for 7 forge-std files, although the dependency notes say they are unmodified. Only the tests use forge-std, so the deployed token isn't affected. The fix is to regenerate the checksums or restore the original v1.9.7 files.\n\n**Not covered:** there is no `launch.json` yet, so I couldn't check the manifest's price or economics fields. I reasoned from the brief's numbers instead.","treeHash":null,"usage":{"cachedInputTokens":362697,"inputTokens":16,"model":"claude-opus-5-5","outputTokens":3675,"runtime":"claude","turns":8,"wallClockMs":47617}},{"artifacts":[],"attempt":1,"bundleHash":"c0345b81fd581ee473116bbf248e0c7c7f37c80b8a467066b8ca98647a1104b0","device":"194b47a372650d59","findings":[],"hash":"547e41562a78922af7a53154c6c576e91803a5e562b2a4b22d03cc898b73a009","nodeId":"6582a7a2-7612-4026-8196-81c080539c12","outcome":"completed","summary":"Implemented [Rise.sol](/home/imd-worker/.identitymd/work/79803f3b-aab4-4794-b76b-e9659d6c4079/6582a7a2-7612-4026-8196-81c080539c12/src/Rise.sol): one billion RISE, 18 decimals, minted once to the deployer, with no fees or administrative powers.\n\nVendored dependencies, added success/failure and invariant tests, and documented launch parameters and the 90% pool / 10% network / 0% creator allocation.\n\n`forge build`, all 32 reported tests, and `forge fmt --check` pass, including offline verification with an empty environment.\n\nNo deployment occurred; full Uniswap integration remains the network’s admission check.","treeHash":"f798d7807ccbdd04f9fb4744751a96ff85fab44e","usage":{"cachedInputTokens":553728,"inputTokens":61543,"model":"gpt-6-astra","outputTokens":16164,"runtime":"codex","turns":6,"wallClockMs":426494}},{"artifacts":[],"attempt":1,"bundleHash":"0ca2f0904245326331dc245ea673ec17ed0a9ec137283f6152aa29c1c4fd432b","device":"e15fc098eeb318a3","findings":[],"hash":"661e02a56daf0a12811aa873aef2f8cf6dda6d28626dbf8274eed92195b7e4c0","nodeId":"0de66f37-0d17-4675-8675-0e8244856827","outcome":"completed","summary":"Added 13 tests covering allowance boundaries, revocation, isolation, failed-call rollback, and arbitrary recipients. Expanded stateful invariants to nine actions.\n\nOffline verification passed:\n- `forge build`\n- `forge test`: **45 passed, 0 failed**\n- **24,576 invariant calls**, no unexpected reverts\n\nOnly `test/` changed. Assumptions and external integration limits are documented in `test/README.md`. No reproducible implementation defects found.","treeHash":"85aa82c985a9009090fad7159842b989865ccaab","usage":{"cachedInputTokens":1216896,"inputTokens":84305,"model":"gpt-6-astra","outputTokens":12454,"runtime":"codex","turns":5,"wallClockMs":360116}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"6b47d1bf92391c22","findings":[],"hash":"83779254fe5c7ef23e4db3c4f3adc2111e0606b28e61bc0d20a18b972db6e2be","nodeId":"5fba4408-cf18-4664-9269-d22d45f01fa6","outcome":"completed","summary":"I found no permission defects in `src/Rise.sol`, so `.imd-findings.json` has an empty findings list and a coverage row for each entry point. That is the only file I wrote; no source or config was touched.\n\n**What I checked**\n- **The contract:** `src/Rise.sol` is a plain OpenZeppelin v5.0.2 ERC-20. Its only code is a constructor that mints `1_000_000_000 * 10 ** 18` once to `msg.sender` (the factory). There is no owner, role, initializer, `receive` or `fallback`, and nothing that changes transfer behaviour.\n- **The OpenZeppelin files it uses:** all five match the checksums in `lib/SHA256SUMS`, so the ERC-20 code is the unmodified library.\n- **Access control:** no function is restricted, and none needs to be. `approve` only sets the caller's own allowance. `transfer` only moves the caller's balance. `transferFrom` requires an allowance from the owner and has no bypass.\n- **Trust gap and asymmetry:** no one holds any power after deployment. Nobody can mint, burn, pause, blacklist, freeze, seize, upgrade, or charge a fee. The launch addresses (factory, pool manager, distributor) get the same rules as every other holder, so the launch transfers move exactly the amounts they say.\n- **Static analysis:** Aderyn's \"large numeric literal\" warning at `src/Rise.sol:12` points at the intended supply constant, so it isn't a defect.\n- **Tests:** `forge test` passes all 32 tests in the 3 suites, including the invariant run (8,192 calls, 0 reverts).\n\n**Coverage:** `approve`, `transfer` and `transferFrom` each behave as intended. I also checked two invariants: no privileged roles exist after deployment, and the supply is fixed and minted to the factory. Both hold. I did not run the protected launch-flow test in `.imd/reads/protected/`, because it needs v4-core files that aren't in the repository.\n\n**Outside my area:** 7 forge-std files in `lib/forge-std/src` don't match `lib/SHA256SUMS`. forge-std is only used by tests and doesn't affect the deployed token, so I didn't file it as a finding. Still, the checksum file is out of date and should be regenerated.","treeHash":null,"usage":{"cachedInputTokens":282807,"inputTokens":14,"model":"claude-opus-5-5","outputTokens":2514,"runtime":"claude","turns":7,"wallClockMs":31195}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"f20ec62b0213db3f","findings":[{"citation":"resolved","description":"lib/DEPENDENCIES.md tells the offline verifier to run `sha256sum --check lib/SHA256SUMS`, and README.md:26 states 'Vendored checksums matched'. In the committed tree (HEAD c343d9b) that check fails for lib/forge-std/src/{StdAssertions,StdJson,StdToml,Vm,console,interfaces/IERC7540,interfaces/IMulticall3}.sol. I downloaded the v1.9.7 archive named in DEPENDENCIES.md (its SHA-256 45157353... matches the recorded value) and diffed: the recorded sums are the pristine v1.9.7 bytes, while the committed files were re-wrapped by `forge fmt` at the project's 120-column setting (multi-line function signatures joined onto one line). Stripping all whitespace, the files are token-identical, so no behaviour changed and the five vendored OpenZeppelin v5.0.2 files are byte-identical to upstream. Impact is limited to provenance: the only offline integrity record the project ships cannot be used to confirm that the test dependency is unmodified, and the README's verification claim is untrue for what was committed. forge-std is test-only and does not enter the deployed bytecode. Fix: either restore the seven files from the v1.9.7 archive (and exclude lib/ from `forge fmt`, e.g. via [fmt] ignore in foundry.toml, which is a config change the author must make) or regenerate lib/SHA256SUMS from the committed bytes and drop the 'unmodified' wording in DEPENDENCIES.md. Note the author may not touch foundry.toml under the task rules, so restoring the pristine files is the path that needs no config change.","line":18,"path":"lib/SHA256SUMS","reproduction":"State: repository at HEAD (c343d9b), no network. Input: `sha256sum --check lib/SHA256SUMS` from the repository root. Expected (per README.md:26 and lib/DEPENDENCIES.md:14-15): every line reports OK. Actual: 'sha256sum: WARNING: 7 computed checksums did NOT match' — lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol all FAILED. Concretely `sha256sum lib/forge-std/src/Vm.sol` prints a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15 while line 18 of lib/SHA256SUMS records 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1 (the upstream v1.9.7 digest). `git show HEAD:lib/forge-std/src/Vm.sol | sha256sum` gives the same a1b1c8... value, so the mismatch is committed, not a local artefact.","severity":"low","snippet":"9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1  lib/forge-std/src/Vm.sol","title":"Committed lib/SHA256SUMS does not match seven committed forge-std files; README's 'Vendored checksums matched' is false in this tree"}],"hash":"85290eb7e617dada42c920b8ff2bed5b77c8402ed610a888c191726aab3234a1","nodeId":"bfa51fbc-b3db-4540-bc22-93ae80679c20","outcome":"completed","summary":"Review complete. `.imd-findings.json` is written and validated (snippet matches the tree; all three listed entry points have coverage rows).\n\n## Summary\n\n**Scope covered (Economic Security, Invariant, Flow Gap guides):** `src/Rise.sol` is a 13-line wrapper over OpenZeppelin v5.0.2 `ERC20`, which I confirmed byte-identical to upstream. I traced every mutating entry point (`approve`, `transfer`, `transferFrom`) through `_update`/`_approve`/`_spendAllowance` against each failure mode in my three guides, and substantiated the `holds` verdicts with a scratch Foundry suite (`test/scratch/EconReview.t.sol`, 6 tests incl. 512-run fuzz, all passing) plus the project's existing 32 tests.\n\n**What holds:**\n- Supply is exactly 1e27 minor units, minted once to `msg.sender`; no mint/burn/owner/pause/upgrade selector, no `receive`/`fallback`.\n- `sum(balances) == totalSupply` under every path; sentinel `address(0)` calls revert rather than silently succeed; finite allowances decrement exactly, `uint256.max` stays infinite.\n- The launch flows (10% → distributor, 90% → pool, claims, buy/sell through the PoolManager) move exactly what they say — no fee, hook, external call or dependency for a flow-gap seam to form across. 90% + 10% = 100%, so `remainderTo` receives only seed-rounding dust, which the README already discloses.\n\n**One finding (low, outside my area but concrete):** the committed `lib/SHA256SUMS` fails for seven forge-std files because they were re-wrapped by `forge fmt` after the sums were recorded; `sha256sum --check lib/SHA256SUMS` reports 7 mismatches, contradicting README line 26's \"Vendored checksums matched\". Whitespace-only, test-only — provenance, not behaviour. Fix is to restore the pristine v1.9.7 files (no config change needed) or regenerate the sums.\n\n**Not reached / limits:** no `launch.json` exists yet, so manifest-vs-constructor checks are deferred to that step; the protected harness needs the network's v4/factory support contracts, which aren't in this tree, so I verified the ERC-20 legs it exercises rather than running it. Static-analysis leads (aderyn large-literal) were checked and are cosmetic.","treeHash":null,"usage":{"cachedInputTokens":1508161,"inputTokens":53,"model":"claude-fable-5-1","outputTokens":16406,"runtime":"claude","turns":28,"wallClockMs":242547}},{"artifacts":[],"attempt":1,"bundleHash":"adfc028dc21d16975bfb3b60deef3d7b84495893b3284c7dbae02d26ea6afc48","device":"e58e34e801414475","findings":[],"hash":"950ac2e67a2f1eccf4e3c22be05d13a61f6d1cee3cc01ed3e5e3c88b2997e644","nodeId":"64e19b81-8435-4c00-9fc9-3db8394d6717","outcome":"completed","summary":"Created [launch.json](/root/.identitymd/work/79803f3b-aab4-4794-b76b-e9659d6c4079/64e19b81-8435-4c00-9fc9-3db8394d6717/launch.json) matching Rise’s constructor, exact supply, required economics, and paired currency. Documented defaults: 0.3% pool fee and tick spacing 60.\n\nSchema and constructor ABI checks passed. Offline `forge build` succeeded; `forge test` passed all 32 tests. Only `launch.json` is changed for submission.","treeHash":"8d73a46c65b2e014cdb05568205ba1de9b653825","usage":{"cachedInputTokens":252032,"inputTokens":27754,"model":"gpt-6-astra","outputTokens":3690,"runtime":"codex","turns":3,"wallClockMs":117024}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"95e219c7eba8a53f","findings":[{"citation":"resolved","description":"The integrity check documented in lib/DEPENDENCIES.md:14-15 fails against the supplied tree, contradicting README.md's claim that vendored checksums matched. Seven test-only forge-std files differ from their recorded digests. All five OpenZeppelin Solidity dependencies used by Rise pass the checksum check, so this finding establishes a broken dependency-integrity check, not a deployed-token vulnerability. This merges the economics, flow, and math specialists' reports of the same root cause. The dependency owner should reconcile the recorded hashes with the intended vendored files and make the provenance documentation accurate; no protected dependency or configuration files were changed in this review.","line":18,"path":"lib/SHA256SUMS","reproduction":"State: supplied committed tree at b2fd176, with no source or dependency edits. From the repository root, run `sha256sum --check lib/SHA256SUMS`. Expected: every recorded file reports OK and exit status 0, as the dependency documentation and README claim. Actual: exit status 1 and 'WARNING: 7 computed checksums did NOT match'; FAILED files are lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, and interfaces/IMulticall3.sol. For example, `sha256sum lib/forge-std/src/Vm.sol` returns a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15, differing from line 18's 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1. All seven mismatching files were compared byte-for-byte with `git show HEAD:<path>` and match the committed versions. The OpenZeppelin files all report OK.","severity":"low","snippet":"9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1  lib/forge-std/src/Vm.sol","title":"Vendored dependency checksum verification fails for seven forge-std files"}],"hash":"f37a9380e8b222ccc16b1436446a0c2de1e2c5202c12e57038368b90c5ecd3d0","nodeId":"05332f86-9a2d-4d9f-bc00-6342f1fd027e","outcome":"completed","summary":"Saved [.imd-findings.json](/root/.identitymd/work/79803f3b-aab4-4794-b76b-e9659d6c4079/05332f86-9a2d-4d9f-bc00-6342f1fd027e/.imd-findings.json).\n\n- One reproduced low-severity checksum finding; three duplicates merged.\n- All three token entry points hold.\n- 45 Foundry tests and formatting passed.\n- Protected pool integration remains unverified because dependencies and launch inputs are absent.\n\nSource and configuration files remain unchanged.","treeHash":null,"usage":{"cachedInputTokens":867584,"inputTokens":105689,"model":"gpt-6-astra","outputTokens":7706,"runtime":"codex","turns":5,"wallClockMs":226502}}],"verification":[{"checks":[{"durationMs":1268,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.16s\nCompiler run successful!\n","passed":true},{"durationMs":3579,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 3 tests for test/LaunchFlow.t.sol:LaunchFlowTest\n[PASS] test_create2UsesEmptyConstructorArgumentsAndMintsToFactory() (gas: 55011)\n[PASS] test_duplicateCreate2FailsAndDoesNotRemint() (gas: 55983)\n[PASS] test_launchAllocationClaimsAndPoolTokenLegsAreExact() (gas: 357431)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 14.27ms (691.58µs CPU time)\n\nRan 28 tests for test/Rise.t.sol:RiseTest\n[PASS] testFuzz_delegatedTransfer(uint256,uint256) (runs: 512, μ: 157622, ~: 158466)\nLogs:\n  Bound result 181\n  Bound result 420828069\n\n[PASS] testFuzz_overspendReverts(uint256,uint256) (runs: 512, μ: 120739, ~: 120651)\nLogs:\n  Bound result 420828069\n  Bound result 181\n\n[PASS] testFuzz_transferConservesSupply(uint256,uint256) (runs: 512, μ: 170602, ~: 172061)\nLogs:\n  Bound result 530137764556860830570898387\n  Bound result 408695185571763768244588876\n\n[PASS] test_approveEmitsEventAndDoesNotMoveFunds() (gas: 84107)\n[PASS] test_approveReplacesAndCanRevokeAllowance() (gas: 150625)\n[PASS] test_approveZeroSpenderReverts() (gas: 37767)\n[PASS] test_constructorEmitsSingleMintToActualDeployer() (gas: 23926)\n[PASS] test_contractRecipientIsNotCalled() (gas: 178022)\n[PASS] test_deployerAndStrangerHaveNoAdministrativeEntryPoints() (gas: 1041822)\n[PASS] test_entireSupplyAndSmallestUnitTransfer() (gas: 134596)\n[PASS] test_infiniteAllowanceRemainsUnchanged() (gas: 122006)\n[PASS] test_metadataAndEntireSupplyBelongToDeployer() (gas: 85261)\n[PASS] test_nativeCurrencyIsRejected() (gas: 36833)\n[PASS] test_runtimeHasNoForbiddenOpcodes() (gas: 785419)\n[PASS] test_selfTransferPreservesBalance() (gas: 51431)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 88989)\n[PASS] test_transferFromConsumesExactAllowanceAndEmitsTransfer() (gas: 218040)\n[PASS] test_transferFromInsufficientAllowanceIsAtomic() (gas: 108920)\n[PASS] test_transferFromInsufficientBalanceRestoresAllowance() (gas: 104259)\n[PASS] test_transferFromRequiresAllowanceEvenWhenCallerIsHolder() (gas: 33686)\n[PASS] test_transferFromToSelfStillConsumesAllowance() (gas: 100639)\n[PASS] test_transferFromToZeroRestoresAllowance() (gas: 111726)\n[PASS] test_transferFromZeroAmountNeedsNoAllowance() (gas: 56927)\n[PASS] test_transferFromZeroSenderRevertsEvenForZeroAmount() (gas: 33264)\n[PASS] test_transferInsufficientBalanceRevertsWithoutMutation() (gas: 61273)\n[PASS] test_transferMaximumUintReverts() (gas: 40463)\n[PASS] test_transferToZeroRevertsIncludingZeroAmount() (gas: 72260)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 66533)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 14.28ms (48.58ms CPU time)\n\nRan 1 test for test/RiseInvariant.t.sol:RiseInvariantTest\n[PASS]\nRiseInvariantTest invariants:\n[PASS] invariant_allowancesMatchModelIncludingFailedSpends\n[PASS] invariant_supplyAndBalancesMatchModel\n RiseInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+--------------+-------+---------+----------╮\n| Contract    | Selector     | Calls | Reverts | Discards |\n+=========================================================+\n| RiseHandler | approve      | 2738  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| RiseHandler | transfer     | 2779  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| RiseHandler | transferFrom | 2675  | 0       | 0        |\n╰-------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 5\n  Bound result 0\n  Bound result 1000000000000000000000000000\n  Bound result 1\n  Bound result 1623\n  Bound result 0\n  Bound result 0\n  Bound result 133\n  Bound result 0\n  Bound result 1\n  Bound result 13062902417413863884\n  Bound result 4\n  Bound result 15\n  Bound result 5971\n  Bound result 0\n  Bound result 221\n  Bound result 2944\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4319\n  Bound result 1622\n  Bound result 7558\n  Bound result 19\n  Bound result 0\n  Bound result 599290589\n  Bound result 1757\n  Bound result 0\n  Bound result 11\n  Bound result 4117\n  Bound result 10\n  Bound result 0\n  Bound result 10\n  Bound result 906\n  Bound result 8\n  Bound result 31\n  Bound result 963204426014882706149178190\n  Bound result 114\n  Bound result 1201\n  Bound result 0\n  Bound result 51\n  Bound result 9\n  Bound result 1\n  Bound result 5952\n  Bound result 0\n  Bound result 539\n  Bound result 488\n  Bound result 396959110739346667163966807\n  Bound result 56\n  Bound result 5918\n  Bound result 201\n  Bound result 373974737355127656593563416\n  Bound result 15\n  Bound result 111\n  Bound result 3481\n  Bound result 12\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.48s (3.48s CPU time)\n\nRan 3 test suites in 3.49s (3.51s CPU time): 32 tests passed, 0 failed, 0 skipped (32 total tests)\n","passed":true},{"durationMs":49,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Rise.approve(address,uint256)\",\"Rise.transfer(address,uint256)\",\"Rise.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":141,\"foundry.toml\":23,\"remappings.txt\":2,\"src/Rise.sol\":14,\"test/LaunchFlow.t.sol\":90,\"test/Rise.t.sol\":323,\"test/RiseInvariant.t.sol\":101},\"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":237,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/Rise.sol:12: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"547e41562a78922af7a53154c6c576e91803a5e562b2a4b22d03cc898b73a009","verifiedTreeHash":"f798d7807ccbdd04f9fb4744751a96ff85fab44e","verifierVersion":"0.1.0+7471272e"},{"checks":[{"durationMs":1824,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.71s\nCompiler run successful!\n","passed":true},{"durationMs":10111,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 3 tests for test/LaunchFlow.t.sol:LaunchFlowTest\n[PASS] test_create2UsesEmptyConstructorArgumentsAndMintsToFactory() (gas: 55011)\n[PASS] test_duplicateCreate2FailsAndDoesNotRemint() (gas: 55983)\n[PASS] test_launchAllocationClaimsAndPoolTokenLegsAreExact() (gas: 357431)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 884.37µs (606.70µs CPU time)\n\nRan 11 tests for test/RiseAllowanceBoundary.t.sol:RiseAllowanceBoundaryTest\n[PASS] testFuzz_allowancesAreScopedToOwnerAndSpender(uint256,uint256) (runs: 1000, μ: 444028, ~: 444277)\nLogs:\n  Bound result 119268027122187159622655841\n  Bound result 69386440379325162311184017\n\n[PASS] testFuzz_approvalIsReplacementAndIdempotent(uint256,uint256) (runs: 1000, μ: 162197, ~: 162300)\n[PASS] testFuzz_balanceFailurePreservesApprovalForRetry(uint256,uint256,bool) (runs: 1000, μ: 310512, ~: 310546)\nLogs:\n  Bound result 6153\n  Bound result 826074470\n\n[PASS] testFuzz_directTransferDoesNotSpendOrMoveApprovals(uint256,uint256) (runs: 1000, μ: 244484, ~: 244828)\nLogs:\n  Bound result 315198382884731711896307635\n\n[PASS] testFuzz_exhaustedAllowanceCannotBeReplayed(uint256) (runs: 1000, μ: 214328, ~: 214096)\nLogs:\n  Bound result 2\n\n[PASS] testFuzz_zeroDelegatedTransferEmitsEventAndPreservesApproval(uint256) (runs: 1000, μ: 127248, ~: 127498)\n[PASS] test_approvedSelfTransferCannotExceedBalance() (gas: 163716)\n[PASS] test_infiniteApprovalCanBeReducedAndRevoked() (gas: 353184)\n[PASS] test_maximumFiniteAllowanceIsNotInfinite() (gas: 226603)\n[PASS] test_zeroApprovalToZeroSpenderStillReverts() (gas: 105765)\n[PASS] test_zeroDelegatedTransferToZeroCannotBurnOrConsumeApproval() (gas: 119421)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 113.42ms (652.20ms CPU time)\n\nRan 30 tests for test/Rise.t.sol:RiseTest\n[PASS] testFuzz_anyNonzeroRecipientCanReceiveDelegatedTransfer(address,uint256) (runs: 1000, μ: 154814, ~: 155486)\nLogs:\n  Bound result 4163\n  Bound result 9000\n\n[PASS] testFuzz_anyNonzeroRecipientReceivesExactAmount(address,uint256) (runs: 1000, μ: 96036, ~: 96384)\nLogs:\n  Bound result 387622619533369122726561010320123994898940168426\n  Bound result 44210101803317774597816999\n\n[PASS] testFuzz_delegatedTransfer(uint256,uint256) (runs: 1000, μ: 157630, ~: 158449)\nLogs:\n  Bound result 334530006306949282480773474\n  Bound result 51473968754842466584325747999068133702855303090288790593787124508\n\n[PASS] testFuzz_overspendReverts(uint256,uint256) (runs: 1000, μ: 120309, ~: 120705)\nLogs:\n  Bound result 12836505963042646192959560\n  Bound result 641476794505088000439146335171483101454370481212620\n\n[PASS] testFuzz_transferConservesSupply(uint256,uint256) (runs: 1000, μ: 170175, ~: 172061)\nLogs:\n  Bound result 12836505963042646192959560\n  Bound result 10899944858517297318405295\n\n[PASS] test_approveEmitsEventAndDoesNotMoveFunds() (gas: 84107)\n[PASS] test_approveReplacesAndCanRevokeAllowance() (gas: 150625)\n[PASS] test_approveZeroSpenderReverts() (gas: 37767)\n[PASS] test_constructorEmitsSingleMintToActualDeployer() (gas: 23949)\n[PASS] test_contractRecipientIsNotCalled() (gas: 178022)\n[PASS] test_deployerAndStrangerHaveNoAdministrativeEntryPoints() (gas: 1041822)\n[PASS] test_entireSupplyAndSmallestUnitTransfer() (gas: 134596)\n[PASS] test_infiniteAllowanceRemainsUnchanged() (gas: 122006)\n[PASS] test_metadataAndEntireSupplyBelongToDeployer() (gas: 85261)\n[PASS] test_nativeCurrencyIsRejected() (gas: 36833)\n[PASS] test_runtimeHasNoForbiddenOpcodes() (gas: 785419)\n[PASS] test_selfTransferPreservesBalance() (gas: 51431)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 88989)\n[PASS] test_transferFromConsumesExactAllowanceAndEmitsTransfer() (gas: 218040)\n[PASS] test_transferFromInsufficientAllowanceIsAtomic() (gas: 108920)\n[PASS] test_transferFromInsufficientBalanceRestoresAllowance() (gas: 104259)\n[PASS] test_transferFromRequiresAllowanceEvenWhenCallerIsHolder() (gas: 33686)\n[PASS] test_transferFromToSelfStillConsumesAllowance() (gas: 100639)\n[PASS] test_transferFromToZeroRestoresAllowance() (gas: 111726)\n[PASS] test_transferFromZeroAmountNeedsNoAllowance() (gas: 56927)\n[PASS] test_transferFromZeroSenderRevertsEvenForZeroAmount() (gas: 33264)\n[PASS] test_transferInsufficientBalanceRevertsWithoutMutation() (gas: 61273)\n[PASS] test_transferMaximumUintReverts() (gas: 40463)\n[PASS] test_transferToZeroRevertsIncludingZeroAmount() (gas: 72260)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 66533)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 113.42ms (558.49ms CPU time)\n\nRan 1 test for test/RiseInvariant.t.sol:RiseInvariantTest\n[PASS]\nRiseInvariantTest invariants:\n[PASS] invariant_allowancesMatchModelIncludingFailedSpends\n[PASS] invariant_supplyAndBalancesMatchModel\n RiseInvariantTest invariants (runs: 256, calls: 24576, reverts: 0)\n\n╭-------------+-------------------------+-------+---------+----------╮\n| Contract    | Selector                | Calls | Reverts | Discards |\n+====================================================================+\n| RiseHandler | approve                 | 2711  | 0       | 0        |\n|-------------+-------------------------+-------+---------+----------|\n| RiseHandler | fullBalanceRoundTrip    | 2767  | 0       | 0        |\n|-------------+-------------------------+-------+---------+----------|\n| RiseHandler | rejectDelegatedTransfer | 2763  | 0       | 0        |\n|-------------+-------------------------+-------+---------+----------|\n| RiseHandler | rejectTransfer          | 2673  | 0       | 0        |\n|-------------+-------------------------+-------+---------+----------|\n| RiseHandler | rejectZeroSpender       | 2798  | 0       | 0        |\n|-------------+-------------------------+-------+---------+----------|\n| RiseHandler | revokeAndAttemptSpend   | 2683  | 0       | 0        |\n|-------------+-------------------------+-------+---------+----------|\n| RiseHandler | spendApproved           | 2689  | 0       | 0        |\n|-------------+-------------------------+-------+---------+----------|\n| RiseHandler | transfer                | 2754  | 0       | 0        |\n|-------------+-------------------------+-------+---------+----------|\n| RiseHandler | transferFrom            | 2738  | 0       | 0        |\n╰-------------+-------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 200000000000000000000000000\n  Bound result 95\n  Bound result 144394702085656500398948069\n  Bound result 61\n  Bound result 79706399200060590142125132\n  Bound result 8077\n  Bound result 244\n  Bound result 5421974\n  Bound result 37651193600484721137065664\n  Bound result 37747613170415143181552554637904906007866851175365851181032472052305598229622\n  Bound result 2000000000000000000\n  Bound result 1460658042991659414835775340717\n  Bound result 0\n  Bound result 18\n  Bound result 0\n  Bound result 0\n  Bound result 9927\n  Bound result 12\n  Bound result 11015711375284896084387272738457505145852833347\n  Bound result 24870415586840858815831005643783688680\n  Bound result 10151\n  Bound result 2601129\n  Bound result 11622\n  Bound result 100000000000000000000000000\n  Bound result 234\n  Bound result 1556\n  Bound result 5\n  Bound result 1\n  Bound result 8\n  Bound result 49374\n  Bound result 36865\n  Bound result 9812\n  Bound result 43532647419355900512441256\n  Bound result 480\n  Bound result 1630\n  Bound result 12\n  Bound result 3323\n  Bound result 1000000000000000000\n  Bound result 6317461546705629875\n  Bound result 100000000000000000000\n  Bound result 255930292667882905577196647\n  Bound result 1251\n  Bound result 6374\n  Bound result 100000000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 9973\n  Bound result 12717\n  Bound result 635\n  Bound result 47688004234545986137665663476957324480396586168143663544562483646282773430272\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 10.01s (10.01s CPU time)\n\nRan 4 test suites in 10.01s (10.24s CPU time): 45 tests passed, 0 failed, 0 skipped (45 total tests)\n","passed":true},{"durationMs":58,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Rise.approve(address,uint256)\",\"Rise.transfer(address,uint256)\",\"Rise.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":141,\"foundry.toml\":23,\"remappings.txt\":2,\"src/Rise.sol\":14,\"test/LaunchFlow.t.sol\":90,\"test/README.md\":51,\"test/Rise.t.sol\":351,\"test/RiseAllowanceBoundary.t.sol\":207,\"test/RiseInvariant.t.sol\":222},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"661e02a56daf0a12811aa873aef2f8cf6dda6d28626dbf8274eed92195b7e4c0","verifiedTreeHash":"85aa82c985a9009090fad7159842b989865ccaab","verifierVersion":"0.1.0+7471272e"},{"checks":[{"durationMs":1346,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.19s\nCompiler run successful!\n","passed":true},{"durationMs":3865,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 3 tests for test/LaunchFlow.t.sol:LaunchFlowTest\n[PASS] test_create2UsesEmptyConstructorArgumentsAndMintsToFactory() (gas: 55011)\n[PASS] test_duplicateCreate2FailsAndDoesNotRemint() (gas: 55983)\n[PASS] test_launchAllocationClaimsAndPoolTokenLegsAreExact() (gas: 357431)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 4.45ms (778.54µs CPU time)\n\nRan 28 tests for test/Rise.t.sol:RiseTest\n[PASS] testFuzz_delegatedTransfer(uint256,uint256) (runs: 512, μ: 157604, ~: 158478)\nLogs:\n  Bound result 72679042885648477909712017\n  Bound result 17996276905162498694468294050017069526228302467907782228341\n\n[PASS] testFuzz_overspendReverts(uint256,uint256) (runs: 512, μ: 120644, ~: 120609)\nLogs:\n  Bound result 192614\n  Bound result 25570434845047\n\n[PASS] testFuzz_transferConservesSupply(uint256,uint256) (runs: 512, μ: 170469, ~: 172061)\nLogs:\n  Bound result 798905527392382691890298103\n  Bound result 0\n\n[PASS] test_approveEmitsEventAndDoesNotMoveFunds() (gas: 84107)\n[PASS] test_approveReplacesAndCanRevokeAllowance() (gas: 150625)\n[PASS] test_approveZeroSpenderReverts() (gas: 37767)\n[PASS] test_constructorEmitsSingleMintToActualDeployer() (gas: 23926)\n[PASS] test_contractRecipientIsNotCalled() (gas: 178022)\n[PASS] test_deployerAndStrangerHaveNoAdministrativeEntryPoints() (gas: 1041822)\n[PASS] test_entireSupplyAndSmallestUnitTransfer() (gas: 134596)\n[PASS] test_infiniteAllowanceRemainsUnchanged() (gas: 122006)\n[PASS] test_metadataAndEntireSupplyBelongToDeployer() (gas: 85261)\n[PASS] test_nativeCurrencyIsRejected() (gas: 36833)\n[PASS] test_runtimeHasNoForbiddenOpcodes() (gas: 785419)\n[PASS] test_selfTransferPreservesBalance() (gas: 51431)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 88989)\n[PASS] test_transferFromConsumesExactAllowanceAndEmitsTransfer() (gas: 218040)\n[PASS] test_transferFromInsufficientAllowanceIsAtomic() (gas: 108920)\n[PASS] test_transferFromInsufficientBalanceRestoresAllowance() (gas: 104259)\n[PASS] test_transferFromRequiresAllowanceEvenWhenCallerIsHolder() (gas: 33686)\n[PASS] test_transferFromToSelfStillConsumesAllowance() (gas: 100639)\n[PASS] test_transferFromToZeroRestoresAllowance() (gas: 111726)\n[PASS] test_transferFromZeroAmountNeedsNoAllowance() (gas: 56927)\n[PASS] test_transferFromZeroSenderRevertsEvenForZeroAmount() (gas: 33264)\n[PASS] test_transferInsufficientBalanceRevertsWithoutMutation() (gas: 61273)\n[PASS] test_transferMaximumUintReverts() (gas: 40463)\n[PASS] test_transferToZeroRevertsIncludingZeroAmount() (gas: 72260)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 66533)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 22.00ms (54.45ms CPU time)\n\nRan 1 test for test/RiseInvariant.t.sol:RiseInvariantTest\n[PASS]\nRiseInvariantTest invariants:\n[PASS] invariant_allowancesMatchModelIncludingFailedSpends\n[PASS] invariant_supplyAndBalancesMatchModel\n RiseInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+--------------+-------+---------+----------╮\n| Contract    | Selector     | Calls | Reverts | Discards |\n+=========================================================+\n| RiseHandler | approve      | 2755  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| RiseHandler | transfer     | 2695  | 0       | 0        |\n|-------------+--------------+-------+---------+----------|\n| RiseHandler | transferFrom | 2742  | 0       | 0        |\n╰-------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 5\n  Bound result 5286\n  Bound result 1\n  Bound result 999999999999999999999999999\n  Bound result 1\n  Bound result 438233\n  Bound result 18\n  Bound result 2127\n  Bound result 5732\n  Bound result 574346017803979902198089037\n  Bound result 100000000000000000000\n  Bound result 540978952661779\n  Bound result 5263\n  Bound result 1000000000\n  Bound result 100\n  Bound result 278\n  Bound result 4605\n  Bound result 5563\n  Bound result 112978879395224513413288568\n  Bound result 14\n  Bound result 12\n  Bound result 1\n  Bound result 303\n  Bound result 36865\n  Bound result 2\n  Bound result 17000000000000000000\n  Bound result 244\n  Bound result 427954565636576124132385116\n  Bound result 5773\n  Bound result 2\n  Bound result 999999999999999999999999997\n  Bound result 4313\n  Bound result 12\n  Bound result 450\n  Bound result 11\n  Bound result 424650560390299896569685856\n  Bound result 2\n  Bound result 318934248\n  Bound result 2240\n  Bound result 3349\n  Bound result 2\n  Bound result 5012\n  Bound result 6084\n  Bound result 0\n  Bound result 446\n  Bound result 68\n  Bound result 5285\n  Bound result 14\n  Bound result 1363\n  Bound result 183262370064715689092935736\n  Bound result 5471\n  Bound result 127\n  Bound result 956060386\n  Bound result 462370560214475589017047130\n  Bound result 31454\n  Bound result 126\n  Bound result 5562\n  Bound result 100397534624235980618939646\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.74s (3.73s CPU time)\n\nRan 3 test suites in 3.74s (3.77s CPU time): 32 tests passed, 0 failed, 0 skipped (32 total tests)\n","passed":true},{"durationMs":36,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Rise.approve(address,uint256)\",\"Rise.transfer(address,uint256)\",\"Rise.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":141,\"foundry.toml\":23,\"launch.json\":20,\"remappings.txt\":2,\"src/Rise.sol\":14,\"test/LaunchFlow.t.sol\":90,\"test/Rise.t.sol\":323,\"test/RiseInvariant.t.sol\":101},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"950ac2e67a2f1eccf4e3c22be05d13a61f6d1cee3cc01ed3e5e3c88b2997e644","verifiedTreeHash":"8d73a46c65b2e014cdb05568205ba1de9b653825","verifierVersion":"0.1.0+7471272e"}]}