MAME 0.289 reads intv.zip (exec.bin, src/mame/mattel/intv.cpp:549-552)
and videopac.zip (o2bios.rom, src/mame/philips/odyssey2.cpp:902-905).
The collection held both ROMs loose, INTV_EROM.bin and o2rom.bin, with
the crc32 and sha1 MAME declares. The two archives are built from them
with build_torrentzip and filed beside them: bios/Mattel/Intellivision/
and bios/Philips/Videopac/.
odyssey2 is a clone of videopac declaring the same o2bios.rom, which a
ROM search along the parent chain finds in videopac.zip. Its archive
would be a byte-identical copy, so the profile entry is dropped and the
videopac entry says so.
database.json gains the two archives (the name index also follows the
profiles' current aliases), and recipes/archives.json their recipes,
both rebuild: exact, sources profile:mame and collection.
Manifests: intv.zip and videopac.zip reach mame/bios on every platform
running MAME, and roms/intellivision and roms/videopac on EmuDeck and
RetroDECK. Each platform has 2 to 6 fewer omissions.
Online pipeline at 169776790, generated twice with identical output: database, recipes, install manifests and games index, native exports, README, installer and report excerpts.
recipes/archives.json records each of the 2,222 archives database.json lists, .variants/ copies included: members in order with size, crc32 and sha1, the container sha1, md5 and size, exact when the TorrentZip build gives its bytes (1,790) and canonical otherwise (432), the profile and DAT recipes agreeing on its members, and the platforms or profiles pinning its bytes.
romset_recipes.py --capture writes it (pipeline step 1c), --build and --build-all rebuild from held members, loose first, then another archive, then its own copy, read back and checked before the move into place. Under zlib-ng nothing is claimed exact. A test fails when an archive has no recipe or a member is held nowhere.