{"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":"376ded94-14ba-4758-a287-a7f87c27e75f","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"4071cce1e21d066f22521f4ac54db8e72591172e2722070afa98b7e5c4f96733","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":"db4f4d31992ff3b0d9b85ccd02311a0e12b709defd0cbb89e8848fa94c55ec66","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":"408adb4318045698e7b159b61aea3fd435809dcb595c977a53a7e1b9cf8a85c1","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":"4aa8ebd5f7d2f32535b9df6731846ce1633b3f0279ed5bbd2de0930c2d3d3332","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":"e146cbebe9ef4ea5e6d94c86f3718e3cb4cf11e882aacf5ea7477669f827e0f9","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":"9df5de9ae17fbfdb32cfaebb4f88f48c33328b8201ebc35fc1fe0d204084fb11","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.\n\nTransfer rules: plain transfer","parentJobId":null,"planHash":"db49c975c8f0279bb2247d4df1d9d8ddda6639b90686fbc8d0b4c6ea5a072ee8","previousHash":"1f9316e7da93fd8752b7a610f044a2b6270d16596ad9bef0afddf3851c2eeef4","projectId":"376ded94-14ba-4758-a287-a7f87c27e75f","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1038-reputation"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"50907","feedbackHash":"54618fe28f404999cc7f2f66be63c2d99a0dbeb4e8b9b41b73efd73c58e394ee","nodeKey":"audit_economics","submissionHash":"4071cce1e21d066f22521f4ac54db8e72591172e2722070afa98b7e5c4f96733","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52160","feedbackHash":"5a6cb7120efd91ea6239f69ea2f8f5b652eb58ae45eefd0544a4434974f5ae00","nodeKey":"audit_flow","submissionHash":"db4f4d31992ff3b0d9b85ccd02311a0e12b709defd0cbb89e8848fa94c55ec66","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51291","feedbackHash":"48d58f9052e64f074d00510cf131166e661d72902a4832e374e5d261610048e6","nodeKey":"audit_permissions","submissionHash":"4aa8ebd5f7d2f32535b9df6731846ce1633b3f0279ed5bbd2de0930c2d3d3332","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52421","feedbackHash":"4c2a1f13aa2e1d890c81eb36ebcaa343aceb932ee0ca6036c5a4c83bc3ac19e8","nodeKey":"write_foundry_tests","submissionHash":"9df5de9ae17fbfdb32cfaebb4f88f48c33328b8201ebc35fc1fe0d204084fb11","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"cad2dd23b6a4ad590bf12e02deb4e7258e3be599cc9beb4d1b276e9c6d46073a","state":"blocked","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"5fd2de06561c50a4","findings":[],"hash":"4071cce1e21d066f22521f4ac54db8e72591172e2722070afa98b7e5c4f96733","nodeId":"ed40ac7d-8296-453e-a968-9bc05a4d160e","outcome":"completed","summary":"Taylor, the economics review is done and found no defects. The findings file is written with an empty list and a full coverage record.\n\n**What was reviewed.** The token is the OpenZeppelin v5.0.2 ERC-20 with one constructor mint of 1e27 units to msg.sender and nothing else. I checked it against the Economic Security, Invariant and Flow Gap guides, the x-ray token threat profile, and the protected launch test.\n\n**What held, with evidence.**\n- Vendored OpenZeppelin files match upstream commit dbb6104 by SHA-256, verified against GitHub.\n- Compiled ABI has exactly the three listed state-changing entry points, no fallback, receive, owner, mint, burn or hook.\n- Supply is constant after construction. `_mint` is only reached in the constructor, `_burn` is never called, and transfers to the zero address revert.\n- A scratch probe reproduced the launch split and claim flow plus a pull-and-pay cycle against a manager stand-in. Every leg delivered the exact amount and the balance sum stayed equal to supply.\n- The deployer and a factory cannot pull a holder's balance without allowance.\n- The existing suite, 29 tests including two stateful invariants, passes.\n\n**Coverage record.** All three entry points are marked holds, plus rows for supply constancy, balance conservation, the constructor mint to the factory, absence of privileged entry points, and the aderyn numeric literal lead, which is a style lint with a correct value.\n\n**Not reported on purpose.** The ERC-20 approve ordering race and the ability to send tokens to the token contract itself are standard properties the README already documents, not defects in this code. No manifest exists yet, so manifest review was out of reach and is not a defect at this stage.\n\n**Files touched.** Only the findings file at the repo root and a scratch test under test/scratch, both gitignored. Nothing in src, lib or configuration changed.","treeHash":null,"usage":{"cachedInputTokens":582070,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":12536,"runtime":"claude","turns":23,"wallClockMs":181550}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"f9cb4fd544aa3c68","findings":[],"hash":"408adb4318045698e7b159b61aea3fd435809dcb595c977a53a7e1b9cf8a85c1","nodeId":"5ea1418e-7378-4d25-a4c8-16f50abe477c","outcome":"completed","summary":"The review is complete. The findings file is valid JSON and the working tree has no other changes.\n\n**Result: no defects found in the Math Precision, Boundary and Numerical Gap areas.** The findings file at `.imd-findings.json` holds an empty findings list plus five coverage rows, all `holds`.\n\n**What the token is.** `src/Reputation.sol` is a 16-line wrapper over the vendored, checksum-verified OpenZeppelin v5.0.2 ERC20. The constructor mints the constant supply to the deployer once. There are no overrides, no owner, no divisions, no downcasts, no decimal scaling, no external calls, and no payable, receive or fallback paths.\n\n**What I checked against the three guides.**\n- Math Precision: the supply constant is a compile-time literal equal to 10^27, far below the uint256 limit. The only checked addition is the mint from zero. Every unchecked subtraction in the transfer and allowance paths is preceded by the matching less-than guard, so wrap is unreachable.\n- Boundary: the ABI contains only standard ERC-20 functions, all nonpayable or view. Plain ETH and unknown selectors revert. The only sentinel branches are the zero-address rejections, and both sides behave as specified.\n- Numerical Gap: with no rounding anywhere, there is no seam between precision, boundaries and invariants to exploit. Balances sum to the supply after any sequence, and the existing invariant suite confirmed that over 8192 calls.\n\n**Evidence.** A scratch suite of eight tests passed, covering the exact 10^27 supply, transfers of max-uint and supply plus one, the max-minus-one finite allowance, allowance reaching exactly zero, a 1 wei round trip, and rejection of ETH and unknown calldata. The scratch directory was removed afterwards. The existing 29 tests also pass. The aderyn large-literal lead is the supply constant itself and is not a defect.\n\n**Outside my area.** The protected launch harness needs the external v4 contracts and could not be run locally, so pool seeding and swaps are not verified here. No launch manifest exists yet, which is expected at this stage.","treeHash":null,"usage":{"cachedInputTokens":405847,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":7526,"runtime":"claude","turns":17,"wallClockMs":109528}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"bd7adba3a8045853","findings":[],"hash":"4aa8ebd5f7d2f32535b9df6731846ce1633b3f0279ed5bbd2de0930c2d3d3332","nodeId":"b6146fcf-aa75-4b46-91a4-21464f81f130","outcome":"completed","summary":"The review is complete. No defects were substantiated in the Reputation token, and the findings file holds an empty list with full coverage.\n\n**What I checked, in the assigned area**\n\n- **Access control.** The compiled ABI exposes exactly three state-changing functions: approve, transfer and transferFrom. There is no owner, minter, pauser, initializer, proxy or upgrade path. The constructor mints the whole supply once to the immediate deployer, which is the factory in a launch. I called 22 common privileged selectors from both the factory and a stranger against a factory-deployed instance. Every call reverted and supply and balances were unchanged.\n- **Asymmetry.** The transfer and transferFrom paths share the same OpenZeppelin v5.0.2 debit and credit code, so the swarm share, the pool seed and trader swaps all move exactly the requested amount. The allowance slot has only two writers, approve and the internal spend helper, with no admin variant or weaker guard. The factory cannot pull from a holder without an allowance. Self-spender needing an allowance and no Approval event on spend are standard OpenZeppelin v5 behavior and are documented in the README.\n- **Trust gap.** No privileged actor, no settable parameter and no in-flight value exist, so none of the four seams apply.\n- **Launch floor.** The runtime bytecode contains no DELEGATECALL, CALLCODE or SELFDESTRUCT outside push data. There is no receive or fallback, so value calls revert. The vendored OpenZeppelin files match their recorded checksums, and the project builds and passes its 29 tests offline without forge-std.\n- **Static analysis lead.** The aderyn large-literal note at line 10 evaluates to the exact supply the README and manifest expect, so it is not a defect.\n\n**Coverage record** in .imd-findings.json marks all three entry points as holds, plus rows for the constructor and role inventory, the opcode scan and the aderyn lead. The scratch probe test was removed after it passed. No files outside the findings file were changed.","treeHash":null,"usage":{"cachedInputTokens":720950,"inputTokens":450,"model":"claude-fable-5-1","outputTokens":8303,"runtime":"claude","turns":15,"wallClockMs":136367}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e35a3abed04af1ac","findings":[],"hash":"76e9499f507ffb1e2d7709272918317a29ca8de495cb03ca477fe39fd694d9b3","nodeId":"6c466795-5212-4e3a-9136-6ab3e334a85c","outcome":"failed","summary":"needs input: The required pool fee, tickSpacing, and provenance initialPrice are unspecified. The brief lists allowed fee tiers but does not select one, and the accepted implementation contains no pool configuration. — Which pool fee (500, 3000, or 10000), tickSpacing, and provenance initialPrice (decimal sqrtPriceX96) should launch.json use?","treeHash":null,"usage":{"cachedInputTokens":140672,"inputTokens":15189,"model":"gpt-6-astra","outputTokens":1965,"runtime":"codex","turns":3,"wallClockMs":144890}},{"artifacts":[],"attempt":1,"bundleHash":"bbf082af772ce1248b5c3f171c1f131a8a904d61eb6360be2b764f67538db8ea","device":"6ea221d017084baf","findings":[],"hash":"9df5de9ae17fbfdb32cfaebb4f88f48c33328b8201ebc35fc1fe0d204084fb11","nodeId":"2c820d17-0f09-4494-91bd-8e67a16d1cd7","outcome":"completed","summary":"Added 15 boundary, failure-path, and fuzz tests. Expanded invariants to check supply, balances, and allowances across successful and rejected operations.\n\nOnly `test/` changed. `forge build` and `forge test` pass: 44 tests, zero failures. Invariants exercised 16,384 randomized calls.\n\nNo contract defects found.","treeHash":"168328d92e39143f3349873ef2776dd80a729c7d","usage":{"cachedInputTokens":514688,"inputTokens":54752,"model":"gpt-6-astra","outputTokens":11543,"runtime":"codex","turns":6,"wallClockMs":465235}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"cd8076510aad8b8e","findings":[],"hash":"db4f4d31992ff3b0d9b85ccd02311a0e12b709defd0cbb89e8848fa94c55ec66","nodeId":"2e8256ab-ab33-40ac-8a08-3dd1574c2ea0","outcome":"completed","summary":"Review complete. The findings file is written and the working tree is clean apart from it.\n\n**Result: no defects found.** The token is a two-line subclass of the vendored OpenZeppelin v5.0.2 ERC20 with a fixed mint to the deployer, and every entry point in the Execution Trace, Periphery and First Principles passes behaves as the brief requires.\n\nWhat I verified:\n- **Vendored dependency is genuine.** All five Solidity files and the license hash-match the upstream OpenZeppelin files at the pinned commit, and they are committed as ordinary files with no submodule.\n- **Constructor and supply.** The literal flagged by aderyn evaluates to exactly 10^27, which is 1,000,000,000 REP at 18 decimals. A raw CREATE2 probe confirmed the whole supply lands on the factory, nothing on the wallet calling it.\n- **The three entry points.** I traced approve, transfer and transferFrom through the OpenZeppelin internals, including zero-address sentinels, the unlimited-allowance sentinel, allowance-before-balance ordering, atomic rollback on revert, and the absence of any hook or callback. A scratch harness drove the launch shape end to end: factory to distributor, distributor to claimant, approval-and-pull by a manager stand-in, push to a trader and sale back, remainder forwarded. Every flow moved exactly the requested amount and supply stayed constant.\n- **No privileged surface.** The ABI has only the three standard state-changing functions. Storage holds only balances, allowances, supply, name and symbol. The runtime contains no DELEGATECALL, CALLCODE, SELFDESTRUCT or PUSH0.\n- **Existing suite.** All 29 project tests pass, including the 128-run stateful invariants.\n\nTwo behaviours are worth knowing but are not defects: replacing a nonzero allowance has the usual ERC-20 front-running window, and transferFrom does not emit an Approval event. Both are inherent to the library and already documented in the README.\n\nThe findings file holds an empty findings list plus eight coverage rows: one for each of the three listed entry points, one for the constructor, and four for the invariants and dependency check I verified. Nothing was left unreached.","treeHash":null,"usage":{"cachedInputTokens":897188,"inputTokens":418,"model":"claude-fable-5-1","outputTokens":13373,"runtime":"claude","turns":25,"wallClockMs":213570}},{"artifacts":[],"attempt":1,"bundleHash":"50debb14b0d2fdfc0bced6ff4460442710ff337daa9d9ba8c020ef188261fec1","device":"107def308610130e","findings":[],"hash":"e146cbebe9ef4ea5e6d94c86f3718e3cb4cf11e882aacf5ea7477669f827e0f9","nodeId":"02919532-15c6-4fb8-a3cf-4b9ca51fd2c3","outcome":"completed","summary":"Implemented Reputation (REP): 1 billion tokens, 18 decimals, minted once to the deployer, with plain transfers.\n\nVendored dependencies, meaningful success/failure tests, fuzz tests, invariants, and deployment documentation are included.\n\nPassed `forge build`, `forge test`, and `forge fmt --check`, plus a fresh offline test run with the environment cleared except `PATH`.\n\nThe external launch harness remains for independent verification.","treeHash":"95534167ff52f6e4ecba0f0aa264618f2b6cc82f","usage":{"cachedInputTokens":429696,"inputTokens":55511,"model":"gpt-6-astra","outputTokens":12466,"runtime":"codex","turns":5,"wallClockMs":501224}}],"verification":[{"checks":[{"durationMs":499,"exitCode":0,"name":"build","output":"Compiling 10 files with Solc 0.8.26\nSolc 0.8.26 finished in 437.94ms\nCompiler run successful!\n","passed":true},{"durationMs":4407,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 15 tests for test/Reputation.edge.t.sol:ReputationEdgeTest\n[PASS] testFuzz_allowanceFailurePreservesSpendableBalance(uint256,uint256) (runs: 1000, μ: 305943, ~: 308338)\n[PASS] testFuzz_approvalReplacementIsIdempotentAndIsolated(uint256,uint256,uint256) (runs: 1000, μ: 292355, ~: 293118)\n[PASS] testFuzz_balanceFailurePreservesFiniteAllowance(uint256,uint256) (runs: 1000, μ: 196710, ~: 197144)\n[PASS] testFuzz_infiniteApprovalRevocationStopsOnlyThatSpender(uint256) (runs: 1000, μ: 385374, ~: 385301)\n[PASS] testFuzz_partialHolderCannotOverspendEvenToSelf(uint256,uint256,bool) (runs: 1000, μ: 191206, ~: 191169)\n[PASS] testFuzz_selfTransferConsumesOnlyDelegatedAllowance(uint256,uint256,uint256) (runs: 1000, μ: 287432, ~: 288603)\n[PASS] testFuzz_splitTransfersAndSingleTransferAgree(uint256,uint256,uint256) (runs: 1000, μ: 459266, ~: 461588)\n[PASS] test_balanceFailurePreservesAllowanceForRetryAfterFunding() (gas: 412738)\n[PASS] test_infiniteAllowanceDoesNotPermitZeroRecipientEvenForZeroAmount() (gas: 229506)\n[PASS] test_largestFiniteAllowanceIsConsumedUnlikeInfiniteAllowance() (gas: 216628)\n[PASS] test_refillingHolderDoesNotRestoreSpentAllowance() (gas: 460930)\n[PASS] test_transferBoundaryAmountsRoundTripExactly() (gas: 754776)\n[PASS] test_uintMaximumTransferRejectsInsufficientBalanceWithoutOverflow() (gas: 223986)\n[PASS] test_zeroCallerCannotTransferOrApproveEvenZero() (gas: 112993)\n[PASS] test_zeroSpenderRejectedAtEveryApprovalBoundary() (gas: 431558)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 119.43ms (829.52ms CPU time)\n\nRan 28 tests for test/Reputation.t.sol:ReputationTest\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256) (runs: 512, μ: 52575, ~: 52536)\n[PASS] testFuzz_transferConservesSupply(uint256,address) (runs: 512, μ: 74927, ~: 75530)\n[PASS] testFuzz_transferFromConservesSupplyAndAllowance(uint256,uint256) (runs: 512, μ: 137132, ~: 139013)\n[PASS] test_approvalEmitsEventAndCanBeReplacedAndRevoked() (gas: 171465)\n[PASS] test_approvalToZeroSpenderReverts() (gas: 30561)\n[PASS] test_constructorEmitsMintTransfer() (gas: 5513)\n[PASS] test_factoryGetsWholeSupplyAndDistributionArrivesWhole() (gas: 404185)\n[PASS] test_metadataAndInitialSupply() (gas: 66453)\n[PASS] test_mintBurnAndAdminSelectorsAreUnavailable() (gas: 1055802)\n[PASS] test_runtimeHasNoPrivilegedExecutionOpcodes() (gas: 473512)\n[PASS] test_selfTransferPreservesBalance() (gas: 42725)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 33540)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 79844)\n[PASS] test_transferFromByHolderStillRequiresAllowance() (gas: 33641)\n[PASS] test_transferFromCannotSpendWithoutAllowance() (gas: 97016)\n[PASS] test_transferFromDeliversExactAmountAndConsumesAllowance() (gas: 195407)\n[PASS] test_transferFromExcessAllowanceRevertsWithoutChangingState() (gas: 100209)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 106020)\n[PASS] test_transferFromToSelfConsumesAllowanceWithoutChangingBalance() (gas: 98869)\n[PASS] test_transferFromToZeroRollsBackAllowance() (gas: 102984)\n[PASS] test_transferFromZeroSenderRevertsEvenForZeroAmount() (gas: 33133)\n[PASS] test_transferInsufficientBalanceReverts() (gas: 45168)\n[PASS] test_transferToContractDoesNotCallRecipient() (gas: 168261)\n[PASS] test_transferToZeroRevertsIncludingZeroAmount() (gas: 66364)\n[PASS] test_transferWholeSupply() (gas: 62712)\n[PASS] test_unlimitedAllowanceIsNotDecremented() (gas: 115840)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 57424)\n[PASS] test_zeroTransferFromNeedsNoAllowance() (gas: 58572)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 119.44ms (198.40ms CPU time)\n\nRan 1 test for test/Reputation.invariant.t.sol:ReputationInvariantTest\n[PASS]\nReputationInvariantTest invariants:\n[PASS] invariant_allowancesMatchIndependentLedger\n[PASS] invariant_supplyAndBalancesMatchIndependentLedger\n ReputationInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------------+----------------------------+-------+---------+----------╮\n| Contract          | Selector                   | Calls | Reverts | Discards |\n+=============================================================================+\n| ReputationHandler | approve                    | 1626  | 0       | 0        |\n|-------------------+----------------------------+-------+---------+----------|\n| ReputationHandler | approveBoundary            | 1644  | 0       | 0        |\n|-------------------+----------------------------+-------+---------+----------|\n| ReputationHandler | approveZeroSpender         | 1612  | 0       | 0        |\n|-------------------+----------------------------+-------+---------+----------|\n| ReputationHandler | roundTrip                  | 1707  | 0       | 0        |\n|-------------------+----------------------------+-------+---------+----------|\n| ReputationHandler | transfer                   | 1609  | 0       | 0        |\n|-------------------+----------------------------+-------+---------+----------|\n| ReputationHandler | transferAboveBalance       | 1608  | 0       | 0        |\n|-------------------+----------------------------+-------+---------+----------|\n| ReputationHandler | transferFrom               | 1597  | 0       | 0        |\n|-------------------+----------------------------+-------+---------+----------|\n| ReputationHandler | transferFromAboveAllowance | 1657  | 0       | 0        |\n|-------------------+----------------------------+-------+---------+----------|\n| ReputationHandler | transferFromAboveBalance   | 1705  | 0       | 0        |\n|-------------------+----------------------------+-------+---------+----------|\n| ReputationHandler | transferToZero             | 1619  | 0       | 0        |\n╰-------------------+----------------------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.36s (4.36s CPU time)\n\nRan 3 test suites in 4.36s (4.60s CPU time): 44 tests passed, 0 failed, 0 skipped (44 total tests)\n","passed":true},{"durationMs":34,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Reputation.approve(address,uint256)\",\"Reputation.transfer(address,uint256)\",\"Reputation.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":106,\"foundry.toml\":22,\"src/Reputation.sol\":16,\"test/Reputation.edge.t.sol\":281,\"test/Reputation.invariant.t.sol\":209,\"test/Reputation.t.sol\":321,\"test/TestBase.sol\":34},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"9df5de9ae17fbfdb32cfaebb4f88f48c33328b8201ebc35fc1fe0d204084fb11","verifiedTreeHash":"168328d92e39143f3349873ef2776dd80a729c7d","verifierVersion":"0.1.0+ad90ce4c"},{"checks":[{"durationMs":340,"exitCode":0,"name":"build","output":"Compiling 9 files with Solc 0.8.26\nSolc 0.8.26 finished in 288.80ms\nCompiler run successful!\n","passed":true},{"durationMs":2369,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 28 tests for test/Reputation.t.sol:ReputationTest\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256) (runs: 512, μ: 52572, ~: 52536)\n[PASS] testFuzz_transferConservesSupply(uint256,address) (runs: 512, μ: 74882, ~: 75494)\n[PASS] testFuzz_transferFromConservesSupplyAndAllowance(uint256,uint256) (runs: 512, μ: 137148, ~: 138965)\n[PASS] test_approvalEmitsEventAndCanBeReplacedAndRevoked() (gas: 171465)\n[PASS] test_approvalToZeroSpenderReverts() (gas: 30561)\n[PASS] test_constructorEmitsMintTransfer() (gas: 5513)\n[PASS] test_factoryGetsWholeSupplyAndDistributionArrivesWhole() (gas: 404185)\n[PASS] test_metadataAndInitialSupply() (gas: 66453)\n[PASS] test_mintBurnAndAdminSelectorsAreUnavailable() (gas: 1055802)\n[PASS] test_runtimeHasNoPrivilegedExecutionOpcodes() (gas: 473512)\n[PASS] test_selfTransferPreservesBalance() (gas: 42725)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 33540)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 79844)\n[PASS] test_transferFromByHolderStillRequiresAllowance() (gas: 33641)\n[PASS] test_transferFromCannotSpendWithoutAllowance() (gas: 97016)\n[PASS] test_transferFromDeliversExactAmountAndConsumesAllowance() (gas: 195407)\n[PASS] test_transferFromExcessAllowanceRevertsWithoutChangingState() (gas: 100209)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 106020)\n[PASS] test_transferFromToSelfConsumesAllowanceWithoutChangingBalance() (gas: 98869)\n[PASS] test_transferFromToZeroRollsBackAllowance() (gas: 102984)\n[PASS] test_transferFromZeroSenderRevertsEvenForZeroAmount() (gas: 33133)\n[PASS] test_transferInsufficientBalanceReverts() (gas: 45168)\n[PASS] test_transferToContractDoesNotCallRecipient() (gas: 168261)\n[PASS] test_transferToZeroRevertsIncludingZeroAmount() (gas: 66364)\n[PASS] test_transferWholeSupply() (gas: 62712)\n[PASS] test_unlimitedAllowanceIsNotDecremented() (gas: 115840)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 57424)\n[PASS] test_zeroTransferFromNeedsNoAllowance() (gas: 58572)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 9.80ms (42.49ms CPU time)\n\nRan 1 test for test/Reputation.invariant.t.sol:ReputationInvariantTest\n[PASS]\nReputationInvariantTest invariants:\n[PASS] invariant_allowancesMatchIndependentLedger\n[PASS] invariant_supplyAndBalancesMatchIndependentLedger\n ReputationInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------------+--------------+-------+---------+----------╮\n| Contract          | Selector     | Calls | Reverts | Discards |\n+===============================================================+\n| ReputationHandler | approve      | 2766  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ReputationHandler | transfer     | 2735  | 0       | 0        |\n|-------------------+--------------+-------+---------+----------|\n| ReputationHandler | transferFrom | 2691  | 0       | 0        |\n╰-------------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.32s (2.32s CPU time)\n\nRan 2 test suites in 2.32s (2.33s CPU time): 29 tests passed, 0 failed, 0 skipped (29 total tests)\n","passed":true},{"durationMs":21,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"Reputation.approve(address,uint256)\",\"Reputation.transfer(address,uint256)\",\"Reputation.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":106,\"foundry.toml\":22,\"src/Reputation.sol\":16,\"test/Reputation.invariant.t.sol\":93,\"test/Reputation.t.sol\":321,\"test/TestBase.sol\":26},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":393,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":222,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/Reputation.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"e146cbebe9ef4ea5e6d94c86f3718e3cb4cf11e882aacf5ea7477669f827e0f9","verifiedTreeHash":"95534167ff52f6e4ecba0f0aa264618f2b6cc82f","verifierVersion":"0.1.0+ad90ce4c"}]}