Required section headings absent from content (normalize-insensitive,
fenced-code-block headings ignored via extractSections). The single
section-completeness truth shared by the CLI and the server (AC2.2) —
narrower than validateArtifact because callers here already hold the
resolved required-section list (e.g. the staging route also serves it to
the form) rather than re-reading a template per call.
Required section headings absent from
content(normalize-insensitive, fenced-code-block headings ignored viaextractSections). The single section-completeness truth shared by the CLI and the server (AC2.2) — narrower thanvalidateArtifactbecause callers here already hold the resolved required-section list (e.g. the staging route also serves it to the form) rather than re-reading a template per call.