Optional AI confirmation step for a rule. When present, the rule’s rule
AST pattern acts as a cheap pre-filter: matches become candidates that an
LLM (or the System One classifier) must confirm before they are reported.
The AST layer never executes this field; the AI pipeline in slopguard-ai
reads it.
One rewrite assertion for an autofixable rule: slopguard test applies the
rule’s rewrite to before and requires the result to equal after. This
is what proves a rewrite is correct, alongside should_match.
Load all rules (builtin + custom + external sources) without filtering by
activation status. Used by explain to look up any rule regardless of
config, so an opt-in or disabled rule can still be explained.
Load all effective rules based on config: builtin, custom rules from
configured directories, and rules from resolved external sources, all
filtered by is_rule_active (rulesets, enabled: false, and the
enable/disable lists). An external rule reusing a builtin id is rejected
before any filtering.
Load rules from resolved external sources (git clones and local paths),
stamping each rule with the source’s provenance. A source directory that is
missing (e.g. a git path sub-directory that does not exist) is skipped.
Read a whole-file test fixture referenced by tests.should_match_files or
tests.should_not_match_files. Builtin rules resolve against the embedded
ruleset; custom rules resolve against the directory they were loaded from.
Validate that all rule (id, language) pairs are unique. The same rule id
may appear for different languages (e.g. no-todo-fixme for both Rust and
TypeScript), so a single rules.disable entry covers both variants.