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

33 KiB
Raw Blame History

P5-15-02 — Human, assistive-technology and physical-device acceptance

This is an executable operator packet for the responsive/accessibility audit. All human, screen-reader and physical-device results in this packet are NOT VERIFIED. No operator, spoken transcript, real-device interaction or manual approval is invented. The checkpoint's separate automated evidence may verify particular browser interactions; it cannot fill the human/device result fields below. Production remains NO-GO. P5-13 remains deferred, unqualified and Production-withheld; this packet authorizes neither provider qualification nor its review UI.

Owner scheduling decision — 2026-10-10

The owner requested returning to screen-reader testing later and logging it as not complete. Screen-reader acceptance: NOT COMPLETE / NOT VERIFIED; operator session postponed. An operator is available, but no actual spoken workflow results have been supplied. This postpones execution; it does not waive acceptance or change the audit/production NO-GO decisions. Other human/device checks retain their existing statuses.

Resume with M01–M03 and the CV/Rules workflows, then complete the remaining applicable steps. Record the actual build, screen-reader/browser versions, device, workflow ID, expected versus observed speech, PASS/FAIL and reproduction evidence using the form below. The owner and authorized operator coordinate the later session; no date or automatic follow-up is scheduled here.

This packet retains the thirteen M01–M13 areas from the P5-15 planning script, makes the current controls/routes explicit, and adds repeatable result forms. Binding sources are Phase 3 accessibility, responsive strategy, P4-06 acceptance and evidence limits, the 57 original groups and current preservation matrix, P5-14 responsive evidence, and R-03 functional reconciliation. Historical P4 package expected failures are historical: P2-D01 is now an ordinary passing case. No original requirement is rewritten by this manual packet.

Evidence lanes and prerequisites

Use only an authorized disposable local/sandbox build and synthetic fixtures: accounts A/B, admin/non-admin, available/locked capabilities, empty/populated Jobs, long EN/NB titles, custom statuses, persisted saved searches, Rules drafts, source-backed/overridden/hidden/CV-only entries, a short CV, a multipage CV, attachments and an existing immutable submitted package. Obtain the run SHA from the actual build, not a guessed checkpoint. Do not publish personal data, send provider mail, make billing changes or mutate production.

Lane Required operator/equipment Evidence that can close this lane Initial result
H-K Human keyboard operator; supported desktop browser Actual task completion, focus/scroll observations and dated recording NOT VERIFIED
H-SR Human using installed NVDA or Narrator; record exact OS/browser/AT versions and browse/focus mode Exact spoken names/states/errors, reading order and successful task traversal NOT VERIFIED
H-Z Human using actual browser zoom and text spacing, at recorded outer-window size Full task completion at 200%/400%, visible controls/focus and measured viewport NOT VERIFIED
H-C Human visual/contrast review, actual forced-colors and reduced-motion settings Settled rendered ratios, non-color meanings, focus and contextual incomplete dispositions NOT VERIFIED
H-T Physical phone/tablet, actual browser, real touch and software keyboard Device video/observations of keyboard occlusion, orientation, touch and fallback actions NOT VERIFIED
H-MSR Physical mobile device with VoiceOver or TalkBack operated by a human Exact spoken/gesture observations and successful primary tasks NOT VERIFIED
A Automated browser/keyboard/pointer/geometry/axe or actual browser-engine zoom Only its precise assertions and retained raw evidence Reported separately; never entered as a human result

Actual Chromium browser-engine zoom can be tested automatically using a browser zoom facility. That is stronger evidence than merely shrinking a Playwright viewport, but remains automated, not human task/assistive-technology acceptance, and does not qualify other browsers/devices. Record innerWidth, innerHeight, outer dimensions, device-pixel ratio, zoom level and visual viewport scale for each actual zoom run. Do not retroactively rewrite earlier records that correctly left their unexecuted zoom checks open.

Unavailable operators/devices stay NOT VERIFIED with an access dependency and owner. A code/AX-tree review is not a spoken screen-reader test. An emulated touchscreen does not qualify H-T or H-MSR. A screenshot cannot establish a software keyboard's occlusion, gesture reliability, focus return or status speech.

Coverage dimensions and acceptance targets

Run EN and Bokmål in light and dark. Keep a row for every executed variant; a representative subset is not the full cross-product. Start with 1440×900 desktop, 768×1024 portrait tablet, 1024×768 landscape tablet, 390×844 phone and 320 CSS-pixel reflow. Add 430, 1280 and 1920 widths when the layout changes; use 844×390 landscape for long dialogs and CV panes. Record actual usable height after browser chrome/keyboard.

Current application tokens are xs=0, sm=768, md=1024, lg=1266, xl=1440 in theme.ts. AppShell uses down("md"), so its present drawer boundary is 1024, not the historical Phase 3 shell description of 768. CV editor has compact Edit/Preview modes below 900 and grid/sticky changes at 1024. Test 767/768, 899/900 and 1023/1024 independently; between 900 and 1023 both CV panes may stack. Resizing must preserve resource identity, dirty drafts, save ownership and focused-pane accessibility.

Apply the project's WCAG 2.2 AA acceptance target to the actual interaction, without claiming certification from this packet:

  • 2.5.8 Target Size (Minimum): 24×24 CSS pixels, or the criterion's spacing exception. Undersized targets satisfy spacing only when 24-pixel circles centered on them do not intersect another target or another such circle. Equivalent control, inline, user-agent-controlled and essential exceptions require a written, criterion-specific justification. 44×44 is the Phase 3 touch aim / 2.5.5 enhanced target, not the AA minimum. Measure the interactive hit area, not only the visible icon. Coarse-pointer usability remains a physical-device check.
  • 1.4.10 Reflow: ordinary content/actions must work without loss at 320 CSS-pixel width or 256 CSS-pixel height in the respective scrolling orientation. A necessary two-dimensional table/Board/document canvas can have an appropriate bounded scroll exception; labels, menus, filters, Save/Cancel and surrounding ordinary content do not inherit a blanket exception. Record why both dimensions are necessary. Do not hide overflow globally to manufacture a pass.
  • 1.4.4 / 1.4.12: actual 200% resize and increased text spacing must not lose content/function. Test line height 1.5× font size, paragraph spacing 2×, letter spacing 0.12× and word spacing 0.16×; remove the temporary user stylesheet afterwards. CV print geometry is independently protected; review application chrome separately from renderer-owned pages.
  • 2.4.7 / 2.4.11: keyboard focus is visible and not entirely obscured by authored sticky headers, footers or overlays. Also retain the project's stronger fully usable/focus-visible expectation. A software keyboard requires the separate real-device lane.
  • 2.1.1 / 2.1.2 / 2.5.7: complete tasks using keyboard and a non-drag single-pointer alternative where required; distinguish keyboard alternatives from physical drag qualification. Tab widgets need deliberate arrow/activation behavior; links and section selectors must not be given unrelated tab expectations.
  • 1.4.3 / 1.4.11: settled ordinary text ≥4.5:1, large text ≥3:1 and essential non-text controls/state ≥3:1 against adjacent colors; document any genuine exceptions. The Phase 3 focus contrast target is also ≥3:1. Color alone must not communicate status, inclusion, selected state, errors or differences.
  • 1.3.1 / 3.3.1 / 3.3.2 / 4.1.2 / 4.1.3: meaningful structure, names, labels/help/errors and perceivable status messages. Verify actual speech, not only attributes. The proposed error-summary/first-invalid-focus target must be checked against each current form; missing implementation is a gap to assess, not proof that original behavior existed.

These are project acceptance criteria and recording instructions, not a legal/conformance attestation. No new standards lookup or external inspection is claimed in this checkpoint.

Per-step operator record

Duplicate this record for every step × variant × lane. Never replace the observed field with expected text or an automated assertion.

Field Initial entry
Run ID / script.step / PRES / related finding NOT VERIFIED — enter before execution
Commit/build SHA / run date/time / operator and reviewer NOT VERIFIED — actual identifiers only
Route plus query/hash / fixture ID / account role NOT VERIFIED — synthetic owner labels only
OS/device model / physical or emulated input NOT VERIFIED
Browser version / AT name/version / browse or focus mode NOT VERIFIED
Theme / UI locale / document locale NOT VERIFIED
Outer window / CSS viewport / zoom / DPR / orientation / keyboard NOT VERIFIED
Exact action / expected outcome Copy the specific step and expectation below
Observed UI outcome / exact spoken words / focus before→after NOT VERIFIED — no observations supplied
Sanitized evidence path / screenshot/video/transcript / measured values NOT VERIFIED
Result / defect ID / owner / required retest NOT VERIFIED

Results may become PASS/FAIL only for the precisely executed step/lane. Preserve first failures and intermittent observations alongside retests. Do not close a human lane when its operator is absent. Never retain cookies/tokens, real CVs or unnecessary personal content in committed evidence.

M01 — Shell, account menus and route continuity

Routes/components: protected shell and /dashboard, /jobs, /analytics, /career, /settings; AppShell, App, LoginPage. PRES: E02–E09. Lanes: H-K/H-SR/H-Z/H-T. Observed/version/device/result: NOT VERIFIED.

  1. With SR running, open an owned loaded route; navigate landmarks/headings, use Skip to content, and hear one meaningful main plus route heading. Use expanded navigation and current-page state, then the collapsed rail. Expected: understandable route grouping and names, no duplicate active navigation or unreachable feature.
  2. Collapse desktop navigation, reload, narrow below 1024, open drawer with keyboard and traverse every item including the first/last. Close with Escape and reopen; rotate/resize while open. Expected: labels remain available, focused items sit below the header, modal isolation is deliberate, Escape returns to a visible trigger and no hidden control retains focus.
  3. Operate account, theme and language menus; hear current/checked values and disabled explanations, close and check trigger return. Include long synthetic admin build/version text in Bokmål. Expected: names remain meaningful after wrapping; language does not rely on icon/color alone. Record any untranslated badge name separately.
  4. Follow /analytics?months=6#report, authenticate in the approved synthetic flow and use refresh/Back/Forward. Expected: the supported six-month query survives; unknown fragments do not invent report state; no loop. Test account A→logout→B: previous private shell/query results must not reappear. Real provider consent remains a separately authorized lane.

M02 — Commands, notifications and operation destinations

Routes/components: global command dialog, notification popover, /operations; QuickCommandDialog, NotificationsPopover. PRES: E07/E08/E09/W11/W12. Lanes: H-K/H-SR/H-T/H-MSR. Observed/version/device/result: NOT VERIFIED.

  1. Open visible search and Ctrl/Cmd+K; hear dialog/search names. Type a Norwegian query; use arrows/Home/End/Enter, then Tab/Shift+Tab and Escape. Expected: grouped results, selected result and count are understandable; one activation; visible selection/focus; return to trigger; no composing-IME activation.
  2. Exercise populated, empty, loading and a locally forced failed-search response. Expected: loading/result count/error are announced at useful times, durable Retry is reachable, no repeated speech per keystroke or stale result from an earlier query. Inspect the exact generated dialog ID relationships, not just its visible title.
  3. Open notifications, read unread state/title/date, use Open/Mark read/Dismiss/View all. Expected: each action's purpose is spoken, Mark read does not complete the task, Dismiss does not delete a Job and /operations remains reachable. Test long list keyboard scroll/Escape, failure/retry and delayed result during account change without provider calls.

M03 — Jobs Table/cards, Board, saved searches and Trash

Routes/components: /jobs, /jobs?view=board, legacy /kanban, /trash; JobTable, KanbanBoard. PRES: J02/J05/J06/J07/W01. Lanes: H-K/H-SR/H-Z/H-T/H-MSR. Observed/version/device/result: NOT VERIFIED.

  1. Use populated table in both densities: read headers, sort state, checkboxes, role/company/status/dates and row actions. Sort/page/filter; selection must not open the row. At phone use equivalent cards with long/custom status labels. Expected: every original action is keyboard-reachable, exact status remains textual and information survives reflow.
  2. Create/apply a synthetic saved search, navigate away/reload and switch Table/Board. Force a local saved-search load failure and Retry. Expected: persistence/query result membership retained, failure distinct from zero records, no stack trace, current Jobs workspace remains usable. Do not claim scheduler delivery from this UI flow.
  3. Open a job and return using explicit Back and browser Back. Expected: meaningful prior query and visible originating row/card focus. Test loaded/empty/no-result/error states, invalid/busy actions and safe Trash restore; no hidden destructive action or false success.
  4. Board: hear all standard/custom/empty column names; use pick-up/drop/cancel and exact-status menu without pointer drag. Verify changed status/readback and moved-card focus. Then separately try actual touch/pointer drag and cancellation on authorized disposable data. Expected: alternatives succeed without mandatory dragging and targets remain reachable across horizontal column scroll. Large-result scaling and physical drag stay open if not executed.

M04 — Dashboard and Analytics exact values

Routes/components: /dashboard, /analytics?months=6; DashboardView, AnalyticsPage. PRES: S01/S02/J09. Lanes: H-K/H-SR/H-Z/H-T/H-MSR. Observed/version/device/result: NOT VERIFIED.

  1. Read populated, sparse, empty and custom-status fixtures. Open every chart's exact-values disclosure/table, use headings and table reading, and compare one representative status/trend/salary value with the supplied fixture. Expected: period/population and units are understandable without hover/color; a missing denominator is not a misleading zero.
  2. Select the actual supported Analytics period (6/12/24 months), refresh and use history; open supported Jobs drill-down. Expected: report caption/values/query agree and destination can represent its stated membership. No invented filter or metric is expected.
  3. Toggle each of the five existing owner-local Dashboard visibility flags, reload and switch A/B/A. Inspect independent report loading/error/Retry. Expected: preferences distinguish local visibility from server persistence, available sections survive one source failure, API failure is not empty-success. Record a reproduced preference-save 500 as a failure; do not assume historic debt closed.

M05 — Job sections, drafts, packages and attachment menus

Routes/components: /jobs/:id?section=documents, ?section=application&sub=letter, Timeline/Correspondence; ApplicationWorkspacePage. PRES: W01–W12/M01/M02. Lanes: H-K/H-SR/H-Z/H-T/H-MSR. Observed/version/device/result: NOT VERIFIED.

  1. Traverse Overview, Match, Application, Documents, Timeline, Notes & tasks and Interview. Use actual primary/secondary Tabs with arrows and explicit activation; visit CV/Letter/Answers/Submission and Activity/Correspondence. Directly refresh a deeper URL, Back/Forward and a legacy alias. Expected: selected/tab-panel relationships and route state agree; focused tab remains visible; direct-load panel has a meaningful name; all sections are reachable on phone.
  2. Read status/progress/next task; keyboard-scroll progress. Edit a long Letter/Answers draft, switch/resize and attempt leaving. Expected: draft/dirty confirmation retained; Stay/Cancel/Discard are distinct, errors actionable; no automatic backend save invented. followMode metadata survives but compose UI is deferred, not an expected implemented workflow.
  3. Reorder/check/complete a checklist using named alternatives; inspect Notes and calendar entry points without provider writes. Expected: task/reminder/calendar meaning remains distinct, moved-item focus/order understandable and busy/error state accurate.
  4. Upload/rename/change purpose/delete a disposable attachment using prompt/confirmation. Test Shift+Tab to Delete, nested modal isolation, Escape and trigger return. Read an existing frozen package after current CV/profile changes. Expected: submitted snapshot remains read-only/historically identifiable, content/filenames preserved; no new native preservation claim from a visual review. Native ZIP proof remains separate.

M06 — Implemented CV workflow, scope and preview

Routes/components: /career/builder, /career/builder/:id; CvBuilderEditor, CvCustomizeTab. PRES: C05–C10/C12. Lanes: H-K/H-SR/H-Z/H-T/H-MSR. Observed/version/device/result: NOT VERIFIED.

  1. Hear CV identity, editing-region name, studio Tabs and source/override/hidden states. Use section selector with keyboard and pointer; expected: chosen section expands/focuses correctly and current inclusion/order is understandable. Edit source-backed, customized and CV-only entries; reset to source where supported. Canonical Career Profile/sibling CV must not change from a CV-scoped edit.
  2. Add/remove a disposable entry/custom section; keyboard move earlier/later and inspect first/last disabled reasons. Expected: successful action has meaningful retained/returned focus, exclusion uses text/state instead of dimming, selected order matches preview/persistence. Physical drag/cancel is an additional independent lane.
  3. Hold a local save and switch Edit↔Preview; traverse 899/900 and 1023/1024, then landscape. Enter named preview; PageDown/Home/End/Ctrl+Home/End at middle and boundaries; Tab out and use Return to editing. Expected: pane visibility/scroll/focus preserved, no outer-scroll trap, return control reachable beneath header, unsaved changes intact. Between 900–1023 inspect stacked-pane access rather than assuming desktop split view.
  4. Read preview loading/error/Retry and last-good content; page count comes from settled rendering, not a stale completed announcement. Verify first/middle/last page and long-CV reading; at 320px automatic fit is an overview, not proof of legible text. Operate existing zoom/fit behavior only; do not invent unsupported zoom controls.
  5. Use Template/Customize/History and document overflow actions; hear selected template/value/reset scope and current historical version. Undo/Redo, failed-save retry and stale-version conflict must preserve the draft and normal save owner. Expected: error/conflict/download local copy/reload choices are distinguishable from reset-to-source/history restore. Retain the separately recorded intermittent CV Unsaved assertion; a manual pass does not diagnose it.
  6. Export a synthetic PDF, read selectable non-ASCII text and compare representative page/order/settings with preview. Expected: existing 16-fixture and eight-settings numerical gates remain separate; no renderer geometry change for app reflow. Production font/photo/manual printing stay open absent deployed evidence. Do not invoke deferred P5-13 generation/review.

M07 — Settings, Rules and shared form failure handling

Routes/components: /settings, /companies?edit=:id; SettingsView, RulesSettingsCard. PRES: S03/S05/E08/J08. Lanes: H-K/H-SR/H-Z/H-T/H-MSR. Observed/version/device/result: NOT VERIFIED.

  1. Desktop settings Tabs: arrows/activation, selected state, content name and predictable next Tab. Phone section Select: name/value, selection and content reading. Expected: relationship and order understandable in the rendered accessibility tree; current plain TabPanel Box and unnamed panel linkage require inspection, not presumed compliance.
  2. Rules: edit all six numeric fields, switch sections repeatedly and return; enter empty/out-of-range value, Save, hear error associated with its field. Failed local PUT→retry, explicit Discard and successful Save→reload must preserve expected baseline/draft states. Expected: switching does not discard; dirty status not color-only; failed Save not announced successful; validation readable/correctable. Any absent error-summary/first-invalid-focus is recorded against the Phase 3 target.
  3. Settings notification/theme/language actions: inspect actual persistence outcome and failure/retry while draft remains usable. A locally applied language change is not proof the preference PUT succeeded. Perform separate reliability probes only if authorized; historic SQLite contention is not closed by sequential success.
  4. Company edit modal: fail a disposable save, read visible/spoken error, retry and cancel. Expected: feedback available in active modal, draft retained, one focus trap, name/help/errors remain visible above software keyboard. Record inaccessible outside-modal feedback separately; no broad repair is authorized here.

M08 — Retained Career, mail, account and administrator destinations

Routes/components: /career?section=profile, /career?section=evidence, /career?section=import, /profile, /correspondence, /settings/connected-accounts, /reminders, /operations, /offers, /admin/users, /admin/audit, /admin/system; CareerProfilePage, ProfilePage, CorrespondenceInboxPage. PRES: C01–C05/M01–M06/E04–E06/J09/A01–A03. Lanes: H-K/H-SR/H-Z/H-T. Observed/version/device/result: NOT VERIFIED.

  1. Reach each intended destination through shell/commands/linked context. For Career, use actual ?section= values, canonical fields/add/remove/save, validation and history; read import/evidence controls without unapproved extraction/provider calls. Expected: true route/owner remains, source scope explicit and new shell does not make old actions unreachable. /career/profile used by existing links is not assumed a separate top-level route; record actual redirect/compatibility behavior.
  2. Inbox list/filter/detail, owned draft and local manual correspondence: read labels, long content, attachment actions and dirty state. Expected: clear log-versus-send distinction, no send from navigation, list/detail transition and return usable on phone. followMode compose entry remains deferred.
  3. Profile/security sessions/2FA controls, linked accounts and locked capabilities: hear explanations and reversible control names without changing providers. Admin/non-admin fixture: denial safe, aggregate/table alternatives readable and dangerous/last-admin actions clearly separated. No real consent, delivery, authenticator or production admin proof is claimed.

M09 — Screen-reader names, dialogs, validation and live state

Routes/components: M01–M08 loaded controls, shared toast/prompt/confirmation, menus and dialogs. PRES: all applicable UI groups; E08/C06–C10/W08 priorities. Lanes: H-SR/H-MSR. Observed/version/device/result: NOT VERIFIED.

  1. Repeat primary M01–M08 tasks with actual SR browse/focus modes. Record exact spoken names, descriptions, selected/current/disabled/included states, landmark/headings and reading order. Expected: every actionable icon/control has a purpose; tooltip wrapper plus button is not misleadingly read twice; hidden/background nodes not reachable.
  2. Required text/number/date/autocomplete/select/rich-text fields: label, required state/help, invalid value, submit, error and correction. Expected: field/error association reliable, input retained, logical focus and useful failure explanation. Record actual speech/timing rather than inferring it from aria-live.
  3. Nested prompt/confirmation/add-content dialog/row menu: initial focus, Tab/Shift+Tab, Escape/Cancel policy, background isolation, error and trigger return. Expected: one active modal trap, no hidden exit content receiving focus, no dropped focus after removal or viewport change.
  4. Hold/fail/retry loading, saving and rendering. Expected: meaningful busy→completion/error updates once at useful time without focus theft or repeated keystroke chatter; after failure no false saved/page-ready announcement. A visible toast outside modal requires explicit spoken/recovery testing.

M10 — Actual browser zoom, reflow and text spacing

Routes/components: primary tasks M01–M08, especially shell/actions, forms/dialogs, Jobs filters/cards, charts/tables and CV panes. PRES: E07/E08/J05/J07/W01/C06–C10/S03. Lanes: H-Z/H-K/H-SR. Observed/version/device/result: NOT VERIFIED.

  1. At recorded desktop outer size, set browser zoom to actual 200%, then 400%; record browser UI level and measured CSS viewport/DPR. Complete navigation, search, form Save/Cancel/errors, Jobs/Board actions, report values and CV mode return at each. Expected: no ordinary content loss or inaccessible target, no focus obscured by sticky chrome. A viewport-only resize is recorded as a different automated check, not this human result.
  2. Restore zoom; apply the declared text-spacing user stylesheet and repeat long NB headings, errors/helper text, buttons/menus, table/card metadata and CV chrome. Expected: no clipped text, overlap or loss of function; remove stylesheet and confirm normal state. Capture exact exceptions for genuinely two-dimensional content rather than declaring any overflow acceptable.
  3. At 320 CSS width/short landscape heights, keyboard traverse top→bottom with dialogs open and with preview focused. Expected: independent intended scroll, actions still reachable, no nested-scroll keyboard trap or global overflow hiding. Repeat one supported alternate browser; unavailable browser stays NOT VERIFIED.

M11 — Contextual contrast, forced colors and motion

Routes/components: all loaded primary surfaces plus the five retained axe incomplete families. PRES: E08 and mapped surface contracts. Lanes: H-C/H-K/H-SR. Observed/version/device/result: NOT VERIFIED.

  1. For every retained incomplete target, record file/case/state/theme/locale, raw rule/check detail, actual role/name/value and rendered context. Inspect color-contrast, aria-hidden-focus, aria-prohibited-attr, aria-valid-attr-value and th-has-data-cells separately. Expected: measured disposition or scoped finding; repeated node occurrences are not unique defect counts and zero violations do not pass incompletes.
  2. Measure settled active text, selected/disabled explanations, hover/tooltip/error and control/focus contrast against actual backgrounds, including transparency/overlays. Expected: project target ratios or justified criterion exception. Document white print-page ink separately from dark surrounding UI; no color inversion to manufacture app contrast.
  3. Enable actual OS/browser forced-colors, then reduced motion. Repeat menus/drawer/selection/inclusion/reorder/errors and preview return. Expected: focus/selected/error/status remain identifiable without color; no outcome relies on animation. Repeat normal finite transitions for hidden-focus issues; passing reduced-motion tests cannot certify all normal-motion timing.

M12 — Physical touch, software keyboard and orientation

Routes/components: primary M01–M08 tasks; long forms, prompts/add-content/dirty dialogs, Board and CV panes/reorder. PRES: E07/E08/J05/J07/W01/C01/C06–C10/S03. Lanes: H-T/H-MSR. Observed/version/device/result: NOT VERIFIED.

  1. On actual phone and tablet use touch to open drawer/search/notifications, filters/actions, Jobs cards/Board, report disclosures, workspace sections, Career forms and CV edit/preview/settings. Measure target hit regions, spacing and any exception. Expected: no hover requirement or inaccessible action, appropriate single-pointer alternatives, no accidental activation during scroll.
  2. Open actual software keyboard in long EN/NB search/text/date/rich-text fields near form bottom and inside dialogs. Show validation/server error and scroll to focused field/help/Save/Cancel; dismiss/reopen keyboard. Expected: field/action not hidden by keyboard/chrome, caret/draft retained, no jump to unrelated content. Record keyboard/browser/device and usable viewport/video.
  3. Rotate portrait↔landscape with dirty or held-save CV/Rules draft and a long modal. Expected: same owner/field/section/draft, visible return/controls and deliberate scroll. Try touch selection, real entry/section/Board drag/drop/cancel and keyboard/status-menu alternatives; qualification of alternatives does not imply native drag succeeded.
  4. With actual VoiceOver/TalkBack gestures repeat primary navigation, forms, menu/dialog, status errors and preview entry/exit. Expected: meaningful speech and focus/reading order, no inaccessible scroll canvas or lost edit mode. Absence of equipment/operator leaves the lane NOT VERIFIED, never simulated acceptance.

M13 — Deferred AI return obligations; do not execute

Routes/components: retained builder AI entry affordances and future P5-13 review UI. PRES: C11 plus CV/source/revision boundaries. Lanes: eventual H-K/H-SR/H-T/H-MSR and separately approved configured-model qualification. Observed/version/device/result: NOT VERIFIED / DEFERRED.

P5-13 remains unqualified, Production-withheld, 0/366 required calls, zero human model reviews, semantic accuracy unmeasured and review UI unimplemented. Do not run Docker recovery, provider calls or fabricate AI screens for responsive acceptance. Existing deterministic grounding/stale-apply/Production no-write protections are separate automated evidence, not completion of this area.

After explicit return authorization and approved qualification/UI prerequisites, retain: Current/Proposed/Sources and exact CV scope, insert/delete meaning without color, short/long mobile diff, explicit Accept/Reject/Close/Regenerate, focus entry/return, unavailable/error/retry/stale state, no-write rejection and normal revision participation. The frozen qualification corpus/rubric/human reviewer obligations remain unchanged. No mandatory item is dropped because implemented scope can proceed separately.

Exit and escalation rules

Stop an unsafe operator action on demonstrated data loss, cross-account exposure or severe inaccessible critical operation; retain sanitized evidence and report a bounded finding. Ordinary missing manual coverage is NOT VERIFIED, not a guessed functional FAIL. Each issue needs exact reproduction, affected PRES, impact/severity, owner and separate scoped remediation/retest. This audit packet grants no broad product changes.

A manual area earns acceptance only for its actual completed variants/lanes with retained operator evidence and no unresolved required behavior. Do not change the 57-group matrix to PASS from this script or from one unrelated browser result. Complete screen-reader acceptance, physical touch/software keyboard, full cross-screen zoom/reflow/contrast and deployed font/photo obligations stay open until their own evidence exists. Production ingress/backup/restore/configuration/rollback gates remain separate NO-GO dependencies. Full original Phase 5 scope cannot receive unconditional GO while P5-13 or other mandatory acceptance remains incomplete.