{"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":"7c622b7a-74aa-4583-9332-c602641067cf","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"59962b2c43e09d04e6af082209a5c9a9e78ec4e94f3f5e22814db8e89426c991","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":"63e3b6af63df568234285a9bca43b0bcfc75c4b1a83ecc38c8954a0abf07e2a5","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":null,"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":"waiting"},{"acceptedSubmissionHash":"0604a7bd4552181854d4e7bcdcee0b8d32f38d2bf3246bb7df7f32a265f24198","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":"883cad8f6e980f67ef66eb05dbbe159583388f32d839698f67cb50e1d794ae0f","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":"2406a50ee43b6f0a6b9e399aea519c43fed8f4532915c7684730518868eae59c","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"587567a5ef71546b5973ceaf6ef1dbbd590f49503b5ac9a6973ed86b89584857","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"587567a5ef71546b5973ceaf6ef1dbbd590f49503b5ac9a6973ed86b89584857","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"failed"},{"acceptedSubmissionHash":"156cae8cf25aa145be1ca649a4d533cb1e47ac3e15e7be86846e2ff270569bac","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: REPUTATION (REP).\nToken name: REPUTATION\nToken symbol: REP\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"409e66c357d0100ff48402bd366fc760e89cbcc6eb484176f18569bac18b5b73","previousHash":"cd831a2907c58753a6cb8df840672752e532005f1c064691f9feaaf3c7a761d8","projectId":"7c622b7a-74aa-4583-9332-c602641067cf","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1025-reputation"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52222","feedbackHash":"1a3ea4c462b9d105d9350536222bdb17c2903cfdc843bc3c3451aa5d5932468d","nodeKey":"audit_economics","submissionHash":"59962b2c43e09d04e6af082209a5c9a9e78ec4e94f3f5e22814db8e89426c991","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51192","feedbackHash":"09e86372cd8401653beab2910c15c94a72c7c22bf8b52609c7a431be6d5342a0","nodeKey":"write_foundry_tests","submissionHash":"156cae8cf25aa145be1ca649a4d533cb1e47ac3e15e7be86846e2ff270569bac","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"c868730381a6681a4f3d761201af8e4ba1f422eee34844be4f2a60d8b6e73d85","state":"blocked","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"1c29c7c6e4cf57eb","findings":[],"hash":"0604a7bd4552181854d4e7bcdcee0b8d32f38d2bf3246bb7df7f32a265f24198","nodeId":"2be5ca98-ebcf-4abe-b36b-ce4915541974","outcome":"completed","summary":"I found no defects in the math, boundary or numerical-gap areas, so `.imd-findings.json` has an empty findings list and five coverage rows. No source files were changed.\n\n**What's in scope.** `src/ReputationToken.sol` is a plain OpenZeppelin v5.0.2 ERC20 with an 18-decimal supply of 1e27, minted once to `msg.sender` in the constructor. I checked the vendored library files against the hashes in `VENDORED.json` and they all match, so the transfer logic is unmodified OpenZeppelin. The existing tests pass: 29 unit tests and the invariant suite, with 8,192 calls and no reverts.\n\n**Math Precision**\n- **Overflow:** `1_000_000_000 * 10**18` is worked out at compile time to 1e27, far below 2^256. There is no way to mint after the constructor, so every balance stays at or below 1e27. That means the unchecked `_balances[to] += value` can't overflow, and the unchecked `_totalSupply -= value` can never run because nothing burns.\n- **Underflow:** the subtractions in `_update` and `_spendAllowance` both check the balance or allowance first and revert if it's too small.\n- **Rounding:** the token has no division, rounding, narrowing casts or fees. Decimals are 18, as the brief says.\n- **Static-analysis lead:** the aderyn \"large numeric literal\" warning at line 10 is a style note. The value is correct.\n\n**Boundary**\n- **Edge inputs:** I traced zero amounts, a full-balance transfer, sending to yourself, a maximum allowance (never reduced) and the zero address as receiver, sender, owner or spender. All behave as intended.\n- **Reverts:** a `transferFrom` to the zero address reverts as a whole, so it doesn't use up any allowance.\n- **No external surface:** the token makes no external calls, has no payable functions and decodes no raw byte input.\n\n**Numerical gap**\n- **Launch splits:** the 10% swarm share is exactly 1e26. The pool share, 1e27 × poolBps / 10000, comes out exact for every allowed poolBps from 1 to 9000, because 1e27 divides evenly by 10000.\n- **Transfers are exact:** with no transfer fee, the factory → distributor → claimant and pool-manager flows move exactly the stated amounts.\n\n**Coverage:** `approve`, `transfer` and `transferFrom` are each marked `holds`. The supply and decimals/split invariants have their own rows.\n\n**Not covered:** I ran no Slither or long fuzz runs beyond the existing suite. I couldn't run the protected launch test (`Token.protected.t.sol`) here because it needs the v4-core and launch helper sources and environment settings that aren't in this tree. I also didn't review a `launch.json`, since there isn't one yet.\n\nThe workspace shows some untracked entries such as `.bashrc`, `.gitmodules`, `.idea` and `.claude/agents`. They are sandbox placeholder device files that I didn't create, and I left them alone. `.imd-findings.json` itself is excluded from git through `.git/info/exclude`.","treeHash":null,"usage":{"cachedInputTokens":362820,"inputTokens":16,"model":"claude-opus-5-5","outputTokens":4538,"runtime":"claude","turns":9,"wallClockMs":55773}},{"artifacts":[],"attempt":1,"bundleHash":"d5e88282d67b92035890ac820e387729e3471a14d419a6b2a0ebbf169b814c2d","device":"4eb5b0156b09157c","findings":[],"hash":"156cae8cf25aa145be1ca649a4d533cb1e47ac3e15e7be86846e2ff270569bac","nodeId":"32ecbb82-5b87-49a0-aa76-f8909b364f14","outcome":"completed","summary":"Added 18 adversarial tests and expanded invariants to cover failed transfers, allowance boundaries, revocation, and balance conservation.\n\n`forge build` and `forge test` pass: 48 tests, including 256 invariant sequences and 16,384 handler calls.\n\nAll changes are under `test/`. No implementation defects found.","treeHash":"305b1b536e7a3da1c95e2aee591b0ffc423122d6","usage":{"cachedInputTokens":392704,"inputTokens":71278,"model":"gpt-6-astra","outputTokens":10757,"runtime":"codex","turns":5,"wallClockMs":382216}},{"artifacts":[],"attempt":1,"bundleHash":"9b0662ae59edf13ee8aa2994e43b103fec573b5f2e22c8e76c8fc4de3e51e62e","device":"3d800e8d8dc2fdc5","findings":[],"hash":"2406a50ee43b6f0a6b9e399aea519c43fed8f4532915c7684730518868eae59c","nodeId":"aa35e110-7b82-4a39-97c9-c49441326b27","outcome":"completed","summary":"Implemented REPUTATION (REP): 18 decimals, 1,000,000,000 tokens minted once to the deployer, with no later minting or administrative powers.\n\n- `forge build`, `forge test` (30 passing), and `forge fmt --check` passed with Solidity 0.8.26.\n- Fresh offline build and parallel tests passed.\n- Dependencies are vendored; deployment responsibilities are documented in `README.md`.\n- Slither 0.11.6 reported two compiler-pragma warnings, assessed in `SECURITY.md`; no confirmed vulnerability was identified.\n\nThe protected platform integration harness remains unrun because its platform contracts and launch parameters were not supplied.","treeHash":"fb442a406eda9f34aa414cd1c502e3d88f175de6","usage":{"cachedInputTokens":750848,"inputTokens":76982,"model":"gpt-6-astra","outputTokens":16005,"runtime":"codex","turns":6,"wallClockMs":609313}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"357c46e3781993d4","findings":[],"hash":"59962b2c43e09d04e6af082209a5c9a9e78ec4e94f3f5e22814db8e89426c991","nodeId":"1ecba6ea-f74c-4c9d-8e8d-d683fee2c3ba","outcome":"completed","summary":"Review complete. No defects found in the REP token's economics, and the tree is unchanged.\n\n**What I checked**\n\nThe contract is a 15-line fixed-supply ERC-20 over the unmodified OpenZeppelin v5.0.2 implementation. Vendored file checksums match the recorded manifest. I traced the three entry points plus the constructor against the Economic Security, Invariant and Flow Gap guides and the x-ray deployment-phase and token-behaviour lists.\n\n- **Supply conservation and fixity hold.** The constructor is the only mint path, nothing reaches burn, there is no fallback or receive, and the ABI exposes only approve, transfer and transferFrom as state changers. Unknown selectors and value sends revert.\n- **Launch flows arrive whole.** A scratch probe moved the swarm share, the pool seed at both the minimum and maximum poolBps, the remainder, and the 2% and 8% claim legs. Every leg credited exactly its amount with total supply unchanged. No exemption list is needed because there is no tax or burn.\n- **No privileged power exists.** Calls from the factory address to mint, burn, burnFrom and transferFrom on a holder all revert and leave balance and supply intact. The runtime has no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **Pool initialisation is feasible.** For market caps from 1 wei to 1e60 wei the derived sqrtPriceX96 stays inside the Uniswap v4 bounds in either currency ordering, and the maximum seed fits int128 deltas.\n- **Static leads dismissed.** The aderyn large-numeric-literal note is a correct 1e27 constant. Slither reported nothing.\n\n**Not reached**\n\nThe protected harness could not run here. It depends on platform-only contracts, v4-core and forge-std that are absent from this tree, plus live launch inputs. Only its token-side transfer legs were reproduced locally, and the coverage record marks that row unreached.\n\n**Deliverable**\n\nThe findings file holds an empty findings list and ten coverage rows: one per listed entry point, one for the constructor, and six for the invariants and economic checks above. The existing suite of 30 tests and the scratch probe both pass. The scratch test and findings file are git-excluded, so no tracked file changed.","treeHash":null,"usage":{"cachedInputTokens":652444,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":14784,"runtime":"claude","turns":26,"wallClockMs":245367}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"6b47d1bf92391c22","findings":[],"hash":"63e3b6af63df568234285a9bca43b0bcfc75c4b1a83ecc38c8954a0abf07e2a5","nodeId":"3dfb2fb6-de7f-45cc-b2b5-932c1c27cf94","outcome":"completed","summary":"I found no defects I could back with a reproduction. `.imd-findings.json` holds `{\"findings\":[]}` plus a coverage record that answers all 3 entry points and 2 invariants.\n\n**What the token is:** `src/ReputationToken.sol` is OpenZeppelin's standard ERC-20 (v5.0.2) with only two additions: a constant `INITIAL_SUPPLY = 1_000_000_000 * 10**18` and a constructor that calls `_mint(msg.sender, INITIAL_SUPPLY)`. It doesn't override any transfer logic and has no owner, constructor arguments, admin functions, external calls, fees or exemptions.\n\n**Supporting library:** the five vendored OpenZeppelin files match their `VENDORED.json` checksums. I also downloaded the same files from the upstream commit (`dbb6104`) and they hash identically, so the library hasn't been altered.\n\n**Coverage, using the Execution Trace, Periphery and First Principles guides:**\n- **`approve`** behaves as intended: it rejects the zero address, replaces the old allowance and emits an `Approval` event.\n- **`transfer`** rejects zero addresses, uses a checked balance debit and credits exactly the amount sent. Because there is no fee or burn, every launch flow moves the full amount: factory to distributor, distributor to claimant, and the pool's settle and take steps.\n- **`transferFrom`** reverts when the allowance is too small and leaves an unlimited (`type(uint256).max`) allowance unchanged. It then follows the same exact-transfer path, and there is no reentrancy risk because nothing calls out to other contracts.\n- **Supply and powers:** supply can't grow after deployment, the whole supply goes to the deployer (the factory when deployed via CREATE2), and decimals are 18. Nothing privileged can pause, freeze, blacklist or move a holder's balance.\n\n**Leads I set aside:**\n- The aderyn \"large numeric literal\" warning is about style only; I checked the value and it is correct.\n- The existing test suite passes (30 tests, including invariant runs).\n\n**Not checked:**\n- I couldn't run the protected launch harness here. It needs `src/LaunchLiquidity.sol`, `PoolInitializationGuard`, `HookFlags` and `v4-core`, none of which are in this tree. They're platform files, not the token's. My conclusion that the pool seed and swaps work is reasoned from the exact-transfer behaviour, not observed in a run.\n- There's no `launch.json` yet, so no manifest review. When one exists, it should list `constructorArgs: []`, `decimals: 18` and `totalSupply: \"1000000000000000000000000000\"`.","treeHash":null,"usage":{"cachedInputTokens":321131,"inputTokens":14,"model":"claude-opus-5-5","outputTokens":3037,"runtime":"claude","turns":7,"wallClockMs":43965}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"47f3603854a893a3","findings":[],"hash":"883cad8f6e980f67ef66eb05dbbe159583388f32d839698f67cb50e1d794ae0f","nodeId":"404d66a2-eb97-43aa-ba73-4e7c8920bfda","outcome":"completed","summary":"I found no permission defects in REPUTATION (REP), so `.imd-findings.json` holds an empty findings list. It also has a coverage row for each of the three entry points, all marked `holds`, plus two rows for invariants I checked.\n\n**What the code is:** `src/ReputationToken.sol` is a plain OpenZeppelin ERC-20 (vendored v5.0.2). Its constructor mints `1_000_000_000 * 10**18` to `msg.sender` once, and it adds nothing else on top.\n\n**Access Control:** there is no owner and no role system. There are no admin functions and no initializer or upgrade path. `approve` only sets the caller's own allowances. `transfer` only moves the caller's balance. `transferFrom` always checks and reduces the allowance before moving anything; only an unlimited allowance is left as it is. No address skips the allowance check, so neither the factory nor the deployer can move or freeze a holder's balance.\n\n**Trust Gap and Asymmetry:** the constructor gives out nothing but the token balance, so nobody holds special power once deployment ends. No caller is treated differently from another: there are no fees, exemptions, pause or blacklist. That also means the launch transfers move exact amounts: factory to distributor, distributor to claimant, and in and out of the pool.\n\n**Supply:** `_mint` is only reached from the constructor, so the supply cannot grow after launch.\n\n**Library check:** I checked the five vendored OpenZeppelin files and the licence against the SHA-256 values listed in `VENDORED.json`, and all matched. I also read the ERC-20 code paths line by line and they are the standard implementation. The matching hashes only show the files agree with that manifest; I didn't compare them against the upstream repository.\n\n**Static-analysis leads:** Aderyn flagged a \"large numeric literal\" at line 10. That's the supply constant and it's correct, so it isn't a defect. Slither reported nothing.\n\n**Other checks:** the build and the existing 30 tests pass. I wrote no Foundry proof file because there was nothing at high severity or above to prove. There's no `launch.json` yet, so I couldn't review constructor arguments against a manifest; this token's constructor takes none.\n\n**Not reported:** the familiar ERC-20 risk where a spender can use the old allowance just before it is changed exists here, as in every standard ERC-20. I left it out because it isn't a defect in this code.\n\nApart from the findings file I changed no files.","treeHash":null,"usage":{"cachedInputTokens":315182,"inputTokens":14,"model":"claude-opus-5-5","outputTokens":3019,"runtime":"claude","turns":7,"wallClockMs":48880}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"6407a9ab49278517","findings":[],"hash":"c1b43bd2ee36901afb6cacfb207e320187e978d3129b0d5ea3fc62a23018689d","nodeId":"f202d4e8-d5c8-4471-b719-c08691098e71","outcome":"failed","summary":"needs input: The brief does not select pool.fee or pool.tickSpacing, or supply pool.initialPrice (the provenance decimal sqrtPriceX96). The missing-input rule prohibits guessing requester choices, and these fields do not support launch placeholders. — Which pool fee tier (500, 3000, or 10000), tickSpacing, and provenance initialPrice (decimal sqrtPriceX96) should launch.json use?","treeHash":null,"usage":{"cachedInputTokens":160000,"inputTokens":33174,"model":"gpt-6-astra","outputTokens":1994,"runtime":"codex","turns":3,"wallClockMs":91007}}],"verification":[{"checks":[{"durationMs":671,"exitCode":0,"name":"build","output":"Compiling 10 files with Solc 0.8.26\nSolc 0.8.26 finished in 617.12ms\nCompiler run successful!\n","passed":true},{"durationMs":5357,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 18 tests for test/ReputationToken.adversarial.t.sol:ReputationTokenAdversarialTest\n[PASS] testFuzz_allowancesAreIsolatedByOwner(uint256,uint256,uint256) (runs: 1000, μ: 306939, ~: 309287)\n[PASS] testFuzz_approvalOverwriteIsExactAndIdempotent(uint256,uint256) (runs: 1000, μ: 205209, ~: 205290)\n[PASS] testFuzz_delegatedRoundTripRestoresBalancesButConsumesFiniteApproval(uint256) (runs: 1000, μ: 261856, ~: 262939)\n[PASS] testFuzz_transferFromInsufficientAllowanceIsAtomic(uint256,uint256) (runs: 1000, μ: 130799, ~: 131194)\n[PASS] testFuzz_transferFromInsufficientBalanceIsAtomic(uint256,uint256,bool) (runs: 1000, μ: 179685, ~: 178928)\n[PASS] test_exhaustedAllowanceCannotReplaySuccessfulSpend() (gas: 160944)\n[PASS] test_infiniteAllowanceDoesNotBypassBalanceAtMaximumAmount() (gas: 133204)\n[PASS] test_infiniteApprovalCanBeRevokedAndReplaced() (gas: 307057)\n[PASS] test_infiniteApprovalCannotBurnThroughZeroRecipient() (gas: 130473)\n[PASS] test_largestFiniteAllowanceIsDecremented() (gas: 138921)\n[PASS] test_largestFiniteAllowanceRejectsMaximumSpend() (gas: 131057)\n[PASS] test_maximumTransferFailsWithoutOverflowOrMinting() (gas: 75052)\n[PASS] test_ownerCallingTransferFromStillNeedsAllowance() (gas: 198347)\n[PASS] test_smallestUnitMakesAnExactRoundTrip() (gas: 123148)\n[PASS] test_zeroDelegatedTransferEmitsAndPreservesFiniteApproval() (gas: 138042)\n[PASS] test_zeroSenderCannotCreateApproval() (gas: 80702)\n[PASS] test_zeroSenderCannotReachMintThroughTransfer() (gas: 72486)\n[PASS] test_zeroSpenderCannotBeApprovedEvenForZero() (gas: 80040)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 81.35ms (400.68ms CPU time)\n\nRan 29 tests for test/ReputationToken.t.sol:ReputationTokenTest\n[PASS] testFuzz_finiteAllowanceAccounting(uint256,uint256) (runs: 1000, μ: 137024, ~: 138951)\n[PASS] testFuzz_insufficientBalanceIsAtomic(uint256) (runs: 1000, μ: 52292, ~: 52259)\n[PASS] testFuzz_transfersConserveSupply(uint256) (runs: 1000, μ: 147089, ~: 147912)\n[PASS] test_approveReplacesAndRevokesAllowance() (gas: 163673)\n[PASS] test_approveZeroSpenderReverts() (gas: 34619)\n[PASS] test_constructorEmitsMintEvent() (gas: 5534)\n[PASS] test_create2MintsToFactoryRatherThanTransactionOrigin() (gas: 203934)\n[PASS] test_deployerCannotSpendHolderTokensWithoutApproval() (gas: 89287)\n[PASS] test_distributionAndPoolStyleTransferPathsDeliverInFull() (gas: 350501)\n[PASS] test_metadataAndEntireSupplyBelongToDeployer() (gas: 58167)\n[PASS] test_mintAndAdministrativeEntrypointsAreAbsent() (gas: 942999)\n[PASS] test_runtimeHasNoForbiddenOpcodes() (gas: 460841)\n[PASS] test_selfTransferOverBalanceStillReverts() (gas: 33269)\n[PASS] test_selfTransferPreservesBalance() (gas: 42707)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 79838)\n[PASS] test_transferEntireBalance() (gas: 62669)\n[PASS] test_transferFromInfiniteAllowanceIsNotDecremented() (gas: 115795)\n[PASS] test_transferFromOverAllowanceRevertsWithoutChanges() (gas: 99883)\n[PASS] test_transferFromOverBalanceRollsBackAllowance() (gas: 98106)\n[PASS] test_transferFromSelfStillSpendsAllowance() (gas: 94541)\n[PASS] test_transferFromSpendsAllowanceAndEmitsTransfer() (gas: 180675)\n[PASS] test_transferFromToZeroRollsBackAllowance() (gas: 95447)\n[PASS] test_transferFromZeroSenderRevertsEvenForZeroAmount() (gas: 44338)\n[PASS] test_transferOverBalanceReverts() (gas: 44695)\n[PASS] test_transferToZeroReverts() (gas: 41715)\n[PASS] test_wrongSpenderCannotUseSomeoneElsesApproval() (gas: 92276)\n[PASS] test_zeroTransferFromDoesNotNeedAllowance() (gas: 58525)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 50003)\n[PASS] test_zeroTransferToZeroAlsoReverts() (gas: 30316)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 81.37ms (235.38ms CPU time)\n\nRan 1 test for test/ReputationToken.invariant.t.sol:ReputationTokenInvariantTest\n[PASS]\nReputationTokenInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_metadataRemainsFixed\n[PASS] invariant_supplyAndBalancesMatchModel\n ReputationTokenInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------------+---------------------------+-------+---------+----------╮\n| Contract          | Selector                  | Calls | Reverts | Discards |\n+============================================================================+\n| ReputationHandler | approve                   | 1439  | 0       | 0        |\n|-------------------+---------------------------+-------+---------+----------|\n| ReputationHandler | approveZeroSpender        | 1535  | 0       | 0        |\n|-------------------+---------------------------+-------+---------+----------|\n| ReputationHandler | revokeAndAttemptSpend     | 1472  | 0       | 0        |\n|-------------------+---------------------------+-------+---------+----------|\n| ReputationHandler | roundTrip                 | 1426  | 0       | 0        |\n|-------------------+---------------------------+-------+---------+----------|\n| ReputationHandler | transfer                  | 1518  | 0       | 0        |\n|-------------------+---------------------------+-------+---------+----------|\n| ReputationHandler | transferFrom              | 1521  | 0       | 0        |\n|-------------------+---------------------------+-------+---------+----------|\n| ReputationHandler | transferFromOverAllowance | 1540  | 0       | 0        |\n|-------------------+---------------------------+-------+---------+----------|\n| ReputationHandler | transferFromOverBalance   | 1473  | 0       | 0        |\n|-------------------+---------------------------+-------+---------+----------|\n| ReputationHandler | transferFromToZero        | 1482  | 0       | 0        |\n|-------------------+---------------------------+-------+---------+----------|\n| ReputationHandler | transferOverBalance       | 1506  | 0       | 0        |\n|-------------------+---------------------------+-------+---------+----------|\n| ReputationHandler | transferToZero            | 1472  | 0       | 0        |\n╰-------------------+---------------------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.30s (5.30s CPU time)\n\nRan 3 test suites in 5.30s (5.46s CPU time): 48 tests passed, 0 failed, 0 skipped (48 total tests)\n","passed":true},{"durationMs":38,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ReputationToken.approve(address,uint256)\",\"ReputationToken.transfer(address,uint256)\",\"ReputationToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"README.md\":80,\"SECURITY.md\":86,\"foundry.toml\":21,\"src/ReputationToken.sol\":15,\"test/ReputationToken.adversarial.t.sol\":268,\"test/ReputationToken.invariant.t.sol\":220,\"test/ReputationToken.t.sol\":323,\"test/helpers/TestSupport.sol\":34},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"156cae8cf25aa145be1ca649a4d533cb1e47ac3e15e7be86846e2ff270569bac","verifiedTreeHash":"305b1b536e7a3da1c95e2aee591b0ffc423122d6","verifierVersion":"0.1.0+ad90ce4c"},{"checks":[{"durationMs":373,"exitCode":0,"name":"build","output":"Compiling 9 files with Solc 0.8.26\nSolc 0.8.26 finished in 322.12ms\nCompiler run successful!\n","passed":true},{"durationMs":2242,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 29 tests for test/ReputationToken.t.sol:ReputationTokenTest\n[PASS] testFuzz_finiteAllowanceAccounting(uint256,uint256) (runs: 1000, μ: 136620, ~: 138951)\n[PASS] testFuzz_insufficientBalanceIsAtomic(uint256) (runs: 1000, μ: 52291, ~: 52259)\n[PASS] testFuzz_transfersConserveSupply(uint256) (runs: 1000, μ: 146868, ~: 147912)\n[PASS] test_approveReplacesAndRevokesAllowance() (gas: 163673)\n[PASS] test_approveZeroSpenderReverts() (gas: 34619)\n[PASS] test_constructorEmitsMintEvent() (gas: 5534)\n[PASS] test_create2MintsToFactoryRatherThanTransactionOrigin() (gas: 203934)\n[PASS] test_deployerCannotSpendHolderTokensWithoutApproval() (gas: 89287)\n[PASS] test_distributionAndPoolStyleTransferPathsDeliverInFull() (gas: 350501)\n[PASS] test_metadataAndEntireSupplyBelongToDeployer() (gas: 58167)\n[PASS] test_mintAndAdministrativeEntrypointsAreAbsent() (gas: 942999)\n[PASS] test_runtimeHasNoForbiddenOpcodes() (gas: 460841)\n[PASS] test_selfTransferOverBalanceStillReverts() (gas: 33269)\n[PASS] test_selfTransferPreservesBalance() (gas: 42707)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 79838)\n[PASS] test_transferEntireBalance() (gas: 62669)\n[PASS] test_transferFromInfiniteAllowanceIsNotDecremented() (gas: 115795)\n[PASS] test_transferFromOverAllowanceRevertsWithoutChanges() (gas: 99883)\n[PASS] test_transferFromOverBalanceRollsBackAllowance() (gas: 98106)\n[PASS] test_transferFromSelfStillSpendsAllowance() (gas: 94541)\n[PASS] test_transferFromSpendsAllowanceAndEmitsTransfer() (gas: 180675)\n[PASS] test_transferFromToZeroRollsBackAllowance() (gas: 95447)\n[PASS] test_transferFromZeroSenderRevertsEvenForZeroAmount() (gas: 44338)\n[PASS] test_transferOverBalanceReverts() (gas: 44695)\n[PASS] test_transferToZeroReverts() (gas: 41715)\n[PASS] test_wrongSpenderCannotUseSomeoneElsesApproval() (gas: 92276)\n[PASS] test_zeroTransferFromDoesNotNeedAllowance() (gas: 58525)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 50003)\n[PASS] test_zeroTransferToZeroAlsoReverts() (gas: 30316)\nSuite result: ok. 29 passed; 0 failed; 0 skipped; finished in 20.47ms (82.50ms CPU time)\n\nRan 1 test for test/ReputationToken.invariant.t.sol:ReputationTokenInvariantTest\n[PASS]\nReputationTokenInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_supplyAndBalancesMatchModel\n ReputationTokenInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------------+--------------+-------+---------+----------╮\n| Contract          | Selector     | Calls | Reverts | Discards |\n+===============================================================+\n| ReputationHandler | approve      | 2722  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ReputationHandler | transfer     | 2775  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ReputationHandler | transferFrom | 2695  | 0       | 0        |\n╰-------------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.19s (2.19s CPU time)\n\nRan 2 test suites in 2.20s (2.21s CPU time): 30 tests passed, 0 failed, 0 skipped (30 total tests)\n","passed":true},{"durationMs":34,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ReputationToken.approve(address,uint256)\",\"ReputationToken.transfer(address,uint256)\",\"ReputationToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"README.md\":80,\"SECURITY.md\":86,\"foundry.toml\":21,\"src/ReputationToken.sol\":15,\"test/ReputationToken.invariant.t.sol\":93,\"test/ReputationToken.t.sol\":323,\"test/helpers/TestSupport.sol\":26},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":443,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":242,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/ReputationToken.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"2406a50ee43b6f0a6b9e399aea519c43fed8f4532915c7684730518868eae59c","verifiedTreeHash":"fb442a406eda9f34aa414cd1c502e3d88f175de6","verifierVersion":"0.1.0+ad90ce4c"}]}