2026-09-03 - (/loop) Twenty-eight libraries, and a coverage figure that got worse on purpose
declared / implemented 674/647 (96%) -> 947/647 (68%)
unresolved imports 342 -> 117
suites / tests 117/1993 -> 119/1994
Asked for "the remaining eleven libraries". It was twenty-two from this title alone - the executable imports from thirty-five and orbistoun declared fifteen - plus six more that only other corpus modules import. Twenty-eight declared, 212 names, none implemented.
The interesting number went down
The 96% was measuring the wrong set: the declared surface was very nearly what had already been implemented, so it could not help looking finished. 947 - 273 = 674, the old declared total exactly - nothing was removed, and everything added is a name a guest asks for that nothing answers.
status now says both halves rather than leaving it to be
rediscovered:
| Functions declared / implemented | 947 / 647 |
| Declared in a library that serves nothing | 273 across 30 libraries |
Counted by library, not by symbol: one implementation means a library is being worked on, none means its names have only been written down. D505.
Homes, so an implementation would not have to move
Audio took
libSceAjm/AudioOut2/Audio3d/AudioIn;
video took libSceAvPlayer/VencCore/
VideoRecording; input took
libSceKeyboard/Mouse/Ime/ImeDialog;
systemservice took the nine dialog, save-data, content and JSON
libraries; gpu took libSceAmpr.
One new crate, orbistoun-net, for the
seven networking libraries - sixty-eight functions with no home, and
putting them in one that fit badly would have to be undone. Its header
says what networking is not going to be, because a networking
stack is the kind of thing that grows by accident:
docs/SCOPE.md puts online services out of scope, and what
these buy is a title being visible in a report rather than dying on an
unresolved import.
libSceAmpr is placed by name association with the
graphics submission path and says so.
And a near-miss worth more than the declarations
The first four runs after came back 2080 calls / 46 distinct, four times - where the run has been bimodal all day. That is what a claim of "declaring the libraries fixed the non-determinism" would have rested on.
Four is not enough to separate that from a coin weighted 60/40. Eight more samples: three at 2077/44, five at 2080/46. The oscillation is unchanged and D499 stands. The three-sample floor earned its place again; four in a row at p=0.13 is not a finding.
A load-dependent test failure I could not reproduce
a_timed_semaphore_take_gives_up_and_can_be_rescued
failed once, in a whole-workspace run, on
assert!(started.elapsed() >= BRIEF) - a timed wait
reporting it gave up before its deadline. Passed 3/3 alone, then
58 more attempts across 5ms and 80ms deadlines did not reproduce
it.
The leading guess was rounding: Condvar::wait_timeout is
handed the span remaining to a fixed instant, and a host that rounds it
down would report timed_out a fraction early. Unsupported,
so it is written as a guess and nothing was changed to chase it.
What was added is an instrument:
a_timed_wait_never_gives_up_before_its_deadline exercises
the property fifty times a run instead of once, so the
next occurrence arrives with a turn number attached. Weakening the
original assertion to get green was the other option and would have
thrown away the only evidence.
State
cargo test --workspace green - 119 suites, 1994
tests, 0 failures. clippy --tests clean, fmt
clean, identity scan clean on both.
Nothing committed. The day holds worklogs 292-354 and D466-D505.
Next: whether declaring libSceVencCore
and libSceVideoRecording lets the 33 encoder
unresolved = 0x0 measurements be claimed - the measurement
is "the symbol resolves on the console", and orbistoun now resolves them
too, so the claim may be legitimate. Check the proposition carefully
before writing the test.