Off by default, opt-in per check via CheckOptions.logging, never via a global. Levels debug / info / warn / error. Fixed vocabulary: start check, end check, log progress, log violation, log metric.
Optional file output so CI can archive the log as a build artifact — timestamped filenames, auto-created output directory, append-vs-overwrite switch.
Thread the options through rather than reading ambient state. More verbose at the call site, and it is what makes parallel test execution behave.
Off by default, opt-in per check via
CheckOptions.logging, never via a global. Levels debug / info / warn / error. Fixed vocabulary: start check, end check, log progress, log violation, log metric.Optional file output so CI can archive the log as a build artifact — timestamped filenames, auto-created output directory, append-vs-overwrite switch.
Thread the options through rather than reading ambient state. More verbose at the call site, and it is what makes parallel test execution behave.