docs(acceptance): record native CV and document qualification

This commit is contained in:
cesnimda
2026-10-10 22:11:05 +02:00
parent 22455bba0a
commit b9525b8452
2 changed files with 246 additions and 0 deletions
@@ -0,0 +1,32 @@
# P5-15-03 — CV and document correctness
**CONDITIONAL GO for the implemented local scope; production font/photo qualification remains open.** The initial severe mobile preview defect was independently repaired before this qualification. The existing renderer, print geometry, revision model and fidelity tolerances are unchanged.
## Executed proof
The native Chromium/SQLite qualification uses synthetic loopback-only records and actual API preview/PDF exports. Standard fixtures retain all nine template IDs plus long English/Bokmål, compact Letter/8 mm, roomy A4/28 mm, reordered/hidden sections, sidebar, bubbles/grid and unbreakable boundary content. [Measured results](evidence/document-results.json) retain exact fixture membership and tolerances.
| Contract | Fresh observed result | Boundary |
|---|---|---|
| Standard rendering | 16/16; 36 preview = 36 PDF pages | Exact page count/content membership; dimensions 0.5 mm, positions 2 mm, font size 0.5 pt, RGB 1/255 |
| Settings exports | 8/8; 24 preview = 24 PDF pages | Same verifier/tolerances; EN/NB and app light/dark |
| Revision protection | 5/5 focused backend | History/restore/edit-after-restore, overrides/profile isolation, revision-owned settings and ownership |
| Browser conflict/recovery | Native independent-client conflict and stale draft download/reload cases pass | Missing revision rejected; one concurrent writer wins; current draft/history retained |
| Initially hidden visible pages | Four native pagination cases pass, including two new hidden-initial fixtures | Default modern one page and long minimal four pages wait for physical layout; reveal/resize/scale does not repaginate incorrectly |
| Photo inclusion | Four native exports; 4 preview = 4 PDF pages | Authenticated upload, decoded image and actual PDF image object only when included; modern and technical templates |
The photo fixture is deliberately a tiny synthetic PNG, with no personal image. It demonstrates actual account-upload resolution, image decoding and native export inclusion/exclusion, **not** representative portrait crop, photographic quality, all templates or deployed asset-path fidelity. PDF inspection confirms one embedded image when included and zero when hidden. No font files are exposed or redistributed.
## Fonts and production boundary
The actual preview uses theme-specific font stacks, not an independent browser-only layout. Native Windows PDFs embed resolved subset fonts (for example Segoe UI in modern, Arial in technical). Standard measurements include typography/wrapping/page membership. Linux production uses system Chromium from the existing API Dockerfile; its installed fonts/assets are not measured here. The local Docker engine is unavailable (missing `dockerDesktopLinuxEngine` pipe); no recovery, daemon startup, image pull or production change was performed. Windows parity does not prove Linux font metrics or production photo access.
The operator must run the same frozen 16/8 corpora with the deployed-equivalent browser/font inventory and representative approved synthetic portraits, compare with the unchanged verifier, inspect clipping/crop/asset failures and record actual image/revision identifiers. Production qualification remains NOT VERIFIED until that evidence exists.
## Save-state investigation and preservation
The [intermittent register](../p5-15-01/INTERMITTENT_FAILURES.md) now records the real 800 ms autosave boundary. The preview-exit test controls that boundary, retains original focus/draft/no-write checks before it, then proves the normal versioned save contains the retained draft. This is a test qualification, not a second saving model or a claim that the untraced historical incident is conclusively diagnosed. Its original incident remains open.
PRES-C06/C07/C08/C09/C10/C12, E03/E05/E08 and W05–W08 retain frame/edit/override/order/history/export/frozen associations. The full backend and native package proofs remain mandatory at final regression; no proposal/provider response changes canonical Career Profile or immutable submissions. The final report will record the complete post-change rerun separately rather than treating these focused results as the entire application suite.
Human screen-reader, real touch/software keyboard and production rendering remain unverified. P5-13 remains deferred/unqualified/Production-withheld; this checkpoint does not qualify AI or the original full Phase 5 scope.
@@ -0,0 +1,214 @@
{
"checkedUtc": "2026-10-10T20:10:14.163370+00:00",
"environment": "Windows; native Chromium 151; synthetic loopback fixtures",
"fidelity": [
{
"name": "fidelity",
"passed": 16,
"total": 16,
"tolerances": {
"pageDimensionMm": 0.5,
"positionMm": 2,
"fontPt": 0.5,
"rgbComponent": 0.00392156862745098,
"pageCountAndMembership": "exact"
},
"fixtures": [
{
"fixture": "default-modern",
"previewPages": 1,
"pdfPages": 1
},
{
"fixture": "default-minimal",
"previewPages": 1,
"pdfPages": 1
},
{
"fixture": "default-executive",
"previewPages": 1,
"pdfPages": 1
},
{
"fixture": "default-technical",
"previewPages": 1,
"pdfPages": 1
},
{
"fixture": "default-ats-classic",
"previewPages": 1,
"pdfPages": 1
},
{
"fixture": "default-nordic",
"previewPages": 1,
"pdfPages": 1
},
{
"fixture": "default-elegant",
"previewPages": 1,
"pdfPages": 1
},
{
"fixture": "default-creative",
"previewPages": 1,
"pdfPages": 1
},
{
"fixture": "default-code",
"previewPages": 1,
"pdfPages": 1
},
{
"fixture": "long-en-minimal",
"previewPages": 4,
"pdfPages": 4
},
{
"fixture": "long-nb-code",
"previewPages": 4,
"pdfPages": 4
},
{
"fixture": "compact-8mm-letter",
"previewPages": 4,
"pdfPages": 4
},
{
"fixture": "roomy-28mm-nb",
"previewPages": 5,
"pdfPages": 5
},
{
"fixture": "grid-and-bubbles",
"previewPages": 1,
"pdfPages": 1
},
{
"fixture": "long-sidebar-nb",
"previewPages": 5,
"pdfPages": 5
},
{
"fixture": "unbreakable-and-boundary",
"previewPages": 4,
"pdfPages": 4
}
]
},
{
"name": "settings-fidelity",
"passed": 8,
"total": 8,
"tolerances": {
"pageDimensionMm": 0.5,
"positionMm": 2,
"fontPt": 0.5,
"rgbComponent": 0.00392156862745098,
"pageCountAndMembership": "exact"
},
"fixtures": [
{
"fixture": "dark-en-before",
"previewPages": 3,
"pdfPages": 3
},
{
"fixture": "dark-en-after",
"previewPages": 3,
"pdfPages": 3
},
{
"fixture": "dark-nb-before",
"previewPages": 3,
"pdfPages": 3
},
{
"fixture": "dark-nb-after",
"previewPages": 3,
"pdfPages": 3
},
{
"fixture": "light-en-before",
"previewPages": 3,
"pdfPages": 3
},
{
"fixture": "light-en-after",
"previewPages": 3,
"pdfPages": 3
},
{
"fixture": "light-nb-before",
"previewPages": 3,
"pdfPages": 3
},
{
"fixture": "light-nb-after",
"previewPages": 3,
"pdfPages": 3
}
]
}
],
"photos": [
{
"themeId": "modern",
"showPhoto": true,
"previewPages": 1,
"decodedPhotoCount": 1,
"pdfPages": 1,
"imageCount": 1,
"fonts": [
"AAAAAA+SegoeUI-Bold",
"BAAAAA+SegoeUI"
],
"pdfSha256": "a4b01f65ad6ed1dec348acb9b189b83ef6401176270b74cc094c295ede8db422"
},
{
"themeId": "modern",
"showPhoto": false,
"previewPages": 1,
"decodedPhotoCount": 0,
"pdfPages": 1,
"imageCount": 0,
"fonts": [
"AAAAAA+SegoeUI-Bold",
"BAAAAA+SegoeUI"
],
"pdfSha256": "09e22879acf153c219a4dc30e15a0c4c965ee2189c46a565539392e86324ffaf"
},
{
"themeId": "technical",
"showPhoto": true,
"previewPages": 1,
"decodedPhotoCount": 1,
"pdfPages": 1,
"imageCount": 1,
"fonts": [
"AAAAAA+Arial-BoldMT",
"BAAAAA+ArialMT"
],
"pdfSha256": "48a39ffde946d418722ede0c4f46fdd0ef61323b751ab3c19e0936d65cf8f257"
},
{
"themeId": "technical",
"showPhoto": false,
"previewPages": 1,
"decodedPhotoCount": 0,
"pdfPages": 1,
"imageCount": 0,
"fonts": [
"AAAAAA+Arial-BoldMT",
"BAAAAA+ArialMT"
],
"pdfSha256": "5814c65b83b63a7901843f50c2ce186c07d01376cd63754ee2a7497ddb3114c3"
}
],
"limits": [
"one-pixel synthetic image verifies inclusion/decoding/native embedding, not portrait crop or photographic quality",
"Linux production fonts/photo runtime not available",
"historical Unsaved incident lacks an original timing trace",
"No human reader/device evidence"
]
}