Watch
1
0
Fork
You've already forked SouveraineOS
0
Commit graph SouveraineOS/docs/LOCK-DPMS-LESSONS.md
Author SHA1 Message Date
Fimeg
b2ce5d7cb0 lock-dpms: waking is the machine's, and the compositor must not do it itself
The panel had no way back: apply_gesture answers a tap on a dark panel
with Restore, which is brightness, and there was no unblank in the action
table. Invisible while hyprland bound the keys straight to the toggle;
under viewtop it became a phone that could sleep and never wake.

Records the wake loop too, because building it wrong is the obvious move:
viewtop waking directly worked, then sessiond resolved the same press,
found the panel lit, and blanked it again. One press woke the phone and
put it back to sleep. Plus why dt2w is a wake and not a button, and the
deploy order that has to hold between the two halves.
2026-08-02 17:37:51 -04:00
Fimeg
2e7766994c lock-dpms: the compositor reports LockedHint now, and the ordering is verified
All four faults were consequences of reporting the hint from the shell.
viewtop reports it instead: it is in the seat's session, SendLocked is the
moment the locked event goes out, and it can publish a level rather than
an edge so a cleared hint corrects itself.

Records the hardware result — lock-before-blank, lock-directive,
transition locked=True, panel-off locked=True, and no blank-without-lock.
2026-08-02 16:02:46 -04:00
Fimeg
0f2f1a96c3 lock-dpms: the ordering invariant held in the code and not on the device
Three independent faults, any one enough: greetd ran the desktop in its
greeter slot so logind refused SetLockedHint outright; the hint was
written to the caller's session and read from User.Display, which an ssh
login redirects; and the one report that mattered was swallowed by a
guard that never replayed it. Every blank went out unlocked and recorded
blank-without-lock.

Also records the check that catches it in one line, and why verifying the
actuator directly proves nothing about the ordering.
2026-08-02 15:43:16 -04:00
Fimeg
45a4e44392 docs: lock-before-blank is an invariant; note the missing deploy lease
LOCK-DPMS-LESSONS §1: the idle clause described 300s-lock-before-600s-blank,
which no longer exists. sessiond enforces the ordering now.

TASK-08: record that (e) is still missing — restarting the shell over a locked
session still hits "Tried to show lockscreen surfaces without active lock".
Reproduced during this deploy.
2026-07-25 19:19:47 -04:00
Fimeg
7ec2479f83 blueline: consolidate wifi bring-up, adopt cellular/MMS path, task audit
wifi: bringup unit now carries the union ordering (slpi/adsp for TZ MSA,
rmtfs+tqftpserv for firmware serving — the 2026-07-20 boot proved the old
load unit's ordering incomplete) and supersedes blueline-wifi-load;
msa-release adopted into the repo (shutdown unload that keeps warm
reboots clean).

cellular: adopt blueline-clat service+script. clat script now pins a host
route to the Fido MMS proxy via the CLAT — with wifi up the wlan default
beat the clat default and MMS died off-carrier. mmsd config contract
documented (MMS_APN must match the bearer APN ltemobile.apn; shipped as
netsvcs which matches nothing).

tasks: retire 06 qtpim (no longer the contacts path), archive 10 (done),
index catches up on 11 (archived); 01 re-pointed at a contacts-store
decision.
2026-07-20 22:21:15 -04:00
Fimeg
c8acee9579 LOCK-DPMS-LESSONS: distilled lock/wake/DPMS operating knowledge
Plus queue item 11: suspend-resume FTS calibration race (dt2w wake from
s2idle wedges the touch controller; dpms serialization didn't cover it).
2026-07-17 07:56:04 -04:00