{"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":"6355b4c3-869e-41b7-9311-380a7172c4cb","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"1167764916d220910f4247f427f145d7a8e2604d61ed226ca5828c9a1df3df23","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":"e637c7e9b3ccd42045be6aaffd18fa921a41717c689230922801461e8430b2e4","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":"ab476df2abe7a5c92756df9e2a55220d25abe60a9476003e2917ce0ef57d0f77","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":"e530c15d07bc70997208ebe36a5c536d6684d253f55cbe6378df78c61a9aba19","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":"7e0c95a415c6e65e33948092a80cd99ca04304b74a7f0c16935cfd412eaeac62","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":"d2e3ba23a173b8050a2276cf95b427764bffe934b4228acac15f34ff239547c7","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"6b8d2c2ebd3301cff2be8edb1e1cc6ba65c858c02fe7247be81722b969842265","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"6b8d2c2ebd3301cff2be8edb1e1cc6ba65c858c02fe7247be81722b969842265","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"be120c91c9b96591db3f53764152f77eee19257dac08e85b88fa5a3ea43aa577","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"b0008775834fc1f2d849a32eb12baac39e56f80e29cee9a1bb3de0f3cda182ee","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: Yield Fields Deed (YFD).\nToken name: Yield Fields Deed\nToken symbol: YFD\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"b12402aeab5a252aab0efa7dff3feed88fcbeabef4c46cdf7fae786e0feedf01","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"6355b4c3-869e-41b7-9311-380a7172c4cb","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1626-yield-fields-deed"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52193","feedbackHash":"62c53a40666a01c7eb810c5ed3f01b497a5771483597f8aff713163befa0d5ee","nodeKey":"audit_economics","submissionHash":"1167764916d220910f4247f427f145d7a8e2604d61ed226ca5828c9a1df3df23","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51020","feedbackHash":"598df471a2554d3db094692b82e274cfb7c07e7d3d25a4814bf6dbf4add1825a","nodeKey":"audit_flow","submissionHash":"e637c7e9b3ccd42045be6aaffd18fa921a41717c689230922801461e8430b2e4","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50952","feedbackHash":"0b4d4d9a048ec269824e7bd0c9abfcd6958ebb88190a4b3ad3748d6e3a496e20","nodeKey":"audit_judge","submissionHash":"ab476df2abe7a5c92756df9e2a55220d25abe60a9476003e2917ce0ef57d0f77","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50985","feedbackHash":"30eb6dd0197008662be22e342fc1f2d1c570eddc1477553c7a38a3085ac37cfc","nodeKey":"audit_math","submissionHash":"e530c15d07bc70997208ebe36a5c536d6684d253f55cbe6378df78c61a9aba19","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52254","feedbackHash":"76b88f4e3d88769d0c2718de4b463b6845965665b0ba469f9eba41541ccbad66","nodeKey":"audit_permissions","submissionHash":"7e0c95a415c6e65e33948092a80cd99ca04304b74a7f0c16935cfd412eaeac62","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52669","feedbackHash":"94b9816f0d847f9876723803c85847ebcd0ec9fc01314a5e66b59a0d62177dd4","nodeKey":"build_contract_project","submissionHash":"d2e3ba23a173b8050a2276cf95b427764bffe934b4228acac15f34ff239547c7","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52232","feedbackHash":"c5b6acddd501242894ed40d6aefcc0269a31c47f8925b04090e61017fbb07f00","nodeKey":"manifest","submissionHash":"be120c91c9b96591db3f53764152f77eee19257dac08e85b88fa5a3ea43aa577","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52166","feedbackHash":"714ab0988369c90ed315c453e85622c237f1166be815ebd08a9be36ea4b07035","nodeKey":"write_foundry_tests","submissionHash":"b0008775834fc1f2d849a32eb12baac39e56f80e29cee9a1bb3de0f3cda182ee","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"071b52eac34b50320a1252e2bb0360e130dd43679a52af42bedbc1986dd5b045","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"5d667e4b0751bcb5","findings":[],"hash":"1167764916d220910f4247f427f145d7a8e2604d61ed226ca5828c9a1df3df23","nodeId":"d4b24ae7-c30f-4c63-b2b4-959237137d73","outcome":"completed","summary":"The review is complete. The findings file is written and valid, the scratch test is removed, and the working tree shows no tracked changes.\n\n**Result: no defects in the economics area.** The file `.imd-findings.json` holds an empty findings list and nine coverage rows, one for each of the three state-changing entry points plus six invariants and flows I verified.\n\nWhat I checked, against the Economic Security, Invariant and Flow Gap guides:\n\n- **The token itself.** It is a 17-line wrapper that mints 1,000,000,000e18 to msg.sender in the constructor and adds nothing else. No owner, fee, burn, mint, pause, blacklist, hook, receive or fallback exists. Runtime bytecode has no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **The vendored library.** OpenZeppelin is version 5.1.0, and the ERC20 and Context sources read as unmodified upstream code with no overrides of the sender or update paths.\n- **Conservation and exactness.** A scratch Foundry test fuzzed multi-hop transfers and confirmed the sum of balances always equals total supply. Every launch flow arrives whole: factory to distributor, factory to pool manager, factory to requester, distributor to claimant, and a pool-manager-style pull through transferFrom. Since 1e27 divides evenly by 10,000, every basis-point split is integer-exact.\n- **Allowance semantics.** Max-uint allowance is never decremented, finite allowance decrements by exactly the amount spent, and the zero address reverts on every path. The approve-overwrite race is a property of the ERC-20 standard rather than a defect here, so it is not reported.\n- **Static analysis lead.** Aderyn's large-numeric-literal warning was reproduced as a non-issue. The literal evaluates to exactly the manifest supply.\n\nNot covered: launch.json, which is absent from the tree and written by a later step per the brief.","treeHash":null,"usage":{"cachedInputTokens":519851,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":10769,"runtime":"claude","turns":21,"wallClockMs":157528}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"584bd638e7e022f0","findings":[],"hash":"7e0c95a415c6e65e33948092a80cd99ca04304b74a7f0c16935cfd412eaeac62","nodeId":"9490c4d1-536a-41c7-9e16-79af8f7c7fae","outcome":"completed","summary":"Review complete. No defects found in the assigned area, and the findings file is written with the empty list and seven coverage rows.\n\n**Outcome.** The token at `src/YFDToken.sol` is a 16-line contract inheriting the vendored OpenZeppelin v5.1.0 ERC-20 with no owner, no modifiers, no constructor arguments and no overrides. Nothing in the Access Control, Trust Gap or Asymmetry guides applies with a concrete failure, so the report is clean.\n\n**What I verified**\n\n- **Permission model.** The compiled ABI exposes only the standard ERC-20 functions plus a constant view. Fourteen common admin, mint, pause, blacklist and seize selectors revert when called from the deployer. There is no receive or fallback, and calls carrying ETH revert.\n- **Deployer residual power.** After the constructor mints the supply to the factory, the factory cannot pull a holder's balance without allowance, cannot change supply, and cannot stop a holder transferring. Checked with a scratch Foundry test, since deleted.\n- **Vendored library integrity.** The five OpenZeppelin files the token compiles against are byte-identical to upstream v5.1.0, so no hidden privilege lives in `lib/`.\n- **Asymmetry.** Transfer and transferFrom move identical amounts through the same internal path. Allowance decrements exactly, with the documented infinite-allowance exception. Zero-address guards are mirrored on both sides. Self-transfers conserve balance. All fuzzed over 256 runs.\n- **Launch floor.** The protected test's exact opcode walk finds no DELEGATECALL, CALLCODE or SELFDESTRUCT. Supply equals the manifest value and sits entirely with the deployer.\n\n**Static-analysis lead.** The aderyn large-numeric-literal note on line 11 is a style remark. The expression equals the manifest supply exactly, which the project's own test asserts. Not a defect.\n\n**Not covered.** Nothing in my area was left unreached. Launch-flow economics and pool seeding belong to other specialists, though the floor tests they depend on would pass on this code as far as the token's behavior goes.","treeHash":null,"usage":{"cachedInputTokens":589206,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":13061,"runtime":"claude","turns":26,"wallClockMs":206994}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"ce6eaff570c608ab","findings":[],"hash":"ab476df2abe7a5c92756df9e2a55220d25abe60a9476003e2917ce0ef57d0f77","nodeId":"94915469-8e5b-49cb-b55f-3b0ba50678a8","outcome":"completed","summary":"The review is complete. The findings file is valid, the scratch directory is removed, and the working tree is unchanged apart from the untracked `.imd-findings.json` output.\n\n**Outcome: clean review, zero findings.** All five specialists reported nothing, and I confirmed that independently rather than taking their word for it.\n\nWhat I verified against the code:\n\n- **Source** is a 16-line contract: OpenZeppelin v5.1.0 `ERC20` with a constructor that mints exactly 1e27 to `msg.sender`. No owner, mint, burn, pause, blacklist, fee, or hook of any kind in the ABI.\n- **Vendored library** is a flattened copy, not a submodule, so I read the ERC20 and Context bodies in full. They are identical to upstream v5.1.0, with `_msgSender` returning `msg.sender` and no hidden overrides.\n- **Bytecode** has no DELEGATECALL, CALLCODE, SELFDESTRUCT or CREATE. Creation code is 2,645 bytes and runtime 1,752 bytes, far under the protocol limits. The constructor takes no arguments, so CREATE2 deployment by the factory needs nothing the manifest does not give.\n- **Manifest** uses only schema keys, lowercase addresses, correct types, supply matching the constructor, decimals matching, and notes well under the 4,000-character cap.\n- **Entry points** were traced through every success and revert path in a scratch Foundry test I wrote and ran, covering exact-amount transfers, zero-address reverts, insufficient balance and allowance reverts, finite and infinite allowance handling. The project's own 47 tests, including an invariant suite, also pass.\n- **Static analysis leads**: Slither reported nothing; the aderyn large-numeric-literal note is stylistic, the literal evaluates to exactly 1e27.\n\nThe coverage record marks all three entry points as `holds`, plus three invariant rows for fixed supply, deployability and dependency integrity. Nothing blocks admission of this launch.","treeHash":null,"usage":{"cachedInputTokens":535657,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":8091,"runtime":"claude","turns":12,"wallClockMs":210194}},{"artifacts":[],"attempt":1,"bundleHash":"1092d0ba358cae44490e78eef12ef168a588d8881bf1fe1939fafaa45578e927","device":"7f1dec5ffcbde1d8","findings":[],"hash":"b0008775834fc1f2d849a32eb12baac39e56f80e29cee9a1bb3de0f3cda182ee","nodeId":"d72d3200-bc9e-4c7c-8646-40733636b03d","outcome":"completed","summary":"Done. `forge build` and `forge test` pass with 47 tests across three suites, and only files under `test/` were added. No defects were found in the token, so no findings file was written.\n\n**What I added**\n\n- `test/YFDToken.edges.t.sol` (37 tests). Failure paths and edges on top of the existing suite: one wei, the whole supply, one over it, max uint, the same call twice, zero-amount transfers, self-transfer, zero receiver and zero spender, allowance one over and exactly drained, infinite allowance not decremented, owner needing a self-allowance, reverted calls spending nothing, allowance directionality, ether and unknown selectors rejected, and a runtime scan for DELEGATECALL, CALLCODE, SELFDESTRUCT and the EIP-170 size cap. It deploys through a factory probe in one transaction and checks the mint event, then simulates the launch flows the protected floor test performs: distributor share, pool pull under allowance, remainder, claim, and a buy-and-sell round trip, each asserted to the exact amount. Admin and privileged selectors are tried from a stranger, the deployer and the test, and must all revert. Seven fuzz tests at 1000 runs cover reverts above balance or allowance and exact conservation.\n- `test/YFDToken.invariant.t.sol`. A handler with eight actors (deployer, distributor, pool manager, requester, four holders), clamped handlers that must succeed, and unclamped ones that must revert with the exact error and move nothing. Ghost books track every balance, allowance and flow. Seven invariants run at 256 runs and depth 64 with fail-on-revert: fixed supply, actor balances sum to supply, balances and allowances match the ghost books, nobody sends more than they received, the zero address and token hold nothing, and metadata never changes.\n\n**Grounding**\n\nI ran the same handler and invariants against three broken tokens in the scratch area: a 1% burn on transfer, a public mint, and an accumulating approve. Each was caught by multiple invariants, so the properties are not vacuous.\n\n**Not worth a finding**\n\nTokens sent to the token contract itself are stranded with no recovery path. That is standard ERC-20 behaviour and the README documents it, so I pinned it as a test rather than reporting it.","treeHash":"3a23cd200e994b459f253bda5c43dae785e10b09","usage":{"cachedInputTokens":619289,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":24691,"runtime":"claude","turns":23,"wallClockMs":320344}},{"artifacts":[],"attempt":1,"bundleHash":"73062bfbe6100137e8edc86a8d345326d202f4265d823034afdf2f5d8c0b7dba","device":"82692ab5f7f7e54e","findings":[],"hash":"be120c91c9b96591db3f53764152f77eee19257dac08e85b88fa5a3ea43aa577","nodeId":"4abc5c13-2642-4551-935b-cc2be4d5a636","outcome":"completed","summary":"Done. I wrote `launch.json` at the repository root and it is the only changed file.\n\n**What the manifest describes.** The accepted tree holds a single contract, `YFDToken` in `src/YFDToken.sol`. It takes no constructor arguments and mints the whole supply once to msg.sender, so the manifest's constructorArgs list is empty and totalSupply is the constant from the source in minor units. There are no application contracts, so contracts is an empty list.\n\n**Manifest contents.**\n- kind is custom_token, with name Yield Fields Deed, symbol YFD, decimals 18.\n- totalSupply is 1000000000000000000000000000, which matches the source constant and the README.\n- pool is the launch's own: IMD pair address, fee 12500, tick spacing 60, initialPrice as provenance.\n- economics is copied verbatim from the job.\n- notes describe only the token actually present, in well under the 4000 character limit.\n\n**Checks run.**\n- A node script confirmed the manifest has only schema keys, the supply equals 10^27, and economics matches the job string byte for byte.\n- `forge build` compiled cleanly and `forge test` passed all 9 tests.\n- `git status` shows launch.json as the only new or changed file.","treeHash":"100cd752853ad81603c4e027bf2c76129603bb9e","usage":{"cachedInputTokens":213664,"inputTokens":130,"model":"claude-fable-5-1","outputTokens":2638,"runtime":"claude","turns":9,"wallClockMs":51450}},{"artifacts":[],"attempt":1,"bundleHash":"d434a856af7a6ff45b41a78a9b4bdea152590b816840b94347fabdc5dc4061ab","device":"7cb215928f3c9473","findings":[],"hash":"d2e3ba23a173b8050a2276cf95b427764bffe934b4228acac15f34ff239547c7","nodeId":"91c81655-27ef-4a77-9195-45e705ed8cdf","outcome":"completed","summary":"I've built the Yield Fields Deed token as `contract YFDToken` in `src/YFDToken.sol`. `forge build`, `forge test` (9 tests pass) and `forge fmt --check` all pass with solc 0.8.26. The work is not committed: git has no author name or email set on this machine, and changing that would mean touching `.git/`, which I'm not allowed to do. The files are staged on a new branch, `yfd-token`.\n\n**The token**\n- Name \"Yield Fields Deed\", symbol \"YFD\", 18 decimals.\n- The constructor mints 1,000,000,000 YFD (`1000000000000000000000000000` in smallest units) once, to the deployer (the launch factory). It takes no constructor arguments.\n- It is a standard OpenZeppelin v5.1.0 ERC-20 with nothing added: no owner, no further minting, no pause or blacklist, and no fee or burn on transfer. So the factory's transfers, the pool seed and trades move exactly the amounts they state.\n- I scanned the deployed bytecode for DELEGATECALL, CALLCODE and SELFDESTRUCT and found none.\n\n**Tests** (`test/YFDToken.t.sol`) cover:\n- name, symbol and decimals;\n- the whole supply going to the deployer;\n- exact transfers, approvals and `transferFrom`;\n- failures: transferring more than the balance, sending to the zero address, and `transferFrom` without an allowance;\n- calls to mint, owner, pause and `burnFrom` all failing;\n- a fuzz test that transfers never change the total supply.\n\nI did not run the launch's own checks (`.imd/reads/protected/...`). They use code the verifier supplies, which isn't in this repository.\n\n**Setup**\n- `foundry.toml` pins solc 0.8.26, turns the optimizer on and sets `bytecode_hash = \"none\"`.\n- forge-std v1.9.7 and the `contracts/` folder of OpenZeppelin v5.1.0 are copied into `lib/` as plain files, not submodules.\n- `README.md` covers the deployment parameters, assumptions, the fact that nothing needs setting after launch, and what operators and holders are responsible for.\n- I did not write `launch.json`; the manifest step does that.\n\nTo commit, set a git author name and email and run `git commit`.","treeHash":"d0272969132977ba8cfb07d572e8770ecc61a2cb","usage":{"cachedInputTokens":239613,"inputTokens":14,"model":"claude-opus-5-5","outputTokens":5936,"runtime":"claude","turns":7,"wallClockMs":66955}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"410247426ec5a6df","findings":[],"hash":"e530c15d07bc70997208ebe36a5c536d6684d253f55cbe6378df78c61a9aba19","nodeId":"8db159a3-ca5f-4208-9742-ed6e211bf3a3","outcome":"completed","summary":"The review is complete and the findings file holds a clean result.\n\n**Outcome:** no defects found in the Math Precision, Boundary or Numerical Gap areas. The file `.imd-findings.json` holds an empty findings list and seven coverage rows, one per listed entry point plus the invariants I checked. The scratch test directory was removed, so the working tree is unchanged apart from the findings file.\n\n**What was checked**\n\n- **Source and library.** The token is a 16-line fixed-supply wrapper over OpenZeppelin ERC20 with no overrides. The five vendored files the token imports are hash-identical to upstream OpenZeppelin v5.1.0, so the arithmetic under review is the audited upstream code.\n- **Entry points.** The compiled ABI exposes only approve, transfer and transferFrom as state-changing functions. There is no mint, burn, owner, payable, receive or fallback path, and the runtime contains no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **Precision and boundaries.** A sixteen-case scratch suite exercised zero amounts, the whole supply, supply plus one, max uint, self-transfer via both paths, infinite and near-infinite allowances, the exact-allowance edge, allowance exceeding balance, zero-address spender and sender, approve overwrite semantics, and value sent to non-payable functions. All behaved as ERC-20 specifies. An eight-hop fuzz confirmed the sum of balances stays exactly at the supply.\n- **Supply constant.** The literal evaluates to exactly 1e27, matching the brief and README, and fits int128 so Uniswap v4 deltas and the launch's percentage shares divide exactly. The aderyn large-literal lead is style only.\n- **Deployment boundary.** The creation bytecode executes to completion via eth_call on Robinhood Chain, Base and Ethereum, so the PUSH0 and MCOPY opcodes solc 0.8.26 emits are supported where it deploys.\n\n**Not covered:** nothing in the assigned area was left unreached. Access control, economics and launch manifest contents belong to the other specialists and no launch.json exists yet in this tree.","treeHash":null,"usage":{"cachedInputTokens":496479,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":11276,"runtime":"claude","turns":23,"wallClockMs":165281}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a31e321b410aaa02","findings":[],"hash":"e637c7e9b3ccd42045be6aaffd18fa921a41717c689230922801461e8430b2e4","nodeId":"d6f82eea-4bcf-4f2c-ac86-4e375240cb26","outcome":"completed","summary":"The review is complete. The findings file is written with an empty findings list and ten coverage rows, and the scratch test and temporary downloads are removed, leaving the tree clean apart from the findings file.\n\n**Outcome:** no defect found in the Yield Fields Deed token. All three listed entry points hold.\n\n**What was reviewed** under the Execution Trace, Periphery and First Principles guides:\n\n- **Token source.** `src/YFDToken.sol` is a 16-line OpenZeppelin ERC20 subclass. The constructor mints exactly 1e27 minor units once to the deployer and nothing else can mint. The compiled ABI exposes no owner, mint, burn, pause, blacklist, initialize or upgrade selector.\n- **Entry points.** Transfer and transferFrom move the exact amount with no fee, burn or hook, revert on insufficient balance, zero receiver and insufficient allowance, and conserve supply under fuzzing. Approve behaves per OpenZeppelin v5. Infinite allowance is not decremented, which is the standard semantics.\n- **Periphery.** The five OpenZeppelin files the token compiles are byte-identical to the upstream v5.1.0 release. The remaining vendored files differ only by forge fmt whitespace and are not compiled into the token.\n- **Runtime and chain.** The runtime bytecode contains no DELEGATECALL, CALLCODE, SELFDESTRUCT, CREATE or CREATE2. It uses PUSH0 and MCOPY, and an eth_call on Robinhood Chain executing both opcodes succeeded, so the Cancun build runs on the target chain.\n- **Launch flows.** A scratch test moved the swarm share, pool seed and remainder, then claim and sell legs, with exact balances. The project tests, a format check and the build all pass.\n\n**Static analysis leads.** Slither reported nothing. The aderyn large-numeric-literal line is the intended supply constant and not a defect.\n\n**Not reported on purpose.** The ERC-20 approve front-running race is inherent to the interface and documented by OpenZeppelin, so it is noted in the coverage row rather than filed as a finding.","treeHash":null,"usage":{"cachedInputTokens":546080,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":16360,"runtime":"claude","turns":26,"wallClockMs":217019}}],"verification":[{"checks":[{"durationMs":1460,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.36s\nCompiler run successful!\n","passed":true},{"durationMs":20188,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 9 tests for test/YFDToken.t.sol:YFDTokenTest\n[PASS] testFuzz_transferConservesSupply(uint256) (runs: 256, μ: 92996, ~: 93204)\nLogs:\n  Bound result 813079558283500306092426864\n\n[PASS] test_approveAndTransferFrom() (gas: 193350)\n[PASS] test_metadata() (gas: 32131)\n[PASS] test_noMintOrAdminEntrypoints() (gas: 160735)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 37805)\n[PASS] test_transferMovesExactAmount() (gas: 93134)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 37487)\n[PASS] test_transferToZeroAddressReverts() (gas: 32858)\n[PASS] test_wholeSupplyMintedToDeployer() (gas: 31290)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 46.90ms (47.58ms CPU time)\n\nRan 37 tests for test/YFDToken.edges.t.sol:YFDTokenEdgesTest\n[PASS] testFuzz_approveIsIdempotentAndOverwrites(uint256,uint256) (runs: 1000, μ: 153254, ~: 153342)\n[PASS] testFuzz_noBalanceExceedsSupply(address) (runs: 1000, μ: 10846, ~: 10846)\n[PASS] testFuzz_transferAboveBalanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 124249, ~: 124986)\nLogs:\n  Bound result 41810309866916258262502759\n  Bound result 341311834795402378676003152257471713935170946\n\n[PASS] testFuzz_transferFromAboveAllowanceAlwaysReverts(uint256,uint256) (runs: 1000, μ: 168456, ~: 168500)\nLogs:\n  Bound result 4103722502680485103125280946288870291281612443599773623064406250424984898\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639932\n\n[PASS] testFuzz_transferFromSpendsExactlyTheAmount(uint256,uint256,uint256) (runs: 1000, μ: 245720, ~: 247610)\nLogs:\n  Bound result 568543815991517133173521400\n  Bound result 3065711057060821031749733222150380339038696763530039671467753186638\n  Bound result 27855691899488491503021462\n\n[PASS] testFuzz_transferWithinBalanceMovesExactly(uint256,uint256,address) (runs: 1000, μ: 173968, ~: 175757)\nLogs:\n  Bound result 342273800924153833898003804\n  Bound result 342273800924153833898003804\n\n[PASS] testFuzz_twoHopTransferConservesSupply(uint256,uint256) (runs: 1000, μ: 180511, ~: 181801)\nLogs:\n  Bound result 148436947879\n  Bound result 148436947878\n\n[PASS] test_allowanceIsPerPair() (gas: 175823)\n[PASS] test_approveEmitsApproval() (gas: 61420)\n[PASS] test_approveOverwritesNotAccumulates() (gas: 137559)\n[PASS] test_approveWithoutBalanceIsAllowedButUnspendable() (gas: 114281)\n[PASS] test_approveZeroSpenderReverts() (gas: 32919)\n[PASS] test_constructorEmitsSingleMintTransfer() (gas: 12161)\n[PASS] test_constructorMintsOnceToDeployerInsideOneTransaction() (gas: 66125)\n[PASS] test_constructorTakesNoArguments() (gas: 580818)\n[PASS] test_eachDeploymentMintsToItsOwnDeployerOnly() (gas: 55586)\n[PASS] test_launchFlowsMoveExactlyWhatTheyState() (gas: 777058)\n[PASS] test_metadataAndSupplyConstant() (gas: 63717)\n[PASS] test_noAdminCallIncreasesSupplyFromAnyCaller() (gas: 1192020)\n[PASS] test_noPrivilegedCallMovesOrFreezesAHolder() (gas: 1192868)\n[PASS] test_runtimeHasNoDelegatecallCallcodeOrSelfdestructAndFitsEIP170() (gas: 2259762)\n[PASS] test_selfTransferKeepsBalance() (gas: 136995)\n[PASS] test_strangerCannotSpendDeployerSupply() (gas: 45468)\n[PASS] test_tokenRejectsEtherAndUnknownSelectors() (gas: 85311)\n[PASS] test_transferFromByOwnerStillNeedsSelfAllowance() (gas: 98134)\n[PASS] test_transferFromDoesNotEmitApprovalOnSpend() (gas: 187857)\n[PASS] test_transferFromExactAllowanceDrainsToZero() (gas: 222929)\n[PASS] test_transferFromInfiniteAllowanceIsNotDecremented() (gas: 189042)\n[PASS] test_transferFromOneOverAllowanceReverts() (gas: 167640)\n[PASS] test_transferFromToZeroAddressReverts() (gas: 156050)\n[PASS] test_transferMaxUintReverts() (gas: 41072)\n[PASS] test_transferOneOverBalanceReverts() (gas: 52690)\n[PASS] test_transferOneWei() (gas: 137866)\n[PASS] test_transferToSelfContractIsAllowedAndStranded() (gas: 80666)\n[PASS] test_transferToZeroAddressRevertsEvenForZeroAmount() (gas: 32878)\n[PASS] test_transferWholeSupplyThenNothingLeft() (gas: 132679)\n[PASS] test_transferZeroSucceedsAndEmits() (gas: 63234)\nSuite result: ok. 37 passed; 0 failed; 0 skipped; finished in 47.96ms (353.00ms CPU time)\n\nRan 1 test for test/YFDToken.invariant.t.sol:YFDTokenInvariantTest\n[PASS]\nYFDTokenInvariantTest invariants:\n[PASS] invariant_allowancesMatchGhostBooks\n[PASS] invariant_balancesMatchGhostBooks\n[PASS] invariant_metadataNeverChanges\n[PASS] invariant_nobodySpendsMoreThanTheyReceived\n[PASS] invariant_sumOfActorBalancesIsSupply\n[PASS] invariant_supplyIsFixed\n[PASS] invariant_zeroAddressAndTokenHoldNothing\n YFDTokenInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭------------+----------------------------+-------+---------+----------╮\n| Contract   | Selector                   | Calls | Reverts | Discards |\n+======================================================================+\n| YFDHandler | adminAttempt               | 1431  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | approve                    | 1378  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | approveAndTransferFrom     | 1360  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | approveMax                 | 1317  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | sendEther                  | 1347  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | transfer                   | 1314  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | transferAboveBalance       | 1434  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | transferAll                | 1347  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | transferFrom               | 1402  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | transferFromAboveAllowance | 1379  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | transferFromAboveBalance   | 1352  | 0       | 0        |\n|------------+----------------------------+-------+---------+----------|\n| YFDHandler | transferToZero             | 1323  | 0       | 0        |\n╰------------+----------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 6\n  Bound result 3\n  Bound result 3267056298222419481782628630071356239046699299835\n  Bound result 1\n  Bound result 4\n  Bound result 0\n  Bound result 7\n  Bound result 7\n  Bound result 8221\n  Bound result 4\n  Bound result 2\n  Bound result 6\n  Bound result 7\n  Bound result 0\n  Bound result 2\n  Bound result 3\n  Bound result 1\n  Bound result 3\n  Bound result 5408758120821985876953590\n  Bound result 7\n  Bound result 3\n  Bound result 3\n  Bound result 7\n  Bound result 0\n  Bound result 2\n  Bound result 4\n  Bound result 2\n  Bound result 0\n  Bound result 7\n  Bound result 4\n  Bound result 0\n  Bound result 0\n  Bound result 2\n  Bound result 1000000000000000000000000000\n  Bound result 7\n  Bound result 6\n  Bound result 240\n  Bound result 0\n  Bound result 6\n  Bound result 11444\n  Bound result 3\n  Bound result 4\n  Bound result 6\n  Bound result 12103\n  Bound result 1\n  Bound result 6\n  Bound result 0\n  Bound result 4446\n  Bound result 6\n  Bound result 6\n  Bound result 2\n  Bound result 7\n  Bound result 3\n  Bound result 2233625730\n  Bound result 1\n  Bound result 1000000000000000000\n  Bound result 3\n  Bound result 4\n  Bound result 1\n  Bound result 1\n  Bound result 7\n  Bound result 1000000000000000000000000000\n  Bound result 1\n  Bound result 50\n  Bound result 5\n  Bound result 5\n  Bound result 1\n  Bound result 0\n  Bound result 1\n  Bound result 6\n  Bound result 0\n  Bound result 4\n  Bound result 7\n  Bound result 3\n  Bound result 3\n  Bound result 0\n  Bound result 8969\n  Bound result 0\n  Bound result 4\n  Bound result 7\n  Bound result 1000000000\n  Bound result 7\n  Bound result 5\n  Bound result 7\n  Bound result 0\n  Bound result 6\n  Bound result 0\n  Bound result 6\n  Bound result 4\n  Bound result 6\n  Bound result 4\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 5\n  Bound result 0\n  Bound result 1\n  Bound result 18\n  Bound result 7\n  Bound result 1\n  Bound result 3\n  Bound result 0\n  Bound result 4\n  Bound result 5\n  Bound result 1\n  Bound result 170911438502927\n  Bound result 4\n  Bound result 2\n  Bound result 7\n  Bound result 153\n  Bound result 3\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2\n  Bound result 6\n  Bound result 1\n  Bound result 1\n  Bound result 3\n  Bound result 7\n  Bound result 7\n  Bound result 3\n  Bound result 2\n  Bound result 5\n  Bound result 4\n  Bound result 5\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 7\n  Bound result 0\n  Bound result 7\n  Bound result 4\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2\n  Bound result 4\n  Bound result 4\n  Bound result 1\n  Bound result 3\n  Bound result 7\n  Bound result 2\n  Bound result 0\n  Bound result 5\n  Bound result 4\n  Bound result 3\n  Bound result 651\n  Bound result 7\n  Bound result 7\n  Bound result 6\n  Bound result 0\n  Bound result 4\n  Bound result 4\n  Bound result 4\n  Bound result 0\n  Bound result 2\n  Bound result 3442\n  Bound result 2\n  Bound result 7\n  Bound result 2\n  Bound result 7\n  Bound result 7\n  Bound result 3442\n  Bound result 7\n  Bound result 4\n  Bound result 2\n  Bound result 0\n  Bound result 5\n  Bound result 0\n  Bound result 7\n  Bound result 3997\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2\n  Bound result 0\n  Bound result 40\n  Bound result 2\n  Bound result 4\n  Bound result 51291358920467742510535778305539\n  Bound result 3\n  Bound result 2\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 58550038436990345573137096435836019829885774792660434759306892932274\n  Bound result 4\n  Bound result 6\n  Bound result 3\n  Bound result 24576\n  Bound result 7\n  Bound result 5\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 20.11s (20.11s CPU time)\n\nRan 3 test suites in 20.11s (20.20s CPU time): 47 tests passed, 0 failed, 0 skipped (47 total tests)\n","passed":true},{"durationMs":36,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"YFDToken.approve(address,uint256)\",\"YFDToken.transfer(address,uint256)\",\"YFDToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":2,\"README.md\":60,\"foundry.toml\":9,\"remappings.txt\":2,\"src/YFDToken.sol\":16,\"test/YFDToken.edges.t.sol\":553,\"test/YFDToken.invariant.t.sol\":314,\"test/YFDToken.t.sol\":94},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"b0008775834fc1f2d849a32eb12baac39e56f80e29cee9a1bb3de0f3cda182ee","verifiedTreeHash":"3a23cd200e994b459f253bda5c43dae785e10b09","verifierVersion":"0.1.0+163fed5b"},{"checks":[{"durationMs":1162,"exitCode":0,"name":"build","output":"Compiling 26 files with Solc 0.8.26\nSolc 0.8.26 finished in 991.92ms\nCompiler run successful!\n","passed":true},{"durationMs":152,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 9 tests for test/YFDToken.t.sol:YFDTokenTest\n[PASS] testFuzz_transferConservesSupply(uint256) (runs: 256, μ: 93167, ~: 93234)\nLogs:\n  Bound result 1499\n\n[PASS] test_approveAndTransferFrom() (gas: 193350)\n[PASS] test_metadata() (gas: 32131)\n[PASS] test_noMintOrAdminEntrypoints() (gas: 160735)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 37805)\n[PASS] test_transferMovesExactAmount() (gas: 93134)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 37487)\n[PASS] test_transferToZeroAddressReverts() (gas: 32858)\n[PASS] test_wholeSupplyMintedToDeployer() (gas: 31290)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 5.60ms (6.70ms CPU time)\n\nRan 1 test suite in 7.54ms (5.60ms CPU time): 9 tests passed, 0 failed, 0 skipped (9 total tests)\n","passed":true},{"durationMs":77,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"YFDToken.approve(address,uint256)\",\"YFDToken.transfer(address,uint256)\",\"YFDToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":2,\"README.md\":60,\"foundry.toml\":9,\"launch.json\":24,\"remappings.txt\":2,\"src/YFDToken.sol\":16,\"test/YFDToken.t.sol\":94},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"be120c91c9b96591db3f53764152f77eee19257dac08e85b88fa5a3ea43aa577","verifiedTreeHash":"100cd752853ad81603c4e027bf2c76129603bb9e","verifierVersion":"0.1.0+163fed5b"},{"checks":[{"durationMs":1125,"exitCode":0,"name":"build","output":"Compiling 26 files with Solc 0.8.26\nSolc 0.8.26 finished in 952.02ms\nCompiler run successful!\n","passed":true},{"durationMs":147,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 9 tests for test/YFDToken.t.sol:YFDTokenTest\n[PASS] testFuzz_transferConservesSupply(uint256) (runs: 256, μ: 93089, ~: 93234)\nLogs:\n  Bound result 537575917144218988149805086\n\n[PASS] test_approveAndTransferFrom() (gas: 193350)\n[PASS] test_metadata() (gas: 32131)\n[PASS] test_noMintOrAdminEntrypoints() (gas: 160735)\n[PASS] test_transferFromRevertsWithoutAllowance() (gas: 37805)\n[PASS] test_transferMovesExactAmount() (gas: 93134)\n[PASS] test_transferRevertsOnInsufficientBalance() (gas: 37487)\n[PASS] test_transferToZeroAddressReverts() (gas: 32858)\n[PASS] test_wholeSupplyMintedToDeployer() (gas: 31290)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 5.09ms (6.14ms CPU time)\n\nRan 1 test suite in 6.73ms (5.09ms CPU time): 9 tests passed, 0 failed, 0 skipped (9 total tests)\n","passed":true},{"durationMs":71,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"YFDToken.approve(address,uint256)\",\"YFDToken.transfer(address,uint256)\",\"YFDToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":2,\"README.md\":60,\"foundry.toml\":9,\"remappings.txt\":2,\"src/YFDToken.sol\":16,\"test/YFDToken.t.sol\":94},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":751,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":324,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/YFDToken.sol:11: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"d2e3ba23a173b8050a2276cf95b427764bffe934b4228acac15f34ff239547c7","verifiedTreeHash":"d0272969132977ba8cfb07d572e8770ecc61a2cb","verifierVersion":"0.1.0+163fed5b"}]}