# Phase 0 task 1 close — SDDM recovery watchpoint (2026-05-07)

## Verdict

**Closed as watchpoint, not as root-caused fix.** SDDM is currently green on fresnel; no recovery action was needed for this boot. Plan procedures in [`~/.claude/plans/dynamic-forging-piglet.md`](../../.claude/plans/dynamic-forging-piglet.md) stayed unused. Re-open the task on the first organic regression.

## Evidence (captured 2026-05-07 ~22:25 CEST over SSH from this session)

System state:

- `uname -r` = `6.19.9-99-eos-arm` (custom OC kernel, matches `phase0_findings.md`).
- `uptime` = 1:54 → boot at ~20:31 CEST.
- `loginctl list-sessions` shows session 2 (uid 1000 mfritsche) on tty1 active since 20:32, plus a manager session and a remote pts session.
- `pgrep -af "plasma|kwin"` confirms running Plasma Wayland: `/usr/bin/startplasma-wayland` (pid 2256), `/usr/bin/kwin_wayland_wrapper --xwayland` (2361), `/usr/bin/kwin_wayland --wayland-fd 7 --socket wayland-0 --xwayland-fd 8 --xwayland-fd 9 --xwayland-display :1 --xwayland-xauthority /run/user/1000/xauth_IhSEKJ --xwayland` (2367), `/usr/bin/plasmashell --no-respawn` (2511).
- `/sys/class/tty/tty0/active` = `tty1` — graphical foreground.

SDDM journal trace this boot (`journalctl -u sddm -b`):

- 20:31:49 Display server started; greeter starting; greeter session opened for user `sddm` (uid 961) via PAM.
- 20:31:50 Starting X11 session: `/usr/bin/sddm-greeter-qt6 --socket /tmp/sddm-:0-ZWEnZk --theme /usr/share/sddm/themes/eos-breeze`.
- 20:31:51 Greeter loaded `/usr/share/sddm/themes/eos-breeze/Main.qml`, connected to daemon.
- 20:31:56 `Adding view for "eDP-1" QRect(0,0 1920x1080)` — **the greeter rendered onto the panel**.
- 20:32:04 mfritsche logged in (`Authentication for user "mfritsche" successful`), Plasma Wayland session launched.
- 20:32:11 `Greeter stopping...`
- 20:32:16 `Error from greeter session: "Process crashed"` + sddm-helper exit 9.

The 20:32:16 "Process crashed" is the **post-login greeter teardown**, not the pre-login crash described in the plan. SDDM kills the greeter on session start; the greeter doesn't exit cleanly; sddm logs that as "crashed". This sequence happens on every successful boot+login on this version of sddm and is not the failure mode `dynamic-forging-piglet.md` addresses.

Coredumps: `coredumpctl list` returns "No coredumps found" (since-2h and since-boot both empty). No SIGABRT this boot.

qFatal-style strings in journal since boot: none.

## Why this isn't a declared fix

1. No qFatal capture exists. The plan's Step 1 was never executed because the failure mode didn't reproduce. The plan's Step 2/3 (package-rollback testing) was therefore unreached.
2. No package changed since `pacman -Syyuu` on 2026-04-28 22:53–23:00 (mesa 26.0.3→26.0.5, qt6-base/declarative/imageformats 6.10.2→6.11.0, xorg-server 21.1.21→21.1.22). The only difference between the crashing boot and this working boot is a reboot.
3. RK3399 panfrost / Mali-T860 GBM init is timing-sensitive on cold start. A flaky pre-login GLX context-create that happened to succeed on this boot could fail on the next.
4. The pacman.log shows two consecutive qt6-base reinstalls on 2026-04-28 23:08 and 23:29 (`6.11.0-2 -> 1:6.11.0-2`, no version change), then a triple at 23:37 (`qt6-base`, `qt6-declarative`, `qt6-imageformats` reset to 6.11.0). This is consistent with the plan's documented "downgrade test then re-install fourier" sequence; the plan reports the greeter still crashed afterwards. The recovery between then and this boot is unaccounted-for.

## Watchpoint conditions (re-open task 1 if any of these fire)

- `journalctl -u sddm -b` on a future boot contains `qFatal` from `libqxcb-glx-integration.so` (the original signature).
- `coredumpctl list` shows a fresh `sddm-greeter-qt6` SIGABRT post-reboot.
- mfritsche reports a black-screen or crash-loop greeter again.

## What stays ready in case of regression

- [`~/.claude/plans/dynamic-forging-piglet.md`](../../.claude/plans/dynamic-forging-piglet.md) Step 1 invocation is unchanged and runnable as soon as a fresh failure occurs.
- `/var/cache/pacman/pkg/` on fresnel still holds the 2026-04-28 rollback candidates: `mesa-1:26.0.3-1`, `qt6-base-6.10.2-1`, `qt6-declarative-6.10.2-1`, `qt6-imageformats-6.10.2-1`, `xorg-server-21.1.21-1`. Plus older mesa 25.2.7 and 25.3.1 (deeper rollbacks if needed).
- No `libdrm-pinebookpro` cached version was found in `/var/cache/pacman/pkg/`; only stock `libdrm-2.4.131-1`. If a libdrm-pinebookpro rollback turns out to be needed, will need a different source (build host or marfrit-packages snapshot).
- Workaround Option A (Wayland greeter via `Compositor=`) and Option B (TTY autologin) remain documented in the plan; not pre-installed.

## Implication for Phase 0

Task 1 is closed for this iteration. Phase 0 deliverables 2–6 (V4L2 inventory, iter5 fork build + vainfo, H.264 baseline trace, per-codec fixture inventory, chromium cross-validator trace) proceed against the live Plasma session — no headless-rig substitution needed.

## What this isn't

This is not a Mesa, Qt6, or panfrost bug report. We have no evidence of the failure mode on this boot and no diagnostic to attach to a tracker issue. If/when the regression fires and Step 1 captures qFatal output, an upstream report may be appropriate; until then, nothing to file.
