The emulators earned their keep while the console was down

Three changes went in without hardware: the run-time census (D229), the generation probe moved off linking (D230), and the twelve-library eboot (D228). All three were validated on emulators first, and one of them was wrong.

PS5PCEM found it. The run-time census reported

OBS|res|900-surface/kernel|fail||this library could not be loaded

from a process making calls into libkernel at the time - every library failed, and the generation probe called an emulator that implements current-generation graphics "neither generation". obs_module_open failing has two meanings and only one of them is a finding; the control that separates them is D232.

bin/obscene check passes with that bug present. The host build links the census, so the run-time path is never exercised there. No gate in this repository could have found it, and the next thing that would have exercised it was the console.

Coverage of the change, after the fix:

loader previous generation current generation verdict
shadPS4 resolves, linked cannot be looked for 4 (gnm), with the caveat stated
PS5PCEM absent cannot be looked for neither established

Both branches, both honest. PS5PCEM runs the twelve-library eboot to the end - tally 73/4/5/439, 28 sections, OBS|end|write - and its five failures are its own behaviour (mutex recursion, sceKernelIsStack, memory-map queries), not ours.

Two things that made this possible and were not free

EBOOT_KIND (D231). The eboot's e_type is the one byte a console and every emulator disagree about, and it had made the shape being changed the only shape testable nowhere but on hardware.

And PS5PCEM's module-info, an independent parser, reads our eboot as [A]..[L] libraries and [B]..[M] modules - D217's numbering confirmed by something that is neither selfish nor obSCEne.