{"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":"9c1c8867-098d-4b2d-bcb2-71ed1276795f","kind":"skill:build-website","nodes":[{"acceptedSubmissionHash":"dacd543d23d146f8b0752f26e0890da87399efe59fc627970f0b798b775659e0","dependsOn":[],"execution":{"mustProduce":["dist/index.html"],"network":true,"optionalTools":["browser"],"profile":"none","requires":["network"],"skillHash":"6715a761ae197330be56ba3ef74f7628c405aa1d94f0e62b3dcf3715e0135cbc","skillId":"build-website","tools":[]},"key":"build_website","kind":"code","role":"implement","skillHash":"6715a761ae197330be56ba3ef74f7628c405aa1d94f0e62b3dcf3715e0135cbc","skillId":"build-website","state":"accepted"}],"objective":"Build a polished responsive web application called “SIMCARD” for IdentityMD agents.\n\nCore experience:\n\n* The homepage must have one prominent search field that accepts an IdentityMD NFT token ID, such as 222.\n* When the user presses Enter or clicks “Generate SIMCARD”, retrieve the NFT and agent’s public data and create a personalized animated SIMCARD.\n* Every NFT must produce its own card using that NFT’s original artwork and dominant colors. Do not use a generic avatar.\n* No wallet connection should be required to search or create a card.\n\nData sources:\n\n* Use the public IdentityMD API at https://api.imd.fun and the Explorer API at https://explorer.imd.fun.\n* Use GET /seats/:tokenId for the owner, agent ID, online status, attempts, accepted, rejected, failed, work, reviews and collaborators.\n* Use GET /seats/:tokenId/standing for presence, dispatch eligibility and currently running jobs.\n* Use GET /api/agents/:tokenId on the Explorer origin for owner name, held duration, jobs and last accepted activity.\n* Use GET /seats/records to calculate rankings when possible.\n* Use GET /wallets/:address/earnings to show public IMD earnings and launch allocations after resolving the NFT owner.\n* Use public Ethereum NFT metadata or tokenURI for the original IdentityMD artwork.\n* Reproduce the useful public information shown by Swarm Ledger, but do not scrape private information. If a data point cannot be verified from an official public API or onchain source, label it “Unavailable” rather than inventing it.\n\nAnimated SIMCARD:\n\n* Display NFT number, original NFT artwork, verified agent status, online/offline/working state, agent ID, accepted work, total attempts, acceptance rate, runtime when publicly available, owner ENS or public handle, Ethereum network and last activity.\n* Animate the original NFT artwork subtly: rotating orbital lines, pulsing center light, scanning line and live online indicator.\n* The animation state must reflect real status: calm for ready, faster for working and dimmed for offline.\n* Do not expose full wallet addresses by default. Show a shortened address only inside the expanded details view.\n* Include a real QR code linking to the public SIMCARD profile URL for that NFT.\n\nInteraction:\n\n* Clicking the card must open a detailed agent profile containing payouts, allocations, work history, acceptance statistics, rank, reviews and onchain verification links whenever those fields are publicly available.\n* Include links to IdentityMD Explorer, Etherscan and OpenSea.\n* Provide “Download PNG” and “Download Video” buttons. Video export should create a short looping MP4 or WebM version of the animated card.\n* Provide a “Share on X” button that prepares a short caption and profile link. If X cannot automatically attach the downloaded video without OAuth/API access, clearly instruct the user to attach the downloaded video manually.\n* Every generated profile must have a shareable URL such as /agent/222 and social preview metadata.\n\nDesign:\n\n* Premium minimal cyberpunk design inspired by the original IdentityMD visual language.\n* Black and graphite background, neon colors derived from each NFT, crisp monospaced typography and restrained glow.\n* Responsive on desktop and mobile.\n* Clear loading, invalid token, missing NFT, offline API and unavailable-data states.\n* Accessible controls and reduced-motion support.\n* Cache public API responses briefly, but provide a Refresh button for current data.\n\nSecurity and privacy:\n\n* Read-only application.\n* Never request a seed phrase, private key, token approval or transaction signature.\n* Do not deploy a new token.\n* Do not create financial contracts.\n* Do not display VPS IP addresses, device keys, secrets or other private infrastructure data.\n\nDeliver a complete working website connected to live public data, not a static mockup. Host the finished static frontend on IPFS and make sure all browser-side API requests work with CORS. If an official endpoint does not permit browser CORS, use an available browser-safe official endpoint or an onchain read-only fallback and document the limitation.","parentJobId":null,"planHash":"55681b39f374299a5d1d5c3837a7468718f60397599598ebeee2aa34f4f475d8","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"9c1c8867-098d-4b2d-bcb2-71ed1276795f","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-436-build-polished-responsive-web"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"50962","feedbackHash":"e9f8e098f72a0e5f7bdacc173dea6c778c45d8f8e563454b2a53d7c54286bc12","nodeKey":"build_website","submissionHash":"dacd543d23d146f8b0752f26e0890da87399efe59fc627970f0b798b775659e0","tag1":"verification:structural","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"0894c925bbe8682dc83415d2a6b4e6b2ddade01e41befd8b3fab7052ac63fac2","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"0a9504b5294477adb710a4f78e541202c8e3093e3282a8a4e538495981c60000","device":"3f6a9bdd601cb99f","findings":[],"hash":"dacd543d23d146f8b0752f26e0890da87399efe59fc627970f0b798b775659e0","nodeId":"8a829ef3-61d5-4261-b1c5-1c7d4b193a26","outcome":"completed","summary":"The work is committed and complete.\n\n**What was built:** SIMCARD, a read-only Vite + React + TypeScript static site with `base: './'` and hash routing. Enter an identity.md token ID and it renders an animated card from that NFT's onchain SVG, with a neon palette extracted from that artwork, live status-driven motion (calm when ready, fast when working, dimmed when offline or unknown), a real QR code, PNG and 6-second looping video export recorded in-browser, an X share intent, and a native-dialog profile with payouts, allocations, work history, reviews, rank, presence and Etherscan/OpenSea/Explorer links. No wallet, signing or approvals anywhere.\n\n**The key finding, and how it is handled:** neither api.imd.fun nor explorer.imd.fun sends CORS headers, confirmed with curl and in Chromium. The app tries the official origins live on every load, reads artwork, ownership, identity-hash flags and ENS directly from Ethereum via public RPCs that do allow CORS, and falls back to a committed snapshot of the official API for stats, rankings, Explorer handles and allocations. Every value carries a Live API, Onchain, API snapshot or Unavailable label. A footer setting lets an operator point the site at their own CORS proxy without rebuilding, and the live code path was validated by simulating exactly that.\n\n**Verification actually run** (all recorded in `artifacts/validation.md` and the README):\n- Typecheck and production build: exit 0.\n- Headless Chromium on the built export at 1280, 820, 390 and 320 px: no horizontal overflow, zero axe violations on home, agent page and dialog after fixes.\n- Blocked mode, live mode, invalid/unpaired/unreachable/loading/offline states, keyboard walk with focus return, reduced-motion toggle, PNG (1.7 MB) and MP4 (1.6 MB) downloads, Share on X href, distinct accents for tokens 2 and 42.\n\n**Better Interface review:** all six domains checked; six findings fixed (mobile overflow from the share URL, muted text contrast raised to a measured 5.25:1, missing h1, heading order, header subtitle wrap, chip overlap). Not performed: screen-reader session, native 200% zoom, forced-colors rendering, Safari/Firefox, and a real IPFS gateway round trip.\n\n**Deliverables:** source, lockfile, committed `dist/`, `public/snapshot/*.json`, `scripts/snapshot.mjs`, `README.md` (install, preview, rebuild, snapshot refresh, IPFS publish, limitations), `DESIGN.md`, `artifacts/validation.md` and twelve JPEG screenshots. Git bundle is 578 KB, well under the 8 MiB limit, with no node_modules tracked.\n\n**Remaining limitations to know about:** live presence and per-job history stay \"Unavailable\" on a plain IPFS gateway until the official API allows browser CORS or a proxy is configured, the snapshot should be regenerated before each publish, and per-agent social preview tags are impossible on a static host, so site-level tags plus a real card image are provided.","treeHash":"48449677186229d3b4b0970d1709ac83c85bd58f","usage":{"cachedInputTokens":6984850,"inputTokens":1122,"model":"claude-fable-5-1","outputTokens":165918,"runtime":"claude","turns":141,"wallClockMs":2113108}}],"verification":[{"checks":[],"detail":"paths and tree verified; no suite was run for this kind of work","evaluation":"structural","profile":"none","status":"accepted","submissionHash":"dacd543d23d146f8b0752f26e0890da87399efe59fc627970f0b798b775659e0","verifiedTreeHash":"48449677186229d3b4b0970d1709ac83c85bd58f","verifierVersion":"0.1.0+48a57703"}]}