# CV-IMPORT-01 acceptance and CV-QA-01 handoff 26 October 2026. Branch: `feature/cv-import-docling-ai`, descendant of CV-UX-01 `4a0af6273b4d45f652c7e0dee69c2c668e1a9ac5`. **Overall: CONDITIONAL GO for development/QA of the implemented workflow. CV-QA-01: CONDITIONAL GO. Production: NO-GO.** All selected model-independent automated regression lanes passed. This does not close partial extraction/review coverage, live-model qualification, human acceptance or inherited infrastructure/security gates. It is not broad factual-accuracy or production acceptance. ## Delivered workflow and source Before: legacy uploaded text/heuristic extraction and whole-profile acceptance. After: bounded PDF/DOCX admission → owned artifact and durable job → actual Docling structural extraction → conservative grounded interpretation/validation → original/source evidence plus explicit review/corrections → revision-aware transactional Career Profile application → existing CV Editor and PDF export. No proposed fact is implicitly approved. CV variants, frozen/submitted documents, cover letters and unrelated profile information remain protected by existing owners. The active interpreter is deterministic. A configurable, disabled self-hosted Ollama adapter supplies prompts, schema/grounding validation, failure handling and synthetic test seams; it is **not connected to active processing** and no real model inference was qualified. No permanent general-purpose model was selected. Docling slim 2.142.1 uses the supported model-free native PDF/Word interfaces in a separate hash-locked runtime; OCR/layout models remain disabled. Product source was committed at `e941b3c`; provider regression at `cd67c0d`; benchmark/security checkpoint at `b62962c`. Final publication adds documentation/evidence and a three-line test-only seeder schema correction. Windows and Linux source binding passed despite documentation-only HEAD differences. The final tested fixture is included in source hashes; no application change is inferred from a documentation commit. | Checkpoint | Pushed commit | |---|---| | CV-IMPORT-00 audit/plan | `5118a58` (ledger `731536d`) | | CV-IMPORT-01 secure extraction | `3ea8ff9` | | CV-IMPORT-02 grounded interpretation/apply | `e8f76a9` | | CV-IMPORT-03 lifecycle/retention/recovery | `9e1726c` | | CV-IMPORT-04 review/corrections | `e941b3c` | | CV-IMPORT-05 provider persistence | `cd67c0d` | | CV-IMPORT-06 evaluation/security | `b62962c` | | CV-IMPORT-07 acceptance/handoff | Final publication commit containing this report | Each completed checkpoint was pushed without force and local/remote HEAD equality checked. No main merge, production deployment, live schema/service/model/cache modification, registry publication, Phase 10 or unrelated integration occurred. ## Independent decisions | Criterion | Decision | Scope / unfinished qualification | |---|---|---| | Secure Upload | PASS | Automated local admission/signature/archive/XML/ownership/bounds tests | | Docling Extraction | PARTIAL | Actual native PDF/DOCX; no OCR/layout-model qualification; table/name ordering failures | | Structured Career Data Mapping | PARTIAL | Actual canonical schema/provenance; limited labelled/delimited grammar, some conventional multiline records remain unclassified | | Processing Progress and Recovery | PASS | Persisted stages, leases, refresh, cancel/retry/expiry/stale-worker tests; no timer-generated completion | | User Review and Approval | PARTIAL | Tested explicit decisions/corrections/compare/conflict flow; missing typed-record creation/reclassification uses Career Profile editor; human usability open | | MariaDB Persistence | PASS | Actual local 12.2.2, transactions/history/rollback/idempotency/stale/ownership/migrations; hosted qualification remains separate | | RD21 Revision Safety | PASS | Canonical revision/atomic apply plus retained diagnostics and volume lanes | | Security and Privacy | CONDITIONAL | Inherited qualification unresolved; native parser/Windows memory/load/privacy-retention review open | | Deterministic Extraction Accuracy | PARTIAL | Fixed synthetic results below; not arbitrary-document acceptance | | Real AI Model Compatibility | BLOCKED | No approved isolated immutable inference artifact/environment qualified | | Real AI Extraction Accuracy | BLOCKED | Synthetic adapter responses are not model accuracy | | CV-IMPORT-01 Overall | CONDITIONAL GO | Implemented development workflow and QA handoff only; partial criteria above remain unfinished | | CV-QA-01 Readiness | CONDITIONAL GO | Exact qualification work and owner actions in CV-QA-01.md | | Production | NO-GO | No release promotion or production operations authorised | ## Final regression evidence [evidence-summary.json](evidence-summary.json) commits counts, source/runtime bindings, immutable image identity and 84 raw report/hash entries. Large logs/PDFs/screenshots and failed attempts remain in this checkout. Main root: `.artifacts/cv-import/`; the unchanged Linux helper requires fresh children under `.artifacts/cv-ux-01/`, specifically **cv-import-linux-image-01** and **cv-import-linux-final-01**. No historical Linux result was substituted. | Independent lane | Current result | Evidence | |---|---:|---| | Full Release backend | 1,260 PASS, zero skipped | `final-01/backend/backend.trx` | | Full frontend | 990 PASS / 108 suites, zero pending | `frontend-full-03.json`, `frontend-final-process.json` | | TypeScript / lint / static build | PASS, native exits 0 | `typecheck-03.log`, `lint-03.log`, `frontend-build-03.log` | | Ordinary Chromium / preservation contracts | 364 PASS, zero skips/retries | `final-01/ordinary-{1,3,4}.json`, `final-03/ordinary-2.json`, exact discovery membership | | Actual Docling import → review → profile → editor → PDF | 2 PASS, zero retries; review axe zero violations | `import-browser-final.json`, two corrected searchable/rendered PDFs | | CV AI authorization/recovery (controlled responses) | 2 PASS | `final-03/ai.json`; not real AI inference | | Authentication recovery | 2 PASS | `final-03/auth.json` | | Rate limits | 9 PASS | `final-03/rate.json` | | Ingress | 6 PASS | `final-03/ingress.json` | | PDF admission/cancellation | 1 PASS | `final-03/pdf-admission.json`; inert child contract | | Preferences concurrency | 3 PASS | `final-03/preferences.json` | | RD21 persistence diagnostics | 6 PASS | `final-03/rd21.json` | | Phase 9 diagnostics | 18 PASS | `final-03/diagnostics.json` | | Phase 9 volume / RD21 volume | 3 / 3 PASS | `final-03/{volume,rd21-volume}.json` | | Actual local MariaDB 12.2.2 | 70 PASS, zero skipped; cleanup 0 | `provider-review-06/{mariadb.trx,run.json}` | | Offline sidecar application/security/grounding/adapter | 76 PASS | `python-offline-final.log`; immutable existing runtime, no models/network | | Real Docling parser/security partition | 14 PASS | `python-docling-final.log`; separate slim runtime | | Corpus generator/oracle self-tests | 11 PASS | `python -m unittest discover -s docs/cv-import/benchmarks -p test_*.py -v` | | Node helper contracts | 25 PASS | `node-helper-contracts.log` | | Linux harness offline contracts | 11 PASS | `linux-helper-contracts.log` | | Legacy seeder safety self-checks | 24 PASS | `final-03/seed-helper.log` | | Linux native renderer | 6 PASS, zero skips/retries | `cv-import-linux-final-01/linux-renderer.json` | | Windows original CV oracle | 24 documents / 60 pages PASS | `final-01/windows/native-pdf.json` | | Linux original CV oracle | 24 documents / 60 pages PASS | `cv-import-linux-final-01/linux-pdf.json` | | Windows / Linux letter oracle | Each 4 documents / 14 pages PASS | Respective `letter-fidelity/fidelity-results.json` | | npm / NuGet API / new Python lock advisory checks | Zero reported known vulnerabilities | `npm-audit-01.json`, `dotnet-audit-01.json`, `pip-audit-01.json`; does not close inherited Python/model gates | Compared with the verified CV-UX report at the starting history: backend 1,234 → 1,260; frontend 981/107 → 990/108; ordinary browser 364 → 364; actual MariaDB 64 → 70. Focused tests, scenarios, physical documents and auxiliary suites are not added to those totals. Browser contract tests remain within the ordinary count. Python partitions 76 and 14 are disjoint; the focused 27-case parser/adapter rerun overlaps them. ### Failed attempts and exact recovery accounting `final-01` ran all ordinary cases: **359 passed / 5 failed**. All five stopped before product assertions because the isolated insert-only legacy seeder enforced the old schema. The fix adds only the two exact nullable columns and an assertion they remain null. Unknown schema/type/nullability, owner/path/trigger and insert-only protections remain. No tests were deleted or relaxed. `final-03` replaces the **entire 87-case affected shard**, not just its failures, and runs all ten separate lanes. Its binding permits exactly that one helper change, verifies identical application/runtime, and proves the helper is referenced only by the affected spec. The unchanged passed shards contain 100 + 88 + 89 cases; corrected shard 2 contains 87. Both discovery reports reconcile to **364 unique cases**. Earlier 82 passes from failed shard 2 and focused reruns are not counted again. Both attempt source/runtime freezes passed. `final-02` stopped before tests on a wrapper path-separator assertion and supplies no test evidence. Other retained failures/corrections are documented in BACKEND.md, REVIEW.md, SIDECAR.md and QUALITY.md: redundant SQLite startup repair on MariaDB, provider test fixtures, canonical/projection revision drift, stale worker publication, nested/normalized provenance, bounded errors, test readiness/mobile preview assumptions, native child HOME/platform preparation, corpus heading generation and invalid Windows-encoded DOCX scoring subset. Failed attempts are retained rather than overwritten. Two pytest configuration warnings remain visible. Production/live-model/human checks were **NOT RUN / BLOCKED / OPEN**, not silently skipped or counted as passing. Linux image: `sha256:09f856d2bfed7894b5722a1456dae26f35f48aeff6af654d0a1fd7d9cef9896d`. It layers current portable API over the inspected cached native runtime; this is not a hermetic OS rebuild. Build/run source SHA: `a85b4d6966f3485fabd6ae656665a48e6cc710357fb43b9cc4afdfed1f3f3223`. Native image/source/DLL/migration identity and owned API/schema/database/network cleanup passed. The owned Docling test container was removed after its last import test; source/image/limits and cleanup are recorded. No production cleanup ran. ## Accuracy, limitations and owner actions The fixed synthetic corpus contains 14 logical cases / 27 actual documents with separate development/frozen splits. DOCX: 13/13 completion, 100% annotated field precision/recall, zero extra/missing annotated claims. PDF: 13/14 completion (scan deliberately refused), **94.00% precision / 94.63% recall**, nine extra/mis-associated and eight missing claims. PDF date/current-marker precision 100%, recall 90.91%; DOCX 100%/100%. PDF table relationships and a split long name explain the remaining failures. No real-model score exists. See QUALITY.md for exact records, limitations, review burden and actual CPU/memory/timing evidence. Required owner actions: qualify broader independently annotated conventional CV layouts and missing-record/reclassification UX; approve an immutable model artifact and isolated safe runtime before actual model compatibility/accuracy work; perform human keyboard/screen-reader/device/language/native-viewer/printing acceptance; resolve inherited hosted-provider/security/filesystem/backup/recovery/release gates. Applied candidate history retention, Windows kernel memory containment, peak temporary disk and sustained load remain explicit qualification items. Historical production hardware/health was not probed or assumed current. [CV-QA-01.md](CV-QA-01.md) contains the exact reproducible integration/model tests and human checklist. Production remains withheld; no conditional development decision is promoted to release acceptance. Stop at this handoff.