Krikri::Lint::Profile
Mirrors upstream's data/profiles.yml: profiles extend each other in
order min -> basic -> moderate -> safety -> shared -> production,
each rule first runs in the profile where it is listed under
rules: (a skip_list: placement means it is still off there).
Constants
How many entries of RULE_ORDER each summary profile contributes, in the same order as SUMMARY_PROFILES.
Upstream builds rule_order by walking data/profiles.yml in file
order and recording each profile's own rules list, so a rule's
index is its position in that flattened concatenation. The
summary table sorts its rows by this index, so it has to mirror
the upstream file exactly: yaml at 22, package-latest at 29,
no-changed-when at 41.
rule id -> lowest profile whose rules: list contains it.
Upstream's --profile choices are every profile in data/profiles.yml, "basic" included (cli.py passes PROFILES.keys() straight to argparse).
Upstream's PROFILES keys (data/profiles.yml), in order. NAMES also carries "official", a legacy alias that has no profile of its own upstream, so it must stay out of the summary's profile walk and star rating.
Class methods
The profile that first lists this rule id - or, for a bracketed
sub-tag whose family is listed, the family. Mirrors the lookup
upstream's report_summary does against rule_order.
Index of a rule - or of a bracketed tag's family - in RULE_ORDER.
Unknown rules sort last, like upstream's idx fallback.