D170 - Cross-project findings taken, and one declined

decided ยท 2026-08-21

The obSCEne thread sent loader design notes from running its suite under several other loaders. Checked against orbistoun's actual code rather than accepted, and answered in writing so the declined item is not re-proposed.

Declined: an identifier-to-name database

The notes recommend generating the symbol table from a public database of 78,372 identifier-to-name pairs. This is correct for obSCEne and disqualifying here.

orbistoun obtains names by proposing candidates and letting the hash confirm them, consulting nothing (principle 1, docs/PROVENANCE.md). Adopting a table would not be a small compromise: it would retroactively poison every name already found, because afterwards nobody could distinguish a swept name from a supplied one. The property is all-or-nothing.

The asymmetry is deliberate and pre-agreed - obSCEne may consult, orbistoun may not. Names arriving from that side are hypotheses to verify by hash, recorded as supplied rather than generated.

Taken: a guest must be able to write to standard output

The highest-value item, and it was not implemented here at all - orbistoun-fs declared its interface and provided nothing.

One loader examined implements sceKernelWrite purely as a filesystem call, requiring a real opened descriptor and refusing descriptor 1, and that single choice is why it cannot emit a report. A conformance probe that cannot write to standard output cannot talk to you at all.

Implemented, with an adaptation the notes could not have anticipated: descriptors 1 and 2 land on the host's error stream, never its output stream. The worker speaks its protocol over stdout as newline-delimited JSON, and guest bytes interleaved into that would break the reader permanently - the same reasoning the fault reporter already follows.

sceKernelOpen, Close, Read and Lseek came with it, read-only like the rest of the filesystem: /app0 is the user's own title directory and nothing should write into it.

Adopted as rules, not yet exercised

The caveats are the most valuable part

Zero of 112 checks are hardware-confirmed; 38 are the probe's own reasoning. So obSCEne is a development signal, not an oracle: a fail [spec] is a defect here, a fail [assumed] is a conversation that may be declined with a reason. Their framing, honoured.

Also noted back: several findings are conclusions about another loader's implementation. As written they are all "a mistake to avoid", which is safe. Shaped as "here is how they did it", it would be the same problem as the database.