D782 - APR identifiers are synthesised for app0 files outside a title's index

Status: decided Date: 2026-10-09 known_by: assumed (what the console answers for a packaged file is not measurable on firmware 12.40: native homebrew has no /app0, so every APR probe resolved against nothing)

sceKernelAprResolveFilepathsToIdsAndFileSizes resolves a path its title's own index names as before (the index's identifier and size). A path the index does not name, or any path of a title that ships no index, resolves when it names an existing file under /app0/: it is given an identifier of its own, from 0x4000_0000 upward in the order paths are first asked for, the same one every later time it is asked, with the file's real size and status 0. Anything else still gets the measured unresolved answer: identifier 0xffffffff, size 0, and -1.

Why: a title resolves every file it reads through this call before reading it. PPSA25872 ships no index, so its resolve of /app0/Media/ScriptingAssemblies.json was refused, Unity closed the file unread, il2cpp found none of its core types, and the title crashed. The user approved synthesising identifiers on 2026-10-09. A range of its own keeps a synthesised identifier from ever meeting one an index assigns.

The files are read through the same identifiers. sceAmprAprCommandBufferReadFile adds a read - identifier, destination, length and file offset - to the command buffer it is handed, held beside it rather than encoded into it, and answers 0. sceKernelAprSubmitCommandBufferAndGetResult carries out every read the buffer holds, in order, before it answers 0, and sceKernelAprWaitCommandBuffer then has nothing to wait for and answers 0. A buffer holding no reads, which a title's own code encoded, is still refused: its encoding is not established.