test(cv-qa): reconcile acceptance and hand off conditional readiness

This commit is contained in:
cesnimda
2026-10-27 05:25:47 +01:00
parent 2fdcb60fa9
commit 4a8c907d70
10 changed files with 1827 additions and 14 deletions
@@ -0,0 +1,51 @@
# CV Integration QA: Phase 10 handoff
27 October 2026. Decision: **conditional readiness for candidate assessment and planning only**. No Phase 10 implementation is authorized by this handoff. Broad cleanup is NO-GO, and production approval is not established.
## Entry authority and preservation
[Redesign implementation plan, Phase 10](../redesign/IMPLEMENTATION_PLAN.md#phase-10--cleanup) permits removal only of genuinely obsolete legacy UI after confirming no route still uses it, tests pass and the functionality inventory is satisfied. [CV-QA PLAN](PLAN.md) preserves all 57 functionality groups and 33 routes and explicitly excludes Phase 10 implementation. Candidate-specific development assessment and production release decisions remain separate.
No unused deletion candidate has been verified by this work. A name containing “legacy”, an older endpoint, or a newer UI beside it is insufficient removal evidence.
| Inspected item | Current usage / disposition |
|---|---|
| `job-tracker-ui/src/views/CareerProfilePage.tsx:865` | Active Docling review path renders `CvImportReview`; retain. |
| `CareerProfilePage.tsx:434`, `:444`, `:879`, `:928` | Older extraction runs still use the legacy review/accept flow; retain. |
| `JobTrackerApi/Controllers/ProfileCvController.cs:270` | `/runs/{id}/accept` remains a caller-backed endpoint for that older-run path; retain. |
| `job-tracker-ui/src/App.tsx:428`, `:432`, `:434` | `/kanban`, `/correspondence/review` and `/applications/:id` still route through compatibility redirects; retain the active route behavior. |
The table records inspected active paths, not an exhaustive repository-wide dead-code inventory. No route or preservation group was retired by this QA scope.
## Supersession and dependency inventory
| Requested inventory category | Evidence-backed disposition |
|---|---|
| Newly superseded CV Editor components | No unused component verified. The redesigned editor remains the active owner; this QA adds import compatibility rather than a replacement editor. |
| Newly superseded import components | Docling runs use the new review/mapping controls. Older runs still take the existing review/accept branch, so coexistence does not establish removal eligibility. |
| Historical-document compatibility | Retain legacy run DTOs/accept behavior, canonical revision/history contracts, null-as-inherit overrides, CV versions, frozen HTML/binary packages and letter/application versions. |
| Obsolete dependencies | None established. Pinned Docling dependencies are active; older Python extraction supports other legacy input paths. Dependency removal needs caller/runtime/image and security evidence, not package age. |
| Duplicated services or UI | No duplicated canonical profile, queue or revision owner was introduced. `CvImportMapping` translates reviewed assignments; `CareerProfileMapper` persists canonical projections; interpreter/review and legacy diff functions serve distinct contracts. No verified duplicate is nominated for deletion. |
| Required cleanup tests | Candidate caller/route/old-data compatibility checks, canonical/provider rollback/revision/replay tests, import review/browser cases, all57/33 preservation membership and relevant unchanged PDF/font oracles. Human/model/deployed qualifications remain separate. |
These negative findings delimit this audit; they do not claim exhaustive dead-code or dependency analysis. Broader inventories belong to a separately authorized candidate assessment.
## Evidence available and its boundary
- The independent read-only review of scoped `ef425c2` changes found no confirmed new owner/revision/replay/data-loss or terminal-race blocker. It identified retained unlabelled pipe-column order as a qualification limit. It did not run builds/tests or establish production correctness.
- `.artifacts/cv-integration-qa/real-browser-01.json` records six local Chromium cases passing with zero skipped/unexpected/flaky cases. Four new CV-QA scenarios are included in that six. They exercise real Docling, source assignment, durable readback, selected conflict/reimport behavior, scoped CV customization and PDF download; the English desktop case also checks frozen application/letter preservation.
- Scope-specific axe scans record zero violations and one incomplete color-contrast result each. English/Bokmål, light/dark and 1440/390/768 CSS viewport samples, selected Enter activations, reduced-motion emulation and screenshots are automated evidence. [Manual QA](ACCESSIBILITY_AND_MANUAL_QA.md) keeps human/device/assistive-technology/native-language/contrast/print checks OPEN.
- Final evidence reconciliation passes: backend1336; frontend995/109; ordinary364 with exact discovery membership; separate browser configurations53; actual MariaDB80 including connection loss; Python90; original Windows/Linux24CV+4letter oracles per platform. A seventh real-import case produces three additional four-page PDFs with complete facts/associations/bounds. Focused and successor counts are not added to overlapping full totals. See REGRESSION_RESULTS.md and evidence-summary.json.
- No live CV-model inference was run. Local automation, a real local provider and static review do not prove hosted isolation, deployed identity, production acceptance or semantic model quality.
## Required candidate assessment before any cleanup
For each proposed deletion, the development owner must identify the exact file/symbol/route and its replacement, trace current callers and compatibility paths, and demonstrate the inventory behavior remains satisfied. Record old-run/data-format compatibility and owner/revision/error/recovery behavior where relevant. Run the candidate's affected tests against a frozen source identity and reconcile discovery membership and native exits; preserve the 57-group/33-route inventory and relevant PDF goldens.
The reviewer then records the concrete impact, regression risk, rollback/recoverability and acceptance decision for that candidate. If a route or consumer is active, retain it or propose a separately authorized compatibility transition. Passing unrelated QA cannot make an active consumer obsolete.
## Owner actions and stop conditions
Development owner: retain the completed evidence reconciliation, carry forward open qualifications without upgrading them, and nominate a concrete candidate only after finding evidence it is unused. Product/manual QA owner: complete the OPEN acceptance checks in the companion handoff. Release owner: separately establish fresh deployed/source identity and remaining hosted/provider/security/release gates before any production decision.
Stop after assessment/planning. Do not start cleanup, remove legacy review/accept/redirect behavior, merge to main or deploy under this handoff. The principal risks are deleting still-used compatibility behavior, treating scoped automation as complete acceptance, and losing preservation coverage through overlapping or stale evidence. No verified unused candidate is currently ready for implementation.