The document is not structurally a lesson: a required field is missing,
a value has the wrong type, or the YAML is malformed. Carries the
underlying parser message, which names the offending field.
A field that must be bullet-formatted (each non-empty line starting with
- or * ) contains a non-empty line without a bullet prefix.
Parameterized by field name so AC-3 can reuse the variant for hints
without adding a new one. Rejected at the parse boundary (§1.3.1) so
malformed content never travels downstream.
A packages entry is empty or contains a double quote, a comma, or
whitespace. Every consumer joins or splits the list on commas (the
Quarto packages="a,b" attribute, uv run --with), so such a name
would silently become a different package list or break the attribute.