Goal
DeckDoc must diagnose the whole Steam Deck, including failures inside our own applications, without becoming part of those applications or treating an app symptom as a hardware verdict.
The first adapter is RyuDeck because it exposes structured runtime stages and progress telemetry. The adapter contract should be reusable for other first-party and supported third-party apps.
Failure boundary
Each adapter should distinguish:
- intended production install/profile absent or duplicated;
- app/process launch failure;
- host initialization failure (renderer, audio, input, files/runtime);
- workload/guest start failure;
- active process with no progress;
- active progress/rendering;
- app/guest fatal, OOM, or renderer device loss;
- downstream Gamescope/display/input/audio failure;
- historical evidence versus a current live incident.
A running PID is not proof of progress, and a black screen is not proof of hardware failure.
RyuDeck baseline
The v3.4 work adds a privacy-safe ryudeck_app.sh module with:
- production install/profile and active-runtime state;
- firmware content count and runtime firmware version when available;
emulation_running, bounded zero/nonzero FPS, and latest progress;
- PTC/shader/cache, background-pipeline, controller/input, and scheduler counters;
- renderer/device-loss, OOM, guest/process fatal classes;
GUEST_STARTUP_STALL, STALE_TITLE_CACHE_SUSPECTED, ACTIVE_RUNTIME_LOG_STALLED, RENDERER_OR_PROCESS_FATAL, and RENDERING signatures;
- mocked absent, stall, cache, rendering, fatal, and privacy fixtures.
Privacy and safety requirements
Adapters must parse locally and emit minimized structured fields only. Reports must not include:
- titles or title IDs;
- usernames, home/library paths, filenames, or launch arguments;
- account, controller, friend, device, or console identifiers;
- tokens, keys, credentials, ROM/content inventory, screenshots, saves, or raw app-log lines.
The shared pre-write filter remains a second boundary. Cache/config tests must be advisory, exact-target, backed up, reversible, and never delete saves or firmware.
Follow-up scope
- define a versioned generic app-adapter schema and normalized lifecycle/progress fields;
- improve session-aware log selection when UI/library and title logs overlap;
- compare app build/profile/config capabilities without exposing values;
- model firmware compatibility as evidence rather than assuming newest or file-count equality;
- generate a public-safe app issue packet correlated with GPU, coredump, memory, Gamescope, storage, and probe timelines;
- add adapters for other deucebucket applications and high-value Deck runtimes;
- add DeckMD routes from application symptoms to adapter signatures and connected system checks.
Acceptance criteria
Goal
DeckDoc must diagnose the whole Steam Deck, including failures inside our own applications, without becoming part of those applications or treating an app symptom as a hardware verdict.
The first adapter is RyuDeck because it exposes structured runtime stages and progress telemetry. The adapter contract should be reusable for other first-party and supported third-party apps.
Failure boundary
Each adapter should distinguish:
A running PID is not proof of progress, and a black screen is not proof of hardware failure.
RyuDeck baseline
The v3.4 work adds a privacy-safe
ryudeck_app.shmodule with:emulation_running, bounded zero/nonzero FPS, and latest progress;GUEST_STARTUP_STALL,STALE_TITLE_CACHE_SUSPECTED,ACTIVE_RUNTIME_LOG_STALLED,RENDERER_OR_PROCESS_FATAL, andRENDERINGsignatures;Privacy and safety requirements
Adapters must parse locally and emit minimized structured fields only. Reports must not include:
The shared pre-write filter remains a second boundary. Cache/config tests must be advisory, exact-target, backed up, reversible, and never delete saves or firmware.
Follow-up scope
Acceptance criteria