Canonical identity
Every finding is canonicalised to three things: the alias-resolved vulnerability ID (CVE ↔ GHSA ↔ OSV IDs, resolved through a local alias snapshot), the package URL (purl) of the component, and the version — compared with ecosystem-aware semantics (PEP 440 for PyPI, semver-ish for npm). An ID with no alias links canonicalises to itself — never into another ID's group. That one rule is what makes a wrong auto-apply structurally hard.