docs(cv): complete builder implementation evidence
CI and Deploy / test (pull_request) Failing after 1m36s
CI and Deploy / deploy (pull_request) Has been skipped

This commit is contained in:
cesnimda
2026-08-09 21:08:28 +02:00
parent 20433491db
commit efacc3a06b
8 changed files with 69 additions and 39 deletions
+12
View File
@@ -0,0 +1,12 @@
# CAREER-002 evidence index
Updated: 2026-08-09
No screenshot or fresh FlowCV inspection is claimed because browser tooling had already been finalized.
- Execution path, capability matrix and limitations: `docs/verification/career-002-cv-builder.md`
- Commands/results: `docs/audits/verification-log.md` V-120V-125
- Interaction/save/navigation/preview tests: `job-tracker-ui/src/cv-builder-deep-link.test.tsx`
- List/helper regressions: `job-tracker-ui/src/cv-builder-page.test.tsx`, `job-tracker-ui/src/cvBuilder.test.ts`
- Implementation commits: `b58cc19`, `a5b74e0`, `2043349`
- Synthetic data only; no private CV, FlowCV account, provider, model, production service or external request was used.
+3
View File
@@ -154,3 +154,6 @@ Output was reduced to filenames and commit counts. The token artifact appears un
| V-120 | Bounded `rg`/`Get-Content` of CV Builder list/editor/client/tests, variant controller/service, application assets, architecture and Phase 8 requirements | Repository root | Revalidate CAREER-002 capabilities and identify confirmed gaps before editing | PASS — most requested section/edit/reorder/hide/preview/version/PDF behavior exists; silent debounce/failed-save navigation, blank-name feedback, custom-entry/delete confirmation and regression depth are evidenced gaps | Fresh FlowCV browser research unavailable after browser finalization; existing repository research is not relabeled as new evidence | Confirmed product/data-integrity gaps plus research limitation |
| V-121 | `npm.cmd test -- --runInBand src/cv-builder-deep-link.test.tsx src/cvBuilder.test.ts src/cv-builder-page.test.tsx` | `job-tracker-ui` | Verify name validation, latest-data retry, navigation warning and existing list/deep-link/helper behavior | PASS — 3 suites, 15/15 tests | Initial allowed-navigation assertion hit the test runtime's absent `Request`; the meaningful cancel/warning path remains covered without inventing a polyfill | Environmental test-runtime limitation |
| V-122 | `npm.cmd test -- --runInBand`; `npm.cmd run build`; `git diff --check` | `job-tracker-ui` / repository root | CAREER-002 save-integrity regression, TypeScript/build and patch hygiene | PASS — 49/49 suites, 181/181 tests; production build; no whitespace errors | Repository line-ending notices only; browser/production checks not run | Environmental/deployment limitation |
| V-123 | `npm.cmd test -- --runInBand src/cv-builder-deep-link.test.tsx`; full `npm.cmd test -- --runInBand`; `npm.cmd run build` | `job-tracker-ui` | Verify custom-section add/edit/reorder/hide/delete confirmation and persistence | PASS — focused 7/7; full 49/49 suites and 182/182 tests; production build | Synthetic variants only; browser not run | N/A |
| V-124 | `npm.cmd test -- --runInBand src/cv-builder-deep-link.test.tsx` | `job-tracker-ui` | Verify named expand/collapse/reorder/hide controls, persisted profile-entry overrides and preview failure/retry | PASS — editor 9/9 | Initial preview assertion read the iframe before the retry completed; changed to wait for observable async completion | Test timing corrected |
| V-125 | `npm.cmd test -- --runInBand`; `npm.cmd run build`; `git diff --check` | `job-tracker-ui` / repository root | Final CAREER-002 regression, TypeScript/build and patch hygiene | PASS — 49/49 suites, 184/184 tests; production build; no whitespace errors | Fresh FlowCV/browser/production verification not run; line-ending notices only | Environmental/deployment limitation |
@@ -47,6 +47,6 @@ This is the rolling action-level evidence index. `PASS (automated/runtime)` is n
| Theme state | Light/Dark/System precedence, login/logout scope, refresh/navigation and two-tab synchronization | PASS (state/provider/bootstrap tests) | PASS/PARTIAL — anonymous local browser at 375/768/1440 | NOT RUN | `ux-002-deterministic-theme-state.md` |
| Job match terms | bilingual/noisy/short/technology-heavy/filler extraction and honest labels | PASS (seven fixtures + component tests) | NOT RUN | NOT RUN | `qa-001-job-term-quality.md` |
| Career Workspace | first/returning/incomplete/loading/import processing/review/failure and recent CV actions | PASS (components; approval gate regression) | NOT RUN | NOT RUN | `career-001-career-workspace.md` |
| CV Builder | blank-name validation, unsaved/saving/failed/saved states, latest-data retry and navigation warning | PASS (components) | NOT RUN | NOT RUN | `career-002-cv-builder.md` |
| CV Builder | edit/collapse/add/delete/reorder/hide, save states/latest-data retry, navigation warning and preview failure/retry | PASS (components) | NOT RUN | NOT RUN | `career-002-cv-builder.md` |
Remaining product actions are `NOT STARTED` in the master plan and will be added as their work packages enter verification. The in-app browser is available for local UI checks; configured/real-provider and production access are not documented/configured.
+18 -13
View File
@@ -2,7 +2,7 @@
Updated: 2026-08-09
Status: `IN PROGRESS`. The save-integrity increment is implemented and locally verified; interaction, browser and production gates remain.
Status: `IMPLEMENTED — NOT VERIFIED`. Repository interactions and automated/build gates are complete; browser, external research and production gates remain.
## Revalidated capability matrix
@@ -11,13 +11,13 @@ Status: `IN PROGRESS`. The save-integrity increment is implemented and locally v
| 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 | Custom section uses line-based items; master entries remain profile-owned | Partial; interaction redesign pending |
| Delete entries/sections | Custom section removal existed without confirmation | Gap remains |
| Reorder sections/entries | Native drag plus visible up/down keyboard buttons | Implemented; persistence tests pending |
| Visibility | Section and entry hide/show controls | Implemented; persistence tests 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; below editor on narrow layout | Implemented; responsive/browser review pending |
| 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
@@ -29,25 +29,30 @@ Status: `IN PROGRESS`. The save-integrity increment is implemented and locally v
- 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, 15/15 tests.
- Full frontend: 49/49 suites, 181/181 tests.
- 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 commit: `b58cc19`.
- 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 CAREER-002 work
## Remaining verification
- Replace line-based custom entries with clear add/edit/reorder/delete behavior and confirmation where destructive.
- Add focused collapse, edit, add, delete, reorder, hide/show, autosave persistence, preview error and version regression tests.
- 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 `b58cc19`. No schema, dependency, configuration, CV data rewrite or version migration is involved.
Revert `2043349`, `a5b74e0` and `b58cc19` in reverse order. No schema, dependency, configuration, CV data rewrite or version migration is involved.
+10
View File
@@ -359,3 +359,13 @@
- **Consequences:** users receive a native discard decision for in-app navigation and browser-standard warning on unload. A blank name stays unsaved until corrected. The deeper builder redesign and browser checks remain CAREER-002 work.
- **User approval required:** No; this is a reversible data-loss safeguard within the approved programme.
- **Reversible:** Yes. Revert `b58cc19`; server variants and version history require no migration.
## DEC-037 — Variant entries override profile facts; they do not delete them
- **Date:** 2026-08-09
- **Decision:** Keep profile-backed entries read-only at the ownership boundary: a CV variant may reorder, hide or override them, but cannot delete the Career Profile item. Provide full add/edit/reorder/confirmed-delete behavior only for variant-owned custom entries using the existing `string[]` model.
- **Reason/evidence:** the architecture and resolver define variants as lenses over stable Career Profile item keys. Treating Delete in the Builder as profile deletion would violate separation and risk changing every CV. The custom-section model already owns document-specific content and needs no schema change.
- **Alternatives considered:** delete profile entries from the Builder; clone profile entries into variants; add a second custom-entry table; keep the opaque one-item-per-line textarea. These violate ownership, duplicate data/infrastructure or fail the approved interaction requirement.
- **Consequences:** original entries use Hide rather than Delete; custom entries receive explicit destructive confirmation. Existing render/public/PDF/version data remains compatible.
- **User approval required:** No; this preserves the programme's explicit Career Profile separation and existing data.
- **Reversible:** Yes. Revert `a5b74e0` and `2043349`; settings JSON remains backward-compatible.
+6 -6
View File
@@ -2,17 +2,17 @@
Updated: 2026-08-09
- **Overall programme status:** Active. Six packages are locally verified; eighteen packages through CAREER-001 are implemented with automated/runtime evidence but blocked from applicable browser/provider/production gates; CAREER-002 is in progress.
- **Current work package:** `CAREER-002`CV Builder interaction redesign (`IN PROGRESS`); save/navigation integrity is pushed, and custom-entry/delete/reorder interaction is the next confirmed gap.
- **Overall programme status:** Active. Six packages are locally verified; nineteen packages through CAREER-002 are implemented with automated/runtime evidence but blocked from applicable browser/provider/production gates; MAIL-001 is in progress.
- **Current work package:** `MAIL-001`consolidated job-email hub and explicit sending (`IN PROGRESS`); revalidate the current Gmail Review/Correspondence/provider boundaries before editing.
- **Completed work packages:** None are `DONE`; all repository security/AI packages still have applicable browser, provider and/or production gates.
- **Locally verified work:** SEC-001, SEC-002, SEC-003, SEC-005A, CORE-001 and PROD-002 (`VERIFIED LOCALLY`).
- **Implemented, verification incomplete:** SEC-004, SEC-005B, SEC-008, CORE-002, BG-001, OPS-001A/B/C, POL-001/002, AI-001/002/003/004, UX-001/002, QA-001 and CAREER-001 (`IMPLEMENTED — NOT VERIFIED`). CAREER-001 now exposes first-run/profile/import/review/failure/general/job-specific/recent-CV actions while preserving explicit Apply/Discard; all automated/build gates pass.
- **Implemented, verification incomplete:** SEC-004, SEC-005B, SEC-008, CORE-002, BG-001, OPS-001A/B/C, POL-001/002, AI-001/002/003/004, UX-001/002, QA-001, CAREER-001 and CAREER-002 (`IMPLEMENTED — NOT VERIFIED`). CAREER-002 now protects unsaved edits and provides tested structured custom-entry, profile-override and preview-error interactions; all automated/build gates pass.
- **Production-verified work:** None.
- **Blocked work:** SEC-006 requires explicit internet/package-index permission; PROD-001/003/004 and REL-001 require documented production access and unfinished dependencies. Real provider, SMTP/MariaDB and production environments are unavailable; the in-app browser is available for local UI checks.
- **Deferred work:** None. Conditional multi-replica coordination, model deletion, realtime operation delivery and unrelated production changes remain outside current packages.
- **Next five work packages:** CAREER-002 CV Builder redesign; EMAIL-001 consolidated email experience; JOBS-001 job-search/application redesign; HOME-001 homepage/Pro promotion; UX-003 authentication/profile polish. SEC-006/007 resume after package-index permission.
- **Status counts:** 6 `VERIFIED LOCALLY`; 18 `IMPLEMENTED — NOT VERIFIED`; 1 `IN PROGRESS`; 9 `NOT STARTED`; 5 `BLOCKED`; 0 `DONE`; 0 `DEFERRED`.
- **Test status:** backend 601/601; frontend 49/49 suites and 181/181 tests; CAREER-002 focused 15/15 and CAREER-001 focused 16/16; production build and patch check pass. CAREER browser/production presentation was not run because browser tooling was finalized; prior UX-002 browser and sidecar 22/22 remain green.
- **Next five work packages:** MAIL-001 consolidated email experience; JOBS-001 job-search/application redesign; HOME-001 homepage/Pro promotion; UX-003 authentication/profile polish; PRODUCT-001 homepage/Pro claims. SEC-006/007 resume after package-index permission.
- **Status counts:** 6 `VERIFIED LOCALLY`; 19 `IMPLEMENTED — NOT VERIFIED`; 1 `IN PROGRESS`; 8 `NOT STARTED`; 5 `BLOCKED`; 0 `DONE`; 0 `DEFERRED`.
- **Test status:** backend 601/601; frontend 49/49 suites and 184/184 tests; CAREER-002 focused 17/17 (editor 9/9) and CAREER-001 focused 16/16; production build and patch check pass. CAREER browser/production presentation was not run because browser tooling was finalized; prior UX-002 browser and sidecar 22/22 remain green.
- **Deployment status:** No deployment performed. No production migrations were run. AI operation worker remains disabled by default.
- **Production status:** Unchanged and unverified. No provider/model call, model pull, external request or paid API occurred.
- **Known regressions:** None found by automated suites. Jest still needs `--forceExit` and reports its existing open-handle notice. Direct clean EF-only SQLite migration still hits the pre-existing historical blank-chain defect before later migrations; normal startup owns reconciliation. Cross-feature monthly AI usage accounting remains a rollout gap.
+7 -7
View File
@@ -16,7 +16,7 @@ Allowed statuses are `NOT STARTED`, `IN PROGRESS`, `IMPLEMENTED — NOT VERIFIED
`DONE` requires every applicable acceptance criterion, focused and regression tests, browser/accessibility/theme/mobile checks, tenant and entitlement checks, documentation, migration/rollback evidence, and production verification. Repository-only work that still requires production is at most `VERIFIED LOCALLY`.
Exactly one implementation item may be `IN PROGRESS`. As of this revision it is **CAREER-002**.
Exactly one implementation item may be `IN PROGRESS`. As of this revision it is **MAIL-001**.
## Consolidated dependency order
@@ -631,11 +631,11 @@ Ordering differences from the suggested list:
- **Required tests:** editing/collapse/add/delete/reorder/save/failure/persistence/preview.
- **Required browser verification:** authorized FlowCV research if accessible, never bypass auth; original JobTracker design at three widths/themes/keyboard/focus.
- **Required production verification:** existing variants/edit/export/public render smoke.
- **Status:** `IN PROGRESS`.
- **Blocker:** FlowCV may require manual authenticated session; implementation can proceed from local evidence if research is labeled blocked.
- **Evidence:** `docs/verification/career-002-cv-builder.md`; V-120V-122. Existing builder already covers most section/reorder/hide/preview/version/PDF behavior. Save integrity is verified at 15/15 focused, 49/49 suites and 181/181 full plus build.
- **Commit:** `b58cc19` (`fix(cv): protect unsaved builder edits`) — first increment only.
- **Remaining work:** custom entry add/edit/reorder/delete confirmation; deeper interaction/persistence/preview error tests; narrow-screen decision; browser/FlowCV/production gates. Avoid rewriting already-working features.
- **Status:** `IMPLEMENTED — NOT VERIFIED`.
- **Blocker:** fresh FlowCV inspection and JobTracker three-width/theme/keyboard checks require a new browser session; production synthetic-variant smoke requires access.
- **Evidence:** `docs/verification/career-002-cv-builder.md`; V-120V-125. Save, navigation, custom entries, named controls, persistence and preview failure/retry pass 17/17 focused, 49/49 suites and 184/184 full plus build.
- **Commit:** `b58cc19`, `a5b74e0`, `2043349`.
- **Remaining work:** browser/FlowCV/production gates and honest deployed DOCX capability check only. Avoid rewriting already-working features.
### MAIL-001 — Consolidated job-email hub and explicit sending
@@ -649,7 +649,7 @@ Ordering differences from the suggested list:
- **Required tests:** link/unlink/dismiss/draft/send duplicate/uncertain/provider failure/reauth/two tenants/free/pro/application embed.
- **Required browser verification:** all states at three widths/themes/keyboard; mocked providers only unless safe configured account.
- **Required production verification:** provider read/draft/send requires explicit authorized synthetic account; never real unsolicited email.
- **Status:** `NOT STARTED`.
- **Status:** `IN PROGRESS`.
- **Blocker:** real provider verification external; mocked/local implementation not blocked after dependencies.
- **Evidence:** final product decisions in source programme.
- **Commit:** none.
+12 -12
View File
@@ -2,17 +2,17 @@
Updated: 2026-08-09
- **Exact current task:** CAREER-002replace the custom-section line textarea/removal shortcut with explicit add/edit/reorder/delete-confirmation behavior, then expand persistence/collapse/hide/preview-error tests without changing master-profile ownership.
- **Last completed step:** CAREER-002 save integrity was committed and pushed as `b58cc19`. Blank names validate locally, latest-data retry is explicit, stale save responses cannot overwrite newer state, and data-router/before-unload navigation warns on unsaved/saving/failed state.
- **Files currently modified:** CAREER-002 verification/log/master tracking documents only. Application code/tests are committed and pushed.
- **Commands already run:** Phase 8, list/editor/client/backend/architecture/test capability trace; focused Builder tests; full frontend Jest; production build; diff review/check; commit/push. See V-120V-122.
- **Test results:** CAREER-002 focused 3 suites/15 tests; frontend full 49/49 suites and 181/181 tests; production build/TypeScript and patch check pass.
- **Exact current task:** MAIL-001trace Gmail Review, Correspondence inbox/application embedding, provider connect/search/import/link/draft/send/archive/pin/read-later/spam/trash flows and existing tests before consolidating UI.
- **Last completed step:** CAREER-002 repository implementation was completed and pushed in `b58cc19`, `a5b74e0`, `2043349`. Save integrity, explicit custom entries, named profile-entry controls and visible preview retry pass all automated/build gates.
- **Files currently modified:** CAREER-002 evidence/log/master tracking documents only. Application code/tests are committed and pushed.
- **Commands already run:** complete Builder capability trace; three focused interaction cycles; three full frontend/build regressions; diff review/check; three implementation commits/pushes. See V-120V-125.
- **Test results:** CAREER-002 focused 17/17 including editor 9/9; frontend full 49/49 suites and 184/184 tests; production build/TypeScript and patch check pass.
- **Services currently running:** none. Browser tabs were finalized earlier. Pre-existing Docker services were not changed.
- **Temporary files or processes:** none. No external FlowCV/provider/model/private CV/paid service was accessed.
- **Temporary files or processes:** none. No FlowCV account, private CV, external provider/model, paid service or production service was accessed.
- **Production changes currently active:** none. No deployment, migration, provider call or production payload occurred.
- **Rollback status:** revert `b58cc19` for the save-integrity increment; no schema/config/dependency/data migration. CAREER-001 rollback is `268b3a0`. Production is unchanged.
- **Uncommitted changes:** CAREER-002 evidence/tracking documents only; commit/push before the next application increment.
- **Known failures:** authenticated FlowCV research unavailable; CAREER-001/002 browser widths/themes/keyboard/Norwegian and production smoke; custom-entry/delete interaction and deeper Builder tests remain; real providers, MariaDB/SMTP/production unavailable; SEC-006 needs internet/package-index permission; parser isolation remains SEC-007.
- **Exact next action:** commit/push CAREER-002 progress evidence, then design explicit custom section items using the existing `string[]` model: add, edit, arrow reorder, confirmation before destructive deletion, empty/title validation, and autosave persistence tests.
- **Work that can continue independently:** remaining CAREER-002 repository work and later UX packages. SEC-006/007 await package-index permission; PROD-001/003/004 await production access.
- **Decisions still required from the user:** none for synthetic repository work. Internet/package upgrades, authenticated FlowCV/private CV access, external/paid providers and production actions retain explicit approval/safety gates; SEC-009 retention/legal policy remains unresolved.
- **Rollback status:** revert CAREER-002 `2043349`, `a5b74e0`, `b58cc19` in reverse order; no schema/config/dependency/data migration. Production is unchanged.
- **Uncommitted changes:** CAREER-002 evidence/tracking documents only; commit/push before MAIL-001 application changes.
- **Known failures:** fresh FlowCV and CAREER browser/production verification; DOCX is documented as an extension point rather than a confirmed current export; real providers, MariaDB/SMTP/production unavailable; SEC-006 needs internet/package-index permission; parser isolation remains SEC-007.
- **Exact next action:** commit/push CAREER-002 final evidence, then read `work.md:454-527`, email architecture/audit findings, correspondence/Gmail components/controllers/services and provider tests; produce a shared-domain/route/action gap matrix before the smallest MAIL-001 change.
- **Work that can continue independently:** MAIL-001 repository work and later UX packages. SEC-006/007 await package-index permission; PROD-001/003/004 await production access.
- **Decisions still required from the user:** none for synthetic repository work. Provider connection/send testing, internet/package upgrades, private data, external/paid providers and production actions retain explicit approval/safety gates; SEC-009 retention/legal policy remains unresolved.