D088 - 140-oracle: asking the platform what it knows, and recording what it returns

Status: decided, from docs/HARDWARE-PROBE.md items 3 and 4.

Two checks, neither of which tests anything. Both record answers.

Resolution by name, "the one that changes the most"

An identifier is a truncated hash and hashing is one way, so recovering a name means guessing - generate candidates, hash them, hope for a match. It works, it costs on the order of a quarter of a million candidates per confirmed name, and it can only reach names something happens to import.

If the platform resolves symbols by name, that collapses to one question per candidate and reaches functions no title imports at all.

The control pair is the whole design. A name that must resolve and a name that cannot exist. A platform answering yes to both is not an oracle, and its yes for every other name means nothing - which is the more dangerous failure, because it looks like success. The same reasoning as the census control, for the same reason: an instrument that cannot be shown to work is not evidence.

Under both the host and shadPS4: nothing resolves, including a symbol known to be present. Reported as a skip rather than a failure - a platform is not obliged to have a by-name interface, and saying so honestly is the useful answer. The question is now asked, and a console will answer it.

Real error codes

Every negative check in this suite asserts that a bad argument is refused and throws the returned code away. Correct on an emulator, where the code is invented. On hardware the code is the finding: an implementation returning a value no caller recognises makes guests retry forever.

So OBS|err records what came back, with no expectation at all. shadPS4 immediately produced a legible scheme:

call returned
sceKernelClose(-1) 0x80020009 9, EBADF
sceKernelOpen(missing) 0x80020002 2, ENOENT
sceKernelDeleteEventFlag(NULL) 0x80020003 3, ESRCH

0x8002_0000 | errno. That is one run of a section that asserts nothing, and it is the table another project can use to replace invented placeholder codes with values a guest recognises.

Neither check can fail. The oracle skips when the platform has no by-name interface; the error table passes whenever it recorded anything. Verdicts here would be noise - the records are the output, and a green line in a tally for a measurement would be one more thing to add up and one more reason to stop reading.