Files
jobtrackingapp/docs/redesign/phase-5/p5-15/p5-15-02

P5-15-02 — Responsive and accessibility audit

Post-audit successor

The following NO-GO is the historical audit decision. The owner's later continuous mission independently repaired its two P1 defects and the drawer/source/report findings; see current parent reconciliation and linked P5-15-04 proof. Historical failures and all human/device obligations remain intact. The audit itself did not repair application code or supply postponed operator acceptance.

NO-GO for P5-15-03. Production remains NO-GO. The audit demonstrates P1 keyboard file-picker failure and materially clipped initial mobile CV preview content. Normal remediation requires independently authorized, bounded P5-15-04 checkpoints. No application/API/renderer/schema/provider/production configuration was changed; this checkpoint adds evidence and ordinary failing regression tests.

Source cf847e9b256d9aec733abf3f37c42852c9dd2421; development codex/ui-redesign-phase4, 2026-10-10. Production main remains 27657f31131cd95d42f0e1290853ec9c9b3959a4. No deployment, main merge/push, P5-15-03, P5-13 or B07 occurred.

Method and evidence

The binding sources are the Phase 5 plan, parent programme, 57 preservation groups, Phase 3 accessibility/responsive strategy, P4 acceptance, P5-01–14 implementation records and all three functional repair records. Tests use disposable owned SQLite/API records, synthetic English/Bokmål content and loopback-only requests. Component/DOM inspection is weaker evidence than a completed native workflow, and none substitutes for a human reader/device.

Fresh audit, validation, responsive ledger, actual zoom, mobile/native-PDF proof and repository checks retain command/results, native observations and source hashes. Raw full reports/logs/native PDFs stay in the ignored .artifacts/p5-15-02/ directory. Coverage preserves earlier harness corrections and focused runs without summing repeated cases into final totals.

Coverage matrix

PASS applies only to a named, executed assertion. PARTIAL means important acceptance remains outstanding, FAIL means a demonstrated defect, and NOT VERIFIED means no actual evidence. All whole-area rows remain below unconditional acceptance. Every area has NOT VERIFIED human screen-reader, physical touch/software-keyboard and mobile AT lanes; the owner reports a screen-reader operator available, but no actual announcements/results were supplied.

Area / PRES Automated and real browser keyboard/pointer evidence Responsive/reflow and EN/NB/theme evidence Whole-area status / remaining acceptance
Authentication E02–E06/E09 AUTH-01/non-default query, return-path security, login failure/expiry and route authorization regressions pass; sign-in naming/structure scanned Sign-in320 and actual zoom; EN/light and NB/dark; retained locale/theme variants PARTIAL: registration/provider/2FA spoken errors and production identity paths not human-qualified; login landmark/headings review
Shell E07/E08/E09 Commands/rail/account/utility historical paths pass; reduced-motion drawer entry/Escape/return FAIL Both sides767/768,899/900,1023/1024; portrait/landscape; actual zoom FAIL A11Y-02; full reader/device menu traversal and clipped-name triage open
Global commands E07/E08/W11/W12 Ctrl+K, selection/empty feedback, Escape/return and Add dialog PASS in corrected native journey; generated ID references retained 390 dialog, actual zoom/text spacing; EN/NB inherited states PARTIAL: exact spoken counts/loading/errors and every dialog focus path not verified
Jobs J01–J10 Native saved searches, owner denial, reload/apply/retry, table/Board parity and ordinary P2-D01 pass 320/1440, landscape and real200/400%; bounded table scroller PARTIAL: enabled multipage footer at400%, all row/error speech and native device operation open
Board J07 Retained pointer/keyboard movement and query tests pass; named columns/card controls scanned 390/1280, real zoom; intentional horizontal Board scroller PARTIAL: native touch drag/cancel, full-result scaling and reader traversal remain open
Dashboard S01/S02 Native metric definitions/retry/preference-view tests pass; exact values/statuses inspected 768/1440/844landscape; real zoom, themes/locales PARTIAL: human nonvisual summary, contrast/incomplete checks; historical generic preference500 not closed
Analytics S01 AUTH-01/query/reports/navigation pass; explicit target-size finds standalone status links below minimum 390/1024, landscape/zoom, EN/NB exact-value alternatives retained FAIL A11Y-04: contextual exception/target repair and nonvisual chart/table review required; no calculations changed
Job workspace W01–W12 Native deep-link/history/back/frozen-package/notes/tasks and manual-activation tab tests pass; document picker keyboard FAIL 320Timeline,768Overview,1024Documents, real zoom FAIL A11Y-01/W08; full dialog/document speech and physical interaction open; followMode metadata/UI deferral retained
Career Profile C01–C05 Source/override isolation regression remains green; native repeated-entry region/name scans 390/1440, zoom/spacing, EN/NB and themes PARTIAL: avatar contrast exception/heading/nonvisual form/error review; all import device paths not qualified
CV Builder C06–C12 Native keyboard select/reorder/persist/preview entry-scroll-exit pass; source link404 and initial mobile preview FAIL 390/768/1440,899/900 transitions, emulated taps/landscape; actual zoom FAIL A11Y-03/A11Y-11. Finite desktop fidelity passes; initially hidden visible-page layout does not. Human status/save/conflict and physical workflows remain open
Documents W08/J10 Native owned attachments/package APIs remain green; six Enter/Space chooser failures versus three pointer successes 320/1024/768 and zoom; long non-ASCII title FAIL A11Y-01; no real files imported/uploaded by picker probe, no inaccessible control relabeled as passing
Settings S03–S05/J10 Rules draft/save/validation/error/retry/discard/account regressions pass; import/CSV keyboard FAIL 320/1440, landscape/zoom; English/Bokmål,light/dark retained FAIL A11Y-01/J10; tab/panel speech/associations, switch visible hitbox and mobile keyboard need review
Administration A01–A03 Native owned admin fixture scans and retained server role/tenant denial pass 390/768/1280, actual zoom/spacing; bounded table scroll PARTIAL: full destructive/admin reader journeys and deployed sensitive-output qualification open

Responsive and keyboard findings

Responsive measurements cover actual breakpoints. Current shell drawer is below1024, unlike historical Phase3 prose below768; compact CV modes are below900, while grid/sticky change at1024. Narrow samples320/390, tablet768/1024, desktop1280/1440 and boundary widths767/768/899/900/1023/1024 are distributed across routes, not a full cross-product. Landscape844×390/text-spacing is tested separately.

Actual Chromium151.0.7922.34 tab zoom100/200/400 uses the same1280×900 outer window, inner widths1264/632/316, DPR1/2/4 and pinch scale1. 102 zoom/spacing geometry records and the native viewport samples report zero outer-page overflow. Table/Board/document and scrollable-tab content is classified separately. Clipping candidates still require enabled-action/device verification; geometry collection success is not usability acceptance. Parent text-spacing does not change renderer iframe geometry.

Keyboard command/dialog/manual Job-tab activation, CV section selection/reorder persistence and desktop preview entry/end-scroll/exit pass. Upload/import cannot be operated by Enter/Space. Reduced-motion mobile drawer retains hidden background focus, ignores immediate Escape, then closes after Tab+Escape with incorrect return target. This is recoverable, not a proven permanent trap. Emulated CV mode/orientation/readback succeeds before that drawer assertion fails; actual mobile preview correctness is separately unsafe.

Axe results and manual triage

Authoritative inherited R-03 execution: 267 scans, zero reported violations, 2,041 incomplete node occurrences. Baseline triage classifies1,769contrast/209prohibited ARIA/41hidden-focus/18invalid-reference/4table-cell incompletes. The approximate2,040 count was not authoritative. Repeated nodes/states are not distinct defects.

Fresh full-run retained-rule output: 267 scans, 0 violation node occurrences, 2038 incomplete node occurrences. Supplemental all-enabled-rules output: 45 scans, 47 violation node occurrences, 374 incomplete node occurrences. Different rule sets remain separate; target-size is explicitly enabled, and installed AxeBuilder.options replaces earlier withTags options. Per-rule tags distinguish WCAG failures from best-practice headings/landmarks/label-role warnings. Exact fresh counts/dispositions and JSON retain representative targets/messages rather than declaring a global compliance result.

Contrast overlap/obscured/too-short nodes need human rendered-pair review. Invalid dialog references need settled computed/spoken-name review; prohibited ARIA on generic labels needs meaning/state review; hidden-focus requires actual keyboard/reader traversal; table cells require populated/empty associations. Confirmed native picker/focus faults are more serious than their tool warnings. Avatar initials may be incidental/redundant; iframe main is cross-document, not duplicate outer Preview-region naming; clipped drawer child names are not four proven unnamed buttons.

Defects and preservation

Defect register records exact reproduction, criterion, severity, owner and independently bounded04 repair. P1: A11Y-01 keyboard file-picker and A11Y-11 initial mobile preview content clipping. P2: A11Y-02 drawer focus/Escape, A11Y-03 source action404, A11Y-04 Analytics targets. Heading/contrast/landmark/name/reflow candidates remain explicit review gaps rather than manufactured functional failures. No new account/tenant/source/revision corruption is demonstrated; unsupported AI remains Production-withheld.

The 57-group matrix retains every historical column. Before02:56PARTIAL/0FAIL/1DEFERRED. After02: 0PASS /50PARTIAL /6FAIL /1DEFERRED /0BLOCKED /0NOT VERIFIED =57. E07,J10,W08,C06,C07,S01 FAIL only their demonstrated boundaries; C11 remains deferred. Missing human/device evidence keeps entire otherwise functional groups PARTIAL, without treating every incomplete as failure.

Fresh regression results

Gate Fresh result / count change
Backend / revision / focused AI 1033pass /5of5 /108pass; subsets not added to total; no backend additions
Frontend 490pass,82suites,0fail; no unit-test additions
Main browser snapshot 139pass /4fail /0skipped,143unique cases:134 inherited +9 audit cases
Supplemental mobile native/PDF diagnostic 0pass /1fail, one newly added case after main discovery; union 139pass /5fail =144unique cases. This is not represented as one144-case full execution
Separate diagnostics / real HTTP 2pass /2pass; not part of ordinary144
Sidecar 49pass
Standard renderer corpus 16of16,36preview=36PDF pages, unchanged tolerances; finite fixtures do not cover the failed hidden mobile pane
Settings native exports 8of8,24=24pages, unchanged tolerances
Rate-limit / ingress / PDF admission / configuration 9 / 6 / 1 / 3 passing; development fixtures do not prove production ingress/configuration
Static/build/hygiene App+E2E TypeScript,lint,frontend production/API Release builds,secrets,whitespace,local-document checks pass; commands/hashes retained

All134 inherited browser cases remain passing, including saved-search/Rules/AUTH-01 repairs and ordinary P2-D01. Four ordinary audit failures remain genuine and unskipped; supplemental mobile adds a fifth failure. Earlier incorrect ArrowRight auto-selection expectation was corrected to existing manual activation and is not an unresolved product defect. No retries, expected failures or quarantine conceal issues. The unexplained historical CV Unsaved intermittent observation stays OPEN despite passing current cases.

The mobile diagnostic measured physical width793.6875 in the hidden measurement iframe, but visible-page measured width/flow0 after showing Preview. Its dataset page count is non-finite despite ready=true. The displayed1 preview page and 1 native PDF page match for this fixture; materially collapsed/clipped content does not. PDF remains authoritative and unchanged. The visible-page lifecycle measures getBoundingClientRect under display:none and retains that flow after a later pane switch; desktop-first/direct renderer tests cannot qualify that path. No geometry repair is hidden in this audit.

Human evidence, screenshots and next actions

Manual packet supplies M01–M13 with actual reader/browser/device/build identifiers, expected versus observed speech, focus/error/status/reorder/zoom/software-keyboard steps and per-variant results. An authorized operator is available; actual results have not arrived. NOT VERIFIED: screen-reader speech, native touch/drag/software keyboard, mobile AT, human contrast/forced-colors, text-only preferences and full enabled-action400% acceptance. Zero axe violations on a subset cannot close them.

On2026-10-10 the owner requested returning to screen-reader testing later. It is explicitly NOT COMPLETE / NOT VERIFIED, with the operator session postponed and the full acceptance obligation retained. Resume via the manual packet; this scheduling decision changes neither PRES totals nor the P5-15-02/production NO-GO decisions.

Representative screenshots are indexed with route/viewport/locale/theme/state and hashes in fresh audit; the mobile native comparison has its own proof. They cover the13areas, light/dark,English/Bokmål, narrow/tablet/desktop, interaction failures and actual zoom. Automated screenshot review is not independent human acceptance. Production font/photo qualification remains separate and open.

The two400% Playwright raster captures contain only the top-left header crop; they do not prove full-window content/focus visibility. Actual tab-zoom assertions and geometry remain separately recorded. Full visual zoom/task acceptance stays NOT VERIFIED.

Completed units were individually pushed: 4faeb96 baseline/operator packet, b90cae9 coverage/native proof, 4ccbe2d findings/reflow, 6fb440a preservation reconciliation, and 84e3bb5 mobile diagnostic/proof. Final evidence/docs receive their own immediate push; exact final SHA and clean-tree/remote equality are checked after creation rather than inventing a self-referential commit hash.

Before progression, independently repair and verify bothP1 boundaries and disposition the other confirmed defects, then collect actual operator/device evidence. No automatic04 or03 implementation is authorized here. F04/current backup+tested restore/configuration-schema-secrets/tested rollback/deployed health remain production release blockers. P5-13 stays deferred/unqualified/Production-withheld0of366calls,0human semantic reviews,UIunimplemented; followMode, Board scaling/native touch and Dashboard preference500 debt remain tracked. Stop after02; do not declare Phase5 complete.