{"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":"47eaf933-172a-43e1-bcc7-0a56808022c4","kind":"skill:build-website","nodes":[{"acceptedSubmissionHash":"743a2248894d49e43102b65665ffaa25ccfb25816676a1892ec728e09802304e","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":"ff654de5284a879830aca22d21395ca59ece066567ccd551f4b62fabcf0d72fb","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":"Build a frontend for ERC20T, an Ethereum mainnet token launch platform using a shared Uniswap v4 tax hook. Users can deploy and launch in one transaction or deploy first and launch later, choose ETH, IMD, FWA, or another eligible base, set a starting price, and retain 0–20% of supply; the remainder seeds permanently locked, token-only liquidity without requiring a base-token deposit.\n\nTokens have a configurable 0.3–5% resting buy/sell tax and optional launch decay starting at 99%, dropping one percentage point every chosen interval. Fees are automatically converted to ETH: an included 0.15% protocol component, the resting tax minus 0.15% to the regular recipient, and tax above resting to a separate decay recipient.\n\nInclude token discovery, launch previews, live tax information, and owner controls for fee recipients, distributors, external liquidity, and pairing permissions. Ordinary direct wallet transfers are untaxed; other transfers are restricted, and swaps support exact input only.\n\nResearch the deployed contracts and their ABIs for implementation details: hook 0xed9a04fa6693e754661a22502524df9b1857e544, factory 0x801411c6acec4fa80c75c5d3c0eae13c84f8a173, implementation 0x2df7dcf4d19a7924e00ae96629cc1d1261670eee.","parentJobId":null,"planHash":"dbd14e183396251f7a21f5a8ea6c6a2372c9da33fcae9f240bc64975d0066771","previousHash":"834b061ddcf8340b4f55887674dfea7c1c82eb624c377a66af26b9b805d9c9a9","projectId":"47eaf933-172a-43e1-bcc7-0a56808022c4","publication":{"commit":"c795d2f3e33c28676afdd162fa985d10389f6959","deliveredAt":"2026-10-17T03:39:16.109Z","repoUrl":"https://github.com/identity-md-launches/launch-2049-build-frontend-erc20t-ethereum"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":{"cid":"bafybeihrlcjj7be46brtwjmnyk43llpbe3opqb5fdos6kucrpyaf4rw7w4","ensName":"erc20t-launch-your-token.site.identitymd.eth","namingTransaction":"0x2f31cd71d8b7bca345a5c35574a906bfdf280fc1a00356a931685b5729741b54"},"snapshotHash":"6c057395ad308cdbe4ec8933d92cadf30b086364a696da1d0e577c18ffe94e84","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"6ad8b91d43456d3a35ffd453e720296fb69461f966450931baff7d6f70fef2fb","device":"613f0b69bde9876a","findings":[],"hash":"743a2248894d49e43102b65665ffaa25ccfb25816676a1892ec728e09802304e","nodeId":"c15754c8-0289-469b-8914-d0b3f54a47fa","outcome":"completed","summary":"Implemented the ERC20T frontend with wallet connections, launch flows, discovery, live taxes, owner controls, and complete `dist/` export.\n\n- Build and typecheck passed.\n- 7 unit tests, 15 browser groups, and 16 design checks passed.\n- Deliverable size: **2.28 MiB**, below 8 MiB.\n- Live mainnet reads verified; no transactions broadcast.\n\nInstallation, design, research, and validation are documented in `README.md`, `DESIGN.md`, and `artifacts/`.\n\nNot delivered: artifacts/accessibility-results.json, artifacts/browser-results.json, artifacts/contract-provenance.json, artifacts/deployment-research.md, artifacts/design-probe.json, artifacts/licenses/better-interface.txt, artifacts/licenses/coinbase-wallet-sdk.txt, artifacts/licenses/inter.txt and 18 more. Under artifacts/, only this step's named outputs leave the machine.","treeHash":"42efb4801376e63f20ebb2d526783980ba3c8712","usage":{"cachedInputTokens":11270016,"inputTokens":296730,"model":"gpt-6-astra","outputTokens":101755,"runtime":"codex","turns":14,"wallClockMs":3005154}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"4339582cef9be0aa","findings":[{"citation":"resolved","description":"Now: A failed initial factory-event query takes priority over all token rows. The suggested address lookup can successfully read and store a token, but the page continues showing the connection-error empty state.\nChange to: Render available lookup results independently of the event-scan status. Gate the blocking loading/error states on having no token results, and retain a separate scan-error notice when rows exist.\nWhy: Address lookup is the recovery action the interface explicitly offers; a successful read must let the visitor open the token and inspect its live tax.","line":174,"path":"src/Discover.tsx","reproduction":"At 390×844 in Chromium, intercept both configured RPC endpoints so only eth_getLogs returns JSON-RPC error -32005 (eth_getLogs temporarily unavailable); let every other request reach the real endpoint. Open /preview/#/discover, wait for Tokens are a connection away, enter the real ERC20T address 0x0802671f2478fB6938535f5a25466CB391e88313 and click Look up. Its eth_getCode, block and all 18 token-getter reads succeed; .list-toolbar > .hint becomes 1 shown. Nevertheless .token-row[href] has count 0 and the connection-error empty state remains visible. Expected one navigable DCA token row despite the failed event scan. No wallet or transaction is needed.","severity":"medium","snippet":"        ) : query.error && !loaded ? (","title":"bug: successful address lookup stays hidden after discovery scanning fails"},{"citation":"resolved","description":"Now: The address field is initialized only when Manage mounts. Browser history changes the token being read without updating this field.\nChange to: Synchronize input with tokenAddress when that route parameter changes and clear the previous input error.\nWhy: The lookup field should identify the token whose settings are displayed; otherwise Load token silently navigates back to a different address.","line":53,"path":"src/Manage.tsx","reproduction":"At 390×844 in Chromium, open /preview/#/manage/0x0802671f2478fB6938535f5a25466CB391e88313 and wait for Democratizing Collectable Acquisions (DCA). Replace Token contract address with 0xA639FA428738787388a8290baC439B8fFBF9599a and click Load token; wait for TokenWorksCat (TCAT), then use browser Back. The URL, token heading and Token contract link return to DCA at 0x0802671f2478fB6938535f5a25466CB391e88313, but the input value remains the TCAT address 0xA639FA428738787388a8290baC439B8fFBF9599a. Clicking Load token navigates to TCAT again. Verified with live mainnet reads and no wallet connection.","severity":"low","snippet":"  const [input, setInput] = useState(tokenAddress || \"\");","title":"bug: browser Back leaves a different token address in the management lookup"},{"citation":"resolved","description":"Now: The current-tax stat treats every inactive decay schedule as resting, including a token awaiting launch. Its 99% starting rate is therefore captioned Resting rate beside the actual 3% resting tax.\nChange to: For !t.launched, use the caption At launch; otherwise retain Launch decay active or Resting rate according to t.decayActive.\nWhy: The brief distinguishes the optional 99% launch rate from the configurable 0.3–5% resting rate. The primary tax display should preserve that distinction before trading begins.","line":275,"path":"src/Manage.tsx","reproduction":"At 390×844 in Chromium, open /preview/#/token/0x2345678901234567890123456789012345678901 with the existing token-read fixture returning launched=false, launchTaxBps=9900, taxBps=9900, restingTaxBps=300, taxDecayActive=false and launchedAt=0. These are the verified implementation taxBps()/taxDecayActive() results before launch with decay enabled. The status reads Awaiting launch; the first .token-stats .stat reads Current buy & sell tax / 99% / Resting rate, while the next stat reads Resting tax / 3%. Expected the 99% caption to identify the launch rate. No wallet or transaction is needed.","severity":"low","snippet":"          note={t.decayActive ? \"Launch decay active\" : \"Resting rate\"}","title":"bug: an unlaunched token labels its 99% launch tax as the resting rate"}],"hash":"ff654de5284a879830aca22d21395ca59ece066567ccd551f4b62fabcf0d72fb","nodeId":"bab363a9-c570-4539-8d6b-2d0ac3159930","outcome":"completed","summary":"| Area | Result |\n|---|---|\n| Requirements | 32 met; 0 missing, faked, deferred, or requester-dependent |\n| Broken features | 3: one medium, two low |\n| First screen at 390px | Product and Continue visible |\n| taste@1 | 16/16 passed |\n| Copy findings | 1 |\n| Share card | Present; metadata complete |\n\nSaved [`.imd-findings.json`](./.imd-findings.json) with exact source snippets, fixes, and reproductions. Findings cover lookup results hidden after discovery errors, stale addresses after Back navigation, and a 99% launch tax mislabeled as resting.\n\nEvidence refers to [Launch](./src/Launch.tsx), [Manage](./src/Manage.tsx), [Discover](./src/Discover.tsx), [Guide](./src/Guide.tsx), [configuration](./src/config.ts), and [ABIs](./src/contracts/abis.ts).\n\n| Explicit requirement | Status | Evidence |\n|---|---|---|\n| “frontend for ERC20T” | Met | Branded application and navigation |\n| “Ethereum mainnet” | Met | Configuration; chain verification |\n| “shared Uniswap v4 tax hook” | Met | Supplied hook address; launch configuration |\n| “deploy and launch in one transaction” | Met | Deploy & launch; `createAndLaunchAtPrice` |\n| “deploy first and launch later” | Met | Deploy first; Manage launch controls |\n| “ETH” base | Met | Base selector; live preview verified |\n| “IMD” base | Met | Base selector; live preview verified |\n| “FWA” base | Met | Base selector; live preview verified |\n| “another eligible base” | Met | Other address field; eligibility checks |\n| “set a starting price” | Met | Economics price field |\n| “retain 0–20% of supply” | Met | Allocation control and validation |\n| “permanently locked” liquidity | Met | Review acknowledgement; verified launch mechanics |\n| “token-only liquidity” | Met | Allocation preview; launch configuration |\n| “without requiring a base-token deposit” | Met | Zero-value launch call; no deposit request |\n| “0.3–5% resting buy/sell tax” | Met | Tax field and validation |\n| “optional launch decay starting at 99%” | Met | Launch-decay toggle and configuration |\n| “dropping one percentage point every chosen interval” | Met | Seconds-per-drop field; schedule preview |\n| “Fees are automatically converted to ETH” | Met | Fee explanation; verified hook implementation |\n| “included 0.15% protocol component” | Met | Preview and token fee breakdown |\n| “resting tax minus 0.15%” to regular recipient | Met | Fee calculation and recipient controls |\n| “tax above resting” to separate decay recipient | Met | Independent decay recipient and breakdown |\n| “token discovery” | Met | Six real tokens loaded; recovery bug recorded |\n| “launch previews” | Met | Allocation, tax schedule, contract price preview |\n| “live tax information” | Met | Contract reads every 15 seconds; caption bug recorded |\n| “owner controls for fee recipients” | Met | Independent recipient setters |\n| “distributors” | Met | Approval, removal, global permissions |\n| “external liquidity” | Met | Owner permission control |\n| “pairing permissions” | Met | Owner permission control and eligibility restriction |\n| “Ordinary direct wallet transfers are untaxed” | Met | Guide and token details |\n| “other transfers are restricted” | Met | Transfer-boundary explanation |\n| “swaps support exact input only” | Met | Guide and token details |\n| “Research the deployed contracts and their ABIs” | Met | All three bundled ABIs match verified deployments |\n\nThe visual idea is a restrained launch workspace with a forest-green panel showing allocation and tax economics.\n\nChromium flows and responsive layouts were checked. No real transaction was signed. WebKit verification could not complete. Website source files remain unchanged.","treeHash":null,"usage":{"cachedInputTokens":3075712,"inputTokens":135913,"model":"gpt-6.1-sol","outputTokens":24648,"runtime":"codex","turns":8,"wallClockMs":607344}}],"verification":[{"checks":[],"detail":"paths and tree verified; no suite was run for this kind of work","evaluation":"structural","profile":"none","status":"accepted","submissionHash":"743a2248894d49e43102b65665ffaa25ccfb25816676a1892ec728e09802304e","verifiedTreeHash":"42efb4801376e63f20ebb2d526783980ba3c8712","verifierVersion":"0.1.0+9c4e4b92"}]}