# Phase 4 preservation acceptance matrix Scope: `c99f4fb7` application, validated at P4-06. All **57/57** original groups are reconciled; this is mapping completeness, **not exhaustive behavioral coverage or a 100% acceptance score**. Each row keeps every sub-capability, route and owner in its [Phase 2 source contract](../../phase-2/PRESERVATION_MATRIX.md) and [Phase 3 impact](../../phase-3/PRESERVATION_IMPACT_MATRIX.md). Touch classification: **Direct** = a consumer/presentation owner changed; **Shared** = existing modal/notice/editor caller receives the change; **Theme only** = no domain owner change, but shared MUI styling reaches the surface. E09 is an unchanged security regression dependency. Documentation-comment changes caused by the earlier docs restructure are not feature changes. Original assertions marked NEW below refer to their Phase 2 addition, not new P4-06 tests; P4-06 adds no test cases. **Scoped acceptance** accepts the bounded Phase 4 change, not untested sub-workflows. **Regression retained** means mapped tests still pass and the domain owner was not restructured. **Conditional** identifies an affected migration gate; passing component/service tests cannot replace missing native/provider/manual evidence. V1–V5/M1 are defined in the [acceptance report](README.md#visual-accessibility-and-responsive-evidence). All inherited gaps below remain unless the extra evidence explicitly narrows one (for example Trash restore and preview keyboard access). F04 remains open for every row's production use. | PRES ID / capability | Phase 4 touch | P4 slices | Automated evidence (original behavior assertions plus additions) | Visual/UX evidence | Known limitations and migration gate | Acceptance | |---|---|---|---|---|---|---| | **PRES-E01** — Public product/plans; honest unavailable billing | Theme only | 01 | [F:landing-page][F:landing-page.test.tsx], [F:planCatalog][F:planCatalog.test.ts], [F:LandingPage.authRedirect][F:LandingPage.authRedirect.test.tsx]; [B:AccountPlans][B:AccountPlansTests]. Free/Pro copy, unavailable checkout and authenticated redirect | Inherited public accessibility/smoke; no new marketing review. | Actual checkout/provider availability; public mobile/keyboard review | Regression retained | | **PRES-E02** — Local login/register/remember, challenge, reset and verification | Theme only | 01 | [F:login-page][F:login-page.test.tsx], [F:verify-email-page][F:verify-email-page.test.tsx], [F:turnstile-widget][F:turnstile-widget.test.tsx]; [B:LocalAuthIdentity][B:LocalAuthIdentityTests], [B:AuthAndSystemController][B:AuthAndSystemControllerTests]. Configuration gates, two-factor branch, safe redirect, verification outcomes; smoke login | Inherited native login smoke; provider/reset paths not visually certified. | Real reset-email delivery, Turnstile widget/browser configuration, complete reset submit journey | Regression retained | | **PRES-E03** — Google/Microsoft login, link, legacy relink and popup results | Theme only | 01 | [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], [B:LocalAuthIdentity][B:LocalAuthIdentityTests]. Provider failure/relink presentation and token validation | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Real consent/popups, revoked grants, provider sandbox; callbacks must retain origin/state | Regression retained | | **PRES-E04** — 2FA challenge/recovery/setup/disable; trusted-device revocation | Theme only | 01 | [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]. Setup/recovery presentation, disable failure/retry; server trusted-device/session checks | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Real mobile authenticator/recovery and trusted-device UI traversal | Regression retained | | **PRES-E05** — Session list/current device, revoke one/others, logout | Theme only | 01 | [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]. Own active sessions only, revoke ownership and next-request invalidation; B02 browser logout | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Session-list card UI selection/refresh after remote revoke | Regression retained | | **PRES-E06** — Avatar, account names/headline, email change and password | Theme only | 01 | [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]. Email change password/confirmation contract; safe avatar storage and identity endpoints | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Avatar upload/remove and password-change browser journeys | Regression retained | | **PRES-E07** — Desktop collapse/mobile drawer, active nav and command search/actions | Direct | 01, 02, 04 (shell/command presentation only) | [F:sidebar-active-nav][F:sidebar-active-nav.test.ts], [F:app-shell-notifications][F:app-shell-notifications.test.tsx], [F:quick-command-preservation][F:quick-command-preservation.test.tsx]; [B:JobApplicationsAuthorization][B:JobApplicationsAuthorizationTests], [B:CompanyRelationship][B:CompanyRelationshipTests]. Active matching and notification entry; NEW job/company destinations, reviewed add and search reset; NEW browser keyboard navigation Additional: [semantic-foundations](../../../../job-tracker-ui/e2e/semantic-foundations.spec.ts), [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts), [settings-page-layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts). | V1–V5 plus M1; collapsed/mobile defect recorded. | Drawer focus return and collapse persistence in EN/NB; all command destinations before shell migration **Gate:** P4-02-D01, P4-06-O01/O02 before shell/command migration. | Conditional | | **PRES-E08** — Theme/system, EN/NB hydration, toast/confirm/prompt and errors | Direct | 01, 02, 04, 05 | [F:theme-state][F:theme-state.test.tsx], [F:i18n-provider][F:i18n-provider.test.tsx], [F:confirm][F:confirm.test.tsx], [F:prompt][F:prompt.test.tsx], [F:dialog-flow][F:dialog-flow.test.tsx]; [B:LocalAuthIdentity][B:LocalAuthIdentityTests]. Hydrated theme/language, confirmation/cancellation and dialog behavior Additional: [semantic-foundations](../../../../job-tracker-ui/e2e/semantic-foundations.spec.ts), [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts), [settings-page-layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts), [table-density](../../../../job-tracker-ui/e2e/table-density.spec.ts). | V1–V5 plus M1; every theme/locale pair represented, not every route/state. | Not-found/error-boundary retry route; full locale/theme/state cross-product and OS theme changes **Gate:** P4-03-D01 tooltip and P4-04-O01 feedback placement before affected shared-state acceptance. | Conditional | | **PRES-E09** — Account-switch private-state disposal and stale request rejection | Unchanged identity boundary | 01–05 regression dependency | [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], [B:OwnershipGuard][B:OwnershipGuardTests]. B02 stale mutation/read abort, account-scoped state; four real-API/two-tab account-isolation browser cases | Four native account-isolation cases; screenshots do not prove privacy. | Real BFCache variations and long offline retry; preserve server precondition even with old bundles | Regression retained | | **PRES-J01** — NAV discovery/filter/sort/source/deadline/details | Theme only | 01 | [F:job-discovery][F:job-discovery.test.tsx]; [B:JobDiscoveryController][B:JobDiscoveryControllerTests], [B:JobOpportunitySync][B:JobOpportunitySyncTests]. Search/sort/source details, empty versus failure/retry; responsive discovery browser | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Live NAV freshness/API availability; long result keyboard traversal | Regression retained | | **PRES-J02** — Saved searches, run/delete/alerts, result changes/dismissal | Shared | 02 (confirm) | [F:job-discovery][F:job-discovery.test.tsx]; [B:SavedJobSearchAlert][B:SavedJobSearchAlertTests], [B:JobDiscoveryController][B:JobDiscoveryControllerTests]. Saved search run, pause and dismiss controls; owner-scoped alert results Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Scheduler-to-notification browser journey, delete confirmation on mobile | Regression retained | | **PRES-J03** — Reviewed manual/URL/paste job create, company/tags/dates, duplicates | Theme only | 01 | [F:quick-capture][F:quick-capture.test.tsx]; [B:JobImportService][B:JobImportServiceTests], [B:JobImportHttpTransport][B:JobImportHttpTransportTests], [B:JobApplicationsController][B:JobApplicationsControllerTests]. Preview before write, URL prefills, manual browser create; B01 real connection boundary | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Duplicate warning and company/date edge UI; creation-intent idempotency remains separate unresolved contract | Regression retained | | **PRES-J04** — Extension/bookmarklet/share capture; post-create attachment/CV | Direct | 04 (Settings capture section) | [F:captureUrl][F:captureUrl.test.ts], [F:quick-capture][F:quick-capture.test.tsx], [F:quick-command-preservation][F:quick-command-preservation.test.tsx]; [B:JobImportService][B:JobImportServiceTests], [B:CvBuilder][B:CvBuilderTests]. Capture URL encoding/review/no auto-create, post-create CV; extension node tests; NEW keyboard add opens review only Additional: [settings-page-layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts). | V4 Settings capture section; installed extension not exercised. | Installed extension permissions/browser-share flow and optional attachment failure recovery | Scoped acceptance | | **PRES-J05** — Job filters/sort/page/columns, saved views and row/mobile actions | Direct | 04, 05 | [F:application-workspace-overlay][F:application-workspace-overlay.test.tsx], [F:account-scoped-state][F:account-scoped-state.test.tsx], [F:daily-control-loop][F:daily-control-loop.test.tsx]; [B:JobApplicationsController][B:JobApplicationsControllerTests], [B:JobApplicationsEndpointBehavior][B:JobApplicationsEndpointBehaviorTests]. URL hydration, selection does not open row, list return/focus; browser dirty/full workspace Additional: [settings-page-layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts), [table-density](../../../../job-tracker-ui/e2e/table-density.spec.ts). | V5 both densities, 1440/1024/768 table, 390/320 cards; native row opening. | Saved-view CRUD browser journey, page-size changes with dirty nested state P4-05 narrows selection/sort/page/columns/reflow gaps; saved-view CRUD and dirty nested page-size remain. | Scoped acceptance | | **PRES-J06** — Bulk status/delete, soft delete/trash/restore and job edit | Direct | 02 (confirm), 05 | [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], [B:JobLifecycleEvent][B:JobLifecycleEventTests]. Selection and destructive confirmation primitive; server CRUD/ownership/lifecycle behavior Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts), [table-density](../../../../job-tracker-ui/e2e/table-density.spec.ts). | V5 select/delete/Trash restore; no bulk partial-failure certification. | Bulk partial failure and trash→restore UI journey; shared confirm tests alone do not prove bulk flow P4-05 now proves native Trash restore; bulk partial failure remains. | Scoped acceptance | | **PRES-J07** — Kanban grouped statuses, pointer/keyboard move and precise menu | Shared | 02 (notice) | [F:kanban-grouped-board][F:kanban-grouped-board.test.tsx], [F:pipeline][F:pipeline.test.ts]; [B:JobPipeline][B:JobPipelineTests]. Keyboard pickup/drop, failed move keeps card, custom group and precise stages; dark browser test Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | V1 status semantics and inherited dark Kanban case; no touch device. | Touch drag, keyboard cancel/focus after responsive view switching | Regression retained | | **PRES-J08** — Company/contact edits, pipeline dates and linked-job history | Shared | 02 (notice/confirm) | [F:companies-relationship][F:companies-relationship.test.tsx], [F:quick-command-preservation][F:quick-command-preservation.test.tsx]; [B:CompanyRelationship][B:CompanyRelationshipTests]. Job history/context and NEW command company destination Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | V1 loading/error/empty/populated; V2 dialog, error and focus return. | All contact/date edits persisted through browser; source URL safety **Gate:** P4-02-D02 durable accessible modal save error before company-form migration. | Conditional | | **PRES-J09** — Recorded offers/compensation/deadlines/notes and source links | Theme only | 01 | [F:offer-comparison][F:offer-comparison.test.tsx]; [B:AnalyticsSalary][B:AnalyticsSalaryTests], [B:JobApplicationsEndpointBehavior][B:JobApplicationsEndpointBehaviorTests]. Recorded values/empty states and salary normalization | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Mobile many-offer comparison; localized currency/date visual review | Regression retained | | **PRES-J10** — CSV/JSON export, JSON import and CSV-to-JSON conversion | Direct | 04 | [F:csv-export][F:csv-export.test.tsx]; [B:CsvExport][B:CsvExportTests], [B:JobApplicationsController][B:JobApplicationsControllerTests]. B05 formula/quotes/UTF-8/typed dates and numeric behavior; CSV browser byte download Additional: [settings-page-layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts). | Inherited native CSV byte download; V4 export placement; no desktop spreadsheet app. | Full browser JSON import/count/roundtrip; Excel/LibreOffice compatibility remains separately bounded | Scoped acceptance | | **PRES-W01** — Full workspace, sections, legacy links and optional reusable overlay | Shared | 02 (confirm) | [F:application-workspace-overlay][F:application-workspace-overlay.test.tsx], [F:applicationWorkspace][F:applicationWorkspace.test.ts], [F:application-route-contracts][F:application-route-contracts.test.ts]; [B:ApplicationWorkspace][B:ApplicationWorkspaceTests]. Deep links, dirty cancel/discard, missing job and back/filter/focus; NEW actual App command/legacy entry Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | V5 keyboard entry/back and P2 dirty-route/legacy-link browser. | No active production caller of override/onClose overlay props found; full overlay parity needs a host fixture before adoption **Gate:** P4-02-D03 before mobile workspace migration; P2-D01 before package restructuring. | Conditional | | **PRES-W02** — Detail/status/progression, recruiter/dates/description/timeline | Theme only | 01 | [F:application-intelligence][F:application-intelligence.test.tsx], [F:workflow-trust-signals][F:workflow-trust-signals.test.tsx], [F:daily-control-loop][F:daily-control-loop.test.tsx]; [B:JobApplicationsWorkflowSignals][B:JobApplicationsWorkflowSignalsTests], [B:JobApplicationsAppliedDateHistory][B:JobApplicationsAppliedDateHistoryTests]. Timeline source labels, next-action routing and applied-date history | V2 populated workspace and V5 status/row entry; mobile progress defect retained. | Edit/status→timeline real-browser sequence across locale/timezone **Gate:** P4-02-D03 before mobile progress/workspace migration. | Conditional | | **PRES-W03** — Analysis, match/gaps, strategy and reviewed status/workflow suggestions | Theme only | 01 | [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], [B:JobApplicationsEndpointBehavior][B:JobApplicationsEndpointBehaviorTests]. Loading/error/empty states, match and explicit suggested action behavior | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Actual model truthfulness/evaluation; source freshness and cancelled generation browser states | Regression retained | | **PRES-W04** — Checklist create/edit/complete/delete/order and next action | Theme only | 01 | [F:application-checklist][F:application-checklist.test.tsx]; [B:ApplicationChecklist][B:ApplicationChecklistTests]. Persisted item actions and keyboard reorder; localized readiness | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Real-API mobile edit/delete and interruption recovery | Regression retained | | **PRES-W05** — Attach/select/create/tailor CV and source context | Theme only | 01 | [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]. Attach re-points only, detach keeps variant, foreign owner denied, tailoring never writes source; B02 API browser | P2 linked-CV setup/API assertions; successful SQLite tailoring unavailable. | P2-D01 SQLite tailoring ordering blocks successful real-browser guidance; actual attach→render relationship beyond existing service coverage **Gate:** P2-D01 native tailoring/capture success before relationship restructuring. | Conditional | | **PRES-W06** — Cover-letter manual/AI review, versions/restore and dirty protection | Direct | 02 (AI option labels) | [F:application-assets][F:application-assets.test.tsx], [F:application-workspace-overlay][F:application-workspace-overlay.test.tsx]; [B:ApplicationAssets][B:ApplicationAssetsTests]. Manual save/discard/restore, linked-CV AI explicit apply then save, version history owner scope Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | V2 cover-letter options/modal; AI accept/reject are component tests, not real model output. | Whole-browser AI reject/provider success and cover-letter history persistence; no actual model called here **Gate:** P4-02-D04 context interpolation before affected AI UI migration. | Conditional | | **PRES-W07** — Application drafts and immutable submitted package/archived binaries | Theme only | 01 | [F:application-assets][F:application-assets.test.tsx], [F:application-drafts][F:application-drafts.test.ts]; [B:SubmittedApplicationPackage][B:SubmittedApplicationPackageTests], [B:JobApplicationsApplicationPackage][B:JobApplicationsApplicationPackageTests], [B:JobApplicationsEndpointBehavior][B:JobApplicationsEndpointBehaviorTests]. Drafts keep ordinary notes; service frozen document/hash/copy-failure/tenant assertions; NEW native browser capture oracle | P2-D01 fails at native capture; archive assertions remain unreached. | P2-D01 expected failure: SQLite capture 500. NEW post-capture mutation/archive assertions are NOT reached. Require real storage/provider success before package restructuring **Gate:** P2-D01 native capture/archive success required; this workflow is NOT accepted end to end. | Conditional | | **PRES-W08** — Attachments upload/category/name/AI consent/preview/download/delete | Direct | 02 (attachment names) | [F:attachments][F:attachments.test.tsx]; [B:AttachmentsController][B:AttachmentsControllerTests], [B:AttachmentConsistency][B:AttachmentConsistencyTests], [B:AttachmentFlagsRecompute][B:AttachmentFlagsRecomputeTests]. Empty/flag controls, storage consistency and owned download; NEW browser fixture uploads real UTF-8 binary Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | V2 real upload/purpose/name/delete dialog; frozen archive path blocked by P2-D01. | Archived bytes after live delete blocked by W07; drag/drop, rename and download browser journey **Gate:** P2-D01 archived-byte/delete proof required before package/document relationship migration. | Conditional | | **PRES-W09** — Interview questions/answers/ready/manual removal/AI review | Shared | 02 (confirm) | [F:interview-prep][F:interview-prep.test.tsx]; [B:InterviewPrepPersistence][B:InterviewPrepPersistenceTests], [B:InterviewAiContext][B:InterviewAiContextTests], [B:InterviewPrep][B:InterviewPrepTests]. Explicit AI add, manual/answer readiness, relevant prompt context without invented defaults Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Populated mobile keyboard editing and real reload; actual model quality separate | Regression retained | | **PRES-W10** — Debrief/follow-up draft/date/readiness | Theme only | 01 | [F:interview-prep][F:interview-prep.test.tsx]; [B:JobApplicationsFollowUpDraft][B:JobApplicationsFollowUpDraftTests], [B:InterviewPrep][B:InterviewPrepTests]. Neutral debrief template and follow-up content handling | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Timezone/reload browser chain; calendar defects remain outside Phase 2 | Regression retained | | **PRES-W11** — Reminder rules/actions/notifications, ICS and Google/Outlook events | Shared | 02 (notice), 04 (Settings rules) | [F:daily-control-loop][F:daily-control-loop.test.tsx], [F:application-calendar][F:application-calendar.test.tsx], [F:settings-view][F:settings-view.test.tsx]; [B:ApplicationCalendarController][B:ApplicationCalendarControllerTests], [B:RulesEngineProspect][B:RulesEngineProspectTests], [B:NotificationSettingsController][B:NotificationSettingsControllerTests]. Provider write confirmation, ICS and permission; NEW per-scenario rule payload and real saved preference checks Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts), [settings-page-layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts). | V4 rule/notification persistence and failure; real calendar providers untested. | DST/date-only correctness and real provider timezone must be resolved separately; initial rules 500 not reproduced | Regression retained | | **PRES-W12** — Async progress/failure/retry/cancel/notifications | Theme only | 01 | [F:operations-page][F:operations-page.test.tsx], [F:profile-page][F:profile-page.test.tsx]; [B:OperationsController][B:OperationsControllerTests], [B:UserOperationStore][B:UserOperationStoreTests], [B:CvProcessingOperation][B:CvProcessingOperationTests]. Failure retry/cancel, durable operation IDs; extraction polling keeps dirty fields | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Long-lived disconnect/reconnect and worker fault/recovery operational gaps | Regression retained | | **PRES-C01** — Canonical structured career data and long-tail/custom sections | Theme only | 01 | [F:profile-page][F:profile-page.test.tsx]; [B:CareerProfileController][B:CareerProfileControllerTests], [B:CareerProfileService][B:CareerProfileServiceTests]. Structured field changes propagate to saved singleton, stable child IDs and relational roundtrip; NEW CV edit leaves master unchanged | P2 and V3 canonical/sibling unchanged after variant edits; not all profile sections. | Every long-tail section/mobile keyboard save; concurrent canonical saves outside scope | Regression retained | | **PRES-C02** — Profile overview/completeness/import guidance/raw copy/history/restore | Theme only | 01 | [F:career-workspace-page][F:career-workspace-page.test.tsx], [F:profile-page][F:profile-page.test.tsx]; [B:CareerProfileService][B:CareerProfileServiceTests]. First/returning state, completeness/errors and non-destructive history restore | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Clipboard/avatar and full browser historical restore; real extraction quality separate | Regression retained | | **PRES-C03** — Upload/extract/rebuild/reprocess/diff/select/accept/discard/retry/cancel | Theme only | 01 | [F:profile-page][F:profile-page.test.tsx]; [B:ProfileCvController][B:ProfileCvControllerTests], [B:CvProfileDiffService][B:CvProfileDiffServiceTests], [B:CvProcessingOperation][B:CvProcessingOperationTests], [B:CvExtractionCoverage][B:CvExtractionCoverageTests]. Queue/upload, operation retry, pending explicit apply and polling retains edits; extraction/diff service checks | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Manual low-confidence deselection/discard UI; OCR/scanned/unusual real-document quality | Regression retained | | **PRES-C04** — Evidence bank source/category/tags/add/list/delete | Shared | 02 (confirm) | [F:career-evidence][F:career-evidence.test.tsx]; [B:CareerEvidenceController][B:CareerEvidenceControllerTests]. Sourced evidence creation, tags and owner boundaries Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Delete and many-item search/keyboard browser flow | Regression retained | | **PRES-C05** — CV library create/copy/delete/templates/share/publication/PDF | Shared | 02 (confirm) | [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]. General/job-specific creation, delete cancel, duplication fresh slug, public revoke/republish; existing public browser PDF Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | Inherited library/public CV/PDF smoke; complete publication chain not exercised. | Complete library→publish/unpublish/revoke old link browser chain | Regression retained | | **PRES-C06** — Studio tabs, preview debounce/pages/fit/save state/mobile panes | Direct | 01, 03 | [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:CvBuilder][B:CvBuilderTests]. Five tabs, deep-link/error/save state and preview retry; NEW real mobile Edit/Preview, reload and desktop split Additional: [semantic-foundations](../../../../job-tracker-ui/e2e/semantic-foundations.spec.ts), [builder-preview-keyboard](../../../../job-tracker-ui/e2e/builder-preview-keyboard.spec.ts). | V1/V2/V3 loaded panes, keyboard scroll, retry, edit/preview breakpoints. | Keyboard preview scroll/focus (known F15), all theme/page interactions **Gate:** Tooltip P4-03-D01, revision F01/D01 and dedicated rendering fidelity gates before broader editor work. P4-03 closes the preview keyboard-access portion; template/print fidelity is not closed. | Conditional | | **PRES-C07** — Visibility/order/custom sections and item/document overrides | Direct | 01 (omitted-section contrast), 02 (confirm), 03 | [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx], [F:cvBuilder][F:cvBuilder.test.ts]; [B:CvBuilder][B:CvBuilderTests]. Add/edit/delete/order/hide, override renders without master change; NEW persisted headline and sibling isolation Additional: [semantic-foundations](../../../../job-tracker-ui/e2e/semantic-foundations.spec.ts), [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts), [builder-preview-keyboard](../../../../job-tracker-ui/e2e/builder-preview-keyboard.spec.ts). | V1 omitted labels; V3 override/undo/redo; canonical/sibling API readback. | Native drag/touch and override reset-to-source browser flow; item-level real saved overrides beyond headline | Scoped acceptance | | **PRES-C08** — Capability-aware templates/typography/color/header/skills/sidebar/photo | Direct | 02 | [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx], [F:cvBuilder][F:cvBuilder.test.ts], [F:cv-template-thumbnail][F:cv-template-thumbnail.test.tsx]; [B:CvBuilder][B:CvBuilderTests]. Template change clears incompatible defaults; normalized overrides reach shared renderer, safe color/markdown Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | V1/V2 named template/customize controls; complete template fidelity is unverified. | Complete template×advanced control visual/render parity; inaccessible color controls baseline **Gate:** Complete template/control visual fidelity before template migration. P4-02 closes the specifically unnamed option controls; not every custom color-widget interaction. | Conditional | | **PRES-C09** — A4/Letter/density/margins/dates/document locale/section presentation | Direct | 02 | [F:cvBuilder][F:cvBuilder.test.ts], [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:CvBuilder][B:CvBuilderTests]. Page sizes, NB controls/default labels/dates, section grid/columns; existing long searchable PDF browser Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | V2 page-size controls; V3 preview viewport, not print margin correctness. | All advanced combinations, print margins and long localized text manual review **Gate:** Dedicated margins/pagination/render-output acceptance before CV presentation migration. | Conditional | | **PRES-C10** — Undo/redo, save queue, dirty guard, history restore/preview lifecycle | Shared | 02 (confirm), 03 (same editor) | [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:CvBuilder][B:CvBuilderTests]. Undo/redo, failed save retry, guard cancel, restore-as-new-version; NEW saved override reload Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts), [builder-preview-keyboard](../../../../job-tracker-ui/e2e/builder-preview-keyboard.spec.ts). | V3 autosave/undo/redo/viewport/preview retry; stale browser writes remain separate. | Multi-browser stale-CV revision remains separate defect; history-tab browser restore and offline navigation **Gate:** F01/D01 revision contract before save/history restructuring; serialize editor work. | Conditional | | **PRES-C11** — Section and whole-document AI improve/translate/instruction/grammar review | Theme only | 01 | [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], [B:ProEntitlementAuthorization][B:ProEntitlementAuthorizationTests]. NEW reject/close, edited acceptance, failure retry, whole-document apply/reject and malformed/missing/duplicate IDs rejected; no implicit PUT | V1/P2 Free locks; component accept/reject/regenerate evidence only; no provider invocation. | Real model factual validation and section→whole review interactions; Free-disabled controls proven in new browser | Regression retained | | **PRES-C12** — Private PDF and published anonymous CV/PDF, long searchable pages | Theme only | 01 | [F:public-cv-page][F:public-cv-page.test.tsx]; [B:PublicCvController][B:PublicCvControllerTests], [B:PdfRenderAdmission][B:PdfRenderAdmissionTests], [B:CvBuilder][B:CvBuilderTests]. Anonymous public rendering versus private refusal; B03 shared capacity/failure; real multipage/public PDF browser | Inherited actual multipage/public PDF smoke; V3 scroll, not print-engine certification. | All templates/print engines; deployed Chromium/font behavior and PDF manual inspection **Gate:** Dedicated real preview/PDF fidelity before rendering migration. | Conditional | | **PRES-M01** — Job-scoped manual correspondence/search/delete/paste import | Shared | 02 (confirm) | [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]. Canonical communication entry does not send mail, job context and CRUD ownership Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Manual note edit/delete/paste-import real browser; preserve send/log distinction | Regression retained | | **PRES-M02** — Gmail candidate/thread import/refresh/sync/unlink/relink/move | Theme only | 01 | [F:correspondence-gmail-import][F:correspondence-gmail-import.test.tsx]; [B:GmailController][B:GmailControllerTests], [B:EmailOwnershipIntegration][B:EmailOwnershipIntegrationTests]. Candidates, selected thread import/move/refresh and diagnostics; owner-bound relationships | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Real provider/sandbox threads, multi-account reconnect and sync failure | Regression retained | | **PRES-M03** — Global inbox filters/page/provider/link/direction/detail/source links | Theme only | 01 | [F:correspondence-inbox-page][F:correspondence-inbox-page.test.tsx]; [B:EmailController][B:EmailControllerTests], [B:EmailOwnershipIntegration][B:EmailOwnershipIntegrationTests]. Filter/pagination/detail/provider read failure distinct from empty | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Real large mailbox and attachment binary browser flows | Regression retained | | **PRES-M04** — Compose/reply/provider/recipient/job; draft conflicts; confirm send/uncertainty | Shared | 02 (confirm) | [F:correspondence-inbox-page][F:correspondence-inbox-page.test.tsx]; [B:EmailDraftsController][B:EmailDraftsControllerTests], [B:EmailDraftPersistence][B:EmailDraftPersistenceTests], [B:EmailSendController][B:EmailSendControllerTests], [B:EmailSendAttemptStore][B:EmailSendAttemptStoreTests], [B:EmailProviderDelivery][B:EmailProviderDeliveryTests]. Revision conflicts, explicit send confirm, uncertain state has no automatic retry, deliberate new attempt Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Actual sandbox mail delivery and browser reconnect; do not loosen idempotency/conflict guards | Regression retained | | **PRES-M05** — Review proposed jobs/link/reject/keep/notes/sync/create | Theme only | 01 | [F:gmail-review-page][F:gmail-review-page.test.tsx], [F:correspondence-inbox-page][F:correspondence-inbox-page.test.tsx]; [B:GmailController][B:GmailControllerTests]. Review decisions/localization and inbox review entry | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Real App legacy alias and suggested-job create browser workflow | Regression retained | | **PRES-M06** — Gmail/Graph/IMAP connect/status/disconnect separate from sign-in | Direct | 04 (entry action only) | [F:email-provider-connections][F:email-provider-connections.test.tsx]; [B:MicrosoftGraphController][B:MicrosoftGraphControllerTests], [B:ImapController][B:ImapControllerTests], [B:ImapServiceSsrfGuard][B:ImapServiceSsrfGuardTests], [B:GmailController][B:GmailControllerTests]. Connection state/NB/IMAP form and provider ownership; outbound IMAP safety Additional: [settings-page-layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts). | V4 Connected Accounts entry; no external authorization or delivery. | Actual provider authorization/revocation/token expiry; no credentials contacted in new tests | Scoped acceptance | | **PRES-S01** — Personal metrics/activity/funnel/company/skills/stage/salary/next actions | Shared | 02 (notice) | [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]. Empty dashboard prioritizes onboarding, attention deep links; server analytics facts Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Chart transformation fidelity and full populated/timezone browser dashboard | Regression retained | | **PRES-S02** — Owner-local five visibility preferences/onboarding dismiss/notifications | Theme only | 01 | [F:onboarding-checklist][F:onboarding-checklist.test.tsx], [F:notifications-popover][F:notifications-popover.test.tsx], [F:app-shell-notifications][F:app-shell-notifications.test.tsx], [F:account-scoped-state][F:account-scoped-state.test.tsx]; [B:JobLifecycleEvent][B:JobLifecycleEventTests]. Onboarding actions; unread/read/dismiss UI and owner-scoped storage primitive | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Five dashboard toggles/reload per account not fully tested at mounted dashboard; ordering/resizing is new work | Regression retained | | **PRES-S03** — Rules/reminder/table/theme/language preferences and account links | Direct | 04, 05 | [F:settings-view][F:settings-view.test.tsx], [F:theme-state][F:theme-state.test.tsx], [F:i18n-provider][F:i18n-provider.test.tsx]; [B:NotificationSettingsController][B:NotificationSettingsControllerTests], [B:RulesEngineProspect][B:RulesEngineProspectTests]. NEW failed notification retry, rule scenario preservation; NEW mobile→desktop edit + native notification/rule persistence Additional: [settings-page-layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts), [table-density](../../../../job-tracker-ui/e2e/table-density.spec.ts). | V4 native rule/notification saves and responsive drafts; V5 independent columns/page/density. | Initial single rules 500 unconfirmed; unsaved rule drafts are not persisted across tab unmount; table preference/router identity change gap **Gate:** P4-04-O02 concurrent notification writes remain unproven; preserve awaited-save tests. | Conditional | | **PRES-S04** — AI privacy/usage/limits/Free-Pro/server entitlement/conditional billing | Direct | 04 | [F:settings-view][F:settings-view.test.tsx], [F:ai-usage-card][F:ai-usage-card.test.tsx], [F:pro-feature-notice][F:pro-feature-notice.test.tsx], [F:planCatalog][F:planCatalog.test.ts]; [B:AiPrivacyPolicy][B:AiPrivacyPolicyTests], [B:AiUsageMeter][B:AiUsageMeterTests], [B:ProEntitlementAuthorization][B:ProEntitlementAuthorizationTests], [B:BillingController][B:BillingControllerTests]. Local-only AI setting, limits/locks, billing readiness; NEW real Free CV AI denied UI and API Additional: [settings-page-layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts). | V1/V4 locked Free/zero-usage states; M1 synthetic admin Pro state only. | Real checkout/webhooks/portal; billing/account deletion issues retain independent queue | Scoped acceptance | | **PRES-S05** — Account ZIP/encrypted backup/lifecycle/deletion confirmations | Direct | 02 (confirm), 04 | [F:account-data-export][F:account-data-export.test.tsx]; [B:AccountDataExport][B:AccountDataExportTests], [B:BackupController][B:BackupControllerTests], [B:AccountDeletion][B:AccountDeletionTests], [B:DatabaseBackupRunner][B:DatabaseBackupRunnerTests]. ZIP protected download, recent auth, server enable flag and exact deletion phrase; service deletion/backup Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts), [settings-page-layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts). | V4 no-job ZIP/disabled deletion and wrapped actions; no real restore/deletion rehearsal. | Real restored account/database and paid deletion/provider cancellation operational proof; not safe to run against production | Scoped acceptance | | **PRES-A01** — Admin user/create/roles/reset/delete/last-admin/self guards | Shared | 02 (confirm) | [F:admin-users-page][F:admin-users-page.test.tsx]; [B:UsersController][B:UsersControllerTests], [B:ApiAuthorizationPosture][B:ApiAuthorizationPostureTests]. Demotion/delete confirm, last-admin server checks; NEW non-admin crafted create/read denied Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | P2 non-admin API denial; M1 synthetic admin shell only, not a user-management audit. | Role revocation during mounted admin view and actual reset delivery; route can render empty shell without granting privilege | Regression retained | | **PRES-A02** — Audit list/detail/supported undo/job restore | Shared | 02 (notice) | [F:admin-audit-page][F:admin-audit-page.test.tsx]; [B:AuthAndSystemController][B:AuthAndSystemControllerTests], [B:ApiAuthorizationPosture][B:ApiAuthorizationPostureTests]. Unavailable-versus-empty retry and NB stored event text; server admin-only posture Additional: [named-controls-modal-state](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts). | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Successful undo and job-restore UI against persisted API; role posture test is not undo behavior proof | Regression retained | | **PRES-A03** — System/build/DB/AI/mail/SMTP/test/probe/benchmark/maintenance | Theme only | 01 | [F:admin-system-page][F:admin-system-page.test.tsx]; [B:AuthAndSystemController][B:AuthAndSystemControllerTests], [B:MaintenanceJobDispatcher][B:MaintenanceJobDispatcherTests], [B:CvCorpusHarness][B:CvCorpusHarnessTests]. Health/error/NB, SMTP submit and benchmark controls; dispatcher authorization and modes | No new dedicated loaded visual proof; shared-theme exposure only. See original gaps. | Production SMTP/model/corpus/maintenance and sensitive-data presentation; no live jobs launched | Regression retained | Classification totals: **15 conditional**, **34 regression retained**, **8 scoped acceptance**. These counts describe the review disposition, not the percentage of user behavior tested. [F:landing-page.test.tsx]: ../../../../job-tracker-ui/src/landing-page.test.tsx [F:planCatalog.test.ts]: ../../../../job-tracker-ui/src/planCatalog.test.ts [F:LandingPage.authRedirect.test.tsx]: ../../../../job-tracker-ui/src/LandingPage.authRedirect.test.tsx [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 [F:turnstile-widget.test.tsx]: ../../../../job-tracker-ui/src/turnstile-widget.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 [F:confirm.test.tsx]: ../../../../job-tracker-ui/src/confirm.test.tsx [F:prompt.test.tsx]: ../../../../job-tracker-ui/src/prompt.test.tsx [F:dialog-flow.test.tsx]: ../../../../job-tracker-ui/src/dialog-flow.test.tsx [B:SessionContextMiddlewareTests]: ../../../../JobTrackerApi.Tests/SessionContextMiddlewareTests.cs [B:CurrentUserIdLiveEvaluationTests]: ../../../../JobTrackerApi.Tests/CurrentUserIdLiveEvaluationTests.cs [B:OwnershipGuardTests]: ../../../../JobTrackerApi.Tests/OwnershipGuardTests.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 [F:application-route-contracts.test.ts]: ../../../../job-tracker-ui/src/application-route-contracts.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 [B:AttachmentFlagsRecomputeTests]: ../../../../JobTrackerApi.Tests/AttachmentFlagsRecomputeTests.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:CvProcessingOperationTests]: ../../../../JobTrackerApi.Tests/CvProcessingOperationTests.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 [B:CvExtractionCoverageTests]: ../../../../JobTrackerApi.Tests/CvExtractionCoverageTests.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 [B:ProEntitlementAuthorizationTests]: ../../../../JobTrackerApi.Tests/ProEntitlementAuthorizationTests.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 [B:EmailSendControllerTests]: ../../../../JobTrackerApi.Tests/EmailSendControllerTests.cs [B:EmailSendAttemptStoreTests]: ../../../../JobTrackerApi.Tests/EmailSendAttemptStoreTests.cs [B:EmailProviderDeliveryTests]: ../../../../JobTrackerApi.Tests/EmailProviderDeliveryTests.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:ImapServiceSsrfGuardTests]: ../../../../JobTrackerApi.Tests/ImapServiceSsrfGuardTests.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 [F:pro-feature-notice.test.tsx]: ../../../../job-tracker-ui/src/pro-feature-notice.test.tsx [B:AiUsageMeterTests]: ../../../../JobTrackerApi.Tests/AiUsageMeterTests.cs [B:BillingControllerTests]: ../../../../JobTrackerApi.Tests/BillingControllerTests.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 [B:AccountDeletionTests]: ../../../../JobTrackerApi.Tests/AccountDeletionTests.cs [B:DatabaseBackupRunnerTests]: ../../../../JobTrackerApi.Tests/DatabaseBackupRunnerTests.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 [B:CvCorpusHarnessTests]: ../../../../JobTrackerApi.Tests/CvCorpusHarnessTests.cs