Validate a lesson against the bundled canonical schema, the semantic
cross-field rules, and the author lints. Returns { valid, errors, warnings }; valid is errors-only (warnings never block). Does not throw.
options.extensions registers ext: exercise-type extensions. Without
it, an ext: exercise that a lesson declares is refused (E-EXT-UNSUPPORTED);
CORE content (no ext: types) validates identically regardless of the
registry.
Validate a lesson against the bundled canonical schema, the semantic cross-field rules, and the author lints. Returns
{ valid, errors, warnings };validis errors-only (warnings never block). Does not throw.options.extensionsregistersext:exercise-type extensions. Without it, anext:exercise that a lesson declares is refused (E-EXT-UNSUPPORTED); CORE content (noext:types) validates identically regardless of the registry.