The required: false evidence of scph5500, scph5501 and scph5502 cites the records judged again, whose log says Firmware is missing, and the notes say the boot ran the built-in OpenBIOS with the other regions' files refused.
region_check and the site name a boot on the core's built-in BIOS as such: the other regions' files were refused. A boot is called another region's BIOS only when the core's log names that file, and a boot whose log names no BIOS says so.
core_probe rejudge appends, for each live record the oracle now judges otherwise, a record with the same runs judged again: verdicts, bios_used and inputs.oracle recomputed, supersedes the earlier one, judged_at and judged_by beside recorded_at. Records of another probe are left to it. The campaign reads a superseded record as its successor, and a file the log shows refused or loaded settles validation with no BIOS screen.
fallback_patterns and load_patterns for Beetle PSX and HW, SwanStation, PCSX-ReARMed and Flycast, each read from the core's source at its pin. Beetle maps OpenBIOS when its firmware is missing and loads a file of another sha1 all the same. SwanStation names the image it uses or falls back to, and its OpenBIOS. PCSX-ReARMed loads another region's file before its HLE BIOS.
Record version 5: every repetition and variant carries bios_used, staged:<dest> when a load line of the core names the file, builtin when a fallback line says it ran its own BIOS, unknown otherwise. An opened file is no proof. The oracle gains fallback_patterns and load_patterns per core, and a record judged again carries judged_at and judged_by.
code_audit_19 and tui_audit_12. A tap ticks a box and opens a choice on a
second tap of the row the screen saw tapped. One list drives the plan's game
data row, save line and data files. The version note, --offline in shown
commands, exit 2 for a chosen quit, legacy mouse reports read from bytes,
colour roles that read their words, the setup list's device column, the
copy browser, a drive two systems fit, WSL's Windows folder, and line mode
wording.
run_cli entry point, --platform through platform_arg with -p and the registry's suggestion, help on every option, typed probe_lock, options documented, the module in the testing guide. The platform Tested rows fold under one line, run output joined without semicolons, and the measurements page section fits its start-level budget.
Four cores and three games put 430 words on the PlayStation page, past its word ceiling. A system page now shows one line per core, and each game's outcome with its four records waits in a closed fold.
PCSX-ReARMed opens the three regional BIOS files whatever the disc, and the rule called that a confirmation because one of them held the region. A run that opened its own region's file and the others too now settles nothing.
The details box takes a plain border instead of a side stripe, dots are rounded squares instead of pills, the strip's label joins variants with full stops, and one file tried reads as 1 file.
Twelve region records made the Beetle Saturn Tested block 266 words where the page allows 120. A region run reads as one outcome per game on the system page, so the emulator page now names them in one line.
When the region's file is absent, libretro.c (7fea57a5) finds no name and no matching sha1, then maps its built-in OpenBIOS (libretro.c:3425-3511). The region runs show it: each region's disc reaches its game with only the other regions' BIOS staged, under the oracle's reference frames (records 2026-10-27-55dd1e4943c4, 13be0e68b799, 33780d47efdf). scph5500.bin, scph5501.bin and scph5502.bin are required: false, hle_fallback stays true. Written through campaign_profiles.
Every reference block's run, judged again with the oracle as committed, boots in each repetition. Beetle Saturn's three BIOS lines are BIOS errors, the Japanese menu screens are error screens, and the PlayStation cores carry no error pattern.
Run output on a platform's Tested block is escaped for HTML, MDX and Markdown. inline_html links only http(s) and relative targets, quotes escaped. Pack probe runs stay off the emulator pages, shown on the platform's.
Every value a run produced (claim, method, statement, host, flags, variant labels, core, content and file names) is escaped with quotes and its braces made inert for MDX, never read as Markdown. A record link is written only for an http(s) or relative target. Reference runs fold with the tests from before the oracle.
Puzzle Bobble 2 (Japan) and Bust-A-Move 2 (Europe) on the PlayStation cores, and the three Saturn editions on Beetle Saturn, each frame reviewed on its PNG. Beetle Saturn's BIOS error lines, read from ss.c, are its error patterns.
The first runs showed it: beetle_psx reaches the game of the US disc on the Japanese and European BIOS, through a different licence screen, so its frames differ from the full run while the oracle says boots. The interim rule read those frames as a failure. A variant now boots on the same frames as the full run or by its oracle verdict, and otherwise has no answer.
The interpreter bind took each link's grandparent, so ~/.local/bin/python3 exposed all of ~/.local inside the sandbox. A tree is now bound only when it is a Python prefix (lib/pythonX.Y) or a venv (pyvenv.cfg), never / or the home folder or above it. Every other link is bound as a single file, and a path inside a bound tree is not bound again, since bwrap cannot mount over a link in a read-only tree.
The sandbox bound only /usr, /lib and /bin. On the CI runner setup-python puts Python under /opt/hostedtoolcache, so the worker could not start and every core_probe and campaign run crashed (7 tests, plus their replay without jsonschema). A venv, pyenv or uv do the same. The interpreter's prefix and every link on the way to it are now bound read-only, each at its own path. Reproduced with uv's Python 3.13 outside /usr, 92 tests pass under it and under the system Python.
Merging the card and platform branches left two SHORT_HASH definitions, 8 and 12. The later one silently won, so the platform rows showed 12 characters while their tests expected 8. One constant now, 12, the card anchor's length. The copy-button selector skips buttons that carry their own data-copy, and the tests follow the merged markup.