Files
jobtrackingapp/docs/redesign/phase-5/PRESERVATION_IMPACT.md
T
2026-09-13 20:17:08 +02:00

206 lines
47 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.
# Phase 5 preservation impact
All **57/57 original capability groups are mapped**, not exhaustively tested or approved for migration. IDs and complete original requirements come from [Phase 1](../audit/FUNCTIONALITY_INVENTORY.md). Full automated assertions/gaps remain in the [Phase 2 matrix](../phase-2/PRESERVATION_MATRIX.md); [P4-06 acceptance](../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md) adds the scoped foundation evidence and conditional gates. Selected existing test references below are anchors, not a coverage percentage or fresh execution claim.
Rows distinguish direct work, entry-only relocation and unchanged regression dependencies. Every authenticated page receives the new shell, but that does not authorize its form/workflow redesign. Slice numbers refer to [PHASE5_PLAN](PHASE5_PLAN.md); `00–14` means applicable implemented slices, not permission to execute blocked ones. P5-05 is not active. [Gate definitions](READINESS_GATES.md) and [VS evidence sets](VISUAL_ACCEPTANCE.md) apply cumulatively; missing evidence must be added before changing the affected behavior. P5-15 reconciles every row again.
Each implementation trace must use `PRES-ID[.subworkflow] → original requirement → change/commit → named test + actual outcome → VS artifact + human review`. No row below is implementation evidence. Retain all sub-capabilities even where the short proposed-change description highlights only one. New functions retain NEW IDs; defects retain their original IDs.
| PRES ID / original capability | Phase 5 touch / owner slice | Existing entry and component/service owners | Behavior retained → planned UX change | Selected existing automated evidence | Missing evidence / gate → future visual proof |
|---|---|---|---|---|---|
| **PRES-E01** — Public product/plans; honest unavailable billing | Unchanged / 01 route regression | `/`; LandingPage, planCatalog; AccountPlans | Keep public plans and honest unavailable billing; no marketing redesign. | [F:landing-page][F:landing-page.test.tsx]; [F:planCatalog][F:planCatalog.test.ts]; [B:AccountPlans][B:AccountPlansTests] | Public/checkout provider gaps remain; VS-SHELL public redirect smoke. |
| **PRES-E02** — Local login/register/remember, challenge, reset and verification | Entry / 01 | `/login; /register; /forgot-password; /reset-password; /verify-email`; LoginPage, TurnstileWidget, VerifyEmailPage; AuthController | Keep auth/reset/verification/challenge callbacks and token URLs; no auth form changes. | [F:login-page][F:login-page.test.tsx]; [F:verify-email-page][F:verify-email-page.test.tsx]; [B:LocalAuthIdentity][B:LocalAuthIdentityTests]; [B:AuthAndSystemController][B:AuthAndSystemControllerTests] | G-SHELL provider lifetime; VS-SHELL login/private entry plus existing auth suite; actual mail/Turnstile remains separate. |
| **PRES-E03** — Google/Microsoft login, link, legacy relink and popup results | Entry / 01 | `/login; /microsoft-legacy-relink; provider callbacks`; GoogleAuthCard, MicrosoftAuthCard, MicrosoftLegacyRelinkPage; token validators | Keep login/provider/relink and Settings Connections distinction; group links only. | [F:login-page][F:login-page.test.tsx]; [F:microsoft-legacy-relink-page][F:microsoft-legacy-relink-page.test.tsx]; [B:GoogleTokenValidator][B:GoogleTokenValidatorTests]; [B:MicrosoftTokenValidator][B:MicrosoftTokenValidatorTests] | G-SHELL origin/state and callback regressions; VS-SHELL links; real provider consent remains a gap. |
| **PRES-E04** — 2FA challenge/recovery/setup/disable; trusted-device revocation | Entry / 01 | `/profile; /login`; TwoFactorSettingsCard, TwoFactorChallenge; TwoFactorController | Move Account/security entry under Settings/account menu; setup/recovery/trusted-device functions unchanged. | [F:two-factor-settings][F:two-factor-settings.test.tsx]; [F:login-page][F:login-page.test.tsx]; [B:TwoFactorController][B:TwoFactorControllerTests]; [B:SessionsController][B:SessionsControllerTests] | No security panel relocation; VS-SHELL account links; full device/AT journey remains separate. |
| **PRES-E05** — Session list/current device, revoke one/others, logout | Direct shell / 00, 01, 02 | `/profile; shell user menu`; SessionsSettingsCard, AppShell, auth; SessionsController | Same logout and session invalidation; open utilities cannot retain private callbacks; session list stays on Profile. | [F:session-boundary][F:session-boundary.test.ts]; [F:account-scoped-state][F:account-scoped-state.test.tsx]; [B:SessionsController][B:SessionsControllerTests]; [B:AuthSessionRevocation][B:AuthSessionRevocationTests] | G-SHELL/B02 real A→B open drawer/command/bell; VS-SHELL/UTILITY. Session card full UI gap retained. |
| **PRES-E06** — Avatar, account names/headline, email change and password | Entry / 01 | `/profile; /confirm-email-change`; ProfilePage; AuthController, AvatarStorage | Account identity/avatar stays distinct from Career Profile; preserve email confirmation route. | [F:profile-page][F:profile-page.test.tsx]; [F:verify-email-page][F:verify-email-page.test.tsx]; [B:AvatarStorage][B:AvatarStorageTests]; [B:LocalAuthIdentity][B:LocalAuthIdentityTests] | VS-SHELL account name/avatar/long labels; identity mutations not migrated. |
| **PRES-E07** — Desktop collapse/mobile drawer, active nav and command search/actions | Direct / 00, 01, 02, 04b, 07, 08b | `Shell; Ctrl/Cmd+K`; AppShell, QuickCommandDialog; job/company search APIs | Grouped nav, utilities, staged aliases/new Analytics; all 31 routes retained before additions. | [F:sidebar-active-nav][F:sidebar-active-nav.test.ts]; [F:app-shell-notifications][F:app-shell-notifications.test.tsx]; [B:JobApplicationsAuthorization][B:JobApplicationsAuthorizationTests]; [B:CompanyRelationship][B:CompanyRelationshipTests] | G-SHELL, G-JOBS parity and G-WORKSPACE query gates; VS-SHELL/UTILITY/JOBS/BOARD/ANALYTICS/WORKSPACE. |
| **PRES-E08** — Theme/system, EN/NB hydration, toast/confirm/prompt and errors | Direct shared / 00–14 | `Shell; preferences; fallback routes`; themePrefs, I18nProvider, confirm, prompt; auth preference | Keep semantic tokens, system/light/dark, EN/NB, modal/loaded state and scopes; no second styling/feedback system. | [F:theme-state][F:theme-state.test.tsx]; [F:i18n-provider][F:i18n-provider.test.tsx]; [B:LocalAuthIdentity][B:LocalAuthIdentityTests] | G-SHELL tooltip/toast; every VS set plus reduced motion/zoom/AT; incomplete axe nodes not passes. |
| **PRES-E09** — Account-switch private-state disposal and stale request rejection | Regression boundary / 00–15 | `All private routes; tabs/BFCache/focus`; App, api, sessionBoundary; SessionContextMiddleware | Private tree unmount, trusted identity and abort/stale-write guard remain; no private storage introduced. | [F:session-boundary][F:session-boundary.test.ts]; [F:account-scoped-state][F:account-scoped-state.test.tsx]; [B:SessionContextMiddleware][B:SessionContextMiddlewareTests]; [B:CurrentUserIdLiveEvaluation][B:CurrentUserIdLiveEvaluationTests] | B02 real/API negative cases for each new utility/route; VS-SHELL/UTILITY cannot prove authorization by image. |
| **PRES-J01** — NAV discovery/filter/sort/source/deadline/details | Entry / 01, 03 | `/discover`; JobDiscoveryPage; JobDiscoveryController | Discover becomes Jobs secondary; source search/capture page unchanged. | [F:job-discovery][F:job-discovery.test.tsx]; [B:JobDiscoveryController][B:JobDiscoveryControllerTests]; [B:JobOpportunitySync][B:JobOpportunitySyncTests] | VS-SHELL Jobs children; job-discovery browser retained, NAV live provider gap not closed. |
| **PRES-J02** — Saved searches, run/delete/alerts, result changes/dismissal | Entry / 01, 03 | `/discover`; JobDiscoveryPage; saved-search/alert services | Saved NAV searches/alerts remain within Discover, no new notification producer. | [F:job-discovery][F:job-discovery.test.tsx]; [B:SavedJobSearchAlert][B:SavedJobSearchAlertTests]; [B:JobDiscoveryController][B:JobDiscoveryControllerTests] | VS-SHELL link; saved search/API evidence retained; no scheduled alert delivery claim. |
| **PRES-J03** — Reviewed manual/URL/paste job create, company/tags/dates, duplicates | Entry/presentation / 01, 02, 03 | `Shell AddJobModal`; AddJobModal; JobImportService, JobApplicationsController | Add/import review stays existing modal/callback, no creation on route/view mount. | [F:quick-capture][F:quick-capture.test.tsx]; [B:JobImportService][B:JobImportServiceTests]; [B:JobImportHttpTransport][B:JobImportHttpTransportTests] | G-JOBS capture/modal no-POST tests; VS-UTILITY/JOBS reviewed manual/URL/paste flows; B01 remains. |
| **PRES-J04** — Extension/bookmarklet/share capture; post-create attachment/CV | Entry / 01, 03 | `?add= / ?addtext=; QuickCaptureCard; browser-extension`; App, captureUrl, QuickCaptureCard; job/CV APIs | Keep add/addtext capture, consumed-once review and optional post-create CV attachment. | [F:captureUrl][F:captureUrl.test.ts]; [F:quick-capture][F:quick-capture.test.tsx]; [B:JobImportService][B:JobImportServiceTests]; [B:CvBuilder][B:CvBuilderTests] | G-JOBS deep-link and extension fixtures; VS-JOBS modal; installed extension/manual browser gap remains. |
| **PRES-J05** — Job filters/sort/page/columns, saved views and row/mobile actions | Direct / 03, 04a entry, 04b | `/jobs`; JobTable, SavedViewsMenu; JobApplicationsController | Restyle table/cards/filters, same columns/sort/page/saved views; gated shared board query. | [F:application-workspace-overlay][F:application-workspace-overlay.test.tsx]; [F:account-scoped-state][F:account-scoped-state.test.tsx]; [B:JobApplicationsController][B:JobApplicationsControllerTests]; [B:JobApplicationsEndpointBehavior][B:JobApplicationsEndpointBehaviorTests] | G-JOBS native saved views/Back/error/selection/completeness; VS-JOBS/BOARD both densities and long NB data. |
| **PRES-J06** — Bulk status/delete, soft delete/trash/restore and job edit | Direct / 03, 04b integration | `/jobs; /trash; EditJobDialog`; JobTable, EditJobDialog; job lifecycle/controller | Preserve bulk precise status/delete, deleted-only Trash/edit/restore and partial failures. | [F:application-workspace-overlay][F:application-workspace-overlay.test.tsx]; [F:confirm-flow][F:confirm-flow.test.tsx]; [B:JobApplicationsController][B:JobApplicationsControllerTests]; [B:JobApplicationsAuthorization][B:JobApplicationsAuthorizationTests] | G-JOBS partial failure/selection scope/restore; VS-JOBS confirm/Trash/density; no permanent deletion added. |
| **PRES-J07** — Kanban grouped statuses, pointer/keyboard move and precise menu | Direct / 04a, 04b | `/kanban`; KanbanBoard, pipeline; status endpoint | Same three groups/Other, pointer/keyboard/precise status semantics; alias only after parity. | [F:kanban-grouped-board][F:kanban-grouped-board.test.tsx]; [F:pipeline][F:pipeline.test.ts]; [B:JobPipeline][B:JobPipelineTests] | G-JOBS full-board population; VS-BOARD every move/cancel/error and source query; no first-page-only proof. |
| **PRES-J08** — Company/contact edits, pipeline dates and linked-job history | Entry / 01, 02, 03 | `/companies; ?edit=id`; CompaniesTable; company relationship APIs | Companies under Jobs; command ?edit=id and contacts/history unchanged. | [F:companies-relationship][F:companies-relationship.test.tsx]; [F:quick-command-preservation][F:quick-command-preservation.test.tsx]; [B:CompanyRelationship][B:CompanyRelationshipTests] | VS-SHELL/UTILITY company links; P4-02-D02 modal feedback stays Phase 7 gate, not closed by toast placement. |
| **PRES-J09** — Recorded offers/compensation/deadlines/notes and source links | Entry / 01, 03, 06, 07 | `/offers`; OfferComparisonPage; job API | Offers under Jobs; existing comparison/source/report links and currencies retained. | [F:offer-comparison][F:offer-comparison.test.tsx]; [B:AnalyticsSalary][B:AnalyticsSalaryTests]; [B:JobApplicationsEndpointBehavior][B:JobApplicationsEndpointBehaviorTests] | VS-SHELL/DASHBOARD/ANALYTICS links; offer page redesign and full comparison UI proof later. |
| **PRES-J10** — CSV/JSON export, JSON import and CSV-to-JSON conversion | Entry / 01, 03 | `/settings; ImportExportJobs`; ImportExportJobs; CSV/job controller | JSON/CSV import/export stays Settings Data; contextual link without serializer changes. | [F:csv-export][F:csv-export.test.tsx]; [B:CsvExport][B:CsvExportTests]; [B:JobApplicationsController][B:JobApplicationsControllerTests] | VS-JOBS/SETTINGS link; B05 real CSV/formula/Unicode browser and backend tests retained. |
| **PRES-W01** — Full workspace, sections, legacy links and optional reusable overlay | Direct / 03, 04a/b entry, 08a, 08b | `/jobs/:id; /applications/:id; section/followMode`; ApplicationWorkspacePage, jobWorkspaceRoute; workspace API | Dedicated page, aliases/return context and optional overlay props preserved; no new preview host. | [F:application-workspace-overlay][F:application-workspace-overlay.test.tsx]; [F:applicationWorkspace][F:applicationWorkspace.test.ts]; [B:ApplicationWorkspace][B:ApplicationWorkspaceTests] | G-WORKSPACE + package for 08b; VS-WORKSPACE full alias/dirty/missing/foreign/Back; NEW-10 deferred. |
| **PRES-W02** — Detail/status/progression, recruiter/dates/description/timeline | Direct / 03, 04a/b, 08a, 08b | `/jobs/:id overview`; WorkspaceHeader, JobDetailsSection, ApplicationProgress/Timeline; workflow APIs | Status/next-step/timeline use same handlers; header/sections clearer, no progression engine. | [F:application-intelligence][F:application-intelligence.test.tsx]; [F:workflow-trust-signals][F:workflow-trust-signals.test.tsx]; [B:JobApplicationsWorkflowSignals][B:JobApplicationsWorkflowSignalsTests]; [B:JobApplicationsAppliedDateHistory][B:JobApplicationsAppliedDateHistoryTests] | VS-JOBS/BOARD/WORKSPACE; G-WORKSPACE and native package before affected composition; job revision behavior not redesigned. |
| **PRES-W03** — Analysis, match/gaps, strategy and reviewed status/workflow suggestions | Entry then composition / 08a, 08b | `/jobs/:id?section=analysis`; ApplicationAnalysis/Match/StrategySnapshot/StatusSuggestion; intelligence/AI services | Match/analysis/strategy and review suggestions remain contextual; no implicit AI on open. | [F:application-intelligence][F:application-intelligence.test.tsx]; [F:application-workflow-assist][F:application-workflow-assist.test.tsx]; [B:ApplicationIntelligence][B:ApplicationIntelligenceTests]; [B:StrategySnapshotOperation][B:StrategySnapshotOperationTests] | VS-WORKSPACE source/unknown/locked/accept/reject; G-PACKAGE if tailored composition; real factual quality remains separate. |
| **PRES-W04** — Checklist create/edit/complete/delete/order and next action | Composition / 08b | `Job overview/checklist entry`; ApplicationChecklist; checklist service/controller | Existing manual/system/dismissed checklist, order/progress retained under Notes & tasks. | [F:application-checklist][F:application-checklist.test.tsx]; [B:ApplicationChecklist][B:ApplicationChecklistTests] | G-WORKSPACE native reorder/dismiss/restore; VS-WORKSPACE keyboard controls; no due-date schema. |
| **PRES-W05** — Attach/select/create/tailor CV and source context | Composition / 08b; CV 09–14 relationship regression | `Job CV section; builder deep link`; ApplicationCvSection/TailoringSection; ApplicationAssetsService | Preserve choose/create/attach/tailor/detach and single-job association; source/CV/job scopes explicit. | [F:application-assets][F:application-assets.test.tsx]; [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:ApplicationAssets][B:ApplicationAssetsTests]; [B:CvBuilder][B:CvBuilderTests] | G-PACKAGE + relevant G-CV gates; native attach/foreign-denied/detach-keeps-CV; VS-WORKSPACE/CV. |
| **PRES-W06** — Cover-letter manual/AI review, versions/restore and dirty protection | Composition / 08b | `Job cover-letter section`; ApplicationCoverLetterSection, CoverLetterAiAssistant; assets/history | Same letter manual/AI review/history/dirty owner; explicit Current/proposed, no sender rewrite. | [F:application-assets][F:application-assets.test.tsx]; [F:application-workspace-overlay][F:application-workspace-overlay.test.tsx]; [B:ApplicationAssets][B:ApplicationAssetsTests] | G-WORKSPACE literal context/query repair plus G-PACKAGE; VS-WORKSPACE Reject/no-write, edited acceptance, versions and Cancel. |
| **PRES-W07** — Application drafts and immutable submitted package/archived binaries | Composition / 08b; 14 relationship regression | `Job cover-letter drafts; CV section package history`; ApplicationPackageDraftsSection, SubmittedPackagesSection; package service/storage | Draft answers/current artifacts remain distinct from immutable frozen submission and external send. | [F:application-assets][F:application-assets.test.tsx]; [F:application-drafts][F:application-drafts.test.ts]; [B:SubmittedApplicationPackage][B:SubmittedApplicationPackageTests]; [B:JobApplicationsApplicationPackage][B:JobApplicationsApplicationPackageTests] | G-PACKAGE mandatory; VS-WORKSPACE/CV with native capture/archived bytes after source mutation, not mocked success. |
| **PRES-W08** — Attachments upload/category/name/AI consent/preview/download/delete | Composition / 08b | `Job overview Documents accordion; package archive`; Attachments; AttachmentsController, AttachmentStorage | Attachments retain purpose, explicit AI-use consent, CRUD and protected downloads; no storage move. | [F:attachments][F:attachments.test.tsx]; [B:AttachmentsController][B:AttachmentsControllerTests]; [B:AttachmentConsistency][B:AttachmentConsistencyTests] | G-PACKAGE native archive/reference/foreign tests; VS-WORKSPACE upload/rename/consent/delete/available error. |
| **PRES-W09** — Interview questions/answers/ready/manual removal/AI review | Composition / 08b | `Job interview section`; InterviewPrep; interview persistence/AI endpoints | Prep/questions/manual answers/AI review/readiness remain available, not inferred appointment data. | [F:interview-prep][F:interview-prep.test.tsx]; [B:InterviewPrepPersistence][B:InterviewPrepPersistenceTests]; [B:InterviewAiContext][B:InterviewAiContextTests] | VS-WORKSPACE review/locked/empty/long answer; G-WORKSPACE, no live model/scheduled interview claim. |
| **PRES-W10** — Debrief/follow-up draft/date/readiness | Composition / 08b | `Job interview section; follow-up entry`; InterviewPrep; follow-up draft services | Debrief/outcome and follow-up drafts/date controls retained; no automatic send. | [F:interview-prep][F:interview-prep.test.tsx]; [B:JobApplicationsFollowUpDraft][B:JobApplicationsFollowUpDraftTests]; [B:InterviewPrep][B:InterviewPrepTests] | VS-WORKSPACE draft/error/return; timezone/provider gates if semantics change, otherwise retained evidence. |
| **PRES-W11** — Reminder rules/actions/notifications, ICS and Google/Outlook events | Entry / 01, 02, 06; composition / 08a/b | `/reminders; job calendar actions; /settings`; RemindersView, RulesSettingsCard, ApplicationCalendarActions; calendar/rules APIs | Keep reminders/rules/bell and Google/Outlook follow-up/deadline/ICS distinctions. | [F:daily-control-loop][F:daily-control-loop.test.tsx]; [F:application-calendar][F:application-calendar.test.tsx]; [B:ApplicationCalendarController][B:ApplicationCalendarControllerTests]; [B:RulesEngineProspect][B:RulesEngineProspectTests] | VS-SHELL/UTILITY/DASHBOARD/WORKSPACE; F21/provider gaps remain, no new task/interview notification producer. |
| **PRES-W12** — Async progress/failure/retry/cancel/notifications | Entry / 01, 02, 06, 08a/b | `/operations; profile processing`; OperationsPage, CareerProfilePage; operation store/worker | Operations utility, result links, progress/retry/cancel preserved; no new queue/worker behavior. | [F:operations-page][F:operations-page.test.tsx]; [F:profile-page][F:profile-page.test.tsx]; [B:OperationsController][B:OperationsControllerTests]; [B:UserOperationStore][B:UserOperationStoreTests] | VS-UTILITY/WORKSPACE delay/failure/cancel links; F20 runtime containment remains separate. |
| **PRES-C01** — Canonical structured career data and long-tail/custom sections | Entry / 01; relationships / 08b, 10 | `/career?section=profile`; CareerProfilePage, career views; CareerProfileService/controller | Career Profile canonical owner unchanged, CV-specific edits/reset never mutate source implicitly. | [F:profile-page][F:profile-page.test.tsx]; [B:CareerProfileController][B:CareerProfileControllerTests]; [B:CareerProfileService][B:CareerProfileServiceTests] | G-CV-BEHAVIOR canonical/sibling readback; VS-CV scope labels; full Career page remains Phase 7. |
| **PRES-C02** — Profile overview/completeness/import guidance/raw copy/history/restore | Entry / 01; source regression / 10 | `/career`; CareerWorkspacePage, CareerProfilePage; version service | Existing overview/import/raw/history/restore/completeness retained, not rebuilt as new features. | [F:career-workspace-page][F:career-workspace-page.test.tsx]; [F:profile-page][F:profile-page.test.tsx]; [B:CareerProfileService][B:CareerProfileServiceTests] | VS-SHELL source links, VS-CV source relation; native profile restore/full AT gaps retained. |
| **PRES-C03** — Upload/extract/rebuild/reprocess/diff/select/accept/discard/retry/cancel | Entry / 01; regression only otherwise | `Career import/review`; CareerProfilePage; profile-CV/processing/diff services | Import/extraction/diff/accept/discard/reprocess remains on Career, no extraction UI migration. | [F:profile-page][F:profile-page.test.tsx]; [B:ProfileCvController][B:ProfileCvControllerTests]; [B:CvProfileDiffService][B:CvProfileDiffServiceTests] | VS-SHELL import entry; existing AI no-write tests; real unusual documents/low-confidence full browser gap remains. |
| **PRES-C04** — Evidence bank source/category/tags/add/list/delete | Entry / 01; relationship regression / 08b | `Career overview/evidence`; CareerEvidenceBank; CareerEvidenceController | Evidence bank stays canonical; job tailoring references existing evidence only. | [F:career-evidence][F:career-evidence.test.tsx]; [B:CareerEvidenceController][B:CareerEvidenceControllerTests] | G-PACKAGE for evidence-backed tailoring; VS-WORKSPACE source context; full Evidence page later. |
| **PRES-C05** — CV library create/copy/delete/templates/share/publication/PDF | Entry / 01; editor actions / 09, 14 | `/career/builder`; CvBuilderPage, thumbnails; CvVariantService/PublicCvController | Library/templates/CRUD untouched; editor duplicate/share/export and public slug ownership retained. | [F:cv-builder-page][F:cv-builder-page.test.tsx]; [F:cv-template-thumbnail][F:cv-template-thumbnail.test.tsx]; [B:CvBuilder][B:CvBuilderTests]; [B:PublicCvController][B:PublicCvControllerTests] | G-CV gates; native publish/unpublish/old-link revocation, library-to-editor control; VS-CV, library redesign Phase 7. |
| **PRES-C06** — Studio tabs, preview debounce/pages/fit/save state/mobile panes | Direct / 09–14; tooltip/control / 00 | `/career/builder/:id`; CvBuilderEditor inline previewDocumentHtml/panes; preview API | Preserve five tabs/live preview/fit/save/mobile panes; editor composition and navigation improve. | [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:CvBuilder][B:CvBuilderTests] | G-CV-REV/RENDER/BEHAVIOR; VS-CV all tabs, saved/failed/resize/keyboard, retain P4 preview proof. |
| **PRES-C07** — Visibility/order/custom sections and item/document overrides | Direct / 10, 12, 13; 09/11/14 regression | `Builder Content`; CvBuilderEditor, CV controls/useDragReorder; resolver/settings | All section/item/custom/inclusion/override settings retained, scoped edit/reset/review. | [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [F:cvBuilder][F:cvBuilder.test.ts]; [B:CvBuilder][B:CvBuilderTests] | G-CV gates plus item/source reset/ordering/hidden persistence proof; VS-CV, omitted state via labels not whole opacity. |
| **PRES-C08** — Capability-aware templates/typography/color/header/skills/sidebar/photo | Direct / 11, 12; 09/14 regression | `Builder Template/Customize`; CvCustomizeTab, registry; ThemedCvRenderer | Every supported template/typography/color/photo/header/sidebar capability preserved under Advanced. | [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [F:cvBuilder][F:cvBuilder.test.ts]; [B:CvBuilder][B:CvBuilderTests] | G-CV-RENDER supported-control matrix; VS-CV Template/Customize + real output corpus, no template removal. |
| **PRES-C09** — A4/Letter/density/margins/dates/document locale/section presentation | Direct / 11, 12; 09/14 regression | `Builder Customize/Content`; cvBuilder, CvCustomizeTab; settings normalization/render model | Keep A4/Letter/document density/margins/dates/language/columns, distinct from app density. | [F:cvBuilder][F:cvBuilder.test.ts]; [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:CvBuilder][B:CvBuilderTests] | G-CV-RENDER geometry measurements/full template defaults/risk-based combos; VS-CV PDF and UI, no all-combinations claim. |
| **PRES-C10** — Undo/redo, save queue, dirty guard, history restore/preview lifecycle | Regression boundary / 09–14 | `Builder editor/history`; CvBuilderEditor; CvVariantService version history | Same single save owner, undo/redo/dirty/history restore-as-new-version; preserve separately accepted revision protocol. | [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:CvBuilder][B:CvBuilderTests] | G-CV-REV native two-client conflict and history/failed save tests; VS-CV history/undo/resize; never conflate B02. |
| **PRES-C11** — Section and whole-document AI improve/translate/instruction/grammar review | Direct / 13; entry/composition / 10 | `Builder AI Tools/content assistant`; AiSectionAssistant, DocumentAiTab; CV AI assist | Retain section/whole AI validators/review/edit/accept/reject and source/target language. | [F:ai-section-assistant][F:ai-section-assistant.test.tsx]; [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:AiWorkspace][B:AiWorkspaceTests]; [B:AiPrivacyPolicy][B:AiPrivacyPolicyTests] | G-CV-BEHAVIOR reject/malformed-ID/late/source-changed cases; VS-CV AI; factual/provider truth remains qualified. |
| **PRES-C12** — Private PDF and published anonymous CV/PDF, long searchable pages | Presentation / 11; 09–14 regression | `Builder export; /cv/:slug`; PublicCvPage, cvBuilder; HtmlPdfGenerator/shared admission | Same protected/private vs published PDF; preview/print relationship and B03 admission unchanged. | [F:public-cv-page][F:public-cv-page.test.tsx]; [B:PublicCvController][B:PublicCvControllerTests]; [B:PdfRenderAdmission][B:PdfRenderAdmissionTests] | G-CV-RENDER + native public/private/long searchable PDF/busy tests; VS-CV page evidence; deployed fonts unverified. |
| **PRES-M01** — Job-scoped manual correspondence/search/delete/paste import | Entry / 01; composition / 08b | `Workspace communication accordion`; Correspondence; CorrespondenceController | Correspondence remains primary and job-contextual manual records/search/import/delete distinct from send. | [F:end-to-end-trust-loop][F:end-to-end-trust-loop.test.tsx]; [F:correspondence-search-context][F:correspondence-search-context.test.ts]; [B:CorrespondenceController][B:CorrespondenceControllerTests] | G-WORKSPACE; VS-WORKSPACE notes/mail distinctions; global inbox page not redesigned. |
| **PRES-M02** — Gmail candidate/thread import/refresh/sync/unlink/relink/move | Entry / 01; composition / 08b | `Job communication Gmail tools`; Correspondence; GmailController/provider | Gmail job thread import/sync/link/unlink/move stays in existing owner. | [F:correspondence-gmail-import][F:correspondence-gmail-import.test.tsx]; [B:GmailController][B:GmailControllerTests]; [B:EmailOwnershipIntegration][B:EmailOwnershipIntegrationTests] | G-PACKAGE only for changed package relationships; VS-WORKSPACE provider-unavailable/links; actual provider sandbox gap retained. |
| **PRES-M03** — Global inbox filters/page/provider/link/direction/detail/source links | Entry / 01 | `/correspondence`; CorrespondenceInboxPage; EmailController | Global inbox remains independently reachable with filters/page/provider/detail, not a Document file list. | [F:correspondence-inbox-page][F:correspondence-inbox-page.test.tsx]; [B:EmailController][B:EmailControllerTests]; [B:EmailOwnershipIntegration][B:EmailOwnershipIntegrationTests] | VS-SHELL primary entry; real large mailbox/attachment binary and inbox redesign remain Phase 7. |
| **PRES-M04** — Compose/reply/provider/recipient/job; draft conflicts; confirm send/uncertainty | Entry / 01; 08b navigation regression | `/correspondence drafts/compose`; CorrespondenceInboxPage; EmailDrafts/Send/attempt store | Preserve draft revision/send confirm/uncertain attempt; no reparenting or generic form conversion. | [F:correspondence-inbox-page][F:correspondence-inbox-page.test.tsx]; [B:EmailDraftsController][B:EmailDraftsControllerTests]; [B:EmailDraftPersistence][B:EmailDraftPersistenceTests] | Existing draft/send service tests + native dirty navigation; VS-SHELL/WORKSPACE context; actual provider delivery remains separate. |
| **PRES-M05** — Review proposed jobs/link/reject/keep/notes/sync/create | Entry / 01; 08b links | `/correspondence?view=review; /correspondence/review`; GmailReviewPage, CorrespondenceInboxPage; Gmail review | Review alias/decisions/create proposal retained; no auto-create from navigation. | [F:gmail-review-page][F:gmail-review-page.test.tsx]; [F:correspondence-inbox-page][F:correspondence-inbox-page.test.tsx]; [B:GmailController][B:GmailControllerTests] | VS-SHELL alias and VS-WORKSPACE links; existing review tests, real provider review gap unchanged. |
| **PRES-M06** — Gmail/Graph/IMAP connect/status/disconnect separate from sign-in | Entry / 01, 02 links | `/settings/connected-accounts`; EmailProviderConnections; Google/Graph/IMAP controllers | Connections accessible from Settings/account; sign-in and mail/calendar authorization stay separate. | [F:email-provider-connections][F:email-provider-connections.test.tsx]; [B:MicrosoftGraphController][B:MicrosoftGraphControllerTests]; [B:ImapController][B:ImapControllerTests] | VS-SHELL/UTILITY connection links; API ownership/provider tests; real reconnect/expired tokens unverified. |
| **PRES-S01** — Personal metrics/activity/funnel/company/skills/stage/salary/next actions | Direct / 06, 07 | `/dashboard`; DashboardView; analytics/controllers | Existing reports/next actions redesigned with accurate labels and detailed Analytics destination. | [F:daily-control-loop][F:daily-control-loop.test.tsx]; [F:workflow-trust-signals][F:workflow-trust-signals.test.tsx]; [B:StageAnalytics][B:StageAnalyticsTests]; [B:AnalyticsSalary][B:AnalyticsSalaryTests] | G-METRICS exact populations/periods/chart transforms; VS-DASHBOARD/ANALYTICS; unsupported NEW metrics deferred. |
| **PRES-S02** — Owner-local five visibility preferences/onboarding dismiss/notifications | Direct / 01, 02, 06, 07 | `/dashboard; notification bell`; DashboardView, OnboardingChecklist, NotificationsPopover; notification APIs | Same notification store/onboarding and five owner-local visibility flags; no layout persistence rewrite. | [F:onboarding-checklist][F:onboarding-checklist.test.tsx]; [F:notifications-popover][F:notifications-popover.test.tsx]; [B:JobLifecycleEvent][B:JobLifecycleEventTests] | G-SHELL/G-METRICS real A/B toggles/reload/read/dismiss proof; VS-UTILITY/DASHBOARD; Phase 8 order/resize/reset deferred. |
| **PRES-S03** — Rules/reminder/table/theme/language preferences and account links | Entry/control / 00, 01, 02; table prefs / 03, 04b | `/settings tabs/mobile selector`; SettingsView, RulesSettingsCard, theme/i18n; rules/notification/auth | Settings P4 primitives and independent saves retained; UI density local; table prefs/current theme handlers same. | [F:settings-view][F:settings-view.test.tsx]; [F:theme-state][F:theme-state.test.tsx]; [B:NotificationSettingsController][B:NotificationSettingsControllerTests]; [B:RulesEngineProspect][B:RulesEngineProspectTests] | VS-SETTINGS/JOBS; native saves/error, router preference lifetime tests; SQLite concurrent write issue remains separate. |
| **PRES-S04** — AI privacy/usage/limits/Free-Pro/server entitlement/conditional billing | Entry / 01; AI locks / 08b, 13, 14 | `/settings; locked AI controls; plans`; AiPrivacySettingsCard, AiUsageCard, AccountPlanProvider; billing/entitlement | Privacy/usage/entitlements/current billing availability retained; no invented prices/trials. | [F:settings-view][F:settings-view.test.tsx]; [F:ai-usage-card][F:ai-usage-card.test.tsx]; [B:AiPrivacyPolicy][B:AiPrivacyPolicyTests]; [B:AiUsageMeter][B:AiUsageMeterTests] | Existing server Free/Pro/AI policy tests, VS-CV/WORKSPACE locked/unavailable; live billing/provider gaps retained. |
| **PRES-S05** — Account ZIP/encrypted backup/lifecycle/deletion confirmations | Entry/control / 00, 01 | `Settings Backup tab`; BackupCard; export/backup/deletion services | Settings ZIP/backup/deletion guards unchanged; export toast safely coexists with page actions. | [F:account-data-export][F:account-data-export.test.tsx]; [B:AccountDataExport][B:AccountDataExportTests]; [B:BackupController][B:BackupControllerTests] | VS-SETTINGS open toast/download; restore/paid-deletion/provider cleanup still separate release prerequisites. |
| **PRES-A01** — Admin user/create/roles/reset/delete/last-admin/self guards | Entry / 01 | `/admin/users`; AdminUsersPage; UsersController | Authorized Admin Users remains; hidden menu never substitutes for server role/last-admin guards. | [F:admin-users-page][F:admin-users-page.test.tsx]; [B:UsersController][B:UsersControllerTests]; [B:ApiAuthorizationPosture][B:ApiAuthorizationPostureTests] | VS-SHELL admin/non-admin/denied deep link; role revocation/full admin mutations remain separate. |
| **PRES-A02** — Audit list/detail/supported undo/job restore | Entry / 01 | `/admin/audit`; AdminAuditPage; AdminAuditController | Authorized Admin Audit/list/undo/restore retained; no analytics substitute. | [F:admin-audit-page][F:admin-audit-page.test.tsx]; [B:AuthAndSystemController][B:AuthAndSystemControllerTests]; [B:ApiAuthorizationPosture][B:ApiAuthorizationPostureTests] | VS-SHELL audit entry; existing backend/frontend evidence; native undo UI gap remains Phase 7. |
| **PRES-A03** — System/build/DB/AI/mail/SMTP/test/probe/benchmark/maintenance | Entry/metadata / 00, 01 | `/admin/system`; AdminSystemPage; AdminSystemController/maintenance/benchmark | Authorized Admin System and version metadata retained; no invented aggregate dashboard. | [F:admin-system-page][F:admin-system-page.test.tsx]; [B:AuthAndSystemController][B:AuthAndSystemControllerTests]; [B:MaintenanceJobDispatcher][B:MaintenanceJobDispatcherTests] | G-SHELL long metadata at 320; VS-SHELL admin/non-admin; runtime probes/delivery/maintenance not executed. |
## Inherited gaps and test additions required
Additional current foundation anchors: [semantic loaded/focus](../../../job-tracker-ui/e2e/semantic-foundations.spec.ts), [named controls/dialogs](../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts), [preview keyboard](../../../job-tracker-ui/e2e/builder-preview-keyboard.spec.ts), [Settings layout](../../../job-tracker-ui/e2e/settings-page-layout.spec.ts), [Jobs/Trash density](../../../job-tracker-ui/e2e/table-density.spec.ts), [density behavior](../../../job-tracker-ui/src/job-table-density.test.tsx), [native preservation/package expected failure](../../../job-tracker-ui/e2e/redesign-preservation.spec.ts), [account isolation](../../../job-tracker-ui/e2e/account-isolation.spec.ts) and [command preservation](../../../job-tracker-ui/src/quick-command-preservation.test.tsx). These supplement each applicable row; they are not new tests in this checkpoint.
The selected references do not replace the full original gap column. Provider-dependent auth/mail/calendar/AI/Stripe, restored production backup and rollback, real touch/AT/zoom, full advanced rendering combinations and F04 remain qualified in [OPEN_BLOCKERS](OPEN_BLOCKERS.md). P4-06's target naming/preview fixes are retained; its incomplete axe checks are not passes. No new tests are written in this planning checkpoint.
Before each slice, copy its exact sub-workflows and existing test names into the implementation trace, add missing native/negative/dirty/error fixtures from the plan, then modify the owner. Shared shell changes must run real account-switch/permission regressions; service mocks cannot prove browser state disposal. Board population parity needs >25 native records. Packages need successful capture and post-mutation archived bytes. CV needs source/sibling/item/reset/history/two-client and real PDF evidence. Analytics needs actual value/period transformations and owner preference readback, not assertions that cards render.
Route completeness is separately checked in [NAVIGATION_MIGRATION](NAVIGATION_MIGRATION.md): 31 original patterns including both aliases; new Analytics only when meaningful. Retained entry-only surfaces stay available without UI migration. This is preservation planning, not a statement that all 57 groups are ready for full redesign.
[F:landing-page.test.tsx]: ../../../job-tracker-ui/src/landing-page.test.tsx
[F:planCatalog.test.ts]: ../../../job-tracker-ui/src/planCatalog.test.ts
[B:AccountPlansTests]: ../../../JobTrackerApi.Tests/AccountPlansTests.cs
[F:login-page.test.tsx]: ../../../job-tracker-ui/src/login-page.test.tsx
[F:verify-email-page.test.tsx]: ../../../job-tracker-ui/src/verify-email-page.test.tsx
[B:LocalAuthIdentityTests]: ../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs
[B:AuthAndSystemControllerTests]: ../../../JobTrackerApi.Tests/AuthAndSystemControllerTests.cs
[F:microsoft-legacy-relink-page.test.tsx]: ../../../job-tracker-ui/src/microsoft-legacy-relink-page.test.tsx
[B:GoogleTokenValidatorTests]: ../../../JobTrackerApi.Tests/GoogleTokenValidatorTests.cs
[B:MicrosoftTokenValidatorTests]: ../../../JobTrackerApi.Tests/MicrosoftTokenValidatorTests.cs
[F:two-factor-settings.test.tsx]: ../../../job-tracker-ui/src/two-factor-settings.test.tsx
[B:TwoFactorControllerTests]: ../../../JobTrackerApi.Tests/TwoFactorControllerTests.cs
[B:SessionsControllerTests]: ../../../JobTrackerApi.Tests/SessionsControllerTests.cs
[F:session-boundary.test.ts]: ../../../job-tracker-ui/src/session-boundary.test.ts
[F:account-scoped-state.test.tsx]: ../../../job-tracker-ui/src/account-scoped-state.test.tsx
[B:AuthSessionRevocationTests]: ../../../JobTrackerApi.Tests/AuthSessionRevocationTests.cs
[F:profile-page.test.tsx]: ../../../job-tracker-ui/src/profile-page.test.tsx
[B:AvatarStorageTests]: ../../../JobTrackerApi.Tests/AvatarStorageTests.cs
[F:sidebar-active-nav.test.ts]: ../../../job-tracker-ui/src/sidebar-active-nav.test.ts
[F:app-shell-notifications.test.tsx]: ../../../job-tracker-ui/src/app-shell-notifications.test.tsx
[F:quick-command-preservation.test.tsx]: ../../../job-tracker-ui/src/quick-command-preservation.test.tsx
[B:JobApplicationsAuthorizationTests]: ../../../JobTrackerApi.Tests/JobApplicationsAuthorizationTests.cs
[B:CompanyRelationshipTests]: ../../../JobTrackerApi.Tests/CompanyRelationshipTests.cs
[F:theme-state.test.tsx]: ../../../job-tracker-ui/src/theme-state.test.tsx
[F:i18n-provider.test.tsx]: ../../../job-tracker-ui/src/i18n-provider.test.tsx
[B:SessionContextMiddlewareTests]: ../../../JobTrackerApi.Tests/SessionContextMiddlewareTests.cs
[B:CurrentUserIdLiveEvaluationTests]: ../../../JobTrackerApi.Tests/CurrentUserIdLiveEvaluationTests.cs
[F:job-discovery.test.tsx]: ../../../job-tracker-ui/src/job-discovery.test.tsx
[B:JobDiscoveryControllerTests]: ../../../JobTrackerApi.Tests/JobDiscoveryControllerTests.cs
[B:JobOpportunitySyncTests]: ../../../JobTrackerApi.Tests/JobOpportunitySyncTests.cs
[B:SavedJobSearchAlertTests]: ../../../JobTrackerApi.Tests/SavedJobSearchAlertTests.cs
[F:quick-capture.test.tsx]: ../../../job-tracker-ui/src/quick-capture.test.tsx
[B:JobImportServiceTests]: ../../../JobTrackerApi.Tests/JobImportServiceTests.cs
[B:JobImportHttpTransportTests]: ../../../JobTrackerApi.Tests/JobImportHttpTransportTests.cs
[B:JobApplicationsControllerTests]: ../../../JobTrackerApi.Tests/JobApplicationsControllerTests.cs
[F:captureUrl.test.ts]: ../../../job-tracker-ui/src/captureUrl.test.ts
[B:CvBuilderTests]: ../../../JobTrackerApi.Tests/CvBuilderTests.cs
[F:application-workspace-overlay.test.tsx]: ../../../job-tracker-ui/src/application-workspace-overlay.test.tsx
[F:daily-control-loop.test.tsx]: ../../../job-tracker-ui/src/daily-control-loop.test.tsx
[B:JobApplicationsEndpointBehaviorTests]: ../../../JobTrackerApi.Tests/JobApplicationsEndpointBehaviorTests.cs
[F:confirm-flow.test.tsx]: ../../../job-tracker-ui/src/confirm-flow.test.tsx
[B:JobLifecycleEventTests]: ../../../JobTrackerApi.Tests/JobLifecycleEventTests.cs
[F:kanban-grouped-board.test.tsx]: ../../../job-tracker-ui/src/kanban-grouped-board.test.tsx
[F:pipeline.test.ts]: ../../../job-tracker-ui/src/pipeline.test.ts
[B:JobPipelineTests]: ../../../JobTrackerApi.Tests/JobPipelineTests.cs
[F:companies-relationship.test.tsx]: ../../../job-tracker-ui/src/companies-relationship.test.tsx
[F:offer-comparison.test.tsx]: ../../../job-tracker-ui/src/offer-comparison.test.tsx
[B:AnalyticsSalaryTests]: ../../../JobTrackerApi.Tests/AnalyticsSalaryTests.cs
[F:csv-export.test.tsx]: ../../../job-tracker-ui/src/csv-export.test.tsx
[B:CsvExportTests]: ../../../JobTrackerApi.Tests/CsvExportTests.cs
[F:applicationWorkspace.test.ts]: ../../../job-tracker-ui/src/applicationWorkspace.test.ts
[B:ApplicationWorkspaceTests]: ../../../JobTrackerApi.Tests/ApplicationWorkspaceTests.cs
[F:application-intelligence.test.tsx]: ../../../job-tracker-ui/src/application-intelligence.test.tsx
[F:workflow-trust-signals.test.tsx]: ../../../job-tracker-ui/src/workflow-trust-signals.test.tsx
[B:JobApplicationsWorkflowSignalsTests]: ../../../JobTrackerApi.Tests/JobApplicationsWorkflowSignalsTests.cs
[B:JobApplicationsAppliedDateHistoryTests]: ../../../JobTrackerApi.Tests/JobApplicationsAppliedDateHistoryTests.cs
[F:application-workflow-assist.test.tsx]: ../../../job-tracker-ui/src/application-workflow-assist.test.tsx
[B:ApplicationIntelligenceTests]: ../../../JobTrackerApi.Tests/ApplicationIntelligenceTests.cs
[B:StrategySnapshotOperationTests]: ../../../JobTrackerApi.Tests/StrategySnapshotOperationTests.cs
[F:application-checklist.test.tsx]: ../../../job-tracker-ui/src/application-checklist.test.tsx
[B:ApplicationChecklistTests]: ../../../JobTrackerApi.Tests/ApplicationChecklistTests.cs
[F:application-assets.test.tsx]: ../../../job-tracker-ui/src/application-assets.test.tsx
[F:cv-builder-deep-link.test.tsx]: ../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx
[B:ApplicationAssetsTests]: ../../../JobTrackerApi.Tests/ApplicationAssetsTests.cs
[F:application-drafts.test.ts]: ../../../job-tracker-ui/src/application-drafts.test.ts
[B:SubmittedApplicationPackageTests]: ../../../JobTrackerApi.Tests/SubmittedApplicationPackageTests.cs
[B:JobApplicationsApplicationPackageTests]: ../../../JobTrackerApi.Tests/JobApplicationsApplicationPackageTests.cs
[F:attachments.test.tsx]: ../../../job-tracker-ui/src/attachments.test.tsx
[B:AttachmentsControllerTests]: ../../../JobTrackerApi.Tests/AttachmentsControllerTests.cs
[B:AttachmentConsistencyTests]: ../../../JobTrackerApi.Tests/AttachmentConsistencyTests.cs
[F:interview-prep.test.tsx]: ../../../job-tracker-ui/src/interview-prep.test.tsx
[B:InterviewPrepPersistenceTests]: ../../../JobTrackerApi.Tests/InterviewPrepPersistenceTests.cs
[B:InterviewAiContextTests]: ../../../JobTrackerApi.Tests/InterviewAiContextTests.cs
[B:InterviewPrepTests]: ../../../JobTrackerApi.Tests/InterviewPrepTests.cs
[B:JobApplicationsFollowUpDraftTests]: ../../../JobTrackerApi.Tests/JobApplicationsFollowUpDraftTests.cs
[F:application-calendar.test.tsx]: ../../../job-tracker-ui/src/application-calendar.test.tsx
[F:settings-view.test.tsx]: ../../../job-tracker-ui/src/settings-view.test.tsx
[B:ApplicationCalendarControllerTests]: ../../../JobTrackerApi.Tests/ApplicationCalendarControllerTests.cs
[B:RulesEngineProspectTests]: ../../../JobTrackerApi.Tests/RulesEngineProspectTests.cs
[B:NotificationSettingsControllerTests]: ../../../JobTrackerApi.Tests/NotificationSettingsControllerTests.cs
[F:operations-page.test.tsx]: ../../../job-tracker-ui/src/operations-page.test.tsx
[B:OperationsControllerTests]: ../../../JobTrackerApi.Tests/OperationsControllerTests.cs
[B:UserOperationStoreTests]: ../../../JobTrackerApi.Tests/UserOperationStoreTests.cs
[B:CareerProfileControllerTests]: ../../../JobTrackerApi.Tests/CareerProfileControllerTests.cs
[B:CareerProfileServiceTests]: ../../../JobTrackerApi.Tests/CareerProfileServiceTests.cs
[F:career-workspace-page.test.tsx]: ../../../job-tracker-ui/src/career-workspace-page.test.tsx
[B:ProfileCvControllerTests]: ../../../JobTrackerApi.Tests/ProfileCvControllerTests.cs
[B:CvProfileDiffServiceTests]: ../../../JobTrackerApi.Tests/CvProfileDiffServiceTests.cs
[F:career-evidence.test.tsx]: ../../../job-tracker-ui/src/career-evidence.test.tsx
[B:CareerEvidenceControllerTests]: ../../../JobTrackerApi.Tests/CareerEvidenceControllerTests.cs
[F:cv-builder-page.test.tsx]: ../../../job-tracker-ui/src/cv-builder-page.test.tsx
[F:cv-template-thumbnail.test.tsx]: ../../../job-tracker-ui/src/cv-template-thumbnail.test.tsx
[B:PublicCvControllerTests]: ../../../JobTrackerApi.Tests/PublicCvControllerTests.cs
[F:cvBuilder.test.ts]: ../../../job-tracker-ui/src/cvBuilder.test.ts
[F:ai-section-assistant.test.tsx]: ../../../job-tracker-ui/src/ai-section-assistant.test.tsx
[B:AiWorkspaceTests]: ../../../JobTrackerApi.Tests/AiWorkspaceTests.cs
[B:AiPrivacyPolicyTests]: ../../../JobTrackerApi.Tests/AiPrivacyPolicyTests.cs
[F:public-cv-page.test.tsx]: ../../../job-tracker-ui/src/public-cv-page.test.tsx
[B:PdfRenderAdmissionTests]: ../../../JobTrackerApi.Tests/PdfRenderAdmissionTests.cs
[F:end-to-end-trust-loop.test.tsx]: ../../../job-tracker-ui/src/end-to-end-trust-loop.test.tsx
[F:correspondence-search-context.test.ts]: ../../../job-tracker-ui/src/correspondence-search-context.test.ts
[B:CorrespondenceControllerTests]: ../../../JobTrackerApi.Tests/CorrespondenceControllerTests.cs
[F:correspondence-gmail-import.test.tsx]: ../../../job-tracker-ui/src/correspondence-gmail-import.test.tsx
[B:GmailControllerTests]: ../../../JobTrackerApi.Tests/GmailControllerTests.cs
[B:EmailOwnershipIntegrationTests]: ../../../JobTrackerApi.Tests/EmailOwnershipIntegrationTests.cs
[F:correspondence-inbox-page.test.tsx]: ../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx
[B:EmailControllerTests]: ../../../JobTrackerApi.Tests/EmailControllerTests.cs
[B:EmailDraftsControllerTests]: ../../../JobTrackerApi.Tests/EmailDraftsControllerTests.cs
[B:EmailDraftPersistenceTests]: ../../../JobTrackerApi.Tests/EmailDraftPersistenceTests.cs
[F:gmail-review-page.test.tsx]: ../../../job-tracker-ui/src/gmail-review-page.test.tsx
[F:email-provider-connections.test.tsx]: ../../../job-tracker-ui/src/email-provider-connections.test.tsx
[B:MicrosoftGraphControllerTests]: ../../../JobTrackerApi.Tests/MicrosoftGraphControllerTests.cs
[B:ImapControllerTests]: ../../../JobTrackerApi.Tests/ImapControllerTests.cs
[B:StageAnalyticsTests]: ../../../JobTrackerApi.Tests/StageAnalyticsTests.cs
[F:onboarding-checklist.test.tsx]: ../../../job-tracker-ui/src/onboarding-checklist.test.tsx
[F:notifications-popover.test.tsx]: ../../../job-tracker-ui/src/notifications-popover.test.tsx
[F:ai-usage-card.test.tsx]: ../../../job-tracker-ui/src/ai-usage-card.test.tsx
[B:AiUsageMeterTests]: ../../../JobTrackerApi.Tests/AiUsageMeterTests.cs
[F:account-data-export.test.tsx]: ../../../job-tracker-ui/src/account-data-export.test.tsx
[B:AccountDataExportTests]: ../../../JobTrackerApi.Tests/AccountDataExportTests.cs
[B:BackupControllerTests]: ../../../JobTrackerApi.Tests/BackupControllerTests.cs
[F:admin-users-page.test.tsx]: ../../../job-tracker-ui/src/admin-users-page.test.tsx
[B:UsersControllerTests]: ../../../JobTrackerApi.Tests/UsersControllerTests.cs
[B:ApiAuthorizationPostureTests]: ../../../JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs
[F:admin-audit-page.test.tsx]: ../../../job-tracker-ui/src/admin-audit-page.test.tsx
[F:admin-system-page.test.tsx]: ../../../job-tracker-ui/src/admin-system-page.test.tsx
[B:MaintenanceJobDispatcherTests]: ../../../JobTrackerApi.Tests/MaintenanceJobDispatcherTests.cs