Worklog

What was done, in order, and what surprised us. Surprises especially - a format library's surprises are its most valuable output, because each one is a thing the next person would otherwise rediscover the hard way. This table is generated. Edit an item under worklog/, then run tools/split-doc.sh --index selfish WORKLOG 2 worklog.

date entry
- The repository exists, and the spine is laid
- The generation split, made unrepresentable rather than tested for
- The hash, and an objection that turned out to argue the other way
- The executable format, and the container in both directions
- The package's outer container
- The key derivation
- The filesystem, and the whole chain end to end
- A command-line tool, and an audit that found the real gap
- The dynamic table, and the whole stack on genuine material
- The symbol table, and imports resolved to names
- Relocations, and the check that closed the loop
- PARAM.SFO and param.json, and eleven files that disagreed with the source
- Two package magics, and a source that was not the one we needed
- Section headers and the link-time symbol table
- The linker script, and a test that actually links
- The dynamic-table writer, and the loop closing
- Sizing the filesystem-writing gap instead of starting it
- Running the finished thing, and finding the last missing field
- The first migration
- Closing three gaps the migration opened
- Crunching the unknown package entries
- Package writing, built up to the wall
- The source, and what it did and did not settle
- The superblock was never a wall
- Licences, built and proven
- Sections::dynamic_symbols - reading .dynsym
- The filesystem, written
- A package obSCEne can build, and what is still placeholder
- The reader's refusals, tested
- Package header: sensible defaults instead of zeros (found on hardware)
- The package header is integrity-protected, and that is the wall (measured on hardware)
- A fake package through three console rejection stages (measured on hardware)
- A hardcoded cache size makes a small package unmountable
- Auditing the other constants found a second one that was never constant
- The indirect block looked guilty and is not, which sets up the next test
- The inner filesystem mounts. It was the root's parent all along.
- An eboot is not the module this project builds, in three separate ways
- The eboot executes. It is a process now, and it dies on a syscall.
- Five refusals, each naming the next: an eboot walked into a console's loader
- A package built here installs, mounts, loads and executes on hardware
- A third linker script, and the tag that was named but never written
2026-08-31 libkernel_vaddrs example
2026-08-31 Native PS5 Title Generation & obSCEne Self-Resolver Oracle
2026-09-09 Three unnameable imports, and one of them was never a name
2026-09-09 ACCOUNT_ID was not text, and the reader refused the file rather than the key
2026-09-09 The same function twice, written to opposite standards
2026-09-09 The table was right, and the limit was the wrong shape
2026-09-09 A label in a candidate list is not provenance
2026-09-09 The confirmation was circular, and the entry that caught it had just written the rule
2026-09-09 The lesson put in the tool, and the reversal made airtight
2026-09-09 The tail held, and the instinct about it was wrong the other way
2026-09-09 The second reader, and the error that pointed at the wrong thing
2026-09-09 Two readers agree on every field, and the third failure of the day was agreeing
2026-09-09 Thirty-two containers, a clean split, and a confound I had already glossed
2026-09-09 The symbol level agreed, and the question about it found something
2026-09-09 The accusation in the suffix file was made from a label
2026-09-09 A title id in a citation, read as a fact
2026-09-09 The audit closed, and the test that makes it cheap next time
2026-09-09 The magic, settled by the row nobody asked for
2026-09-09 Both magics are accepted, and the cross-census already contained our own file
2026-09-10 A green gate that was never checked, and a commit that took somebody else's work
2026-09-10 One vocabulary, and an attribute that outlived its variant
2026-09-10 A guard that covered one of three, and five copies of one table
2026-09-10 Half of a refusal was never a refusal
2026-09-10 The question I filed was answered in a file I had already cited
2026-09-10 The last two verbs, and a paid value nothing wrote
2026-09-10 The pipeline learns what a title carries, and an empty content id that keyed nothing
2026-09-10 A review caught --icon copied, not converted - and my evidence that it was
2026-09-10 The shader container was citable after all, once I looked past the first two emulators
2026-09-11 A CLI verb, so a C consumer can reach the shader builder
2026-09-11 Pixel and vertex stages, the hardware that confirmed the header, and the constants I would not ship
2026-09-11 selfish-cli stands alone again: the local commit stamp, and the logging that logged nothing