Check a lesson against the quality minimums (QUALITY_MINIMUMS, the
numbers of schema/quality-rules.json), keyed to its purpose: every
minimum for practice (the default), neither the exercise nor the
exercise-type minimum for bridge, no exercise-type minimum for quiz. Returns { valid, errors, warnings }
where errors are the shortfalls and warnings is always empty; the
consumer decides whether a shortfall blocks. A matching with
from_cards counts the pairs parsing derives, so a parsed lesson gets the
same answer as its source. For input that already has the schema's shape
(validateLesson); does not throw on such input.
Check a lesson against the quality minimums (
QUALITY_MINIMUMS, the numbers ofschema/quality-rules.json), keyed to itspurpose: every minimum forpractice(the default), neither the exercise nor the exercise-type minimum forbridge, no exercise-type minimum forquiz. Returns{ valid, errors, warnings }whereerrorsare the shortfalls andwarningsis always empty; the consumer decides whether a shortfall blocks. Amatchingwithfrom_cardscounts the pairs parsing derives, so a parsed lesson gets the same answer as its source. For input that already has the schema's shape (validateLesson); does not throw on such input.