# Coverage matrix — UX-DESIGN.md (pilot) Purpose: prove every entry on a reference surface in the source doc has a home in the PoR. Source: `docs/UX-DESIGN.md` at tag `pre-simplification` (non-normative wireframes). Method: subagent extracted every entry mechanically; this file assigns the PoR home and disposition. Dispositions: `ported`, `superseded`, `dropped`, `ui` (presentation-only, not a requirement), `missing` (a finding). Pilot proof: the three entries fixed in SETTINGS-45 / SETTINGS-90 / METADATA-110 are marked `ported` below. Before that fix they had no home, which is exactly what this matrix surfaces. ## SETTINGS KEYS | Entry | PoR | Disposition | Note | |---|---|---|---| | Store URL field | SETTINGS-5 | ported | env, read-only | | WP Username field | SETTINGS-20 | ported | — | | Application Password field | SETTINGS-20 | ported | — | | Inference Endpoint field | SETTINGS-30 | ported | — | | Inference API Key field | SETTINGS-30 | ported | — | | Enable Vision toggle, default off | SETTINGS-90 | ported | fixed | | Enable Content toggle, default off | SETTINGS-90 | ported | fixed | | Pricing Rules | SETTINGS-35 | ported | — | | Publish Status dropdown, default Draft | SETTINGS-65 | ported | — | | Brand Voice field | SETTINGS-30 | ported | — | | GEO Context field | SETTINGS-30 | ported | — | | Sheet dropdown | CAPTURE-40 | ported | — | | Edge Offset control | CAPTURE-40 | superseded | removed | | Feather control | CAPTURE-40 | superseded | removed | | Knob persistence localStorage | CAPTURE-145 | ported | — | ## CONTROLS | Entry | PoR | Disposition | Note | |---|---|---|---| | Test Connection (WP) | SETTINGS-40, SETTINGS-80 | ported | resync and failure | | Test Connection (Inference) two-turn probe, stateful/stateless/fail | SETTINGS-45 | ported | fixed | | Enable Vision / Enable Content buttons | SETTINGS-90 | ported | — | | Add Rule / Edit (pricing) | SETTINGS-35 | ported | — | | Reset Capture Knobs | CAPTURE-145 | ported | — | | Refresh Store Lists | SETTINGS-60 | ported | — | | Got it (first-run card) | — | ui | presentation | | R retake shortcut | CAPTURE-50 | ported | — | | Sheet dropdown | CAPTURE-40 | ported | — | | Sensitivity slider | CAPTURE-41, CAPTURE-45 | ported | — | | Edge Offset slider | CAPTURE-40 | superseded | removed | | Feather slider | CAPTURE-40 | superseded | removed | | Retake (capture) | CAPTURE-50, CAPTURE-155 | ported | — | | Confirm (capture) | CAPTURE-50 | ported | — | | Rotate (axis) | CAPTURE-60, CAPTURE-65 | ported | — | | Confirm (axis) | CAPTURE-60 | ported | — | | SKU input | REVIEW-45 | ported | — | | Length input | CAPTURE-70 | ported | — | | Thickness input | CAPTURE-70 | ported | — | | Done (type values) | APP-5 | ported | status calibrated | | X exit review | APP-10 | ported | — | | Species dropdown | METADATA-10 | ported | — | | Wood Cat dropdown | METADATA-10 | ported | — | | Edge Type dropdown | METADATA-15 | ported | — | | Figure dropdown | METADATA-15 | ported | — | | Grade dropdown | METADATA-15 | ported | cardinality superseded | | Fig Tags dropdown | METADATA-30 | ported | cardinality superseded | | Feat Tags dropdown | METADATA-30 | ported | — | | Thickness Band dropdown | METADATA-15 | ported | — | | Moisture dropdown | METADATA-15 | ported | — | | Price input | REVIEW-25 | ported | — | | Review Title / Desc button | REVIEW-10 | ported | — | | Publish button disabled until ready | REVIEW-20 | ported | — | | Title input | REVIEW-10 | ported | — | | Short Title input | REVIEW-10 | ported | naming migrated | | Description input | REVIEW-10 | ported | — | | Generate Text button, availability | METADATA-110 | ported | fixed | | Done (title/desc) | REVIEW-40 | ported | — | | Open in Store | — | ui | candidate: store link is presentation | | Done (publish success) | PUBLISH-25 | ported | — | | Retry (publish failed) | PUBLISH-30, PUBLISH-37 | ported | — | | Back to Review | PUBLISH-30 | ported | retry from same screen | | Retake (mask failure) | CAPTURE-50, CAPTURE-55 | ported | — | | Rotate (axis check) | CAPTURE-60 | ported | — | | Retake (source too small) | CAPTURE-105 | ported | — | | Edit SKU | PUBLISH-15 | ported | — | | Open Existing | PUBLISH-15 | ported | — | | Refresh Store Lists (stale) | PUBLISH-20 | ported | — | | Retry / Open Settings (unreachable) | PUBLISH-30, PUBLISH-36, PUBLISH-38 | ported | — | | Update Browser | CAPTURE-10 | ported | — | ## LISTING FIELDS | Entry | PoR | Disposition | Note | |---|---|---|---| | SKU | REVIEW-45, PUBLISH-15 | ported | — | | Length | CAPTURE-70 | ported | — | | Thickness | CAPTURE-70 | ported | — | | sqft (computed) | CAPTURE-85 | ported | — | | bdft (computed) | CAPTURE-90 | ported | — | | widths (computed) | CAPTURE-80 | ported | — | | Photos, "at least one inventory PNG" | REVIEW-5 | superseded | ready set is two images | | Species exactly one | METADATA-10 | ported | — | | Wood category 1+ | METADATA-10 | ported | — | | Edge type one | METADATA-15 | ported | — | | Figure 1+ | METADATA-15 | ported | — | | Fig tags 1+ | METADATA-30 | superseded | tags optional | | Feat tags 0+ | METADATA-30 | ported | — | | Grade 1+ | METADATA-15 | superseded | grade exactly one | | Thickness Band | METADATA-15 | ported | — | | Moisture | METADATA-15 | ported | — | | Price | REVIEW-25 | ported | — | | Title | REVIEW-10 | ported | — | | Short Title | REVIEW-10 | ported | naming migrated | | Description | REVIEW-10 | ported | — | | Store product ID | PUBLISH-25 | ported | display is presentation | ## STATUSES | Entry | PoR | Disposition | Note | |---|---|---|---| | Publish Status Draft | SETTINGS-65 | ported | — | | calibrated | APP-5 | ported | — | | publishing | APP-5 | ported | — | | published | APP-5, PUBLISH-50 | ported | — | | failed | APP-5 | ported | — | | Woo product draft | PUBLISH-10 | ported | — | | SKU "any status" | PUBLISH-15 | ported | — | | probe stateful/stateless/fail | SETTINGS-45 | ported | fixed | ## ENDPOINTS | Entry | PoR | Disposition | Note | |---|---|---|---| | WP REST v3 auth | SETTINGS-15, SETTINGS-80 | ported | — | | Inference endpoint | SETTINGS-30 | ported | — | | Inference endpoint reachability | METADATA-110, METADATA-75 | ported | fixed | ## ERROR CODES | Entry | PoR | Disposition | Note | |---|---|---|---| | green check / red error | SETTINGS-80 | ported | — | | stateful/stateless/fail | SETTINGS-45 | ported | fixed | ## USER-FACING ERROR / EMPTY STATES | Entry | PoR | Disposition | Note | |---|---|---|---| | Mask failure "Cannot isolate the slab edge..." | CAPTURE-55 | ported | — | | Axis misalignment "Rotate the axis..." | CAPTURE-60 | ported | — | | Source too small "Photo will be too small..." | CAPTURE-105 | ported | — | | SKU duplicate "This SKU already exists..." | PUBLISH-15 | ported | — | | Stale taxonomy "This value is no longer valid..." | PUBLISH-20, REVIEW-35 | ported | — | | Store unreachable "Cannot reach the store..." | PUBLISH-30, PUBLISH-36 | ported | — | | Publish failed "The store rejected the listing..." | PUBLISH-30, PUBLISH-35 | ported | — | | Publishing in progress | PUBLISH-5 | ported | — | | Publish success | PUBLISH-25 | ported | — | | Browser gate "update Safari or Chrome" | CAPTURE-10 | superseded | matrix includes PC | | Species/Figure/Wood/Edge nudges | REVIEW-20, METADATA-10, METADATA-15 | ported | — | | Generic inline nudge | REVIEW-20 | ported | — | | First-run guidance text | — | ui | presentation | | Vision-off empty taxonomy | METADATA-45, METADATA-70 | ported | — | ## INFERENCE | Entry | PoR | Disposition | Note | |---|---|---|---| | Call 1 flag default off | SETTINGS-90, METADATA-35 | ported | fixed | | Call 2 flag default off | SETTINGS-90, METADATA-55 | ported | fixed | | Generate Text triggers Call 2 | METADATA-55 | ported | — | | Pre-populate threshold 0.7 | METADATA-45 | ported | — | | Below-threshold leaves empty | METADATA-45 | ported | — | | Below-threshold manual fill to ready | REVIEW-5, REVIEW-20 | ported | — | | Two-turn probe stateful/stateless/fail | SETTINGS-45 | ported | fixed | | AI badge on Call 1 fields | — | ui | presentation | | Generate Text availability | METADATA-110 | ported | fixed | | Call 2 prose only, templates numbers | METADATA-65, METADATA-70 | ported | — | | Vision off state | METADATA-70 | ported | — | ## PUBLISH PAYLOAD / FLOW | Entry | PoR | Disposition | Note | |---|---|---|---| | Publish action, poll | PUBLISH-5 | ported | — | | Draft creation | PUBLISH-10 | ported | — | | SLAB-UAT-* always draft | PUBLISH-10 | ported | — | | Publish Status default draft | SETTINGS-65 | ported | — | | Duplicate SKU behavior | PUBLISH-15 | ported | — | | Stale taxonomy behavior | PUBLISH-20 | ported | — | | Success result, open in store | PUBLISH-25 | ported | link is presentation | | Failure behavior, keep draft, retry | PUBLISH-30 | ported | — | | Product ID stored, images purged | PUBLISH-25 | ported | — | | Publish button gating | REVIEW-20 | ported | — | | Submit-time validation after all fields | REVIEW-20 | superseded | per-field nudges, no submit list | | Taxonomy freshness on test | SETTINGS-40 | ported | — | ## CONSTANTS / NUMBERS | Entry | PoR | Disposition | Note | |---|---|---|---| | SKU pattern `[A-Z0-9-]{3,24}` | REVIEW-45 | ported | case widened | | Length / thickness 1/8 step | CAPTURE-70 | ported | — | | Confidence threshold 0.7 | METADATA-45 | ported | — | | Width sample every 6 inches | CAPTURE-80 | ported | — | | Wireframe width 375px | — | ui | sketch detail | | Sample values (sqft 0.64, bdft 0.96, widths, price, id) | — | ui | examples | | Mandatory counts list | REVIEW-5 | ported | grade/fig superseded | | Optional feat-* zero fine | METADATA-30 | ported | — | | Photo thumbnail count 5 | CAPTURE-25 | superseded | no cap | | SLAB-UAT-* pattern | PUBLISH-10 | ported | — | ## BROWSER / API SUPPORT | Entry | PoR | Disposition | Note | |---|---|---|---| | Gate on missing APIs | CAPTURE-10 | ported | — | | Supported browsers | CAPTURE-10 | ported | matrix worded phone-only, superseded | | Hard-stop screen | CAPTURE-10 | ported | — | | Client-side mask re-run | CAPTURE-140, CAPTURE-150 | ported | — | | Camera capture | CAPTURE-20, CAPTURE-25 | ported | — | | localStorage | CAPTURE-145 | ported | — |