package fingerprint import ( "crypto/sha256" "fmt" "strings" ) // Hash computes a stable SHA-256 fingerprint from normalized frames. func Hash(frames []NormalizedFrame) string { var parts []string for _, f := range frames { parts = append(parts, f.Function+"\x00"+f.File) } data := strings.Join(parts, "\n") sum := sha256.Sum256([]byte(data)) return fmt.Sprintf("%x", sum) }