Records what the 2026-07-21/22 sessions actually found and shipped, so the ledger matches reality: - TASK-16: A, B, D landed; C (contact card) implemented, phone acceptance pending; new unit E (history-fill boot amnesia) done. - TASK-08: shell-side state projection exists; add the maintenance- lease requirement so a deploy can never race the idle lock again (root cause of the 19:29 auto-lock-during-deploy crash). - TASK-09: stale-lock incident — panel/IRQ alive, session-lock routing stale; capture both in the resume test. - TASK-14: expand to the Auxo-style running-app surface and an unconditional Home tap; folds in the GLES OpacityMask and workspace-ratchet findings. - TASK-17: pin the iOS-like keyboard target and the Hyprland key-safety hammer test. - Mic trace path corrected to its new home. New: TASK-19 (settings control center), TASK-20 (player video + agent control), TASK-21 (reboot-to-Android confirmation), TASK-22 (settings/fullscreen tweaks), TASK-23 (culver locked-notification nudge).
2.1 KiB
TASK 09 — Suspend-resume FTS calibration race
Status: interim fix shipped 2026-07-17 (Pixel3Arch c4fd047 —
hypridle suspend listener disabled). The real fix is open.
Goal
dt2w wake from s2idle suspend wedges the FTS touch controller (continuous invalid "Force cal" spew, dead swipe on the lockscreen). The 73d0cd0 serialization only covered DPMS off/on, not the suspend-resume path.
The race
s2idle exit re-runs panel-prepare → FTS reset → Sense ON unpaced. The
controller calibrates against a half-ramped panel and wedges. Recovery
(echo 2-0049 > /sys/bus/i2c/drivers/fts/unbind && sleep 1 && bind)
worked once but did NOT hold on a re-wedge.
Candidates
- Kernel-side pacing. Android is the reference — it paces the FTS bring-up after resume. Look at the downstream driver for the delay.
- Post-resume rebind hook. Careful: rebind with the panel off may drop dt2w flags. Must be panel-aware.
Context
~/Projects/SouveraineOS/docs/LOCK-DPMS-LESSONS.md§3 — the FTS controller: deaf signature, rebind recovery, suspend-resume race OPEN.- Interim: idle stops at screen-off (600s blueline-screen-toggle off). Gadget/ssh survive idle. Suspend is fully off the table until this closes.
- The "Android is the reference" rule (
android-is-the-reference-rule): mimic Android for the pacing; don't invent. - 2026-07-21 stale-lock incident: Hyprland still listed
fts-1; five harmless taps produced five valid evdev down/up pairs and the FTS IRQ advanced, while the secure lock surface received none. A cold reboot restored native PIN touch immediately. Kernel logs still contained the known Force-calibration warnings. This proves the panel/IRQ can be alive while the compositor → session-lock routing is stale; capture both evdev and secure-surface delivery in the resume test, not merelyhyprctl devices.
Acceptance
dt2w wake from suspend → touch works, no Force cal spew. Repeated suspend/wake cycles stay healthy. Then re-enable the suspend tier in TASK-08.
Connects to
TASK-08 (suspend is an idle tier once this is safe), DPMS lessons §3. Cold boots only while iterating.