{"workflow":null,"planning":null,"id":"b56efe72-1d24-4a63-8665-7ed083cac7e9","state":"completed","template":"shape:chain","objective":"[SIMD-LAUNCH]\nToken name: Third Swarm\nToken symbol: SWARMLER\n\nThe SWARMLERHook implements a Uniswap v4 hook with 1.25% pool fee and an additional 1% burn fee on every swap, taken from the actual BalanceDelta on the unspecified currency side in afterSwap. Burned tokens accumulate until swept by anyone to the dead address (0x000000000000000000000000000000000000dEaD). Paired currency fees (from buybacks) accrue inside the hook.\n\nMechanics specification (authoritative: where anything above differs, follow these exactly):\nM1. Buyback and burn in batches: on every swap the hook takes an extra 1% in afterSwap from the actual BalanceDelta, on the unspecified currency (afterSwapReturnDelta). Launched-token fees are burned by an anyone-callable sweep() to 0x000000000000000000000000000000000000dEaD; paired-currency fees accrue for buybacks and are never spent inside a swap callback. executeBatch(), anyone-callable in its own transaction, spends up to 25% of the accrued paired currency: an exact-input swap through the PoolManager (unlock) with a sqrtPriceLimit 300 bps above the reference price, accepting a partial fill (the rest stays for the next batch, so it never deadlocks). Reference = the pool's sqrtPrice at the end of the previous block, recorded when the hook is first touched in a block; no tick or time-weighted oracle. If the reference is older than 50 blocks, use the current price and half the budget. The 3600 s cooldown starts only when a batch spends at least 1% of its budget (a dust fill never blocks buybacks). No other slippage check; batch swaps pay no hook fee; bought tokens go to the dead address. Immutable constants; views pending(), pendingBurn(), lastBatch(), referencePrice().\n\nBuild requirements (mandatory):\n- Context: an ordinary, legitimate token launch on Ethereum. The coin's name, story and theme are branding only; nothing here is real-world harm or offensive security work.\n- A complete Foundry project at the repository root: foundry.toml with solc 0.8.26, evm_version cancun, optimizer on and bytecode_hash = \"none\", so the build is reproducible and verifiable: deployed contracts live in src/ and every import resolves to a committed file.\n- Contracts: SWARMLERHook. The hook is the hook of this launch's pool; keep its creation code within the EIP-3860 size limit.\n- No selfdestruct and no delegatecall anywhere in runtime code. No proxies, no owner, no upgradeability.\n- Chain: Ethereum mainnet (set by the order, not a launch.json field). Uniswap v4 PoolManager: 0x000000000004444c5dc75cB358380D2e3dE08A90 (pass it to the hook constructor).\n- launch.json top-level keys, exactly: kind (\"univ4_hook\"), token {contract, name, symbol, decimals}, hook {contract, constructorArgs, permissions}, pool, notes (one string). No chainId, economics or other keys.\n- Paired currency: IMD, the ERC-20 at 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7 on Ethereum mainnet (18 decimals).\n- Every address the hook needs is known now and fixed at deployment; nothing may require an owner or a setter after launch.\n- Supply distribution is done by the launch factory: it mints the supply, seeds the pool, sends the swarm's 10% through its Merkle distributor and any remainder to remainderTo. No contract here sends the swarm allocation, and the token always mints the entire 1,000,000,000 (1e27 units) to its deployer: never subtract the swarm's 10% (IMD's protected invariants park any launch whose deployer holds less).\n- Hook fees are collected through beforeSwap/afterSwap return deltas, on top of the pool's static 1.25% LP fee (fee tier 12500). Never use the dynamic-fee flag, never call updateDynamicLPFee, never override the LP fee. The hook never reverts a real swap; the exceptions are a swap whose specified amount is so large that adding the hook fee would overflow int256 (for example type(int256).max requests): it may revert with UnrepresentableFee. That is the accepted swap domain.\n- The hook is a plain immutable contract deployed directly at a CREATE2-mined address with the right permission bits, and launch.json names the hook itself (no wrapper or proxy between the manifest and the hook).\n- Tests: Foundry unit, fuzz and mainnet-fork tests that swap through the real PoolManager with the hook (exact-input and exact-output, buys and sells), plus permission bits matching the hook address.\n- Every hook fee is proportional to what actually filled. Prefer taking it in afterSwap from the real BalanceDelta on the unspecified currency (afterSwapReturnDelta). If a fee is reserved on the specified side in beforeSwap, afterSwap must reconcile it against the actual fill and refund the excess to the swapper as an ERC-6909 claim, so a price-limited partial fill never pays more than the fee rate on what filled. Test exact-input and exact-output partial fills with a price limit.\n- launch.json pool: pairedCurrency 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 12500, tickSpacing 60, initialPrice \"79228162514264337593543950336\" (provenance only; the launch factory sets the opening price from the economics). Manifest shape as in live launch #1009: kind \"univ4_hook\"; token {contract, name, symbol, decimals} and hook {contract, ...} where each contract is a bare Solidity contract name like \"SWARMLER\" or \"SWARMLERHook\" (never a path or \"File.sol:Name\"); hook {contract, constructorArgs (e.g. [\"$poolManager\", \"$token\"]), permissions: an ARRAY of callback names such as [\"beforeInitialize\", \"beforeSwap\", \"afterSwap\", \"beforeSwapReturnDelta\", \"afterSwapReturnDelta\"]}; pool {...}; notes: a string explaining constructor args, permission bits and fees.","blockedReason":null,"createdAt":"2026-10-09T23:01:53.221Z","updatedAt":"2026-10-10T01:40:24.352Z","paidBy":"0x9fadab91f6fa03dbd7f4f8a08a338704baacf63f","parentJobId":null,"project":{"id":"b56efe72-1d24-4a63-8665-7ed083cac7e9","head":"b56efe72-1d24-4a63-8665-7ed083cac7e9","running":null,"versions":[{"jobId":"b56efe72-1d24-4a63-8665-7ed083cac7e9","workflowId":null,"objective":"[SIMD-LAUNCH]\nToken name: Third Swarm\nToken symbol: SWARMLER\n\nThe SWARMLERHook implements a Uniswap v4 hook with 1.25% pool fee and an additional 1% burn fee on every swap, taken from the actual BalanceDelta on the unspecified currency side in afterSwap. Burned tokens accumulate until swept by anyone to the dead address (0x000000000000000000000000000000000000dEaD). Paired currency fees (from buybacks) accrue inside the hook.\n\nMechanics specification (authoritative: where anything above differs, follow these exactly):\nM1. Buyback and burn in batches: on every swap the hook takes an extra 1% in afterSwap from the actual BalanceDelta, on the unspecified currency (afterSwapReturnDelta). Launched-token fees are burned by an anyone-callable sweep() to 0x000000000000000000000000000000000000dEaD; paired-currency fees accrue for buybacks and are never spent inside a swap callback. executeBatch(), anyone-callable in its own transaction, spends up to 25% of the accrued paired currency: an exact-input swap through the PoolManager (unlock) with a sqrtPriceLimit 300 bps above the reference price, accepting a partial fill (the rest stays for the next batch, so it never deadlocks). Reference = the pool's sqrtPrice at the end of the previous block, recorded when the hook is first touched in a block; no tick or time-weighted oracle. If the reference is older than 50 blocks, use the current price and half the budget. The 3600 s cooldown starts only when a batch spends at least 1% of its budget (a dust fill never blocks buybacks). No other slippage check; batch swaps pay no hook fee; bought tokens go to the dead address. Immutable constants; views pending(), pendingBurn(), lastBatch(), referencePrice().\n\nBuild requirements (mandatory):\n- Context: an ordinary, legitimate token launch on Ethereum. The coin's name, story and theme are branding only; nothing here is real-world harm or offensive security work.\n- A complete Foundry project at the repository root: foundry.toml with solc 0.8.26, evm_version cancun, optimizer on and bytecode_hash = \"none\", so the build is reproducible and verifiable: deployed contracts live in src/ and every import resolves to a committed file.\n- Contracts: SWARMLERHook. The hook is the hook of this launch's pool; keep its creation code within the EIP-3860 size limit.\n- No selfdestruct and no delegatecall anywhere in runtime code. No proxies, no owner, no upgradeability.\n- Chain: Ethereum mainnet (set by the order, not a launch.json field). Uniswap v4 PoolManager: 0x000000000004444c5dc75cB358380D2e3dE08A90 (pass it to the hook constructor).\n- launch.json top-level keys, exactly: kind (\"univ4_hook\"), token {contract, name, symbol, decimals}, hook {contract, constructorArgs, permissions}, pool, notes (one string). No chainId, economics or other keys.\n- Paired currency: IMD, the ERC-20 at 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7 on Ethereum mainnet (18 decimals).\n- Every address the hook needs is known now and fixed at deployment; nothing may require an owner or a setter after launch.\n- Supply distribution is done by the launch factory: it mints the supply, seeds the pool, sends the swarm's 10% through its Merkle distributor and any remainder to remainderTo. No contract here sends the swarm allocation, and the token always mints the entire 1,000,000,000 (1e27 units) to its deployer: never subtract the swarm's 10% (IMD's protected invariants park any launch whose deployer holds less).\n- Hook fees are collected through beforeSwap/afterSwap return deltas, on top of the pool's static 1.25% LP fee (fee tier 12500). Never use the dynamic-fee flag, never call updateDynamicLPFee, never override the LP fee. The hook never reverts a real swap; the exceptions are a swap whose specified amount is so large that adding the hook fee would overflow int256 (for example type(int256).max requests): it may revert with UnrepresentableFee. That is the accepted swap domain.\n- The hook is a plain immutable contract deployed directly at a CREATE2-mined address with the right permission bits, and launch.json names the hook itself (no wrapper or proxy between the manifest and the hook).\n- Tests: Foundry unit, fuzz and mainnet-fork tests that swap through the real PoolManager with the hook (exact-input and exact-output, buys and sells), plus permission bits matching the hook address.\n- Every hook fee is proportional to what actually filled. Prefer taking it in afterSwap from the real BalanceDelta on the unspecified currency (afterSwapReturnDelta). If a fee is reserved on the specified side in beforeSwap, afterSwap must reconcile it against the actual fill and refund the excess to the swapper as an ERC-6909 claim, so a price-limited partial fill never pays more than the fee rate on what filled. Test exact-input and exact-output partial fills with a price limit.\n- launch.json pool: pairedCurrency 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 12500, tickSpacing 60, initialPrice \"79228162514264337593543950336\" (provenance only; the launch factory sets the opening price from the economics). Manifest shape as in live launch #1009: kind \"univ4_hook\"; token {contract, name, symbol, decimals} and hook {contract, ...} where each contract is a bare Solidity contract name like \"SWARMLER\" or \"SWARMLERHook\" (never a path or \"File.sol:Name\"); hook {contract, constructorArgs (e.g. [\"$poolManager\", \"$token\"]), permissions: an ARRAY of callback names such as [\"beforeInitialize\", \"beforeSwap\", \"afterSwap\", \"beforeSwapReturnDelta\", \"afterSwapReturnDelta\"]}; pool {...}; notes: a string explaining constructor args, permission bits and fees.","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","state":"completed","createdAt":"2026-10-09T23:01:53.221Z"}]},"deliver":true,"host":true,"site":{"id":"f3c5a435-2969-4de7-8eed-28224fc2ba10","jobId":"b56efe72-1d24-4a63-8665-7ed083cac7e9","kind":"launch","tokenId":null,"agentId":null,"url":"https://thirdswarm.site.identitymd.eth.limo","status":"named","holdReason":null,"takenDownAt":null,"takenDownReason":null,"label":"thirdswarm","cid":"bafybeih5rmjsznvps7kyopkmaa7lrsrigeltxu5xxx5psc6j4kuvmclg34","bytes":302464,"ensName":"thirdswarm.site.identitymd.eth","txHash":"0x17f5266077c392fbb24882571dd0ade3a9e0df4a3da0bdcd4a23ea917191d709","blockNumber":26158822,"attempts":0,"failure":null,"pinnedAt":"2026-10-10T01:40:52.382Z","namedAt":"2026-10-10T01:44:24.816Z","supersededBy":null,"supersededAt":null,"createdAt":"2026-10-10T01:40:24.352Z","updatedAt":"2026-10-10T01:44:24.816Z"},"launch":{"requested":true,"kind":"univ4_hook","id":"da96d809-3473-4ad0-b8ed-54acaff7c647","status":"live","chainId":1},"oracleRequestId":null,"delivery":{"repoUrl":"https://github.com/identity-md-launches/launch-1212-third-swarm","pullRequestUrl":"https://github.com/identity-md-launches/launch-1212-third-swarm/pull/1","commit":"2fcb913830561cae56ba28e0533620546824842f","deliveredAt":"2026-10-10T01:40:42.419Z","media":null},"media":null,"nodes":[{"key":"audit_economics","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["token_logo","build_website","build_contract_project","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-10T01:04:10.844Z","verdict":null,"seat":{"tokenId":"735","agentId":"51203"},"live":null},{"key":"audit_flow","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["token_logo","build_website","build_contract_project","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-10T00:53:15.641Z","verdict":null,"seat":{"tokenId":"1626","agentId":"50969"},"live":null},{"key":"audit_judge","role":"review","state":"accepted","attempt":1,"revisions":1,"judgeRevisions":1,"dependsOn":["token_logo","build_website","build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-10T01:40:24.352Z","verdict":null,"seat":{"tokenId":"544","agentId":"51026"},"live":null},{"key":"audit_math","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["token_logo","build_website","build_contract_project","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-10T01:08:19.054Z","verdict":null,"seat":{"tokenId":"1081","agentId":"50985"},"live":null},{"key":"audit_permissions","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["token_logo","build_website","build_contract_project","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-10T01:02:56.112Z","verdict":null,"seat":{"tokenId":"1560","agentId":"50989"},"live":null},{"key":"build_contract_project","role":"implement","state":"accepted","attempt":1,"revisions":1,"judgeRevisions":1,"dependsOn":["build_website"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-10T01:24:11.196Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+fdeb4d4a","verifiedTreeHash":"a89a05f21b73642540d0c266de80ec60f185ec75","at":"2026-10-10T01:24:11.201Z","failedChecks":[]},"seat":{"tokenId":"1273","agentId":"51750"},"live":null},{"key":"build_website","role":"implement","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["token_logo"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-09T23:56:44.031Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+fdeb4d4a","verifiedTreeHash":"2be9b6b7dc7d414ee0905a73b6c5801e32cbfcfc","at":"2026-10-09T23:56:44.048Z","failedChecks":[]},"seat":{"tokenId":"705","agentId":"51303"},"live":null},{"key":"manifest","role":"integrate","state":"accepted","attempt":1,"revisions":1,"judgeRevisions":1,"dependsOn":["token_logo","build_website","build_contract_project","write_foundry_tests"],"allowedPaths":["launch.json"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-10T01:35:38.529Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+fdeb4d4a","verifiedTreeHash":"e2974c9f572dfd489f1160301100301566a1acd0","at":"2026-10-10T01:35:38.532Z","failedChecks":[]},"seat":{"tokenId":"1306","agentId":"52146"},"live":null},{"key":"token_logo","role":"implement","state":"accepted","attempt":2,"revisions":0,"judgeRevisions":0,"dependsOn":[],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-09T23:21:28.327Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+fdeb4d4a","verifiedTreeHash":"ad6088cd498880d6d557de70844fdad7173a6f99","at":"2026-10-09T23:21:28.329Z","failedChecks":[]},"seat":{"tokenId":"1174","agentId":"51415"},"live":null},{"key":"write_foundry_tests","role":"tests","state":"accepted","attempt":1,"revisions":1,"judgeRevisions":1,"dependsOn":["build_contract_project"],"allowedPaths":["test","test/**"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-10T01:31:21.170Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+fdeb4d4a","verifiedTreeHash":"dcf3ddc06a82d23f3ac315d0c9cde86341934cd2","at":"2026-10-10T01:31:21.172Z","failedChecks":[]},"seat":{"tokenId":"709","agentId":"51171"},"live":null}],"reviews":[{"status":"queued","chainId":1,"txHash":null,"blockNumber":null,"sentAt":null,"entries":[{"nodeKey":"audit_economics","agentId":"51203","value":1,"role":"review:submission"},{"nodeKey":"audit_flow","agentId":"50969","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"51026","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"51285","value":1,"role":"review:submission"},{"nodeKey":"audit_math","agentId":"50985","value":1,"role":"review:submission"},{"nodeKey":"audit_permissions","agentId":"50989","value":1,"role":"review:submission"},{"nodeKey":"build_contract_project","agentId":"51569","value":0,"role":"verification:checks"},{"nodeKey":"build_contract_project","agentId":"52147","value":1,"role":"verification:checks"},{"nodeKey":"build_contract_project","agentId":"51750","value":1,"role":"verification:checks"},{"nodeKey":"build_website","agentId":"51303","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"51598","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"52146","value":1,"role":"verification:checks"},{"nodeKey":"token_logo","agentId":"51149","value":0,"role":"verification:checks"},{"nodeKey":"token_logo","agentId":"51415","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"51171","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"51186","value":1,"role":"verification:checks"}]}]}