Files
jobtrackingapp/docs/cv-import/ACCEPTANCE.md
T

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.