pub fn rules_hash(rules: &[Rule]) -> String
Compute a stable hash of the active rules by sorting their ids and hashing the concatenated id list together with each rule’s YAML-serialized body.