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

40 KiB
Raw Blame History

P5-15 route and visible-action acceptance plan

Planning checkpoint: 46a0c0c6d23464869f50c0d88552963c29cfdacf, branch codex/ui-redesign-phase4, 2026-10-09. This is source characterization and a future audit plan. No fresh route/browser/provider/manual checks have run; no acceptance or route-removal decision is made. The 57-group matrix retains every original sub-workflow.

Original versus current census

The original audited route inventory at Phase 1 contains 31 concrete patterns: 29 pages and two redirect aliases. The Phase 3 route/query plan, Phase 5 navigation migration and release-candidate census establish the compatibility chain.

Current App routing declares 35 routes across its outer data-router objects and inner Route path elements. Exclude outer /*, inner * and the duplicate inner / redirect infrastructure: 32 unique concrete patterns = all 31 originals + /analytics. Current disposition is 29 pages and three redirects: /analytics adds a page while original /kanban becomes a redirect to the integrated Board. The public outer LandingPage owns /; its private inner Dashboard redirect is not a second page. RouteErrorPage is an error boundary, not another pattern.

P5-01 moved navigation entries while retaining original routes; P5-04b introduced the integrated /jobs?view=board and legacy Board redirect; P5-07 added meaningful personal /analytics. P5-08a/b and P5-09–14 enhance existing workspace/editor paths without adding concrete route patterns. Static presence proves declarations only; direct URL, refresh, Back/Forward, real permissions, dirty Cancel/Discard, safe errors and deployed health remain to be audited.

Exactly 32 current concrete patterns

Every row is PARTIAL for route acceptance: current source plus linked historical regression exists, but fresh-current, provider or required manual checks remain NOT VERIFIED. No missing test is labelled a functional FAIL. Route columns characterize the actual current behavior rather than narrowing the original capability.

Concrete pattern Original/current disposition Current actual owner Query / action / compatibility semantics and limit PRES scope Historical regression anchors / remaining acceptance limit Planning status
/ Preserved public page LandingPage Public product/plans. Authenticated mount replaces to /dashboard; protected-route state is forwarded by login action. Query/capture/landing continuity is a future audit. E01/E02/E07/E08 landing/auth redirect, landing; provider/mobile limits in E01 PARTIAL
/login Preserved public page LoginPage Local/provider/challenge/configured registration controls; validates local state.from then replaces after sign-in. SessionChanged notice and reset-email prefill remain. E02–E05/E09 login, smoke; live auth/provider limits E02–E04 PARTIAL
/register Preserved public page LoginPage initialMode=register, subject to configuration; uses the same safe post-auth target and provider/challenge boundaries. E02/E03 login, local auth; configured/provider limits E02 PARTIAL
/forgot-password Preserved public page ForgotPasswordPage email prefill; explicit reset request. Runtime mail/configuration/browser completion remains unverified. E02 local auth; complete browser/mail journey remains E02 gap PARTIAL
/reset-password Preserved public page ResetPasswordPage email/token query; explicit password submit. Invalid/expired/already-used token and sensitive URL handling need acceptance. E02 local auth; complete token submit/mail journey remains E02 gap PARTIAL
/verify-email Preserved public page VerifyEmailPage userId/email/token query; verification outcomes remain under identity owner, not shell page placement. E02 verification, local auth; actual mail E02 PARTIAL
/confirm-email-change Preserved public page VerifyEmailPage emailChange Same page in email-change mode; existing userId/email/token confirmation, independent from Career data. E06 verification, local auth; account mutation gaps E06 PARTIAL
/microsoft-legacy-relink Preserved public page MicrosoftLegacyRelinkPage userId/tenantId/objectId/token recovery metadata; actual provider popups/consent/revoke and origin/state unverified. E03 relink, token validator; real consent E03 PARTIAL
/cv/:slug Preserved public page PublicCvPage Published slug owner and anonymous HTML/PDF. No numeric private-editor redirect; publication/revocation and PDF capacity remain protected. C05/C12 public CV, PublicCvController, smoke; deployed fonts/publication lifecycle C05/C12 PARTIAL
/dashboard Enhanced original page — P5-06 DashboardView Home reports/onboarding/five owner-local flags and contextual links. Snapshot/trend retries remain separate; period is component state here. S01/S02/E07–E09 P5-06 evidence, daily loop; metric/preference limits S01/S02 PARTIAL
/analytics Added enhanced page — P5-07 AnalyticsPage → DashboardView(mode=analytics) Authenticated personal reports use the same existing facts/cohorts. months=6/12/24 is URL state; defaults 12; independent of Dashboard visibility flags. S01/S02/E07–E09/J05/J09 P5-07 evidence; no new server facts/populations or deployed acceptance S01 PARTIAL
/discover Preserved page; Jobs secondary entry JobDiscoveryPage NAV discovery, saved searches/alerts and detail controls unchanged; no new source/provider scope from relocation. J01/J02 discovery, smoke; live NAV J01/J02 PARTIAL
/jobs Enhanced original page — P5-03/P5-04b JobTable(mode=jobs) Table default; view=board mounts KanbanBoard within same owner. Shared complete logical query; page/columns/density/selection lifetime remains explicit. J03–J07/W01/S03 P5-03, P5-04b, native Board/query integration, integration component; finite-query/scaling limits J03–J07 PARTIAL
/jobs/:id Enhanced original page — P5-08a/b ApplicationWorkspacePage Seven URL sections, Application/Timeline sub-navigation, existing domain owners/dirty guards. Legacy section strings and numeric navigation-helper tab arguments retained; numeric values are not URL section aliases. followMode is metadata only. W01–W12/M01/M02/E07–E09 P5-08b, route contracts, preservation browser; deferred followMode/manual/provider limits W01–W12 PARTIAL
/reminders Preserved page; Jobs secondary entry RemindersView Follow-ups retains grouped reasons and workflow actions; existing calendar/rule/date contracts, no newly scheduled interview semantics. W10/W11 daily loop, calendar; F21/provider W11 PARTIAL
/operations Preserved page; utility entry OperationsPage Activity/processing list/progress/result/retry/cancel. Bell View all points here; no /notifications page exists. W12/S02 operations, OperationsController; worker/disconnect W12 PARTIAL
/kanban Legacy original pattern; redirect after P5-04b LegacyBoardRedirect Navigate replace to /jobs with view=board. Clones search and overwrites only view; explicitly preserves hash and location.state. No removal date approved. J07/W01/E07 P5-04b, native Board/query integration, App redirect; physical touch/scaling J07 PARTIAL
/companies Preserved page; Jobs secondary entry CompaniesTable edit=id opens company editor, including command result destination; contacts/pipeline/history remain with existing form owner. J08 companies, command; modal-save accessibility J08 PARTIAL
/offers Preserved page; Jobs secondary entry OfferComparisonPage Recorded compensation/notes/deadline/source comparison; Dashboard/Analytics offer links continue; no inferred salary calculator. J09/S01 offers, P5-07 links; full mobile/currency review J09 PARTIAL
/correspondence Preserved primary page CorrespondenceInboxPage view=review selects GmailReviewPage; other URL view values select inbox. Compose/drafts remain existing in-page state/actions, not new routes. M01–M06 inbox, draft persistence; live mail/reconnect M01–M06 PARTIAL
/correspondence/review Preserved legacy redirect Navigate review alias Hard-coded replace to /correspondence?view=review. Does not pass incoming other query, hash or state. Record this existing limit; audit required metadata before parity claims. M05 inbox, review; actual provider/create chain M05 PARTIAL
/profile Preserved page; Settings/account entry ProfilePage Account identity/avatar/password/email and local security/session cards retained; same page, distinct from canonical Career Profile. E04–E06 profile, 2FA; complete account/device journeys E04–E06 PARTIAL
/applications/:id Preserved legacy redirect LegacyApplicationRedirect Replace to /jobs/:id + location.search and state=location.state. Hash is not passed by the current adapter; no alias removal approved. W01/E07 P5-08b, workspace, App redirect; legacy sections/followMode W01 PARTIAL
/career Preserved page; Career Profile entry CareerWorkspacePage → CareerProfilePage section=profile/evidence/import; default overview. Structured source/import/evidence/history owners remain; /career/profile is not an App route. C01–C04 Career workspace, profile; long-tail/import/provider C01–C04 PARTIAL
/career/builder Preserved page; CVs entry CvBuilderPage CV library create/copy/delete/templates/manage/publish/share/export. Creates/open navigate to numeric owned editor, public slug remains distinct. C05 builder library, P5-12; full library/publication chain C05 PARTIAL
/career/builder/:id Enhanced original editor — P5-09–12/P5-14 CvBuilderEditor One save/revision/history/preview owner, Content-first local studio tabs and responsive panes. Production CV generation/Apply unavailable guard; P5-13 review deferred. C06–C12/W05/E07–E09 editor, P5-12, AI readiness; P5-13/P5-14/manual/rendering limits C06–C12 PARTIAL
/admin/audit Preserved authorized admin page AdminAuditPage Separate audit/history/supported undo/restore; API role checks remain authoritative. Shell visibility is not authorization proof. A02 audit, authorization; native undo A02 PARTIAL
/admin/users Preserved authorized admin page AdminUsersPage Separate users/role/reset/delete/last-admin/self guards; no aggregate Admin page invented. A01 users, UsersController; revoke/reset A01 PARTIAL
/admin/system Preserved authorized admin page AdminSystemPage Separate diagnostics/configuration/mail/AI/probe/benchmark/maintenance; visible admin metadata retained, production actions unverified. A03 system, maintenance; deployed probes A03 PARTIAL
/trash Enhanced original page — P5-03 JobTable(mode=trash) Deleted-only list and restore/edit; Table-specific utility, no Board view or permanent-delete substitution. J06/S03 P5-03, table density; finite restore/bulk/manual J06 PARTIAL
/settings Preserved page; Account entry SettingsView Existing tabs/mobile selector/data/rules/notifications/AI/privacy/backup/account lifecycle, Profile and Connections links; saves retain existing owners. S03–S05/J10/E08 Settings, native layout; concurrent saves/billing/restore S03–S05 PARTIAL
/settings/connected-accounts Preserved page; Settings secondary entry ConnectedAccountsPage Gmail/Graph/IMAP connection status/connect/disconnect distinct from sign-in identity; mail/calendar grants do not authorize new routing/send behavior. M06/E03 connections, native Settings; actual OAuth/mail/expiry M06 PARTIAL

Query state and alias behavior to audit

Contract / actual owner Current source behavior Required execution acceptance / owner / priority
Jobs filters and shared Board query — jobsQuery, JobTable q/status/companyId/location/needsFollowUp/readiness/includeDeleted/sortBy/sortDir are shared logical inputs. view=board is Board only in Jobs mode; other values use Table. Table page uses positive URL page and zero-based local index; Board does not reinterpret it as a population limit. Audit identical complete IDs, custom statuses, owner/deleted/derived filters, saved-view CRUD, unknown/invalid values and scale. Preserve nonavailable/error semantics and selected scope. Jobs/API owner; H.
Table↔Board view and list mutation — JobTable View link clones query, sets view, keeps hash and router state while clearing focusJobId; switching clears Table page selection. Filter/sort/page update clones other query and replaces history with state, but does not explicitly pass hash. Density is local presentation state, not account/saved-view/API data. Direct entry, refresh, Back/Forward, page two, zero matches, unknown safe query/hash and select→switch→return; characterize list update hash before promising fidelity. Jobs owner; H.
Legacy Board — App LegacyBoardRedirect /kanban clones incoming search, sets view=board, replaces history, explicitly retains hash/state. Query-supplied view=table is deliberately overwritten. Native direct/refresh/back and unknown query/hash/state with filtered all-result membership, no loops or mutation. Jobs/shell owner; H.
Legacy application — App LegacyApplicationRedirect /applications/:id replaces to /jobs/:id with the exact search string and router state. It does not pass hash. Every legacy section/sub/followMode, invalid/missing/foreign id, state return and hash limit; no implicit AI/send/capture/write. Workspace owner; H.
Review alias — App Navigate, inbox adapter /correspondence/review hard-codes replace to /correspondence?view=review; other incoming query/hash/state are not passed. Inbox reads view=review; drafts/compose use existing in-page state. Direct/refresh/back and required old metadata, reviewed job create/no-write navigation, dirty draft and send-uncertainty boundaries. Existing fidelity limit is not silently declared repaired. Mail owner; H.
Seven job sections — applicationWorkspace adapter, workspace navigation Canonical: overview/match/application/documents/timeline/tasks/interview. Legacy: analysis→match; cv/cover-letter→application; job-details→overview; checklist/notes→tasks; communication→timeline; portfolio→documents. Unknown section→overview. sub selects Application cv/letter/answers/submission or Timeline activity/correspondence. Old cv/letter/communication sections take priority over unrelated sub metadata. All canonical/legacy entries, disclosure reveal/focus, tab keyboard, unknown key no-write, Back/Forward/refresh, job missing/denied/retry and unsaved letter/answers Cancel/Discard. Workspace/accessibility owner; H.
Numeric navigation-helper tab arguments and follow-up metadata — jobWorkspaceRoute Helper tab arguments map 0→overview, 1→communication, 2→documents, 3→cv, 4→communication, 5→match, 6→analysis, 7→interview, 8→checklist, 9→timeline. These generate section strings, not numeric URL section aliases; the helper preserves optional followMode. Workspace section/sub change clones current query and retains location.state. No mode-specific UI consumer exists. Retain helper tab-to-section outputs and metadata through section/history/reload; honor recorded mail-phase deferral. Do not count metadata preservation as compose/follow-up UI acceptance. Workspace/mail owner; H.
Jobs return/focus — JobTable, workspace close Row entry records numeric jobListFocusId on originating history and sends state from + focusJobId. from is pathname/search only. Workspace close replaces to local from or /jobs and sends numeric focus; no mounted background Jobs assumption. Real loaded row/card/Board workflow entry, explicit Back/browser Back, safe from/unknown state and missing row, filter/page/focus recovery, dirty cancellation across all shell routes. Workspace/Jobs owner; H.
Capture — App Shell effect, captureUrl Private Shell resolves add/addtext, opens prefilled review, consumes only those keys with history replacement while keeping other search. That navigate call does not explicitly pass hash/state. Opening is not creation. Root public LandingPage authenticated redirect goes to /dashboard without explicitly forwarding search. Characterize root/private/unauthenticated extension/bookmarklet/PWA share, invalid URL, Cancel/reload/no replay/no duplicate write, safe metadata and optional post-create failure. Capture/identity owner; H.
Protected route/login continuity — App auth guard, LandingPage, LoginPage Shell denied entry replaces to public / with state.from pathname only, not search/hash. Landing forwards state to login. Login accepts a local slash path excluding // and backslashes, else Dashboard. Authenticated public Landing replaces straight to Dashboard. Deep links with Jobs filters/sections/capture after session expiry/login, safe malformed external targets, remember/challenge/provider paths and stale-account cancellation. Characterize loss limits; no complete deep-link continuity claim from path presence. Identity owner; H.
Career section — CareerProfilePage section=profile/evidence/import, default overview. Canonical source remains separate from account Profile and CV variant settings/history. Section direct/refresh/back and dirty import/edit/navigation, long-tail saves, raw/history restore and source/variant separation. Career owner; H.
Analytics period — DashboardView, AnalyticsPage months=6/12/24, invalid/default 12; setQuery clones unrelated query. Dashboard uses local period state and five owner-local flags; Analytics shows reports independently. Exact values/cohorts, Back/refresh/query preservation, independent snapshot/trend failures, no invented metrics and Dashboard flag isolation. Reports owner; M.
Company command/deep edit — CompaniesTable, QuickCommandDialog Company search result enters /companies?edit=id; positive edit key requests existing company form. Form is not relocated or auto-saved by route presence. Command/direct/refresh, missing/foreign id, retained draft and durable modal error; P4-02-D02 remains open. Companies/accessibility owner; H.
Token and provider URLs — reset, verification, relink Reset email/token; verify userId/email/token; Microsoft relink userId/tenantId/objectId/token. Backend OAuth callbacks/postMessage are separate from React page patterns. Expired/invalid/missing/used token and safe logs/titles/history, real sandbox popup origin/state/revoke, no identity leakage. Explicit provider approval at execution time. Identity/provider owner; H.
Numeric private CV and public slug — editor, public page Private variant id controls saved lens/history; public slug publication is independent. Current Production CV suggestion-service generation/Apply returns 503; old assistant affordances may still be visible. P5-13 review UI is absent. Missing/foreign/unpublished/revoked entry, dirty editor/library/Back, no source/sibling mutation, public/private PDF admission and honest unavailable AI. Preserve P5-13 exception; CV/AI owner; H.

Navigation entries and forbidden removal without replacement

Current App navigation arrays, AppShell menus/drawer and Jobs view owner supply the actual reachable entries. A future audit must demonstrate expanded desktop, collapsed rail menu and scrollable labelled mobile drawer plus successful heading focus and dirty Cancel preservation. A declaration or hidden menu is insufficient.

Original / required entry Current reachable replacement or retained entry Removal constraint / required acceptance
Dashboard Home primary /dashboard Retain reports/flags/onboarding/attention and exact-value links; no replacement by Analytics-only page.
Job applications Jobs primary /jobs; Table default Preserve filters/saved views/pagination/columns/density/mobile row actions and reviewed Add.
Kanban board separate primary Jobs Table/Board switch /jobs?view=board; legacy /kanban redirect retained Only old primary entry is consolidated; full query/status/mutation/keyboard parity remains protected. No alias removal date.
Discover jobs Jobs secondary /discover Remain reachable, labelled in narrow/collapsed shell; preserve saved-search/alerts.
Reminders Jobs secondary /reminders with count Preserve every reminder reason, count and workflow/calendar action; do not replace with only overdue cards.
Companies / Offers / Trash Jobs secondary /companies, /offers, /trash Every low-frequency entry stays reachable; Trash is deleted-only restore, never hard delete. Company edit query remains.
Correspondence Independent primary /correspondence; inbox/drafts/review Never hide global mail in Documents or confuse log with send. Retain review alias and uncertain-send safeguards.
Career workspace Career Profile /career Canonical facts/import/evidence remain distinct from account Profile and CV editing. No invented /career/profile route.
CV Builder CVs /career/builder and numeric editor Retain create/copy/delete/publication/export, all controls and one persistence owner; new review remains deferred.
Profile former duplicate primary Settings secondary /profile and account-menu profile Both accessible replacement entries exist; security/session/avatar/email/password forms remain under same owner.
Settings / Connections Settings primary, secondary Connections /settings/connected-accounts; existing Settings link Preserve all tabs/mobile selector/data/privacy/backup/account lifecycle and distinct provider grants.
Audit / Users / System Separate admin-only bottom navigation entries Server role checks remain mandatory; do not invent an aggregate /admin landing or drop an operational tool.
Language/theme/account Sign out Header/account controls reuse existing owners Remain reachable at narrow/collapsed widths and keyboard; UI locale is separate from CV document locale.
Quick search/Add Header search + Ctrl/Cmd+K; six static commands, job/company results; AddJobModal Retain exact destinations, failure Retry/stale-result disposal and no-create-on-open boundary.
Bell/activity Bell NotificationsPopover; View all→/operations; operation/result deep links Preserve read/dismiss/status/retry/cancel. No /notifications route or new notification producer inferred.
Admin version/commit Admin-only shell/account disclosure Same authorized information remains reachable without narrow-header overlap; public metadata scope not expanded.
Proposed Documents / Notifications / global AI / aggregate Admin No current standalone routes or dead placeholders Explicitly deferred/absent. Existing job Documents and contextual AI entries remain; absent new pages cannot justify removing their old owners.
Analytics Added meaningful /analytics primary in Insights Existing personal facts/cohorts only; no fabricated metric or new aggregate/admin analytics.

Visible control action audit required for P5-15

This is a source-level action map plus a future manual/native audit checklist, not a click-through result or complete control census. The larger feature inventory owns sub-actions. Audit role/data/state combinations on every relevant route and all currently visible controls; record named control, expected destination/request, actual result, error/empty/locked/loading/dirty state and focus. H identifies controls requiring behavioral proof beyond a screenshot.

Surface / actual owner Visible controls and source-defined actions Required audit / owner / priority
Shell, App callbacks Navigation parent/child/rail menu/mobile drawer, collapse, skip/main, search, Add on Jobs, bell, Settings/profile, theme/language, Sign out, admin badge disclosure Every entry in prior table; Escape/close/resize focus, active child/parent, dirty navigation Cancel/Discard and account disposal. Shell/accessibility/identity; H.
Command palette Six commands: Dashboard, Jobs, Reminders, Companies, Settings, Add review; job→numeric workspace, company→edit query; keyboard selection, Retry, Escape No mutation on palette/search/route mount, late-result rejection, IME/Enter/arrow behavior, focus after opening/cancel and manual spoken result/error states. P5-02-D01/P5-04b-R01 remain open. Shell; H.
Bell, Operations Notification open/read/dismiss/Retry, View all→Operations; operation result link/retry/cancel Correct owner/deep-link result, no duplicated start, missing/error/long reconnect, announcements/focus; operation utility is not a new notifications page. Operations/shell; H.
Dashboard/report owner Five checkbox flags, month buttons, snapshot/trends Retry, exact-value details, Jobs/Offers and workflow attention links, onboarding actions Audit owner-local flags vs language-save endpoint, exact existing denominators, loading/error independent states, link destinations and all-hidden fallback. P5-06-O01 observed language-preference 500 during reads remains unresolved. Reports/identity; H.
Jobs/Trash, saved views Filters/sort/page/size/columns/density/view switch, row/card actions, selected bulk status/soft-delete/restore, edit, Settings data link Correct selected scope/partial failure, no row open from nested action, dirty/Back/focus, all-result parity, native persisted restore and readable long EN/NB. Jobs/API; H.
Board Card/workflow entry, pointer/keyboard move, exact-status menu, collapse/group states Keyboard pickup/drop/cancel, failed move retained, custom-stage group, physical touch/native drag and scale; preserve API raw status identity. Jobs; H.
Workspace Back/edit, seven sections, Application CV/letter/answers/submission, Timeline activity/correspondence, Documents shortcuts, Notes edit/checklist/calendar All source-defined destinations and disclosures, legacy key priority, source/archived distinction and independent draft guards. followMode mode-specific compose UI remains deferred; metadata is not action fulfillment. Workspace/mail; H.
Workspace assets, attachments Attach/create/copy/detach/tailor CV, manual/AI letter review/save/history, draft save, package capture/detail/archive download, attachment consent/upload/rename/delete CV source/variant/sibling ownership, reject no-write, dirty Cancel, frozen bytes after mutation/delete, actual upload/download/error; capture is not send. Workspace/storage/AI; H.
Career Overview/structured profile/evidence/import, fields/raw copy/history restore, upload/extract/diff/select/accept/discard/retry/cancel Canonical scope, low-confidence review, source navigation, long-tail/mobile save, no silent overwrite and interrupted operation behavior. Career/extraction; H.
CV library, editor, settings Create/copy/delete/templates/publish/share/PDF; Content/Template/Customize/AI Tools/History; source/override/reset/reorder/visibility; undo/redo/save retry/conflict recovery; editor/preview return Retain P5-14 measured/keyboard/pointer cases; every capability control and locked/unsupported/error state, publication old-link revoke, revision/draft/source/sibling/frozen invariants and private/public export. Physical/zoom/manual AT remains open. CV/renderer; H.
CV AI affordances, DocumentAiTab Existing section/whole-document assistant controls request generation/accept; Production optional service gives 503 unavailable. P5-13 review frame is unimplemented. Honest error/entitlement/privacy/metering, no provider/write in Production withheld scope, unchanged unrelated AI. No model/UI/responsive review acceptance until exact return conditions. AI/CV; H.
Inbox, job correspondence, review Inbox filters/page/detail/source/link, compose/reply/drafts/confirm send, uncertain new attempt, job manual log/import, Gmail thread/link/move/unlink/sync, reviewed proposed jobs Native drafts/revisions/context, no automatic resend/create, no log/send conflation, approved sandbox provider/reconnect/attachment proof and human AT; mail-phase followMode remains outstanding. Mail/API; H.
Settings, backup, Connections Tabs/mobile selector; rules/scenario/notification retry, table/theme/language, import/export, privacy/usage/plans, ZIP/backup/deletion confirmation, connection grants/revoke Correct save owner and dirty tab lifetime; retained notification concurrency 500/rules observation/language 500 investigation, configured billing/deletion/restore guards; provider/production work separately authorized. Settings/API/identity; H.
Companies, Offers, Discovery Contact/company edit/delete/history/source links, recorded offers/notes/deadline, discovery search/source/sort/detail/save searches/run/pause/delete/dismiss Durable company modal error P4-02-D02, safe source URLs, native contact/date/saved-search persistence and narrow many-offer/long result traversal. Domain/accessibility; H.
Admin Users, Audit, System Role/create/reset/delete, permitted undo/restore, SMTP/probes/benchmarks/maintenance/diagnostics API role/last-admin/self/recent-auth gates, mounted revoke, persisted successful actions and safe sensitive output. Actual provider/production actions are outside this plan. Admin/operations; H.

Evidence required before a later acceptance decision

Run the agreed applicable regressions at a named source only after execution is authorized; associate each route/visible-action outcome with the original PRES sub-workflow, role/owned fixture, URL/query/state, request/no-write assertions, viewport/theme/locale and focus result. Capture direct entry, refresh, Back/Forward, legacy alias, loading/empty/error/locked state, missing/foreign record, dirty Cancel/Discard and account switch where relevant. Audit human screen-reader names/live announcements, physical touch/software keyboard, 200%/400% zoom, forced colours and text spacing rather than substituting axe incompletes or emulated taps.

The source limitations above are future audit inputs, not fresh regression failures or approval to change semantics. Preserve recorded deferred scope and open issues. Current deployment/ingress/backup/schema/configuration/rollback/protected CI and actual deployed route acceptance remain NOT VERIFIED under the separate production NO-GO. This plan does not close P5-15 or authorize implementation, suite execution, provider calls or release.