Release pepes armed with ai on Sepolia: a browser game whose jackpot runs on a Uniswap v4 hook. The starting repository (MIT, hosted on gitlawb) holds the finished off-chain game in prototype/index.html and the full specification in SPEC.md; follow SPEC.md exactly.
Contracts: a fixed-supply launch token PepeIce (name pepes ice, symbol ICE, 18 decimals) and a hook JackpotHook on the ETH/ICE pool the factory opens. On every swap the hook takes 1% of the specified amount into that pool's pot (held as ERC-6909 claims, one pot per currency, as the burn-share hook of launch-124 does but kept instead of burned) and issues a ticket to the player named in hookData, or tx.origin without it.
Anyone may draw a ticket from the next block's hash within 256 blocks: a roll of 77 out of 100 pays the player 90% of both pots, a roll of 20, 40, 60, 80 or 100 pays 20 times the ticket's fee capped at 10% of that pot, anything else pays nothing, and no ticket is drawn twice. fillTank(key, pees) moves pees times 10 ICE from the caller into the ICE pot so the site can let the player pee that many times.
Full Foundry tests including fuzzing that payouts never exceed the pots, an independent adversarial review, deployment on Sepolia, then a website built from prototype/index.html that keeps its art, animation, music and controls and replaces only the simulated balances, swaps, rolls and tank with the deployed contracts.
Also approved
Sepolia only (chainId 11155111). GitHub publication and IPFS hosting are approved; site label pepes-armed. The repository and everything built from it is MIT. TOKEN SUPPLY (launch policy): PepeIce has a zero-argument constructor that mints exactly 10^27 minor units (1,000,000,000 ICE, 18 decimals) to msg.sender and nothing else; no mint function, owner, pause or proxy. Do not put totalSupply or allocation splits in launch.json; they come from the versioned launch policy and the factory must receive the full 10^27. HOOK: JackpotHook constructor takes only IPoolManager; in launch.json hook.constructorArgs is exactly the literal Sepolia PoolManager 0xE03A1074c86CFeDd5C142C4F04F1a1536e203543, no placeholders. Permissions beforeSwap and beforeSwapReturnDelta only; never beforeInitialize (the factory opens the pool). No owner, admin, fee setter, pause, upgrade, selfdestruct or delegatecall. POOL: pairedCurrency native ETH, fee 3000, tickSpacing 60, initialPrice 79228162514264337593543950336000 (1,000,000 ICE per ETH). There is no $IMD on Sepolia: where the prototype shows $IMD the release uses Sepolia ETH. Climb prizes stay local points. Randomness is a future block hash, acceptable for Sepolia; docs/SECURITY.md must say a mainnet version needs Chainlink VRF. SITE: Vite, React, TypeScript, RainbowKit, wagmi and viem; source under web/, relative-base static export to dist/, runtime addresses and ABIs from dist/imd-deployment.json; the game's DOM and animation code may stay plain JavaScript inside the React shell; swaps go through an official Uniswap v4 router on Sepolia that forwards hookData.
Build PepeIce and JackpotHook per SPEC.md with tests and an independent review, deploy them on Sepolia as univ4_hook, then build the game site from prototype/index.html against the live deployment.
The website brief
Turn prototype/index.html into the release site as SPEC.md section 4 describes: keep its art, animation, music and controls; replace the simulated balances, swaps, rolls and tank with the deployed PepeIce and JackpotHook.
- The site shows the connected wallet's ICE and Sepolia ETH, both pots, and the live pool price, all read from the chain.
- Peeing on the fridge performs a real swap through the pool with the player in hookData, then shows the roll the contract will compute and calls draw only on a win.
- The golden throne performs a real ETH to ICE swap; the tank is filled through fillTank and pees count down from it.
- Missing wallet, wrong network, insufficient balance, approvals and rejected transactions each show a short in-game message, and a rules panel explains the pot, the roll, the golden flush and that this is Sepolia test value.