2026-09-04 - (/loop) One clock, two names, and one origin

suites 125   tests 2015   clippy/fmt/identity clean
guest unchanged: 197 distinct, ~418,900 calls

Twenty-second cron tick. sceKernelClockGettime implemented - the third vendor/POSIX pair after stat (D525) and pread (D526), and the first where sharing was not optional.

Why the shared part moved down a crate

The other two pairs live in one crate, so sharing the success path was a function call. This one does not: POSIX clock_gettime is orbistoun-libc, the vendor name belongs to libkernel which orbistoun-kernel declares, and kernel does not depend on libc - nor should it, they are sibling subsystems.

So the shared part went to orbistoun-hle, which both already take: the clock identifiers, the families that can be answered, and the monotonic origin. All three are facts about the platform rather than about either library.

The origin is the reason, not the line count

since_start measures from the first call anywhere in the process. While one library held it that was true by accident; now it is by construction.

Not cosmetic: a guest reading a monotonic clock through both names must not get two different elapsed times. Two copies of an Instant::now() OnceLock would have given exactly that, and nothing in either library's tests would have noticed - each is right on its own.

Failure differs, as it does for the other pairs

POSIX answers -1; a sceKernel* call answers 0x8002_00xx. EINVAL for a clock with no honest source. Which errno the console answers is unmeasured, so the test pins the family and the sign - what a caller branches on - not a code no run has established.

Both halves broken and watched to fail: the unwritten second field, and answering -1.

Refusing rather than answering the nearest thing

The unanswerable families are refused, inherited from the POSIX side: a guest measuring its own CPU time and receiving wall time gets a number that looks right and is not.

What the tests cannot prove

The values - a wall clock and an elapsed time are not reproducible. What is checked is which source answered: the monotonic reading is small because the process just started, the real-time one is past a date already in the past. Said in both tests rather than left to be inferred.

Decision: D536.