The content list now covers the BIOS-required systems in order of the users a missing BIOS stops, one game per region where a profile ties the BIOS to a territory (PS1, Saturn, Mega CD, Master System, N64, GameCube, DS), the same title in each region so the screens compare. Systems no catalog romfetch reads covers are listed under uncovered with the set or game wanted and romfetch's error code.
core_probe writes record version 4. Each run is boots, bios_error, crash, hang or unknown, from reference frames, core error patterns and screens, and the process status. A crash or a timeout is a verdict now, rebuilt from the events the worker streamed. --vary accepts @zeros:SIZE and @head:SIZE:PATH, and run takes --repeat.
campaign.py takes buildbot nightlies (or a build of the pinned commit), the test content of tests/campaign/content.yml through romfetch, and runs core_probe for the files, boot, path, alias, variants and bench checks. A fixed rule table settles hle_fallback, required, path and aliases with the record ids as evidence, the rest goes to measurements/findings.jsonl. Resumable state, load, disk and budget guards, retries, content reference counting with an LRU cap, and an autorun job after the nightly.