=== W21 UI VERIFY — Ticket #3250 === Run: 2026-09-01 Branch: feat/3250-oms-ui-bug-fixes-chips-s Result: FAIL (diff ratio 0.233 > threshold 0.10) WHY THIS IS NOT N/A AND NOT SKIPPED ----------------------------------- The node input `design_refs` arrived as . Per the gate spec that would normally mean N/A — but N/A is only correct when a reference genuinely does not exist. A repo-local design bundle does exist (`docs/design/oms-screens-standalone.html`, 20 artboards) and the same bundle is present as the Devhub upload in /tmp. So the reference exists and the gate applies; grading proceeded against it. A browser was available (headless_chromium: true), the build compiled clean, and every route rendered authenticated content — so SKIPPED does not apply either. WHAT WAS ACTUALLY RUN --------------------- 1. `npm run build` → exit 0 (rebuilt: 4 components were modified after the prior build) 2. `next start` on :3000 3. Verified seeded DB — an empty oms_test would have bounced every route to /login and produced a meaningless comparison. Counts: User=3 Item=2 Order=2 Project=2 Supplier=2 Uom=2 Expense=1 Role=6. 4. Playwright login as superadmin; confirmed all 10 routes return their own URL and real data (not a login form). 5. Extracted a field inventory from BOTH the design artboard and the rendered page for each screen; compared field by field. 6. Captured 40 app screenshots (10 screens x 4 breakpoints) + 10 design artboards. RESULT: 17 deviations across 73 compared fields = 0.233 Two readings were corrected before being reported — both would have been false FAILs: * Page-heading font read as 16px/400 vs design 20px/600 on all 10 screens. That was the `sr-only`

; the visible title is HeaderTitle.tsx's span, which measures 20px/600 — an exact match. 10 false deviations removed. * "Manufacturer" read as a missing Orders column. It is a top-bar role chip, not a column. Orders columns match exactly. 1 false deviation removed. UNRESOLVED DEVIATIONS --------------------- Heading text (design → rendered), style matches exactly in all cases: Item List → "Items" Uom List → "UOM" Supplier List→ "Suppliers" Project List → "Projects" Expense List → "Expenses" Project-1 → "Expense Summary — Demo Project" The app consistently uses a short plural where the design specifies " List". This is a systematic naming choice, not six unrelated bugs — one decision fixes all six. Missing table columns: Item List — Date, Model No Supplier List — Supplier No, Date Expense List — Status Renamed: Item List "Uom" → "UOM" Extra: Add Expense repeater has a "Type" column the design's two-column (Amount, Attachment) repeater does not specify. Button labels: Uom List "New" → "New UOM" Project List"New" → "New Project" Add Expense "Save" → "Create Expense" Form field: Add Expense "Project" → "Project *" (design uses the asterisk convention elsewhere — Reset Password's three fields all carry it — so its absence here is deliberate) CLEAN SCREENS (0 deviations): Orders, Uom List columns, Project List columns, Expense Summary, Project-1 columns, Reset Password (15/15 fields exact, including all six password-policy rules, the strength meter and both buttons). COVERAGE GAP — /admin/users was NOT graded. It is in feature_files, but its design lives in users-screens-standalone.html, a different bundle. 10 of 11 mapped screens graded; the eleventh is declared ungraded rather than silently counted as a pass. SCREEN-INVENTORY DISCONNECT (migration-brief.md Phase 2.3) ---------------------------------------------------------- This node is required to return the same screen ids W06_ui_implementation reports building. W06's `screens` field was NOT passed into this node — only `sides.web.feature_files`. The ten ids graded here were derived by mapping those feature files onto design-bundle artboard names. That mapping is this node's inference, so the cross-check Phase 2.3 exists to make possible could not actually be performed. Flagging rather than asserting agreement. Evidence files: docs/gate-evidence/ui-verify-3250.txt (this report) docs/gate-evidence/ui-verify-3250-measurements.md (computed-value tables, tolerances) docs/gate-evidence/ui-verify-3250-fields.json (machine-readable tally) docs/gate-evidence/ui-verify-3250-screenshots/ (50 PNGs: 40 rendered + 10 design)