Files
jobtrackingapp/docs/pre-phase10-ux/TEMPLATE_AUDIT.md
T

8.5 KiB
Raw Blame History

Template audit and versioned design library

27 October 2026. Source baseline: accepted A checkpoint 663023a; local runtime checkpoint 73ea888 is additive. The nine existing theme IDs are retained for saved-document compatibility. New documents and explicit template Apply opt into designVersion: 2. Missing/version-one settings retain the original catalogue and rendering. Duplicate/restore preserve their stored design version.

Inventory and changes

Body typography, line height, paper size and default page margins remain theme-specific and unchanged. Existing font embedding and licensing remain authoritative. The revised scale below is in points for the name and millimetres for section/entry gaps.

Theme Family Name / section / entry Revised treatment
Modern Single column, blue header band 25 / 5.8 / 4 3mm name gap and 5mm header-to-main separation
Minimal Plain single column 25 / 7.5 / 4.8 Open section/entry rhythm, restrained rules
Executive Centred editorial serif 28 / 6.5 / 4.6 Centred identity and measured entry spacing
Technical Left technical sidebar 24 / 4.8 / 3.2 68mm sidebar, 8mm internal padding, readable teal/white palette
ATS Classic Plain text-oriented column 23 / 5 / 3.4 3mm name gap and 5mm header-to-main separation
Nordic Right pale sidebar 23 / 6 / 4.2 Actual pale catalogue palette; wider identity column
Elegant Serif heading, editorial kicker 27 / 7.5 / 5 Distinct editorial hierarchy and entry rhythm
Creative Left magenta sidebar 20 / 5.5 / 3.8 Wider identity column, actual magenta/white palette
Code Numbered developer sections 25.5 / 5.2 / 3.6 3mm name gap and 5mm header-to-main separation; mono details

Original sidebar usable width was approximately30mm; revised usable width is52mm. Version-two sidebars use fixed page backgrounds plus native print margin boxes, covering every physical page without consuming text-safe margins. Existing pagination/content rules are preserved. No source facts or filler are inserted to fill sparse pages.

Real visual specimens

The same synthetic short English, medium Bokmål, long English and dense Bokmål histories were rendered across all nine designs. They include long names, Norwegian characters, missing optional fields, long bullets, many skills and a deliberately nonhuman rectangle image. The reference profile is identical across themes; all outputs retain source markers and profile/document revision checks.

Corpus Documents Physical pages Content/count/bounds
Version-one baseline 36 122 36/36 passed
Revised version two 36 122 36/36 passed
Matching letters, short EN / long NB 18 38 18/18 passed

Final Windows roots: .artifacts/pre-phase10-ux/templates-legacy, templates-revised-02, matching-letters-02. Each includes source measurements and native PDF bytes. CV contact sheets cover first and last pages for all four histories; letter sheets cover both histories. CV Poppler review includes63 first/last images; letters render all38 pages. Earlier *-01 roots remain immutable intermediate evidence. Linux qualification is recorded separately when executed.

Physical page changes: short Creative2→1; long Technical4→5; dense Technical5→6; dense Creative7→6. Other cases retain their page counts. More readable spacing can require additional pages. The total remains122; no content was dropped to reduce page count.

All43 revised CV sidebar pages pass an independent raster check at two physical edge columns, every pixel row including top/bottom, tolerance±2RGB. Initial version-two specimens still split an unhyphenated surname in Nordic/Creative: the added benchmark reported28/36 passes and8 failures. Their name sizes were adjusted to the measured52mm column; fresh specimens pass36/36 with no unhyphenated name fragments. Name wrapping now improves Technical7→4 lines, Nordic7→4 and Creative8→4. Natural hyphen breaks remain allowed. Arbitrary longer names/custom font sizes cannot be guaranteed; existing typography controls remain available. Minimal can retain a sparse final page.

Fidelity and preservation accounting

The unchanged marker oracle reports8/36 passes and28 S01-only failures in both baseline and revised CV sets. The large name marker's DOM Range top differs from the PDF character-cell top by2.05–3.16mm, exceeding the original2mm limit. Other marker position, font, colour and membership checks pass. The tolerance was not relaxed and these failures remain in fidelity-results.json.

Separate actual-ink diagnostics compare the captured preview/PDF foreground pixels: maximum top difference2px baseline and3px revised. Viewed crops support a coordinate metric mismatch for this large marker, rather than demonstrated visible displacement. This diagnostic does not replace the original oracle or human print acceptance.

Current-source version-one comparison passes36/36 exact CSS (including embedded fonts), normalized HTML, body and marker-order checks. Raw HTML is byte-identical12/36; the other24 differ only in the synthetic avatar data-URI bytes after decoded-pixel normalization. Only image payload bytes are excluded in that explicitly labelled comparison. Original goldens and historical acceptance records are preserved.

The first letter proof used whole-page line extraction, interleaving sidebar and body text in six documents. Its12/18 result is retained in matching-letters-01/pdf-proof-linear-reading.json. Physical column-aware extraction then verifies all18 complete body/recipient/sender/subject texts without changing PDF bytes, marker counts, page dimensions or word-bound checks. Fresh final letter specimens also pass18/18. This is a reading-order correction in the independent proof, not a content tolerance exception.

Actual previews and matching letters

CV selection cards now lazily load the existing server-rendered synthetic sample endpoint and display a scaled sandboxed, noninteractive document. Only synthetic samples are cached; user documents are not placed in the thumbnail cache. The full candidate dialog remains read-only until explicit Apply. Skeleton/failure states are translated. The former test forbidding any thumbnail iframe was intentionally replaced because the owner explicitly requested actual rendered previews; isolation and distinct-theme checks remain covered.

The letter chooser uses the same nine available/locked themes. Explicit Apply changes the local style snapshot and existing actual letter preview, preserving current text, sender, recipient, date, language and page size. Match CV also copies the reviewed heading font and existing paper-size behaviour. Existing letter revision/save/history owners remain unchanged. Version-two rendering matches palette, fonts and appropriate header/sidebar details; old letter settings remain version one and serialize without added null properties. Shared server-side persistence/preview checks reject new premium-theme activation without the existing ProThemes entitlement, including restore. Legacy settings and currently saved same-theme premium designs remain usable after downgrade. The review-discovered API bypass has5 actual RED failures followed by the full1394-test backend GREEN.

Optional portrait safety

The existing shared profile portrait remains the only image owner. CV controls link to that editor and retain per-CV Show Photo. Crop zoom and both axes have keyboard sliders, labels and existing bounded512px output.

Uploads now validate actual stream size, decode still PNG/JPEG/WebP, enforce2048px axes/4million pixels, orient EXIF and re-encode PNG without source metadata. Decode concurrency is bounded. Corrupt, truncated, unsupported and animated inputs are rejected. Identity failure retains the old image; ambiguous acknowledgement loss preserves the staged target for reconciliation. Cleanup failure after durable success does not report a false failed save/removal.

The existing hourly retention hook deletes unreferenced staged/exact legacy portrait files older than24hours, preserving current references and excluding reparse paths. Account export/erasure inventory includes owner-only staged and legacy leftovers. No second image store or master-profile owner was introduced. Decoder dependency: pinned SkiaSharp4.153.1 plus Linux native assets, locked transitive hashes; MIT upstream licence.

Human accessibility, physical devices, native language review and manual printing remain open. Neither synthetic images nor browser automation establish those qualifications.