# P7-00 — Remaining migration inventory This inventory uses the [approved exact handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md), [original plan](../../IMPLEMENTATION_PLAN.md#phase-7--full-migration), [57 preservation contracts](../PRESERVATION.md) and [current32-route census](../../phase-5/p5-15/ROUTE_ACCEPTANCE.md). Entry is development receipt `b5319981ad3d1bd635daff861453d23c0de5320b`, with application source unchanged from `bd47214bdcd74336788dca0f294b8ddb9403cac1`. P7-00 is documentation/static evidence only; no page migration or new runtime result is claimed. ## Already migrated versus remaining | Area | Completed owners to retain | Remaining approved migration / dependency | |---|---|---| | Shell/navigation | P5-01/02 grouped parent/child, expanded rail/mobile, active route, focus, six commands/search/bell; P6 scoped semantics | P7-11 only verified residual shared states/long-tail acceptance; no IA/sidebar rewrite | | Jobs/Table/Board/Trash | P5-03/04 query ownership, Table/cards/Board parity, mutations/Back/aliases | P7-05 Discovery/Companies/Offers/Reminders and P7-11 verified legacy dialog controls; Board scaling is separate measured debt | | Dashboard/Analytics | P5-06/07 Dashboard and eight report families, exact period/cohort/values/source links; Analytics delegates to DashboardView | P7-11 remaining legacy state/control only; no second Analytics page, fabricated metric or Phase8 layout work | | Application/job details | P5-08a/b seven-section frame; CV/Letter/Answers/Submission and Activity/Correspondence composition | P7-06 inventory-confirmed embedded legacy forms and global mail; no reimplementation of completed sections | | CV editor | P5-09–12/14 source/override/content/preview/history/responsive/advanced-controls ownership and native pagination | Retain editor and renderer; C11 remains separate withheld qualification, human/output gaps remain | | CV library/public entry | Gallery reused/touched by P5-12; current CRUD/publication/public slug owners retained | P7-04 library/actions/public-entry states, source language from P7-03; no second gallery/editor/history owner | | Account/authentication | Current identity/provider/token/security owners; P5 auth-return repair and P6 scoped hierarchy retained | P7-01 public auth/Profile/security presentation; actual provider/mail/authenticator evidence separately scoped | | Onboarding/Career | Five Dashboard visibility flags/checklist, canonical source and section routes; source navigation/upload fixes retained | P7-02 guidance/overview/evidence, P7-03 structured/import/history; canonical singleton unchanged | | Global correspondence | Current inbox/Gmail review/draft revision/confirmed-send/provider owners | P7-06 remaining presentation; optional P7-06F requires explicit mode→draft/review/fallback decision | | Documents | Job Documents/attachments, CV/library, letter/draft/package/export owners already exist | P7-07 metadata-only bounded owner projection, then index presentation; no generic Document record/browser crawl | | Notifications/Operations | Existing bell/store/operation result links | P7-08 read/dismiss/unread/retry/cancel presentation; full route only after actual content/need is proved | | Settings/Connections/Admin | P4 layout/density primitives, Settings tabs/panels and P6 feedback; distinct server-guarded admin routes | P7-09 remaining Settings/data/Connections, P7-10 Users/Audit/System; retain save/sensitive-action scopes | | Error/empty/loading/dialog states | Existing route/error boundaries, shared view-state/notification/confirm/prompt infrastructure | P7-11 only owned residual findings; shared changes require all affected consumer regressions | Legacy presentation explicitly scheduled in Phase7 is migration work, not automatically a defect. Reproducible accessibility/usability/data faults still receive bounded owner/reproducer/proof. The original handoff defines P7-00…12 plus optional06F and its commit boundaries; this inventory adds no alternative phases. ## Current route coverage Source inspection extracts exactly32 distinct concrete [App routes](../../../../job-tracker-ui/src/App.tsx), matching the32 retained contract patterns. Wildcard matching/private root redirect do not add a second capability. Every whole-route group remains **PARTIAL** until its full applicable acceptance is supplied. | Route pattern | Existing source owner | Phase7 disposition | Contract / existing limitation | |---|---|---|---| | `/` | [LandingPage.tsx](../../../../job-tracker-ui/src/views/LandingPage.tsx) | Retain current product/plan presentation; P7-01 inventory and P7-11 verified residual states only | Public product remains distinct from private dashboard; no invented billing prices. | | `/login` | [LoginPage.tsx](../../../../job-tracker-ui/src/views/LoginPage.tsx) | P7-01 authentication presentation | Safe return, remember-me, Turnstile, 2FA and login errors retain existing owners. | | `/register` | [LoginPage.tsx](../../../../job-tracker-ui/src/views/LoginPage.tsx) | P7-01 authentication presentation | Same component initialMode=register; preserve actual registration gates. | | `/forgot-password` | [ForgotPasswordPage.tsx](../../../../job-tracker-ui/src/views/ForgotPasswordPage.tsx) | P7-01 authentication presentation | No actual mail delivery acceptance from local mocks. | | `/reset-password` | [ResetPasswordPage.tsx](../../../../job-tracker-ui/src/views/ResetPasswordPage.tsx) | P7-01 authentication presentation | Token/expired/used-token and password-validation behavior. | | `/verify-email` | [VerifyEmailPage.tsx](../../../../job-tracker-ui/src/views/VerifyEmailPage.tsx) | P7-01 authentication presentation | Preserve verification token and safe auth return. | | `/confirm-email-change` | [VerifyEmailPage.tsx](../../../../job-tracker-ui/src/views/VerifyEmailPage.tsx) | P7-01 account-security presentation | emailChange owner/validation; no new identity model. | | `/microsoft-legacy-relink` | [MicrosoftLegacyRelinkPage.tsx](../../../../job-tracker-ui/src/views/MicrosoftLegacyRelinkPage.tsx) | P7-01 authentication presentation | Existing origin/state/relink protocol; real provider evidence separate. | | `/cv/:slug` | [PublicCvPage.tsx](../../../../job-tracker-ui/src/views/PublicCvPage.tsx) | P7-04 public entry | Public slug differs from numeric private CV ID; revoke/private PDF guards remain. | | `/dashboard` | [DashboardView.tsx](../../../../job-tracker-ui/src/components/DashboardView.tsx) | Already migrated; retain P5-06 | Residual evidence/loaded states only; five flags retained, Phase8 layout customization separate. | | `/analytics` | [AnalyticsPage.tsx](../../../../job-tracker-ui/src/views/AnalyticsPage.tsx) | Already migrated; P7-11 residual controls/states only | Delegates to DashboardView mode=analytics; all eight report families retain values/cohorts/source links. | | `/discover` | [JobDiscoveryPage.tsx](../../../../job-tracker-ui/src/views/JobDiscoveryPage.tsx) | P7-05 Discovery | Real NAV states and saved-search semantics; no fixture presented as live results. | | `/jobs` | [JobTable.tsx](../../../../job-tracker-ui/src/components/JobTable.tsx) | Already migrated; retain P5-03/04b | Single query owner/view parity; preserve legacy open/capture/query helpers and no-write entry. | | `/jobs/:id` | [ApplicationWorkspacePage.tsx](../../../../job-tracker-ui/src/views/ApplicationWorkspacePage.tsx) | Already migrated frame; P7-06 remaining child forms | Seven sections and nested source/save/send owners; preserve section/sub precedence and stale/foreign guards. | | `/reminders` | [RemindersView.tsx](../../../../job-tracker-ui/src/components/RemindersView.tsx) | P7-05 Reminders | Real reason/count/actions; calendar offset/DST contract separately gated. | | `/operations` | [OperationsPage.tsx](../../../../job-tracker-ui/src/views/OperationsPage.tsx) | P7-08 Operations | Stable operation/result/cancel/retry ownership; no duplicate start. | | `/kanban` | [App.tsx](../../../../job-tracker-ui/src/App.tsx) | Retain legacy redirect | Replaces view with board while preserving other search, hash and location.state. | | `/companies` | [CompaniesTable.tsx](../../../../job-tracker-ui/src/components/CompaniesTable.tsx) | P7-05 Companies | edit=id command entry; preserve P6 dialog-local failure/draft/retry and UI-locale dates. | | `/offers` | [OfferComparisonPage.tsx](../../../../job-tracker-ui/src/views/OfferComparisonPage.tsx) | P7-05 Offers | Recorded compensation/deadline/notes/source only; no unsupported normalization. | | `/correspondence` | [CorrespondenceInboxPage.tsx](../../../../job-tracker-ui/src/views/CorrespondenceInboxPage.tsx) | P7-06 inbox/review/compose presentation | view=review embeds GmailReviewPage; compose/drafts remain existing in-page owners. | | `/correspondence/review` | [App.tsx](../../../../job-tracker-ui/src/App.tsx) | Retain legacy redirect; audit metadata before parity claims | Fixed replace to /correspondence?view=review; current adapter does not forward other search/hash/state. | | `/profile` | [ProfilePage.tsx](../../../../job-tracker-ui/src/views/ProfilePage.tsx) | P7-01 account-security presentation | Account identity/avatar/password/email/2FA/sessions, distinct from canonical Career Profile. | | `/applications/:id` | [App.tsx](../../../../job-tracker-ui/src/App.tsx) | Retain legacy redirect | Preserves query/location.state to /jobs/:id; current adapter does not preserve hash. | | `/career` | [CareerWorkspacePage.tsx](../../../../job-tracker-ui/src/views/CareerWorkspacePage.tsx) | P7-02 overview/evidence; P7-03 structured/import/history | Delegates to CareerProfilePage; section=profile/evidence/import, default overview; no /career/profile route. | | `/career/builder` | [CvBuilderPage.tsx](../../../../job-tracker-ui/src/views/CvBuilderPage.tsx) | P7-04 library | Create/copy/delete/templates/manage/publish/share/export; reuse gallery/current editor. | | `/career/builder/:id` | [CvBuilderEditor.tsx](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx) | Already migrated; retain P5-09–12/14 | One revision/save/history/preview owner; C11 withheld; unchanged physical renderer. | | `/admin/audit` | [AdminAuditPage.tsx](../../../../job-tracker-ui/src/views/AdminAuditPage.tsx) | P7-10 Audit | Supported persisted undo/restore only; role/API authority remains. | | `/admin/users` | [AdminUsersPage.tsx](../../../../job-tracker-ui/src/views/AdminUsersPage.tsx) | P7-10 Users | Role/reset/delete/last-admin/self/recent-auth guards; no client-only authorization. | | `/admin/system` | [AdminSystemPage.tsx](../../../../job-tracker-ui/src/views/AdminSystemPage.tsx) | P7-10 System | Diagnostics/SMTP/model/maintenance do not acquire production execution authority. | | `/trash` | [JobTable.tsx](../../../../job-tracker-ui/src/components/JobTable.tsx) | Already migrated; retain P5-03 | mode=trash, soft-delete/restore/edit; no Board or hard-delete substitution. | | `/settings` | [SettingsView.tsx](../../../../job-tracker-ui/src/components/SettingsView.tsx) | P7-09 remaining presentation | Existing tabs/mobile selector/panel semantics, Rules draft and independent subcard save scopes remain. | | `/settings/connected-accounts` | [ConnectedAccountsPage.tsx](../../../../job-tracker-ui/src/views/ConnectedAccountsPage.tsx) | P7-09 Connections | EmailProviderConnections owns Gmail/Graph/IMAP; mailbox grants differ from sign-in identity. | No existing `/documents`, `/notifications`, aggregate `/admin` or `/career/profile` route is inferred. Proposed new destinations require meaningful content and explicit owner/data/route tests. Preserve route/search/hash/history/state contracts and record existing alias limitations instead of claiming universal parity. ## Current code contracts and representative fixtures | Contract / owner boundary | Existing executable fixture | Required preservation when affected | |---|---|---| | Private account/session disposal and A/B resources | [Account isolation browser](../../../../job-tracker-ui/e2e/account-isolation.spec.ts), [session boundary](../../../../job-tracker-ui/src/session-boundary.test.ts), [account-scoped state](../../../../job-tracker-ui/src/account-scoped-state.test.tsx) | Guest/non-admin/foreign/missing resources, switched identity/stale responses; hiding UI never replaces server denial | | Auth return/token/refresh | [Native auth repair](../../../../job-tracker-ui/e2e/analytics-auth-repair.spec.ts), [login](../../../../job-tracker-ui/src/login-page.test.tsx), [verify](../../../../job-tracker-ui/src/verify-email-page.test.tsx) | Existing safe internal from/query, expiry/logout/refresh, deliberate token error; real mail/provider remains separate | | Shell/commands and Jobs query | [Shell](../../../../job-tracker-ui/e2e/shell-readiness.spec.ts), [Board](../../../../job-tracker-ui/e2e/board-presentation.spec.ts), [route helper](../../../../job-tracker-ui/src/jobWorkspaceRoute.ts), [Jobs integration](../../../../job-tracker-ui/src/jobs-view-integration.test.tsx) | Table/Board membership/filter/sort/search/page parity, Back/forward/capture; no query semantics or hidden-result caps | | Job source/context/frozen package | [Ordinary preservation](../../../../job-tracker-ui/e2e/redesign-preservation.spec.ts), [section composition](../../../../job-tracker-ui/e2e/job-sections-presentation.spec.ts) | P2-D01 normal passing capture/readback/archive bytes; canonical/sibling/current/frozen separation | | Canonical Career vs CV override | [Career workspace](../../../../job-tracker-ui/src/career-workspace-page.test.tsx), [Career evidence](../../../../job-tracker-ui/src/career-evidence.test.tsx), [CV section scope](../../../../job-tracker-ui/e2e/cv-section-scope.spec.ts) | Complete/custom/low-confidence fields, explicit import accept/discard; CV override must not mutate canonical or sibling data | | CV revision/save/history/preview | [CV readiness](../../../../job-tracker-ui/e2e/cv-readiness.spec.ts), [responsive ownership](../../../../job-tracker-ui/e2e/cv-responsive-workflow.spec.ts), [pagination](../../../../job-tracker-ui/e2e/cv-pagination.spec.ts) | Expected version/conflict/recoverable draft, one save/preview owner, original16/36+8/24 physical oracle when output touched | | Existing AI grounding/proposal protection | [AI readiness](../../phase-5/p5-13-readiness/README.md), [Phase6 backend evidence](../../phase-6/p6-05/evidence/backend-validation.json) | Purpose/source scope, progress/retry, explicit accept/reject, stale/invalid/foreign no-write guards; C11 remains withheld | | Mail draft/review/confirmed send | [Inbox](../../../../job-tracker-ui/src/correspondence-inbox-page.test.tsx), [Gmail review](../../../../job-tracker-ui/src/gmail-review-page.test.tsx), [draft persistence](../../../../JobTrackerApi.Tests/EmailDraftPersistenceTests.cs) | Draft revision, explicit confirmed delivery, idempotency and uncertain-attempt handling; no auto-resend | | Company/language/shared API feedback | [Native feedback/geometry](../../../../job-tracker-ui/e2e/responsive-accessibility-audit.spec.ts), [named modal controls](../../../../job-tracker-ui/e2e/named-controls-modal-state.spec.ts), [i18n](../../../../job-tracker-ui/src/i18n-provider.test.tsx) | Durable in-modal alert/draft/retry, latest-choice language races, translated fallback while preserving structured server messages | | Settings/density/export/data | [Settings layout](../../../../job-tracker-ui/e2e/settings-page-layout.spec.ts), [Rules draft](../../../../job-tracker-ui/e2e/rules-draft-repair.spec.ts), [CSV](../../../../job-tracker-ui/e2e/csv-export.spec.ts), [account export](../../../../job-tracker-ui/src/account-data-export.test.tsx) | Named panels/control errors, independent dirty/save scopes, bytes/counts/import distinctions, no restore/deletion activation | | Dashboard/Analytics provenance | [Dashboard](../../../../job-tracker-ui/e2e/dashboard-presentation.spec.ts), [Analytics](../../../../job-tracker-ui/e2e/analytics-presentation.spec.ts) | Exact periods/cohorts/denominators/source links, no fabricated statistics or Phase8 order/resize | | Shared accessibility/responsive state | [Semantic foundations](../../../../job-tracker-ui/e2e/semantic-foundations.spec.ts), [real zoom](../../../../job-tracker-ui/e2e/browser-zoom-audit.spec.ts), [responsive audit](../../../../job-tracker-ui/e2e/responsive-accessibility-audit.spec.ts) | Names/headings/panels/focus/dialog return, EN/NB/theme/density/breakpoints, root reflow and context-triaged axe; actual AT/device results remain separate | | Admin roles and supported operations | [Users](../../../../job-tracker-ui/src/admin-users-page.test.tsx), [Audit](../../../../job-tracker-ui/src/admin-audit-page.test.tsx), [System](../../../../job-tracker-ui/src/admin-system-page.test.tsx), [API posture](../../../../JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs) | Crafted non-admin and mounted revocation, supported persisted undo, safe errors/no sensitive disclosure; no production task authority | Existing fixtures prove their actual executed scope only. They are starting anchors, not complete coverage of every pending migration. Add native owned-flow/negative/no-write/readback cases where a slice changes behavior; avoid tests that merely mirror style implementation. ## Independent work and mandatory dependencies The main conflict is resolved by owner instruction: development execution proceeds and main remains unchanged. P7-00 must push before page changes. P7-06F remains deferred without its product decision, while ordinary P7-06 presentation can proceed. P7-07 index implementation requires its backend metadata projection; honest owner links may remain meanwhile. New notification event producers require F20 recovery, and any full notification route requires meaningful existing-store content. Save/history-owner changes require explicitly bounded source concurrency; provider protocol, billing/deletion/restore/cutover and production operations remain separately gated. Applicable human M01–M12, production font/photo/print, provider semantics and retained accessibility/incident contexts prevent blanket acceptance but do not halt unrelated safe presentation. M13 is deferred AI return/do-not-execute. See [DEBT.md](../DEBT.md) for current counts and exact gates. P7-12 retains separate migration/production/Phase8 readiness decisions.