{"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":"ff4613b5-2892-432d-bc59-eb1215e0fef8","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"b922fe4f54857ad72b2c9e2217c76391d2cf1b6276a681b70396ed2e3a35383b","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":"2bb286f19601a2959002cb4fda063737e57b57a9f898f291542f286e7eb4d329","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":"759e3ab8fd41d3cc9904d954e7d814fa13338047551a0a0b0f40a3c02c10a9ed","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"867477e369f846f578b39705a82a8e6cd6f83e726c547a1872db1e81e1b01726","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":"9196e82e42384493703d017e0a459afc913642ce1dadfa6ed7598ec38ee4ee39","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":"858930db92f4cd73319fd699d5a8d4713dd85e5ccdcb32832e480eb1ef97808d","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"77fb991b5828c09d117dcd903ac36b6c7d28fa9f25b2c3f57bcbfda4347b1b6b","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"cb47f78f9d4f3265a8a1d240bcf777e2ad224c563dd79ecb738561a20618b76e","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: JURY (JURY).\nToken name: JURY\nToken symbol: JURY\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"b581395b2445560e8280e81df9ce1e39d6ef4491ffbed1088790ce5fc5301723","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"ff4613b5-2892-432d-bc59-eb1215e0fef8","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2444-jury"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51020","feedbackHash":"1deebfcdebe63a1b5ef9bbd4c036f8ede424edfe2f582bafe4ac4bc0a434410e","nodeKey":"audit_economics","submissionHash":"b922fe4f54857ad72b2c9e2217c76391d2cf1b6276a681b70396ed2e3a35383b","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"53910","feedbackHash":"48651390ef6f8d43d293a8adad9811ceb128f09865abf379aab767b15d683dbb","nodeKey":"audit_flow","submissionHash":"2bb286f19601a2959002cb4fda063737e57b57a9f898f291542f286e7eb4d329","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51447","feedbackHash":"c4cf91e64ebcb61c146c53ec0b2874711cdaa56000ec22606cbbffac4e239e20","nodeKey":"audit_judge","submissionHash":"759e3ab8fd41d3cc9904d954e7d814fa13338047551a0a0b0f40a3c02c10a9ed","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51514","feedbackHash":"8de19c21c5b07f1c803efe29f4629db361d2bcdedf6ea20d6ebae768e19d6d75","nodeKey":"audit_math","submissionHash":"867477e369f846f578b39705a82a8e6cd6f83e726c547a1872db1e81e1b01726","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52685","feedbackHash":"bfc7a679d06f2dae1fbc268e363049adfef2293f6c5f33d735e55d5f5bc4cb6f","nodeKey":"audit_permissions","submissionHash":"9196e82e42384493703d017e0a459afc913642ce1dadfa6ed7598ec38ee4ee39","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52272","feedbackHash":"e59a16ebe1f3f1d3d0b50bf8bca437b7ab8c51a800c860ab87451a6a40cf8182","nodeKey":"build_contract_project","submissionHash":"858930db92f4cd73319fd699d5a8d4713dd85e5ccdcb32832e480eb1ef97808d","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51290","feedbackHash":"a8a8637b38d015f682264d532376be9a41ba81ef234884a6a3474aa91e5f0391","nodeKey":"manifest","submissionHash":"77fb991b5828c09d117dcd903ac36b6c7d28fa9f25b2c3f57bcbfda4347b1b6b","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51323","feedbackHash":"7db18f7d20bc84306b10054b0192ce6e8a93f055962f41e641309b614e96c588","nodeKey":"write_foundry_tests","submissionHash":"cb47f78f9d4f3265a8a1d240bcf777e2ad224c563dd79ecb738561a20618b76e","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"f1f538a6c19e1f246f3546161804957d66f78ffc1570ed5efcadec613cd938af","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"be306690d4a9deec","findings":[{"citation":"resolved","description":"JuryToken inherits OpenZeppelin ERC20 v5.1.0 unchanged (vendored copy verified byte-identical to upstream). Its approve(spender, value) at lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol:127-130 calls _approve(owner, spender, value), which replaces the stored allowance rather than adjusting it, and transferFrom at :149-152 spends through _spendAllowance (:301-311). OpenZeppelin v5 removed increaseAllowance/decreaseAllowance and this token adds neither them nor ERC-2612 permit, so a holder who wants to lower an existing non-zero allowance has no atomic way to do it. This is the well-known ERC-20 approval race (operation interleaving across transactions, Execution Trace guide). It is a property of the ERC-20 interface, not an implementation bug, and it does not affect the launch flows (the factory, the MerkleDistributor and the Uniswap v4 PoolManager move tokens by transfer, not by allowances the token's users set). Reported at info level so the author can decide whether to document it or to add increaseAllowance/decreaseAllowance (or ERC-2612 permit) as a convenience; leaving the token as-is is a legitimate choice and does not need to block the launch. The optional fix must not change the constructor mint, the supply or the transfer semantics.","line":12,"path":"src/JuryToken.sol","reproduction":"State: alice holds JURY. Tx1 alice.approve(bob, 100e18). Tx2 (alice intends to reduce) alice.approve(bob, 50e18), but bob sees Tx2 pending and lands bob.transferFrom(alice, bob, 100e18) first; Tx2 then sets allowance to 50e18; bob.transferFrom(alice, bob, 50e18). Expected (alice's intent): bob can move at most 100e18 in total. Actual: bob moves 150e18 and the allowance ends at 0. Reproduced in test/scratch/ApproveRace.t.sol (test_spenderSpendsOldAndNewAllowance asserts balanceOf(bob) == 150e18). The same scratch file also confirms that OZ v5 grants no self-exemption: alice.transferFrom(alice, bob, 1) without a self-approval reverts with ERC20InsufficientAllowance(alice, 0, 1).","severity":"info","snippet":"contract JuryToken is ERC20 {","title":"approve() overwrites the allowance, so a spender front-running an allowance change can spend old + new amounts (inherent ERC-20 race, no increase/decreaseAllowance or permit in OZ v5)"}],"hash":"2bb286f19601a2959002cb4fda063737e57b57a9f898f291542f286e7eb4d329","nodeId":"fc620ad1-236c-414d-bfb4-e440b1518692","outcome":"completed","summary":"The review is complete and the findings file is written and valid.\n\n**Outcome:** the JURY token is clean in the assigned area. It is OpenZeppelin ERC20 v5.1.0 inherited unchanged, with a single constructor mint of 1e27 minor units to msg.sender and no other function beyond the standard surface and four constant getters. I found no defect that loses funds, breaks a launch flow, or lets anyone grow the supply or move a holder's balance.\n\n**What I verified**\n\n- **Execution trace:** traced approve, transfer and transferFrom through OpenZeppelin's _approve, _spendAllowance, _transfer and _update. Zero-address sender, receiver and spender revert, insufficient balance and allowance revert, infinite allowance is not decremented, and there are no hooks, callbacks or external calls.\n- **Periphery:** the vendored OpenZeppelin subset hashes byte-identical to upstream v5.1.0 for all five files. Context returns plain msg.sender.\n- **First principles:** the supply constant computes to exactly 1,000,000,000 × 10^18, the constructor takes no arguments and mints once, and the ABI exposes no mint, burn, owner, pause or upgrade path. The reachable-opcode scan shows no DELEGATECALL, CALLCODE, SELFDESTRUCT or CALL.\n- **Deployment target:** the cancun build uses PUSH0 and one MCOPY. An eth_call with state override on chain 4663 executed both, and the README's pair-token address returns symbol IMD with 18 decimals.\n- **Tests:** the project's 26 tests pass under the verifier's fuzz seed and forge fmt is clean.\n\n**Reported:** one info-level finding, the inherent ERC-20 approve overwrite race. A spender who front-runs an allowance reduction moves old plus new amounts. I reproduced it with concrete values in a scratch test, and stated plainly that it is a property of the standard, does not touch the launch flows, and need not block anything.\n\n**Not executed here:** the protected seed-and-swap harness depends on v4-core and LaunchLiquidity, which are not in this tree. Since the token has no tax, exemption or hook logic, those assertions reduce to plain transfers, which the project tests cover.\n\nCoverage rows answer all three listed entry points plus six invariants.","treeHash":null,"usage":{"cachedInputTokens":856556,"inputTokens":418,"model":"claude-fable-5-1","outputTokens":17296,"runtime":"claude","turns":20,"wallClockMs":252413}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e0f64c10e30e33e2","findings":[],"hash":"759e3ab8fd41d3cc9904d954e7d814fa13338047551a0a0b0f40a3c02c10a9ed","nodeId":"8430c49f-9c10-4d3f-bfbd-485366fe4b5c","outcome":"completed","summary":"I found no defects in JURY, so `.imd-findings.json` has an empty findings list plus a coverage record.\n\n**What I checked**\n- **The token:** `src/JuryToken.sol` adds nothing to the standard OpenZeppelin ERC-20 (v5.1.0, vendored). It has no owner, no other privileged functions, no fee or burn on transfer, and no mint after deployment. The constructor mints the full 1,000,000,000 tokens (1e27 minor units) once to the deployer. Because transfers take no fee, the factory's payouts, the distributor's claims and pool trades all move the exact amount.\n- **The manifest:** `launch.json` matches the code. The constructor takes no arguments and `constructorArgs` is empty, `totalSupply` is 1e27, decimals are 18, the contract name is `JuryToken`, and there are no other contracts. All keys are schema keys, and the token is far below the contract size limits.\n- **Build and tests:** `forge build` succeeds and `forge test` passes 49 of 49.\n- **Static analysis:** The aderyn \"large numeric literal\" warning points at the intended supply constant, so it isn't a defect.\n\n**The one specialist finding (dropped):** The flow specialist reported an info-level approval race: a spender who sees an allowance change coming can spend both the old and new amounts. That is standard behaviour of every ERC-20 `approve`, not a bug in this token, and it doesn't touch the launch flows, which move tokens by transfer rather than through user allowances. I didn't keep it.\n\n**Coverage:** I marked all three entry points (`approve`, `transfer`, `transferFrom`) as `holds`, plus one row for the supply and manifest check.\n\nNo source files changed. The only file written is `.imd-findings.json`, which git doesn't show as changed.","treeHash":null,"usage":{"cachedInputTokens":220978,"inputTokens":12,"model":"claude-opus-5-5","outputTokens":2567,"runtime":"claude","turns":6,"wallClockMs":60064}},{"artifacts":[],"attempt":1,"bundleHash":"18290fce4b88dd01e471c68149fcae4dcdefe7439ed5d1c691f77daaba63b9b0","device":"80750826af198795","findings":[],"hash":"77fb991b5828c09d117dcd903ac36b6c7d28fa9f25b2c3f57bcbfda4347b1b6b","nodeId":"3d6b990b-08a8-4243-8ae4-131490c79e89","outcome":"completed","summary":"Created [launch.json](launch.json) for `JuryToken` with the exact supply, empty constructor arguments, no application contracts, and the supplied pool and economics values.\n\nValidation passed against the compiled constructor ABI. `forge build` succeeded; all 26 tests passed with the supplied fuzz seed. Only `launch.json` changed.","treeHash":"a78d53f5c4a0979c446c408786cb0451cda22c4b","usage":{"cachedInputTokens":127488,"inputTokens":31778,"model":"gpt-6-astra","outputTokens":2141,"runtime":"codex","turns":3,"wallClockMs":52159}},{"artifacts":[],"attempt":1,"bundleHash":"e0226d821dbeacc91f9d018a15e92fb683c64e655967274f65ea76a16af25345","device":"ef31844bb462de78","findings":[],"hash":"858930db92f4cd73319fd699d5a8d4713dd85e5ccdcb32832e480eb1ef97808d","nodeId":"15a7fd8e-ab7b-4071-baf0-553a67c8587a","outcome":"completed","summary":"Clean rebuild, tests, and fmt check all pass. The vendored libraries are plain files with no nested .git directory, and git sees everything as regular untracked content for the harness to pick up.\n\n**Delivered: the JURY token as a root Foundry project, with all checks passing.**\n\nWhat was built:\n- `src/JuryToken.sol` is the token. The Solidity name `JuryToken` is the manifest's contract name, within the 32-character limit, while `name()` and `symbol()` both return `JURY`.\n- It inherits OpenZeppelin's ERC20 unchanged and mints the whole supply once to `msg.sender` in a no-argument constructor. The supply is 1,000,000,000 with 18 decimals, held as the public constant `TOTAL_SUPPLY`.\n- There is no owner, mint, burn, pause, blocklist, fee or ether handling. The runtime has no DELEGATECALL, CALLCODE or SELFDESTRUCT, which my tests check the same way the protected floor does.\n- `foundry.toml` pins solc 0.8.26, sets `bytecode_hash = \"none\"`, and keeps ffi off with no filesystem permissions.\n- forge-std v1.9.7 and the five OpenZeppelin v5.1.0 files ERC20 needs are vendored under `lib/` as ordinary files with their licences.\n- `script/DeployJuryToken.s.sol` is a local rehearsal script. Its `deploy()` function reads nothing from the environment and is tested directly.\n- `README.md` documents assumptions, the manifest values the launch step will use, build settings, operational responsibilities, and states that nothing needs setting after launch.\n\nVerification, run from a clean build with an empty environment and the verifier's fuzz seed:\n\n| Check | Result |\n| --- | --- |\n| forge build | passes |\n| forge test | 26 passed, 0 failed |\n| forge fmt --check | passes |\n\nThe tests cover metadata, the single constructor mint from both an EOA and a contract deployer with its Transfer event, transfer and transferFrom success paths, the failure paths for insufficient balance, zero receiver, zero spender and missing or exceeded allowance, the absence of any mint or admin entry point for both a stranger and the deployer, that the deployer cannot move a holder's balance, and fuzzed supply conservation.\n\nNothing was left out. The launch manifest is not written, as the brief requires, and nothing was deployed or signed.","treeHash":"0d0ef49ad1edb62e26cc7e06e90fe387eb270d79","usage":{"cachedInputTokens":814164,"inputTokens":482,"model":"claude-fable-5-1","outputTokens":16687,"runtime":"claude","turns":16,"wallClockMs":215717}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"4ebee02fc506f27c","findings":[],"hash":"867477e369f846f578b39705a82a8e6cd6f83e726c547a1872db1e81e1b01726","nodeId":"482ce0b2-a5ae-46f7-94cc-9ed79b37a836","outcome":"completed","summary":"The review is complete. No defects were found in the Math Precision, Boundary or Numerical Gap areas, and `.imd-findings.json` holds an empty findings list with a full coverage record.\n\n**What the code is.** `src/JuryToken.sol` is OpenZeppelin v5.1.0 `ERC20` with a no-argument constructor that mints a compile-time constant of one billion tokens at 18 decimals to the deployer. It adds no arithmetic, no external calls, no payable path, no owner and no override of `_update`. The three guides' failure modes (rounding direction, zero-rounding, overflow of intermediates, decimal mismatch, downcasts, non-standard token returns, msg.value mismatches, sentinel branches, bytes decoding) have no code to attach to.\n\n**What I executed.** The project's own 26 tests pass. I wrote and ran a scratch suite of 18 boundary probes, then deleted it since no finding needed a proof. It confirmed:\n\n- The supply literal on line 23 evaluates exactly to 1000000000000000000000000000, which answers the aderyn large-literal lead. It fits below 2^96, so the Uniswap v4 uint128 liquidity path cannot truncate it.\n- Transfers of zero, the exact balance, balance plus one and max uint behave as OpenZeppelin specifies. Self-transfers and self-transferFrom do not double a balance. The sum of balances equals supply after fuzzed and repeated transfers.\n- Allowance at max uint is never decremented, at max minus one it is decremented, and an allowance shortfall reverts before the balance check.\n- Ether and unknown selectors revert since there is no receive or fallback.\n- The launch split at this supply is exact with no dust: 10 percent, 88 percent and the 2 percent remainder sum to the supply.\n\n**Coverage.** All three ABI entry points are marked `holds`, with five extra invariant rows for the constructor mint, supply conservation, launch split arithmetic, boundary classes and decimals. Nothing in my area was left unreached. One note outside my area, not reported as a finding because the README already documents it: tokens sent to the token's own address are stuck, which is standard ERC-20 behaviour.","treeHash":null,"usage":{"cachedInputTokens":677106,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":8733,"runtime":"claude","turns":12,"wallClockMs":142609}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"776c025db24644e8","findings":[],"hash":"9196e82e42384493703d017e0a459afc913642ce1dadfa6ed7598ec38ee4ee39","nodeId":"97bc6bf1-972f-423a-8569-efc4685b05f1","outcome":"completed","summary":"The review is complete and found no defects. The findings file at `.imd-findings.json` holds an empty findings list and eight coverage rows. The working tree is otherwise clean.\n\n**What I reviewed.** JURY is a 29-line contract that inherits OpenZeppelin ERC20 unchanged and mints one billion tokens with 18 decimals to the deployer in the constructor. I applied the Access Control, Asymmetry and Trust Gap guides from the Pashov reference, plus the launch floor in the protected token test.\n\n**What held, by guide:**\n- **Access control.** The compiled ABI exposes exactly three state-changing functions: approve, transfer and transferFrom. Each acts only on the caller's own balance or allowance. There is no owner, role, modifier, initializer, proxy, receive, fallback, delegatecall or selfdestruct. Selector probes for mint, burn, burnFrom, permit, DOMAIN_SEPARATOR, trusted forwarder and increaseAllowance all revert from the deployer and from a stranger.\n- **Asymmetry.** The approve and spend pair mirrors correctly, infinite allowance is never decremented, transfer and transferFrom share one `_update` path with no fee or exemption branch, and a full self-transfer conserves balance and supply. The decimals getter and the TOKEN_DECIMALS constant agree at 18 by separate literals, so the manifest supply of 1e27 matches.\n- **Trust gap.** The only privileged position is the deployer holding the whole supply, which is the launch design where the factory distributes. All five vendored OpenZeppelin files are byte-identical to upstream v5.1.0, and the sender context is plain msg.sender with no forwarder.\n\n**Checks run.** The project's 26 tests pass, including with the verifier's fuzz seed, and `forge fmt --check` passes. My four scratch probe tests passed and were removed. Slither reported nothing. Aderyn's large-numeric-literal line at src/JuryToken.sol:23 is a style note on the supply constant, which evaluates correctly to 1e27.\n\n**Not covered.** Whether Robinhood Chain accepts Cancun-target bytecode is outside my area and the chain table was not supplied, so I did not assess it. No launch.json exists in the tree yet, so there was no manifest to validate beyond the README's stated values, which are consistent with the contract.","treeHash":null,"usage":{"cachedInputTokens":493877,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":12861,"runtime":"claude","turns":25,"wallClockMs":203661}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a31e321b410aaa02","findings":[],"hash":"b922fe4f54857ad72b2c9e2217c76391d2cf1b6276a681b70396ed2e3a35383b","nodeId":"bf3d9b30-fff9-464b-8bf6-a55da6321310","outcome":"completed","summary":"The findings file is in place and the tree is otherwise untouched. Nothing else is needed from the machine; here is the recap.\n\n## Result: no defects found in the economics area\n\n`.imd-findings.json` holds an empty findings list and seven coverage rows, all `holds`. The JURY token is a fixed-supply ERC-20 with one constructor mint and no logic of its own, so the Economic Security, Invariant and Flow Gap checklists collapse to a small set of concrete questions, each of which I verified rather than assumed.\n\n**What I verified**\n\n- **Vendored library is genuine.** All five OpenZeppelin files under `lib/` are byte-identical by SHA-256 to upstream openzeppelin-contracts v5.1.0, fetched for comparison outside the repository. This was the one place a \"plain ERC20\" token could hide a defect.\n- **Conservation invariant.** A randomized Foundry invariant run over transfer, approve and transferFrom across eight actors, including the token's own address, kept the sum of balances equal to totalSupply at exactly 10^27. The constructor is the only `_mint` caller and `_burn` has no caller.\n- **Launch flows arrive whole.** A factory stand-in deployed the token and moved 10%, 88% and 2% of the supply. The pool leg went through a PoolManager-style sync/settle balance delta and credited exactly what was sent. Distributor claim and trader buy/sell legs also moved exact amounts. The three shares are exact integers that exhaust the supply with no dust.\n- **Manifest consistency.** TOTAL_SUPPLY equals the manifest string 1000000000000000000000000000, decimals is 18, the constructor takes no arguments, and the supply goes to msg.sender, which is the factory in the launch. The aderyn large-literal lead on line 23 reduces to this and is not a defect.\n- **No dependency or reentrancy surface.** The compiled method surface is the nine ERC-20 functions plus four constant getters, with no receive or fallback. The reachable runtime contains no CALL, STATICCALL, DELEGATECALL, CALLCODE, CREATE, CREATE2 or SELFDESTRUCT.\n- **Entry-point boundaries.** Zero amounts, whole-balance moves, self-transfers, over-balance and over-allowance attempts, infinite allowance, zero-address receiver and spender, and the absence of an implicit self-allowance all behave as OZ v5 specifies, reverting before any write.\n\n**Notes that are not findings**\n\n- The reachable runtime contains one MCOPY opcode, emitted by solc 0.8.26 under the cancun target for the string-returning metadata getters. Robinhood Chain is an Arbitrum Orbit chain with Cancun support and the verifier built with this same profile, so I could not show a failure. The compiler target lives in `foundry.toml`, which is policy-owned.\n- Tokens sent to the token's own address are irrecoverable, and the standard ERC-20 approve front-running property applies. Both are standard behaviour the README already documents, and the validation rules exclude them.\n\nThe scratch tests I wrote under `test/scratch/` were removed after they passed, since no finding carries a proof. The working tree has no changes beyond `.imd-findings.json`.","treeHash":null,"usage":{"cachedInputTokens":887896,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":19397,"runtime":"claude","turns":33,"wallClockMs":339619}},{"artifacts":[],"attempt":1,"bundleHash":"3e614c5a39ccf000431dd00fa580df3949f9d2cd97ed08c82c2ae402e9f240d7","device":"29819a9ff9555c6f","findings":[],"hash":"cb47f78f9d4f3265a8a1d240bcf777e2ad224c563dd79ecb738561a20618b76e","nodeId":"45466787-1a5b-4c98-9451-e93a7fa81268","outcome":"completed","summary":"Added failure-path, boundary, and fuzz tests plus four-actor invariants covering supply, balances, and allowances.\n\n`forge build` and offline `forge test` passed with the supplied seed: 49 tests, zero failures. Invariants exercised 32,768 calls.\n\nOnly `test/` changed. No implementation defects found.","treeHash":"a4cd879b8035303d56b57796b8bd6ffa8bc939cb","usage":{"cachedInputTokens":548864,"inputTokens":70921,"model":"gpt-6-astra","outputTokens":14708,"runtime":"codex","turns":5,"wallClockMs":420554}}],"verification":[{"checks":[{"durationMs":1924,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.78s\nCompiler run successful!\n","passed":true},{"durationMs":196,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 1 test for test/DeployJuryToken.t.sol:DeployJuryTokenTest\n[PASS] test_deployMintsSupplyToTheScriptCaller() (gas: 1524093)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 900.93µs (419.16µs CPU time)\n\nRan 25 tests for test/JuryToken.t.sol:JuryTokenTest\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 42029, ~: 42352)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039458069318010866252116\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 97370, ~: 97837)\nLogs:\n  Bound result 6361448204348681296\n\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256) (runs: 256, μ: 156927, ~: 158965)\nLogs:\n  Bound result 156345765825865386530561760\n  Bound result 5\n\n[PASS] test_approveRevertsForZeroSpender() (gas: 32905)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 113533)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 8085)\n[PASS] test_constructorMintsWholeSupplyToDeployer() (gas: 33626)\n[PASS] test_contractDeployerReceivesSupply() (gas: 198925)\n[PASS] test_deployerCannotMoveAHoldersBalance() (gas: 166089)\n[PASS] test_eachDeploymentIsIndependent() (gas: 44983)\n[PASS] test_metadata() (gas: 58259)\n[PASS] test_noMintOrAdminEntrypointExists() (gas: 611104)\n[PASS] test_rejectsEther() (gas: 39407)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 3015843)\n[PASS] test_totalSupplyConstantIsOneBillionWithEighteenDecimals() (gas: 33216)\n[PASS] test_transferFromRevertsBeyondAllowance() (gas: 88010)\n[PASS] test_transferFromRevertsOnInsufficientBalanceEvenWithAllowance() (gas: 91622)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 47413)\n[PASS] test_transferFromSpendsAllowance() (gas: 166650)\n[PASS] test_transferFromWithInfiniteAllowanceKeepsAllowance() (gas: 135983)\n[PASS] test_transferMovesBalanceAndEmits() (gas: 96020)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 67582)\n[PASS] test_transferRevertsToZeroAddress() (gas: 32899)\n[PASS] test_transferToSelfKeepsBalance() (gas: 43907)\n[PASS] test_transferWholeBalanceAndZeroAmount() (gas: 123502)\nSuite result: ok. 25 passed; 0 failed; 0 skipped; finished in 15.97ms (59.91ms CPU time)\n\nRan 2 test suites in 17.12ms (16.87ms CPU time): 26 tests passed, 0 failed, 0 skipped (26 total tests)\n","passed":true},{"durationMs":89,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"JuryToken.approve(address,uint256)\",\"JuryToken.transfer(address,uint256)\",\"JuryToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":5,\"README.md\":132,\"foundry.toml\":21,\"launch.json\":24,\"remappings.txt\":2,\"script/DeployJuryToken.s.sol\":24,\"src/JuryToken.sol\":29,\"test/DeployJuryToken.t.sol\":20,\"test/JuryToken.t.sol\":310},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"77fb991b5828c09d117dcd903ac36b6c7d28fa9f25b2c3f57bcbfda4347b1b6b","verifiedTreeHash":"a78d53f5c4a0979c446c408786cb0451cda22c4b","verifierVersion":"0.1.0+560ab6a2"},{"checks":[{"durationMs":942,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 870.57ms\nCompiler run successful!\n","passed":true},{"durationMs":106,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 1 test for test/DeployJuryToken.t.sol:DeployJuryTokenTest\n[PASS] test_deployMintsSupplyToTheScriptCaller() (gas: 1524093)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 493.34µs (251.00µs CPU time)\n\nRan 25 tests for test/JuryToken.t.sol:JuryTokenTest\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 42029, ~: 42352)\nLogs:\n  Bound result 1000000000000000000000000001\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 97370, ~: 97837)\nLogs:\n  Bound result 387716555496070399678990175\n\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256) (runs: 256, μ: 156927, ~: 158965)\nLogs:\n  Bound result 156345765825865386530561760\n  Bound result 5\n\n[PASS] test_approveRevertsForZeroSpender() (gas: 32905)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 113533)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 8085)\n[PASS] test_constructorMintsWholeSupplyToDeployer() (gas: 33626)\n[PASS] test_contractDeployerReceivesSupply() (gas: 198925)\n[PASS] test_deployerCannotMoveAHoldersBalance() (gas: 166089)\n[PASS] test_eachDeploymentIsIndependent() (gas: 44983)\n[PASS] test_metadata() (gas: 58259)\n[PASS] test_noMintOrAdminEntrypointExists() (gas: 611104)\n[PASS] test_rejectsEther() (gas: 39407)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 3015843)\n[PASS] test_totalSupplyConstantIsOneBillionWithEighteenDecimals() (gas: 33216)\n[PASS] test_transferFromRevertsBeyondAllowance() (gas: 88010)\n[PASS] test_transferFromRevertsOnInsufficientBalanceEvenWithAllowance() (gas: 91622)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 47413)\n[PASS] test_transferFromSpendsAllowance() (gas: 166650)\n[PASS] test_transferFromWithInfiniteAllowanceKeepsAllowance() (gas: 135983)\n[PASS] test_transferMovesBalanceAndEmits() (gas: 96020)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 67582)\n[PASS] test_transferRevertsToZeroAddress() (gas: 32899)\n[PASS] test_transferToSelfKeepsBalance() (gas: 43907)\n[PASS] test_transferWholeBalanceAndZeroAmount() (gas: 123502)\nSuite result: ok. 25 passed; 0 failed; 0 skipped; finished in 8.76ms (32.65ms CPU time)\n\nRan 2 test suites in 9.74ms (9.25ms CPU time): 26 tests passed, 0 failed, 0 skipped (26 total tests)\n","passed":true},{"durationMs":49,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"JuryToken.approve(address,uint256)\",\"JuryToken.transfer(address,uint256)\",\"JuryToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":5,\"README.md\":132,\"foundry.toml\":21,\"remappings.txt\":2,\"script/DeployJuryToken.s.sol\":24,\"src/JuryToken.sol\":29,\"test/DeployJuryToken.t.sol\":20,\"test/JuryToken.t.sol\":310},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":471,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":140,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/JuryToken.sol:23: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"858930db92f4cd73319fd699d5a8d4713dd85e5ccdcb32832e480eb1ef97808d","verifiedTreeHash":"0d0ef49ad1edb62e26cc7e06e90fe387eb270d79","verifierVersion":"0.1.0+560ab6a2"},{"checks":[{"durationMs":1589,"exitCode":0,"name":"build","output":"Compiling 31 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.50s\nCompiler run successful!\n","passed":true},{"durationMs":9249,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 1 test for test/DeployJuryToken.t.sol:DeployJuryTokenTest\n[PASS] test_deployMintsSupplyToTheScriptCaller() (gas: 1524093)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 388.55µs (192.75µs CPU time)\n\nRan 25 tests for test/JuryToken.t.sol:JuryTokenTest\n[PASS] testFuzz_transferAboveBalanceReverts(uint256) (runs: 256, μ: 42053, ~: 42352)\nLogs:\n  Bound result 115792089237316195423570985008687907853269984665639564039457584007913129644130\n\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 256, μ: 97683, ~: 97849)\nLogs:\n  Bound result 387716555496070399678990175\n\n[PASS] testFuzz_transferFromWithinAllowance(uint256,uint256) (runs: 256, μ: 157198, ~: 158949)\nLogs:\n  Bound result 3530\n  Bound result 1388\n\n[PASS] test_approveRevertsForZeroSpender() (gas: 32905)\n[PASS] test_approveSetsAllowanceAndEmits() (gas: 113533)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 8085)\n[PASS] test_constructorMintsWholeSupplyToDeployer() (gas: 33626)\n[PASS] test_contractDeployerReceivesSupply() (gas: 198925)\n[PASS] test_deployerCannotMoveAHoldersBalance() (gas: 166089)\n[PASS] test_eachDeploymentIsIndependent() (gas: 44983)\n[PASS] test_metadata() (gas: 58259)\n[PASS] test_noMintOrAdminEntrypointExists() (gas: 611104)\n[PASS] test_rejectsEther() (gas: 39407)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestruct() (gas: 3015843)\n[PASS] test_totalSupplyConstantIsOneBillionWithEighteenDecimals() (gas: 33216)\n[PASS] test_transferFromRevertsBeyondAllowance() (gas: 88010)\n[PASS] test_transferFromRevertsOnInsufficientBalanceEvenWithAllowance() (gas: 91622)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 47413)\n[PASS] test_transferFromSpendsAllowance() (gas: 166650)\n[PASS] test_transferFromWithInfiniteAllowanceKeepsAllowance() (gas: 135983)\n[PASS] test_transferMovesBalanceAndEmits() (gas: 96020)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 67582)\n[PASS] test_transferRevertsToZeroAddress() (gas: 32899)\n[PASS] test_transferToSelfKeepsBalance() (gas: 43907)\n[PASS] test_transferWholeBalanceAndZeroAmount() (gas: 123502)\nSuite result: ok. 25 passed; 0 failed; 0 skipped; finished in 100.25ms (126.20ms CPU time)\n\nRan 21 tests for test/JuryTokenProperties.t.sol:JuryTokenPropertiesTest\n[PASS] testFuzz_approvalOverwritesAndIsIdempotent(uint256,uint256) (runs: 1000, μ: 211475, ~: 211542)\n[PASS] testFuzz_finiteAllowanceCanBeSpentExactlyOnce(uint256,uint256) (runs: 1000, μ: 292303, ~: 292970)\nLogs:\n  Bound result 2336\n  Bound result 401\n\n[PASS] testFuzz_infiniteAllowanceSurvivesRepeatedSpending(uint256,uint256) (runs: 1000, μ: 242060, ~: 242564)\nLogs:\n  Bound result 848\n  Bound result 1887\n\n[PASS] testFuzz_insufficientAllowancePreservesAllState(uint256,uint256) (runs: 1000, μ: 173485, ~: 174941)\nLogs:\n  Bound result 255405224793507104305\n  Bound result 115220898104424908\n\n[PASS] testFuzz_insufficientBalanceRollsBackAllowance(uint256,uint256,bool) (runs: 1000, μ: 232570, ~: 232540)\nLogs:\n  Bound result 415482623773328088092188966\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n\n[PASS] testFuzz_invalidReceiverRollsBackAllowance(uint256,bool) (runs: 1000, μ: 170277, ~: 169472)\nLogs:\n  Bound result 278615964907249229271136487\n\n[PASS] testFuzz_splitTransfersEqualOneTransfer(uint256,uint256) (runs: 1000, μ: 275448, ~: 276145)\nLogs:\n  Bound result 514884167581577922881074146\n  Bound result 416033276107733458597173183\n\n[PASS] testFuzz_transferRoundTripRestoresBalancesAndDoesNotSpendApproval(uint256) (runs: 1000, μ: 303234, ~: 303205)\nLogs:\n  Bound result 10000000000000000000\n\n[PASS] test_approvalsAreIsolatedByBothOwnerAndSpender() (gas: 409954)\n[PASS] test_constructorEmitsExactlyOneMint() (gas: 26598)\n[PASS] test_maxMinusOneAllowanceIsFinite() (gas: 199106)\n[PASS] test_maximumTransferIsRejectedWithoutOverflowOrStateChanges() (gas: 198249)\n[PASS] test_oneWeiAndLastWeiAreTransferable() (gas: 171664)\n[PASS] test_ownerCallingTransferFromStillNeedsAllowance() (gas: 219820)\n[PASS] test_replacingInfiniteAllowanceAndRevokingAreEffectiveImmediately() (gas: 359891)\n[PASS] test_selfTransferRequiresSufficientBalance() (gas: 143198)\n[PASS] test_transferFromToOwnerSpendsAllowanceButPreservesBalance() (gas: 205904)\n[PASS] test_transferFromZeroOwnerCannotCreateTokens() (gas: 115898)\n[PASS] test_zeroSenderCannotTransferOrApprove() (gas: 151389)\n[PASS] test_zeroTransfersEmitEvenWithoutBalanceOrAllowance() (gas: 127522)\n[PASS] test_zeroValueDoesNotBypassInvalidReceiverOrSpender() (gas: 180037)\nSuite result: ok. 21 passed; 0 failed; 0 skipped; finished in 101.52ms (803.15ms CPU time)\n\nRan 2 tests for test/JuryTokenInvariant.t.sol:JuryTokenInvariantTest\n[PASS]\nJuryTokenInvariantTest invariants:\n[PASS] invariant_allowancesMatchApprovalsAndSuccessfulSpending\n[PASS] invariant_balancesMatchAuthorizedNetTransfers\n[PASS] invariant_supplyIsFixedAndEveryTokenIsAccountedFor\n JuryTokenInvariantTest invariants (runs: 256, calls: 32768, reverts: 0)\n\n╭------------------+----------------------------------+-------+---------+----------╮\n| Contract         | Selector                         | Calls | Reverts | Discards |\n+==================================================================================+\n| JuryTokenHandler | approve                          | 3601  | 0       | 0        |\n|------------------+----------------------------------+-------+---------+----------|\n| JuryTokenHandler | rejectSupplyMutation             | 3552  | 0       | 0        |\n|------------------+----------------------------------+-------+---------+----------|\n| JuryTokenHandler | rejectTransferAboveBalance       | 3772  | 0       | 0        |\n|------------------+----------------------------------+-------+---------+----------|\n| JuryTokenHandler | rejectTransferFromAboveAllowance | 3681  | 0       | 0        |\n|------------------+----------------------------------+-------+---------+----------|\n| JuryTokenHandler | rejectTransferFromAboveBalance   | 3709  | 0       | 0        |\n|------------------+----------------------------------+-------+---------+----------|\n| JuryTokenHandler | rejectZeroAddress                | 3663  | 0       | 0        |\n|------------------+----------------------------------+-------+---------+----------|\n| JuryTokenHandler | transfer                         | 3540  | 0       | 0        |\n|------------------+----------------------------------+-------+---------+----------|\n| JuryTokenHandler | transferAll                      | 3672  | 0       | 0        |\n|------------------+----------------------------------+-------+---------+----------|\n| JuryTokenHandler | transferFrom                     | 3578  | 0       | 0        |\n╰------------------+----------------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 250000000000000000000000000\n  Bound result 250000000000000000000000000\n  Bound result 250000000000000000000000000\n  Bound result 4684\n  Bound result 1086394138\n  Bound result 244\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007913129646886\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007914216039166\n  Bound result 0\n  Bound result 5\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640314039457584007914216042168\n  Bound result 4\n  Bound result 8871\n  Bound result 4000000000000000000\n  Bound result 254\n  Bound result 0\n  Bound result 1234000000000000000000\n  Bound result 115792089237316195423570985008687907853269984665640314040691584007914216034324\n  Bound result 115792089237316195423570985008687907853269984665640564038223584007913129638927\n  Bound result 96\n  Bound result 13\n  Bound result 115792089237316195423570985008687907853269984665640064039457584007912043255586\n  Bound result 5831455671261438657867969995879012600699827516633267513235327\n  Bound result 24576\n  Bound result 254\n  Bound result 38321117114363310830130193\n  Bound result 127\n  Bound result 102968548835854796170681833\n  Bound result 447458485872116151704555\n  Bound result 44\n  Bound result 999999999999999999999999998\n  Bound result 100000000000000000000\n  Bound result 295289340563468011827239045\n  Bound result 9044\n  Bound result 0\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640564038223584007913129636429\n  Bound result 125\n  Bound result 0\n  Bound result 1234000000000000000000\n  Bound result 115792089237316195423570985008687907853269984665640564038223584007913129631199\n  Bound result 917292095057028589389474587\n  Bound result 471471373130226723415282882\n  Bound result 4000000000000000000\n  Bound result 127\n  Bound result 9\n  Bound result 5\n  Bound result 1000000000\n  Bound result 6000000000000000000\n  Bound result 0\n  Bound result 0\n  Bound result 3974805931588039938791699\n  Bound result 244\n  Bound result 10861\n  Bound result 95080399102199118749430786116590862538888267776194539812936183559\n  Bound result 7231\n  Bound result 0\n  Bound result 250000000000000000000000244\n  Bound result 95\n  Bound result 242\n  Bound result 0\n  Bound result 1582\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640564038223584007913129640621\n  Bound result 0\n  Bound result 1599\n  Bound result 8497\n  Bound result 1025686074746111143528\n  Bound result 10\n  Bound result 270285261257765397168470\n  Bound result 0\n  Bound result 518005640266972216734517472\n  Bound result 0\n  Bound result 10000000000000000000\n  Bound result 4995\n  Bound result 1000000000000000000000000000\n  Bound result 999999999999999999999999997\n  Bound result 242\n  Bound result 7238761453598819934444152825989070323259279035984172942446724\n  Bound result 100000000000000000000\n  Bound result 0\n  Bound result 2846\n  Bound result 856777102507195242551\n  Bound result 115792089237316195423570985008687907853269984665639564040483270082659240798606\n  Bound result 0\n  Bound result 4\n  Bound result 658114689618461495610250112\n  Bound result 658114689618461495610250111\n  Bound result 7934\n  Bound result 7231\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n  Bound result 3000000000000000000\n  Bound result 4\n  Bound result 1194\n  Bound result 2\n  Bound result 999998974313925253888851479\n  Bound result 5\n  Bound result 999999999999999999999999999\n  Bound result 5\n  Bound result 115792089237316195423570985008687907853269984665639564040483270082659240796931\n  Bound result 4\n  Bound result 0\n  Bound result 1234000000000000000000\n  Bound result 50000000000000000000\n  Bound result 1\n  Bound result 3742153011\n\n[PASS] test_handlerExercisesSuccessAndRejectionBranches() (gas: 2599961)\nLogs:\n  Bound result 250000000000000000000000000\n  Bound result 250000000000000000000000000\n  Bound result 250000000000000000000000000\n  Bound result 1\n  Bound result 1\n  Bound result 2\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 1\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639934\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 1\n  Bound result 1\n  Bound result 1\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 9.15s (9.15s CPU time)\n\nRan 4 test suites in 9.16s (9.36s CPU time): 49 tests passed, 0 failed, 0 skipped (49 total tests)\n","passed":true},{"durationMs":58,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"JuryToken.approve(address,uint256)\",\"JuryToken.transfer(address,uint256)\",\"JuryToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":5,\"README.md\":132,\"foundry.toml\":21,\"remappings.txt\":2,\"script/DeployJuryToken.s.sol\":24,\"src/JuryToken.sol\":29,\"test/DeployJuryToken.t.sol\":20,\"test/JuryToken.t.sol\":310,\"test/JuryTokenInvariant.t.sol\":288,\"test/JuryTokenProperties.t.sol\":332},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"cb47f78f9d4f3265a8a1d240bcf777e2ad224c563dd79ecb738561a20618b76e","verifiedTreeHash":"a4cd879b8035303d56b57796b8bd6ffa8bc939cb","verifierVersion":"0.1.0+560ab6a2"}]}