CvTemplateRenderer (six hardcoded HTML templates, ~450 lines) had zero
test coverage. Lock in current behavior before any future theme
extraction touches it: renders without throwing and contains the
content it was given, deterministic for identical input, falls back
to ats-minimal for an unknown template id, and HTML-encodes
user-supplied content (regression guard against CV text containing
markup).