The five native libraries the reprofile added, and the assets and libraries whose copies dated from 1.8.2-open, now come from the official build of 752b93a (release continuous, CI run 39297510978, signing certificate de1bd54d as on 1.8.2). Assets match the repository blobs byte for byte. The profile carries their hashes, and the bundled-identity table now records each fall exactly.
EmuHawk finds every firmware by SHA1 against FirmwareDatabase.FirmwareRecords, and its cores are its own builds. The registry and the scraper both listed libretro cores whose systems overlap BizHawk's, so the pack shipped Clock Signal, O2EM, FBNeo, VICE and Citra files into Firmware/ that EmuHawk never reads. Both lists are now empty, as MiSTer's are: the database alone decides.
generate_readme, generate_site and slots resolve against data/ but took no hold when run on their own, as the documented commands do. A refresh swapping a tree mid-read then gave counts from half of it. Each now holds the trees shared, like verify and the builder.
Opening and locking a partial download are two steps. Between them another run could finish, rename the same file into place and release its lock. The second run then locked the installed BIOS, read its full size as a finished partial and truncated it to download again. After the lock the partial's name must still point at the locked file, or the run downloads into a private copy.
ScoreView became Nixie with .nix layouts, B2SLegacy was removed, the PinMAME plugin ships memmaps/ and gamedefs/, the HRTF file is bundled, fonts are looked up by TextRenderer and a table gets a .info file. PinMAME refs are re-read at 5386aa17, the revision the build fetches.
The native build split into m3g/ and micro3d/ makefiles, micro3d moved to ru.woesss.j2me.micro3d, c++_shared now loads ahead of every native module and MIDI can play through a user sound bank (EAS or TinySoundFont). appcenter.cer is no longer read. The new libraries are marked unsourceable until the release's own copies are collected.
Upstream moved the mouse card firmware into MouseRom.h behind ENABLE_PERIPHERAL_MOUSE, renamed the generated ROM symbols from g_rom_* to rom_*, added a hard disk controller with its own firmware and an XDG fallback for the data path. Every reference is re-read at the new pin, and Master.dsk carries the hashes the upstream build test pins.
The consistency check compared the platform's own files only. It now also compares verify's core files and game data with the builder's count of files taken from the cores.
The report counted claims, not files: several cores claim one path (rom.key by three Amiga cores, openbios.bin with and without a region) and the builder ships one file there. RetroArch read 1130 core files, 48 more than its pack. Game data ignored the in_pack marker, so RomM read 351 game data files in a pack that holds none. verify now takes both counts from its replay of the builder's placement, one per pack path.
When the forge truncates the HEAD tree, the rename search cannot see every path, yet a bare filename it did not find was reported GONE. eden's fs_paths.h and path_util.cpp exist under src/common/fs/. Such a citation is now AMBIGUOUS with the reason, as the realign path already says unclear and never absent.
jgenesis, ioquake3, yquake2, playdiaemu, samcoupe, skyline and plastic wrap a citation as `path.ext` then `:N-M` on the next line. The collector only joined a line ending with a colon or comma, so these runs were never compared and a bump moved the pin past them silently. They are now read, as wrapped runs that hold the pin until rewritten.
hypseus-singe, flycast-dojo, lindbergh-loader and vvvvvv read gamecontrollerdb.txt without naming a hash. The name step only set aside copies in other emulators' trees, so a copy in a game's folder under Game Engines/ ranked with any neutral one, and index order handed them C-Dogs' 98-line database. A game folder's copy now ranks after a neutral copy. The community SDL_GameControllerDB is collected at commit ff333823 (git blob 25146be7) as that neutral copy.
The name step refuses a candidate outside the size an entry validates, but the path step returned any hashless file at the tail as path_exact, a proof slots arbitration trusts. A 32 KB cpc6128.rom at ZEsarUX's tail would have been served for its 48 KB composite. No profile hits it today.
PCSX2x6 reads bin/resources/GameIndex.yaml, an arcade database keyed by NM gameid. The shortened tail resources/GameIndex.yaml matched four files, and the resolver set aside the three in other emulators' trees before measuring ambiguity, so PCSX2's console database passed for path proof and shipped in the PCSX2x6 pack. Ambiguity is now read before that filtering. A tail indexed from an identical copy is kept even when the database records the other copy's path.
PCSX2x6's GameIndex.yaml and RedumpDatabase.yaml are collected from its repository at the pinned 583f0e90 (git blobs ed8232e3 and 8669b3af).
ares matches its firmware by sha256 and opens no file by name, so its entry names are labels. Five reused names that other cores give to different dumps (MSX.ROM, MSX2.ROM, bios_CD_E/J/U.bin). On RetroBat that put ares's revision where the platform pins another, slots blamed the platform's declaration, and the pack dropped ares's own dump behind the platform's file. The labels now name the dumps the hashes identify.
verify replayed the builder's placement of core files with a bare name lookup, without the archive index, the data directories or the core's own choice of copy. It compared other bytes than the pack's (blueMSX's MSX2P.rom from bios/ against the data tree's copy) and let an unresolved file take a path the builder leaves free. ExtraResolver now holds the builder's lookup and both call it.
The builder never looks up a user_provided entry (it writes instructions in its place) nor an external one (fetched from its URL at build time). verify resolved both by name, so a same-named file in bios/ made it credit a file the pack does not carry.
On a hash platform the builder leaves out a file whose declared hash the local copy contradicts, but the README coverage added every UNTESTED file to the present count. RetroDECK read 2,008/2,008 for a pack carrying 2,007. verify now lists the destinations the builder refuses, and the coverage subtracts them.
Six platforms are read from a branch: System.dat, batocera-systems.json, checkBIOS.sh, the MiSTer BiosDB, the RetroPie scriptmodules and the RetroDECK component manifests. Their YAML named the branch, so the native export patched whatever the branch had become since the scrape. Each scraper now resolves the branch head once, reads every file at that commit and writes it into source. The export follows a recorded tarball and a recorded tree as it already followed a raw file URL.
17 TOSEC ZX Spectrum ROMs reported missing ship inside MAME's spectrum.zip from 0.190 to 0.289, while the collection holds only FBNeo's one-member archive of that name. provenance_report --missing and the site's wanted list now name the set, the member and the versions, matched by crc32 and size and by sha1 where both sides carry one.
verify kept its own copy of the placement rule and missed the flat RomM folder, so the report still counted 543 unreachable files as packed. It now asks the builder's ExtraPlacement. The README fraction counted every held core file, including those a platform cannot place or that a same-named packed file hides. It now counts what the pack holds.
RomM lists a platform's firmware folder without descending (base_handler.py:1002, recursive=False) and EmulatorJS writes the chosen file, or each zip member, under its bare name. 543 files of the RomM pack sat below a folder where no core could read them. The registry now marks RomM's folder flat, and such files are omitted with the reason below_platform_folder in the manifest and the installer.
RomM merges a nightly core map into the stable one when netplay is on, so it launches azahar, bsnes and genesis_plus_gx_wide, which the inherited EmulatorJS list left out. The scraper now reads both maps from the tagged frontend source and fails if either is missing. The cited mednafen_pce mapping is at index.ts:481-482 in 5.4.0.
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.
validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
No gradient banner, no coloured stripes or dots beside cards, no lifting cards, pill badges or small-caps headers. File blocks are separated by a rule, tables keep the theme's own size, and headings no longer repeat the site name the header bar already shows. Classes nothing emits were removed.
A note reworded around unchanged citations took the rewording commit as its writing revision. That commit's pin is current, so citations a bump had left behind stopped being reported. A sentence end now separates a project word from the citation before it, like a comma.
The system pack summary counts data-tree members apart since emulator packs separate them; the parity test's pattern stopped matching on msx and snk-neogeo-mvs.
--check names each missing or corrupt file, a read-only folder is reported once, Ctrl+C before the downloads stops cleanly, stdout keeps its order in a log, and the local check shows its progress.