12 KiB
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 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 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.