19 KiB
Phase 7 — Remaining migration handoff
Phase 7 readiness: CONDITIONAL GO for bounded development migration. This is a plan, not implementation or production authorization. It follows the original approved Phase 7 list, Phase 3 architecture, retained Phase 4 MUI foundations, final Phase 5 handoff and 57-contract reconciliation. The owner's current P6-00 through P6-05 labels supersede the historical seven-checkpoint review proposal without rewriting its evidence.
No mandatory human/device result is invented. Before accepting a migrated workflow completely, obtain its applicable M01–M13 reader/device results or retain explicit conditional status. A newly demonstrated severe shared naming/focus/contrast/data-security failure blocks dependent propagation until a bounded repair proves it fixed. Independent, unaffected development can continue. Production infrastructure evidence is a release prerequisite, not permission to halt every independent presentation slice.
Already completed: retain rather than repeat
| Area in original migration list | Actual completed scope | Remaining Phase 7 scope |
|---|---|---|
| Shell/navigation | P5-01/02: grouped parent/child, rail/mobile, route focus, six commands/search/bell; five acceptance repairs retained | Add only supported new destinations after meaningful content exists; complete remaining operator/long-tail evidence; no new IA/sidebar rewrite |
| Jobs/Board/Trash | P5-03/04: single query owner/view switch, Table/cards/Board, mutations/Back/aliases | Discovery, Companies, Offers, Reminders and remaining legacy dialogs/forms; measured scaling debt separately scoped |
| Dashboard/Analytics | P5-06/07: Dashboard and all eight existing report families in /analytics, exact values/period/source links |
Audit and migrate only any remaining legacy control/state; do not schedule a second Analytics page. No new metrics |
| Job Application/Documents/cover letter/interview | P5-08a/b: seven sections, Application CV/Letter/Answers/Submission and Timeline Activity/Correspondence | Remaining embedded legacy forms/state presentation and global mail workflows; existing sections are already migrated |
| CV builder | P5-09–12/14: frame/source scope/content/preview/advanced controls/history/responsive ownership; unchanged native pagination | Retain editor/renderer. Library/public entry and outstanding manual/output evidence; withheld P5-13 is a separate qualified workstream |
| CV library/template gallery | Gallery is reused and touched by P5-12; library CRUD/publication remains | Migrate library layout/actions/publication states without duplicating gallery/editor/save owner |
| Settings/account/admin | P4 page/section/layout/density foundations, P5 feedback/shell entries/metadata; Rules draft repair and P6 scoped feedback improvements | Remaining Settings/security/provider/data/plan/admin page presentation; retain current save scopes and guards |
| Notifications/onboarding | Existing bell/operations links and five owner-local Dashboard flags/checklist retained | Finish onboarding guidance and existing activity surfaces; full centre only after store/route need is established |
| Career Profile | Canonical owner/section routes retained; CV source navigation and native upload fixed | Overview/profile/evidence/import/history UX remains a complete Phase 7 migration, not a new data model |
Legacy presentation explicitly scheduled here is approved Phase 7 migration work, not a Phase 6 defect merely because its appearance differs. Any reproducible accessibility/usability/data bug still gets an owned defect and proof.
Common constraints for every slice
- Use existing
theme.tssemantic roles,PageHeader/PageSection, current width/gutter/density tokens, MUI forms/dialogs/drawers,ViewStateNotice/useViewResource, toast/confirm/prompt, safe API error extraction and current i18n infrastructure. Read existing callers before sharing presentation; a new wrapper requires real consumers. - Preserve React Router paths/aliases/search/hash/history/state, active parent/child, dirty Cancel/Discard and meaningful heading/trigger focus. Keep private-tree/session cancellation and resource ownership; presentation components do not acquire competing fetch/save/history/send owners.
- Test populated/empty/loading/error/retry/locked/dirty/missing/foreign-resource cases. Link each behavioral assertion to original PRES sub-workflows, role/owned fixture and request/no-write/readback proof. Automated acceptance is necessary and never substitutes for unavailable human/device/provider evidence.
- Exercise EN and Bokmål, light/dark and both appropriate density settings at 320,360–390,768,1024,1280,1440 and1920, plus 767/768 and899/900 where relevant, portrait/landscape and 200%/400% actual browser zoom. Ordinary app actions must reflow without root horizontal overflow; named table/Board/document-canvas scrolling remains legitimate.
- Follow project accessibility targets: ordinary text4.5:1, large text3:1, essential control/focus3:1, visible keyboard focus, names/labels/errors/required-state, sensible h1/main/heading order, modal trap/return, keyboard alternatives to drag, polite non-repeating status and reduced motion. Aim44px physical-touch hit areas; preserve established fine-pointer target rules. Triage axe incomplete/all-enabled findings with context rather than disabling rules.
- No hard-coded new user-facing strings. Compare natural Bokmål wording, long labels/tooltips/error/save/retry states, source versus CV versus account vocabulary, and UI locale versus document locale. Recorded server text/timezone limitations remain owned.
- Commit one bounded reproducer/repair or migration workflow with focused tests and evidence, push the development branch and verify remote=HEAD. Separate unrelated backend-contract prerequisites and cross-consumer foundation corrections; no force push/main deployment. Keep the chronological Phase 7 commit ledger when execution starts.
Migration order and commit boundaries
The order reduces shared interaction risk before data-heavy/delivery-sensitive workflows. These are proposed implementation boundaries for a later authorized Phase 7 task, not a request to execute them in Phase 6.
| Order / bounded slice | Dependencies and existing owners | Preservation risk / backend constraint | Required additions and acceptance exit |
|---|---|---|---|
| P7-00 — Fresh scope inventory and fixture baseline | Final Phase6 source/manifest/commits, 57 contracts/32 current patterns, actual TODO/debt register | Do not equate conditional acceptance with missing functionality or reset intervening work | Record source/remote and route/state fixtures; classify each unchanged/already-migrated/remaining area. Keep ordinary P2-D01 and all count deltas. Documentation commit/push before page edits |
| P7-01 — Authentication and account-security presentation | Existing Login/Register/reset/verify/relink/Profile/TwoFactor/Sessions owners; current auth-return helper, PageLayout/MUI/error presentation | E01–E06/E09: challenge/token/origin/state, remember-me, recent-auth and remote revoke; no identity/provider protocol edits in a visual diff | Add native label/error/focus/token-state and complete deep-link expiry/logout/return regressions, account identity versus career distinction, long NB/320 forms. Provider/mail/authenticator qualification separately requires actual sandbox/human evidence. Split public auth and Profile/security into separate reviewable commits |
| P7-02 — Onboarding and Career overview/evidence | OnboardingChecklist/CareerWorkspacePage/CareerEvidenceBank; existing source link and operation entry | S02/C02/C04/E09: no forced onboarding, no invented facts/completeness score, no new preferences schema | Native dismissal/owner/reload, overview/raw-copy/evidence CRUD/source/history links, long/many-item and error/keyboard cases. One onboarding-guidance commit, then one Career overview/evidence commit |
| P7-03 — Career structured editing and import review | CareerProfilePage/career sections/RichTextField/date/tag components; complete P7-02 fixtures | C01–C04: all long-tail/custom fields, canonical singleton and inherited-CV consequences; profile/job stale-save debt is separate from CV revision | Before any save/history owner change, separately resolve or explicitly bound concurrency contract with native stale-write/recovery tests. Presentation-only migration retains save behavior and guards. Prove low-confidence select/deselect/accept/discard/retry/cancel/no-provider, canonical/sibling/frozen readback and long phone forms. Separate structured editor and import/history commits; no silent extraction acceptance |
| P7-04 — CV library and public entry | CvBuilderPage/CvTemplateGallery/PublicCvPage/current editor; P7-03 source language | C05/C12/E09: numeric private ID vs public slug, delete/association/entitlement/public revoke/private PDF admission; no second editor/history/renderer | Native create/copy/delete/gallery/locked template/publish/unpublish/old-link rejection/download and missing/foreign cases. Both themes keep white print pages. Run unchanged16/36+8/24 fidelity if preview/output is touched. Separate library and public-entry commits |
| P7-05 — Discovery, Companies, Offers and Reminders | Existing domain pages/current Jobs return context; shared table/cards/state presentation | J01/J02/J08/J09/W11: real NAV/service states, no standalone company-create assumption, offer currency/sample/source, calendar DST debt | Keep saved-search repair and P6 durable company error. Add native contact/date/source/failed-save focus; saved-run/delete/pause/alerts; many offers/long labels; all reminder reasons/count/actions. Four domain commits; no backend scaling/calendar-semantic change hidden in styling |
| P7-06 — Remaining Application forms and global correspondence | Existing seven-section Application workspace/child owners; CorrespondenceInboxPage/GmailReviewPage/EmailProviderConnections | W05–W10/M01–M06: immutable packages/attachments, CV cardinality, draft revisions, explicit confirmed send/idempotency/uncertain delivery, legacy review alias | First identify legacy child forms not already migrated. Preserve native P2-D01/archive-byte proof. Add long letter/answers/history/dirty Cancel; inbox list/detail/back/filter/page/error and draft conflict/uncertain new-attempt tests. Separate embedded forms, inbox/read review and compose/send presentation commits. Do not restructure mail persistence with generic Documents work |
P7-06F — Deferred followMode reviewed composer |
Explicit mail-phase design decision, existing metadata/helper producers and P7-06 draft owner | RD19/W01/W10/M04: metadata preservation is not consumer completion; never auto-send or auto-resend | Define exact mode→draft/review action and fallback before implementation. Native deep-link/back/reload/source-context/no-write entry/stale draft/explicit review tests, EN/NB names and focus. Separate optional mail commit; remain DEFERRED if its mandatory product decision is unavailable |
| P7-07 — Documents owner-scoped index | Documents architecture, completed source-editor destinations from P7-04/06 | C05–C12/W05–W08/M04/S05/E09: no generic Document persistence, file relocation, browser crawl or search snippets containing private bodies | First contract commit: bounded authenticated metadata-only paginated projection with supported sort/search/types and A/B denial. Then UI commit: honest current/draft/frozen/public labels, source/open/download, stale entry/refetch, mobile cards. Prove no PDF/AI generation on listing; immutable archives after current-source change/delete; preserve one-job CV association/detach rules. Until projection exists, honest owner links only; no fake All documents result |
| P7-08 — Existing notifications and operations | NotificationsPopover/UserNotification/OperationsPage and existing store; P7-06/07 actual destinations | S02/W11/W12: read/dismiss ≠ task completion, stable operation/result/retry/cancel IDs, no invented event producer or scheduled-interview facts | Native read/dismiss/unread/reload/result links, failure/retry/cancel/disconnect/reconnect and no duplicate starts. Full /notifications only if meaningful existing-store content/need is proved; separate route/store contract and presentation commits. F20 recovery is a prerequisite before new enabled producers, not a hidden UI task |
| P7-09 — Remaining Settings, Connections and data lifecycle | Existing Settings tabs/mobile selector, Rules draft lifetime, Profile/security links, independent subcards/save owners | S03–S05/M06/J10: UI/server/local preferences distinct, privacy/entitlements/recent-auth, backup/restore/delete and real mailbox grants | Add panel/control/error association and dirty retry/discard tests, native JSON import/export counts/bytes, owner-change state disposal, conditional plan/deletion availability. Prove locale failure feedback without claiming RD11 root-cause repair. Keep RD11/RD12/RD13 separately diagnosed. Split preference/Connections and data/privacy/plan/backup commits; no billing/deletion/restore activation |
| P7-10 — Admin operational presentation | Existing distinct Users/Audit/System routes and MUI X grid/system owners; shared page/table/state foundations | A01–A03: server roles, last-admin/self/recent-auth, supported undo only, sensitive config/output; aggregate Admin dashboard has no data contract | Native crafted non-admin denial/mounted role revoke, supported persisted undo/restore, safe reset/diagnostic errors and long narrow tables. One Users, one Audit, one System commit; actual SMTP/model/probe/maintenance and production writes need separate authority/evidence. No empty aggregate dashboard |
| P7-11 — Remaining Analytics/error/empty/dialog integration | Implemented DashboardView report owner/AnalyticsPage and migration inventory; shared feedback/state controls | S01/E08 plus affected PRES: no duplicate report owner, denominator/statistic change, fake empty state or renderer modification | Only unresolved legacy presentation/loaded-state findings: exact period/cohort/source links; not-found/denied/retry/empty with heading/focus/localised action. Each shared dialog change gets all-consumer regression. Commit by responsible shared component or page family, not a repository-wide visual sweep |
| P7-12 — Integrated full-migration acceptance | Every executed slice has pushed source/finite evidence and all remaining debt dispositions | All57/route contracts; conditional reader/device/provider/rendering and production gates cannot disappear | Fresh applicable full frontend/backend/browser/HTTP/sidecar/auth/tenant/AI/revision/fidelity/security/build/hygiene lanes, reconciled counts, screenshots and true task journeys; reader/device results or explicit conditions. Produce separate migration acceptance/production readiness/Phase8 readiness decisions. No obsolete code removed before route/consumer proof |
Withheld and independently gated work
| Retained item | Mandatory dependency / permitted boundary |
|---|---|
| P5-13 / PRES-C11 | Remains DEFERRED/UNQUALIFIED/Production-withheld; exact deployed model/runtime identity, frozen32-case/366-call qualification, independent human semantics and redesigned review UI must all meet return conditions. Zero configured-target calls/zero human reviews currently; candidate model is not approved. No automatic qualification or activation. Eventual review reuses named current/proposed/source, progress/error/retry, explicit scope/Accept/Reject and stale-state protection |
| P5-05 / NEW-10 quick preview | Deferred optional read-only host; full job page is preserved. Decide justified need and prove parity/Back/focus/query/dirty/no-write before a separate slice; no second full editor |
| Human reader/device/contrast | M01–M13 remain mandatory where relevant. Settled AX-name/heading/panel/contrast/incomplete triage and physical touch/software keyboard/mobile AT must be resolved by actual operators before complete affected acceptance |
| Production output | Actual Linux/fonts/portrait/crop/native-print/other-browser qualification with unchanged oracle; local synthetic photo/fidelity success is finite |
| Reliability | Keep language/notification/Rules500 roots, focus timing, CV section expansion/Unsaved incidents and O(N) Board separately owned; successful reruns are not diagnosis. New changes to risky owners require native reproducer and recovery proof |
| Backend/domain | Profile/job stale-save and creation-intent idempotency, worker F20, calendar F21, billing/deletion/provider cleanup and legacy cutover retain their original contracts; no implicit B07 or schema contraction |
| Production | F04, current complete backup/isolated restore, effective configuration/provider/schema/secrets, rollback, protected CI/deployed identity and smoke/monitoring remain NO-GO gates. Development migration neither supplies operator evidence nor authorizes a main push |
| Phase 8 | Dashboard order/resize/reset/cross-device persistence and widget framework remain separate. Existing five visibility flags stay. Unsupported new metrics/goals/preferences/tasks/admin aggregation require explicit NEW/OD/data contracts |
Handoff exit and implementation entry
The Phase 6 fresh validation, commit ledger, preservation matrix and final report define the actual source and bounded decision. Before Phase 7 execution, fetch/reconcile intervening development state, retain the existing branch unless a verified handoff establishes a successor, and update P7-00 scope rather than redo completed work. A source/remote mismatch is resolved without discarding changes.
Readiness stays CONDITIONAL GO: bounded migration can use proven shared patterns; complete affected acceptance requires human/device/operator results and any severe shared defect to be resolved before propagation. C11 qualification is mandatory only before its withheld review capability can return, not permission to activate it while migrating unrelated pages. Provider writes and destructive/production work remain separately authorized. Production release: NO-GO. Phase 7 implementation performed in Phase 6: none.