feat: report entries no examined core opens

The export keeps every entry a platform declares. An entry the truth
does not pair was still read in 1189 of 2776 cases (alias, hash, a
type: directory tree, a core outside the resolved set), so absence of
a pairing proves nothing. Each report now lists, under
removal_candidates, the unpaired entries that no profile of the cores
the platform runs answers by name, path tail, hash, directory or data
directory, with the cores examined and a reason. A core the platform
names without a profile, or a ROM set under a core that opens sets by
name, leaves the verdict undetermined. The exports page states the
count and lists the entries per platform.
This commit is contained in:
Abdessamad Derraz committed 2026-10-20 20:00:54 +02:00
1 parent 7e0b3a08b9
commit 0b4f98ce79
6 files changed
+399 -2

No files matched your search

+20
View File
@@ -2294,6 +2294,26 @@ def resolve_platform_cores(
return result
def unresolved_platform_cores(config: dict, profiles: dict[str, dict]) -> set[str]:
"""The core names a platform lists that no profile answers to.
resolve_platform_cores drops them without a word: ROCKNIX's `dolphin-sa`
or Batocera's `wine` designate no profile, so nothing is known of the
files they open. `retroarch` and `all_libretro` stand for every libretro
profile and are never unresolved. A platform without a `cores:` list
names no core.
"""
cores_config = config.get("cores")
if not isinstance(cores_config, list):
return set()
index = upstream_profile_index(profiles)
return {
name
for name in (str(c) for c in cores_config)
if name not in ("retroarch", "all_libretro") and not index.get(name)
}
MANUFACTURER_PREFIXES = (
"acorn-",
"apple-",