{"workflow":null,"planning":null,"id":"335b4f2b-48ba-4a59-aa8f-121357d846a1","state":"blocked","template":"shape:chain","objective":"[SIMD-LAUNCH]\nToken name: SIMDTEST\nToken symbol: SIMDTEST\n\nSIMDTESTHook (the launch pool's hook) implements a fair-launch mechanism for the SIMDTEST token (1,000,000,000 supply, 18 decimals) paired with IMD (0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7) on Uniswap v4 with a 1.25% pool fee. All parameters are immutable with no owner powers. Rules:\n1) Anti-snipe Fee: For the first 10 blocks after pool open (block number recorded at pool initialization), a buy swap triggers an additional paired currency fee starting at 3000 bps (30%) on the buy amount, linearly decreasing each block to 0 at block 10. This fee is collected via beforeSwap and afterSwap deltas, accrues inside the hook, and is never swapped, burned, or donated inside the pool.\n2) Fee Sweep: Anyone can call sweep() to transfer all accrued fees in paired currency IMD to the SIMD Hackathon vault at 0x3dd5f73dd1a4e62630fad3909673f130ad429985.\n3) Max Buy Limit: For first 60 minutes post pool initialization (tracked by block timestamp), each buy swap is limited to purchasing no more than 1% (10,000,000 tokens) of the total supply. The afterSwap hook checks the delivered token amount (from BalanceDelta) and reverts the swap if this limit is exceeded. Sells or swaps beyond this window are unlimited.\n4) Fee Application: Anti-snipe and max buy checks apply only to swaps purchasing tokens (transfers originating from PoolManager). Token transfers and sells are fee-exempt.\n5) Token: SIMDTEST is a standard ERC-20 minting all 1B tokens at deployment. 10% of supply goes to the swarm (managed off-chain), 90% seeds the pool.\n6) No Ownership: Contracts have no owner or privileged functions, parameters are fixed constants.\nViews: limitActive() returns true if max buy limit is active; maxBuy() returns max allowed buy amount.\nTests and Review:\n1) Verify anti-snipe fee starts at 30% and linearly drops to 0 across first 10 blocks.\n2) Confirm maxBuy reverts any buy swap above 1% total supply within 60 minutes.\n3) Check sweep() transfers accrued paired currency fees to hackathon vault.\n4) Ensure token transfers and sells are exempt from anti-snipe fee and max buy checks.\n5) Mainnet-fork simulation of block and timestamp progress shows correct fee decay and limit expiry.\n6) Adversarial review covering audit domains uniswap-v4-hooks, uniswap-v4-security, eth-testing, solidity-security-review is required prior to deployment.\n\nBuild requirements (mandatory):\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.\n- Contracts: SIMDTESTHook. 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 (chainId 1). Uniswap v4 PoolManager: 0x000000000004444c5dc75cB358380D2e3dE08A90 (pass it to the hook constructor).\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 only exception is 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, and 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- launch.json pool: pairedCurrency 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 12500, tickSpacing 60, initialPrice \"79228162514264337593543950336\" (provenance only; the launch factory sets the opening price from the economics).","blockedReason":"node build_contract_project: needs_input: Conflicting swap requirements: rule 3 and test requirement 2 require afterSwap to revert buys delivering more than 10,000,000 SIMDTEST during the first 60 minutes, but the mandatory build requirements prohibit reverting any real swap except for an unrepresentable fee. The protected checks do not resolve this conflict. These behaviors cannot both be implemented, and the contracts must have immutable parameters with no owner settings. — Should buys above 10,000,000 SIMDTEST during the first 60 minutes revert as an additional exception to the no-revert requirement, or should the no-revert require","createdAt":"2026-10-08T05:16:33.485Z","updatedAt":"2026-10-08T05:17:27.603Z","paidBy":"0x9fadab91f6fa03dbd7f4f8a08a338704baacf63f","parentJobId":null,"project":{"id":"335b4f2b-48ba-4a59-aa8f-121357d846a1","head":"335b4f2b-48ba-4a59-aa8f-121357d846a1","running":null,"versions":[{"jobId":"335b4f2b-48ba-4a59-aa8f-121357d846a1","workflowId":null,"objective":"[SIMD-LAUNCH]\nToken name: SIMDTEST\nToken symbol: SIMDTEST\n\nSIMDTESTHook (the launch pool's hook) implements a fair-launch mechanism for the SIMDTEST token (1,000,000,000 supply, 18 decimals) paired with IMD (0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7) on Uniswap v4 with a 1.25% pool fee. All parameters are immutable with no owner powers. Rules:\n1) Anti-snipe Fee: For the first 10 blocks after pool open (block number recorded at pool initialization), a buy swap triggers an additional paired currency fee starting at 3000 bps (30%) on the buy amount, linearly decreasing each block to 0 at block 10. This fee is collected via beforeSwap and afterSwap deltas, accrues inside the hook, and is never swapped, burned, or donated inside the pool.\n2) Fee Sweep: Anyone can call sweep() to transfer all accrued fees in paired currency IMD to the SIMD Hackathon vault at 0x3dd5f73dd1a4e62630fad3909673f130ad429985.\n3) Max Buy Limit: For first 60 minutes post pool initialization (tracked by block timestamp), each buy swap is limited to purchasing no more than 1% (10,000,000 tokens) of the total supply. The afterSwap hook checks the delivered token amount (from BalanceDelta) and reverts the swap if this limit is exceeded. Sells or swaps beyond this window are unlimited.\n4) Fee Application: Anti-snipe and max buy checks apply only to swaps purchasing tokens (transfers originating from PoolManager). Token transfers and sells are fee-exempt.\n5) Token: SIMDTEST is a standard ERC-20 minting all 1B tokens at deployment. 10% of supply goes to the swarm (managed off-chain), 90% seeds the pool.\n6) No Ownership: Contracts have no owner or privileged functions, parameters are fixed constants.\nViews: limitActive() returns true if max buy limit is active; maxBuy() returns max allowed buy amount.\nTests and Review:\n1) Verify anti-snipe fee starts at 30% and linearly drops to 0 across first 10 blocks.\n2) Confirm maxBuy reverts any buy swap above 1% total supply within 60 minutes.\n3) Check sweep() transfers accrued paired currency fees to hackathon vault.\n4) Ensure token transfers and sells are exempt from anti-snipe fee and max buy checks.\n5) Mainnet-fork simulation of block and timestamp progress shows correct fee decay and limit expiry.\n6) Adversarial review covering audit domains uniswap-v4-hooks, uniswap-v4-security, eth-testing, solidity-security-review is required prior to deployment.\n\nBuild requirements (mandatory):\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.\n- Contracts: SIMDTESTHook. 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 (chainId 1). Uniswap v4 PoolManager: 0x000000000004444c5dc75cB358380D2e3dE08A90 (pass it to the hook constructor).\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 only exception is 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, and 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- launch.json pool: pairedCurrency 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, fee 12500, tickSpacing 60, initialPrice \"79228162514264337593543950336\" (provenance only; the launch factory sets the opening price from the economics).","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","state":"blocked","createdAt":"2026-10-08T05:16:33.485Z"}]},"deliver":true,"host":false,"site":null,"launch":{"requested":true,"kind":"univ4_hook","id":null,"status":null,"chainId":1},"oracleRequestId":null,"delivery":null,"media":null,"nodes":[{"key":"audit_economics","role":"review","state":"waiting","attempt":0,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T05:16:33.485Z","verdict":null,"seat":null,"live":null},{"key":"audit_flow","role":"review","state":"waiting","attempt":0,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T05:16:33.485Z","verdict":null,"seat":null,"live":null},{"key":"audit_judge","role":"review","state":"waiting","attempt":0,"revisions":0,"judgeRevisions":0,"dependsOn":["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-08T05:16:33.485Z","verdict":null,"seat":null,"live":null},{"key":"audit_math","role":"review","state":"waiting","attempt":0,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T05:16:33.485Z","verdict":null,"seat":null,"live":null},{"key":"audit_permissions","role":"review","state":"waiting","attempt":0,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T05:16:33.485Z","verdict":null,"seat":null,"live":null},{"key":"build_contract_project","role":"implement","state":"failed","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":[],"allowedPaths":[],"failureReason":"needs_input: Conflicting swap requirements: rule 3 and test requirement 2 require afterSwap to revert buys delivering more than 10,000,000 SIMDTEST during the first 60 minutes, but the mandatory build requirements prohibit reverting any real swap except for an unrepresentable fee. The protected checks do not resolve this conflict. These behaviors cannot both be implemented, and the contracts must have immutable parameters with no owner settings. — Should buys above 10,000,000 SIMDTEST during the first 60 minutes revert as an additional exception to the no-revert requirement, or should the no-revert require","dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T05:17:27.603Z","verdict":null,"seat":null,"live":null},{"key":"manifest","role":"integrate","state":"waiting","attempt":0,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project","write_foundry_tests"],"allowedPaths":["launch.json"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T05:16:33.485Z","verdict":null,"seat":null,"live":null},{"key":"write_foundry_tests","role":"tests","state":"waiting","attempt":0,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project"],"allowedPaths":["test","test/**"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T05:16:33.485Z","verdict":null,"seat":null,"live":null}],"reviews":[{"status":"queued","chainId":1,"txHash":null,"blockNumber":null,"sentAt":null,"entries":[]}]}