Problem: grouping is by message+source+line (crude).
Scope (Sentry-style): compute a fingerprint from the normalized stack (top in-app frames, function+module, stripped line/col noise); group occurrences into an Issue; support custom fingerprint override + manual merge/unmerge.
Done when: the same logical error groups into one issue regardless of minor URL/line jitter.