{"workflow":null,"planning":null,"id":"bed09fbe-c2f3-4b60-a7d4-d303ad0dd346","state":"completed","template":"skill:research-report","objective":"Independent QA and accessibility review of the wallet-connected terminal in web/ of this repository. REPORT FINDINGS ONLY: do not modify web/, src/ or any other tracked file. The deliverable is a review, not a fix.\n\nWHAT IS UNDER REVIEW. web/ is a Vite + React + TypeScript terminal for a CDP stablecoin on Sepolia. Layout: a top bar (brand, sun/moon theme toggle, wallet/ENS), a left MONITOR with tabs (Loan book, Oracle, Backing) and a right DESK with tabs (Position, Redeem, Work, Keeper, Govern), and a footer status line (feed state, market-cap bar, reserves, block, icon refresh button). Below 1100px a pane picker shows one pane at a time. Custom widgets to scrutinise: the two tablists (web/src/actions.tsx Tabs), a page-drawn dropdown that replaces <select> (Select: listbox, aria-activedescendant, fixed-position list), info popovers (Info: hover/focus/tap, Escape), segmented choices (Choice, aria-pressed), the transaction review <dialog>, the searchable loan list, Keeper auto-inspecting a pasted address, and ENS names replacing addresses (web/src/ens.tsx).\n\nHOW TO RUN IT. cd web && npm ci && npm run build && npm test. The suite web/tests/browser.mjs drives the built site against web/tests/fixture.mjs, a mocked RPC, Blockscout, ENS and wallet; npm run test:browser runs it headless. Reuse that fixture to put the UI into each state (it is plain data: stale feeds, divergence, marks, governor, backing below par, RPC failure). The existing suite already asserts 40 behaviours; do not just re-run it and report green. Look for what it does not cover. USE THE BROWSER TOOL THIS ASSIGNMENT HANDS YOU to load the built export (and the fixture-driven states) and inspect what actually renders: the attached better-interface reference requires rendered evidence, and source reading does not establish visual or keyboard behaviour. Follow its better-accessibility, better-layout and better-colors guidance, and eth-frontend-ux for the connect, approve and execute flow and error translation. If no browser is available, say so in the first line of the report, review statically, and mark every finding not observed live as unverified.\n\nREVIEW AGAINST WCAG 2.2 AA AND ORDINARY QA:\n1. Keyboard and screen reader: tab order across monitor and desk; arrow-key tablists and roving tabindex; the Select listbox (open, move, Home/End, Enter, Escape, Tab, focus return, announced value); Info popovers reachable and dismissible without hover; the review dialog's focus trap and focus return; whether Keeper's automatic inspection and other async results are announced (live regions); names and roles of icon-only buttons (theme, refresh, info).\n2. Visual: contrast of every text and non-text colour against the surface it actually sits on, in BOTH themes (muted, danger and healthy text on surface and raised backgrounds; chart marks; the selected and active list states); visible focus everywhere; reflow at 320 CSS px and 400% zoom (1.4.10); text spacing (1.4.12); target size (2.5.8); prefers-reduced-motion.\n3. Layout: at 1440x900, 1280x800 and 1280x720 no desk or monitor tab may need to scroll or clip, including Redeem with a quote shown and both Keeper views; at 390x844 and 320x740 every pane must be reachable and usable.\n4. Functional QA through the fixture: each action simulates, opens the review, confirms and refreshes; refused actions explain the blocking figure in the user's units; stale or diverged feeds pause price actions everywhere they should; an empty or unreadable loan book is never shown as \"no positions\"; Keeper's button names the right next step (View actions, Mark, Grace, Liquidate, Mark again) for each fixture state; operator controls only for the governor; ENS absent or slow degrades to addresses.\n\nDELIVERABLE: artifacts/qa-review.md containing (a) a findings table, each row with id, severity (blocker, major, minor, nit), WCAG success criterion where one applies, area, exact reproduction (fixture fields, viewport, theme, keys pressed), expected versus actual, evidence (command output, measured values, or a screenshot saved under artifacts/), and a suggested fix naming the file; (b) what was tested and passed, briefly; (c) what could not be tested and why. Plus the short README the skill requires. Distinguish observed behaviour from inference, and never count an automated axe pass as WCAG conformance. Do not invent findings to fill the table: an honest short list beats a padded long one.","blockedReason":null,"createdAt":"2026-10-05T00:59:32.950Z","updatedAt":"2026-10-05T01:10:05.341Z","paidBy":"0x5167d014a056e43883e1bbea5530c3c0dc993281","parentJobId":null,"project":{"id":"bed09fbe-c2f3-4b60-a7d4-d303ad0dd346","head":"bed09fbe-c2f3-4b60-a7d4-d303ad0dd346","running":null,"versions":[{"jobId":"bed09fbe-c2f3-4b60-a7d4-d303ad0dd346","workflowId":null,"objective":"Independent QA and accessibility review of the wallet-connected terminal in web/ of this repository. REPORT FINDINGS ONLY: do not modify web/, src/ or any other tracked file. The deliverable is a review, not a fix.\n\nWHAT IS UNDER REVIEW. web/ is a Vite + React + TypeScript terminal for a CDP stablecoin on Sepolia. Layout: a top bar (brand, sun/moon theme toggle, wallet/ENS), a left MONITOR with tabs (Loan book, Oracle, Backing) and a right DESK with tabs (Position, Redeem, Work, Keeper, Govern), and a footer status line (feed state, market-cap bar, reserves, block, icon refresh button). Below 1100px a pane picker shows one pane at a time. Custom widgets to scrutinise: the two tablists (web/src/actions.tsx Tabs), a page-drawn dropdown that replaces <select> (Select: listbox, aria-activedescendant, fixed-position list), info popovers (Info: hover/focus/tap, Escape), segmented choices (Choice, aria-pressed), the transaction review <dialog>, the searchable loan list, Keeper auto-inspecting a pasted address, and ENS names replacing addresses (web/src/ens.tsx).\n\nHOW TO RUN IT. cd web && npm ci && npm run build && npm test. The suite web/tests/browser.mjs drives the built site against web/tests/fixture.mjs, a mocked RPC, Blockscout, ENS and wallet; npm run test:browser runs it headless. Reuse that fixture to put the UI into each state (it is plain data: stale feeds, divergence, marks, governor, backing below par, RPC failure). The existing suite already asserts 40 behaviours; do not just re-run it and report green. Look for what it does not cover. USE THE BROWSER TOOL THIS ASSIGNMENT HANDS YOU to load the built export (and the fixture-driven states) and inspect what actually renders: the attached better-interface reference requires rendered evidence, and source reading does not establish visual or keyboard behaviour. Follow its better-accessibility, better-layout and better-colors guidance, and eth-frontend-ux for the connect, approve and execute flow and error translation. If no browser is available, say so in the first line of the report, review statically, and mark every finding not observed live as unverified.\n\nREVIEW AGAINST WCAG 2.2 AA AND ORDINARY QA:\n1. Keyboard and screen reader: tab order across monitor and desk; arrow-key tablists and roving tabindex; the Select listbox (open, move, Home/End, Enter, Escape, Tab, focus return, announced value); Info popovers reachable and dismissible without hover; the review dialog's focus trap and focus return; whether Keeper's automatic inspection and other async results are announced (live regions); names and roles of icon-only buttons (theme, refresh, info).\n2. Visual: contrast of every text and non-text colour against the surface it actually sits on, in BOTH themes (muted, danger and healthy text on surface and raised backgrounds; chart marks; the selected and active list states); visible focus everywhere; reflow at 320 CSS px and 400% zoom (1.4.10); text spacing (1.4.12); target size (2.5.8); prefers-reduced-motion.\n3. Layout: at 1440x900, 1280x800 and 1280x720 no desk or monitor tab may need to scroll or clip, including Redeem with a quote shown and both Keeper views; at 390x844 and 320x740 every pane must be reachable and usable.\n4. Functional QA through the fixture: each action simulates, opens the review, confirms and refreshes; refused actions explain the blocking figure in the user's units; stale or diverged feeds pause price actions everywhere they should; an empty or unreadable loan book is never shown as \"no positions\"; Keeper's button names the right next step (View actions, Mark, Grace, Liquidate, Mark again) for each fixture state; operator controls only for the governor; ENS absent or slow degrades to addresses.\n\nDELIVERABLE: artifacts/qa-review.md containing (a) a findings table, each row with id, severity (blocker, major, minor, nit), WCAG success criterion where one applies, area, exact reproduction (fixture fields, viewport, theme, keys pressed), expected versus actual, evidence (command output, measured values, or a screenshot saved under artifacts/), and a suggested fix naming the file; (b) what was tested and passed, briefly; (c) what could not be tested and why. Plus the short README the skill requires. Distinguish observed behaviour from inference, and never count an automated axe pass as WCAG conformance. Do not invent findings to fill the table: an honest short list beats a padded long one.","baseCommit":"731734e794b3c04a1dfa3e9542212601f0e53050","state":"completed","createdAt":"2026-10-05T00:59:32.950Z"}]},"deliver":false,"host":false,"site":null,"launch":{"requested":false,"kind":null,"id":null,"status":null,"chainId":null},"oracleRequestId":null,"delivery":null,"media":null,"nodes":[{"key":"research_report","role":"implement","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":[],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-05T01:10:05.341Z","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+bb1c0c94","verifiedTreeHash":"98d0d052f568d41d3119466b71a6c862d13ac516","at":"2026-10-05T01:10:05.375Z","failedChecks":[]},"seat":{"tokenId":"1040","agentId":"51870"},"live":null}],"reviews":[{"status":"sent","chainId":1,"txHash":"0x274e54a0a32cff32ebc179b3e7c4be37e68aa78c7f46babb3ed3c0600373b332","blockNumber":26122791,"sentAt":"2026-10-05T01:10:53.266Z","entries":[{"nodeKey":"research_report","agentId":"51870","value":1,"role":"verification:structural"}]}]}