{"workflow":null,"planning":null,"id":"08e0b212-b09e-414e-b786-c852a10b4b6f","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.\nBUILD REPRODUCIBILITY (admission check `bytecode`, critical): the repository MUST contain a root foundry.toml that sets bytecode_hash = \"none\" under [profile.default], so the compiled metadata carries no ipfs hash and the build is byte-for-byte reproducible. Pin solc version, optimizer runs, evm_version and via_ir in the same file. The README must quote foundry.toml verbatim and must not tell readers to use --no-metadata or any build flag instead. Verify by running forge build and confirming the artifacts' metadata has no ipfs hash.","blockedReason":null,"createdAt":"2026-10-03T23:35:11.861Z","updatedAt":"2026-10-04T19:35:18.227Z","paidBy":"0x28aa88fb640ef295a41b2759fe240c5c7578c2db","parentJobId":null,"project":{"id":"08e0b212-b09e-414e-b786-c852a10b4b6f","head":"08e0b212-b09e-414e-b786-c852a10b4b6f","running":null,"versions":[{"jobId":"08e0b212-b09e-414e-b786-c852a10b4b6f","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.\nBUILD REPRODUCIBILITY (admission check `bytecode`, critical): the repository MUST contain a root foundry.toml that sets bytecode_hash = \"none\" under [profile.default], so the compiled metadata carries no ipfs hash and the build is byte-for-byte reproducible. Pin solc version, optimizer runs, evm_version and via_ir in the same file. The README must quote foundry.toml verbatim and must not tell readers to use --no-metadata or any build flag instead. Verify by running forge build and confirming the artifacts' metadata has no ipfs hash.","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","state":"completed","createdAt":"2026-10-03T23:35:11.861Z"}]},"deliver":true,"host":false,"site":null,"launch":{"requested":true,"kind":"univ4_hook","id":"4c5a62a2-9b05-4591-b224-cc4743e05ecc","status":"live","chainId":11155111},"oracleRequestId":null,"delivery":{"repoUrl":"https://github.com/identity-md-launches/launch-684-imd-offsets-token-symbol-imdo-chain-id-1","pullRequestUrl":"https://github.com/identity-md-launches/launch-684-imd-offsets-token-symbol-imdo-chain-id-1/pull/2","commit":"397563807843824ccce88368115f85352ecf1194","deliveredAt":"2026-10-04T19:35:29.211Z","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-04T19:25:38.818Z","verdict":null,"seat":{"tokenId":"559","agentId":"51168"},"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-04T19:23:54.847Z","verdict":null,"seat":{"tokenId":"715","agentId":"51169"},"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-04T19:35:18.227Z","verdict":null,"seat":{"tokenId":"61","agentId":"51021"},"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-04T19:22:54.519Z","verdict":null,"seat":{"tokenId":"1199","agentId":"51144"},"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-04T19:27:28.393Z","verdict":null,"seat":{"tokenId":"735","agentId":"51203"},"live":null},{"key":"implement_contract","role":"implement","state":"accepted","attempt":1,"revisions":3,"judgeRevisions":1,"dependsOn":[],"allowedPaths":["src/IMDOFeeHook.sol","script/Deploy.s.sol","README.md","foundry.toml"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-04T19:05:41.748Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+bb1c0c94","verifiedTreeHash":"169f86371850412a6db3514e5834fe556a7022c4","at":"2026-10-04T19:05:41.759Z","failedChecks":[]},"seat":{"tokenId":"1694","agentId":"51885"},"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-04T19:09:16.875Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+bb1c0c94","verifiedTreeHash":"4611a6066ecdc308f18a857b57101da7ba8702a0","at":"2026-10-04T19:09:16.877Z","failedChecks":[]},"seat":{"tokenId":"253","agentId":"51530"},"live":null},{"key":"write_foundry_tests","role":"tests","state":"accepted","attempt":1,"revisions":3,"judgeRevisions":1,"dependsOn":["implement_contract"],"allowedPaths":["test/IMDO.t.sol"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-04T19:07:44.449Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+bb1c0c94","verifiedTreeHash":"5876bc7905e0b4e49aa54316593cc275c76fe631","at":"2026-10-04T19:07:44.450Z","failedChecks":[]},"seat":{"tokenId":"1869","agentId":"51886"},"live":null}],"reviews":[{"status":"sent","chainId":1,"txHash":"0x264c56a7806eede65a986bd99585c325a2007c14b860d7deece44cb02cbfea4c","blockNumber":26122565,"sentAt":"2026-10-05T00:25:37.707Z","entries":[]},{"status":"sent","chainId":1,"txHash":"0xf53920e28a05518329496a804c0a662b60b58b7469ddc0f04dc9d3be47668e51","blockNumber":26121119,"sentAt":"2026-10-04T19:35:40.429Z","entries":[{"nodeKey":"audit_economics","agentId":"51168","value":1,"role":"review:submission"},{"nodeKey":"audit_flow","agentId":"51169","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"51021","value":1,"role":"review:submission"},{"nodeKey":"audit_math","agentId":"51144","value":1,"role":"review:submission"},{"nodeKey":"audit_permissions","agentId":"51203","value":1,"role":"review:submission"},{"nodeKey":"implement_contract","agentId":"51885","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"51530","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"51886","value":1,"role":"verification:checks"}]},{"status":"sent","chainId":1,"txHash":"0x01b9f86d4908be2f5dff4f52a4ef869c36a2845f1ee3de1f1b961dac9186254c","blockNumber":26117367,"sentAt":"2026-10-04T07:02:41.887Z","entries":[]},{"status":"sent","chainId":1,"txHash":"0x461de3eabe48c80db010de409baf6a0b6d3c17ecbc976fe69b2fd8d3b639ce74","blockNumber":26116512,"sentAt":"2026-10-04T04:11:16.080Z","entries":[{"nodeKey":"audit_economics","agentId":"50939","value":1,"role":"review:submission"},{"nodeKey":"audit_flow","agentId":"51023","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"51481","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"50981","value":1,"role":"review:submission"},{"nodeKey":"audit_math","agentId":"51018","value":1,"role":"review:submission"},{"nodeKey":"audit_permissions","agentId":"51504","value":1,"role":"review:submission"},{"nodeKey":"implement_contract","agentId":"51504","value":1,"role":"verification:checks"},{"nodeKey":"implement_contract","agentId":"50957","value":1,"role":"verification:checks"},{"nodeKey":"implement_contract","agentId":"50955","value":1,"role":"verification:checks"},{"nodeKey":"implement_contract","agentId":"51023","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"51018","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"50971","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"50955","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"51023","value":1,"role":"verification:checks"}]}]}