{"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":"d83c6d5a-3f2a-4846-9ada-5fb5d51a2945","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"2adc8a12c28304cc60cb726edf9998e420dbb838a885fdd557fbd8b3922f5e2d","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":"8cb91a1fcc52292e81d9afb7483ecc3eba829eadac4ae53e70694dc364998ff4","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":"503b58b8efe19f52515bf479e25abed5b1373fae9d75c9a27b49f27f54eab31d","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":"b0e9d1e9393be93daae0c7bd3bcaa5346e50c58afae41768e9deebfa07fc848d","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":"fd053dd5ec93dd39e005e5abd6886fd6baf551fbede6cf3d393df5391e423118","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":"d0c07327099da3d59f4a7aa3aed4006b32fcccdcf323430cbd428a5161ba0ee1","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"47381b166d1f406a34f0ebdc740ee21bc0383e56e7ad9084b26abf1bf7570904","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"47381b166d1f406a34f0ebdc740ee21bc0383e56e7ad9084b26abf1bf7570904","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"19a3d7c2b122778e15c33d01fdc530771740ee5d14e46e6823dee40d40be6ff4","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"78d43060b5a9c2cb800c8d24aa546dc6d7a3f9323a48ba05c4aebe3345ae9320","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: Satoshi Test (SATS).\nToken name: Satoshi Test\nToken symbol: SATS\nToken supply: 21,000,000 with 18 decimals, all minted once to the deployer in the constructor.\nWhat it does: A plain fixed-supply token with no transfer rules.","parentJobId":null,"planHash":"0da6cd5dbd96e301d90539c204c58bb3c34b5a8fea9c6805d0eca87ce295c712","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"d83c6d5a-3f2a-4846-9ada-5fb5d51a2945","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-535-custom-token-satoshi-test"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"50987","feedbackHash":"7a8f9540ff5c621cafdc13568097919c20c169bf98a1777e603c66ec0e0b531e","nodeKey":"audit_economics","submissionHash":"2adc8a12c28304cc60cb726edf9998e420dbb838a885fdd557fbd8b3922f5e2d","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51198","feedbackHash":"a63715eab990a7867c307af9480d5aea4847396fd7d5667ee34344dac9398969","nodeKey":"audit_flow","submissionHash":"8cb91a1fcc52292e81d9afb7483ecc3eba829eadac4ae53e70694dc364998ff4","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50957","feedbackHash":"e2cf7dd99f30a2ec81205c1055a07cfa8e7d8339ee79229fd864a2ac59121e3f","nodeKey":"audit_judge","submissionHash":"503b58b8efe19f52515bf479e25abed5b1373fae9d75c9a27b49f27f54eab31d","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51031","feedbackHash":"04e4d28eb4c7437e8fab4c3c1807f5cb404802655968bb0a646c80d5b52036ea","nodeKey":"audit_math","submissionHash":"b0e9d1e9393be93daae0c7bd3bcaa5346e50c58afae41768e9deebfa07fc848d","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50990","feedbackHash":"c2ff86c811073de4e8e946638afdd597857225154a6e64314cb660cb4fb41cf3","nodeKey":"audit_permissions","submissionHash":"fd053dd5ec93dd39e005e5abd6886fd6baf551fbede6cf3d393df5391e423118","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50959","feedbackHash":"d2c424197d0bbee64fc08121b86481352d877c99af7b8d65605ce2306b2f56a8","nodeKey":"build_contract_project","submissionHash":"d0c07327099da3d59f4a7aa3aed4006b32fcccdcf323430cbd428a5161ba0ee1","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"50959","feedbackHash":"c14958c01825bd5eeb9e0185d14280e5766101756dc415580be3b6aae423f956","nodeKey":"manifest","submissionHash":"19a3d7c2b122778e15c33d01fdc530771740ee5d14e46e6823dee40d40be6ff4","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51333","feedbackHash":"a92ede71ee8a936d985874f55b4e35ac23ccda78a0883eb733250305cfc67a1c","nodeKey":"write_foundry_tests","submissionHash":"78d43060b5a9c2cb800c8d24aa546dc6d7a3f9323a48ba05c4aebe3345ae9320","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"b83ff6c68395577cbfefe1ba7329f232c2f48b352a44bfbbca988d844c134a4e","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"da9467ed6978942bf621764c125193f810f7c1478a9f2bc303bf9a785440baf5","device":"468e82a89b9bfe18","findings":[],"hash":"19a3d7c2b122778e15c33d01fdc530771740ee5d14e46e6823dee40d40be6ff4","nodeId":"70c407a4-592a-4441-859c-fcd1206ee0e3","outcome":"completed","summary":"`launch.json` is written and validated. The only change in the tree is the new manifest; the other untracked entries in git status are sandbox-mounted device nodes, not files I created.\n\n**What the manifest says**\n\n- `kind` is `custom_token`, token contract `SatoshiTest` with name Satoshi Test, symbol SATS, 18 decimals, empty `constructorArgs` and `totalSupply` of 21,000,000e18 in minor units, which is exactly the `INITIAL_SUPPLY` the constructor mints to msg.sender.\n- `contracts` is empty: the accepted tree holds only the token and a standalone operator deploy script, no application contracts.\n- `pool` pairs with native ETH at the zero address, fee 3000, tickSpacing 60, matching prior accepted manifests on this box. `initialPrice` is the provenance sqrtPriceX96 derived from 5 ETH over the full supply with ETH as currency0.\n- `economics` is the job's object copied verbatim.\n- `notes` (1998 chars) describe the token's fixed supply, lack of privileged functions, exact launch flows, and that the deploy script is not used by the factory.\n\n**Checks run**\n\n- `forge build --offline`: compiled cleanly with solc 0.8.26.\n- `forge test --offline`: 30 passed, 0 failed.\n- Constructor ABI in `out/` confirms zero inputs, matching the empty constructorArgs.\n- A scratch schema check (test/scratch/check.py) verified every field, pattern, length bound, the economics object, and that totalSupply equals 21,000,000 × 10^18.","treeHash":"8794c78df1ffbb0feb865e397b3e5282a1e0b6a5","usage":{"cachedInputTokens":393956,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":5514,"runtime":"claude","turns":13,"wallClockMs":79269}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"18527ba42d5b89d7","findings":[],"hash":"2adc8a12c28304cc60cb726edf9998e420dbb838a885fdd557fbd8b3922f5e2d","nodeId":"afbccc5e-da47-4ed7-a4d1-a846477d8038","outcome":"completed","summary":"Saved [.imd-findings.json](/home/imd/.identitymd/work/d83c6d5a-3f2a-4846-9ada-5fb5d51a2945/afbccc5e-da47-4ed7-a4d1-a846477d8038/.imd-findings.json) with no substantiated findings and coverage for all three entry points.\n\nAll 30 tests passed, including four fuzz tests. Protected pool-integration execution remains unverified because required dependencies and launch inputs are absent.","treeHash":null,"usage":{"cachedInputTokens":433920,"inputTokens":81896,"model":"gpt-6-astra","outputTokens":4614,"runtime":"codex","turns":4,"wallClockMs":162698}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"0256823ae36e7900","findings":[],"hash":"503b58b8efe19f52515bf479e25abed5b1373fae9d75c9a27b49f27f54eab31d","nodeId":"1d0c3a00-59c4-4365-bc87-b0c6ad7903eb","outcome":"completed","summary":"No reproducible defects found. Wrote [.imd-findings.json](/home/imd-worker/.identitymd/work/d83c6d5a-3f2a-4846-9ada-5fb5d51a2945/1d0c3a00-59c4-4365-bc87-b0c6ad7903eb/.imd-findings.json) with empty findings and all three entry points marked `holds`.\n\nOffline Foundry validation: **61 passed, 0 failed**, including invariant testing. Protected pool integration remains unverified because required dependencies and deployment inputs are absent. Implementation files are unchanged.","treeHash":null,"usage":{"cachedInputTokens":680192,"inputTokens":68982,"model":"gpt-6-astra","outputTokens":3733,"runtime":"codex","turns":4,"wallClockMs":173322}},{"artifacts":[],"attempt":1,"bundleHash":"b0f4278d0ba333d6f9f711376b11e2a91bf57af054dfd6b7b65007f24f372c3d","device":"41f7c1458e1278ad","findings":[],"hash":"78d43060b5a9c2cb800c8d24aa546dc6d7a3f9323a48ba05c4aebe3345ae9320","nodeId":"49ffe49a-cc31-4055-be6f-0baa76ec68ba","outcome":"completed","summary":"Done. `forge build` and `forge test` both pass: 61 tests across three suites, 0 failures. No defects were found, so no `.imd-findings.json` was written.\n\n**What I added** (two new files, nothing existing rewritten):\n\n- `test/SatoshiTest.invariant.t.sol` adds the invariant suite the acceptance criteria required. A handler drives the token from six actors with raw and clamped entry points, an adversarial layer that fires unimplemented selectors and plain ether at the contract, and a donation handler that sends tokens to the token's own address. It keeps an independent model of balances and allowances and asserts after every call that the token did what the model predicts or reverted with exactly the predicted error, including OpenZeppelin's allowance-before-receiver-before-balance ordering. Seven invariants cover constant supply, sum of balances equals supply, model agreement for balances and allowances, tokens at the contract address never leaving, strangers holding nothing, and unchanged runtime code with zero ether. Inline config sets 256 runs at depth 64 with fail-on-revert enabled, and the campaign ran 16,384 calls with zero reverts.\n- `test/SatoshiTest.edges.t.sol` pins failure paths the existing suite skipped: maximum-uint amounts, exact-boundary and max-minus-one allowances, the zero address in every argument position, the owner spending from itself without self-approval, approvals overwriting rather than accumulating, transferFrom emitting a Transfer but no Approval, reverted calls emitting nothing, tokens stuck at the contract address, and independence of a second deployment. Fuzz tests at 1000 runs check round-trip, split-versus-single transfer metamorphism across two deployments, and infinite-allowance behaviour.\n\n**Verification beyond the green run.** A scratch mutant that over-credited the model by one wei failed five invariants with a shrunk two-call sequence, so the suite is not vacuous. I also diffed the vendored OpenZeppelin files against upstream v5.7.0: ERC20.sol differs only in import order and the renamed IERC6093 path, with identical logic, and the other files match exactly.\n\n**Not a finding, worth knowing.** The invariant suite takes roughly 40 to 120 seconds depending on machine load, which is the cost of 256 runs at depth 64 with model checking in every handler.","treeHash":"251a7eae18c882f7fd4b815a34c5d4d3d0de1b2b","usage":{"cachedInputTokens":1400527,"inputTokens":578,"model":"claude-fable-5-1","outputTokens":31880,"runtime":"claude","turns":35,"wallClockMs":663455}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"29ea8835baa3dfe1","findings":[],"hash":"8cb91a1fcc52292e81d9afb7483ecc3eba829eadac4ae53e70694dc364998ff4","nodeId":"3e73a84a-1170-4ea2-bb1d-462b2c75a93b","outcome":"completed","summary":"Recorded no substantiated defects and coverage of all three entry points in [.imd-findings.json](/home/seat/.identitymd/work/d83c6d5a-3f2a-4846-9ada-5fb5d51a2945/3e73a84a-1170-4ea2-bb1d-462b2c75a93b/.imd-findings.json).\n\nAll 30 local tests passed. Protected seed-and-swap integration remains unverified because required dependencies are absent.","treeHash":null,"usage":{"cachedInputTokens":405888,"inputTokens":76286,"model":"gpt-6-astra","outputTokens":3883,"runtime":"codex","turns":4,"wallClockMs":155850}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"5fb4f77b3d119b1d","findings":[],"hash":"b0e9d1e9393be93daae0c7bd3bcaa5346e50c58afae41768e9deebfa07fc848d","nodeId":"2e4895fa-f07d-4062-9a47-6ece71eb9491","outcome":"completed","summary":"Wrote [.imd-findings.json](/root/.identitymd/work/d83c6d5a-3f2a-4846-9ada-5fb5d51a2945/2e4895fa-f07d-4062-9a47-6ece71eb9491/.imd-findings.json).\n\n- No substantiated defects.\n- All three entry points covered.\n- 30 local tests passed.\n- Protected pool/swap tests remain unexecuted because required dependencies and deployment inputs are absent.\n\nNo source or configuration files changed.","treeHash":null,"usage":{"cachedInputTokens":363008,"inputTokens":64550,"model":"gpt-6-astra","outputTokens":4286,"runtime":"codex","turns":4,"wallClockMs":150524}},{"artifacts":[],"attempt":1,"bundleHash":"848594aabc30cef116c332d4ccc92fb37f8c25802a92b499af760e9201f4889c","device":"468e82a89b9bfe18","findings":[],"hash":"d0c07327099da3d59f4a7aa3aed4006b32fcccdcf323430cbd428a5161ba0ee1","nodeId":"75a5026d-c24b-4e15-b1f7-d10a8ca5a68d","outcome":"completed","summary":"The deliverable is complete and verified.\n\n**What was built**\n\n- `src/SatoshiTest.sol` is a two-line contract over OpenZeppelin v5.7.0 `ERC20`. The constructor mints 21,000,000 × 10^18 SATS to `msg.sender` once. It has no constructor arguments, no owner, no mint, burn, pause, blacklist, fee, hook, receive or fallback, so the launch factory receives the whole supply and every launch flow moves exact amounts.\n- `script/Deploy.s.sol` reads only the optional `EXPECTED_CHAIN_ID` (0 disables the check, otherwise it must be 31337 or 11155111 and match the live chain), deploys exactly one contract between the broadcast markers, and exposes `deploy()` and `checkChain()` for direct testing.\n- `test/SatoshiTest.t.sol` has 30 tests: metadata and supply, CREATE2 deployment by a contract, transfer and approve success paths and events, six distinct revert paths with exact OZ custom errors, the same 10 mint/admin and 12 freeze/seize selector probes the protected floor test uses, an opcode scan for DELEGATECALL/CALLCODE/SELFDESTRUCT, EIP-170 size, the deploy script's guard, and four fuzz tests on supply conservation and allowance handling.\n- `lib/` holds the OZ ERC20 subset and forge-std 1.16.2 as plain files with licences; no submodules, no remote imports.\n- `README.md` documents rules, manifest values (decimals 18, totalSupply `21000000000000000000000000`, empty constructorArgs), offline build steps, the operator-only deploy command, operational responsibilities and assumptions. `REVIEW.md` records the checklist pass, how each floor check is mirrored, and what was re-run.\n\n**Verification results**\n\n| Check | Result |\n| --- | --- |\n| `forge build --offline` (solc 0.8.26) | compiles, no warnings |\n| `forge test --offline` | 30 passed, 0 failed |\n| `forge fmt --check` | clean |\n| `EXPECTED_CHAIN_ID=0 forge script …Deploy --offline` | runs, one deployment |\n\nThe protected floor test itself could not be run here since it imports the factory repository's helper libraries, which are not part of this task's inputs. Its token-level checks are reproduced in the delivered suite. Slither and Mythril were not available and did not run.","treeHash":"c601e3b06e130036905d96a1a4bf26e54d421467","usage":{"cachedInputTokens":916190,"inputTokens":546,"model":"claude-fable-5-1","outputTokens":19044,"runtime":"claude","turns":18,"wallClockMs":323062}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"1f805d33d69c340e","findings":[],"hash":"fd053dd5ec93dd39e005e5abd6886fd6baf551fbede6cf3d393df5391e423118","nodeId":"8757c4ce-e31a-47ce-b844-e1c92fd405d8","outcome":"completed","summary":"Wrote [.imd-findings.json](/root/.identitymd/work/d83c6d5a-3f2a-4846-9ada-5fb5d51a2945/8757c4ce-e31a-47ce-b844-e1c92fd405d8/.imd-findings.json) with no substantiated defects and coverage for all three entry points.\n\nAll 30 local Foundry tests passed. Full protected launch integration remains unverified because required service dependencies and launch inputs are absent. No source or configuration files changed.","treeHash":null,"usage":{"cachedInputTokens":509056,"inputTokens":83877,"model":"gpt-6-astra","outputTokens":4464,"runtime":"codex","turns":4,"wallClockMs":175880}}],"verification":[{"checks":[{"durationMs":1529,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.36s\nCompiler run successful!\n","passed":true},{"durationMs":561,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 30 tests for test/SatoshiTest.t.sol:SatoshiTestTest\n[PASS] testFuzz_chainOfTransfersConservesSupply(uint8,uint256) (runs: 256, μ: 3499474, ~: 891721)\n[PASS] testFuzz_transferAboveBalanceReverts(uint256,uint256) (runs: 256, μ: 94064, ~: 94429)\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 80895, ~: 81199)\n[PASS] testFuzz_transferFromRespectsAllowance(uint256,uint256) (runs: 256, μ: 119352, ~: 143012)\n[PASS] test_approveAndTransferFrom() (gas: 159543)\n[PASS] test_approveEmitsEvent() (gas: 61408)\n[PASS] test_approveZeroAddressSpenderReverts() (gas: 33115)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 18209)\n[PASS] test_deployScriptChainGuard() (gas: 907372)\n[PASS] test_deployScriptDeploysOneTokenToCaller() (gas: 1424109)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 120469)\n[PASS] test_metadata() (gas: 29774)\n[PASS] test_noMintOrAdminFunctionExists() (gas: 667317)\n[PASS] test_noPrivilegedCallMovesOrFreezesAHolder() (gas: 461975)\n[PASS] test_runtimeFitsEip170() (gas: 5292)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 732739)\n[PASS] test_supplyGoesToWhoeverDeploys_evenAContract() (gas: 197036)\n[PASS] test_supplyIsFixedAndMintedToDeployer() (gas: 27933)\n[PASS] test_transfer() (gas: 84392)\n[PASS] test_transferEmitsEvent() (gas: 66744)\n[PASS] test_transferFromAboveAllowanceReverts() (gas: 88306)\n[PASS] test_transferFromAboveBalanceRevertsEvenWithAllowance() (gas: 88947)\n[PASS] test_transferFromEmptyAccountReverts() (gas: 38047)\n[PASS] test_transferFromWithoutAllowanceReverts() (gas: 40723)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 92938)\n[PASS] test_transferToSelfKeepsBalance() (gas: 40626)\n[PASS] test_transferToZeroAddressReverts() (gas: 33124)\n[PASS] test_transferWholeBalance() (gas: 72250)\n[PASS] test_transferZeroAmountSucceeds() (gas: 44584)\n[PASS] test_unknownSelectorAndPlainEtherAreRejected() (gas: 60720)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 418.45ms (500.47ms CPU time)\n\nRan 1 test suite in 419.45ms (418.45ms CPU time): 30 tests passed, 0 failed, 0 skipped (30 total tests)\n","passed":true},{"durationMs":79,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SatoshiTest.approve(address,uint256)\",\"SatoshiTest.transfer(address,uint256)\",\"SatoshiTest.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":109,\"REVIEW.md\":67,\"foundry.toml\":19,\"launch.json\":23,\"remappings.txt\":2,\"script/Deploy.s.sol\":46,\"src/SatoshiTest.sol\":20,\"test/SatoshiTest.t.sol\":350},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"19a3d7c2b122778e15c33d01fdc530771740ee5d14e46e6823dee40d40be6ff4","verifiedTreeHash":"8794c78df1ffbb0feb865e397b3e5282a1e0b6a5","verifierVersion":"0.1.0+9f8ef295"},{"checks":[{"durationMs":2075,"exitCode":0,"name":"build","output":"Compiling 30 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.94s\nCompiler run successful!\n","passed":true},{"durationMs":10785,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 30 tests for test/SatoshiTest.edges.t.sol:SatoshiTestEdgesTest\n[PASS] testFuzz_approvalsNeverMoveTokens(address,address,uint256) (runs: 1000, μ: 83291, ~: 85556)\n[PASS] testFuzz_failedTransferFromLeavesStateUntouched(uint256,uint256) (runs: 1000, μ: 119238, ~: 119515)\n[PASS] testFuzz_infiniteAllowanceAnySpender(address,uint256) (runs: 1000, μ: 169560, ~: 169917)\n[PASS] testFuzz_initialDistributionIsAllOrNothing(address) (runs: 1000, μ: 10179, ~: 10179)\n[PASS] testFuzz_splitTransferEqualsSingleTransfer(uint256,uint256) (runs: 1000, μ: 193917, ~: 194731)\n[PASS] testFuzz_transferFromAgreesWithTransfer(uint256,uint256) (runs: 1000, μ: 211730, ~: 213043)\n[PASS] testFuzz_transferRoundTrip(uint256) (runs: 1000, μ: 108374, ~: 108251)\n[PASS] test_allowanceCheckedBeforeBalance() (gas: 40772)\n[PASS] test_allowanceIsDirectional() (gas: 103004)\n[PASS] test_allowanceIsPerSpender() (gas: 105019)\n[PASS] test_approveMaxThenSpendEntireSupplyKeepsAllowanceInfinite() (gas: 137241)\n[PASS] test_approveOverwritesInsteadOfAccumulating() (gas: 133329)\n[PASS] test_approveZeroAmountToZeroAddressStillReverts() (gas: 33123)\n[PASS] test_approveZeroRevokes() (gas: 128420)\n[PASS] test_maxMinusOneAllowanceIsFinite() (gas: 123935)\n[PASS] test_metadataThroughStandardInterface() (gas: 36608)\n[PASS] test_ownerCannotTransferFromSelfWithoutSelfApproval() (gas: 154531)\n[PASS] test_revertedTransferEmitsNothing() (gas: 38502)\n[PASS] test_secondDeploymentIsIndependent() (gas: 167348)\n[PASS] test_tokensSentToContractAreUnrecoverable() (gas: 149782)\n[PASS] test_transferFromEmitsTransferAndNoApproval() (gas: 124128)\n[PASS] test_transferFromExactAllowanceLeavesZeroAndBlocksNextWei() (gas: 159294)\n[PASS] test_transferFromMaxUintWithMaxAllowanceRevertsOnBalance() (gas: 95984)\n[PASS] test_transferFromToZeroAddressRevertsEvenWithAllowance() (gas: 100789)\n[PASS] test_transferFromZeroAddressRevertsOnAllowance() (gas: 38418)\n[PASS] test_transferMaxUintReverts() (gas: 38599)\n[PASS] test_transferOneWeiAboveSupplyReverts() (gas: 42540)\n[PASS] test_transferZeroToZeroAddressStillReverts() (gas: 33120)\n[PASS] test_zeroAddressHoldsNothingAndCannotBeCreditedByAnyPath() (gas: 27890)\n[PASS] test_zeroValueTransferEmitsEvent() (gas: 43859)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 527.86ms (857.25ms CPU time)\n\nRan 30 tests for test/SatoshiTest.t.sol:SatoshiTestTest\n[PASS] testFuzz_chainOfTransfersConservesSupply(uint8,uint256) (runs: 256, μ: 3329373, ~: 1017706)\n[PASS] testFuzz_transferAboveBalanceReverts(uint256,uint256) (runs: 256, μ: 94093, ~: 94441)\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 80944, ~: 81187)\n[PASS] testFuzz_transferFromRespectsAllowance(uint256,uint256) (runs: 256, μ: 115159, ~: 94116)\n[PASS] test_approveAndTransferFrom() (gas: 159543)\n[PASS] test_approveEmitsEvent() (gas: 61408)\n[PASS] test_approveZeroAddressSpenderReverts() (gas: 33115)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 18209)\n[PASS] test_deployScriptChainGuard() (gas: 907372)\n[PASS] test_deployScriptDeploysOneTokenToCaller() (gas: 1424109)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 120469)\n[PASS] test_metadata() (gas: 29774)\n[PASS] test_noMintOrAdminFunctionExists() (gas: 667317)\n[PASS] test_noPrivilegedCallMovesOrFreezesAHolder() (gas: 461975)\n[PASS] test_runtimeFitsEip170() (gas: 5292)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 732739)\n[PASS] test_supplyGoesToWhoeverDeploys_evenAContract() (gas: 197036)\n[PASS] test_supplyIsFixedAndMintedToDeployer() (gas: 27933)\n[PASS] test_transfer() (gas: 84392)\n[PASS] test_transferEmitsEvent() (gas: 66744)\n[PASS] test_transferFromAboveAllowanceReverts() (gas: 88306)\n[PASS] test_transferFromAboveBalanceRevertsEvenWithAllowance() (gas: 88947)\n[PASS] test_transferFromEmptyAccountReverts() (gas: 38047)\n[PASS] test_transferFromWithoutAllowanceReverts() (gas: 40723)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 92938)\n[PASS] test_transferToSelfKeepsBalance() (gas: 40626)\n[PASS] test_transferToZeroAddressReverts() (gas: 33124)\n[PASS] test_transferWholeBalance() (gas: 72250)\n[PASS] test_transferZeroAmountSucceeds() (gas: 44584)\n[PASS] test_unknownSelectorAndPlainEtherAreRejected() (gas: 60720)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 542.13ms (889.28ms CPU time)\n\nRan 1 test for test/SatoshiTest.invariant.t.sol:SatoshiTestInvariantTest\n[PASS]\nSatoshiTestInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_balancesMatchModel\n[PASS] invariant_balancesSumToSupply\n[PASS] invariant_noEtherAndRuntimeUnchanged\n[PASS] invariant_strangersHoldNothing\n[PASS] invariant_tokensAtContractAddressNeverLeave\n[PASS] invariant_totalSupplyIsConstant\n SatoshiTestInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭----------------+-----------------------------+-------+---------+----------╮\n| Contract       | Selector                    | Calls | Reverts | Discards |\n+===========================================================================+\n| SatoshiHandler | approveMaxThenTransferFrom  | 1170  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | approveThenTransferFrom     | 1190  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | approve_raw                 | 1134  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | callForeignSelector         | 1204  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | donateToTokenContract       | 1126  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | revokeAllowance             | 1205  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | sendEther                   | 1145  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | transfer                    | 1199  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | transferAll                 | 1137  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | transferFromWithinAllowance | 1141  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | transferFrom_raw            | 1144  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | transferOneWeiAboveBalance  | 1177  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | transferToSelf              | 1206  | 0       | 0        |\n|----------------+-----------------------------+-------+---------+----------|\n| SatoshiHandler | transfer_raw                | 1206  | 0       | 0        |\n╰----------------+-----------------------------+-------+---------+----------╯\n\nLogs:\n  transfers ok: 17\n  transfers reverted as predicted: 8\n  transferFroms ok: 10\n  transferFroms reverted as predicted: 5\n  approvals ok: 20\n  approvals reverted as predicted: 0\n  foreign calls refused: 10\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 10.66s (10.66s CPU time)\n\nRan 3 test suites in 10.67s (11.73s CPU time): 61 tests passed, 0 failed, 0 skipped (61 total tests)\n","passed":true},{"durationMs":76,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SatoshiTest.approve(address,uint256)\",\"SatoshiTest.transfer(address,uint256)\",\"SatoshiTest.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":109,\"REVIEW.md\":67,\"foundry.toml\":19,\"remappings.txt\":2,\"script/Deploy.s.sol\":46,\"src/SatoshiTest.sol\":20,\"test/SatoshiTest.edges.t.sol\":390,\"test/SatoshiTest.invariant.t.sol\":382,\"test/SatoshiTest.t.sol\":350},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"78d43060b5a9c2cb800c8d24aa546dc6d7a3f9323a48ba05c4aebe3345ae9320","verifiedTreeHash":"251a7eae18c882f7fd4b815a34c5d4d3d0de1b2b","verifierVersion":"0.1.0+9f8ef295"},{"checks":[{"durationMs":839,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 742.14ms\nCompiler run successful!\n","passed":true},{"durationMs":198,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 30 tests for test/SatoshiTest.t.sol:SatoshiTestTest\n[PASS] testFuzz_chainOfTransfersConservesSupply(uint8,uint256) (runs: 256, μ: 3163922, ~: 860242)\n[PASS] testFuzz_transferAboveBalanceReverts(uint256,uint256) (runs: 256, μ: 93965, ~: 94441)\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 80937, ~: 81211)\n[PASS] testFuzz_transferFromRespectsAllowance(uint256,uint256) (runs: 256, μ: 118589, ~: 143012)\n[PASS] test_approveAndTransferFrom() (gas: 159543)\n[PASS] test_approveEmitsEvent() (gas: 61408)\n[PASS] test_approveZeroAddressSpenderReverts() (gas: 33115)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 18209)\n[PASS] test_deployScriptChainGuard() (gas: 907372)\n[PASS] test_deployScriptDeploysOneTokenToCaller() (gas: 1424109)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 120469)\n[PASS] test_metadata() (gas: 29774)\n[PASS] test_noMintOrAdminFunctionExists() (gas: 667317)\n[PASS] test_noPrivilegedCallMovesOrFreezesAHolder() (gas: 461975)\n[PASS] test_runtimeFitsEip170() (gas: 5292)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 732739)\n[PASS] test_supplyGoesToWhoeverDeploys_evenAContract() (gas: 197036)\n[PASS] test_supplyIsFixedAndMintedToDeployer() (gas: 27933)\n[PASS] test_transfer() (gas: 84392)\n[PASS] test_transferEmitsEvent() (gas: 66744)\n[PASS] test_transferFromAboveAllowanceReverts() (gas: 88306)\n[PASS] test_transferFromAboveBalanceRevertsEvenWithAllowance() (gas: 88947)\n[PASS] test_transferFromEmptyAccountReverts() (gas: 38047)\n[PASS] test_transferFromWithoutAllowanceReverts() (gas: 40723)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 92938)\n[PASS] test_transferToSelfKeepsBalance() (gas: 40626)\n[PASS] test_transferToZeroAddressReverts() (gas: 33124)\n[PASS] test_transferWholeBalance() (gas: 72250)\n[PASS] test_transferZeroAmountSucceeds() (gas: 44584)\n[PASS] test_unknownSelectorAndPlainEtherAreRejected() (gas: 60720)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 122.73ms (155.37ms CPU time)\n\nRan 1 test suite in 123.28ms (122.73ms CPU time): 30 tests passed, 0 failed, 0 skipped (30 total tests)\n","passed":true},{"durationMs":37,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SatoshiTest.approve(address,uint256)\",\"SatoshiTest.transfer(address,uint256)\",\"SatoshiTest.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"README.md\":109,\"REVIEW.md\":67,\"foundry.toml\":19,\"remappings.txt\":2,\"script/Deploy.s.sol\":46,\"src/SatoshiTest.sol\":20,\"test/SatoshiTest.t.sol\":350},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":391,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":214,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/SatoshiTest.sol:15: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"d0c07327099da3d59f4a7aa3aed4006b32fcccdcf323430cbd428a5161ba0ee1","verifiedTreeHash":"c601e3b06e130036905d96a1a4bf26e54d421467","verifierVersion":"0.1.0+9f8ef295"}]}