Walk the selected packages and, for each variant arch, drop any package
whose Name+EVR is matched by another package's Obsoletes: declaration.
The check is performed across all variants of the same arch in the
compose, mirroring how dnf enforces Obsoletes globally across enabled
repos at install time. Self-obsoletes (same Name) are ignored — they
describe old versions of the same package, not a different package
being superseded — and entries listed in included_packages are kept.
A new optional --obsoletes-report writes a JSON sidecar listing each
dropped package with its obsoleter(s).
Bump release to 1%{?dist}.alma.3.