# Preservation impact and traceability Every row preserves the **complete original capability group**, not just the shorthand below. Authority: [Phase 1 ledger](../audit/FUNCTIONALITY_INVENTORY.md), [Phase 2 tests/gaps](../phase-2/PRESERVATION_MATRIX.md) and [traceability contract](../phase-2/TRACEABILITY.md). All 57 IDs retain meaning. No deprecation is proposed. ## Architectural recommendation index | Recommendation | Planned change / existing behavior retained | Affected groups | Phase 4 or later validation | |---|---|---|---| | ARC-01 [Information architecture](INFORMATION_ARCHITECTURE.md) | Group current capabilities, retain every low-frequency destination | All 57 | Full destination ledger and role visibility; no removed function | | ARC-02 [Routes](ROUTE_PLAN.md) | Keep 31 patterns; staged Board alias and precise old section mapping | E01–E09, J01–J10, W01–W12, C01–C12, M01–M06, S01–S05, A01–A03 | Real App entries/back/refresh/capture/dirty/account switch | | ARC-03 [Shell](APP_SHELL.md) | Reuse collapse/drawer/commands/private-tree lifetime | E07–E09, S02–S04, A01–A03 | Focus, current parent, identity disposal, theme/locale | | ARC-04 [Personal dashboard](DASHBOARD_ARCHITECTURE.md) | Preserve current charts/visibility; data-qualified expansion | S01, S02, W02–W12, C05 | Exact metric denominators/source; owner layout and nonavailable states | | ARC-05 [Admin dashboard](DASHBOARD_ARCHITECTURE.md) | Separate new aggregate view from current admin actions | A01–A03, S04 | Server authorization/aggregate-only response; no individual drill-down | | ARC-06 [Jobs](JOBS_WORKSPACE.md) | Table/Board one view owner; existing filters/statuses/bulk retained | J01–J10, W01, S03 | Saved views, filtered parity, partial failure, restore, keyboard | | ARC-07 [Job workspace](JOB_WORKSPACE.md) | Consolidate sections without changing artifact/send ownership | W01–W12, M01–M05, C05–C12 | Native package success, source relationships, dirty/send/history | | ARC-08 [Career](CAREER_PROFILE_UX.md) | Explicit canonical source and import review | C01–C04, C07, C10, C11, E06, E09 | Source/override/reset, import accept/discard, owner denial | | ARC-09 [CV](CV_WORKSPACE.md) | Clean editor/preview and advanced disclosure, full controls retained | C05–C12, W05, W07 | Pagination/preview focus, history, AI no-write, canonical isolation | | ARC-10 [Documents](DOCUMENTS_UX.md) | Index existing artifacts; no replacement store | W05–W08, C05–C12, M04, S05 | Owner list/download/attach, current vs frozen, immutable bytes | | ARC-11 [AI](AI_INTERACTION_MODEL.md) | Contextual reviewed suggestions with explicit target | W03, W05, W06, W09, W10, C03, C04, C11, S04, E09 | Accept/reject, stale/malformed/context switch, source eval | | ARC-12 [Commands/notices/tasks](COMMANDS_NOTIFICATIONS_TASKS.md) | Retain command, reminder, inbox and provider distinctions | E07–E09, J01–J04, J08, W04, W11, W12, M01–M06, S02–S04 | No-write command, task vs notice, real send safeguards | | ARC-13 [Responsive](RESPONSIVE_STRATEGY.md) | Adapt existing mobile workflows without losing features | All 57 | Breakpoint dirty/focus preservation; real touch/zoom | | ARC-14 [Design system](DESIGN_SYSTEM_ARCHITECTURE.md) | Refine MUI tokens/states, keep stack/identity | All 57; E08 shared owner | Loaded mode/locale/contrast/state fixtures | | ARC-15 [Components](COMPONENT_ARCHITECTURE.md) | Small extractions with domain state kept intact | All 57 | Consumer regression; no duplicated network/save owner | | ARC-16 [Accessibility](ACCESSIBILITY_PLAN.md) | Structural focus/naming/contrast first | All 57 | Loaded axe + keyboard + manual assistive technology | Ranges above use existing PRES aliases (e.g. E07 = PRES-E07); they never define new IDs. New capabilities use NEW-01–NEW-16 in Open decisions. Their presence does not count as implemented preservation. ## 57-group change-impact matrix “Retained” = **yes, required by this plan**, not a claim that a migration has executed. Baseline test names below identify representative Phase 2 evidence; the linked Phase 2 row includes exact paths, other tests and known limits. New verification described here is work for the phase touching that surface. Phase 4 only exercises relevant shared foundations; it does not restructure all these workflows. | PRES ID | Existing behavior → proposed UX / destination | Retained? / impact | Representative existing evidence → required migration proof | |---|---|---|---| | PRES-E01 | Product/Free–Pro/unavailable billing → public /, later brand presentation | Yes; public copy later | landing-page, planCatalog → EN/NB/mobile/locked availability, no invented purchase flow | | PRES-E02 | Login/register/remember/reset/verify → same public routes, shared form states | Yes; shared field impact | login-page, verify-email-page, LocalAuthIdentityTests → loaded errors, token submit, safe redirect/provider config | | PRES-E03 | Provider login/link/relink → same routes under account entry | Yes; no provider redesign | microsoft-legacy-relink-page, GoogleTokenValidatorTests, MicrosoftTokenValidatorTests → real sandbox popup/origin/revoke/relink | | PRES-E04 | 2FA/recovery/trusted device → Settings security at existing /profile | Yes; nested form preservation | two-factor-settings, TwoFactorControllerTests → focus and full recovery/revoke traversal | | PRES-E05 | Sessions/revoke/logout → Settings security and account menu | Yes; high-risk shell lifetime | SessionsControllerTests, account-isolation browser → actual session card/revocation + private disposal | | PRES-E06 | Avatar/name/email/password → /profile under Settings Account | Yes; distinct from Career Profile | profile-page, AvatarStorageTests → upload/remove/password/email-change and cross-account denial | | PRES-E07 | Collapse/mobile/active nav/commands → grouped shell, expanded existing palette | Yes; first shell migration | sidebar-active-nav, quick-command-preservation, browser keyboard → every logical parent, drawer focus, collapse/dirty preferences | | PRES-E08 | Theme/EN–NB/feedback/error routes → semantic tokens and common states | Yes; Phase 4 direct impact | theme-state, i18n-provider, confirm/prompt → loaded schemes/locales/reduced motion/error route | | PRES-E09 | Account-switch/stale read/write/BFCache handling → unchanged boundary for all new surfaces | Yes; mandatory regression | session-boundary, SessionContextMiddlewareTests, account-isolation → stale command/panel/draft/results cannot cross identity | | PRES-J01 | NAV discovery/filter/source details → Jobs Discover at /discover | Yes; relocate navigation | job-discovery, JobDiscoveryControllerTests → loaded search/error/mobile; NAV production availability separate | | PRES-J02 | Saved search/run/delete/alerts/dismiss → same Discover workspace | Yes; no new store | job-discovery, SavedJobSearchAlertTests → delete/alert-to-centre/reload and owner isolation | | PRES-J03 | Manual/URL/paste preview/company/tags/date create → shared Add/import action | Yes; reviewed create unchanged | quick-capture, JobImportHttpTransportTests → preview no write, duplicate/company/date failure; B01 intact | | PRES-J04 | Extension/bookmarklet/share + post-create artifacts → same capture contract | Yes; route sensitivity | captureUrl, quick-command-preservation, extension tests → real capture/review/optional attachment failure and no replay create | | PRES-J05 | Table/cards/filter/sort/page/columns/saved views → Tracked Table/Board | Yes; high-risk view owner | daily-control-loop, account-scoped-state, workspace browser → saved-view CRUD, filter parity/back/focus, long NB cards | | PRES-J06 | Edit/bulk status/delete/trash/restore → same actions and /trash utility | Yes; no hard-delete substitution | JobApplicationsAuthorizationTests, confirm-flow → native partial bulk failure, restore, selected scope | | PRES-J07 | Grouped pointer/keyboard board + exact status → /jobs?view=board after parity | Yes; delayed alias | kanban-grouped-board, pipeline → same filtered IDs, keyboard cancel and unknown custom group | | PRES-J08 | Company/contact/pipeline/date/related jobs → Jobs Companies, /companies?edit=id | Yes; no lost directory | companies-relationship, CompanyRelationshipTests → full contact persistence and command entry | | PRES-J09 | Offer compensation/decision/notes/source links → Jobs Offers at /offers | Yes; no calculator rewrite | offer-comparison, AnalyticsSalaryTests → many-offer mobile, currency/period and source links | | PRES-J10 | CSV/JSON export/import/conversion/counts → Settings Data plus Jobs link | Yes; formats unchanged | CsvExportTests, csv-export/browser → BOM/typed dates/formulas and native import counts, no full-restore claim | | PRES-W01 | Full workspace/aliases/optional props → new section map + optional read-only host | Yes; no active preview assumed | application-route-contracts, application-workspace-overlay, actual App browser → every alias, followMode, dirty/back/focus and new host | | PRES-W02 | Details/progression/next action/dates/contacts/history → header/Overview/Timeline | Yes; same records/stages | workflow-trust-signals, JobApplicationsAppliedDateHistoryTests → native edit/status/history, null applied date | | PRES-W03 | Analysis/match/strategy/reviewed status suggestions → Match section | Yes; context explained | application-intelligence, application-workflow-assist → loaded provider/error/source/freshness and explicit apply | | PRES-W04 | Checklist CRUD/dismiss/complete/order/next step → Notes & tasks | Yes; due date remains new | application-checklist, ApplicationChecklistTests → keyboard/mobile persisted actions, manual vs auto | | PRES-W05 | Select/attach/create/tailor CV → Application → CV | Yes; relationship unchanged | application-assets, ApplicationAssetsTests → source context, foreign attach denied; native tailoring blocked by P2-D01 | | PRES-W06 | Letter/manual/AI review/history/dirty guard → Application → Letter | Yes; independent draft/save | application-assets AI reject, ApplicationAssetsTests → whole-browser accept/reject/restore/Cancel/Discard | | PRES-W07 | Answers/drafts/frozen packages/archived downloads → Application → Submission + Documents history | Yes; migration blocked | SubmittedApplicationPackageTests; browser expected failure → **P2-D01 native capture and post-source-mutation archived bytes required** | | PRES-W08 | Upload/drop/purpose/name/AI use/preview/download/delete → Documents section/index | Yes; owner-bound binary | attachments, AttachmentConsistencyTests → native rename/drop/download/delete; archived survival after W07 fix | | PRES-W09 | Manual/AI interview questions/answers/ready/remove → Interview Prep | Yes; explicit Add/review | interview-prep, InterviewPrepPersistenceTests → mobile keyboard/reload and no invented answer facts | | PRES-W10 | Debrief/follow-up draft/date/readiness → Interview Debrief | Yes; no scheduled meeting inferred | interview-prep, JobApplicationsFollowUpDraftTests → persisted debrief and followMode navigation | | PRES-W11 | Rules/reminders/notifications/ICS/Google/Outlook → Follow-ups + job calendar controls | Yes; supported providers retained | application-calendar, settings-view, ApplicationCalendarControllerTests → permission/ICS/timezone + provider sandbox; new event scope separate | | PRES-W12 | Operation pending/progress/fail/retry/cancel and notices → /operations utility + centre | Yes; operation identity retained | operations-page, OperationsControllerTests → no duplicate starts, result links/cancel/late response | | PRES-C01 | Full canonical profile and long-tail sections → Career Profile Edit | Yes; global scope explained | profile-page, CareerProfileControllerTests, account-isolation/browser → same-account save, A/B replay denial, all sections | | PRES-C02 | Overview/completeness/raw text/avatar/history/restore → Career overview/history | Yes; not a new score | career-workspace-page, CareerProfileServiceTests → native restore/projection, copy/raw accessibility | | PRES-C03 | Extract/rebuild/improve/reprocess/diff/low confidence/accept/discard | Yes; Import review workspace | profile-page, CvProfileDiffServiceTests, CvExtractionCoverageTests → loaded low-confidence/discard/cancel/provider failure; actual extraction corpus | | PRES-C04 | Sourced evidence CRUD/tags/truthfulness → Career Evidence | Yes; no invented skill bank | career-evidence, CareerEvidenceControllerTests → edit context/delete/owner isolation and source navigation | | PRES-C05 | CV library/create/copy/delete/gallery/publish/share/PDF → CVs | Yes; same IDs/slugs | cv-builder-page, CvBuilderTests/PublicCvControllerTests → template controls, publication lifecycle and owned links | | PRES-C06 | Studio tabs/live preview/fit/page/save/mobile modes → focused editor/preview | Yes; high-risk visual owner | cv-builder-deep-link, redesign-preservation browser → loaded preview focus/scroll, modes without remount | | PRES-C07 | Item/section selection/order/override/custom content → scoped section editor | Yes; all controls | cv-builder-deep-link, cvBuilder, canonical/sibling browser → reset/inherit/missing-source/reorder/hide | | PRES-C08 | Template-aware typography/header/skills/layout/photo/icons → Customize + Advanced | Yes; no control dropped | cv-builder-deep-link, cv-template-thumbnail, CvBuilderTests → supported/unsupported values and preview/PDF equivalence | | PRES-C09 | A4/Letter/density/margins/dates/language/presentations/columns → Advanced document controls | Yes; app density separate | cvBuilder, CvBuilderTests, existing multipage PDF browser → real multipage/grid/bubble cases in both document locales | | PRES-C10 | Undo/redo/save queue/dirty/history/restore → persistent editor state | Yes; F01 remains separate | cv-builder-deep-link, CvBuilderTests → browser history/undo/reload/failed save; no concurrency overclaim | | PRES-C11 | Section/document AI translate/improve/spelling/review → shared comparison frame | Yes; accept/reject retained | ai-section-assistant, cv-builder-deep-link → malformed IDs, changed source, rejected suggestion no mutation | | PRES-C12 | Private and published PDF/preview/searchable long docs → same export/public path | Yes; B03 preserved | PublicCvControllerTests, PdfRenderAdmissionTests → private denial, unpublish, all-render paths/busy recovery | | PRES-M01 | Job manual correspondence/search/delete/paste/import → Timeline Correspondence | Yes; log ≠ send | end-to-end-trust-loop, CorrespondenceControllerTests → current-job context and manual record mutation | | PRES-M02 | Gmail search/import/refresh/thread link/unlink/move → job Correspondence/inbox | Yes; relationship checks | correspondence-gmail-import, EmailOwnershipIntegrationTests → foreign thread/job denial and provider reconnect | | PRES-M03 | Global inbox/filter/paging/message/attachment info/job links → primary Correspondence | Yes; not hidden in Documents | correspondence-inbox-page, EmailControllerTests → native paging/detail/empty vs provider failure | | PRES-M04 | Compose/reply/provider/drafts/review/send/attempt uncertainty → same inbox domain | Yes; high-risk send boundary | EmailDraftPersistenceTests, EmailSendAttemptStoreTests → draft conflict, explicit send, unknown delivery, no auto-resend | | PRES-M05 | Review candidates/proposals/link/reject/keep/notes/sync/create → inbox Review | Yes; legacy alias retained | gmail-review-page, GmailControllerTests → old route/result/link/create confirmation and owner scope | | PRES-M06 | Google/Graph/IMAP status/connect/disconnect → Settings Connections | Yes; login vs mailbox distinction | email-provider-connections, provider tests → actual grants/reconnect/disabled capability; no unsupported send | | PRES-S01 | Counts/activity/funnel/company/tag/stage/salary/next steps → Dashboard + Analytics | Yes; precise labels, no fabricated metrics | daily-control-loop, StageAnalyticsTests → P3-O01 definitions, period/unknown/sample/error and data table | | PRES-S02 | Five owner visibility flags/onboarding/dismiss/bell/read/dismiss → layout migration + centre | Yes; new layout additive | onboarding-checklist, notifications-popover → preference migration/A-B/reset/corrupt storage before Phase 8 | | PRES-S03 | Rules/email/table/theme/language/preferences → Settings sections + context links | Yes; scopes retained | settings-view, browser responsive save → scenario fields/error retry/resize and separate document density | | PRES-S04 | AI privacy/usage/limits/Free–Pro/billing status/checkout/portal → Settings AI/plan | Yes; server authority | ai-usage-card, ProEntitlementAuthorizationTests, BillingControllerTests → honest unavailable/provider/entitlement, no invented trial | | PRES-S05 | Account export/encrypted backup/lifecycle/delete confirmation → Settings Data/privacy | Yes; recent auth retained | account-data-export, AccountDeletionTests, BackupControllerTests → safe confirmation/download and restore-readiness gap explicit | | PRES-A01 | Admin users/create/roles/reset/delete/last-admin protections → Admin Users | Yes; aggregate view does not replace tools | admin-users-page, UsersControllerTests, nonadmin browser → role revocation/denial/confirmation and no user-data analytics | | PRES-A02 | Audit list/detail/supported undo/job restore → Admin Audit | Yes; exact supported actions | admin-audit-page → native undo/restore/owner and confirmation; not generic mutation | | PRES-A03 | System health/build/database/AI/email/config/test/benchmark/maintenance → Admin System | Yes; separate from product counts | admin-system-page, MaintenanceJobDispatcherTests → privileged actions retained; secrets not in dashboard | ## Trace chain and readiness For every subsequent change record: **PRES-ID + original sub-workflow → ARC/NEW requirement → implementation commit and owner → named executed regression → visual/UX evidence → remaining gaps.** Use a scoped trace sheet linked from [Phase 2 traceability](../phase-2/TRACEABILITY.md); the table above is planning impact only. Example, not completed work: | PRES / requirement | Architecture | Implementation | Regression | Visual/UX | |---|---|---|---|---| | PRES-E08 accessible semantic states | ARC-14/16; P4-01 | Not started | Existing theme/feedback tests plus planned loaded contrast/focus fixture | Not performed | | PRES-J07 unified Board entry | ARC-02/06 | Not started, Phase 5 | Filtered parity, exact status/keyboard cancel and /kanban alias | EN/NB, themes, phone/desktop/touch pending | | PRES-W07 frozen package | ARC-07/10 | Blocked by P2-D01 | Native capture currently expected failure; post-capture assertions unproven | No migration approval | **57/57 groups mapped, zero approved removals.** This is 100% architecture traceability, not 100% automated workflow coverage or implementation readiness. Phase 2 contains explicit provider, production, accessibility, visual and native SQLite gaps. Preserve them until evidence closes them.