Compute the ack fingerprint for ruleName on key/locale from the
current project state, or null if it can't be resolved (unknown rule,
missing key/translation). Used both to match acks at check-time and to
write a fresh ack via dialect check --ack.
The <rule>:<locale>:<key> identifier for an issue, or null if the
issue lacks the parts an ack needs (key is always required; a
source-only issue uses the literal source locale slot).
Fold state into result for project. Suppresses issues whose ack
still matches; surfaces (does not suppress) issues whose ack is stale,
recording the stale ids.
Whether ruleName fingerprints the source value (vs. the translation
value) for an ack in locale. Only meaningful for ack-able rules; drives
the sentence dialect check --ack prints back.