Forza Horizon 6 shows a banner where its cover should be. The cover is on
disk the whole time: `librarycache/2483190/711e39.../library_capsule.jpg`,
300x450, the exact asset Steam itself draws. The scan never looked for that
name, fell back to the flat CDN URL for `library_600x900.jpg`, which 404s for
this appid, and the client then walked its candidate list down to the header —
a 460x215 banner in a 2:3 poster slot.
Measured against a real 779-app `appcache/librarycache` (the .41 box), the scan
was missing far more than one title. Three findings, each independent:
* `library_capsule.jpg` is the newer name for the 2:3 cover. 46 appids carry
only that name; none carry both it and `library_600x900.jpg`.
* `header.jpg` is the newer name for the header. 594 appids carry it, 122
carry `library_header.jpg`, and again no appid carries both — so the one
name we knew covered 16% of them.
* The `<appid>/<name>` layout, with no hash dir in between, is the MAJORITY:
623 of 779 appids. `findLocalArtFile` walked only `<appid>/<hash>/<name>`
and the oldest `<appid>_<name>` form, so it saw none of them.
The renamed files are the same assets — every `library_capsule.jpg` in that
cache measures 300x450, the same as every `library_600x900.jpg`, and both
header spellings measure 460x215 — so this is purely about knowing to look.
Simulating the resolver over that cache, per-appid art found locally:
portrait 25 -> 328 hero 75 -> 323
header 86 -> 716 logo 66 -> 295
None of this was visible before because a title that resolves no local file
still gets a CDN URL, and for anything Valve has not re-hashed that URL works.
It is the newer titles — the ones whose flat CDN URL 404s — that lose their art
outright, which is why this reads as "some games" rather than "the library".