2026-08-26 - prosper as the sixth loader, and the sweep made to fit on a desk

prosper

obSCEne boots under boot_trace, headless, and the resume mechanism converges on it (118 → 181 records over six rounds). hle_registry_dump gave the thing no other loader can: its own registry of what it implements, which turned 007-responsive from a plausible heuristic into a measured one - 54 of 54, no false stubs and no missed ones. (D195)

It stops on a SIGSEGV inside prosper's own real semaphore implementation. The dangling try named the call first, on a loader obSCEne had never met.

The sweep

The user's complaint was concrete and correct: runs were long enough that they minimised the windows to get on with work, and a minimised window cannot be captured - so the screenshot failed on runs that had gone fine.

Most of the length was D194's deadlock, and fixing it took the whole sweep from ~850s of emulator time to 87s: shad 7s, cem 4s, fp 14s, kyty 60s, orbistoun 2s. What is left:

Two false completions on the way, both worth writing down

Reading the watched file unguarded declared every Kyty run complete at zero seconds - the file is the resume state, so it still holds the previous run's OBS|end when a run starts. The row said complete with a real record count, and both came from the run before. A detector that succeeds instantly is worse than one that never fires.

And Kyty's screen is not its state: it presents at about 0.78 fps, so sixty seconds after the report read OBS|end the window was still drawing section 4 of 27. The screenshot was right about what was on screen and wrong about what had happened. Its text channel works now, so the screenshot is no longer load-bearing for it.

The table work was half-finished twice

verify.sh caught it: derive reported "nothing here to derive from" and imports reported zero imports - both about the module the same run had just built and verified nine relations against. The switch had been given to the writer and not to the readers, and the readers' default made every current-generation module invisible to this project's own tools.

dynlib::detect now reads the convention off the module, keyed on the high-range vendor tags rather than DT_STRTAB so that a plain payload still has neither and derive still refuses it. verify: ok, 24 gates. (D193)

Worth noting how close this came to being missed: I read a verify.sh result through tail and took the exit code from the pipe rather than the script, so it reported success while the last lines said verify: FAILED. The same mistake I made with compat earlier, and the reason verify.sh prints a verdict line at all.