{"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":"79513878-beb1-4c0c-8720-5b68fb670557","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"9a2206a7ea7991d50980c1137ee7777f6d993b411b15c17c7800d8e36fae58e3","dependsOn":["build_contract_project","manifest"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"c26edc76dc7a76e09a42c3634054429c1679c6e247747d647a03f77e5b332d7e","skillId":"adversarial-review","tools":[]},"key":"adversarial_review","kind":"code","role":"review","skillHash":"c26edc76dc7a76e09a42c3634054429c1679c6e247747d647a03f77e5b332d7e","skillId":"adversarial-review","state":"accepted"},{"acceptedSubmissionHash":"e59249798a64ba73706c12454ae8499cc3baa443f938d2ea45595ae022d8a947","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"fb6887b34514bcb194265fa403f0195c6a83eaef269da1e6189e1e9c4b372a7d","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"fb6887b34514bcb194265fa403f0195c6a83eaef269da1e6189e1e9c4b372a7d","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"0ba4d2134e6a19b7f05ded3e182bb71f0dcea24d372c7873c2e19da95b5177bd","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"}],"objective":"Build and independently review Bounty Board: token Bounty (BNTY) and contract BountyBoard, where a poster escrows BNTY behind a task hash with a deadline; anyone submits a work hash; the poster accepts one submission, which pays the submitter, or reclaims after the deadline when nothing was accepted. Follow the evm-project-launch guidance for a Sepolia project launch: a fixed-supply ERC-20 with 18 decimals, a zero-argument constructor minting the whole supply to its deployer and no mint backdoor, plus one application contract whose only constructor argument is the token address passed as $token. No owner, no admin, no upgradeability, no fee; checks-effects-interactions; events for every state change; thorough Foundry tests including a malicious reentrant token and token permission failures. The manifest names the token and the contract with the $token argument. Independent review before deployment. Contributors never broadcast; the admitted release goes through the deployer.","parentJobId":null,"planHash":"f6eaa2b12809ea616a9b962bdb4372cd2d9a93953a0514ab953178a45053d0a3","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"79513878-beb1-4c0c-8720-5b68fb670557","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/Identity-md/launch-58-build-independently-review-bounty"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"50957","feedbackHash":"7f713408c9cf914b7c8c5ef34545d88674d1f259154d6e8603d54f5fb12a75b2","nodeKey":"adversarial_review","submissionHash":"9a2206a7ea7991d50980c1137ee7777f6d993b411b15c17c7800d8e36fae58e3","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50906","feedbackHash":"c45721ae078a0453c0e6dcb59e6810a4a24569abd43079d4b5746507eccf4610","nodeKey":"build_contract_project","submissionHash":"e59249798a64ba73706c12454ae8499cc3baa443f938d2ea45595ae022d8a947","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"50950","feedbackHash":"c49d2def9de41e765a4c021e1fb7278889bcc61d3ae16182a981079d67e99eee","nodeKey":"manifest","submissionHash":"0ba4d2134e6a19b7f05ded3e182bb71f0dcea24d372c7873c2e19da95b5177bd","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"1783e896e6be9406758ada758c54aab86528e83528f74e1bfe878ccb5c3d4230","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"b5fadc646608f28a0ed2e79475aa87f915c7408c03b07a4c5c7b170da625e2a3","device":"f5dec78d5893d9dc","findings":[],"hash":"0ba4d2134e6a19b7f05ded3e182bb71f0dcea24d372c7873c2e19da95b5177bd","nodeId":"089cf9df-e9c8-49d0-aaf6-35e47102dacb","outcome":"completed","summary":"Updated only `launch.json` to match the required schema and accepted `Bounty()` / `BountyBoard($token)` constructors.\n\nValidation passed:\n- Manifest constraints and compiled constructor ABIs\n- `forge build` (with existing lint warnings)\n- `forge test`: 23 passed, 0 failed\n- `git diff --check`\n\nIndependent review remains required before deployment. No transactions were broadcast.","treeHash":"67ef92e96d7bbe1dca9a3c15e29409d782f3e031","usage":{"cachedInputTokens":94080,"inputTokens":16255,"model":null,"outputTokens":1636,"runtime":"codex","turns":3,"wallClockMs":62901}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"0256823ae36e7900","findings":[],"hash":"9a2206a7ea7991d50980c1137ee7777f6d993b411b15c17c7800d8e36fae58e3","nodeId":"2423908e-ff71-4fad-9d1b-cf0a7bebdd08","outcome":"completed","summary":"Review complete. No substantiated defects found.\n\nCreated [.imd-findings.json](/home/imd-worker/.identitymd/work/79513878-beb1-4c0c-8720-5b68fb670557/2423908e-ff71-4fad-9d1b-cf0a7bebdd08/.imd-findings.json) with an empty findings array. JSON validation passed.\n\nOffline tests could not run because Solc 0.8.26 is not installed locally.","treeHash":null,"usage":{"cachedInputTokens":112640,"inputTokens":53100,"model":null,"outputTokens":1317,"runtime":"codex","turns":3,"wallClockMs":37497}},{"artifacts":[],"attempt":1,"bundleHash":"9d6b88f9b09a1d913f903f4310b951faeb66cdc90ff69c925dd40a80d8f85458","device":"90f1f5c3374333a0","findings":[],"hash":"e59249798a64ba73706c12454ae8499cc3baa443f938d2ea45595ae022d8a947","nodeId":"69d4e155-4faa-4bb3-8cd6-8855b89d23cd","outcome":"completed","summary":"Implemented BNTY, BountyBoard escrow, launch manifest, documentation, and vendored test dependencies.\n\nValidation passed offline:\n- `forge build`\n- `forge test`: 23 passed, including reentrancy and token-failure tests\n- `forge fmt --check`\n\nSeparate independent review completed in `REVIEW.md`; no concrete defect found for the supplied BNTY token.\n\nNo transactions broadcast. Manifest schema validation and release admission remain the authorized deployer’s responsibility.","treeHash":"5eedbc6875efd339a5592b02bb2d01bd63b22a7b","usage":{"cachedInputTokens":385792,"inputTokens":24861,"model":null,"outputTokens":11229,"runtime":"codex","turns":5,"wallClockMs":444542}}],"verification":[{"checks":[{"durationMs":1355,"exitCode":0,"name":"build","output":"Compiling 25 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.27s\nCompiler run successful!\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Launch.t.sol:32:9\n   │\n32 │         token.transfer(address(board), 7);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:47:9\n   │\n47 │         token.transferFrom(address(this), alice, 10);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n   ╭▸ src/BountyBoard.sol:84:13\n   │\n84 │         if (deadline <= block.timestamp) revert InvalidDeadline();\n   │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#block-timestamp\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:50:9\n   │\n50 │         token.transfer(address(this), before);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/BountyBoard.t.sol:34:9\n   │\n34 │         token.transfer(poster, 1000 ether);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:59:9\n   │\n59 │         token.transferFrom(address(this), alice, 1);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:64:9\n   │\n64 │         token.transferFrom(alice, bob, 10);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:68:9\n   │\n68 │         token.transfer(bob, 1);\n   │         ━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n    ╭▸ test/BountyBoard.t.sol:206:9\n    │\n206 │         token.transfer(other, REWARD);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:73:9\n   │\n73 │         token.transfer(address(0), 0);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:77:9\n   │\n77 │         token.transferFrom(address(0), alice, 0);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n    ╭▸ test/Bounty.t.sol:106:9\n    │\n106 │         token.transfer(alice, amount);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n    ╭▸ test/Bounty.t.sol:108:9\n    │\n108 │         token.transfer(bob, amount);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n   ╭▸ src/BountyBoard.sol:96:13\n   │\n96 │         if (block.timestamp >= task.deadline) revert DeadlinePassed();\n   │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#block-timestamp\n\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n    ╭▸ src/BountyBoard.sol:107:13\n    │\n107 │         if (block.timestamp >= task.deadline) revert DeadlinePassed();\n    │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#block-timestamp\n\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n    ╭▸ src/BountyBoard.sol:121:13\n    │\n121 │         if (block.timestamp < task.deadline) revert DeadlinePending();\n    │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#block-timestamp\n\n","passed":true},{"durationMs":118,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/AdversarialToken.t.sol:AdversarialTokenTest\n[PASS] test_AllMutationCallbacksBlockedDuringFundingAndPayout() (gas: 396393)\n[PASS] test_AllMutationCallbacksBlockedDuringRefund() (gas: 340433)\n[PASS] test_FailedFundingRollsBackTokenAndBoardThenRetries() (gas: 963524)\n[PASS] test_FailedPayoutRollsBackAndRemainsRetryable() (gas: 555027)\n[PASS] test_FailedRefundRollsBackAndRemainsRetryable() (gas: 423016)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.93ms (1.36ms CPU time)\n\nRan 2 tests for test/Launch.t.sol:LaunchTest\n[PASS] testIndependent_BoundaryAndDonations() (gas: 1309480)\n[PASS] testIndependent_FactorySupplyAndRuntime() (gas: 3933513)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 5.44ms (5.14ms CPU time)\n\nRan 7 tests for test/Bounty.t.sol:BountyTest\n[PASS] testFuzz_TransferConservation(uint256) (runs: 256, μ: 59699, ~: 59714)\nLogs:\n  Bound result 100\n\n[PASS] test_InfiniteAllowanceAndSelfTransfer() (gas: 83694)\n[PASS] test_MetadataSupplyAndMintEvent() (gas: 366685)\n[PASS] test_NoAdministrativeSelectors() (gas: 58643)\n[PASS] test_PermissionAndBalanceFailuresRollback() (gas: 41429)\n[PASS] test_TransferAndApprovalEvents() (gas: 69518)\n[PASS] test_ZeroAddressesRejected() (gas: 20630)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 19.64ms (20.51ms CPU time)\n\nRan 9 tests for test/BountyBoard.t.sol:BountyBoardTest\n[PASS] testFuzz_MultiBountyConservation(uint96,uint96,bool) (runs: 256, μ: 543784, ~: 543614)\nLogs:\n  Bound result 18130\n  Bound result 15012\n\n[PASS] test_AcceptOneSecondBeforeDeadlineAndPosterCanSubmit() (gas: 299908)\n[PASS] test_ConstructorAndFactorySupply() (gas: 89281)\n[PASS] test_LifecyclePaysSelectedSubmitterAndEmitsEvents() (gas: 509661)\n[PASS] test_MultiplePostersAndCrossBountySubmissionIds() (gas: 546678)\n[PASS] test_PosterPermissionsAndMissingSubmissions() (gas: 388874)\n[PASS] test_ReclaimWithPendingWorkAtExactDeadline() (gas: 402063)\n[PASS] test_TokenPermissionAndBalanceFailuresLeaveNoBounty() (gas: 447289)\n[PASS] test_UnknownIdsAndInvalidInputs() (gas: 423142)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 19.67ms (20.23ms CPU time)\n\nRan 4 test suites in 20.51ms (46.68ms CPU time): 23 tests passed, 0 failed, 0 skipped (23 total tests)\n","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"0ba4d2134e6a19b7f05ded3e182bb71f0dcea24d372c7873c2e19da95b5177bd","verifiedTreeHash":"67ef92e96d7bbe1dca9a3c15e29409d782f3e031","verifierVersion":"0.1.0+1308af71"},{"checks":[{"durationMs":1106,"exitCode":0,"name":"build","output":"Compiling 25 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.04s\nCompiler run successful!\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n   ╭▸ src/BountyBoard.sol:84:13\n   │\n84 │         if (deadline <= block.timestamp) revert InvalidDeadline();\n   │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#block-timestamp\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Launch.t.sol:32:9\n   │\n32 │         token.transfer(address(board), 7);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/BountyBoard.t.sol:34:9\n   │\n34 │         token.transfer(poster, 1000 ether);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:47:9\n   │\n47 │         token.transferFrom(address(this), alice, 10);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n   ╭▸ src/BountyBoard.sol:96:13\n   │\n96 │         if (block.timestamp >= task.deadline) revert DeadlinePassed();\n   │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#block-timestamp\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:50:9\n   │\n50 │         token.transfer(address(this), before);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n    ╭▸ src/BountyBoard.sol:107:13\n    │\n107 │         if (block.timestamp >= task.deadline) revert DeadlinePassed();\n    │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#block-timestamp\n\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n    ╭▸ src/BountyBoard.sol:121:13\n    │\n121 │         if (block.timestamp < task.deadline) revert DeadlinePending();\n    │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#block-timestamp\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n    ╭▸ test/BountyBoard.t.sol:206:9\n    │\n206 │         token.transfer(other, REWARD);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:59:9\n   │\n59 │         token.transferFrom(address(this), alice, 1);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:64:9\n   │\n64 │         token.transferFrom(alice, bob, 10);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:68:9\n   │\n68 │         token.transfer(bob, 1);\n   │         ━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:73:9\n   │\n73 │         token.transfer(address(0), 0);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n   ╭▸ test/Bounty.t.sol:77:9\n   │\n77 │         token.transferFrom(address(0), alice, 0);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n    ╭▸ test/Bounty.t.sol:106:9\n    │\n106 │         token.transfer(alice, amount);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\nwarning[erc20-unchecked-transfer]: ERC20 'transfer' and 'transferFrom' calls should check the return value\n    ╭▸ test/Bounty.t.sol:108:9\n    │\n108 │         token.transfer(bob, amount);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://book.getfoundry.sh/reference/forge/forge-lint#erc20-unchecked-transfer\n\n","passed":true},{"durationMs":127,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/AdversarialToken.t.sol:AdversarialTokenTest\n[PASS] test_AllMutationCallbacksBlockedDuringFundingAndPayout() (gas: 396393)\n[PASS] test_AllMutationCallbacksBlockedDuringRefund() (gas: 340433)\n[PASS] test_FailedFundingRollsBackTokenAndBoardThenRetries() (gas: 963524)\n[PASS] test_FailedPayoutRollsBackAndRemainsRetryable() (gas: 555027)\n[PASS] test_FailedRefundRollsBackAndRemainsRetryable() (gas: 423016)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.27ms (1.28ms CPU time)\n\nRan 2 tests for test/Launch.t.sol:LaunchTest\n[PASS] testIndependent_BoundaryAndDonations() (gas: 1309480)\n[PASS] testIndependent_FactorySupplyAndRuntime() (gas: 3933513)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 5.84ms (2.98ms CPU time)\n\nRan 7 tests for test/Bounty.t.sol:BountyTest\n[PASS] testFuzz_TransferConservation(uint256) (runs: 256, μ: 59517, ~: 59714)\nLogs:\n  Bound result 48879\n\n[PASS] test_InfiniteAllowanceAndSelfTransfer() (gas: 83694)\n[PASS] test_MetadataSupplyAndMintEvent() (gas: 366685)\n[PASS] test_NoAdministrativeSelectors() (gas: 58643)\n[PASS] test_PermissionAndBalanceFailuresRollback() (gas: 41429)\n[PASS] test_TransferAndApprovalEvents() (gas: 69518)\n[PASS] test_ZeroAddressesRejected() (gas: 20630)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 6.16ms (5.52ms CPU time)\n\nRan 9 tests for test/BountyBoard.t.sol:BountyBoardTest\n[PASS] testFuzz_MultiBountyConservation(uint96,uint96,bool) (runs: 256, μ: 543830, ~: 543619)\nLogs:\n  Bound result 1390\n  Bound result 19457\n\n[PASS] test_AcceptOneSecondBeforeDeadlineAndPosterCanSubmit() (gas: 299908)\n[PASS] test_ConstructorAndFactorySupply() (gas: 89281)\n[PASS] test_LifecyclePaysSelectedSubmitterAndEmitsEvents() (gas: 509661)\n[PASS] test_MultiplePostersAndCrossBountySubmissionIds() (gas: 546678)\n[PASS] test_PosterPermissionsAndMissingSubmissions() (gas: 388874)\n[PASS] test_ReclaimWithPendingWorkAtExactDeadline() (gas: 402063)\n[PASS] test_TokenPermissionAndBalanceFailuresLeaveNoBounty() (gas: 447289)\n[PASS] test_UnknownIdsAndInvalidInputs() (gas: 423142)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 38.87ms (40.06ms CPU time)\n\nRan 4 test suites in 39.74ms (52.14ms CPU time): 23 tests passed, 0 failed, 0 skipped (23 total tests)\n","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"e59249798a64ba73706c12454ae8499cc3baa443f938d2ea45595ae022d8a947","verifiedTreeHash":"5eedbc6875efd339a5592b02bb2d01bd63b22a7b","verifierVersion":"0.1.0+1308af71"}]}