{"assessments":[],"deployments":[],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"c5d51066-19ab-49ab-822b-7abe29b572a5","kind":"skill:build-website","nodes":[{"acceptedSubmissionHash":"2764e673d6b470af64959d3e16887910efd2b8f0446f201cf0416a6cf695ca0b","dependsOn":[],"execution":{"mustProduce":["dist/index.html"],"network":true,"optionalTools":["browser"],"profile":"none","requires":["network"],"skillHash":"a60bc8b42446c13d993341179fe13c712a5addb118fc532fb2d15e71f912efc8","skillId":"build-website","tools":[]},"key":"build_website","kind":"code","role":"implement","skillHash":"a60bc8b42446c13d993341179fe13c712a5addb118fc532fb2d15e71f912efc8","skillId":"build-website","state":"accepted"},{"acceptedSubmissionHash":"7b2e6f82c8d0f9d1406e7e97faf76b76e05e7586e48c5795a9d99cfd02fa4572","dependsOn":["build_website"],"execution":{"network":true,"optionalTools":["browser"],"profile":"none","requires":["network"],"skillHash":"fd33b6741366d364a55a4c0ba2bc4f5d329cec0b62f27a83289dc5b30ab03575","skillId":"design-critic","tools":[]},"key":"design_critic","kind":"code","role":"review","skillHash":"fd33b6741366d364a55a4c0ba2bc4f5d329cec0b62f27a83289dc5b30ab03575","skillId":"design-critic","state":"accepted"}],"objective":"IMD job: HamsterRun v3 public site (light Game Boy green 8-bit)\nBuild and host a static or light Next.js public site for HamsterRun v3 on Sepolia.\nDo not claim official Squeek mining, SQK yield, insurance, or airdrop guarantees.\nDo not reuse v1 or v2 contract addresses or ABIs. Use v3 only.\nPrior sites for visual contrast only (do not wire their contracts):\n• v1: https://hamsterrun-small-paws-big-advent.imd.site/\n• v2 pixel: https://hamsterrun-free-pixel-hamster-ra.imd.site/\n￼\nVisual direction — REQUIRED: light 8-bit Game Boy / green LCD handheld\nUser request: lighter colors, 8-bit Game Boy green handheld feel — not the deep navy chrome / dark terminal look from prior sites.\nPinned palette (use these hexes)\nRole\nHex\nNotes\nScreen / page background\n#CADC9F\nLight olive LCD wash — overall bright\nSoft off-white bezel plastic\n#E8F0D0 or #F4F7E8\nHandheld shell / outer frame\nMid panel / bezel green\n#8BAC0F\nClassic GB mid green\nHighlight / selected\n#9BBC0F\nSelected rows, active meters\nDark green pixels / secondary text\n#306230\nBorders inside the LCD inset, labels\nDeepest ink\n#0F380F\nPrimary pixel text / outlines\nWarning / error (sparingly)\n#C4A35A muted amber or #A84545 soft red\nLag banners, Hungry, tx fail\nAvoid: navy #0a1628, deep blue borders, neon cyber / dark-terminal aesthetics, heavy black page backgrounds.\nChrome & UX\n• Content sits in a light plastic Game Boy / Pocket bezel; the “LCD” inset uses #CADC9F with optional light scanlines on the inset only.\n• Pixel type: Press Start 2P (or similar); hard-edge pixels; nearest-neighbor sprites — no blurry scaling.\n• Chunky A / B / D-pad style primary buttons (Connect, Mint, Feed, Train, Settle, Enqueue). Soft web buttons secondary only.\n• HUD as RPG / 8-bit meters (stamina, weight/body, fed timer, Core train status, weekly quota) — not Material cards.\n• Favicon + OG image in the same GB green pixel style (playful hamster + handheld).\n• Mobile: full-bleed Game Boy portrait; tap targets ≥44px.\n• Mood refs: classic Game Boy / Pocket + playful hamster; optional nod to pet.game pixel density without copying its dark UI.\n• Keep the whole experience bright and playable, not a dark CRT terminal.\n￼\nConfirmed live Sepolia contracts (v3)\nVerified via cast on 2026-11-02. Chain ID 11155111.\nName\nAddress\nHamsterRunNFT\n0x2bb4f70787f00c70b18355495edbddeb25bb5dea\nMatchQueue\n0xaa57478bb5bcf5060a4973066aa5523620932922\nSqueekCore (read-only upstream)\n0x74665dAecA35A2303e767E76a2FF1FB6F93e119f\n• Job: https://explorer.imd.fun/jobs/46232ab7-1448-4034-985f-5b89ed67d77b\n• Repo / ABIs: https://github.com/identity-md-launches/launch-2874-hamsterrun\n◦ abi/HamsterRunNFT.json\n◦ abi/MatchQueue.json\n• DESIGN (pin all formulas from here): https://github.com/identity-md-launches/launch-2874-hamsterrun/blob/main/DESIGN.md\n• Owner (display / wiring only): 0x6C14430adacc99e27F6180bC5a74d6768616BF4A\nLive state at brief time (must re-read on every load)\n• mintOpen = false\n• matchQueue = 0 (unbound on NFT)\n• totalSupply = 0\n• MatchQueue.nft() already points at HamsterRunNFT\nSite must read live mintOpen and matchQueue. Show an honest banner when mint is closed and/or the queue is unbound (“not open yet / queue unbound”). Never fake mint success.\nPost-deploy owner wiring (site does not send these unless a separate owner tool page)\nOwner still needs, in order:\n1. HamsterRunNFT.setMatchQueue(0xaa57478bb5bcf5060a4973066aa5523620932922)\n2. HamsterRunNFT.setMintOpen(true)\nMention this clearly in UI help / status copy. Food tier defaults are already on-chain (see below). Public site flows are player txs only.\n￼\nProduct rules (pin accurately from DESIGN.md)\n• Max supply 9999; free mint 1 / wallet; start stamina 10, uncapped.\n• Body classes: Fit body ≥ 70 · Normal 35–69 · Obese < 35. Hungry lockout (no burn) — blocks train + queue as designed.\n• Feed every 72h; tiers 0 / 1 / 2 prices 0.0001 / 0.0002 / 0.0003 ETH; train bps 10000 / 15000 / 20000.\n• Feed is allowed while Idle OR Training (not while Queued / Matched). startTraining snapshots food/bps at booking time.\n• Train = SqueekCore certified wheel work, not a 6h wall-clock:\n◦ startTraining(tokenId) books 6 consecutive Core rounds [R, R+5].\n◦ settleTraining(tokenId) is permissionless when settledThroughRound >= trainEndRound.\n◦ Gain = floor(2 * W * lastFeedBps / 10000) where W is certifiedwork in the booked window.\n◦ Use trainingStatus(id): show Core frontier vs booked end round; banner when waitingForCertification.\n◦ Never invent work. Disable Settle while Core is lagging; keep Feed enabled during the wait. cancelTraining forfeits the window.\n◦ Live Core can lag ~days — the lag banner is normal, not an error.\n• MatchQueue geometric bands: band 0 if stamina < 500, else floor(log2(stamina/500)) + 1. Display via bandOf / bandForStamina. QUEUE_WAIT_BLOCKS = 10. Flows: enqueue / leave / requestRound / fulfillRound / settleMatch. 5 attempts / week. No manual opponent id.\n• Invite: off-chain X (Twitter) handle → shareable invite link + leaderboard. If inviteServiceUrl is empty, show offline honestly (no infinite Loading…).\n• No SQK yield / insurance / airdrop / SqueekMining claims.\nOptional short English blurb on the home/help panel: training stamina comes from Squeekchain certified hamster wheel work (real wheel → Core certification → stamina). Do not claim SQK rewards.\n￼\nMust-have pages / flows\n1. Connect wallet — EIP-1193 (MetaMask / Rabby / Brave+Rabby). Prompt switch to Sepolia. Do not auto-open the wallet sheet on first paint.\n2. Mint — HamsterRunNFT.mint() when mintOpen; show supply / owned IDs; honest closed state otherwise.\n3. Care HUD — stamina, weight + body class, fedUntil, trainingStatus(frontier / end / ready), weekly match quota.\n4. Feed / Start training / Settle / Cancel with Core lag UX above (Feed stays on during wait; Settle disabled until certified).\n5. Match queue — geometric band display; enqueue / leave / request / fulfill / settle; explain camping / two-player band wait briefly in help.\n6. Invite + leaderboard — X handle → /?ref=<handle> (or /invite/<handle>); persist attributions client-side + small serverless; offline when unset.\n7. Branding — title HamsterRun / HAM; light GB green chrome throughout; favicon + OG match palette.\n￼\nOut of scope\nRedeploying or changing Solidity; mainnet; paid keepers; breeding; inventing Core work; navy / dark cyber redesign; v1/v2 ABIs or addresses; claiming SQK / SqueekMining rewards.\n￼\nSuccess\nPublic HTTPS URL where a Sepolia wallet can:\nconnect → mint (when open) → feed → startTraining → see Core lag banner while still able to feed → settle when certified → enqueue a geometric-band match → invite flow\n— all inside a coherent light Game Boy green 8-bit UI, with honest mint/queue/Core status and formulas pinned to DESIGN.md.","parentJobId":"46232ab7-1448-4034-985f-5b89ed67d77b","planHash":"8a040d0312587c92c96c971d5129ee5ea7e9c6f560bba4fe6c5146d56313165d","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"46232ab7-1448-4034-985f-5b89ed67d77b","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2874-hamsterrun"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51099","feedbackHash":"f453db86b6034064c4d9c170d6062a853d0765136c4077367d3d692fe0e505d9","nodeKey":"build_website","submissionHash":"2764e673d6b470af64959d3e16887910efd2b8f0446f201cf0416a6cf695ca0b","tag1":"verification:structural","tag2":"acceptance-v2","value":1},{"agentId":"51129","feedbackHash":"566c85fb067e1f1096e90295a9f70af9dc8ddbfcc324ccc7b07c11878f087c65","nodeKey":"design_critic","submissionHash":"7b2e6f82c8d0f9d1406e7e97faf76b76e05e7586e48c5795a9d99cfd02fa4572","tag1":"review:submission","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"61c34a93f1cbd63d415d377bdf4d39872430aea4e7d31ce1406e850507dc8e57","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"2acaff3514792c617cdcd0e6d9a3e522df3a192ca357a02727472fdb151d8dae","device":"4ba44f3d5ab7b010","findings":[],"hash":"2764e673d6b470af64959d3e16887910efd2b8f0446f201cf0416a6cf695ca0b","nodeId":"330e047b-590f-4a8c-a56c-bb3f0924d087","outcome":"completed","summary":"Built the bright Game Boy green HamsterRun v3 site and [static export](dist/index.html).\n\n- Build, typecheck, 7 tests and 9 mocked browser groups pass.\n- Live v3 reads and player flows are wired.\n- Invite rankings honestly remain offline; real signing and Safari are unverified.\n\n[Setup and validation](README.md) are documented. HTTPS publication follows IdentityMD review.\n\nNot delivered: artifacts/validation.md. Under artifacts/, only this step's named outputs leave the machine.","treeHash":"be55b622416eb458fd02c1f225d324e17fc26380","usage":{"cachedInputTokens":7500800,"inputTokens":135013,"model":"gpt-6.1-sol","outputTokens":114842,"runtime":"codex","turns":13,"wallClockMs":3771740}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"0fce87924985c9ba","findings":[{"citation":"resolved","description":"Now: The pet and queue query keys include world.block (lines 68 and 93). Each advancing 20-second poll creates uncached queries, so the care controls disappear, the selected pet becomes “Your pocket adventure,” and the queue replaces its roster/race pass with first-player instructions until the reads finish.\nChange to: Preserve the last successful result while refreshing the same wallet/token or band, reserve onboarding for a confirmed empty result, and show an updating indicator with actions disabled until fresh state arrives. Clear preserved data when the wallet, token or band actually changes.\nWhy: A normal live refresh must not claim that an owned hamster has disappeared or move the controls someone is using; the required care and Core-wait flows need stable, honest loading states.","line":68,"path":"web/src/data.ts","reproduction":"At 390×844, use the existing intercepted provider helpers in web/test/browser.mjs with state({owned:true,minted:true,supply:1n,activity:1,fedUntil:1793800000n}) on Sepolia. Connect, wait for “Hello, hamster #1” and an enabled Feed hamster, and scroll to Feed. Increment the fixture block by 1 and delay hamster/training/trainingStatus eth_call replies by 2500ms; let the normal 20-second world poll run without clicking. Actual: for the delay the heading becomes “Your pocket adventure,” Feed and training controls have zero DOM matches, and document height changes 2547→2128→2547px; scroll position changes 1014→910→1014px. Repeat on Match queue with one eligible band-0 entry and delay queueEntries/eligibleCount too: “1 / 32” becomes “– / 32,” the roster disappears, and the race pass says “Select an owned hamster” despite the unchanged selection. Expected: keep the known selected hamster and roster visible with an explicit refresh state, never substitute onboarding during a background read.","severity":"medium","snippet":"  const pet = useQuery({ queryKey: ['pet', address, tokenId?.toString(), world.data?.block.toString()], enabled: tokenId !== undefined && verification.data === true,","title":"bug: every new-block refresh replaces the selected hamster and queue with empty onboarding states"}],"hash":"7b2e6f82c8d0f9d1406e7e97faf76b76e05e7586e48c5795a9d99cfd02fa4572","nodeId":"a689d07f-5c63-460a-a363-00e4d1bc52de","outcome":"completed","summary":"| Area | Result |\n|---|---|\n| Requirements | 58 groups: 56 met, 0 missing, 0 faked, 1 after review, 1 needs requester |\n| Broken features | 1 medium bug |\n| First screen, 390px | Product and Connect visible |\n| taste@1 | 15/16 passed; 1 brief-required chrome exception |\n| Copy | 0 findings |\n| Share card | Present, 1200×630; matching favicon |\n\nSaved the verified finding in [.imd-findings.json](/root/.identitymd/work/c5d51066-19ab-49ab-822b-7abe29b572a5/a689d07f-5c63-460a-a363-00e4d1bc52de/.imd-findings.json).\n\n**Medium — bug: background refresh replaces the selected hamster and queue with onboarding.** When a new block arrives, uncached queries remove the existing controls. At 390×844 with delayed RPC replies, Feed disappeared and page height changed **2547→2128→2547px**. Preserve the known selection and results while refreshing, show an updating state, and disable actions until fresh reads finish. The JSON contains the exact reproduction and source citation.\n\nChromium and WebKit passed the intercepted wallet lifecycle checks. Seven rules/service tests and 32 additional layout states passed. No live transaction was signed. Live Sepolia reads confirmed mint open, queue bound, supply zero, and matching v3 addresses, ABI hashes, runtime hashes and bindings.\n\nThe visual idea is coherent: a Sepolia hamster game presented as a bright green LCD inside a light plastic handheld. The probe’s chrome exception follows the explicitly requested bezel, inset and raised buttons.\n\n“Met” below means supported by source inspection and applicable checks. Component filenames are under `web/src/`.\n\n| Requirement | Status | Evidence |\n|---|---|---|\n| “Static or light Next.js public site” | Met | `dist/index.html`, `web/package.json` |\n| “Public HTTPS URL” | After review | Static export ready for publishing |\n| Pinned palette, including LCD, shell, greens, ink and warning/error colors | Met | `styles.css` root tokens use the specified hexes |\n| “Light plastic Game Boy / Pocket bezel”; LCD inset; optional inset-only scanlines | Met | `App.tsx` handheld, `Care.tsx` inset; no scanlines |\n| “Press Start 2P”; hard pixels; nearest-neighbor sprites | Met | Local font, pixel SVGs, `image-rendering:pixelated` |\n| Chunky Connect, Mint, Feed, Train, Settle and Enqueue controls | Met | `Wallet.tsx`, `Care.tsx`, `Queue.tsx`, raised button styles |\n| RPG HUD: stamina, weight/body, fed timer, training and quota | Met | `Care.tsx` meters and training data; queue race pass |\n| Matching GB-green favicon | Met | `web/public/favicon.svg` |\n| Matching hamster/handheld OG image | Met | `web/public/og.png`, metadata in `web/index.html` |\n| Mobile full-bleed portrait; targets ≥44px | Met | Mobile CSS; default and active-state measurements |\n| Bright/playable; avoid navy, neon and dark-terminal treatment | Met | Palette and inspected mobile/desktop screens |\n| “HamsterRun / HAM” branding | Met | Header, title and HAM Pocket shell |\n| Sepolia, chain ID `11155111` | Met | `web/deployment.json`, `runtime.ts`, live verification |\n| NFT `0x2bb4f70787f00c70b18355495edbddeb25bb5dea` | Met | Deployment handoff and live runtime hash |\n| Queue `0xaa57478bb5bcf5060a4973066aa5523620932922` | Met | Deployment handoff and live runtime hash |\n| Read-only Core `0x74665dAecA35A2303e767E76a2FF1FB6F93e119f` | Met | Verified upstream binding; no Core write controls |\n| v3-only addresses/ABIs; prior sites used only for contrast | Met | Public ABIs match pinned v3 exports; runtime hash checks |\n| Formulas pinned to DESIGN.md | Met | Preserved contract design matches the [pinned source](https://github.com/identity-md-launches/launch-2874-hamsterrun/blob/fa23fe18551c431ada88350bd9d4d0a7dba04912/DESIGN.md); `Guide.tsx` |\n| Owner `0x6C14430adacc99e27F6180bC5a74d6768616BF4A` display/wiring | Met | Live owner read and guide disclosure |\n| Read `mintOpen` every load | Met | `data.ts` world query |\n| Read `matchQueue` every load | Met | `data.ts` binding read |\n| Re-read supply instead of freezing brief","treeHash":null,"usage":{"cachedInputTokens":4065536,"inputTokens":161145,"model":"gpt-6.1-sol","outputTokens":29516,"runtime":"codex","turns":9,"wallClockMs":892126}}],"verification":[{"checks":[],"detail":"paths and tree verified; no suite was run for this kind of work","evaluation":"structural","profile":"none","status":"accepted","submissionHash":"2764e673d6b470af64959d3e16887910efd2b8f0446f201cf0416a6cf695ca0b","verifiedTreeHash":"be55b622416eb458fd02c1f225d324e17fc26380","verifierVersion":"0.1.0+3dcb4df2"}]}