The model/capability manifest runs first. The remaining diagnostic modules run in parallel and consume its discovered paths where integrated. Output order in the master report is filename/glob order, not incident order; use the timestamps inside journal excerpts.
Identifies the allowlisted Valve model/firmware and OS build, distinguishes Jupiter LCD from Galileo
OLED, discovers primary evidence paths, and records each source as supported_and_readable,
supported_but_inaccessible, absent, not_applicable, or unknown. Non-Valve DMI is not copied
into reports. A temporary path handoff is mode 0600 and deleted immediately after the runner imports
only known keys.
Limitations: schema version 1 does not yet describe every driver, SteamOS slot, rescue environment, or module prerequisite. Unknown hardware remains unknown rather than receiving guessed Deck behavior.
Reads current-boot amdgpu errors, reset outcomes, historical dmesg matches, CPU frequency, and the active GPU SCLK state. A low instantaneous frequency can be normal at idle; correlate it with sustained poor performance and load. A failed/skipped GPU reset is more serious than a successful recovery.
Limitations: fixed CPU frequency sysfs paths, no load-normalized trend sample, and current journal access may require root.
Reads the first available BAT1/BAT0 status, capacity, voltage, current, charge, and energy nodes.
The raw 6.6 V warning is an implementation threshold, not a model-independent battery diagnosis.
Limitations: no USB-PD contract, charger, cell-balance, or model-aware threshold logic.
Inventories all hwmon temperature/fan inputs. It compares temperature with each sensor's exported
max/crit threshold. Above 90 C without an exported threshold is reported as a high observation,
not a hardware trip. Exported thresholds above 200 C are treated as invalid sentinel values and ignored.
Limitations: a 0 RPM export needs context; the fan may legitimately be stopped at low load or the sensor may not be the system fan.
Runs NVMe SMART health and selected warning/error fields through smartctl for the manifest-discovered
primary NVMe.
Limitations: USB, SD, additional NVMe, and non-NVMe replacement devices are not SMART-scanned.
Reads BTRFS device statistics for mounted BTRFS filesystems and ext4 superblock state for mounted ext4 devices. Nonzero BTRFS counters are persistent and need device/time context.
Limitations: read-only mounted-state inspection, not an offline fsck, scrub, or repair.
Inventories DRM connectors, identifies a connected eDP panel, reads EDID size, backlight, deduplicated
DRM CRTC/plane state, Gamescope backend data, selected current/recent kernel warnings, and sleep mode.
With --display-black, it can emit:
LIVE_RENDER_TO_PHYSICAL_SCANOUT_GAPwhen eDP/EDID, backlight, and CRTC remain live;PANEL_OR_MODESET_STATE_INCOMPLETEwhen a required state is missing.
Limitations: root/debugfs required for planes; software cannot observe physical pixels; LCD backlight logic is not directly portable to OLED.
Inventories USB topology, driver-exported Type-C roles/partner/PD/DisplayPort Alt Mode, USB/PD supply telemetry, external DRM connectors, likely USB Ethernet, and current-boot xHCI/UCSI/Type-C/display-link errors. It emits a correlation signature when a topology reset/disconnect and selected dock-path error coexist.
Limitations: exported voltage/current are instantaneous system telemetry, not electrical certification; many docks expose no rail or PD fields; deliberate unplug events are normal without aligned errors.
Searches current-boot kernel errors for SOF DSP panic, IPC failures/timeouts, firmware state, and resume pipeline errors. It also lists ALSA cards/playback devices and the active user's PipeWire nodes.
Limitations: log matching is broader than one codec; absence may be a user-session/permission issue.
Finds common wlanN or wl* interfaces, reports link state/info, searches current-boot kernel records
for bounded ath11k/ath12k/iwlwifi/rtw88/b43/brcmfmac driver errors and firmware versions, and lists a
PCI network device. It also flags Wi-Fi and SOF failures retained in the same boot for timestamp review.
Limitations: a down interface is not proof of a firmware crash; driver pattern coverage is incomplete; no gateway, DNS, captive-portal, throughput, or Bluetooth test.
Separates Gamescope crashes from normal session-end dumps, counts current-boot starts/restarts using the
active user service's NRestarts where available, searches for Vulkan and Wayland errors, and classifies
the MangoApp /proc/<pid>/fdinfo permission abort.
Limitations: unit names and per-user journal access vary across SteamOS releases.
Counts current-boot suspend entries and resume exits, lists recent cycles, searches for PM/PCI failures, fan-controller warnings, wake sources, and the presence of a battery charge-limit interface.
Limitations: log proximity matters; a fan warning anywhere after any suspend is not automatically a resume-caused fan failure.
Aggregates retained dumps by executable; separates current-boot records/signals; classifies all,
steamwebhelper, Gamescope, and Wine/Proton crashes from the last 24 hours; distinguishes
historical/current MangoApp crashes; and reports storage use. A helper SIGTRAP is reported separately
from a Gamescope SIGABRT/SIGSEGV so the two are not treated as equivalent failures.
Limitations: coredump retention policy and permissions affect visibility; core presence proves a process terminated by a signal, not the root cause.
Reports RAM/swap totals and usage, current-boot OOM/page-allocation events, swap configuration, and a
short vmstat sample. Current implementation warns below 1 GB available, becomes critical below 512 MB,
and flags swap use above 50%. Cumulative pages swapped since boot are history; only the live sample
indicates current swap traffic.
Limitations: one short sample cannot reconstruct memory pressure at a past incident.
Counts actual .dmp, .mdmp, .core, and .crash files under /tmp/dumps, bounds current-boot and
last-24-hour steamwebhelper crash rates, scans Steam stdout, searches current-boot Steam errors, and
inventories Proton compatibility prefixes/lock files for the active user.
Limitations: error-word counts contain false positives; a lock file is not automatically corruption.
Detects the production RyuDeck install and profile, counts firmware content and per-title caches, then
reads a bounded structured window from the latest runtime log. It distinguishes host initialization
from the emulation_running stage, zero- versus nonzero-FPS progress, a runtime log that stopped
advancing, background pipeline/cache rebuild signals, realtime-scheduler warnings, device loss,
out-of-memory, and fatal process/guest markers. A guest that reaches emulation but produces at least
30 zero-FPS samples and no nonzero frames is classified as GUEST_STARTUP_STALL; cache load evidence
adds STALE_TITLE_CACHE_SUSPECTED as a reversible A/B hypothesis rather than a verdict.
The module emits structured counters and signatures only. Game titles, title IDs, paths, filenames, launch arguments, account/controller IDs, and raw RyuDeck lines are intentionally omitted. The safe cache test is advisory: close RyuDeck, preserve only the affected cache as a backup, retry clean, and never delete saves or firmware as part of that test.
Limitations: this is the first application-specific adapter, not proof that every app is covered. Firmware version alone does not establish compatibility, a cache rebuild can legitimately stutter, and software cannot confirm what physical pixels show. Historical logs are kept distinct from an active runtime.
Reports whether the optional continuous probe is installed/active and ingests the latest incident's metadata, trigger, volatile snapshot, and bounded journal tail. No probe means a normal “not installed” result, not a diagnostic failure.
Limitations: journal persistence and a functioning kernel/storage path are required; signature proximity is not causation. Incidents are filtered before disk with no raw variant, but still require review before sharing. See Continuous incident probe.
Lists mmc devices and mounts, searches mmc/SDHCI and ext4-on-mmc errors, finds selected TRIM failures, and reports size/read-only state.
Limitations: no offline filesystem repair, counterfeit-card capacity test, or flash wear assessment.
Classifies selected AMD VM/UTCL2 page-fault client IDs (CB, DB, CPF, CPD), mapping/walker errors, possible process attribution, ring timeouts, and GPU-reset outcome. The module title says DXVK/VKD3D correlation because those are hypotheses to correlate, not conclusions derived from a kernel client ID.
Limitations: kernel log labels do not uniquely identify DXVK/VKD3D or prove hardware failure.
Triggered by a current-boot DSP panic or IPC -22; backs up audio state, reloads
snd_sof_amd_vangogh, and verifies ALSA cards plus post-cursor errors. It is dispatched by --fix.
Requires an explicitly declared physical-black symptom, live Gamescope, connected eDP, readable EDID,
and nonzero backlight. It backs up DRM state, applies gamescopectl composite_force 1, optionally
installs one user Lua policy, and reports PARTIAL until a human confirms the image.
Read Safe remediation policy before extending either module.