Step 5 compared every narrowed pack with verify and never the --split parts with the full pack, so a part writing a path the full pack settles passed every check. check_split_packs builds each platform's parts in memory and compares their union with the full pack, path for path and byte for byte.
Each part was built alone: the Other_Cores part never saw the platform's destinations and each part had its own case fold. RetroDECK's parts wrote bios/SGB1.sfc/ members beside the file bios/SGB1.sfc, RetroBat's wrote 21 openmsx/ twins of openMSX/ files, and a path two systems declare got each system's file. The full pack is now built in memory first and a part writes a declared file or core extra only where the full pack writes the same bytes.
A platform entry that resolves only through a data directory tree read as missing with no cause on a checkout where data/ was never refreshed, while an online pack build refreshes the trees and packs it. verify_platform now reports the uncached trees and prints them when files are missing.
A path declared twice, once unpinned and once with a pin the copy misses: the builder wrote excluded over the file it shipped, in either order of the two systems. It now counts the path untested, as verify does, and lists no exclusion.
generate_emulator_pack resolves with offline=offline and fetches a release asset the cache lacks, while verify_emulator resolved offline and called it missing. verify --emulator now applies pending_release_asset as verify --platform does, accepts --offline, and the pipeline compares emulator packs offline on both sides.
PlatformRecords stripped lr- to compare package records with cores. The scraper now names a libretro package with core_name(), lr-dosbox-pure as dosbox_pure, so the test reads the same function.
The RetroDECK verify excerpt counted 1800 core files in the pack. Companion entries no longer sweep cheats, GameIndex.yaml and DVD firmware to the BIOS root, and the same run prints 1764.
Setup names on 530 emulator pages lowered their weight in the index and
ranked the data page first for batocera folder and retroarch system
folder. The row is left out of the search, as the card's setup lists are.
A Packed line on each file card put the MAME parts, BizHawk, blueMSX,
FBNeo and GroovyMAME over the 10,000 element budget. The Run by row of
the page already names the setups that pack the emulator's files.
files/?sha1= of a file the collection no longer holds answered that no
file the site knows has the hash. generate_db.py now records each sha1 a
rebuild drops in retired.json, with the day and the file in its place,
backfilled from the history since 0d586ef6b (4,139 files). The lookup
answers with it and leads to the successor's card.
libmt32emu scans the ROM folder and identifies every file with identifyROMFile (src/midi/mt32_lasynth_model.cpp:68-91 at fa1856c0), and the Nuked SC-55 plugin loads with RomLoader::Hashing, matching SHA-256 against its table. The 50 MT-32 and Sound Canvas entries now carry found_by: content, so the truth no longer says dosbox-staging opens their labels.
The entry documents the pcsx2x6 component, whose FindBiosImage (pcsx2/ps2/BiosTools.cpp:268-291 at 583f0e90) takes the first 4 to 8 MB romdir image whatever its name. pcsx2x6.yml already said so, and the RetroBat truth gave the file two identities. The guard no longer needs an agnostic flag to read an entry.
FindBiosImage (pcsx2/ps2/BiosTools.cpp:278-302 under app/src/main/cpp/pcsx2 at bda532f3) keeps the first 2 to 8 MB file with a romdir, whatever its name, as upstream PCSX2 does. The guard reads entry-level agnostic flags too, which is how it surfaced.
The lookup held a member only where a profile's contents: declares it,
so 26,014 of the 33,403 members of collection archives answered nothing.
Each member's CRC32 is now an archive-member record leading to its
archive's card, read from the central directory, and files/ names the
archive holding it.
FindArcadeBiosFor (pcsx2/ps2/BiosTools.cpp:366-419 at 7f914418) scans the BIOS folder for 2 to 8 MB COH-H images and picks by EXTINFO serial, never by name. r27v1602f.8g, r27v1602f.7d and COH-H31000.BIN now carry found_by: content, and the truth no longer says armsx2 opens those names. The guard covers the 2 MB lower bound.
install.py tells a MiSTer card by its MiSTer binary and menu.rbf since
73b82375d. installer.md said so, the FAQ and the README did not, and sent a
MiSTer user to --dest the card's root, where nothing reads the files.
tools.md listed what keeps a platform entry out of removal_candidates
without the platform's launchers: records, which candidates.py checks
right after a path (_PROOF_ORDER).
The note said RetroBat leaves out DSI-SD.ZIP and still carries the v3.04 executable. It now states what the package holds. The prose test refuses a platform name followed by such a phrase in a profile.
The note judged the CHECKBIOS handling instead of describing it. It now says what memory.cpp:80 does: the MD5 comparison runs only for YES_VAL, so AUTO accepts any content. A rejected BIOS is filled with 0xFF (line 97), not zeroed.
testing-guide listed the generated artifacts without derivable.json and
the run samples of wiki/installer.md, and tools.md gave the manifest
command alone. The nightly's commit rules also had no place for the two
files its offline pipeline rewrites, so autorun stopped on them.
The default setup named RetroArch in page code, which a test forbids. It
is now the setup whose guide runs under the most of the box's OS tabs,
then on the most systems, then one with a release ZIP.
The target scraper stripped -sa from every standalone package while the platform scraper keeps both spellings. vice-standalone, scummvm-standalone and supermodel3 answer to vice-sa, scummvm-sa and supermodel-sa only, so every targeted ROCKNIX build left them out. Both now read standalone_emulators(), and the targets are rescraped at tag 20261001.
The platform scraper kept lr-dosbox-pure as dosbox-pure, which matched the standalone DOSBox Pure Unleashed profile, while the target scraper wrote dosbox_pure. Both now read core_name(), and platforms/retropie.yml is rescraped at its pinned revision 46128cd2: only the libretro core names change, and six Unleashed files leave the RetroPie manifest.
The box showed the first setup by name, AmberELEC on 17 system pages,
under Windows tabs. It now selects RetroArch, which runs on every system
the box has a tab for, else a setup the release publishes a ZIP for.
When the truth accepts the BiosDB hash but none of its sizes fits, the MiSTer render keeps the entry's size beside the hash, and the report still counted a size removed. A size the truth does not state is no longer reported as changed.
Batocera and KNULLI check a zippedFile item's md5 against the member inside the archive. A profile's container md5 for the archive would have replaced it as a correction. The item's md5 is now read as Recalbox's composite md5 is: neither compared with the container's nor overwritten by it.
fetch checked archives only, so a System.dat served as an HTML page with 200, or a 0-byte cache, reached render() as a file with no entries. System.dat, es_bios.xml, RetroBat and RomM then rebuilt the platform's file from our data and reported OK. Such an original is now refused, before it is cached and when read from the cache, and a format that needs its original fails when none was read.
Lakka keeps /storage on the card's ext4 partition (Lakka-LibreELEC
4696b48f scripts/mkimage:72, 95), which Windows and macOS do not open, and
its page offered them a card route. card_run is now [linux], and a page
with no Windows route says only Linux opens the card.
A platform system spanning several native ids with no native_id filed every addition under the id that sorts first: RetroDECK's arcade wrote MAME device archives as FBNeo BIOS, RetroBat's Amiga put A500 kickstarts under amiga1200. An addition now joins the id whose declared files its cores read, and one the cores do not settle is counted and not written.
profile_needs decided held-ness from each record's own name. np2pi's KANJI2.ROM, held as the PC-88 n88knj2.rom, was listed missing and paired with a Fujitsu dump. It now reads by_name as verify does, and an unsourceable entry is not held by a homonym, which lists xm7's KANJI.ROM.
PCSX2 stats <bios>.rom1 then <stem>.rom1, case-sensitive on Linux (BiosTools.cpp:214-229), and so does PCSX2 1.6 for erom. The pack wrote the stored SCPH-70004.ROM1, never found. A companion entry also seeded a scan of its own with a 4 MB bound and swept cheats, GameIndex.yaml and DVD firmware to the BIOS root. A companion now scans its image's folder for its own extension only, any size, since the code reads min(size, filesize), and is written as the code spells it.
The manual platform menu test expected /storage/system for Lakka on a computer. Lakka is a card setup now, so the menu finds its card's STORAGE part: the default-folder case uses RetroPie, and a Lakka case checks the card.
A data tree's archive came with no progress line, and the run ended on the BIOS bytes alone (310.5 KB where 82 MB arrived). Its download now draws the progress line and adds its bytes and time to the end line, a cut attempt taken back. It writes no progress event: those count the download event's files.