{"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":"9712abcc-2ead-43c1-9023-727af01986a5","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"1e5999b3e81bff6d44d43e03be9d5080e7d32f79405c32ac3d995857979ff042","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":"235927df39c59e451cce7bb80bee7fc92ff616b615ed13dbafda90f21953a6c1","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":"0e9a751093c45dfd26132504daa418d78308cc5c7cdc54b6a98c071e7155e86e","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":"3cf14626b980d57c5937d3de11dff7612c754e9833a7b30a7e8f6d5cbc069c53","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":"7f5a1b6f42ea985495b2d2a834a5c229b9e1c2e436fadd9d323c05590246b5b7","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":"9a318f40c98a2be1d4c3ec68b5f0379f13e15af69cf38f3e95945aada2580fd2","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":"d23fb52e916bb7224e7e905a8433724af12ef00a2af5c39c05889bf2923e6640","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"eed224701b892b2fdf260d464e8922a881279b30d29f1eaed7097d13c54f438c","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: Briefs.fun (BRIEFS).\nToken name: Briefs.fun\nToken symbol: BRIEFS\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"e88211b81e1694a5e596309ddabd847d35c5eb99aaf00a8c69e7ee04f20b0ef7","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"9712abcc-2ead-43c1-9023-727af01986a5","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2076-briefs-fun"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51742","feedbackHash":"a1b7e989566ae9f19d17c2695fae4be3d2375253346353fd91f5723df276cfef","nodeKey":"audit_economics","submissionHash":"1e5999b3e81bff6d44d43e03be9d5080e7d32f79405c32ac3d995857979ff042","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51142","feedbackHash":"9abb2658a0e12b22b0ca294fe9113ff4e144b7e55bc43f6eb9b6f4f9a5ef744e","nodeKey":"audit_flow","submissionHash":"235927df39c59e451cce7bb80bee7fc92ff616b615ed13dbafda90f21953a6c1","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50976","feedbackHash":"d00c399e9760e536a33e4a28e95adb015f286e9028663dca0cb537b48c2438ef","nodeKey":"audit_judge","submissionHash":"0e9a751093c45dfd26132504daa418d78308cc5c7cdc54b6a98c071e7155e86e","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52262","feedbackHash":"5d7c2b71b977d0273c4f97b35d1938b2039587e62189fd00e42438e638c29bab","nodeKey":"audit_math","submissionHash":"3cf14626b980d57c5937d3de11dff7612c754e9833a7b30a7e8f6d5cbc069c53","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52641","feedbackHash":"6a3d4eae835474b0a67d07911e25aa4096de7bc434e3a734d34d43b483be9982","nodeKey":"audit_permissions","submissionHash":"7f5a1b6f42ea985495b2d2a834a5c229b9e1c2e436fadd9d323c05590246b5b7","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51755","feedbackHash":"c526426b540be34553d938dfd19b661a56cf6b9c11813ce8c049b0d03813ce76","nodeKey":"build_contract_project","submissionHash":"9a318f40c98a2be1d4c3ec68b5f0379f13e15af69cf38f3e95945aada2580fd2","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51367","feedbackHash":"9e7096028fedf2b0158e32ba6717e572ffce67ba40f38f58ee0dd11ae88be3bf","nodeKey":"manifest","submissionHash":"d23fb52e916bb7224e7e905a8433724af12ef00a2af5c39c05889bf2923e6640","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52324","feedbackHash":"c6c0f6f2d035150189e494b05712ea9e3a439ca9be01958f3a2e81f97e7558d1","nodeKey":"write_foundry_tests","submissionHash":"eed224701b892b2fdf260d464e8922a881279b30d29f1eaed7097d13c54f438c","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"05afefe340ebc0ec4b65b8074e5d686f57e830448f2ba01e073f534b62911ff0","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"9b06782c7559b54c","findings":[{"citation":"resolved","description":"README.md line 30 and lib/DEPENDENCIES.md lines 11-12 tell a reviewer or release operator to verify the vendored sources with `sha256sum -c lib/SHA256SUMS` and state that 'Upstream source files are unmodified.' On the committed tree (HEAD, git status clean) that command reports 7 FAILED entries, all under lib/forge-std/src: StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol. I reproduced it and established the cause: I downloaded both upstream archives named in lib/DEPENDENCIES.md (forge-std v1.9.7, SHA-256 45157353ab49eab01d294565866731e599b32401757229689ee459aa26b7ee94; OpenZeppelin v5.0.2, SHA-256 18c7b7e949b9a82dcd8cd394426c9c2636dfc263aa2317d4749dbfa0c7b3925a; both archive hashes match the file). All 36 hashes in lib/SHA256SUMS match the upstream archive files exactly, so the list is a genuine upstream manifest and the 7 committed files were changed after it was written. Diffing each of the 7 against upstream shows only line re-wrapping (forge fmt style); after stripping all whitespace, every vendored file hashes identically to its upstream copy. All 6 OpenZeppelin files, the only vendored code that reaches the deployed BriefsToken bytecode, are byte-identical to upstream. Impact: no behavioural or bytecode effect on the token, and the test library's semantics are intact. The defect is that the project's own stated integrity evidence is false as shipped: anyone following the README gets a FAILED result and cannot distinguish this benign reformat from a tampered test library (StdAssertions.sol, which every test assertion runs through, is among the mismatched files) without redoing the upstream comparison. Merged from four identical reports (audit_flow, audit_economics, audit_math, audit_permissions). Fix: either restore the 7 files byte-for-byte from the v1.9.7 archive so the recorded hashes and the 'unmodified' statement hold, or regenerate lib/SHA256SUMS from the committed files and state in lib/DEPENDENCIES.md that forge-std was reformatted. Note that lib/ is outside the contributor write set, so if only README.md can be edited, the README must at least stop claiming the check passes and describe the reformat.","line":30,"path":"README.md","reproduction":"State: the committed tree at HEAD, clean working copy. Input: from the repository root run `sha256sum -c lib/SHA256SUMS` exactly as README.md:30 instructs. Expected (per README.md:30 and lib/DEPENDENCIES.md:11-12): every line OK, exit status 0. Actual: 29 OK and 7 FAILED (lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol), 'sha256sum: WARNING: 7 computed checksums did NOT match', exit status 1. Concrete values: lib/SHA256SUMS line 18 records 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1 for lib/forge-std/src/Vm.sol; `sha256sum lib/forge-std/src/Vm.sol` prints a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15. lib/SHA256SUMS line 5 records d4c89eec70d267dec6188461fbc74d3dc8c47e518d176a23417533a232ed9780 for StdAssertions.sol; the committed file hashes to 3fbf4a025b4fc94eaca4c38c1f3dacb37bee10f12ee81994cfaf365ac1ce7384. Cause check: extract https://codeload.github.com/foundry-rs/forge-std/tar.gz/refs/tags/v1.9.7 (archive SHA-256 45157353ab49...7ee94 as DEPENDENCIES.md records); `sha256sum forge-std-1.9.7/src/Vm.sol` prints the 9068805b... value the list records; `diff -w forge-std-1.9.7/src/Vm.sol lib/forge-std/src/Vm.sol` is empty and `tr -d ' \\t\\n\\r' < file | sha256sum` is identical for upstream and vendored copies of all 7 files. `cmp` of each of the 6 lib/openzeppelin-contracts files against openzeppelin-contracts-5.0.2 reports them identical.","severity":"low","snippet":"All source dependencies are ordinary files in `lib/`, including their licenses. No dependency download, submodule, RPC connection, wallet, environment configuration file, FFI, or filesystem cheatcode access is required to build or test. The compiler itself is provided by the build environment, not vendored here. See [`lib/DEPENDENCIES.md`](lib/DEPENDENCIES.md) for versions and archive hashes; `sha256sum -c lib/SHA256SUMS` checks the vendored files.","title":"Documented vendored-dependency integrity check fails: lib/SHA256SUMS does not match 7 committed forge-std files (whitespace-only reformat, no bytecode impact)"}],"hash":"0e9a751093c45dfd26132504daa418d78308cc5c7cdc54b6a98c071e7155e86e","nodeId":"be63fd33-3cda-4af0-8015-ffea8b0c755f","outcome":"completed","summary":"The findings file is written and valid. No repository files were changed.\n\n**Outcome.** The BRIEFS token is a plain, unmodified OpenZeppelin v5.0.2 ERC-20 with one constructor mint of exactly the manifest's supply to msg.sender. I found no defect in the token or the manifest. One low finding survives, merged from four duplicate specialist reports.\n\n**Finding kept (low).** The README and lib/DEPENDENCIES.md tell operators to run the vendored-file checksum and claim upstream sources are unmodified. On the committed tree that check fails for seven forge-std files. I reproduced the cause: both upstream archives hash to the values DEPENDENCIES.md records, every hash in lib/SHA256SUMS matches the upstream archive, and the seven committed files differ from upstream only in whitespace. All six OpenZeppelin files, the only vendored code in the deployed bytecode, are byte-identical to upstream. The impact is false integrity evidence, not token behaviour. The finding is anchored at README.md:30 because lib/ is outside the contributor write set.\n\n**Dropped.** The two informational notes from the permissions specialist, the ERC-20 approve race and zero-value transferFrom emitting an event, reproduce against the OpenZeppelin code but are standard, documented semantics the brief asks for. They are not defects, so they are not reported.\n\n**Own review.** I checked the compiled ABI, bytecode size and opcodes, the constructor, the manifest fields and the test suite:\n\n| Check | Result |\n| --- | --- |\n| Nonpayable entry points | approve, transfer, transferFrom only |\n| Creation / runtime size | 2,641 / 1,752 bytes |\n| Forbidden opcodes | none |\n| Test suite with the pinned seed | 53 passed, 0 failed |\n| forge fmt --check | clean |\n\n**Coverage.** All three entry points are recorded as holds, with five extra invariant rows covering the mint, supply immutability, deployability, the manifest and the tests.","treeHash":null,"usage":{"cachedInputTokens":388694,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":9511,"runtime":"claude","turns":14,"wallClockMs":161405}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"ce319efac2b76da0","findings":[{"citation":"resolved","description":"README.md line 30 and lib/DEPENDENCIES.md line 12 tell the reviewer and the launch operator to run `sha256sum -c lib/SHA256SUMS` to check the vendored files, and lib/DEPENDENCIES.md line 11 states 'Upstream source files are unmodified.' Both statements are false for the tree as shipped: seven forge-std v1.9.7 files (StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol) differ from the upstream v1.9.7 archive and from the hashes recorded in lib/SHA256SUMS. I downloaded the upstream archive (its SHA-256 matches the one recorded in DEPENDENCIES.md) and compared: every difference is whitespace/line-wrapping only (the files were evidently passed through `forge fmt`); with all whitespace stripped the vendored and upstream files hash identically, so the assertion library's semantics are intact and the test evidence is not weakened. The OpenZeppelin v5.0.2 files, which are the only vendored code that reaches the deployed bytecode, are byte-identical to upstream and pass the checksum. The defect is therefore limited to the integrity manifest and the documentation being wrong about the shipped tree: anyone who follows the README's instruction gets a failure and cannot distinguish this benign reformatting from a tampered test library without repeating the upstream comparison I did. Fix: either regenerate lib/SHA256SUMS from the files actually shipped, or restore the seven files to their byte-exact upstream content so the recorded hashes and the 'unmodified' claim hold. Outside the assigned economics area; reported because it is concrete and reproducible, not because it affects token behaviour. Note this file is under lib/, which the task marks as not modifiable by contributors, so the fix belongs to whoever owns the vendoring step.","line":5,"path":"lib/SHA256SUMS","reproduction":"From the repository root run `sha256sum -c lib/SHA256SUMS`. Expected (per README.md:30 and lib/DEPENDENCIES.md:12): every line OK, exit code 0. Actual: 29 OK, 7 FAILED (lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol), 'WARNING: 7 computed checksums did NOT match', exit code 1. `sha256sum lib/forge-std/src/StdAssertions.sol` gives 3fbf4a025b4fc94eaca4c38c1f3dacb37bee10f12ee81994cfaf365ac1ce7384 while line 5 of lib/SHA256SUMS records d4c89eec70d267dec6188461fbc74d3dc8c47e518d176a23417533a232ed9780. Downloading https://codeload.github.com/foundry-rs/forge-std/tar.gz/refs/tags/v1.9.7 (archive SHA-256 45157353ab49eab01d294565866731e599b32401757229689ee459aa26b7ee94, matching DEPENDENCIES.md) and running `diff forge-std-1.9.7/src/StdAssertions.sol lib/forge-std/src/StdAssertions.sol` shows 36 changed lines, all re-wrapping of function signatures; `tr -d ' \\t\\n\\r' < each | sha256sum` is identical for upstream and vendored copies of all seven files.","severity":"low","snippet":"d4c89eec70d267dec6188461fbc74d3dc8c47e518d176a23417533a232ed9780  lib/forge-std/src/StdAssertions.sol","title":"Shipped vendored-dependency checksum list does not match the vendored forge-std files, so the documented integrity check fails"}],"hash":"1e5999b3e81bff6d44d43e03be9d5080e7d32f79405c32ac3d995857979ff042","nodeId":"7b057949-9c7c-4a1a-9a09-f9d4979a8076","outcome":"completed","summary":"The review is complete and `.imd-findings.json` holds the result. The scratch test directory is removed, so the only file I left is the findings file.\n\n**Outcome: the token's economics, invariants and launch flows hold. One low finding, outside my area, about the shipped dependency checksums.**\n\nWhat I checked in the assigned area, against the Economic Security, Invariant and Flow Gap guides:\n\n- **Source and dependency identity.** The token at `src/BriefsToken.sol` is a plain OpenZeppelin v5.0.2 ERC20 with one constructor mint to msg.sender. I downloaded the upstream v5.0.2 archive and the five vendored OpenZeppelin files are byte-identical to it, so the transfer and allowance logic is the genuine library. The compiled ABI exposes only the standard ERC-20 surface plus the supply constant, and the runtime has no external calls, no receive or fallback, and none of the forbidden opcodes.\n- **Conservation and supply.** Minting is reachable only from the constructor. Transfers to the zero address revert before any burn path, and nothing overrides the internal update hook. The sum of balances equals the fixed supply after every operation. The project's 37 tests and invariant suite pass with the README's seed, and my own probe reproduced the exact launch split with the real amounts: 10 percent to the distributor, 80 percent to the pool manager, 10 percent to the remainder address, with zero dust and no supply change.\n- **Launch flows.** Factory to distributor, distributor to claimants, factory to PoolManager, PoolManager take to a trader, and trader settle back via transferFrom all move exactly the stated amount. The deployer cannot pull a holder's balance without an allowance. Infinite allowances are preserved, finite ones decremented, and a failed transferFrom rolls back the allowance spend.\n- **Opening economics.** A 3,500 IMD cap over the full supply gives a price well inside Uniswap v4's sqrt-price bounds in either currency ordering, and the manifest's initialPrice is provenance only, so there is no token-side defect there.\n\nThe one finding: the README and `lib/DEPENDENCIES.md` tell readers to verify vendored files with the shipped checksum list, but that check fails on seven forge-std files. I diffed them against the upstream v1.9.7 archive and every difference is whitespace from reformatting, so the assertion library is semantically intact and the test evidence stands. The integrity manifest and the \"unmodified\" claim are nonetheless wrong for the tree as shipped. I rated it low and noted it sits under `lib/`, which contributors may not touch, so the fix belongs to the vendoring step.\n\nCoverage rows cover all three listed entry points as `holds`, plus five invariant and economics rows and one `finding` row for the checksum list. Nothing in the assigned area was left unreached.","treeHash":null,"usage":{"cachedInputTokens":833439,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":18464,"runtime":"claude","turns":34,"wallClockMs":285344}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"e57a8e639cccfbab","findings":[{"citation":"resolved","description":"Periphery check. The README and lib/DEPENDENCIES.md state that the vendored files are unmodified upstream sources and that `sha256sum -c lib/SHA256SUMS` verifies them. In the committed tree that command reports 7 FAILED entries: lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol and interfaces/IMulticall3.sol. The hashes in lib/SHA256SUMS are the genuine upstream forge-std v1.9.7 hashes (I downloaded the archive whose SHA-256 DEPENDENCIES.md cites, 45157353ab49...ee94, and its files match the listed sums), so the committed files were reformatted after the sums were written. Diffing every vendored file against the upstream archives shows the 7 differences are whitespace/line-wrapping only (identical after stripping whitespace), and all 6 OpenZeppelin v5.0.2 files are byte-identical to upstream, so the deployed token's dependency is intact and there is no behavioural impact. The defect is that the project's own integrity evidence is broken: a reviewer following the README gets a FAILED result and cannot tell a cosmetic reformat from tampering of the test library (StdAssertions.sol, which every assertion in the test suite runs through, is among the mismatched files) without re-fetching upstream as I did. Fix: either restore the 7 files to their upstream bytes, or regenerate lib/SHA256SUMS from the committed files and state in DEPENDENCIES.md that forge-std was reformatted.","line":30,"path":"README.md","reproduction":"State: the committed tree at HEAD (git status clean). Input: run `sha256sum -c lib/SHA256SUMS` from the repository root, exactly as README.md line 30 instructs. Expected: every line reports OK, as the README's claim 'checks the vendored files' and DEPENDENCIES.md's 'Upstream source files are unmodified' imply. Actual: exit status 1 and `sha256sum: WARNING: 7 computed checksums did NOT match` for lib/forge-std/src/StdAssertions.sol, StdJson.sol, StdToml.sol, Vm.sol, console.sol, interfaces/IERC7540.sol, interfaces/IMulticall3.sol. For example lib/SHA256SUMS line 18 lists 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1 for src/Vm.sol (the true upstream v1.9.7 hash) while `sha256sum lib/forge-std/src/Vm.sol` gives a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15.","severity":"low","snippet":"All source dependencies are ordinary files in `lib/`, including their licenses. No dependency download, submodule, RPC connection, wallet, environment configuration file, FFI, or filesystem cheatcode access is required to build or test. The compiler itself is provided by the build environment, not vendored here. See [`lib/DEPENDENCIES.md`](lib/DEPENDENCIES.md) for versions and archive hashes; `sha256sum -c lib/SHA256SUMS` checks the vendored files.","title":"Vendored dependency integrity check in README fails: lib/SHA256SUMS does not match 7 committed forge-std files"}],"hash":"235927df39c59e451cce7bb80bee7fc92ff616b615ed13dbafda90f21953a6c1","nodeId":"ba5cea38-a841-4a96-a96a-59a9d767b25c","outcome":"completed","summary":"The review is complete and the findings file is written and valid.\n\n**Outcome:** no defect in the token itself. One low-severity finding, in the project's dependency integrity evidence.\n\n**What I covered** (Execution Trace, Periphery, First Principles):\n- Traced `approve`, `transfer` and `transferFrom` from entry to final state through the vendored OpenZeppelin ERC20. Zero-address checks, balance and allowance reverts, rollback of allowance on a failed transfer, and the unlimited-allowance sentinel all behave as the README states. No external calls, hooks, fees or exemptions exist, so every launch flow moves exactly the requested amount.\n- Constructor mints the exact manifest supply to `msg.sender`, which under the factory's CREATE2 deployment is the factory. No other mint or burn path exists in the ABI or the runtime.\n- Periphery: all 6 vendored OpenZeppelin v5.0.2 files are byte-identical to the upstream archive. The compiled runtime contains no CALL, DELEGATECALL, CALLCODE, STATICCALL, CREATE or SELFDESTRUCT. It does use PUSH0 and MCOPY, so the target chain must support Cancun. Public sources show Robinhood Chain runs a recent Nitro node and posts blobs, and the launch harness itself relies on Uniswap v4 transient storage, so this is a note rather than a finding.\n- Full suite: 37 tests pass with the README's fuzz seed, and `forge fmt --check` passes.\n\n**Finding 1 (low):** README line 30 and lib/DEPENDENCIES.md say `sha256sum -c lib/SHA256SUMS` verifies unmodified vendored sources. On the committed tree that command fails for 7 forge-std files. The listed hashes are the genuine upstream v1.9.7 hashes. The committed files were reformatted after the sums were written, and the differences are whitespace only. This has no effect on the deployed token, but the project's own integrity check gives a reviewer a FAILED result that cannot be distinguished from tampering without re-fetching upstream. Fix by restoring the upstream bytes or regenerating the sums.\n\n**Coverage record:** all three listed entry points marked `holds`, plus rows for the constructor, the supply invariant, launch-flow exactness, the opcode invariant, and both vendored libraries. The working tree is clean apart from the required `.imd-findings.json`; the downloaded archives live only in `/tmp`.\n\nSources: [Autheo on Robinhood Chain architecture](https://www.autheo.com/blog/robinhood-chain-explained-architecture-2026), [Yield.xyz Robinhood docs](https://docs.yield.xyz/docs/robinhood), [Dwellir on Robinhood Chain](https://www.dwellir.com/blog/what-is-robinhood-chain)","treeHash":null,"usage":{"cachedInputTokens":771949,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":14702,"runtime":"claude","turns":28,"wallClockMs":208207}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"28e346843ec15530","findings":[{"citation":"resolved","description":"README.md:30 and lib/DEPENDENCIES.md:11-12 tell the reviewer and release operator to verify the vendored dependencies with `sha256sum -c lib/SHA256SUMS` and state that upstream files are unmodified. On the committed tree (HEAD 01311cc, clean working copy) that check fails for seven tracked forge-std files: src/StdAssertions.sol, src/StdJson.sol, src/StdToml.sol, src/Vm.sol, src/console.sol, src/interfaces/IERC7540.sol, src/interfaces/IMulticall3.sol. The hashes in lib/SHA256SUMS are correct for upstream v1.9.7 (I downloaded the archive at the URL in DEPENDENCIES.md; its SHA-256 matches the documented 45157353...; its src/Vm.sol hashes to the listed 9068805b...). The tracked copies have been re-wrapped (forge fmt style: one-line signatures vs. multi-line) and are identical to upstream once all whitespace is stripped, so there is no semantic change and no effect on the deployed BriefsToken bytecode or on OpenZeppelin, whose six files all verify. The defect is that the deliverable's own stated integrity procedure is broken: a release operator following the README gets `sha256sum: WARNING: 7 computed checksums did NOT match` and cannot distinguish this benign reformat from a tampered test library without doing the comparison I did. Fix: either restore the seven files byte-for-byte from the v1.9.7 archive, or regenerate lib/SHA256SUMS from the tree and drop the 'unmodified' claim. This is outside the math area and reported because it is concrete and reproducible; it is not a token defect.","line":11,"path":"lib/DEPENDENCIES.md","reproduction":"From the repository root run `sha256sum -c lib/SHA256SUMS`. Expected (per README.md:30 and lib/DEPENDENCIES.md:12): every line `OK`, exit 0. Actual: `lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`, `sha256sum: WARNING: 7 computed checksums did NOT match`, exit 1. Example: lib/SHA256SUMS line 18 lists 9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1 for lib/forge-std/src/Vm.sol; `sha256sum lib/forge-std/src/Vm.sol` gives a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15. `diff -w` of each file against the upstream v1.9.7 archive shows only line-wrapping changes; stripping all whitespace from both copies yields identical content.","severity":"low","snippet":"Upstream source files are unmodified. No submodules or package install are needed.\nRun `sha256sum -c lib/SHA256SUMS` from the repository root to check the vendored files.","title":"Documented vendored-dependency integrity check fails: seven forge-std files differ from the pinned v1.9.7 hashes"}],"hash":"3cf14626b980d57c5937d3de11dff7612c754e9833a7b30a7e8f6d5cbc069c53","nodeId":"3fa8b109-2206-44b7-b534-6872a7f764d6","outcome":"completed","summary":"Review complete. The findings file is at `.imd-findings.json` and the tree is otherwise untouched.\n\n**Result for the assigned area (Math Precision, Boundary, Numerical Gap): no defects.** The token is the vendored OpenZeppelin v5.0.2 ERC20 with one constant mint and no arithmetic of its own. There is no division, no narrowing cast, no scale mixing and no fee path, so the three guides' failure modes have nothing to attach to. I confirmed that with concrete probes rather than by inspection alone:\n\n- **Supply constant** is a compile-time 10^27, far below any overflow headroom. The aderyn large-literal lead is benign.\n- **Transfer edges** (1 wei, full balance, supply plus one, max uint, self-transfer of the full balance through the unchecked path, zero value) all deliver exactly or revert with the ERC-6093 error.\n- **Allowance edges** (max uint infinite, max minus one finite and decremented, allowance equal to value, value plus one) behave as the ERC-20 contract documents.\n- **Conservation** held across the project's invariant suite with the pinned seed and my own three-party fuzz.\n- **Launch flows** move exact amounts, so the distributor, pool seed and remainder arrive whole.\n\n**One low finding outside the area.** The repository tells operators to verify vendored dependencies with the checksum list, and claims upstream files are unmodified. On the committed tree that check fails for seven forge-std files. The listed hashes are correct for upstream v1.9.7 (I downloaded the archive and matched it). The tracked copies are line-wrapping reformats and are identical to upstream once whitespace is stripped, so deployed bytecode and the OpenZeppelin files are unaffected. The defect is that the stated integrity procedure is broken, and the fix is to restore the files byte-for-byte or regenerate the checksum list.\n\n**Coverage.** All three entry points are marked `holds`, with six invariant rows added, one of them pointing at the finding. No proof test was attached since nothing reached high severity. Slither and Mythril were not run beyond the verifier's supplied output.","treeHash":null,"usage":{"cachedInputTokens":760678,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":15302,"runtime":"claude","turns":23,"wallClockMs":206389}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"803eeae3d8b63de3","findings":[{"citation":"resolved","description":"README.md line 30 states that `sha256sum -c lib/SHA256SUMS` checks the vendored files, and lib/DEPENDENCIES.md line 7 states forge-std v1.9.7 was vendored unmodified. In the committed tree (commit 01311cc, `git status` clean for lib/) seven forge-std files hash differently from the values recorded in lib/SHA256SUMS: src/Vm.sol, src/StdAssertions.sol, src/StdJson.sol, src/StdToml.sol, src/console.sol, src/interfaces/IERC7540.sol and src/interfaces/IMulticall3.sol. The committed blob of lib/forge-std/src/Vm.sol (git object 5876bfcb) hashes to a1b1c829..., while line 18 of the checksum list records 9068805b.... Either the checksum list was generated from a different forge-std copy or the vendored files were changed after the list was written; the tree does not say which. All five vendored OpenZeppelin files match the list and read as unmodified v5.0.2 sources, so the deployable token bytecode is not affected: forge-std is test-only and never linked into src/BriefsToken.sol. The impact is confined to the reproducibility claim the README makes and to a reviewer being unable to confirm the test harness is upstream's (the sandbox denied network access to codeload.github.com, so an upstream byte comparison could not be run here). Fix: regenerate lib/SHA256SUMS from the vendored tree, or re-vendor forge-std v1.9.7 so the files match the list, and keep DEPENDENCIES.md's 'unmodified' statement truthful. This is outside the token's access-control surface and is reported because it is a concrete, reproducible mismatch between what the tree claims and what it contains.","line":18,"path":"lib/SHA256SUMS","reproduction":"From the repository root on the committed tree run: `sha256sum -c lib/SHA256SUMS`. Expected (per README.md:30 and lib/DEPENDENCIES.md:7): every line reports OK. Actual: 29 lines OK and 7 report FAILED (`lib/forge-std/src/StdAssertions.sol: FAILED`, `lib/forge-std/src/StdJson.sol: FAILED`, `lib/forge-std/src/StdToml.sol: FAILED`, `lib/forge-std/src/Vm.sol: FAILED`, `lib/forge-std/src/console.sol: FAILED`, `lib/forge-std/src/interfaces/IERC7540.sol: FAILED`, `lib/forge-std/src/interfaces/IMulticall3.sol: FAILED`), exit status 1, `WARNING: 7 computed checksums did NOT match`. Confirm the mismatch is in the commit itself: `git cat-file -p $(git ls-files -s lib/forge-std/src/Vm.sol | awk '{print $2}') | sha256sum` prints a1b1c82924aecf0f38b53192fd1e801cccc1e1fd2ecd6b2301e4f4c4ab102a15, not the 9068805b... recorded at lib/SHA256SUMS:18.","severity":"low","snippet":"9068805b59ac1d0ea03a8fa1f15ae49c094e0c6c852a2500e0dd112f264b2cb1  lib/forge-std/src/Vm.sol","title":"Committed lib/SHA256SUMS does not match the committed forge-std files, so the README's integrity check fails"},{"citation":"resolved","description":"Asymmetry pair approve <-> transferFrom: `approve` overwrites the allowance unconditionally while `transferFrom` decrements it, so an approval change that lands after a pending `transferFrom` does not account for what was already spent. This is the well-known ERC-20 allowance race, not a defect introduced by BriefsToken: OpenZeppelin v5.0.2 deliberately dropped increaseAllowance/decreaseAllowance and BriefsToken does not add them. README.md line 80 already documents the race and the revoke-to-zero mitigation, and no launch flow (factory -> distributor, factory -> PoolManager seed, PoolManager swaps, distributor claims) relies on a replaced allowance, so the launch is not affected. Recorded as a trust note for holders and integrators; no code change is required to meet the brief. If the author wants to remove the race for direct users, the only in-design option is adding increaseAllowance/decreaseAllowance helpers, which changes the ABI the manifest step will read and so is a scope decision rather than a fix.","line":305,"path":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","reproduction":"State: holder H has 1,000,000 BRIEFS; spender S has none. 1) H calls approve(S, 100). 2) S calls transferFrom(H, S, 100): succeeds, allowance 0. 3) H, intending to lower S's allowance to 50, calls approve(S, 50) (in a real mempool this is the transaction S front-ran in step 2). 4) S calls transferFrom(H, S, 50): succeeds. Expected by H: S can take at most 100 (the old) or 50 (the new). Actual: balanceOf(S) == 150. Verified with a Foundry test (holder approves 100, spender pulls 100, holder approves 50, spender pulls 50, assertEq(balanceOf(spender), 150) passes).","severity":"info","snippet":"    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance != type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }","title":"Standard ERC-20 approve race: replacing a non-zero allowance lets a spender obtain old plus new amount (documented, inherited from OpenZeppelin v5)"},{"citation":"resolved","description":"Branch asymmetry inside transferFrom: for value == 0, `_spendAllowance` passes because currentAllowance (0) is not less than 0, so an arbitrary caller with no allowance from `from` makes the token emit a Transfer(from, to, 0) event with `from` being any non-zero holder. No balance changes and no funds are at risk; the only effect is that off-chain indexers, explorers and airdrop/holder scripts that treat a Transfer event as evidence of activity from `from` can be spammed with spoofed events. This is the unmodified OpenZeppelin v5.0.2 semantics the README (line 11) explicitly promises ('Zero-value transfers between nonzero addresses are supported'), and the project's own test test_zeroTransferFromNeedsNoAllowanceAndEmitsEvent asserts it. Reported as an informational note so integrators filter zero-value events; not a defect against the brief and no change is recommended.","line":154,"path":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","reproduction":"State: HOLDER = 0x401D holds 1,000,000 BRIEFS and has never approved anyone. Caller 0xBAD (balance 0, allowance from HOLDER 0) calls transferFrom(0x401D, 0x07E5, 0). Expected by an integrator reading events: a Transfer from 0x401D requires 0x401D's authorization. Actual: the call returns true and exactly one log is emitted, Transfer(0x401D, 0x07E5, 0), with all balances and allowances unchanged. Verified with vm.recordLogs in a Foundry test: one log recorded, transferFrom returned true.","severity":"info","snippet":"    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }","title":"Any address can emit Transfer(holder, anyone, 0) via zero-value transferFrom without an allowance (standard OpenZeppelin behaviour)"}],"hash":"7f5a1b6f42ea985495b2d2a834a5c229b9e1c2e436fadd9d323c05590246b5b7","nodeId":"1016a3f6-83b5-4298-b0f5-d2d98d88e337","outcome":"completed","summary":"The review is complete. The findings file is written, validated against the tree, and the scratch test has been removed so no tracked file changed.\n\n**Outcome:** no access-control, trust-gap or asymmetry defect in the token. BriefsToken is an unmodified OpenZeppelin v5.0.2 ERC-20 with a single constructor mint to msg.sender and nothing else.\n\n**What I covered**\n- All three entry points (approve, transfer, transferFrom) traced through OpenZeppelin's checks and failure paths: caller-scoped, zero-address guards, allowance accounting, rollback on failure. All hold.\n- Permission map: no owner, role, initializer, upgrade path, receive or fallback. A scratch Foundry test swept 24 admin-style selectors, empty calldata, an unknown selector and ETH value from the factory, the deploying origin and a stranger. Every call reverted, holder balance and total supply unchanged.\n- Launch flows: no transfer rules, so no exemptions are needed and the factory, PoolManager and distributor move exact amounts. Supply and constructor args are consistent with the manifest shape.\n- Runtime bytecode has no DELEGATECALL, CALLCODE, SELFDESTRUCT, or any external-call opcode. The project's 37 tests pass with the pinned fuzz seed.\n\n**Findings written to `.imd-findings.json`**\n1. Low: the committed checksum list disagrees with seven committed forge-std files, so the README's `sha256sum -c lib/SHA256SUMS` claim fails. Test-only dependency, deployed bytecode unaffected.\n2. Info: standard ERC-20 approve race, already documented in the README, with a concrete 100 then 50 then 150 reproduction.\n3. Info: any address can emit a zero-value Transfer event from a holder via transferFrom without allowance. Standard OpenZeppelin semantics, event-spoofing only.\n\n**Not reached:** a byte-for-byte comparison of the vendored libraries against upstream, because the sandbox denied network access to GitHub. The OpenZeppelin files match the repo's checksum list and read as unmodified v5.0.2 by inspection.","treeHash":null,"usage":{"cachedInputTokens":1031803,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":19729,"runtime":"claude","turns":31,"wallClockMs":285688}},{"artifacts":[],"attempt":1,"bundleHash":"cdcb5e7116c7724d5cf104797c463997002d2152a7c5fb2ad439890ec34ef701","device":"f90b809929565af3","findings":[],"hash":"9a318f40c98a2be1d4c3ec68b5f0379f13e15af69cf38f3e95945aada2580fd2","nodeId":"f2339f89-b14c-412d-8158-f019ba52e8d5","outcome":"completed","summary":"Implemented `BriefsToken`: Briefs.fun (BRIEFS), 18 decimals, with exactly 1,000,000,000 tokens minted once to the deployer.\n\n- `forge build`, offline rebuild, and `forge fmt --check` pass.\n- All 37 tests pass with the supplied fuzz seed.\n- Dependencies are vendored; deployment parameters and responsibilities are documented in `README.md`.\n\nThe supplied protected integration tests require the separate launch harness and were not run locally.","treeHash":"63cc6789f457f009db2275c707d584d3302b4d21","usage":{"cachedInputTokens":567168,"inputTokens":65299,"model":"gpt-6-astra","outputTokens":17071,"runtime":"codex","turns":5,"wallClockMs":368160}},{"artifacts":[],"attempt":1,"bundleHash":"e948602ab6fe3e91de525f8da4a89e9dc77faa5b765708215ffb91a24345adfa","device":"ddfb1efa72fe9a94","findings":[],"hash":"d23fb52e916bb7224e7e905a8433724af12ef00a2af5c39c05889bf2923e6640","nodeId":"e9ac77cf-b7c5-4e6d-91c4-257732569d54","outcome":"completed","summary":"I wrote and committed `launch.json`, the only file changed in the tree.\n\n**What the manifest says**\n\n- Kind `custom_token`, token contract `BriefsToken` with name Briefs.fun, symbol BRIEFS, 18 decimals.\n- Constructor arguments are an empty list. The accepted contract's constructor takes no parameters, confirmed from the compiled ABI, and mints the whole supply once to msg.sender.\n- Total supply is 1000000000000000000000000000, which matches the constant `INITIAL_SUPPLY` in src/BriefsToken.sol.\n- Contracts list is empty. The accepted tree has no application contracts, so none are described.\n- Pool and economics are copied exactly from the launch reference: IMD pair address, fee 12500, tick spacing 60, the one-to-one provenance price, and the requester's economics object verbatim.\n- Notes run about 1,500 characters and describe only what the token does: plain OpenZeppelin v5.0.2 ERC-20, no tax or exemptions, no owner or privileged calls, nothing else mints.\n\n**Checks run**\n\n- A JSON check confirmed only the schema's top-level keys are present, the economics object is byte-identical to the job's, and the supply equals 10^27.\n- `forge build` compiled cleanly with Solidity 0.8.26.\n- `forge test` with the verifier's fuzz seed passed all 37 tests across the three existing suites.\n- Git status shows nothing changed besides the new manifest, now committed as 29374fe.","treeHash":"ba10c599673696713dff48219a87aee0cb5e4cde","usage":{"cachedInputTokens":232123,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":3591,"runtime":"claude","turns":9,"wallClockMs":100912}},{"artifacts":[],"attempt":1,"bundleHash":"bb2b6718016f04a7357886f662c419523f1317f06bf0a6c3f30b11a9517f10d5","device":"3d55f5b0ed8fa3df","findings":[],"hash":"eed224701b892b2fdf260d464e8922a881279b30d29f1eaed7097d13c54f438c","nodeId":"56d6a11d-666e-447f-a2ac-b2ce41960c42","outcome":"completed","summary":"Added 16 tests covering failure paths, allowance boundaries, rollback, and authorization, and strengthened multi-actor invariants.\n\n`forge build` and `forge test` pass with the supplied seed: **53 tests passed**, including 256 invariant sequences totaling 16,384 calls.\n\nOnly `test/` changed. No implementation defects found.","treeHash":"258b3449a5ab2d7b07c07968dd9020a4ca049687","usage":{"cachedInputTokens":888832,"inputTokens":75784,"model":"gpt-6-astra","outputTokens":14323,"runtime":"codex","turns":6,"wallClockMs":371058}}],"verification":[{"checks":[{"durationMs":1153,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.09s\nCompiler run successful!\n","passed":true},{"durationMs":2436,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 4 tests for test/BriefsTokenLaunch.t.sol:BriefsTokenLaunchTest\n[PASS] test_create2AddressMatchesConstructorWithoutArguments() (gas: 10033)\n[PASS] test_factoryReceivesAllSupplyAndOriginReceivesNone() (gas: 56549)\n[PASS] test_launchDistributionClaimsAndTradingTransfersAreExact() (gas: 470230)\n[PASS] test_runtimeFitsDeploymentLimitAndHasNoForbiddenOpcodes() (gas: 2259383)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 23.63ms (4.33ms CPU time)\n\nRan 32 tests for test/BriefsToken.t.sol:BriefsTokenTest\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 1024, μ: 111202, ~: 111363)\nLogs:\n  Bound result 2074101768\n\n[PASS] testFuzz_transferFromConservesBalancesAndAllowance(uint256,uint256) (runs: 1024, μ: 164614, ~: 165553)\nLogs:\n  Bound result 830098375669082362900468699\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n\n[PASS] testFuzz_transferOverAllowanceReverts(uint256,uint256) (runs: 1024, μ: 123444, ~: 123862)\nLogs:\n  Bound result 190058571426338144881257966\n  Bound result 809941428573661855118742557\n\n[PASS] testFuzz_transferOverBalanceReverts(uint256,uint256) (runs: 1024, μ: 137895, ~: 138129)\nLogs:\n  Bound result 16\n  Bound result 50000000000000000000\n\n[PASS] test_approvalCanBeGrantedWithoutBalance() (gas: 78659)\n[PASS] test_approveEmitsEventAndDoesNotMoveTokens() (gas: 88833)\n[PASS] test_approveReplacesExistingAllowance() (gas: 93579)\n[PASS] test_approveZeroSpenderReverts() (gas: 37607)\n[PASS] test_constructorEmitsExactlyOneMint() (gas: 9688)\n[PASS] test_constructorMintsToImmediateDeployer() (gas: 40881)\n[PASS] test_deployerCannotSpendHolderBalanceWithoutApproval() (gas: 158402)\n[PASS] test_metadataAndSupply() (gas: 107758)\n[PASS] test_noMintBurnOwnershipOrAdministrativeEntrypoints() (gas: 1548005)\n[PASS] test_rejectsNativeCurrency() (gas: 42684)\n[PASS] test_revokeApprovalPreventsSpending() (gas: 131660)\n[PASS] test_selfTransferPreservesBalanceAndEmitsEvent() (gas: 53946)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 35864)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 93550)\n[PASS] test_transferEntireBalance() (gas: 161766)\n[PASS] test_transferFromByHolderStillRequiresAllowance() (gas: 35724)\n[PASS] test_transferFromCannotUseAnotherSpendersAllowance() (gas: 105669)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 137004)\n[PASS] test_transferFromSpendsOnlyApprovedAmountAndEmitsTransfer() (gas: 242496)\n[PASS] test_transferFromToSelfSpendsAllowanceWithoutChangingBalance() (gas: 110116)\n[PASS] test_transferFromToZeroRollsBackAllowance() (gas: 114684)\n[PASS] test_transferFromWithInfiniteApprovalPreservesAllowance() (gas: 215229)\n[PASS] test_transferFromZeroSourceRevertsEvenForZeroAmount() (gas: 37881)\n[PASS] test_transferRevertsForInsufficientBalance() (gas: 54904)\n[PASS] test_transferToZeroRevertsWithoutBurning() (gas: 47658)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 63102)\n[PASS] test_zeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 81458)\n[PASS] test_zeroTransferToZeroReverts() (gas: 30457)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 30.44ms (119.73ms CPU time)\n\nRan 1 test for test/BriefsTokenInvariant.t.sol:BriefsTokenInvariantTest\n[PASS]\nBriefsTokenInvariantTest invariants:\n[PASS] invariant_allowancesMatchIndependentLedger\n[PASS] invariant_supplyAndBalancesMatchIndependentLedger\n BriefsTokenInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------------+-----------------------+-------+---------+----------╮\n| Contract           | Selector              | Calls | Reverts | Discards |\n+=========================================================================+\n| BriefsTokenHandler | approve               | 1626  | 0       | 0        |\n|--------------------+-----------------------+-------+---------+----------|\n| BriefsTokenHandler | rejectExcessAllowance | 1610  | 0       | 0        |\n|--------------------+-----------------------+-------+---------+----------|\n| BriefsTokenHandler | rejectOverspend       | 1633  | 0       | 0        |\n|--------------------+-----------------------+-------+---------+----------|\n| BriefsTokenHandler | transfer              | 1670  | 0       | 0        |\n|--------------------+-----------------------+-------+---------+----------|\n| BriefsTokenHandler | transferFrom          | 1653  | 0       | 0        |\n╰--------------------+-----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 7037\n  Bound result 0\n  Bound result 958558117422403690424458753\n  Bound result 0\n  Bound result 433114145153428808389845942\n  Bound result 100000000000000000000\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 516\n  Bound result 80\n  Bound result 0\n  Bound result 127\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 120543175579201836955622342\n  Bound result 0\n  Bound result 4052\n  Bound result 0\n  Bound result 4622\n  Bound result 7239\n  Bound result 4092\n  Bound result 7561\n  Bound result 507707670675330142363190776\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2237\n  Bound result 14\n  Bound result 2728\n  Bound result 9\n  Bound result 1901493769\n  Bound result 0\n  Bound result 300\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.36s (2.36s CPU time)\n\nRan 3 test suites in 2.36s (2.42s CPU time): 37 tests passed, 0 failed, 0 skipped (37 total tests)\n","passed":true},{"durationMs":32,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BriefsToken.approve(address,uint256)\",\"BriefsToken.transfer(address,uint256)\",\"BriefsToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"LICENSE\":21,\"README.md\":82,\"foundry.toml\":18,\"remappings.txt\":2,\"src/BriefsToken.sol\":16,\"test/BriefsToken.t.sol\":374,\"test/BriefsTokenInvariant.t.sol\":129,\"test/BriefsTokenLaunch.t.sol\":110},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":399,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":216,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/BriefsToken.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"9a318f40c98a2be1d4c3ec68b5f0379f13e15af69cf38f3e95945aada2580fd2","verifiedTreeHash":"63cc6789f457f009db2275c707d584d3302b4d21","verifierVersion":"0.1.0+c3fba9eb"},{"checks":[{"durationMs":1416,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.33s\nCompiler run successful!\n","passed":true},{"durationMs":2742,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 4 tests for test/BriefsTokenLaunch.t.sol:BriefsTokenLaunchTest\n[PASS] test_create2AddressMatchesConstructorWithoutArguments() (gas: 10033)\n[PASS] test_factoryReceivesAllSupplyAndOriginReceivesNone() (gas: 56549)\n[PASS] test_launchDistributionClaimsAndTradingTransfersAreExact() (gas: 470230)\n[PASS] test_runtimeFitsDeploymentLimitAndHasNoForbiddenOpcodes() (gas: 2259383)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 9.44ms (7.57ms CPU time)\n\nRan 32 tests for test/BriefsToken.t.sol:BriefsTokenTest\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 1024, μ: 111202, ~: 111363)\nLogs:\n  Bound result 576933492921041528978815849\n\n[PASS] testFuzz_transferFromConservesBalancesAndAllowance(uint256,uint256) (runs: 1024, μ: 164614, ~: 165553)\nLogs:\n  Bound result 244\n  Bound result 123000000000000000000\n\n[PASS] testFuzz_transferOverAllowanceReverts(uint256,uint256) (runs: 1024, μ: 123444, ~: 123862)\nLogs:\n  Bound result 244\n  Bound result 123000000000000000000\n\n[PASS] testFuzz_transferOverBalanceReverts(uint256,uint256) (runs: 1024, μ: 137895, ~: 138129)\nLogs:\n  Bound result 458206709062052014442025010\n  Bound result 102424\n\n[PASS] test_approvalCanBeGrantedWithoutBalance() (gas: 78659)\n[PASS] test_approveEmitsEventAndDoesNotMoveTokens() (gas: 88833)\n[PASS] test_approveReplacesExistingAllowance() (gas: 93579)\n[PASS] test_approveZeroSpenderReverts() (gas: 37607)\n[PASS] test_constructorEmitsExactlyOneMint() (gas: 9688)\n[PASS] test_constructorMintsToImmediateDeployer() (gas: 40881)\n[PASS] test_deployerCannotSpendHolderBalanceWithoutApproval() (gas: 158402)\n[PASS] test_metadataAndSupply() (gas: 107758)\n[PASS] test_noMintBurnOwnershipOrAdministrativeEntrypoints() (gas: 1548005)\n[PASS] test_rejectsNativeCurrency() (gas: 42684)\n[PASS] test_revokeApprovalPreventsSpending() (gas: 131660)\n[PASS] test_selfTransferPreservesBalanceAndEmitsEvent() (gas: 53946)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 35864)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 93550)\n[PASS] test_transferEntireBalance() (gas: 161766)\n[PASS] test_transferFromByHolderStillRequiresAllowance() (gas: 35724)\n[PASS] test_transferFromCannotUseAnotherSpendersAllowance() (gas: 105669)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 137004)\n[PASS] test_transferFromSpendsOnlyApprovedAmountAndEmitsTransfer() (gas: 242496)\n[PASS] test_transferFromToSelfSpendsAllowanceWithoutChangingBalance() (gas: 110116)\n[PASS] test_transferFromToZeroRollsBackAllowance() (gas: 114684)\n[PASS] test_transferFromWithInfiniteApprovalPreservesAllowance() (gas: 215229)\n[PASS] test_transferFromZeroSourceRevertsEvenForZeroAmount() (gas: 37881)\n[PASS] test_transferRevertsForInsufficientBalance() (gas: 54904)\n[PASS] test_transferToZeroRevertsWithoutBurning() (gas: 47658)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 63102)\n[PASS] test_zeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 81458)\n[PASS] test_zeroTransferToZeroReverts() (gas: 30457)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 30.97ms (127.39ms CPU time)\n\nRan 1 test for test/BriefsTokenInvariant.t.sol:BriefsTokenInvariantTest\n[PASS]\nBriefsTokenInvariantTest invariants:\n[PASS] invariant_allowancesMatchIndependentLedger\n[PASS] invariant_supplyAndBalancesMatchIndependentLedger\n BriefsTokenInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------------+-----------------------+-------+---------+----------╮\n| Contract           | Selector              | Calls | Reverts | Discards |\n+=========================================================================+\n| BriefsTokenHandler | approve               | 1626  | 0       | 0        |\n|--------------------+-----------------------+-------+---------+----------|\n| BriefsTokenHandler | rejectExcessAllowance | 1610  | 0       | 0        |\n|--------------------+-----------------------+-------+---------+----------|\n| BriefsTokenHandler | rejectOverspend       | 1633  | 0       | 0        |\n|--------------------+-----------------------+-------+---------+----------|\n| BriefsTokenHandler | transfer              | 1670  | 0       | 0        |\n|--------------------+-----------------------+-------+---------+----------|\n| BriefsTokenHandler | transferFrom          | 1653  | 0       | 0        |\n╰--------------------+-----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 7037\n  Bound result 0\n  Bound result 958558117422403690424458753\n  Bound result 0\n  Bound result 433114145153428808389845942\n  Bound result 100000000000000000000\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 516\n  Bound result 80\n  Bound result 0\n  Bound result 127\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 120543175579201836955622342\n  Bound result 0\n  Bound result 4018\n  Bound result 4144\n  Bound result 34\n  Bound result 51\n  Bound result 4584\n  Bound result 1785\n  Bound result 507707670675330142363190776\n  Bound result 0\n  Bound result 14\n  Bound result 0\n  Bound result 792\n  Bound result 14\n  Bound result 2894\n  Bound result 9\n  Bound result 1901493769\n  Bound result 23\n  Bound result 203\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.65s (2.64s CPU time)\n\nRan 3 test suites in 2.65s (2.69s CPU time): 37 tests passed, 0 failed, 0 skipped (37 total tests)\n","passed":true},{"durationMs":64,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BriefsToken.approve(address,uint256)\",\"BriefsToken.transfer(address,uint256)\",\"BriefsToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"LICENSE\":21,\"README.md\":82,\"foundry.toml\":18,\"launch.json\":24,\"remappings.txt\":2,\"src/BriefsToken.sol\":16,\"test/BriefsToken.t.sol\":374,\"test/BriefsTokenInvariant.t.sol\":129,\"test/BriefsTokenLaunch.t.sol\":110},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"d23fb52e916bb7224e7e905a8433724af12ef00a2af5c39c05889bf2923e6640","verifiedTreeHash":"ba10c599673696713dff48219a87aee0cb5e4cde","verifierVersion":"0.1.0+c3fba9eb"},{"checks":[{"durationMs":1574,"exitCode":0,"name":"build","output":"Compiling 29 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.50s\nCompiler run successful!\n","passed":true},{"durationMs":5303,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 4 tests for test/BriefsTokenLaunch.t.sol:BriefsTokenLaunchTest\n[PASS] test_create2AddressMatchesConstructorWithoutArguments() (gas: 10033)\n[PASS] test_factoryReceivesAllSupplyAndOriginReceivesNone() (gas: 56549)\n[PASS] test_launchDistributionClaimsAndTradingTransfersAreExact() (gas: 470230)\n[PASS] test_runtimeFitsDeploymentLimitAndHasNoForbiddenOpcodes() (gas: 2259383)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 96.31ms (16.23ms CPU time)\n\nRan 32 tests for test/BriefsToken.t.sol:BriefsTokenTest\n[PASS] testFuzz_transferConservesSupply(address,uint256) (runs: 1024, μ: 111204, ~: 111363)\nLogs:\n  Bound result 770410203047162857501448411\n\n[PASS] testFuzz_transferFromConservesBalancesAndAllowance(uint256,uint256) (runs: 1024, μ: 164656, ~: 165559)\nLogs:\n  Bound result 741742520629102685455983242\n  Bound result 115792089237316195423570985008687907853269984665639822319512299886223639847130\n\n[PASS] testFuzz_transferOverAllowanceReverts(uint256,uint256) (runs: 1024, μ: 123451, ~: 123867)\nLogs:\n  Bound result 4743845434702831017794\n  Bound result 586648079873838454330856205\n\n[PASS] testFuzz_transferOverBalanceReverts(uint256,uint256) (runs: 1024, μ: 137907, ~: 138141)\nLogs:\n  Bound result 4743845434702831017794\n  Bound result 2418482113691102963084557613191763\n\n[PASS] test_approvalCanBeGrantedWithoutBalance() (gas: 78659)\n[PASS] test_approveEmitsEventAndDoesNotMoveTokens() (gas: 88833)\n[PASS] test_approveReplacesExistingAllowance() (gas: 93579)\n[PASS] test_approveZeroSpenderReverts() (gas: 37607)\n[PASS] test_constructorEmitsExactlyOneMint() (gas: 9688)\n[PASS] test_constructorMintsToImmediateDeployer() (gas: 40881)\n[PASS] test_deployerCannotSpendHolderBalanceWithoutApproval() (gas: 158402)\n[PASS] test_metadataAndSupply() (gas: 107758)\n[PASS] test_noMintBurnOwnershipOrAdministrativeEntrypoints() (gas: 1548005)\n[PASS] test_rejectsNativeCurrency() (gas: 42684)\n[PASS] test_revokeApprovalPreventsSpending() (gas: 131660)\n[PASS] test_selfTransferPreservesBalanceAndEmitsEvent() (gas: 53946)\n[PASS] test_selfTransferStillRequiresBalance() (gas: 35864)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 93550)\n[PASS] test_transferEntireBalance() (gas: 161766)\n[PASS] test_transferFromByHolderStillRequiresAllowance() (gas: 35724)\n[PASS] test_transferFromCannotUseAnotherSpendersAllowance() (gas: 105669)\n[PASS] test_transferFromInsufficientBalanceRollsBackAllowance() (gas: 137004)\n[PASS] test_transferFromSpendsOnlyApprovedAmountAndEmitsTransfer() (gas: 242496)\n[PASS] test_transferFromToSelfSpendsAllowanceWithoutChangingBalance() (gas: 110116)\n[PASS] test_transferFromToZeroRollsBackAllowance() (gas: 114684)\n[PASS] test_transferFromWithInfiniteApprovalPreservesAllowance() (gas: 215229)\n[PASS] test_transferFromZeroSourceRevertsEvenForZeroAmount() (gas: 37881)\n[PASS] test_transferRevertsForInsufficientBalance() (gas: 54904)\n[PASS] test_transferToZeroRevertsWithoutBurning() (gas: 47658)\n[PASS] test_zeroTransferFromEmptyAccountEmitsEvent() (gas: 63102)\n[PASS] test_zeroTransferFromNeedsNoAllowanceAndEmitsEvent() (gas: 81458)\n[PASS] test_zeroTransferToZeroReverts() (gas: 30457)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 96.39ms (378.97ms CPU time)\n\nRan 16 tests for test/BriefsTokenProperties.t.sol:BriefsTokenPropertiesTest\n[PASS] testFuzz_approvalsAreIndependentAndIdempotent(uint256,uint256,uint256) (runs: 1000, μ: 406916, ~: 407545)\n[PASS] testFuzz_delegatedSelfTransferChangesOnlyAllowance(uint256,uint256,uint256) (runs: 1000, μ: 211370, ~: 212037)\nLogs:\n  Bound result 12069766523965\n  Bound result 5556213122666\n  Bound result 115792089237316195423570985008687907853269984665640564039457584002356916588582\n\n[PASS] testFuzz_failedTransferFromPreservesApprovalAndAllowsRetry(uint256,uint256,uint256) (runs: 1000, μ: 307146, ~: 308195)\nLogs:\n  Bound result 12069766523965\n  Bound result 4977701608057742887111232497555823324\n  Bound result 115792089237316195423570985008687907853265006964032506296570472763345807363959\n\n[PASS] testFuzz_invalidReceiverPreservesApprovalAndAllowsRetry(uint256,uint256) (runs: 1000, μ: 239393, ~: 240375)\nLogs:\n  Bound result 174436503560305385559161723\n  Bound result 115792089237316195423570985008687907853269984665640389602954023702527570481756\n\n[PASS] testFuzz_splitTransfersMatchCombinedTransferAndRoundTrip(uint256,uint256) (runs: 1000, μ: 337714, ~: 337947)\nLogs:\n  Bound result 135182616052\n  Bound result 372703326493566382246222268\n\n[PASS] testFuzz_transactionOriginCannotUseAnApproval(uint256) (runs: 1000, μ: 226826, ~: 226656)\nLogs:\n  Bound result 20000000000000000000\n\n[PASS] test_failedDelegatedSelfTransferDoesNotConsumeApproval() (gas: 240770)\n[PASS] test_largestFiniteAllowanceIsSpentAcrossRepeatedTransfers() (gas: 301206)\n[PASS] test_maximumAmountCannotBypassBalanceOrAllowanceChecks() (gas: 231182)\n[PASS] test_oneWeiCanBeApprovedSpentAndReturned() (gas: 293534)\n[PASS] test_refundingTokensDoesNotRestoreSpentApproval() (gas: 224516)\n[PASS] test_tokenContractCanReceiveTokensWithoutChangingSupply() (gas: 193608)\n[PASS] test_unlimitedApprovalCanBeReducedAndRevoked() (gas: 370698)\n[PASS] test_zeroApprovalToZeroSpenderStillReverts() (gas: 48012)\n[PASS] test_zeroValueDelegatedTransferStillRejectsZeroReceiver() (gas: 74721)\n[PASS] test_zeroValueTransfersPreserveFiniteAndInfiniteApprovals() (gas: 228097)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 96.46ms (564.69ms CPU time)\n\nRan 1 test for test/BriefsTokenInvariant.t.sol:BriefsTokenInvariantTest\n[PASS]\nBriefsTokenInvariantTest invariants:\n[PASS] invariant_allowancesMatchIndependentLedger\n[PASS] invariant_supplyAndBalancesMatchIndependentLedger\n BriefsTokenInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭--------------------+-------------------------------+-------+---------+----------╮\n| Contract           | Selector                      | Calls | Reverts | Discards |\n+=================================================================================+\n| BriefsTokenHandler | approve                       | 1477  | 0       | 0        |\n|--------------------+-------------------------------+-------+---------+----------|\n| BriefsTokenHandler | rejectApprovalToZero          | 1476  | 0       | 0        |\n|--------------------+-------------------------------+-------+---------+----------|\n| BriefsTokenHandler | rejectExcessAllowance         | 1514  | 0       | 0        |\n|--------------------+-------------------------------+-------+---------+----------|\n| BriefsTokenHandler | rejectOverspend               | 1493  | 0       | 0        |\n|--------------------+-------------------------------+-------+---------+----------|\n| BriefsTokenHandler | rejectTransferFromOverBalance | 1442  | 0       | 0        |\n|--------------------+-------------------------------+-------+---------+----------|\n| BriefsTokenHandler | rejectTransferFromToZero      | 1455  | 0       | 0        |\n|--------------------+-------------------------------+-------+---------+----------|\n| BriefsTokenHandler | rejectTransferToZero          | 1505  | 0       | 0        |\n|--------------------+-------------------------------+-------+---------+----------|\n| BriefsTokenHandler | revoke                        | 1456  | 0       | 0        |\n|--------------------+-------------------------------+-------+---------+----------|\n| BriefsTokenHandler | transfer                      | 1527  | 0       | 0        |\n|--------------------+-------------------------------+-------+---------+----------|\n| BriefsTokenHandler | transferAll                   | 1450  | 0       | 0        |\n|--------------------+-------------------------------+-------+---------+----------|\n| BriefsTokenHandler | transferFrom                  | 1589  | 0       | 0        |\n╰--------------------+-------------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 0\n  Bound result 127\n  Bound result 242\n  Bound result 255\n  Bound result 255\n  Bound result 0\n  Bound result 1689\n  Bound result 0\n  Bound result 4\n  Bound result 46764994041025942395439878\n  Bound result 6407215281\n  Bound result 0\n  Bound result 0\n  Bound result 83\n  Bound result 0\n  Bound result 3\n  Bound result 242\n  Bound result 4482118813532225291225\n  Bound result 1000000000000000000\n  Bound result 203235005958974057604560202\n  Bound result 0\n  Bound result 0\n  Bound result 602\n  Bound result 0\n  Bound result 0\n  Bound result 115792089237316195423570985008687907853269984665640360804451625033855525079128\n  Bound result 77\n  Bound result 1029\n  Bound result 1838\n  Bound result 0\n  Bound result 12\n  Bound result 90000000000000000000\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2179\n  Bound result 663\n  Bound result 5553602310988457275487324\n  Bound result 0\n  Bound result 123000000000000000000\n  Bound result 499359104215560072967316523\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.22s (5.21s CPU time)\n\nRan 4 test suites in 5.22s (5.50s CPU time): 53 tests passed, 0 failed, 0 skipped (53 total tests)\n","passed":true},{"durationMs":40,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BriefsToken.approve(address,uint256)\",\"BriefsToken.transfer(address,uint256)\",\"BriefsToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"LICENSE\":21,\"README.md\":82,\"foundry.toml\":18,\"remappings.txt\":2,\"src/BriefsToken.sol\":16,\"test/BriefsToken.t.sol\":374,\"test/BriefsTokenInvariant.t.sol\":255,\"test/BriefsTokenLaunch.t.sol\":110,\"test/BriefsTokenProperties.t.sol\":330},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"eed224701b892b2fdf260d464e8922a881279b30d29f1eaed7097d13c54f438c","verifiedTreeHash":"258b3449a5ab2d7b07c07968dd9020a4ca049687","verifierVersion":"0.1.0+c3fba9eb"}]}