451. The encoding fell out of a pairing

2026-09-08 - directed, continuing 450

Four more sweeps, and thirty-six facts to place

163046, 164701, 165236 and 170447 ingested: 504 distinct measurements, 360 constant, up from 462 and 324 an hour earlier. The thirty-six new constants are placed - fourteen addresses into the opaque list, twenty-two into the queue with a completion condition each - so the hardware gate is green again and each one now names what would retire it.

libSceNet's error base is 0x8041_0100, and the analogy is wrong

Three libSceNet codes were on record with no way to read any digit of them: 0x8041_0123, 0x8041_0139, 0x8041_0130. Every other subsystem numbers from a plain high half-word - the kernel 0x8002_0000, audio 0x8026_0000 - so by analogy the errnos would be 0x123, 0x139 and 0x130, which are 291, 313 and 304 and appear in no errno list.

The 170447 payload leg ran the same two conditions through the POSIX calls as well and recorded __error() beside each:

condition sceNet* errno
recv, connected, nothing to read 0x8041_0123 35 EAGAIN (0x23)
recv, listening socket 0x8041_0139 57 ENOTCONN (0x39)

The base is 0x8041_0100. The 0x01 that read as part of the errno is part of the base. sceNetBind's 0x8041_0130 corroborates - 0x30 is 48, EADDRINUSE, and the POSIX bind in that same check had already taken the address - but nobody read that one's errno, so it is not a third confirmation.

Recorded as orbistoun_net::NET_ERROR_BASE with a test reconstructing all three codes and a negative test asserting that 0x8041_0000 | EAGAIN is not what any console answered, because that is the value somebody will one day "correct" it to and it is wrong by exactly 0x100 on every code (D627).

Nothing about this needed a new measurement. It needed two existing ones put beside each other.

Surprises

Next