Files
jobtrackingapp/docs/redesign/phase-3/PRESERVATION_IMPACT_MATRIX.md
T
2026-09-10 18:15:05 +02:00

107 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.