fix(release): withhold unqualified CV review and record gates
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
# Release-candidate preservation review — 2026-10-08
|
||||
|
||||
Source checkpoint: `9c9157507937b3e084a7ca1e79a2ebd77d0b0928`, branch `codex/ui-redesign-phase4`. This is a bounded review of the existing redesign plus the separately validated temporary Production CV-AI withholding correction. It is **not a main release, fresh regression result, deployment confirmation, unconditional Phase 5 GO or full preservation acceptance**. The root release record must supply the final candidate commit and actual fresh results after validation completes.
|
||||
|
||||
All **57 original PRES groups** below retain the complete original requirements and sub-workflows from the [Phase 1 inventory](../../audit/FUNCTIONALITY_INVENTORY.md). Short labels do not narrow them. [Phase 2](../../phase-2/PRESERVATION_MATRIX.md), [P4-06 acceptance](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md) and [Phase 5 impact](../PRESERVATION_IMPACT.md) supply the original behavioral anchors and gaps; implementation successor records below supply scoped changes/evidence. Links are regression anchors, not an assertion that every sub-workflow was tested or passed at this checkpoint.
|
||||
|
||||
“Direct” means implemented presentation/composition or authoritative integrity work; “entry only” means navigation moved while its domain workflow remained with its existing owner; “unchanged” still receives shared shell/theme exposure. Every authenticated surface therefore retains account-disposal, auth/CSRF/ownership, theme/locale, dirty-state and safe error requirements. Selected tests are historical executable anchors; the complete applicable backend/frontend/browser/sidecar, auth/tenant/revision/PDF/settings/security/type/lint/build/secret gates are being run separately by the root.
|
||||
|
||||
## Capability matrix — 57 original groups
|
||||
|
||||
| Original PRES ID / capability | Implemented touch / unchanged entry | Existing regression anchors | Remaining provider / manual / production gaps and exact limit |
|
||||
|---|---|---|---|
|
||||
| **PRES-E01** — Public product/plans; honest unavailable billing | Unchanged public product/plans; [P5-01](../p5-01/README.md) route regression. | [F:landing-page](../../../../job-tracker-ui/src/landing-page.test.tsx); [F:planCatalog](../../../../job-tracker-ui/src/planCatalog.test.ts); [B:AccountPlans](../../../../JobTrackerApi.Tests/AccountPlansTests.cs) | Actual checkout/billing provider availability and public mobile/keyboard acceptance remain unverified. |
|
||||
| **PRES-E02** — Local login/register/remember, challenge, reset and verification | Entry retained by [P5-01](../p5-01/README.md); existing local auth/challenge/reset/verification owners. | [F:login-page](../../../../job-tracker-ui/src/login-page.test.tsx); [F:verify-email-page](../../../../job-tracker-ui/src/verify-email-page.test.tsx); [B:LocalAuthIdentity](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs); [B:AuthAndSystemController](../../../../JobTrackerApi.Tests/AuthAndSystemControllerTests.cs) | Real reset-mail delivery, Turnstile/browser configuration and complete token-reset submit journey remain qualified. |
|
||||
| **PRES-E03** — Google/Microsoft login, link, legacy relink and popup results | Entry retained by [P5-01](../p5-01/README.md); provider sign-in remains separate from Connections. | [F:login-page](../../../../job-tracker-ui/src/login-page.test.tsx); [F:microsoft-legacy-relink-page](../../../../job-tracker-ui/src/microsoft-legacy-relink-page.test.tsx); [B:GoogleTokenValidator](../../../../JobTrackerApi.Tests/GoogleTokenValidatorTests.cs); [B:MicrosoftTokenValidator](../../../../JobTrackerApi.Tests/MicrosoftTokenValidatorTests.cs) | Real provider consent/popups, revoked grants and sandbox outcomes remain unverified; origin/state contracts remain required. |
|
||||
| **PRES-E04** — 2FA challenge/recovery/setup/disable; trusted-device revocation | Entry relocation only in [P5-01](../p5-01/README.md); Profile/login security forms unchanged. | [F:two-factor-settings](../../../../job-tracker-ui/src/two-factor-settings.test.tsx); [F:login-page](../../../../job-tracker-ui/src/login-page.test.tsx); [B:TwoFactorController](../../../../JobTrackerApi.Tests/TwoFactorControllerTests.cs); [B:SessionsController](../../../../JobTrackerApi.Tests/SessionsControllerTests.cs) | Real mobile authenticator/recovery and trusted-device UI traversal remain open; no security-form acceptance inferred from navigation. |
|
||||
| **PRES-E05** — Session list/current device, revoke one/others, logout | Direct shell logout/private utility changes in [P5-00](../p5-00/README.md)–[P5-02](../p5-02/README.md); session-list owner unchanged. | [F:session-boundary](../../../../job-tracker-ui/src/session-boundary.test.ts); [F:account-scoped-state](../../../../job-tracker-ui/src/account-scoped-state.test.tsx); [B:SessionsController](../../../../JobTrackerApi.Tests/SessionsControllerTests.cs); [B:AuthSessionRevocation](../../../../JobTrackerApi.Tests/AuthSessionRevocationTests.cs) | Session-card selection/refresh after remote revocation remains open; broad device/AT acceptance is not established. |
|
||||
| **PRES-E06** — Avatar, account names/headline, email change and password | Account/security entry only in [P5-01](../p5-01/README.md); avatar/account identity and confirm-email-change route retained. | [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [F:verify-email-page](../../../../job-tracker-ui/src/verify-email-page.test.tsx); [B:AvatarStorage](../../../../JobTrackerApi.Tests/AvatarStorageTests.cs); [B:LocalAuthIdentity](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs) | Avatar upload/remove and password-change browser journeys remain qualified; account identity stays distinct from Career Profile. |
|
||||
| **PRES-E07** — Desktop collapse/mobile drawer, active nav and command search/actions | Direct [shell/navigation/utilities](../p5-02/README.md), [Jobs Table/Board](../p5-04b/README.md), [Analytics](../p5-07/README.md) and [workspace sections](../p5-08b/README.md). | [F:sidebar-active-nav](../../../../job-tracker-ui/src/sidebar-active-nav.test.ts); [F:app-shell-notifications](../../../../job-tracker-ui/src/app-shell-notifications.test.tsx); [B:JobApplicationsAuthorization](../../../../JobTrackerApi.Tests/JobApplicationsAuthorizationTests.cs); [B:CompanyRelationship](../../../../JobTrackerApi.Tests/CompanyRelationshipTests.cs) | Original route/command/drawer defects have scoped successor evidence; manual screen reader and inherited command/focus timing debt remain open. This census is not browser route acceptance. |
|
||||
| **PRES-E08** — Theme/system, EN/NB hydration, toast/confirm/prompt and errors | Direct semantic theme/feedback controls in [P5-00](../p5-00/README.md); EN/Bokmål and light/dark regressions carried through [P5-12](../p5-12/README.md). | [F:theme-state](../../../../job-tracker-ui/src/theme-state.test.tsx); [F:i18n-provider](../../../../job-tracker-ui/src/i18n-provider.test.tsx); [B:LocalAuthIdentity](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs) | Full theme/locale/state/OS cross-product, spoken names/announcements, incomplete axe, zoom/forced-colours/text-spacing and shared-dialog timing remain qualified. |
|
||||
| **PRES-E09** — Account-switch private-state disposal and stale request rejection | Private-state/session boundary unchanged; new shell/utility/workspace/CV relationships regression-protected in [readiness](../p5-13-readiness/README.md). | [F:session-boundary](../../../../job-tracker-ui/src/session-boundary.test.ts); [F:account-scoped-state](../../../../job-tracker-ui/src/account-scoped-state.test.tsx); [B:SessionContextMiddleware](../../../../JobTrackerApi.Tests/SessionContextMiddlewareTests.cs); [B:CurrentUserIdLiveEvaluation](../../../../JobTrackerApi.Tests/CurrentUserIdLiveEvaluationTests.cs) | Real BFCache variations/long offline retries and deployed old-bundle/session behavior remain qualified; images and mocked components cannot prove tenant isolation. |
|
||||
| **PRES-J01** — NAV discovery/filter/sort/source/deadline/details | Entry only: [P5-01](../p5-01/README.md) groups Discover under Jobs; discovery page/service unchanged. | [F:job-discovery](../../../../job-tracker-ui/src/job-discovery.test.tsx); [B:JobDiscoveryController](../../../../JobTrackerApi.Tests/JobDiscoveryControllerTests.cs); [B:JobOpportunitySync](../../../../JobTrackerApi.Tests/JobOpportunitySyncTests.cs) | Live NAV freshness/availability and long result keyboard traversal remain open. |
|
||||
| **PRES-J02** — Saved searches, run/delete/alerts, result changes/dismissal | Entry only in [P5-01](../p5-01/README.md); saved discovery search/alert service and controls unchanged. | [F:job-discovery](../../../../job-tracker-ui/src/job-discovery.test.tsx); [B:SavedJobSearchAlert](../../../../JobTrackerApi.Tests/SavedJobSearchAlertTests.cs); [B:JobDiscoveryController](../../../../JobTrackerApi.Tests/JobDiscoveryControllerTests.cs) | Scheduler-to-notification browser journey and mobile delete confirmation remain qualified; no new producer or delivery certification. |
|
||||
| **PRES-J03** — Reviewed manual/URL/paste job create, company/tags/dates, duplicates | Existing reviewed Add modal shared by [P5-03](../p5-03/README.md)/[P5-04b](../p5-04b/README.md); no creation on route/view mount. | [F:quick-capture](../../../../job-tracker-ui/src/quick-capture.test.tsx); [B:JobImportService](../../../../JobTrackerApi.Tests/JobImportServiceTests.cs); [B:JobImportHttpTransport](../../../../JobTrackerApi.Tests/JobImportHttpTransportTests.cs) | Duplicate/company/date edge UI and creation-intent idempotency remain independent gaps; import network boundary evidence is separate from live site success. |
|
||||
| **PRES-J04** — Extension/bookmarklet/share capture; post-create attachment/CV | Capture/add/addtext review entry retained in [P5-01](../p5-01/README.md)/[P5-03](../p5-03/README.md); extension and post-create owners unchanged. | [F:captureUrl](../../../../job-tracker-ui/src/captureUrl.test.ts); [F:quick-capture](../../../../job-tracker-ui/src/quick-capture.test.tsx); [B:JobImportService](../../../../JobTrackerApi.Tests/JobImportServiceTests.cs); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | Installed extension permissions/share flow and optional attachment failure recovery remain qualified. |
|
||||
| **PRES-J05** — Job filters/sort/page/columns, saved views and row/mobile actions | Direct [P5-03](../p5-03/README.md) Jobs/Trash presentation and [P5-04b](../p5-04b/README.md) shared complete-query view integration. | [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [F:account-scoped-state](../../../../job-tracker-ui/src/account-scoped-state.test.tsx); [B:JobApplicationsController](../../../../JobTrackerApi.Tests/JobApplicationsControllerTests.cs); [B:JobApplicationsEndpointBehavior](../../../../JobTrackerApi.Tests/JobApplicationsEndpointBehaviorTests.cs) | Finite saved-view/filter/Back/error/selection fixtures do not exhaust saved-view CRUD or dirty nested page-size combinations; full-array scaling remains limited. |
|
||||
| **PRES-J06** — Bulk status/delete, soft delete/trash/restore and job edit | Direct [P5-03](../p5-03/README.md) table/Trash and [P5-04b](../p5-04b/README.md) selection/view integration; CRUD/soft-delete owner retained. | [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [F:confirm-flow](../../../../job-tracker-ui/src/confirm-flow.test.tsx); [B:JobApplicationsController](../../../../JobTrackerApi.Tests/JobApplicationsControllerTests.cs); [B:JobApplicationsAuthorization](../../../../JobTrackerApi.Tests/JobApplicationsAuthorizationTests.cs) | Scoped native restore and bulk/mutation fixtures supersede earlier bare-confirm gaps; all bulk partial-failure/dirty-state combinations and deeper manual AT remain qualified. |
|
||||
| **PRES-J07** — Kanban grouped statuses, pointer/keyboard move and precise menu | Direct [P5-04a](../p5-04a/README.md)/[P5-04b](../p5-04b/README.md); complete shared query, precise status and /kanban alias retained. | [F:kanban-grouped-board](../../../../job-tracker-ui/src/kanban-grouped-board.test.tsx); [F:pipeline](../../../../job-tracker-ui/src/pipeline.test.ts); [B:JobPipeline](../../../../JobTrackerApi.Tests/JobPipelineTests.cs) | Physical touch/native drag, broader responsive focus/cancel combinations and full-result scaling remain open; grouped statuses are not a new pipeline. |
|
||||
| **PRES-J08** — Company/contact edits, pipeline dates and linked-job history | Company/contacts/history entry only in [P5-01](../p5-01/README.md)/[P5-02](../p5-02/README.md); existing Companies form retained. | [F:companies-relationship](../../../../job-tracker-ui/src/companies-relationship.test.tsx); [F:quick-command-preservation](../../../../job-tracker-ui/src/quick-command-preservation.test.tsx); [B:CompanyRelationship](../../../../JobTrackerApi.Tests/CompanyRelationshipTests.cs) | All contact/date edits and source-URL safety browser journeys remain qualified; P4-02-D02 inaccessible modal-save error is open for its owner. |
|
||||
| **PRES-J09** — Recorded offers/compensation/deadlines/notes and source links | Offers entry retained; report source links reviewed in [P5-06](../p5-06/README.md)/[P5-07](../p5-07/README.md); recorded offer page unchanged. | [F:offer-comparison](../../../../job-tracker-ui/src/offer-comparison.test.tsx); [B:AnalyticsSalary](../../../../JobTrackerApi.Tests/AnalyticsSalaryTests.cs); [B:JobApplicationsEndpointBehavior](../../../../JobTrackerApi.Tests/JobApplicationsEndpointBehaviorTests.cs) | Mobile many-offer comparison and localized currency/date visual acceptance remain open; no new salary facts are claimed. |
|
||||
| **PRES-J10** — CSV/JSON export, JSON import and CSV-to-JSON conversion | Settings Data import/export entry retained by [P5-01](../p5-01/README.md)/[P5-03](../p5-03/README.md); serializers unchanged. | [F:csv-export](../../../../job-tracker-ui/src/csv-export.test.tsx); [B:CsvExport](../../../../JobTrackerApi.Tests/CsvExportTests.cs); [B:JobApplicationsController](../../../../JobTrackerApi.Tests/JobApplicationsControllerTests.cs) | Full JSON import/count/roundtrip browser proof and spreadsheet-client compatibility remain separately bounded; byte/formula/Unicode fixtures are not exhaustive. |
|
||||
| **PRES-W01** — Full workspace, sections, legacy links and optional reusable overlay | Direct dedicated workspace header/Overview [P5-08a](../p5-08a/README.md) and URL sections [P5-08b](../p5-08b/README.md); Jobs/legacy aliases retained. | [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [F:applicationWorkspace](../../../../job-tracker-ui/src/applicationWorkspace.test.ts); [B:ApplicationWorkspace](../../../../JobTrackerApi.Tests/ApplicationWorkspaceTests.cs) | Reusable overlay has no active production host; followMode metadata retained but mode-specific UI explicitly deferred to mail. Full manual AT and historical transition-capture limits remain. |
|
||||
| **PRES-W02** — Detail/status/progression, recruiter/dates/description/timeline | Direct [P5-08a](../p5-08a/README.md)/[P5-08b](../p5-08b/README.md) header/progress/detail/timeline composition with existing status/date handlers. | [F:application-intelligence](../../../../job-tracker-ui/src/application-intelligence.test.tsx); [F:workflow-trust-signals](../../../../job-tracker-ui/src/workflow-trust-signals.test.tsx); [B:JobApplicationsWorkflowSignals](../../../../JobTrackerApi.Tests/JobApplicationsWorkflowSignalsTests.cs); [B:JobApplicationsAppliedDateHistory](../../../../JobTrackerApi.Tests/JobApplicationsAppliedDateHistoryTests.cs) | Localized backend event/content text, timezone/reload/status-to-timeline combinations and human AT remain qualified; job revision semantics were not repaired. |
|
||||
| **PRES-W03** — Analysis, match/gaps, strategy and reviewed status/workflow suggestions | Existing contextual analysis/match/strategy/status owners recomposed by [P5-08b](../p5-08b/README.md); opening does not invoke AI. | [F:application-intelligence](../../../../job-tracker-ui/src/application-intelligence.test.tsx); [F:application-workflow-assist](../../../../job-tracker-ui/src/application-workflow-assist.test.tsx); [B:ApplicationIntelligence](../../../../JobTrackerApi.Tests/ApplicationIntelligenceTests.cs); [B:StrategySnapshotOperation](../../../../JobTrackerApi.Tests/StrategySnapshotOperationTests.cs) | Live model truthfulness, freshness/cancelled generation and provider quality remain qualified; P5-13 production CV withholding must not disable these unrelated AI paths. |
|
||||
| **PRES-W04** — Checklist create/edit/complete/delete/order and next action | Existing checklist owner/ordered controls recomposed by [P5-08b](../p5-08b/README.md); manual/system/dismissed distinctions retained. | [F:application-checklist](../../../../job-tracker-ui/src/application-checklist.test.tsx); [B:ApplicationChecklist](../../../../JobTrackerApi.Tests/ApplicationChecklistTests.cs) | Real mobile interruption/edit/delete combinations and human AT remain open; no task due-date schema or automatic notification added. |
|
||||
| **PRES-W05** — Attach/select/create/tailor CV and source context | Existing job-CV attach/create/tailor source relationships recomposed by [P5-08b](../p5-08b/README.md); [native readiness](../p5-08b-readiness/README.md) supersedes P2-D01. | [F:application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx); [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:ApplicationAssets](../../../../JobTrackerApi.Tests/ApplicationAssetsTests.cs); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | P2-D01 is an ordinary passing native regression, not current expected failure. Broader attach-render combinations, provider tailoring quality and deployed restore remain qualified; CV review production exception stays distinct. |
|
||||
| **PRES-W06** — Cover-letter manual/AI review, versions/restore and dirty protection | Existing manual/AI cover-letter/history/dirty owner recomposed in [P5-08b](../p5-08b/README.md); literal-context defect corrected in [readiness](../p5-08b-readiness/README.md). | [F:application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx); [F:application-workspace-overlay](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx); [B:ApplicationAssets](../../../../JobTrackerApi.Tests/ApplicationAssetsTests.cs) | Native/mocked review/history evidence does not establish live-model or provider quality; full screen-reader and every reject/history sequence remain qualified. |
|
||||
| **PRES-W07** — Application drafts and immutable submitted package/archived binaries | Existing drafts/frozen submission/archive owners recomposed by [P5-08b](../p5-08b/README.md); [native SQLite/archive/ZIP proof](../p5-08b-readiness/README.md) retained. | [F:application-assets](../../../../job-tracker-ui/src/application-assets.test.tsx); [F:application-drafts](../../../../job-tracker-ui/src/application-drafts.test.ts); [B:SubmittedApplicationPackage](../../../../JobTrackerApi.Tests/SubmittedApplicationPackageTests.cs); [B:JobApplicationsApplicationPackage](../../../../JobTrackerApi.Tests/JobApplicationsApplicationPackageTests.cs) | Earlier P2-D01 capture expected failure is superseded by ordinary native passing evidence. Production restore/rollback and all storage/provider combinations remain unverified; capture is not external send. |
|
||||
| **PRES-W08** — Attachments upload/category/name/AI consent/preview/download/delete | Existing attachments CRUD/consent/protected downloads retained; named narrow table/empty state in [P5-08b](../p5-08b/README.md), archive proof in [readiness](../p5-08b-readiness/README.md). | [F:attachments](../../../../job-tracker-ui/src/attachments.test.tsx); [B:AttachmentsController](../../../../JobTrackerApi.Tests/AttachmentsControllerTests.cs); [B:AttachmentConsistency](../../../../JobTrackerApi.Tests/AttachmentConsistencyTests.cs) | Archive gate is locally satisfied for recorded native fixtures; physical drag/drop, broad rename/download/manual AT and production storage behavior remain qualified. |
|
||||
| **PRES-W09** — Interview questions/answers/ready/manual removal/AI review | Existing interview questions/answers/manual removal/AI review/readiness recomposed by [P5-08b](../p5-08b/README.md). | [F:interview-prep](../../../../job-tracker-ui/src/interview-prep.test.tsx); [B:InterviewPrepPersistence](../../../../JobTrackerApi.Tests/InterviewPrepPersistenceTests.cs); [B:InterviewAiContext](../../../../JobTrackerApi.Tests/InterviewAiContextTests.cs) | Real-model quality, physical mobile keyboard/populated reload and manual AT remain open; prep does not establish scheduled interview data. |
|
||||
| **PRES-W10** — Debrief/follow-up draft/date/readiness | Existing debrief/follow-up draft/date/readiness owner recomposed by [P5-08b](../p5-08b/README.md); no automatic send. | [F:interview-prep](../../../../job-tracker-ui/src/interview-prep.test.tsx); [B:JobApplicationsFollowUpDraft](../../../../JobTrackerApi.Tests/JobApplicationsFollowUpDraftTests.cs); [B:InterviewPrep](../../../../JobTrackerApi.Tests/InterviewPrepTests.cs) | Timezone/reload chains and provider delivery remain unverified; followMode-specific compose UI is deferred rather than implemented. |
|
||||
| **PRES-W11** — Reminder rules/actions/notifications, ICS and Google/Outlook events | Reminder/calendar links retained by [P5-01](../p5-01/README.md)/[P5-02](../p5-02/README.md), Dashboard and [P5-08b](../p5-08b/README.md); calendar/rules APIs unchanged. | [F:daily-control-loop](../../../../job-tracker-ui/src/daily-control-loop.test.tsx); [F:application-calendar](../../../../job-tracker-ui/src/application-calendar.test.tsx); [B:ApplicationCalendarController](../../../../JobTrackerApi.Tests/ApplicationCalendarControllerTests.cs); [B:RulesEngineProspect](../../../../JobTrackerApi.Tests/RulesEngineProspectTests.cs) | F21 DST/date-only/provider timezone gap, actual Google/Outlook events, scheduler delivery and historical unconfirmed rules-save 500 remain open. |
|
||||
| **PRES-W12** — Async progress/failure/retry/cancel/notifications | Operations remains reachable utility; progress/result/cancel/retry links retained by [P5-02](../p5-02/README.md)/[P5-08b](../p5-08b/README.md); store/worker unchanged. | [F:operations-page](../../../../job-tracker-ui/src/operations-page.test.tsx); [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:OperationsController](../../../../JobTrackerApi.Tests/OperationsControllerTests.cs); [B:UserOperationStore](../../../../JobTrackerApi.Tests/UserOperationStoreTests.cs) | Long disconnect/reconnect and F20 enabled worker fault containment remain operational gaps; no live job/worker recovery was certified. |
|
||||
| **PRES-C01** — Canonical structured career data and long-tail/custom sections | Career entry retained; canonical/source scope reviewed in [P5-10](../p5-10/README.md), [P5-12](../p5-12/README.md) and [AI readiness](../p5-13-readiness/README.md). | [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:CareerProfileController](../../../../JobTrackerApi.Tests/CareerProfileControllerTests.cs); [B:CareerProfileService](../../../../JobTrackerApi.Tests/CareerProfileServiceTests.cs) | Full long-tail Career/mobile save and canonical concurrent updates remain separate; scoped CV acceptance never implies canonical-profile revision safety. |
|
||||
| **PRES-C02** — Profile overview/completeness/import guidance/raw copy/history/restore | Career overview/import/raw/history owner unchanged; source relation regression retained by [P5-10](../p5-10/README.md)/[P5-12](../p5-12/README.md). | [F:career-workspace-page](../../../../job-tracker-ui/src/career-workspace-page.test.tsx); [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:CareerProfileService](../../../../JobTrackerApi.Tests/CareerProfileServiceTests.cs) | Clipboard/avatar and complete native profile historical restore/manual AT remain qualified; real extraction quality is separate. |
|
||||
| **PRES-C03** — Upload/extract/rebuild/reprocess/diff/select/accept/discard/retry/cancel | Entry only: existing Career upload/extraction/reprocess/diff/accept/discard/retry/cancel owners retained. | [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:ProfileCvController](../../../../JobTrackerApi.Tests/ProfileCvControllerTests.cs); [B:CvProfileDiffService](../../../../JobTrackerApi.Tests/CvProfileDiffServiceTests.cs) | Unusual/scanned/OCR document quality and full low-confidence deselection/discard browser acceptance remain unverified; no provider certification. |
|
||||
| **PRES-C04** — Evidence bank source/category/tags/add/list/delete | Evidence-bank owner unchanged; job source relationships retained through [P5-08b](../p5-08b/README.md). | [F:career-evidence](../../../../job-tracker-ui/src/career-evidence.test.tsx); [B:CareerEvidenceController](../../../../JobTrackerApi.Tests/CareerEvidenceControllerTests.cs) | Full delete/many-item search/keyboard browser acceptance remains open; broader Career page work stays Phase 7. |
|
||||
| **PRES-C05** — CV library create/copy/delete/templates/share/publication/PDF | Library/CRUD/public ownership retained; editor actions in [P5-09](../p5-09/README.md) and shared template gallery in [P5-12](../p5-12/README.md). | [F:cv-builder-page](../../../../job-tracker-ui/src/cv-builder-page.test.tsx); [F:cv-template-thumbnail](../../../../job-tracker-ui/src/cv-template-thumbnail.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs); [B:PublicCvController](../../../../JobTrackerApi.Tests/PublicCvControllerTests.cs) | Complete publish/unpublish/old-link revocation chain and every library/template combination remain qualified; library redesign is not claimed. |
|
||||
| **PRES-C06** — Studio tabs, preview debounce/pages/fit/save state/mobile panes | Direct [P5-09](../p5-09/README.md) frame/navigation, [P5-11](../p5-11/README.md) live preview and [P5-12](../p5-12/README.md) controls; one save/preview/mobile owner. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | Known preview keyboard defect has scoped repair; additional P5-14 integrated responsive journey, manual touch/AT/zoom/sticky-boundary acceptance and production rendering remain open. |
|
||||
| **PRES-C07** — Visibility/order/custom sections and item/document overrides | Direct [P5-10](../p5-10/README.md) source/item/custom editing and [P5-12](../p5-12/README.md) settings retention; explicit reset/inclusion/order retained. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | Physical touch/native drag and P5-10-O01 nested drag/drop ownership remain open; finite reset/sibling/source fixtures do not certify all saved overrides. |
|
||||
| **PRES-C08** — Capability-aware templates/typography/color/header/skills/sidebar/photo | Direct [P5-12](../p5-12/README.md) nine-template capability/control presentation and [P5-11](../p5-11/README.md) preview; renderer/template IDs retained. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | All-template/font/photo/wrapped-line/browser/control combinations and broad custom-colour/manual AT remain qualified; finite capability matrix and Pro locks are not exhaustive. |
|
||||
| **PRES-C09** — A4/Letter/density/margins/dates/document locale/section presentation | Direct [P5-12](../p5-12/README.md) A4/Letter/density/margin/date/language/columns controls; [pagination repair](../p5-09-pagination-readiness/README.md) retained. | [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | Recorded unchanged-tolerance local fidelity supersedes prior six-fixture failures; all advanced combinations, deployment fonts/photo/wrapped text and manual print inspection remain open. |
|
||||
| **PRES-C10** — Undo/redo, save queue, dirty guard, history restore/preview lifecycle | Existing save/undo/history owner retained in [P5-09](../p5-09/README.md)–[P5-12](../p5-12/README.md); [CV revision protocol](../p5-09-readiness/README.md) and stale AI guard retained. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | CV stale-write/history safety has scoped native evidence; long offline/history combinations and profile/job concurrent edits remain separate. No new save owner or history store. |
|
||||
| **PRES-C11** — Section and whole-document AI improve/translate/instruction/grammar review | **Authorized temporary production exception / deferred**: candidate correction withholds CvAiSuggestionService-backed CV generation/apply only in Production with 503 unavailable; Development deterministic path retained. [P5-13 debt](../OPEN_BLOCKERS.md#p5-13-deferred-debt-and-return-conditions--2026-10-08). | [F:ai-section-assistant](../../../../job-tracker-ui/src/ai-section-assistant.test.tsx); [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:AiWorkspace](../../../../JobTrackerApi.Tests/AiWorkspaceTests.cs); [B:AiPrivacyPolicy](../../../../JobTrackerApi.Tests/AiPrivacyPolicyTests.cs) | **Full PRES-C11 acceptance is unmet.** Configured model identity unverified; 32 cases/366 calls planned, 0 completed, 0 human reviews, critical factuality unmeasured; AI review UI unimplemented. Production withholding requires fresh negative/no-write proof and must preserve unrelated AI; no responsiveness pass. |
|
||||
| **PRES-C12** — Private PDF and published anonymous CV/PDF, long searchable pages | Private/public PDF ownership and shared admission retained through [P5-11](../p5-11/README.md)/[P5-12](../p5-12/README.md); native preview/PDF corpus unchanged. | [F:public-cv-page](../../../../job-tracker-ui/src/public-cv-page.test.tsx); [B:PublicCvController](../../../../JobTrackerApi.Tests/PublicCvControllerTests.cs); [B:PdfRenderAdmission](../../../../JobTrackerApi.Tests/PdfRenderAdmissionTests.cs) | 16-fixture/36-page and eight settings-export/24-page historical gates are finite local evidence; deployed Chromium/Linux/fonts/photo/all-print-engine behavior remains unverified. |
|
||||
| **PRES-M01** — Job-scoped manual correspondence/search/delete/paste import | Existing job manual correspondence/search/import/delete owner recomposed by [P5-08b](../p5-08b/README.md); global entry retained. | [F:end-to-end-trust-loop](../../../../job-tracker-ui/src/end-to-end-trust-loop.test.tsx); [F:correspondence-search-context](../../../../job-tracker-ui/src/correspondence-search-context.test.ts); [B:CorrespondenceController](../../../../JobTrackerApi.Tests/CorrespondenceControllerTests.cs) | Full manual edit/delete/paste-import browser combinations and manual AT remain qualified; logging correspondence is not sending mail. |
|
||||
| **PRES-M02** — Gmail candidate/thread import/refresh/sync/unlink/relink/move | Existing job Gmail candidate/thread/import/sync/move/unlink owners recomposed by [P5-08b](../p5-08b/README.md); provider/API behavior unchanged. | [F:correspondence-gmail-import](../../../../job-tracker-ui/src/correspondence-gmail-import.test.tsx); [B:GmailController](../../../../JobTrackerApi.Tests/GmailControllerTests.cs); [B:EmailOwnershipIntegration](../../../../JobTrackerApi.Tests/EmailOwnershipIntegrationTests.cs) | Live provider threads, multi-account reconnect/revoked grants and sync failures remain unverified. |
|
||||
| **PRES-M03** — Global inbox filters/page/provider/link/direction/detail/source links | Entry only via [P5-01](../p5-01/README.md); global inbox filters/page/provider/detail/source owners unchanged. | [F:correspondence-inbox-page](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx); [B:EmailController](../../../../JobTrackerApi.Tests/EmailControllerTests.cs); [B:EmailOwnershipIntegration](../../../../JobTrackerApi.Tests/EmailOwnershipIntegrationTests.cs) | Real large-mailbox/attachment-binary flows and complete native inbox/AT acceptance remain open; global inbox redesign stays Phase 7. |
|
||||
| **PRES-M04** — Compose/reply/provider/recipient/job; draft conflicts; confirm send/uncertainty | Compose/reply/revision/send/uncertainty owner unchanged; [P5-08b](../p5-08b/README.md) navigation regression only. | [F:correspondence-inbox-page](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx); [B:EmailDraftsController](../../../../JobTrackerApi.Tests/EmailDraftsControllerTests.cs); [B:EmailDraftPersistence](../../../../JobTrackerApi.Tests/EmailDraftPersistenceTests.cs) | Actual sandbox mail delivery/reconnect and every dirty/send interruption remain qualified; no automatic uncertain-send retry. followMode-specific UI remains deferred. |
|
||||
| **PRES-M05** — Review proposed jobs/link/reject/keep/notes/sync/create | Review alias and inbox entry retained in [P5-01](../p5-01/README.md)/[P5-08b](../p5-08b/README.md); reviewed decisions/create owner unchanged. | [F:gmail-review-page](../../../../job-tracker-ui/src/gmail-review-page.test.tsx); [F:correspondence-inbox-page](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx); [B:GmailController](../../../../JobTrackerApi.Tests/GmailControllerTests.cs) | Real provider review and complete suggested-job creation browser journey remain qualified; no automatic creation from navigation. |
|
||||
| **PRES-M06** — Gmail/Graph/IMAP connect/status/disconnect separate from sign-in | Connections entry retained in [P5-01](../p5-01/README.md)/[P5-02](../p5-02/README.md); existing Gmail/Graph/IMAP controls separate from sign-in. | [F:email-provider-connections](../../../../job-tracker-ui/src/email-provider-connections.test.tsx); [B:MicrosoftGraphController](../../../../JobTrackerApi.Tests/MicrosoftGraphControllerTests.cs); [B:ImapController](../../../../JobTrackerApi.Tests/ImapControllerTests.cs) | Actual provider authorization/revocation/token expiry/reconnect remain unverified; no credentials or live provider operations in this review. |
|
||||
| **PRES-S01** — Personal metrics/activity/funnel/company/skills/stage/salary/next actions | Direct accurate report labels/cohorts in [P5-06](../p5-06/README.md) and meaningful [P5-07 Analytics](../p5-07/README.md); existing server facts retained. | [F:daily-control-loop](../../../../job-tracker-ui/src/daily-control-loop.test.tsx); [F:workflow-trust-signals](../../../../job-tracker-ui/src/workflow-trust-signals.test.tsx); [B:StageAnalytics](../../../../JobTrackerApi.Tests/StageAnalyticsTests.cs); [B:AnalyticsSalary](../../../../JobTrackerApi.Tests/AnalyticsSalaryTests.cs) | Scoped native chart/value/population transformations supersede earlier unmapped chart gaps; server timezone/date/population limits and unsupported NEW metrics remain explicit. |
|
||||
| **PRES-S02** — Owner-local five visibility preferences/onboarding dismiss/notifications | Direct [P5-02](../p5-02/README.md) notifications and [P5-06](../p5-06/README.md) five owner-local Dashboard flags/onboarding; Analytics independent. | [F:onboarding-checklist](../../../../job-tracker-ui/src/onboarding-checklist.test.tsx); [F:notifications-popover](../../../../job-tracker-ui/src/notifications-popover.test.tsx); [B:JobLifecycleEvent](../../../../JobTrackerApi.Tests/JobLifecycleEventTests.cs) | Scoped owner/reload fixtures do not establish all preference concurrency; P5-06-O01 language-preference 500 remains unproven. Phase 8 order/resize/reset remains deferred. |
|
||||
| **PRES-S03** — Rules/reminder/table/theme/language preferences and account links | P4 Settings controls retained; [P5-00](../p5-00/README.md) feedback/shared tokens and [P5-03](../p5-03/README.md)/[P5-04b](../p5-04b/README.md) table preferences integration. | [F:settings-view](../../../../job-tracker-ui/src/settings-view.test.tsx); [F:theme-state](../../../../job-tracker-ui/src/theme-state.test.tsx); [B:NotificationSettingsController](../../../../JobTrackerApi.Tests/NotificationSettingsControllerTests.cs); [B:RulesEngineProspect](../../../../JobTrackerApi.Tests/RulesEngineProspectTests.cs) | P4-04-O02 concurrent SQLite notification saves, unconfirmed rules 500 and rule drafts lost on tab unmount remain open; router/preference lifecycle is only scoped-tested. |
|
||||
| **PRES-S04** — AI privacy/usage/limits/Free-Pro/server entitlement/conditional billing | Existing privacy/usage/entitlements/billing readiness retained; deterministic AI metering in [readiness](../p5-13-readiness/README.md); Production CV review exception only. | [F:settings-view](../../../../job-tracker-ui/src/settings-view.test.tsx); [F:ai-usage-card](../../../../job-tracker-ui/src/ai-usage-card.test.tsx); [B:AiPrivacyPolicy](../../../../JobTrackerApi.Tests/AiPrivacyPolicyTests.cs); [B:AiUsageMeter](../../../../JobTrackerApi.Tests/AiUsageMeterTests.cs) | Actual checkout/webhooks/portal and provider consent/delivery remain qualified. Production CV unavailability is temporary authorized P5-13 debt, not fulfillment or disabling other AI. |
|
||||
| **PRES-S05** — Account ZIP/encrypted backup/lifecycle/deletion confirmations | Account ZIP/backup/deletion controls and independent saves retained; [P5-00](../p5-00/README.md) feedback clearance and [native package/ZIP evidence](../p5-08b-readiness/README.md). | [F:account-data-export](../../../../job-tracker-ui/src/account-data-export.test.tsx); [B:AccountDataExport](../../../../JobTrackerApi.Tests/AccountDataExportTests.cs); [B:BackupController](../../../../JobTrackerApi.Tests/BackupControllerTests.cs) | Actual database/account restore, verified recoverable backups, paid deletion/provider cancellation and rollback remain production release gates; no destructive rehearsal occurred. |
|
||||
| **PRES-A01** — Admin user/create/roles/reset/delete/last-admin/self guards | Admin Users route/entry retained by [P5-01](../p5-01/README.md); server authorization/last-admin/self guards unchanged. | [F:admin-users-page](../../../../job-tracker-ui/src/admin-users-page.test.tsx); [B:UsersController](../../../../JobTrackerApi.Tests/UsersControllerTests.cs); [B:ApiAuthorizationPosture](../../../../JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs) | Mounted-view role revocation, full mutations and actual reset delivery remain unverified; hidden nav/synthetic shell never proves authorization. |
|
||||
| **PRES-A02** — Audit list/detail/supported undo/job restore | Admin Audit route/entry retained by [P5-01](../p5-01/README.md); supported server undo/restore owner unchanged. | [F:admin-audit-page](../../../../job-tracker-ui/src/admin-audit-page.test.tsx); [B:AuthAndSystemController](../../../../JobTrackerApi.Tests/AuthAndSystemControllerTests.cs); [B:ApiAuthorizationPosture](../../../../JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs) | Complete successful native undo/job restore browser acceptance remains open; role posture is not undo behavior proof. |
|
||||
| **PRES-A03** — System/build/DB/AI/mail/SMTP/test/probe/benchmark/maintenance | Admin System route/entry/build metadata retained in [P5-00](../p5-00/README.md)/[P5-01](../p5-01/README.md); diagnostics/maintenance owner unchanged. | [F:admin-system-page](../../../../job-tracker-ui/src/admin-system-page.test.tsx); [B:AuthAndSystemController](../../../../JobTrackerApi.Tests/AuthAndSystemControllerTests.cs); [B:MaintenanceJobDispatcher](../../../../JobTrackerApi.Tests/MaintenanceJobDispatcherTests.cs) | Actual production SMTP/model/probes/benchmark/maintenance and sensitive-output qualification remain unverified; no live jobs launched. |
|
||||
|
||||
The matrix maps **9 entry/account + 10 Jobs + 12 workspace + 12 Career/CV + 6 mail + 5 Settings/insights + 3 Admin = 57** groups. Mapping completeness is not coverage percentage or acceptance. The source matrices' original unlisted sub-capability gaps remain authoritative unless a linked successor explicitly supplies their proof. In particular the former P2-D01 SQLite package/tailoring expected failure has an ordinary native passing successor; it must not be reclassified as current open debt. Conversely P5-02 human screen-reader acceptance, F04 and the other [open blocker register](../OPEN_BLOCKERS.md) items are not closed by the local successors.
|
||||
|
||||
## P5-13 / PRES-C11 temporary production exception
|
||||
|
||||
**P5-13 — AI Model Semantic Qualification / AI Review UI remains DEFERRED — BLOCKED / NOT QUALIFIED.** The local configuration candidate is Ollama `qwen2.5:7b`; actual deployed provider/model/digest/settings are unverified. The frozen corpus contains 32 synthetic cases and requires 366 calls; completed calls and human reviews are both zero, and critical factuality failures are unmeasured. The AI review UI is unimplemented. Deterministic grounded-proposal, source freshness, owner/CV binding, revision/history, no-write reject/error and metering/privacy protections have independent recorded regression evidence, which does not qualify model accuracy.
|
||||
|
||||
The user-authorized release candidate correction is bounded to **CvAiSuggestionService-backed CV generation and Apply in Production**, using the existing optional-service unavailable/503 seam. It must prevent new generation or acceptance of an old protected proposal, and preserve existing entitlement/auth behavior, unrelated AI functions, ordinary CV manual editing, PDF/export and the Development deterministic evaluation path. Its fresh negative/no-write tests and final candidate source must be recorded by the root before any release decision. This review does not claim the candidate correction has deployed.
|
||||
|
||||
This temporary withholding is an **explicit exception/deferred product capability**, not fulfilled full PRES-C11 acceptance. Availability of a route, a passing synthetic-provider fixture or safe production unavailability cannot be counted as successful CV rewriting/review. Retain the [frozen qualification/recovery package](../p5-13-semantic-qualification/README.md), [readiness evidence](../p5-13-readiness/README.md) and [exact return conditions](../OPEN_BLOCKERS.md#p5-13-deferred-debt-and-return-conditions--2026-10-08). P5-14-specific AI responsiveness remains unaccepted; P5-15 must carry the exception and cannot issue unconditional full Phase 5 GO while mandatory retained requirements remain unmet without a separately documented scope revision.
|
||||
|
||||
## Route census and compatibility
|
||||
|
||||
The [original audited route map](../../audit/ROUTE_MAP.md) contains **31 concrete patterns: 29 page patterns and two aliases**. The current [App.tsx](../../../../job-tracker-ui/src/App.tsx) has **35 route declarations**, counted from both outer router objects and inner `Route path` elements. Excluding outer `/*`, inner `*` and the inner `/` redirect gives **32 unique concrete patterns: all 31 originals plus `/analytics`**. The inner root redirect is not another public page; the outer LandingPage owns that pattern.
|
||||
|
||||
Current disposition is **29 page patterns and three compatibility aliases**: Analytics adds a page and the original Kanban page becomes the third alias. A static declaration census proves path presence, not runtime entry, redirect fidelity, permission behavior, Back/Forward, dirty cancellation or deployed health. Those remain release regression requirements.
|
||||
|
||||
| Concrete pattern | Candidate disposition / original compatibility | Regression anchors and evidence limit |
|
||||
|---|---|---|
|
||||
| `/` | Original public LandingPage; existing authenticated redirect | [landing/auth redirect](../../../../job-tracker-ui/src/LandingPage.authRedirect.test.tsx), [landing](../../../../job-tracker-ui/src/landing-page.test.tsx); provider/mobile limits in E01 |
|
||||
| `/login` | Original LoginPage/local/provider/2FA entry | [login](../../../../job-tracker-ui/src/login-page.test.tsx), [smoke](../../../../job-tracker-ui/e2e/smoke.spec.ts); live auth/provider limits E02–E04 |
|
||||
| `/register` | Original configured LoginPage registration mode | [login](../../../../job-tracker-ui/src/login-page.test.tsx), [local auth](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs); configured/provider limits E02 |
|
||||
| `/forgot-password` | Original request-reset page | [local auth](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs); complete browser/mail journey remains E02 gap |
|
||||
| `/reset-password` | Original token-reset page | [local auth](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs); complete token submit/mail journey remains E02 gap |
|
||||
| `/verify-email` | Original verification page | [verification](../../../../job-tracker-ui/src/verify-email-page.test.tsx), [local auth](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs); actual mail E02 |
|
||||
| `/confirm-email-change` | Original verification page with email-change mode | [verification](../../../../job-tracker-ui/src/verify-email-page.test.tsx), [local auth](../../../../JobTrackerApi.Tests/LocalAuthIdentityTests.cs); account mutation gaps E06 |
|
||||
| `/microsoft-legacy-relink` | Original provider account-recovery page | [relink](../../../../job-tracker-ui/src/microsoft-legacy-relink-page.test.tsx), [token validator](../../../../JobTrackerApi.Tests/MicrosoftTokenValidatorTests.cs); real consent E03 |
|
||||
| `/cv/:slug` | Original published-only anonymous CV/PDF page | [public CV](../../../../job-tracker-ui/src/public-cv-page.test.tsx), [PublicCvController](../../../../JobTrackerApi.Tests/PublicCvControllerTests.cs), [smoke](../../../../job-tracker-ui/e2e/smoke.spec.ts); deployed fonts/publication lifecycle C05/C12 |
|
||||
| `/dashboard` | Original Home reports/onboarding/preferences; P5-06 presentation | [P5-06 evidence](../p5-06/README.md), [daily loop](../../../../job-tracker-ui/src/daily-control-loop.test.tsx); metric/preference limits S01/S02 |
|
||||
| `/analytics` | **Added P5-07 meaningful personal reports page** | [P5-07 evidence](../p5-07/README.md); no new server facts/populations or deployed acceptance S01 |
|
||||
| `/discover` | Original discovery page, Jobs secondary entry | [discovery](../../../../job-tracker-ui/src/job-discovery.test.tsx), [smoke](../../../../job-tracker-ui/e2e/smoke.spec.ts); live NAV J01/J02 |
|
||||
| `/jobs` | Original tracked jobs; Table default, Board query integration | [P5-03](../p5-03/README.md), [P5-04b](../p5-04b/README.md), [native Board/query integration](../../../../job-tracker-ui/e2e/board-presentation.spec.ts), [integration component](../../../../job-tracker-ui/src/jobs-view-integration.test.tsx); finite-query/scaling limits J03–J07 |
|
||||
| `/jobs/:id` | Original full job workspace; seven canonical sections | [P5-08b](../p5-08b/README.md), [route contracts](../../../../job-tracker-ui/src/application-route-contracts.test.ts), [preservation browser](../../../../job-tracker-ui/e2e/redesign-preservation.spec.ts); deferred followMode/manual/provider limits W01–W12 |
|
||||
| `/reminders` | Original follow-up/reminder page | [daily loop](../../../../job-tracker-ui/src/daily-control-loop.test.tsx), [calendar](../../../../job-tracker-ui/src/application-calendar.test.tsx); F21/provider W11 |
|
||||
| `/operations` | Original processing activity/progress page, utility entry | [operations](../../../../job-tracker-ui/src/operations-page.test.tsx), [OperationsController](../../../../JobTrackerApi.Tests/OperationsControllerTests.cs); worker/disconnect W12 |
|
||||
| `/kanban` | **Original pattern; now compatibility alias** to `/jobs?view=board`; replace history, retain other query/hash/state | [P5-04b](../p5-04b/README.md), [native Board/query integration](../../../../job-tracker-ui/e2e/board-presentation.spec.ts), [App redirect](../../../../job-tracker-ui/src/App.tsx); physical touch/scaling J07 |
|
||||
| `/companies` | Original directory/contact page; `?edit=id` retained | [companies](../../../../job-tracker-ui/src/companies-relationship.test.tsx), [command](../../../../job-tracker-ui/src/quick-command-preservation.test.tsx); modal-save accessibility J08 |
|
||||
| `/offers` | Original recorded offers comparison page | [offers](../../../../job-tracker-ui/src/offer-comparison.test.tsx), [P5-07 links](../p5-07/README.md); full mobile/currency review J09 |
|
||||
| `/correspondence` | Original global inbox/drafts/compose/review page | [inbox](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx), [draft persistence](../../../../JobTrackerApi.Tests/EmailDraftPersistenceTests.cs); live mail/reconnect M01–M06 |
|
||||
| `/correspondence/review` | Original replace alias to `/correspondence?view=review` | [inbox](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx), [review](../../../../job-tracker-ui/src/gmail-review-page.test.tsx); actual provider/create chain M05 |
|
||||
| `/profile` | Original account identity/security page; account/settings entry | [profile](../../../../job-tracker-ui/src/profile-page.test.tsx), [2FA](../../../../job-tracker-ui/src/two-factor-settings.test.tsx); complete account/device journeys E04–E06 |
|
||||
| `/applications/:id` | Original replace alias to `/jobs/:id`, retaining search and router state | [P5-08b](../p5-08b/README.md), [workspace](../../../../job-tracker-ui/src/application-workspace-overlay.test.tsx), [App redirect](../../../../job-tracker-ui/src/App.tsx); legacy sections/followMode W01 |
|
||||
| `/career` | Original canonical Career Profile/import/evidence page with section queries | [Career workspace](../../../../job-tracker-ui/src/career-workspace-page.test.tsx), [profile](../../../../job-tracker-ui/src/profile-page.test.tsx); long-tail/import/provider C01–C04 |
|
||||
| `/career/builder` | Original CV library page; shared P5-12 gallery touch | [builder library](../../../../job-tracker-ui/src/cv-builder-page.test.tsx), [P5-12](../p5-12/README.md); full library/publication chain C05 |
|
||||
| `/career/builder/:id` | Original numeric CV editor; P5-09–12 presentation; CV-AI Production exception | [editor](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx), [P5-12](../p5-12/README.md), [AI readiness](../p5-13-readiness/README.md); P5-13/P5-14/manual/rendering limits C06–C12 |
|
||||
| `/admin/audit` | Original Admin Audit page; server role checks retained | [audit](../../../../job-tracker-ui/src/admin-audit-page.test.tsx), [authorization](../../../../JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs); native undo A02 |
|
||||
| `/admin/users` | Original Admin Users page; server role/last-admin/self checks retained | [users](../../../../job-tracker-ui/src/admin-users-page.test.tsx), [UsersController](../../../../JobTrackerApi.Tests/UsersControllerTests.cs); revoke/reset A01 |
|
||||
| `/admin/system` | Original Admin System page; no aggregate Admin page invented | [system](../../../../job-tracker-ui/src/admin-system-page.test.tsx), [maintenance](../../../../JobTrackerApi.Tests/MaintenanceJobDispatcherTests.cs); deployed probes A03 |
|
||||
| `/trash` | Original deleted-only JobTable/restore page | [P5-03](../p5-03/README.md), [table density](../../../../job-tracker-ui/e2e/table-density.spec.ts); finite restore/bulk/manual J06 |
|
||||
| `/settings` | Original Settings tabs/data/privacy/backup/links page | [Settings](../../../../job-tracker-ui/src/settings-view.test.tsx), [native layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts); concurrent saves/billing/restore S03–S05 |
|
||||
| `/settings/connected-accounts` | Original provider connections page | [connections](../../../../job-tracker-ui/src/email-provider-connections.test.tsx), [native Settings](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts); actual OAuth/mail/expiry M06 |
|
||||
|
||||
Queries and non-route entries remain governed by [navigation migration](../NAVIGATION_MIGRATION.md) and [Phase 3 route/query contracts](../../phase-3/ROUTE_PLAN.md): `add/addtext`, Jobs filters/sort/page/`view`, return `from/focusJobId`, workspace `section/followMode`, company `edit`, correspondence `view`, token URLs, command actions, bell/operations links and dirty/session boundaries. Unknown/legacy keys must not cause implicit writes. Provider callbacks/postMessage flows are separate from the React page census and retain origin/state requirements. Admin path presence does not grant API access; public slug identity remains separate from numeric private CV identity.
|
||||
|
||||
The actual census does **not** include `/career/profile`, `/documents`, `/notifications` or an aggregate `/admin`. Some older slice prose mentions `/career/profile`; the original preserved route and current App entry are `/career` with section queries. No extra route is inferred from that prose, and no route is removed to reconcile it.
|
||||
|
||||
## Release and next-checkpoint limits
|
||||
|
||||
The configured production branch is **main**, with automatic deployment after its CI test job under [the deployment workflow](../../../../.gitea/workflows/ci-deploy.yml). This preservation review does not satisfy F04 deployed peer/ingress/firewall proof, current recoverable backup/restore/migration/user-data/rollback proof, remote CI/deployment protections or deployed health/login/navigation/Jobs/Dashboard/CV/PDF verification. Merge/push is **NO-GO pending production safety proof** even if local regressions pass. No migration, production access, Docker recovery, model call or destructive operation was performed for this review.
|
||||
|
||||
After a successfully verified release, P5-14 may address the user-authorized currently implemented CV scope; its deferred P5-13-specific coverage must remain explicit. P5-15 must distinguish completed/verified scope, deferred capability exceptions, release blockers and known limitations; unconditional full Phase 5 acceptance is unavailable while retained mandatory scope is unmet. Existing unrelated AI paths and all deterministic AI protections remain regression requirements.
|
||||
Reference in New Issue
Block a user