# CAREER-002 CV Builder redesign

Updated: 2026-08-09

Status: `IMPLEMENTED — NOT VERIFIED`. Repository interactions and automated/build gates are complete; browser, external research and production gates remain.

## Revalidated capability matrix

| Requirement | Existing implementation | Current status |
|---|---|---|
| Ordered section list | Default plus persisted section order | Implemented; browser pending |
| Expand/collapse | Entry-based sections use explicit collapse controls | Implemented; deeper tests pending |
| Inline editing | Section title and per-entry title/subtitle/bullets overrides | Implemented; validation depth pending |
| Add entries | Explicit custom-section entries; master entries remain profile-owned | Implemented; browser pending |
| Delete entries/sections | Confirmed deletion for populated custom entries/sections; profile entries hide instead of mutating the profile | Implemented; browser pending |
| Reorder sections/entries | Native drag plus named up/down keyboard buttons | Implemented and persistence-tested |
| Visibility | Named section/entry/custom-section hide/show controls | Implemented and persistence-tested |
| Save feedback | Unsaved/Saving/Saved/failed badge existed | Hardened in `b58cc19` |
| Navigation safety | Debounced/failed state could be abandoned silently | Hardened in `b58cc19` |
| Preview | Debounced live server render beside editor; visible failure/retry; below editor on narrow layout | Implemented; responsive/browser review pending |
| Versions/public/PDF | Existing history/restore, public toggle/link and PDF export | Preserved; regression/production gates remain |

## Save-integrity increment

- Latest settings/name are retained independently of render closures.
- Monotonic save revisions prevent an older overlapping request from changing a newer edit to `Saved` or `Save failed`.
- Blank names show inline validation and are not sent as misleading no-op renames.
- Unsaved and failed states expose **Save now**; failed saves retry the latest settings.
- Data-router navigation is blocked until the user explicitly confirms discarding pending/failed changes. Reload/tab close uses the browser's before-unload warning.
- The debounce timer is cleared on intentional unmount. Existing version creation and API payloads are unchanged.

## Interaction and error increments

- Custom sections retain the existing `string[]` storage model but expose entries individually: add, multiline edit, inline empty validation, arrow reorder and confirmation before destructive deletion.
- Custom sections can be reordered and hidden without changing the Career Profile. Deleting an original profile-backed entry is intentionally not offered; variant-specific hide/override preserves source-of-truth ownership.
- Profile-backed section and entry controls include the affected section/entry name. Expand controls expose `aria-expanded`.
- Preview failure no longer silently preserves stale output without explanation; an error state and in-context retry are available.

## Verification to date

- Focused Builder list/helper/deep-link/save/navigation: 3 suites, 17/17 tests; editor deep-link/interaction 9/9.
- Full frontend: 49/49 suites, 184/184 tests.
- Production build/TypeScript and `git diff --check`: pass.
- Implementation commits: `b58cc19`, `a5b74e0`, `2043349`.

## Research limitation

The programme asks for authenticated FlowCV browser research. Browser tooling was finalized earlier in this session and no authorized FlowCV session was inspected. Existing repository research documents were read as prior context, but this is not reported as fresh browser evidence. Implementation continues from confirmed JobTracker gaps.

## Remaining verification

- Decide and verify narrow-screen editor/preview navigation from rendered behavior.
- Run 375/768/1440, Light/Dark, keyboard/focus, empty/error and production synthetic-variant checks.
- Recheck DOCX status honestly: the current architecture documents it as an extension point, while PDF/public rendering are implemented.

## Rollback

Revert `2043349`, `a5b74e0` and `b58cc19` in reverse order. No schema, dependency, configuration, CV data rewrite or version migration is involved.
