Files
jobtrackingapp/docs/redesign/phase-5/PHASE5_PLAN.md
T

39 KiB
Raw Blame History

Phase 5 implementation plan

Acceptance-planning successor — 2026-10-09: P5-15-00 audits the implemented source at 46a0c0c and defines bounded acceptance checkpoints. It does not start their execution, qualify P5-13 or authorize production. Historical proposal language below is reconciled by linked implementation/readiness successors; all original requirements remain. Every completed logical P5-15 change/evidence checkpoint must be committed, immediately pushed to development, and checked against the remote before continuing. Stop after 00 for owner review.

Documentation only. No implementation slice is authorized or started by this checkpoint. Start from 2a2f9e48052c562ef599825458d0d3a6f9f9fc61 on codex/ui-redesign-phase4. Each row below is a separately reviewable implementation checkpoint when explicitly requested. Stop after each; never run automatically into the next slice.

Sources: Phase 3 sequencing, P4-06 conditional acceptance, readiness gates, navigation contract, 57-contract impact, visual acceptance. This plan makes Phase 3 proposals concrete; it does not supersede preserved functionality or turn missing APIs into existing capabilities.

Latest scope clarification — 2026-10-08: Connor authorizes fresh production assessment from 1095ef1, then P5-14 for implemented P5-09–12 CV capabilities regardless of the release decision. The release decision remains PRODUCTION NO-GO until actual ingress/current backup-restore/configuration/rollback/protected-CI evidence exists; main automatically deploys on push. This supersedes qualification-only and deploy-after-P5-15 sequencing. P5-13 remains DEFERRED / NOT QUALIFIED, its full return conditions mandatory and Production withholding active. P5-14 may complete a scoped responsive checkpoint without unimplemented AI review; missing AI-specific responsiveness, human screen-reader and production font/photo evidence must remain explicit. No new qualification/Docker recovery, P5-13 UI, P5-15 or B07 starts here. Every individual P5-15 change/checkpoint must later be committed and pushed.

Order and conditional branches

Order / ID Name Type / user impact Dependency and checkpoint boundary
1 — P5-00 Shell readiness gates Interaction/accessibility; small corrective change G-SHELL; existing shell only, before P5-01
2 — P5-01 AppShell and grouped navigation First major visible UI redesign, high impact on every authenticated visit Accepted P5-00; same routes/providers
3 — P5-02 Global shell utilities Interaction and visible UI; medium P5-01; existing command and notification capabilities
4 — P5-03 Jobs Table and mobile cards Major visible UI; high P5-01/02, G-JOBS behavior fixtures; includes shared Trash consumer
5 — P5-04a Board presentation Major visible UI; high P5-03; keep /kanban and existing population
6 — P5-04b Table/Board workspace integration Architecture/interaction; medium G-JOBS proven by separate readiness; integration record owns current acceptance
7 — P5-06 Dashboard presentation Major visible UI; high P5-01/02 and G-METRICS; need not wait for 04b
8 — P5-07 Existing-report Analytics destination Presentation/refactoring; high P5-06; exact existing report inventory/definitions and preference proof
9 — P5-08a Job header and Overview Major visible UI; high Jobs entry regression, G-WORKSPACE mobile proof; no package relocation
10 — P5-08b Job section architecture and existing domain content Architecture/visible UI; high 08a + G-PACKAGE, section/query/dirty evidence
11 — P5-09 CV editor frame and navigation Major visible UI; high G-CV-REV + G-CV-RENDER, relevant G-CV-BEHAVIOR
12 — P5-10 CV section editing and source scope Interaction/visible UI; high 09 + item/source/reset/reorder proof
13 — P5-11 Live preview presentation Visible UI/interaction; high 09/10 + accepted rendering evidence; no renderer replacement
14 — P5-12 Template and document controls Visible UI/progressive disclosure; high 11 + supported-setting matrix
15 — P5-13 CV AI review presentation Interaction/visible UI; medium 10/12 + explicit accept/reject/grounding guards
16 — P5-14 Responsive implemented CV journey Interaction/accessibility acceptance; medium Current owner scope: implemented 09–12 independently of release; 13 deferred, missing AI journey retained for later acceptance
17 — P5-15 Phase 5 acceptance checkpoint Validation only; no intended UI change All attempted slices reviewed; blocked/deferred work explicitly excluded from completion

P5-05 is deliberately reserved, not an executable ticket: an active quick-preview drawer would be NEW-10, not a redesign of a mounted production feature. Current ApplicationWorkspace has reusable overlay props but only a full-page production caller. Keep direct title/open and Back/focus behavior in P5-03/04/08. Defer a new preview host until Phase 6 review establishes its value and its read-only/ownership/focus contract is separately approved. Do not add it merely to fill a numbering slot.

04a/04b are separated because the current board read cannot support table filter parity. 08a/08b are separated because a header/overview can improve without moving broken package operations. CV is late and conditional; absent revision/rendering evidence, defer 09–14 explicitly rather than call a partially migrated builder finished. P5-15 can assess completed independent slices with a conditional/partial verdict; full Phase 5 acceptance requires all retained representative scope, or Connor's explicit scope revision.

Common contract for every implementation checkpoint

  • Before editing, re-read its owners, affected PRES rows and the previous checkpoint; add missing high-risk behavioral assertions before changing the protected workflow. Component/service tests do not replace native ownership/package proof.
  • Use existing MUI/Emotion, semantic focus/color/status roles, PageHeader/PageSection and width/density aliases. No new theme, table framework, provider tree, persistent private store, generic save framework, or final brand/font/logo decision.
  • Retain all 31 current routes and compatibility paths. Add /analytics only in P5-07 with meaningful existing content. P5-04b preserves /kanban as an alias only after parity; never remove it. Deep-link and dirty/account lifetimes are acceptance conditions, not cleanup.
  • Every slice applies visual acceptance, including light/dark × EN/NB, real populated/error data, desktop/phone and keyboard checks. All migrations are mobile-capable immediately; P5-14 is additional end-to-end review.
  • After final code change run full inherited backend/frontend/browser/type/lint/build/security/config/secret/whitespace checks per README. Explain added/removed case counts. P2-D01 is an ordinary passing regression after P5-08b readiness, not a current expected failure; retain the historical failing evidence and the passing native contract. Update a slice trace with actual commit/tests/evidence, not this plan's future tense.
  • Roll back a slice's presentation and adapters together, retaining original data and URLs. No schema migration is included. Keep regression tests that describe still-required behavior; do not disable security gates to revert UI. A later compatibility URL already shared must continue resolving during rollback.
  • Stop on unknown ownership/product semantics, newly required schema/provider/renderer replacement, unsafe query truncation or a failing preserved workflow. Document the affected scope; independent slices may proceed only by a subsequent instruction.

P5-00 — Shell readiness gates

Objective/scope: close the five G-SHELL prerequisites against current UI: mobile collapse/occlusion, long admin badge reflow, command list semantics, shared Tooltip contrast and actionable-toast overlap. Retain existing modal mechanics. Add real-App drawer/account/command/private-state fixtures. Sub-diffs may be reviewed in that order; deliver one bounded readiness checkpoint.

Owners/routes/PRES: layout/AppShell.tsx, components/QuickCommandDialog.tsx, shared theme.ts Tooltip and toast.tsx, narrowly necessary labels/tests; shell on authenticated routes, representative /settings, /jobs, /career/builder/:id; PRES-E07/E08/E09, E05, S02/S03/S05, A03; indirect C06 and J05 for tooltip controls. G-SHELL defines exact failure reproductions.

Out of scope: navigation regrouping, shell visual identity, expanded search entities/arrow navigation, modal company-save semantics, feature pages, provider/router changes, global overlay framework.

Proof: existing sidebar/command/dialog/theme/toast tests plus native collapse→reload→mobile, open-toast hit testing, long admin metadata, account switch with open utilities and dirty cancel. Visual sets VS-SHELL/UTILITY/SETTINGS, including 320px while toast is present. Remove only repaired known axe exceptions after evidence; do not touch P2-D01.

Dependency/rollback: no external infrastructure required. Revert each responsible component/style sub-diff if its contract fails; do not start P5-01 until all G-SHELL items accepted. Expected impact is corrective, not the major redesign.

P5-01 — AppShell and grouped navigation

Objective/scope: implement the visible shell in NAVIGATION_MIGRATION: grouped primary/secondary navigation, readable sidebar/rail, selected/hover/focus states, mobile drawer, account area and restrained utility bar. Preserve title/breadcrumb and width owners; use existing PageHeader semantics without duplicating h1. Add skip link/route-heading focus where absent, tested through dirty cancellation. Existing utility content remains for P5-02.

Owners/routes/PRES: App.tsx navigation/title metadata, layout/AppShell.tsx and its existing activeNavTo helper, localized strings and tests. All 31 patterns regression; direct PRES-E07/E08, E05/E06/E09, S02/S03, A01–A03 navigation; all J/W/C/M groups retain entry points as listed in the impact matrix. No provider-order or router-creation refactor.

Out of scope: new Documents/Admin/Notifications routes, dashboard/table/editor forms, capture logic, new AI panel, new brand asset, page-size preference store. Do not introduce a routing framework to represent groups.

Before: accepted P5-00; logical parent tests for non-nested Jobs paths and /career/builder/:id; route/callback inventory, existing real B02/permission tests; dirty CV/letter → theme/language/command/drawer navigation, Cancel retains draft. Characterize current persisted collapse separately from non-persisted mobile open state.

After: every destination accessible expanded/collapsed/phone, current parent/child correct, Back/refresh/deep links and public token routes intact, admin hidden plus API denied, no stale account data. VS-SHELL four theme/locale pairs at desktop/phone plus long admin 320, 767/768 transition, settings and dirty editor as unchanged content controls. One main/h1; focus return and unobscured route heading. This is the first substantial change visible when opening an authenticated page.

Rollback: isolated shell/navigation presentation; keep all URLs and page owners, no persisted collapse-key rename. Revert metadata/component together; stop before P5-02.

P5-02 — Global shell utilities

Objective/scope: refine existing QuickCommandDialog and NotificationsPopover presentation. Commands: grouped six existing static commands and job/company results, labelled search, Arrow/Enter/Home/End/Escape/IME behavior, explicit loading/no-match/error/Retry and stale-result cancellation using the existing API boundary. Bell: recent notifications, unread/read/dismiss/result/operation links with correct focus and no task completion side effect. Integrate utility triggers with shell headers without repeating page actions.

Owners/routes/PRES: App keyboard/utility callbacks only, QuickCommandDialog, NotificationsPopover, notifications client, existing localization. Entries target current Dashboard/Jobs/Companies/Reminders/Settings and /operations; PRES-E07/E08/E09, J03/J08, S02, W11/W12. P3-O02 search outage-as-empty is deliberately owned here.

Out of scope: CV/document search, notification producers, full /notifications, new command platform, global AI assistant, email scheduling/send, persisted query history. Navigation to already-existing pages may use the shell metadata, but no automatic mutation command or admin maintenance shortcut.

Before: quick-command-preservation, notifications-popover, app-shell-notifications, account isolation; add delayed A-result-after-close/B-login, two overlapping queries, dirty navigation cancel, genuine provider-independent error versus no matches and read/dismiss distinction.

After: VS-UTILITY full matrix, empty/query/error/selected/focus, notification load/error/unread/action states, phone keyboard-sized viewport; result count announcements not per-keystroke spam; ordinary Tab remains usable with one trap. Keep no-write Add behavior and current job/company targets. Manual screen-reader command and notification task, or explicitly block that accessibility acceptance pending operator proof.

Dependency/rollback: P5-01. Revert utility content/callback adjustments together; no new store/API. Search cancellation must not create a second unauthenticated client.

P5-03 — Jobs Table and mobile cards

Objective/scope: visible Table toolbar/header/rows and existing phone cards, restrained status/action presentation, secondary Jobs navigation and P4-05 density. Preserve current data columns, page sizes, filters/search/saved views, sorting/selection/actions and Trash mode. Display standard statuses via existing localized semantics; preserve raw custom labels/values. Resolve P4-05-O01 at display boundaries only; dates use UI locale without changing date meaning/timezone storage.

Owners/routes/PRES: JobTable, SavedViewsMenu, existing EditJobDialog call sites, pipeline display helpers and Jobs shell header metadata. /jobs, /trash; links to /jobs/:id, capture Add, /discover, /companies, /offers, /reminders, /settings. PRES-J03–J06, J08–J10 entry only, W01/W02, E07–E09, S03.

Out of scope: new priority/favorite fields, configurable status definitions, Board data consolidation, new preview host, new columns needing N+1 fetches, persisted density, backend schema, Add/import redesign. Trash is the same renderer, not a second screen redesign.

Before: G-JOBS tests; native saved-view CRUD/owner, partial bulk failure retains failed items, row action versus navigation, real App Back/filter/page/focus, 15/20/25 preferences without data loss and unmounted versus mounted density lifetime. Preserve default column choices; Phase 3's suggested new defaults are proposals, not permission to hide current columns.

After: VS-JOBS includes both densities, all columns, custom/long labels, selection/sort, empty/filtered-empty/error/Retry, bulk confirm/partial failure, Trash restore; 1440/1024/768 plus 390/320 cards, all four theme/locale pairs. Header associations/sort state, 32px fine/44px phone targets, visible horizontal-scroll focus. Selection clearing on result changes is explicit and cannot act on unseen stale IDs. No new workflow writes from density/filter presentation.

Dependency/rollback: P5-01/02 + behavioral gate. Keep list query/persistence owner; revert presentation and localized display together. If the existing router preference dependency causes a reproduced state-loss blocker, stop and specify a separate minimal prerequisite rather than rewrite routing here.

P5-04a — Board presentation

Objective/scope: apply the same Jobs hierarchy, surfaces, statuses and useful density to existing grouped Kanban columns/cards. Keep its full-board read and /kanban entry. Offer visible Table/Board navigation but explicitly keep separate view scope while parity is pending; do not imply filters transfer when they do not.

Owners/routes/PRES: KanbanBoard, existing pipeline/group helpers and Jobs secondary navigation. /kanban and /jobs links; PRES-J07, J05 navigation, W01/W02 status/open, E07–E09.

Out of scope: filtered board API, alias/route replacement, replacing three groups with ten columns, arbitrary drag library, custom status configuration, hiding Other or altering group-drop destinations.

Before: kanban-grouped-board, kanban-theme browser; add failed move retains correct card/status/focus, keyboard pickup/move/drop/cancel, exact status menu, unknown Other, >25 jobs and direct job open with return context.

After: VS-BOARD across themes/locales/phone/tablet/desktop. Saved/Applied/Rejected remain coarse group destinations; precise menu retains every supported status, Offer remains active, Other is not a drop target. Native drag and no-drag alternatives, move announcements, visible focus/scroll and long labels; empty/error/Retry. No forced dense table on phone.

Dependency/rollback: P5-03 styling contract; independent of G-PACKAGE/CV. Revert board presentation while retaining its current API/path.

P5-04b — Table/Board integration (read prerequisite satisfied)

Current status: separate query readiness and integration supply the accepted scoped implementation. The original dependency below remains the requirement; it is no longer an unexecuted blocker. Full-result scaling and physical-touch acceptance remain explicit gaps.

Objective/scope: once G-JOBS read parity is separately accepted, introduce one presentation view=table|board choice and compatible /kanban alias. Shared committed filter/query state, explicit selection lifetime, refresh and return context; reuse both renderers and the accepted read contract.

Owners/routes/PRES: bounded Jobs workspace owner composed from JobTable/KanbanBoard, App route adapter, existing query helpers. /jobs?view=…, /kanban, job return state; PRES-J05/J06/J07, W01/W02, E07–E09, S03.

Out of scope: silently defining a new backend population, loading all pages in the browser, schema, generic query framework, changing SavedView schema, removing /kanban or current all-board capability. No per-account view persistence added.

Before: accepted read contract with identical filtered population, completeness and ordering rules; API tests on >25 rows/custom statuses/deleted/follow-up/readiness, native list/board membership and stale move/error behavior. Explicit URL wins; no view specified means Table. Filter changes/page transitions and Back/Forward cannot lose source query.

After: VS-JOBS/BOARD comparison with the same fixture/query, saved filters, selection cleared or retained according to documented page scope, mobile view switch. Legacy /kanban replace preserves safe query/hash/state without loops; all records remain reachable. Do not claim parity from first-page equality.

Dependency/rollback: may be deferred while 06/07 proceed. On rollback keep canonical new shared links functional (map view=board to retained board); do not revert to ignoring shared URLs. No redirect before proof.

P5-06 — Personal Dashboard presentation

Objective/scope: redesign existing summary/attention, five visibility-controlled groups, activity/current pipeline/company/tag charts and existing detail panels. Put next actions and honest counts first; compact metric rows, informative charts and plain sections. Preserve onboarding, all five owner-local flags and existing 6/12/24 month control. No chart disappearance before its tested destination exists.

Owners/routes/PRES: DashboardView, existing OnboardingChecklist, small chart/metric presentation extractions only as consumed. /dashboard, source Jobs/Reminders/Career links; PRES-S01/S02, E07–E09, W11/W12 navigation, J05/J09 links.

Out of scope: order/resize/reset/layout persistence (Phase 8), new aggregate backend, weekly goals, upcoming interview appointments, unsupported match/CV performance/sector metrics, auto-AI, new admin analytics.

Before: G-METRICS. daily-control-loop, workflow-trust-signals, StageAnalyticsTests, AnalyticsSalaryTests; add native five toggles/reload/A→B isolation, partial summary versus trends failure, exact chart transformations and source query links. Keep the dashboardPrefs:<owner> key and meanings.

After: VS-DASHBOARD: populated, first-use, all-hidden, no-data-in-window, loading, independent error/Retry, all four locales/themes/widths; values tables/legends/period/sample and keyboard alternatives. Label non-deleted count “Tracked jobs”; interview-prep is preparation, not an appointment; current stage counts are not historical conversion. Unknown/unsupported is not fabricated zero. Existing salary currencies/periods remain separate.

Dependency/rollback: P5-01/02; may proceed without 04b/package/CV proof. Preserve current five visibility groups, no automatic reset/show-on migration. Revert view/extracted presentation together without clearing preferences.

P5-07 — Existing-report Analytics destination

Objective/scope: expose a meaningful /analytics using the reports currently inside Dashboard: monthly applications/responses, current status pipeline, company/source reports, tags/trends, current-stage age and salary groups. Separate detailed reading from daily attention. Add Insights → Analytics only with this page. Reuse existing reads and chart presentation; no new metrics endpoint.

Owners/routes/PRES: chart/series helpers extracted from DashboardView as needed, new thin Analytics page, App route/title/nav and source-link helpers. New /analytics, existing /dashboard remains; PRES-S01/S02/E07/E08/E09, J05/J09 source links. G-METRICS mandatory.

Out of scope: full analytical product from Phase 7, new cohort conversions/history, global activity/task/CV queries, admin aggregation, user layout settings, silently moving all five preference-controlled groups off Dashboard.

Before: inventory each existing report/action/period and endpoint. Preserve Dashboard access and five flag semantics; initially detail page may reuse the same presentation component while Dashboard keeps its current groups. Avoid a second calculation implementation or parallel duplicate requests within one mounted route. Add direct-load/back/source-filter/denominator tests and current-versus-window labels.

After: VS-ANALYTICS loaded/empty/error/period changes, accessible exact values, no hover-only data, all mode/locale pairs/phone. Disclose truncated top lists, all-time tags versus window trends, response sample and stage occupancy. Don't obtain an unknown bucket by subtracting mismatched populations; display raw byStatus separately when canonical funnel omits custom values.

Dependency/rollback: P5-06. This is a bounded advancement of existing-report presentation from Phase 7, justified by already available data; full new Analytics features remain later. Once shared, /analytics must remain meaningful even on rollback (retained report view or direct compatibility entry to existing reports), not a 404. No document/admin route follows automatically.

P5-08a — Job header and Overview

Objective/scope: bounded persistent role/company/status/location/deadline/actions header and clearer Overview hierarchy, reusing current job details/progress/next action/description. Fix the specifically assigned mobile progress-scroll semantics at that boundary before restyling it. Keep current five section keys and unchanged children.

Owners/routes/PRES: ApplicationWorkspacePage local WorkspaceHeader, Overview composition, ApplicationProgress/JobDetailsSection call sites; /jobs/:id, /applications/:id and existing sections. PRES-W01/W02/W03 entry/W11/W12 links, J05/J07 entry, E07–E09. Relevant F01 job write semantics remain unchanged.

Out of scope: package capture/tailoring/document relocation, changing save/status API, compulsory wizard, new favorite/match metrics, remounting section owners, changing mail send.

Before: G-WORKSPACE progress/focus fixture, real detail missing/foreign, status/next-step link, dirty Cancel/Discard and safe Back/focus tests. Layout opening must not trigger analysis/render/create/write.

After: VS-WORKSPACE Overview including long title, unknown data, error/Retry, status actions, mobile progress keyboard access, both themes/locales. No giant header, retained source/metadata via disclosure, no invented appointment/submission claims.

Dependency/rollback: Jobs entry tests pass, 04b not required. Existing tabs/package children stay untouched, so G-PACKAGE does not gate this header-only slice. Revert header/overview together, not API state.

P5-08b — Job sections and preserved domain content

Objective/scope: after G-PACKAGE, introduce Overview, Match, Application, Documents, Timeline, Notes & tasks, Interview navigation using the Phase 3 adapter. Recompose existing children without rewriting their persistence. Application exposes CV/letter/answers/submission; Timeline retains correspondence. Correct followMode/safe query retention and literal AI context {name} at affected navigation/label boundaries.

Owners/routes/PRES: ApplicationWorkspacePage, applicationWorkspace section adapter, wrappers around ApplicationAssets, Attachments, Correspondence, InterviewPrep, ApplicationChecklist, ApplicationTimeline. /jobs/:id, /applications/:id and every current section/numeric alias; PRES-W01–W12, M01/M02, M04/M05 navigation, C01/C05–C12 relationships, E07–E09.

Out of scope: rewriting these domain components, mail draft/send/revision changes, generic task/event/document store, global Documents page, altering canonical/CV ownership, atomic send+status+freeze, new scheduling, provider integration.

Before: G-PACKAGE native archive proof; adapter tests for overview/analysis/match/cv/cover-letter/interview/documents/timeline/checklist/communication/job-details and numeric 0–9; followMode, Back/search/state retained. Native all-child entry, manual vs answer Notes, CV attach/detach, document AI-use consent, dirty letter navigation and AI accept/reject; mocked provider failures remain identified as such.

After: VS-WORKSPACE for every populated section, key empty/error/dirty/dialog states, draft versus frozen/current/public labels, keyboard and mobile selector; provider-unavailable/manual routes remain reachable. Explicit source/CV/job scope and partial operation failures. No double editor or auto-send on mount. Retain existing overlay props without adding a host.

Dependency/rollback: 08a + package and relevant integrity proof. One route-adapter/composition checkpoint; if state extraction or API changes become necessary, stop and split before implementation. Keep old aliases on rollback and restore exact child entry, never rewrite saved data.

P5-09 — CV editor frame and navigation

Objective/scope: clean editor + live preview frame, compact name/scope/save/export header and five studio tabs with Content primary; retain current tab capabilities/history loading. Reuse the single current editor/settings/save owner. No new editor state architecture.

Owners/routes/PRES: CvBuilderEditor header/pane/tab composition, shared PageHeader layout only where appropriate. /career/builder/:id, library/public links; PRES-C05/C06/C10/C12, E07–E09, W05 entry. Current 900px edit/preview and 1024px grid behavior require explicit transition tests, not forced global breakpoint alignment.

Out of scope: section editor rewrite, template geometry, save/revision implementation, library redesign, share model changes, new zoom, global density applied to print.

Before: G-CV-REV/RENDER and behavioral save failure/retry/undo/redo/native history restore, duplicate/public lifecycle, selected source and pending save during tabs/theme/locale/resize/dirty navigation. No simultaneous integrity edits in this file.

After: VS-CV all five tabs reachable, one/multi-page preview stays keyboard accessible, correct save acknowledgement, edit/preview preserves focus/draft/scroll across 899/900/1024; EN/NB/dark/light. Clear “This CV only” and linked job without global-profile implication.

Dependency/rollback: blocked until gates; package also required if touching job-bound association. Revert frame/tab ordering, retain settings/source IDs and accepted revision protocol. Do not roll back security/integrity prerequisites.

P5-10 — CV section editing and source scope

Objective/scope: improve existing ContentTab/SectionRow/EntryEditor hierarchy, scope indicators, expand/collapse and progressive editing. Retain custom/preset/free-text sections, per-item overrides, inclusion, ordering and drag plus keyboard alternatives. Reset-to-source is explicit and CV-only.

Owners/routes/PRES: these existing functions within CvBuilderEditor, AiSectionAssistant entry only, existing reorder/settings helpers; builder Content route/state, source /career link; PRES-C01/C02 relationship, C06/C07/C10/C11 entry, W05, E08/E09.

Out of scope: new canonical editor, fact inference, generic rich-text framework, source schema, inline AI auto-apply, invented content, removal of long-tail sections.

Before: accepted 09/gates; native item override/reset/inherit after source change and sibling/canonical readback; reorder/hide/custom/delete confirmation; mouse/keyboard equivalents and save error retains draft.

After: VS-CV Content long/empty/omitted/selected/edit/error/reorder states in full matrix. Omission uses existing labels/icons, never whole-container opacity that reduces editable contrast. All existing advanced actions reachable; no focusable decorative cards.

Rollback: Content presentation only; do not re-key saved sections/items or change override serialization. Preserve update callback and undo transaction semantics.

P5-11 — Live preview presentation

Objective/scope: improve pane header/page indicator/fit and loading/error/overflow presentation around the accepted preview engine. Preserve labelled scroll region, automatic fit, page boundaries, hidden measuring iframe, current source freshness and late-result handling.

Owners/routes/PRES: preview helpers/pane in CvBuilderEditor; builder and public/private export regression; PRES-C06/C08/C09/C10/C12, E08/E09.

Out of scope: padding/pagination algorithm changes disguised as layout, renderer/Chromium stack replacement, new template/font system, manual zoom unless separately requested, save changes, new public exposure. Geometry corrections must already be accepted in G-CV-RENDER.

Before: 09/10 + same-source/settings preview/PDF corpus from rendering gate; native out-of-order/delayed/failed preview, PDF busy/timeout, account disposal and undo/reload. B03 shared admission stays enforced.

After: VS-CV preview on all viewport boundaries and real PDF page images/dimensions/text; light/dark application surrounds same intentional paper styling. No missing/duplicated text, extra blank pages or misleading Saved while preview stale. Preview keyboard region and iframe entry/exit remain visible under sticky UI.

Rollback: pane presentation only, maintain renderer evidence and revised backend contract. Any new geometry failure stops this slice rather than broadening it.

P5-12 — Template and document controls

Objective/scope: reorganize existing CvCustomizeTab Template/Customize modes into sensible defaults and Advanced disclosure. Keep every supported template, typography, accent, photo/header/icons, skills/sidebar/column, A4/Letter, margins/spacing/document density/date/language/section presentation control.

Owners/routes/PRES: components/cv/CvCustomizeTab, existing registry/normalization call sites and builder tab composition; /career/builder/:id; PRES-C06/C07/C08/C09/C10/C12, E08/E09.

Out of scope: reducing capability set to brief examples, font/brand choice, arbitrary positioning/word processor, silently dropping unsupported saved values, application density as print density, API/schema.

Before: 11 + explicit setting→control→normalized value→render matrix. Pro/template locks, old saved settings, switch compatible/incompatible options and confirmation/reset behavior; all template default outputs and risk-based advanced combos.

After: VS-CV Customize/Template/Advanced full matrix; labels/errors/explanations, keyboard color/size choices, long NB control names, phone reachability and unchanged exported document from equal settings. No buried capability accessible only by pointer.

Rollback: control grouping only; retain serialized names/defaults and normalization. G-CV-RENDER repairs cannot be undone as part of UI rollback.

P5-13 — CV AI review presentation

Objective/scope: align existing section assistant and whole-document current/proposed views, explicit source/target scope, edit/compare/accept/reject/regenerate/error/locked states. Share a small review layout only if both existing consumers justify it; domain validators remain local.

Owners/routes/PRES: AiSectionAssistant, DocumentAiTab inside builder, existing aiWorkspace callbacks; builder Content/AI Tools; PRES-C06/C07/C10/C11, S04, E08/E09. Other AI domains are regression dependencies, not migrated here.

Out of scope: global chat, new model/provider, automatic facts or profile writes, letter/interview AI redesign, replacing extraction/block validators, relaxing Free/Pro or privacy gates.

Before: 10/12 and AI tests: Reject/close/error no changes; edited acceptance only intended block; invalid/missing/duplicate IDs rejected; source changes while proposal open, late response/account switch discarded; malicious/unsupported claim fixture does not silently become accepted fact. Prompt constraints or UI review are not universal model factual proof.

After: VS-CV AI short/long diff, unavailable/Free-disabled/provider-error, keyboard compare/apply/reject, all themes/locales/mobile. Show known source material; unknown facts flagged for review, no implied validation of invented employment/skills. Retain explicit user authority over edits.

Rollback: review frame only; callbacks/validators/entitlements unchanged. Never rollback grounding/ownership guards for presentation convenience.

P5-14 — Responsive CV workflow checkpoint

Current execution scope — 2026-10-08: Connor authorizes implemented P5-09–12 workflows from 1095ef1 after a separate release assessment, including when production is NO-GO. P5-13 remains deferred and unavailable; do not run qualification/recovery, build fake review screens or activate its Production path. The original full AI-assisted journey below remains an outstanding acceptance obligation. This checkpoint may accept only its implemented subset and must record human/native-touch/zoom/font and AI-review gaps. Stop before P5-15/B07. Every individual P5-15 change/checkpoint must later be committed and pushed.

Objective/scope: verify and address only integration regressions introduced by 09–13 across complete edit→preview→AI review→undo/history→save→export workflow. Refine existing mobile pane/action placement if their combination fails; mobile support was required in every earlier slice, not deferred until here.

Owners/routes/PRES: existing builder composition and focused tests; identified/private/public routes; PRES-C05–C12, W05/W07 if job-bound fixture, E07–E09/S04. G-PACKAGE required for real submitted variant comparison.

Out of scope: new mobile editor, unrelated Career Profile/library or template repair, broad animations, new state/persistence abstractions.

Before: accepted 09–13 and all gates; real native source/sibling/history/package tests and output corpus. Keep preview/scroll and open review stable across 320/390/768/899/900/1024/1440 transitions.

After: VS-CV full journey, light/dark EN/NB, sticky controls versus keyboard, manual AT/zoom/touch evidence or explicit unaccepted gaps. Every long form/action remains reachable; no premature slot release/PDF parallelism change. Any unrelated baseline issue returns to its owner.

Rollback: only checkpoint integration corrections; no wholesale builder rollback that discards prerequisite integrity contracts.

P5-15 — Representative-screen acceptance

Objective/scope: tests/docs review of all completed P5 slices against all 57 contracts and all retained routes. Reconcile shared shell/headers/density/theme/dialog interactions, actual data/read boundaries, visual differences and performance/request counts. No new screen architecture.

Owners/routes/PRES: scoped acceptance records, existing suites/fixtures; all 31 preserved patterns plus /analytics if implemented; every PRES group. Regenerate a complete acceptance matrix with direct/entry-only/unchanged touches and remaining provider/manual/production gaps.

Out of scope: implementing blocked CV/board work, fixing unrelated defects, removing aliases or expected failures without proof, Phase 6/7/8, B07, production deployment.

Before/after evidence: execute complete final baseline and all VS sets for actually migrated screens, compare against P4-06 and immediate predecessors, record visual reviewer observations and every incomplete axe/manual check. Full route/draft/identity/package/source tests as applicable; fresh exact test counts and inherited-vs-new-vs-expected-failure split. Check no unsupported dashboard metric or lost advanced action. Full acceptance cannot silently exclude a blocked planned representative screen.

Verdict/rollback: GO only for the reviewed migrated scope with required gates met; CONDITIONAL/PARTIAL if explicitly deferred board/CV/manual evidence remains, NO-GO for a preservation regression. F04 stays a separate production gate regardless of local verdict. Recommend Phase 6 review next only if supported; stop, do not implement it. Docs/test adjustments revert independently; functional regressions return to their originating slice.

Ownership and scheduling

Default execution is serial checkpoint-by-checkpoint. Read-only fixture/spec work for future screens can occur independently. Separate backend package/revision/rendering work is possible only with explicit authorization and ownership; never co-edit CvBuilderEditor during integrity repairs. Serialize App.tsx, AppShell, theme/toast, list/board query ownership and Dashboard report extraction. Do not run several browser suites against the same disposable API port simultaneously.

Provider mail/calendar, Career Profile, CV library, Documents/global projections, Settings/Admin and full Notifications remain Phase 7. Dashboard customization remains Phase 8. New status configuration/favorite/weekly goals/aggregate admin metrics retain separate NEW/OD contracts. No prerequisite here starts the security queue automatically.