Commit Graph
791 Commits
Author SHA1 Message Date
Abdessamad Derraz 23d9474f41 fix: serve BizHawk's database as BizHawk wrote it
The export only indexed firmware BizHawk leaves unhashed on purpose,
per-console dumps declared with SHA1Checksum.Dummy, and could only
apply that hash to a same-named call of another system. Every hash
the file states is BizHawk's own, so nothing is rewritten and no
correction is reported.
2026-10-18 04:09:40 +02:00
Abdessamad Derraz 9c0a430f5c fix: settle export sizes, never write None
A truth that accepts several sizes left an export with no size even
where the platform states one of them for the same dump, and RomM's
fixture then received the string None, which RomM cannot parse. A
size list now admits the platform's own size, RomM keeps its value
when nothing settles one, and validation requires a number.
2026-10-18 04:07:57 +02:00
Abdessamad Derraz c6c216ecb5 fix: untag brd.rom, chosen by content, not region
ep128emu loads brd.rom when the content name carries the TOSEC tag
[req brd-rom], whatever the user's country, as it loads hun.rom for
[req zrom]. The Germany region on brd.rom described a territory
choice the code never makes.
2026-10-18 04:06:39 +02:00
Abdessamad Derraz f5a23922bf fix: list fmgen's rhythm samples as files
NP2kai's two rhythm engines open different spellings, lowercase for
the built-in one and uppercase for fmgen, and nothing folds case,
so the uppercase names are files of their own rather than aliases.
fmgen's 2608_RYM.WAV fallback is opened without the directory and
is no longer claimed under np2kai/.
2026-10-18 04:05:35 +02:00
Abdessamad Derraz d5f40a4515 chore: drop the shared groups no platform reads
Six of the eight shared groups injected nothing: three were
included by no platform, three repeated System.dat entry for entry,
so a correction made in them reached no pack. They are removed with
their scraper wiring, and a test requires every remaining group to
contribute an entry somewhere.
2026-10-18 04:03:01 +02:00
Abdessamad Derraz b6f6798c15 fix: place a standalone build's gaps at its path
The gap report took a file's libretro path even where the platform
runs the standalone build, so it named Cemu/keys.txt for Batocera
while verify named keys.txt, and settled the declaration on a slot
the platform never fills. Both now read standalone_path there.
2026-10-18 04:01:02 +02:00
Abdessamad Derraz df288f8c33 fix: drop np2kai font.rom, a fallback of FONT.ROM
The np2kai shared group declared font.rom as a second required file
while NP2kai reads it only when FONT.ROM, which System.dat already
declares, is absent. Case-sensitive platforms packed the font twice.
A shared group may now add a second spelling only where some code
opens that spelling itself, as the two rhythm engines do.
2026-10-18 03:59:37 +02:00
Abdessamad Derraz c047b3828d fix: write a cached original and its URL together
The export cache wrote an original's bytes, then recorded the URL
that produced them under a separate lock, so two runs wanting two
revisions of one file could pair one's bytes with the other's URL.
Both now change under the one index lock.
2026-10-18 03:56:35 +02:00
Abdessamad Derraz 94ca509d3e fix: hold the data trees for the whole pipeline
The pipeline held its output directory for the run but let each step
lock the data directory trees on its own, so another session's
refresh could swap a tree between the packs and the manifests. The
trees are now held shared from right after the pipeline's own
refresh until it exits.
2026-10-18 03:55:51 +02:00
Abdessamad Derraz 383960212d fix: swap a pack in only once it is complete
Packs were opened on their final name, so a rebuild truncated the
previous one and a build that failed half way left a readable ZIP
of part of the files. Each pack is now written beside its name and
replaces it only when the write finished.
2026-10-18 03:54:59 +02:00
Abdessamad Derraz 164bc9e207 fix: ask again for a tag that was not there yet
A tag looked up before it was pushed was cached as absent for good,
so a profile pinned on that release was never recognised as frozen
on it. The absence now expires; a tag found stays cached.
2026-10-18 03:53:36 +02:00
Abdessamad Derraz 2a13e3ee11 fix: recount commits touching a path once stale
The commit list behind the triage drift score was cached for good,
so pushes upstream never moved a profile up the triage. It now
expires like the other moving answers.
2026-10-18 03:53:12 +02:00
Abdessamad Derraz 2dcb49fa4c fix: keep a held file in emulator region packs
Emulator mode reduced region groups without knowing which files the
collection holds, so a requested-region image nobody had collected
withdrew the held one and left the slot empty. Platform mode already
kept it; both emulator readers now pass the database.
2026-10-18 03:52:47 +02:00
Abdessamad Derraz a40a68c1f7 fix: group a system once whatever its spelling
The platform's files and the core extras for the Master System sat
in two region groups, sega-master-system and sega-mastersystem,
reduced apart. A US pack kept the declared Japanese BIOS. A core
extra's system group now takes the platform's spelling, in the pack,
the report and the installer's manifest fields alike.
2026-10-18 03:51:57 +02:00
Abdessamad Derraz cab70e16b3 fix: skip the citation checks without jsonschema
The doubled-path tests import validate_schemas, which needs
jsonschema; without it the suite erred instead of skipping, which
the optional dependency check refuses.
2026-10-18 03:24:43 +02:00
Abdessamad Derraz e9da4d72ed fix: write one truth model per target, not alias
generate_truth named a narrowed model's directory after the target
as typed, so three aliases of one target wrote three copies, and
the pipeline rebuilt the slug by hand to diff it. One function now
names the directory from the canonical target for both.
2026-10-18 02:55:45 +02:00
Abdessamad Derraz 44d363e739 fix: name a target the way each platform files it
A target was canonicalised once for the run and kept as typed under
--all when platforms file it differently, so the --all build and a
--platform check named the same Batocera pack two ways. Each pack,
group, manifest and expected name now takes the target as its own
platform files it.
2026-10-18 02:53:33 +02:00
Abdessamad Derraz 78902ccc6a fix: name the flag one-per-slot conflicts with
--platform --system --one-per-slot was refused with a message
asking for --platform, which the command carried. The refusal now
names --system or --emulator, and every refusal in the mode matrix
is checked never to ask for a flag it was given.
2026-10-18 02:52:02 +02:00
Abdessamad Derraz 9ba63e6a54 fix: refuse a platform list where one is taken
generate_pack split --platform on commas to validate it, then used
the whole string as one platform and crashed. Every script takes a
single platform; a list is refused with a message pointing at --all.
2026-10-18 02:50:58 +02:00
Abdessamad Derraz 1bdfb8d75e fix: list passing entries in verbose verify JSON
verify accepted --verbose beside --json and dropped it in every
mode, so the output was the same with or without it. The JSON now
lists every entry with its ground truth under --verbose.
2026-10-18 02:50:18 +02:00
Abdessamad Derraz 8a9d6919d9 feat: record the pin a prose reread confirmed
A prose citation whose text lived under several pins stayed in
read again until the text changed, so fixnes, zesarux and emucorex,
exact at their pins, would have refused every later bump.
prose_written_at names the pin a reader confirmed; it settles the
readings and never overrides a history with one candidate.
2026-10-18 02:49:24 +02:00
Abdessamad Derraz a5f41511cc fix: read a semicolon as a citation separator
lynx-emu cites the mednafen upstream after a semicolon, which the
prose scanner did not treat as a list delimiter, so the citation
was charged to the fork the profile was read from.
2026-10-18 02:47:37 +02:00
Abdessamad Derraz 9802804a9a fix: tell an offline cache miss from absence
Offline, fetch_file answered None for a path the cache never
stored, the same answer as a path known to be absent, and
profile_sync reported existing files as gone. A miss now raises
NotCachedError and the profile is reported unverified.
2026-10-18 02:46:57 +02:00
Abdessamad Derraz b91449590d fix: follow an upstream the port vendors as module
libretro/TIC-80 builds nesbox/TIC-80 through its core submodule
and tic80's upstream_commit is that submodule commit. Compared to
nesbox HEAD, profile_sync reported changes the shipped core never
had, and a bump would have moved the pin past it. When an upstream
pin is a submodule pointer of the source pin, its head is the
pointer at the source HEAD.
2026-10-18 02:45:27 +02:00
Abdessamad Derraz 99d9ac12c2 fix: hold reicast on the commit Recalbox builds
reicast documents the revision Recalbox's reicast.mk pins, far
behind master. Compared to HEAD it reported refs nobody could act
on; pin_frozen now says why the pin is held.
2026-10-18 02:43:50 +02:00
Abdessamad Derraz 0450ab1b72 fix: cite primehack's Realtek loader at its pin
A comment named the Bluetooth directory twice, a path no revision
holds, and every firmware ref sat ten lines above the case it meant.
Each now cites its case and return at the pinned commit. The schema
check reads profiles as text and refuses a citation that repeats
its own directories.
2026-10-18 02:43:06 +02:00
Abdessamad Derraz 89b22944ef fix: collect the C-BIOS 0.29 notes msx-emu ships
The entry documents the 0.29 notes and declared no hash, so the
0.23 notes in the C-BIOS machine folder were served by name. The
file comes from MSX.emu's res/firmware at the profile's pin.
2026-10-18 02:41:38 +02:00
Abdessamad Derraz 1101c7640b fix: let a primary beat its variant across casing
Only a .variants/ copy matched IPLROM.X1 exactly, so x1 got
Recalbox's second md5 while iplrom.x1, the dump every platform
pins, sat beside it. When every exact-case match is a variant, a
primary in the same directory under its own name joins the
candidates. Another machine's font.rom or an alias pointing at a
different file does not.
2026-10-18 02:36:12 +02:00
Abdessamad Derraz fd6ae1f5c9 fix: strip only a hash suffix off variant names
slots dropped the last extension of any .variants/ name, so a
variant stored under its plain name (63 of them, aes.zip among
them) was not the family of its primary and a platform declaring
both at one path would read as a collision. The database already
stripped an eight-hex suffix only; both now read one function.
2026-10-18 02:33:10 +02:00
Abdessamad Derraz 5fa3f2aebe fix: drop variants whose bytes a file holds
A copy under .variants/ exists to hold a content its primary does
not. 29 held bytes another file already carried, under a second or
third identity: msx.rom and MSX.ROM variants equal to
MSX_8020-20bios.rom, naomi2.zip.da79eca4 whose suffix named the
primary's sha1 rather than its own. dedup now removes such a copy,
keeping one when only variants hold the content. The LaserActive
PAC-S10 BIOS lived only under .variants/ while RetroBat names it
without a hash; it moves beside its siblings.
2026-10-18 02:31:13 +02:00
Abdessamad Derraz 7d1b8435bc fix: rank same-named archives by what they hold
The name step only ranked archive copies by members declared
through archive sub-entries, and the contents an archive entry lists
never reached the resolver, so the first copy indexed won. contents
now ranks copies by crc32, or by member name where the code opens
by name, and the report and both extra passes carry it. With no
layout declared, a primary holding every ROM of the others wins;
two revisions keep the index order.
2026-10-18 02:30:53 +02:00
Abdessamad Derraz da59b20aa6 fix: file the Roland ROMs under Roland
The four MT-32 and CM-32L ROMs had a second copy in the Amiga
tree, and the identity exemption that hid the crossing named a
DOSBox tree instead. The copies move next to the Munt ROMs already
under Roland, and each exemption now names the makers it covers,
so a copy under a third one is reported.
2026-10-18 01:25:50 +02:00
Abdessamad Derraz e4960dd4f8 fix: declare EmuDeck's emulators as standalone 2026-10-18 01:19:52 +02:00
Abdessamad Derraz fad4fa6d7e fix: read core files in verify as the builder does 2026-10-18 01:18:32 +02:00
Abdessamad Derraz 3766588ec1 fix: keep tree entries out of the asset store 2026-10-18 01:16:28 +02:00
Abdessamad Derraz faa8af0800 refactor: annotate every remaining signature 2026-10-18 00:44:20 +02:00
Abdessamad Derraz 5961b6bfe7 refactor: annotate the shared pack and lock api 2026-10-18 00:03:59 +02:00
Abdessamad Derraz 27d119cb7f fix: scrape targets at the pinned platform release 2026-10-18 00:01:36 +02:00
Abdessamad Derraz cdab4e7808 refactor: keep romset build digests between runs 2026-10-18 00:00:04 +02:00
Abdessamad Derraz c507aebfba refactor: index companion files by directory 2026-10-17 23:56:41 +02:00
Abdessamad Derraz 1c280b7b3f refactor: hash each zip member once per run 2026-10-17 23:55:49 +02:00
Abdessamad Derraz 5ae83ba2fa refactor: hash each manifest file once 2026-10-17 23:54:20 +02:00
Abdessamad Derraz 0a2907bd5f feat: describe emulator pages in structured data 2026-10-17 23:52:50 +02:00
Abdessamad Derraz 43af290102 feat: link and list every file on site pages 2026-10-17 23:51:02 +02:00
Abdessamad Derraz bd6617cc6a fix: describe absent claims in the manifest schema 2026-10-17 23:09:46 +02:00
Abdessamad Derraz e1510f94f8 fix: list each file to source on the gaps page 2026-10-17 23:08:40 +02:00
Abdessamad Derraz fd16764e0c fix: keep the gap report readable 2026-10-17 23:06:32 +02:00
Abdessamad Derraz 09eb4f4ef3 fix: show exclusions and every verify-packs error 2026-10-17 23:05:48 +02:00
Abdessamad Derraz c4c87a5f7a fix: fetch data directories before CI tests 2026-10-17 23:01:49 +02:00
Abdessamad Derraz 0bac022c2b fix: replay absent core claims when narrowing 2026-10-17 22:21:50 +02:00