santifer/career-ops · warning
⚠️ config/profile.yml cv.sections names ${names}, which mat
Error message
⚠️ config/profile.yml cv.sections names ${names}, which matched no section in this CV. The CV also renders ${unrecognized.size} section title(s) the section-order alias table doesn't recognize (${titles}) — if one of those is the section you meant, its title needs an entry in SECTION_ALIASES in generate-pdf.mjs. Otherwise the name has no effect and can be dropped. What it means
After resolving cv.sections names, generate-pdf.mjs reports names that matched no section block in the rendered CV (unresolved) only when the CV also renders titles the SECTION_ALIASES alias table cannot identify (unrecognized). The likely cause is that the section exists under a heading the table doesn't map, so the configured name had nothing to attach to; the fix is a new SECTION_ALIASES entry.
Source
Thrown at generate-pdf.mjs:819
}
}
// It is worth one when the CV also renders titles the alias table can't name,
// because then "not in this CV" may be a misreading: the section could be
// sitting right there under a heading nothing could identify.
//
// Whether that is what happened is not knowable here — an unresolved name may
// equally be an optional section with no entries. So the report states only
// what is checkable (this name matched nothing; these titles are unidentified)
// and leaves the conclusion to the reader. Deliberately not conditioned on
// whether the document changed: a name that did nothing did nothing, whether
// or not its neighbours moved, and treating "output identical" as the failure
// signal misreads an order that was already satisfied.
const reportUnresolved = () => {
if (unresolved.length === 0 || unrecognized.size === 0) return;
const names = unresolved.map(name => `"${displayTitle(name)}"`).join(', ');
const titles = [...unrecognized.values()].map(title => `"${title}"`).join(', ');
console.warn(`⚠️ config/profile.yml cv.sections names ${names}, which matched no section in this CV. The CV also renders ${unrecognized.size} section title(s) the section-order alias table doesn't recognize (${titles}) — if one of those is the section you meant, its title needs an entry in SECTION_ALIASES in generate-pdf.mjs. Otherwise the name has no effect and can be dropped.`);
};
if (chosen.length < 2) {
reportUnresolved();
return html;
}
// The slots are the named sections' own positions, in document order; the
// sections fill them in the configured order. No separate sibling check is
// needed: every accepted block is balanced, so they all sit at the same
// nesting level by construction.
const slots = [...chosen].sort((a, b) => a.start - b.start);
let out = '';
let cursor = 0;
for (let i = 0; i < slots.length; i++) {
out += html.slice(cursor, slots[i].start);
out += html.slice(chosen[i].start, chosen[i].end);
cursor = slots[i].end;View on GitHub (pinned to 60398d6549)
Solutions
- Check the unrecognized titles quoted in the warning — if one is the section you meant, add a mapping in SECTION_ALIASES in generate-pdf.mjs (custom title -> canonical key)
- Otherwise drop the ineffective name from cv.sections; the warning explicitly states the name has no effect
- If the section truly is absent (optional section stripped for having no entries), no action is needed — the warning only appears when unrecognized titles also exist
Example fix
// before (generate-pdf.mjs) const SECTION_ALIASES = new Map([ ['skills', 'skills'], // 'Toolbox' unrecognized ]); // after const SECTION_ALIASES = new Map([ ['skills', 'skills'], ['toolbox', 'skills'], ]);
Defensive patterns
Strategy: validation
Validate before calling
// Before relying on cv.sections, check every configured name maps to something
// the rendered CV actually contains under a known alias:
function unmatchedNames(configuredKeys, renderedHeadings, aliasToKey) {
const known = new Set(renderedHeadings.map(h => aliasToKey[h.toLowerCase().trim()]).filter(Boolean));
return configuredKeys.filter(k => !known.has(k));
} Prevention
- When you rename a cv.md heading, add the mapping to SECTION_ALIASES in the same change
- Watch for this warning after translating cv.md — localized headings are the top source of unrecognized titles
When it happens
Trigger: cv.md uses a custom heading like '## Toolbox' (not in SECTION_ALIASES), cv.sections lists 'skills', and the rendered HTML contains the 'Toolbox' title — unresolved and unrecognized are both non-empty, so reportUnresolved() fires. It also fires regardless of whether the rest of the reorder changed anything.
Common situations: Renaming section headings in cv.md for personal style; non-English headings after translating cv.md; a new optional section type added to the template without extending the alias table.
Related errors
- ⚠️ ${message} (proceeding — --allow-reorder set)
- ⚠️ config/profile.yml cv.sections lists only "${displayTitl
- ⚠️ config/profile.yml cv.sections lists "${shown}" more tha
- ⚠️ config/profile.yml cv.sections lists "${shown}", which i
- ⚠️ ${message} Continuing because overflow is warning-only b
AI-assisted analysis of santifer/career-ops@60398d6549 (2026-08-20).
Data as JSON: /api/errors/9664fb1370e9f4c2.
Report an issue: GitHub.