{"workflow":null,"planning":null,"id":"608469fa-dcf6-46c6-a777-b9604d999fad","state":"completed","template":"skill:build-website","objective":"WIN ($WIN): build the official website for the live \"last buyer wins\" game and host it on IPFS (continue from the parent job). Do NOT modify or redeploy any contract. Do not ask clarifying questions.\n\nLive contracts on Robinhood Chain mainnet (chain id 4663), the only source of truth:\n- WIN token: 0xd7a712f3b8c574c87b1b2bd1682431093c49dc1c\n- WinGameHook (game + bank): 0xfdc1d108bba5f9196aa6d1459717738a6a2fe0cc\n- MerkleDistributor: 0x9e515408cc0baa87d312315b8b0dee66bf0d9c2f\n- Pool: Uniswap v4 WIN/IMD, poolId 0x73cede53c18964172f0252bf5b65f7d41c5b55039c753fd69d0abe7373227484, IMD = 0x5f7bb59365ce557c26dbcaa4ee9d39a4b95b7127\n- Explorer: https://robin.etherscan.io\nRead every rule and number from the source in the parent repo, never from this text.\n\nPage 1 — the game, live (refresh every few seconds from gameState()):\n- Big countdown to the round's end, current leader, current prize in IMD, bank size, the minimum buy to take the lead, round number, qualifying buys in this round.\n- When the round has expired and waits for settle(): show the pending winner and prize and a \"Settle\" button anyone can press.\n- Past winners table from pastWinners(): round, winner, prize, time, with explorer links.\n- If a wallet has a deferred prize (unclaimedPrize), show a \"Claim prize\" button.\n\nPage 2 — buy and sell:\n- A swap widget for WIN/IMD that routes through this pool so the buy is credited to the buyer exactly the way the hook identifies buyers (read the hook's code: router msgSender(), tx.origin fallback). Show before the swap whether the amount qualifies, the fee and the expected output.\n- Explain clearly which interfaces count for the game and which do not.\n\nPage 3 — how it works, in plain words with one simple diagram:\n- Every buy and sell pays a fee in IMD (anti-snipe at launch, now 3%). 90% fills the prize bank, 10% goes to the team.\n- A buy at or above the minimum makes you the leader and resets the timer to 10 minutes. Sells never count.\n- The minimum is the larger of the floor and 20% of the prize, and rises 5% with every qualifying buy in the round, then resets.\n- First round: ended no earlier than 3 hours after launch, prize 20% of the bank. Every later round: 5% of the bank.\n- When the timer hits zero, anyone presses Settle and the leader receives the prize.\n- No owner, no admin keys, nothing can be changed.\n\nAlso: contract addresses with copy buttons and explorer links, a link to the GitHub source, a clear \"Made by agents. Not audited by humans. Trade at your own risk.\" notice. Mobile-first, works without a wallet for reading. Network switch prompt to Robinhood Chain (4663) when a wallet is connected.\n\nTests: the site reads the live contracts correctly (gameState decoding, pastWinners, countdown), the swap path is credited to the buyer on a fork of Robinhood Chain, and the Settle and Claim buttons call the right functions.","blockedReason":null,"createdAt":"2026-10-06T10:34:03.323Z","updatedAt":"2026-10-06T11:15:10.801Z","paidBy":"0x611f08c7226591708b5f53f29bf53f3830d54511","parentJobId":"6d498c89-8691-4e35-95a3-48d6ab8fc624","project":{"id":"6d498c89-8691-4e35-95a3-48d6ab8fc624","head":"608469fa-dcf6-46c6-a777-b9604d999fad","running":null,"versions":[{"jobId":"6d498c89-8691-4e35-95a3-48d6ab8fc624","workflowId":null,"objective":"A custom token with a \"last buyer wins\" game: WIN ($WIN).\n\nPair: WIN/IMD on the chain selected for this launch, using that chain's IMD token and the DEX the launch factory uses (Uniswap v4 hook). Supply 1,000,000,000, 18 decimals. No owner powers after launch, no minting, no upgradeability.\n\nTrading fee (in the hook):\n- Every buy and sell pays a fee, always taken in IMD (from the IMD input on buys, from the IMD output on sells).\n- Anti-snipe at launch: the fee starts at 50% and decays linearly to the base fee of 3% over 30 minutes. If you find a better curve, explain why and use it.\n- Fee split: 90% to the prize bank, 10% to the team wallet 0x611F08c7226591708B5F53F29BF53f3830D54511 (pull-based, the team claims it). Nobody can withdraw from the bank except through the game rules.\n\nGame:\n- The bank holds IMD and starts empty: it is filled only by trading fees, nobody seeds it.\n- A qualifying buy: a buy whose IMD amount is at least the current minimum. Each qualifying buy makes the buyer the leader and resets the round timer to 10 minutes. Sells never reset the timer and never change the leader.\n- Minimum buy = the larger of 8.5 IMD (about $100 at launch) and 20% of the upcoming prize, and it rises by 5% with every qualifying buy inside a round. This blocks spam with tiny buys and makes endless resets more and more expensive, so every round ends. It resets when a new round starts.\n- When the timer runs out, anyone can call settle(): the prize goes to the leader and the rest of the bank stays for the next round. The next round starts with the next qualifying buy.\n- First round: it cannot end earlier than 3 hours after launch, and its prize is 20% of the bank. After that the normal 10-minute rule applies.\n- Every later round: prize = 5% of the bank at settlement.\n- If you see a way for bots to reliably win rounds (block stuffing, sequencer ordering on the selected chain, sandwiching the leader), explain it and add a defence.\n- Identify the real buyer robustly: the hook sees the router, not the user. Choose a safe approach (hookData from the router, tx.origin, or another), document the trade-offs and test it.\n\nViews for the website: bank balance, next prize, current minimum buy, leader, time left, round number, past winners.\n\nRequirements:\n- Foundry tests on a fork of the selected chain: anti-snipe decay, fee always in IMD on both sides, the 90/10 fee split, the first round's 3-hour minimum and 20% prize, the 10-minute reset, the 8.5 IMD floor and the minimum rising and resetting, settle before and after expiry, 5% prizes in later rounds, sells not affecting the game, reentrancy, and end-of-round sniping.\n- An independent review of the game economics and the hook.\n- Launch: all of the requester's share goes into liquidity (pool 90%, 0% to the requester), single-sided with no IMD or ETH added. Starting market cap 2500 IMD.","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","state":"completed","createdAt":"2026-10-06T07:33:08.150Z"},{"jobId":"608469fa-dcf6-46c6-a777-b9604d999fad","workflowId":null,"objective":"WIN ($WIN): build the official website for the live \"last buyer wins\" game and host it on IPFS (continue from the parent job). Do NOT modify or redeploy any contract. Do not ask clarifying questions.\n\nLive contracts on Robinhood Chain mainnet (chain id 4663), the only source of truth:\n- WIN token: 0xd7a712f3b8c574c87b1b2bd1682431093c49dc1c\n- WinGameHook (game + bank): 0xfdc1d108bba5f9196aa6d1459717738a6a2fe0cc\n- MerkleDistributor: 0x9e515408cc0baa87d312315b8b0dee66bf0d9c2f\n- Pool: Uniswap v4 WIN/IMD, poolId 0x73cede53c18964172f0252bf5b65f7d41c5b55039c753fd69d0abe7373227484, IMD = 0x5f7bb59365ce557c26dbcaa4ee9d39a4b95b7127\n- Explorer: https://robin.etherscan.io\nRead every rule and number from the source in the parent repo, never from this text.\n\nPage 1 — the game, live (refresh every few seconds from gameState()):\n- Big countdown to the round's end, current leader, current prize in IMD, bank size, the minimum buy to take the lead, round number, qualifying buys in this round.\n- When the round has expired and waits for settle(): show the pending winner and prize and a \"Settle\" button anyone can press.\n- Past winners table from pastWinners(): round, winner, prize, time, with explorer links.\n- If a wallet has a deferred prize (unclaimedPrize), show a \"Claim prize\" button.\n\nPage 2 — buy and sell:\n- A swap widget for WIN/IMD that routes through this pool so the buy is credited to the buyer exactly the way the hook identifies buyers (read the hook's code: router msgSender(), tx.origin fallback). Show before the swap whether the amount qualifies, the fee and the expected output.\n- Explain clearly which interfaces count for the game and which do not.\n\nPage 3 — how it works, in plain words with one simple diagram:\n- Every buy and sell pays a fee in IMD (anti-snipe at launch, now 3%). 90% fills the prize bank, 10% goes to the team.\n- A buy at or above the minimum makes you the leader and resets the timer to 10 minutes. Sells never count.\n- The minimum is the larger of the floor and 20% of the prize, and rises 5% with every qualifying buy in the round, then resets.\n- First round: ended no earlier than 3 hours after launch, prize 20% of the bank. Every later round: 5% of the bank.\n- When the timer hits zero, anyone presses Settle and the leader receives the prize.\n- No owner, no admin keys, nothing can be changed.\n\nAlso: contract addresses with copy buttons and explorer links, a link to the GitHub source, a clear \"Made by agents. Not audited by humans. Trade at your own risk.\" notice. Mobile-first, works without a wallet for reading. Network switch prompt to Robinhood Chain (4663) when a wallet is connected.\n\nTests: the site reads the live contracts correctly (gameState decoding, pastWinners, countdown), the swap path is credited to the buyer on a fork of Robinhood Chain, and the Settle and Claim buttons call the right functions.","baseCommit":"4f92f8563bab88f001b5d3ddfe26bb4309b98e1a","state":"completed","createdAt":"2026-10-06T10:34:03.323Z"}]},"deliver":true,"host":true,"site":{"id":"c81a6a75-267f-42d1-a8c9-b03ef3d7a091","jobId":"608469fa-dcf6-46c6-a777-b9604d999fad","kind":"launch","tokenId":null,"agentId":null,"url":"https://win.site.identitymd.eth.limo","status":"named","holdReason":null,"takenDownAt":null,"takenDownReason":null,"label":"win","cid":"bafybeibmudwukucah6jneg3wh7lgstws3odl2fsknhhybljozobmi3kbye","bytes":542284,"ensName":"win.site.identitymd.eth","txHash":"0x81b0dee017968601a3661dfd5cd293608399618b8ac53e6f6d0a6289a811c331","blockNumber":26132973,"attempts":0,"failure":null,"pinnedAt":"2026-10-06T11:15:42.195Z","namedAt":"2026-10-06T11:16:12.940Z","supersededBy":null,"supersededAt":null,"createdAt":"2026-10-06T11:15:10.801Z","updatedAt":"2026-10-06T11:16:12.940Z"},"launch":{"requested":false,"kind":null,"id":null,"status":null,"chainId":null},"oracleRequestId":null,"delivery":{"repoUrl":"https://github.com/identity-md-launches/launch-784-custom-token-last-buyer","pullRequestUrl":"https://github.com/identity-md-launches/launch-784-custom-token-last-buyer/pull/2","commit":"8dcdde25c53b85ddc27c781dc5ce5acc1f8f4c7b","deliveredAt":"2026-10-06T11:15:36.271Z","media":null},"media":null,"nodes":[{"key":"build_website","role":"implement","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":[],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-06T11:15:10.801Z","verdict":{"status":"accepted","profile":"none","evaluation":"structural","rejectionCode":null,"detail":"paths and tree verified; no suite was run for this kind of work","verifierVersion":"0.1.0+e6140b7a","verifiedTreeHash":"f53bf640a572bc86cf59fef51fe4bd597b53b8d5","at":"2026-10-06T11:15:10.949Z","failedChecks":[]},"seat":{"tokenId":"1313","agentId":"51296"},"live":null}],"reviews":[{"status":"sent","chainId":1,"txHash":"0xeb6fd2ddacbee42cc826021eefdebd611793b6482e09a3099c920c02bd6a749f","blockNumber":26133249,"sentAt":"2026-10-06T12:11:40.165Z","entries":[{"nodeKey":"build_website","agentId":"51296","value":1,"role":"verification:structural"}]}]}