- **Android Auto can see the app, and there is nothing inside.** Round forty-nine made `MediaService` a `MediaLibraryService`, put three actions on one intent filter (media3's `MediaLibraryService` and `MediaSessionService`, plus the legacy `android.media.browse.MediaBrowserService` that Auto actually binds), and added `res/xml/automotive_app_desc.xml` with the `com.google.android.gms.car.application` meta-data that declares the app to Auto. So Auto lists SoulStream, opens it, and gets a root — immediately, from `Futures.immediateFuture`, with nothing on the main thread — and the root is empty. `onGetChildren` is not overridden, so the default answers `ERROR_NOT_SUPPORTED` and the tree is one browsable folder with no rows in it. What is still missing is everything under it: the library read out of the database **read-only** from a process with no Activity and no Tauri (`crates/library` is plain rusqlite and `JNI_OnLoad` publishes the Context at `System.loadLibrary` time, so browse can work cold), playing what it lists — which needs `COMMAND_SET_MEDIA_ITEM` and its neighbours, still deliberately unadvertised, plus the `queueBase` → `playQueueAt()` mapping — and search. Catalog and Soulseek rows will never play from cold: the resolver is 872 lines of shared JS and Soulseek needs a live session, so they get `STATE_ERROR` with a resolution intent instead, which is also what Google's quality bar asks for. The walk proves the two front doors resolve (`auto-browse`, `auto-library`) and `tools/auto-prober/` proves the root comes back cold; the car screen itself still needs the Desktop Head Unit or a car.