Linter
Phase-2c gate (in-app-docs-decoupling §MS-7).
Declared in src/libs/libhelpbuild/helpbuild/Linter.hpp.
Detailed description
Walks content/doc/published and rejects:
- any .md file that still carries a leading YAML frontmatter fence ("---\\n…\\n---") — frontmatter lives in <page>.meta.yaml sidecars after Phase 2; - Jinja constructs outside the authoring subset ({ \c }, # \c #) — % … % is reserved per §OQ-10; - /static/ image / link paths; - links into content/doc/internal anywhere in the tree; - unknown keys in <page>.meta.yaml sidecars (consulting BucketTable).
widget: scheme references are checked against widget-manifest.json only when checkWidgetManifest is enabled (Phase 5+); the Phase-2 gate runs with the check off.
Exit code is non-zero (Linter::Result::violations > 0) when any violation is recorded; each violation is also printed to stderr as "file:line: <message>" so editors can navigate them.