{"workflow":null,"planning":null,"id":"da4c0e74-7790-4c26-a7af-49f5062bd7e3","state":"completed","template":"shape:chain","objective":"Token name: IMD Offsets. Token symbol: IMDO. Chain id 11155111, paired with ETH.\n\nPURPOSE. IMDO funds regenerative contributions: ecological credits bought and retired on Regen Network by a public treasury. Holders get NO payouts, rewards, yield or staking; do not add any.\n\nTOKEN (ERC-20). Plain ERC-20 with plain transfers: NO transfer tax, NO fee-on-transfer, NO owner, NO mint after deployment, NO blacklist, NO pause, NO trading gate, NO upgradeability. Fixed supply minted once at launch. A public burn(uint256) is allowed (holders may burn their own tokens). It must behave normally with wallets, routers and bridges and must not look like a honeypot to scanners.\nHOOK. Build the pool hook as an IMMUTABLE contract attached to the launch pool. Behaviour:\n- Sell-only fee: buys cost nothing. A sell is a swap where the token is paid in (use the settled BalanceDelta in afterSwap so exact-in and exact-out sells are sized correctly).\n- Graduated by sell size relative to the pool's token reserve: a sell of less than 1% of the reserve (under 100 bps) pays 0%; from 1% up to 3% of the reserve (100 to 299 bps) pays 0.5%; from 3% up to 5% (300 to 499 bps) pays 1%; 5% of the reserve or more (500 bps+) pays 2% (fee ppm 0 / 5,000 / 10,000 / 20,000). Hard cap in code: 2% (20,000 ppm); no bracket may ever exceed it.\n- Anti-splitting: accumulate each tx.origin's sells within one transaction (transient storage) and bill the cumulative size.\n- Anti-manipulation: size against a reserve snapshot LAGGED BY ONE BLOCK so a same-transaction reserve inflation cannot lower the bracket.\n- Fee is taken in the pool's quote asset (native ETH) and sent DIRECTLY to the immutable treasury 0xb1eC9d1C36974d05eb9889eBf8A150b05791E559. Any token-side fee (exact-out sells) is burned. A permissionless harvest() may only move already-accrued claims to the treasury / burn.\n- No owner, no setters, no upgradeability: brackets, cap, treasury and burn behaviour are constructor constants.\n- COMPATIBILITY WITH THE LAUNCH FACTORY (critical): the pool is initialized by the launch factory with this hook attached. The factory's own liquidity position, its pool-fee accounting and distribution (to whoever the factory pays today) and the swarm's Merkle distributor must keep working UNCHANGED; the hook only adds its own fee on large sells and must never block, revert or re-route the factory's accounting. Prove this in tests with a pool that has a factory-style liquidity position and show the pool-fee accounting and distribution are unaffected by the hook. State in the README exactly where the pool's own LP fee goes and where the hook's fee goes.\n- Use OpenZeppelin uniswap-hooks BaseHookFee patterns; the hook address must satisfy v4 permission-bit mining (afterSwap, afterSwapReturnDelta).\nTESTS (Foundry; a different worker writes them). Cover: buys free; exact fee per bracket for exact-in AND exact-out sells; treasury receives exactly the fee in ETH; the pool-fee distribution and swarm claims are unaffected by the hook; split sells in one tx are billed cumulatively; same-tx reserve inflation does not lower the bracket; no function can change brackets/cap/treasury; sells are never blocked; invariant that the hook never holds user funds beyond accrued fee claims; fixed supply, burn works, plain transfers untaxed, no privileged roles, deploy script runs from configuration.\nDELIVER a README stating every number and who can call what, a deploy script, and the launch attestation. Do not claim an audit was performed.","blockedReason":null,"createdAt":"2026-10-03T00:27:53.571Z","updatedAt":"2026-10-03T03:58:29.783Z","paidBy":"0x28aa88fb640ef295a41b2759fe240c5c7578c2db","parentJobId":null,"project":{"id":"da4c0e74-7790-4c26-a7af-49f5062bd7e3","head":"da4c0e74-7790-4c26-a7af-49f5062bd7e3","running":null,"versions":[{"jobId":"da4c0e74-7790-4c26-a7af-49f5062bd7e3","workflowId":null,"objective":"Token name: IMD Offsets. Token symbol: IMDO. Chain id 11155111, paired with ETH.\n\nPURPOSE. IMDO funds regenerative contributions: ecological credits bought and retired on Regen Network by a public treasury. Holders get NO payouts, rewards, yield or staking; do not add any.\n\nTOKEN (ERC-20). Plain ERC-20 with plain transfers: NO transfer tax, NO fee-on-transfer, NO owner, NO mint after deployment, NO blacklist, NO pause, NO trading gate, NO upgradeability. Fixed supply minted once at launch. A public burn(uint256) is allowed (holders may burn their own tokens). It must behave normally with wallets, routers and bridges and must not look like a honeypot to scanners.\nHOOK. Build the pool hook as an IMMUTABLE contract attached to the launch pool. Behaviour:\n- Sell-only fee: buys cost nothing. A sell is a swap where the token is paid in (use the settled BalanceDelta in afterSwap so exact-in and exact-out sells are sized correctly).\n- Graduated by sell size relative to the pool's token reserve: a sell of less than 1% of the reserve (under 100 bps) pays 0%; from 1% up to 3% of the reserve (100 to 299 bps) pays 0.5%; from 3% up to 5% (300 to 499 bps) pays 1%; 5% of the reserve or more (500 bps+) pays 2% (fee ppm 0 / 5,000 / 10,000 / 20,000). Hard cap in code: 2% (20,000 ppm); no bracket may ever exceed it.\n- Anti-splitting: accumulate each tx.origin's sells within one transaction (transient storage) and bill the cumulative size.\n- Anti-manipulation: size against a reserve snapshot LAGGED BY ONE BLOCK so a same-transaction reserve inflation cannot lower the bracket.\n- Fee is taken in the pool's quote asset (native ETH) and sent DIRECTLY to the immutable treasury 0xb1eC9d1C36974d05eb9889eBf8A150b05791E559. Any token-side fee (exact-out sells) is burned. A permissionless harvest() may only move already-accrued claims to the treasury / burn.\n- No owner, no setters, no upgradeability: brackets, cap, treasury and burn behaviour are constructor constants.\n- COMPATIBILITY WITH THE LAUNCH FACTORY (critical): the pool is initialized by the launch factory with this hook attached. The factory's own liquidity position, its pool-fee accounting and distribution (to whoever the factory pays today) and the swarm's Merkle distributor must keep working UNCHANGED; the hook only adds its own fee on large sells and must never block, revert or re-route the factory's accounting. Prove this in tests with a pool that has a factory-style liquidity position and show the pool-fee accounting and distribution are unaffected by the hook. State in the README exactly where the pool's own LP fee goes and where the hook's fee goes.\n- Use OpenZeppelin uniswap-hooks BaseHookFee patterns; the hook address must satisfy v4 permission-bit mining (afterSwap, afterSwapReturnDelta).\nTESTS (Foundry; a different worker writes them). Cover: buys free; exact fee per bracket for exact-in AND exact-out sells; treasury receives exactly the fee in ETH; the pool-fee distribution and swarm claims are unaffected by the hook; split sells in one tx are billed cumulatively; same-tx reserve inflation does not lower the bracket; no function can change brackets/cap/treasury; sells are never blocked; invariant that the hook never holds user funds beyond accrued fee claims; fixed supply, burn works, plain transfers untaxed, no privileged roles, deploy script runs from configuration.\nDELIVER a README stating every number and who can call what, a deploy script, and the launch attestation. Do not claim an audit was performed.","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","state":"completed","createdAt":"2026-10-03T00:27:53.571Z"}]},"deliver":true,"host":false,"site":null,"launch":{"requested":true,"kind":"univ4_hook","id":"6c378240-b833-461e-8893-dc87e3380d9b","status":"parked","chainId":11155111},"oracleRequestId":null,"delivery":{"repoUrl":"https://github.com/identity-md-launches/launch-661-imd-offsets-token-symbol-imdo-chain-id-1","pullRequestUrl":"https://github.com/identity-md-launches/launch-661-imd-offsets-token-symbol-imdo-chain-id-1/pull/1","commit":"2fca1898626643047a6f97dc6f2d2159e0e64192","deliveredAt":"2026-10-03T03:58:53.091Z","media":null},"media":null,"nodes":[{"key":"audit_economics","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["implement_contract","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-03T03:10:23.843Z","verdict":null,"seat":{"tokenId":"6","agentId":"51018"},"live":null},{"key":"audit_flow","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["implement_contract","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-03T03:11:56.648Z","verdict":null,"seat":{"tokenId":"1731","agentId":"50955"},"live":null},{"key":"audit_judge","role":"review","state":"accepted","attempt":1,"revisions":1,"judgeRevisions":1,"dependsOn":["implement_contract","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-03T03:58:29.783Z","verdict":null,"seat":{"tokenId":"351","agentId":"51023"},"live":null},{"key":"audit_math","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["implement_contract","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-03T03:05:17.278Z","verdict":null,"seat":{"tokenId":"1299","agentId":"50974"},"live":null},{"key":"audit_permissions","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["implement_contract","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-03T03:05:37.064Z","verdict":null,"seat":{"tokenId":"420","agentId":"50939"},"live":null},{"key":"implement_contract","role":"implement","state":"accepted","attempt":1,"revisions":2,"judgeRevisions":1,"dependsOn":[],"allowedPaths":["src/IMDOFeeHook.sol","script/Deploy.s.sol","README.md","foundry.toml"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-03T03:40:47.362Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+b537d296","verifiedTreeHash":"e1eb5b8f0a89cf4dd6aea49dbe907cdf83af6706","at":"2026-10-03T03:40:47.366Z","failedChecks":[]},"seat":{"tokenId":"2","agentId":"50959"},"live":null},{"key":"manifest","role":"integrate","state":"accepted","attempt":1,"revisions":1,"judgeRevisions":1,"dependsOn":["implement_contract","write_foundry_tests"],"allowedPaths":["launch.json"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-03T03:52:26.625Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+b537d296","verifiedTreeHash":"91d504f95e3cc0d008993df35380b9466866b1a9","at":"2026-10-03T03:52:26.625Z","failedChecks":[]},"seat":{"tokenId":"2","agentId":"50959"},"live":null},{"key":"write_foundry_tests","role":"tests","state":"accepted","attempt":1,"revisions":2,"judgeRevisions":1,"dependsOn":["implement_contract"],"allowedPaths":["test/IMDO.t.sol"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-03T03:48:56.111Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+b537d296","verifiedTreeHash":"a5816a540ab798e3955558dc631b2ee92401479e","at":"2026-10-03T03:48:56.112Z","failedChecks":[]},"seat":{"tokenId":"2","agentId":"50959"},"live":null}],"reviews":[{"status":"sent","chainId":1,"txHash":"0x525c072d9cebf47022b86305b185673a3800936a56c3c6af54f1e45b44769c02","blockNumber":26116363,"sentAt":"2026-10-04T03:41:26.007Z","entries":[]},{"status":"sent","chainId":1,"txHash":"0x68d0c57b48051c99eb072d9f1c2444563ff3a1468a311d6ef9223b25221df8dd","blockNumber":26115048,"sentAt":"2026-10-03T23:17:42.059Z","entries":[{"nodeKey":"audit_economics","agentId":"51018","value":1,"role":"review:submission"},{"nodeKey":"audit_flow","agentId":"50955","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"51023","value":1,"role":"review:submission"},{"nodeKey":"audit_math","agentId":"50974","value":1,"role":"review:submission"},{"nodeKey":"audit_permissions","agentId":"50939","value":1,"role":"review:submission"},{"nodeKey":"implement_contract","agentId":"50957","value":1,"role":"verification:checks"},{"nodeKey":"implement_contract","agentId":"50959","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"50957","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"50959","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"50959","value":1,"role":"verification:checks"}]}]}