fix: stop counting a contradicted hash as covered

The per-emulator report captured the status resolve_local_file returns
and then ignored it: any non-empty path became OK. An entry whose only
candidate contradicts its declared hash therefore read as covered, so a
same-named file from another system stood in for one the collection
does not hold. 36 entries across 14 profiles were affected, among them
config.ini, ROM and rom2.bin, names that collide across systems.

Emulator validation still runs first, since it names the field that
disagrees; the resolution status is consulted only when validation had
nothing to say.
This commit is contained in:
Abdessamad Derraz committed 2026-08-12 04:21:54 +02:00
1 parent 0efd4f34ce
commit f097184b00
2 files changed
+214

No files matched your search

+15
View File
@@ -1401,6 +1401,21 @@ def verify_emulator(
"path": local_path,
"reason": reason,
}
elif resolve_status == "hash_mismatch":
# Nothing in validation: caught it, but the name matched
# while the bytes contradict the hash the profile
# declares. That is a different file wearing the right
# name -- config.ini and ROM collide across systems -- so
# calling it covered reports the collection as holding
# something it does not. Validation runs first because it
# names the specific field that disagrees.
result = {
"name": name,
"status": Status.UNTESTED,
"required": required,
"path": local_path,
"reason": "declared hash contradicted by the local file",
}
else:
result = {
"name": name,