Files
jobtrackingapp/docs/redesign/phase-6/p6-05/PHASE7_HANDOFF.md
T

19 KiB
Raw Blame History

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.ts semantic 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.