# Phase 5 implementation plan **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](../phase-3/PHASE4_IMPLEMENTATION_PLAN.md), [P4-06 conditional acceptance](../phase-4/p4-06/README.md), [readiness gates](READINESS_GATES.md), [navigation contract](NAVIGATION_MIGRATION.md), [57-contract impact](PRESERVATION_IMPACT.md), [visual acceptance](VISUAL_ACCEPTANCE.md). 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](production-release-decision/README.md) 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](OPEN_BLOCKERS.md#p5-13-deferred-debt-and-return-conditions--2026-10-08) 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](p5-04b/README.md) 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](VISUAL_ACCEPTANCE.md), 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](README.md#validation-baseline). Explain added/removed case counts, retain P2-D01 until separately proven fixed. 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](READINESS_GATES.md#g-shell--p5-00-before-p5-01-starts) 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](NAVIGATION_MIGRATION.md): 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 (blocked contract) **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:` 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.