Files
jobtrackingapp/docs/redesign/phase-5/p5-15/p5-15-02/DEFECTS.md
T

38 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P5-15-02 — Accessibility and responsive findings
Audit source `cf847e9b256d9aec733abf3f37c42852c9dd2421`,2026-10-10. These findings are not application fixes. [Native proof](evidence/native-issues.json), [coverage](TEST_COVERAGE.md), [baseline triage](AXE_TRIAGE.md) and [operator script](MANUAL_ACCEPTANCE.md) distinguish native failures, automated rule findings and missing human evidence. No production data/provider is used. Final full-run evidence will supersede only its named observations.
## Confirmed behavioral failures
| ID / scope / PRES | Reproduction and actual versus expected | Impact / criterion / severity | Remediation / owner / checkpoint / status |
|---|---|---|---|
| **A11Y-01 — File-picker keyboard activation. W08/J10** | Native owned Job Documents at768px, EN/light: focus Upload, press Enter then Space; neither opens a picker. Settings General: repeat Import JSON and Convert CSV to Import JSON; neither keyboard key opens either picker. Click each same control: all three native pickers open. Six keyboard failures/three positive pointer controls; no file data written. | **P1, production-blocking** keyboard-only attachment upload/import unavailable; WCAG2.1.1 and button activation contract. `<label role=button tabindex=0>` with hidden file inputs and no click handler is the responsible boundary; MUI's nonnative keyboard handler does not invoke label default activation. This is more serious than the minor axe `aria-allowed-role` warning. No data/security exposure observed. | UI/attachments/import owner; independent **P5-15-04-A11Y-01** repair with native Enter/Space/pointer regressions, safe file/owner round-trip, locale/mobile/reader proof. **OPEN**. Do not bypass with focus on an inaccessible hidden input or mouse-only acceptance. |
| **A11Y-02 — Mobile drawer focus and immediate Escape. E07** | Jobs390×900 EN/light, reduced motion: focus Open navigation, Enter; drawer visible, Dashboard does not receive focus. Focus remains on the now-hidden background trigger before and after axe. Immediate Escape leaves drawer open. Tab then Escape can close it, but restores focus to another background button. CV390×844 NB/dark emulated tap also fails immediate Escape return. | **P2, release acceptance blocker**; focus order/modal containment/return (WCAG2.4.3/2.4.7 and PRES-E07). Recovery exists through an additional Tab, so this evidence does not establish every navigation action permanently unusable. Ordinary historical shell checks passing do not close the new reduced-motion path. No security/data finding. | Shell/accessibility owner; independent **P5-15-04-A11Y-02**, deterministic reduced-motion entry, containment, Escape/Tab and correct trigger return at breakpoints; retain existing shell behavior. Exact transition/focus race diagnosis remains required. **OPEN**. |
| **A11Y-03 — CV source-editor destination. C07** | Native CV Content, desktop EN/light: keyboard-activate Open Career Profile; actual href/destination `/career/profile`, which has no current route and resolves404. Expected existing `/career` or `/career?section=profile`, preserving canonical source isolation. Source action is equally incorrect for pointer activation. | **P2, functional acceptance blocker**; accessible destination/product source-versus-override contract. Canonical editor is reachable through shell; no canonical mutation, CV/history corruption or lost persisted data demonstrated. | CV/navigation owner; independent **P5-15-04-A11Y-03**, minimal existing-route correction and real source/action/Back/localisation tests. **OPEN**. Do not add a second embedded canonical editor. |
## Automated findings requiring a contextual disposition
These are rule entries/nodes, not a count of independent defects. Best-practice tags are not mislabeled as WCAG-AA violations; absence of a human reader is not a functional FAIL.
| ID / route / PRES | Measured evidence | Classification and next action |
|---|---|---|
| **A11Y-04 — Analytics status targets. S01; J05 supporting** | Applied/Søkt standalone status drill-down link atEN390/NB1024:18px high, nearest safe clickable diameter18px versus24px AA minimum; 27.3/47.8px wide. | **P2**, confirmed project target-size failure / axe WCAG2.2AA2.5.8 finding. Standalone report list links are not ordinary prose; verify applicable exceptions/any equivalent same-page target during repair rather than claiming universal WCAG failure from size alone. Increase usable target/spacing without changing metrics/query semantics; **P5-15-04-A11Y-04**, Analytics/UI owner. **OPEN**, release acceptance disposition required. |
| **A11Y-05 — Avatar initials contrast. Career Profile C01/C02** | Repeated initials RR: light1.19:1, dark1.76:1,28px bold;3:1 if meaningful text. Other contact text is not implicated. | **P3 review**, potentially incidental/redundant beside user's name. Human visual/semantic disposition required before asserting WCAG1.4.3 failure or exception. **PARTIAL**, design/accessibility owner. |
| **A11Y-06 — Main/headings. E02/C01/C06/A02** | Login has no main/H1; Profile/CV/Admin heading skips. Correspondence has both inbox and shell Job email H1. | **P3 structure review**, project hierarchy/reader workflow; axe best-practice findings are not alone WCAG violations. Operator must verify headings/landmarks and efficient navigation. **PARTIAL**, page/accessibility owners; bounded04 repairs if confirmed. |
| **A11Y-07 — CV cross-document landmarks. C06/C12** | Axe compares outer app main with `main.page` inside the named preview iframe. | **P3 manual nonvisual review**, best-practice `landmark-unique`; not duplicate outer Preview-region names. Preserve verified renderer geometry and named iframe. **PARTIAL**, CV/accessibility owner. |
| **A11Y-08 — Drawer child names. E07** | Axe reports four child commands in a scrolled/emulated drawer without an exposed name; source has translated ListItemText, and another snapshot includes their names. | **NOT VERIFIED**, may involve clipping/AX visibility rather than absent labels. Check native scroll, computed names and actual reader speech before severity/repair; do not claim four confirmed unnamed controls. Shell/accessibility operator. |
| **A11Y-09 — Rules/Settings tab associations. S03** | Rules behavior passes native retention/save/error tests; Settings desktop tabs lack explicit control/panel identity links in current markup. | **PARTIAL**, inspect actual tab/panel reading order and mobile select using M09. No data-loss recurrence found; do not conflate this with repaired Rules draft loss. Settings/accessibility owner. |
| **A11Y-10 — Small/clipped control triage. J05/A02/S03** | Real zoom collection flags some table/tab-scroller descendants, an edge Jobs pagination control on a one-page fixture, and the transparent oversized MUI switch input. Root UI page/main overflow is0. | **NOT VERIFIED as unusability**: intentional two-dimensional scrollers and offscreen scrollable content are not dead controls. Need enabled multipage pagination/visible switch hitbox/reader-device checks; root measurements alone do not establish inaccessible controls. |
## Missing acceptance evidence, not demonstrated failures
- **M-SR:** authorised screen-reader operator is available according to owner; actual reader/version/browser/device/announcements/results are not yet supplied. All mandatory spoken/live/error workflows remain NOT VERIFIED. DOM/axe/agent review is not human screen-reader acceptance.
- **M-DEVICE:** native phone/tablet touch, drag/cancel, software keyboard, physical rotation and mobile AT remain NOT VERIFIED. Emulated taps/CSS viewport changes do not satisfy them.
- **M-REFLOW:** Chromium tab zoom is measured at100/200/400, but text-only browser preference, forced colours, other supported browsers and every enabled action at zoom remain incomplete.
- **M-CONTRAST:** inherited overlap/obscured/too-short contrast incompletes require the [triage](AXE_TRIAGE.md) and contextual human review. Zero previous reported violations is not compliance.
- **M-CV:** production fonts/photos and broader device acceptance remain open; the unexplained [CV Unsaved intermittent assertion](../p5-15-01/INTERMITTENT_FAILURES.md) is not fixed by a passing rerun.
## Scope and stop conditions
**A11Y-01 makes P5-15-02 NO-GO for P5-15-03 until the severe keyboard gap is repaired or explicitly reviewed with adequate evidence.** Continue only safe audit collection; no upload of real user data, emergency broad UI change or automatic next slice. Other findings remain separately owned in P5-15-04; production additionally stays NO-GO for F04, backup/restore, configuration/schema/secrets, rollback and deployed acceptance. No new authentication/tenant-integrity regression is demonstrated by these UI findings. P5-13 remains deferred/unqualified/Production-withheld (0/366, no human semantic reviews/UI); no Docker/provider/B07/deployment work.