{"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":"bebfac54-d7fa-46fe-accb-c9fb9c66aaf6","kind":"skill:build-website","nodes":[{"acceptedSubmissionHash":"1a7abad9a87bf240f72e7a8b84ae38b6e1df6ec3b152df23240f04ff56675dcc","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":"Name: Sorphera\nExact tagline: Weekly ETH & NFT lottery ball jackpots. Powered by FWA.\n\nSOURCE\nRepo: https://github.com/identity-md-launches/launch-961-build-sorphera-smart-contracts\nContract baseline: merged PR #3, ed68e960dc3b9f0847caa637b5d3ea0c082bcfe3.\nRead README.md, frontend/README.md, frontend/configuration.json, frontend/deployment.json, frontend/abi/* and docs/OPERATIONS.md. Preserve contracts/tests/ABI exports. Build in web/ or the website workspace. No contract deployments, tokens/pools, keepers, fund spending or public sales. Deliver a working website, preview and source.\n\nBRAND FILES\nDownload and extract this public ZIP:\nhttps://drive.google.com/uc?export=download&id=1V7yG0VSd3ljKTaqaFYuJO6kH3XQobj7W\nUse its four branding/ PNGs listed below. This prompt supersedes the bundled prompt/README; no GitHub asset upload is needed.\n- sorphera-brand-board-ice-blue.png: art direction/palette.\n- sorphera-wordmark-ice-blue.png: primary wordmark.\n- sorphera-banner-ice-blue.png: campaign/social art.\n- sorphera-globe-icon-ice-blue.png: primary icon/favicon.\nThe ice-blue icon supersedes the board's pink badge. Pink remains prominent. Inspect all four images; preserve proportions/transparency and bundle optimized copies. No emoji substitutes or redrawn wordmark. The board is a reference; omit \"BRAND CONCEPT 01\". Identify inaccessible files and continue unblocked work without claiming they were used.\n\nDESIGN\nFWA-inspired plush ice-blue lettering, tactile 3D globe lottery balls, pink continents, cream number badges, charcoal backgrounds and restrained iridescent crystals. Context: https://www.fwa.fun/ ; supplied Sorphera art controls the design.\nIce-blue wordmark/headlines; prominent pink accents/bonus balls; readable cream text, restrained lavender, clean UI typography. Blue/pink globes identify ETH; pink/cream identify NFT. Reuse globe-ball components across tickets, results and draws. Premium, playful, spacious and mobile-first; avoid generic crypto dashboards, excessive neon and repetitive cards.\n\nCONTRACT RULES\nIndependent weekly ETH (game 0) and NFT (game 1) jackpots. A ticket enters ONE game/round. Pick 3 distinct UNORDERED numbers 1-20 plus bonus 1-5; match all four. 1-in-5,700 is the number-match chance, not necessarily sole NFT victory.\nUncapped total sales; maximum 100 tickets per transaction. Duplicate combinations allowed; tickets nontransferable. Default price 0.005 ETH; live price/status/deadlines come from the round.\n90% of new sales funds that round's FWA acquisitions; 10% is held as operator fees under contract rules. ETH pulls normally cash out; NFT pulls normally retain NFTs; read the documented exceptions. Do not hardcode a 0.06 ETH spin price, returns or FWA emissions.\nETH matches split equally; no matches roll over. NFT: one match wins all inventory; multiple matches need a SEPARATE VRF tie-break selecting ONE ticket for all inventory. No matches roll over. Old tickets expire.\nCount secured NFTs only. Separate pending pulls, actual/incidental ETH, purchaser rewards and company revenue. Exclude company rewards from jackpots; NFT valuations need estimate labels and source/time.\nAn empty NFT round can cancel BEFORE lottery randomness is requested; actual refunds may be below ticket cost. Accepted draw/tie requests cannot be cancelled or replaced. Permanent oracle nonfulfillment remains an unresolved lockup risk. Do not promise automatic refunds or redraws.\n\nEXPERIENCES\nHome: globe hero, exact tagline, two prominent jackpots with cutoff/countdown and ETH amount/NFT count, play/watch actions, three-step explanation, recent results and NFT gallery.\nPlay: ETH/NFT views, accessible globe number picker, Quick Pick, editable ticket lines, quantity, ETH total and round identity. Review before signing; show wallet rejection/pending/confirmed/failed states. Quick Pick chooses entries only. Enforce transaction limits and recheck round eligibility/price before submission.\nDraw room: theatrical globe-ball chamber, countdown, settlement/oracle progress, three main-ball reveals and distinct bonus reveal, result and replay. Give NFT ties their own sequence ending at the confirmed winning ticket. Include mute, reduced motion and skip-to-results; sound needs user interaction. Lazy-load heavy graphics with a lightweight fallback.\nMy tickets: game/round filters, numbers, status and actual entitlements. Implement ABI-based ETH/NFT/purchaser-reward/refund claims. NFT claims: compatible recipient, batches up to 20, per-asset success/retry. Paused sales must preserve valid claims.\nHistory: numbers, matches, rollover, tie result, prizes, explorer links. FAQ: rules, fees, custody, randomness, delays, refunds, claims, FWA relationship. Technical proofs belong in expandable details. No invented audits, licensing, endorsements or testimonials.\n\nDEMO AND INTEGRATION\nClickable demo by default, persistently labelled \"Demo - no real tickets or prizes\", with \"Watch demo draw\". Label synthetic data; use owned/licensed art. Exercise ETH splits, both rollovers, NFT ties, cancellation review, oracle delays and failed claims. Demo never signs/broadcasts; wallet connection alone cannot activate purchases.\nUse typed contract and fixture adapters. Addresses remain null until supplied; missing configuration gives demo/unavailable UI, never guessed deployments. Separate read-only and transaction-enabled modes. Transactions need verified chain/addresses/ABI, an explicit deployment activation setting and action-specific onchain checks. Production target is Ethereum mainnet; any isolated Sepolia mode must say TESTNET and identify synthetic FWA dependencies.\nPage/cache/deduplicate logs from deployment block and recover from reorgs. Key data by chain/lottery/game/round/request ID. Handle wallet/network changes and RPC failures; bound ticket/inventory reads. Support static/IPFS hosting, reload-safe routes and relative assets; no embedded secrets or assumed backend. Document optional indexers.\n\nDRAW ACCURACY\nReveal confirmed contract results; physics/timers/client randomness never choose winners. At cutoff show settlement/oracle progress. Synchronize viewers to confirmed events and label replays.\nFollow frontend/README.md: DrawRequested -> RandomnessStored -> Result. An NFT Result with multiple matches and winningTicket 0 is provisional. Wait for TieBreakRequired -> TieBreakRequested -> TieBreakRandomnessStored -> TieBreakResult before announcing its winner/claims.\nMap statuses explicitly: only Won, Rolled, Cancelled are terminal; numeric >= Won is WRONG because tie states were appended. requestDraw can advance CancellationReviewed while remaining Closed: show review progress and wait for actual DrawRequested/Cancelled evidence. Requested/TieBreakRequested can wait indefinitely; never offer replacement randomness or invented refund deadlines. Reward queueing is not delivery; reflect actual delivery.\n\nDELIVERY\nPrefer platform-supported React/TypeScript with an EVM wallet library. Ensure keyboard/focus/contrast, accessible numeric results, alt text, reduced motion and optimized assets. Treat NFT metadata as untrusted.\nRun build/type checks and tests for number validation, value/batch calculations, demo isolation, activation, statuses, NFT ties, replay and claims. Exercise mobile/desktop flows; provide screenshots. Publish the labelled demo via the Website workflow. Return preview/source, assets used, checks, missing integration inputs and setup instructions. Hide operational/debug controls from customers. Do not claim launch readiness.","parentJobId":"85e58ec1-1ee5-4b04-8133-d8bb9ae15f1c","planHash":"c9375e342e687150c946f148d61f7a61537e57a9ce78be7348130aa7b30b19c0","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"a3707b79-51b8-4d04-9e32-3e786d91c1d9","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-961-build-sorphera-smart-contracts"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51521","feedbackHash":"3b84e876e05c8e12f41ab142d36b237b824476e12d453181a7de6cf174ae6bac","nodeKey":"build_website","submissionHash":"1a7abad9a87bf240f72e7a8b84ae38b6e1df6ec3b152df23240f04ff56675dcc","tag1":"verification:structural","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"b6e82c6277165aabec564b5440b0732b2be9c0c9aa7ba2dc2298cb4da91aaf96","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"8e4013ed294cb7bcf5e4c1d330b8078557b7faba501c5a1b2b3f856aaab42c04","device":"e698c63d215db960","findings":[],"hash":"1a7abad9a87bf240f72e7a8b84ae38b6e1df6ec3b152df23240f04ff56675dcc","nodeId":"bef34a3f-7d08-43d5-bb82-310f9e19af36","outcome":"completed","summary":"Built Sorphera’s labelled demo using all four supplied brand assets.\n\n- [Static export](dist/index.html)\n- [Source and setup](web/README.md)\n- [Screenshots and validation](web/evidence/validation.md)\n- [Design documentation](DESIGN.md)\n\nBuild, typecheck and **28 tests passed**. Desktop/mobile flows were checked. Local archive size: **7.158 MiB**. Contracts and protected configuration remain unchanged.\n\nPublic publishing remains incomplete because no Website publishing tool was available. Live transactions remain disabled pending verified deployment inputs; this is not launch readiness.","treeHash":"81e4c6ad0ef9694df8e93e285edeeab39ee07cf0","usage":{"cachedInputTokens":6742656,"inputTokens":533407,"model":"gpt-6-astra","outputTokens":83525,"runtime":"codex","turns":12,"wallClockMs":2266045}}],"verification":[{"checks":[],"detail":"paths and tree verified; no suite was run for this kind of work","evaluation":"structural","profile":"none","status":"accepted","submissionHash":"1a7abad9a87bf240f72e7a8b84ae38b6e1df6ec3b152df23240f04ff56675dcc","verifiedTreeHash":"81e4c6ad0ef9694df8e93e285edeeab39ee07cf0","verifierVersion":"0.1.0+ad90ce4c"}]}