Watch
1
0
Fork
You've already forked SouveraineOS
0
SouveraineOS/docs/tasks/README.md
Fimeg 32ed4fcf6c TASK-42: viewtop compositor
Foundation landed: lock handoff, admission gate, layer stack, back verb,
intent table. 123 tests, CI green for the first time (repo was never
fmt-clean). No Wayland/DRM yet.

Records the two traps: the lock handoff is the normal path, and sessiond
is already the availability layer so the compositor gets no fallback
presenter.
2026-07-28 17:22:28 -04:00

9.9 KiB
Raw Blame History

SouveraineOS — task files

Single-session-sized work units. Each file is self-contained: the goal, the context a fresh session needs (files, commits, gotchas), the acceptance check, and where it connects. Pick one, open a session, finish it. Don't pull in neighbors unless they're a hard prerequisite.

Source: carved out of session-handoff-2026-07-16.md queue items 112 plus open threads from the 2026-07-17 session.

Index

# Task Status Blocks / blocked-by
2 Lockscreen-as-Rust-system: glance + swipe in progress stopgap shipped 2026-07-17
3 Boot timing: fade splash → lock, no extra fixes diagnosed EBUSY handoff race is the last timing bug; splash text killed, holder added
7 WCD9340 mic: functional-pinned; unpin + fidelity functional 07-20 defect: power pin; kernel mic-race-fix
8 Device state manager / power profiles actuating 07-25 clock + actuators; lock-before-blank is an invariant and hypridle's listeners are deleted; (b) charge real, (c)(d) open, (e) lease still missing, (f) sensors_degraded reaches no surface, (g) the confidence gates need a decision before code
9 Suspend-resume FTS calibration race interim-fix kernel-side; cold-boot only
12 Face auth as a capability factor (Gaze reference) open per-target: phone needs front-cam bring-up
13 Active Edge (squeeze) as a sensor input works 07-28 force detected (2502-2990 vs a 127 max on 07-27) with no nanoapp — the gpio-hog closed the excitation question; producer packaged and gated through sessiond
14 Overview/app grid + Auxo multitasking in progress shell-side; Home path + app cards
15 Idle coordinator: freeze, doze, scheduled wakeups blocked freezing app.slice would freeze sessiond+shell+secrets; needs slice separation first (measured 07-25)
16 culver: usable messenger + contacts as Personal-class store in progress A/B/D landed; C contact card next; F is the folded-in TASK-01
17 Keyboard (stevia) + dictation polish shipped-partial OSK + mic key + STT live; no word completion — stevia asks hunspell for en-us, the dict is en_US (07-25)
18 Selection/highlight action menu open design captured 07-21; component-first, Read Aloud gated on TTS server
19 First-party Settings control center in progress guarded standalone launch + owned pages; absorbed TASK-22's polish sweep; owes the state-machine + source-health readout (07-28) — 08(f)/(g) surface here
20 Souveraine Player video + agent control open video/snapshot/manifest; preserve music
21 Reboot-to-Android confirmation open scoped 07-22; one-tap irreversible slot flip still bare in app search
23 culver locked-notification nudge open designed 07-22; needs SyncBurst() + IdleCoordinator schedule
24 Keyboard layout rethink open start from squeekboard us+apple; Casey decides where the mic key goes
25 One repo, all packages parked 07-25 four blockers before repo-add --sign; see also TASK-27
27 Gitea pipeline audit open overlay is not a package; no primary branch; poisoned build sysroot
28 Handover on upgrade open half-upgrades move authority silently; blocked-by TASK-27 packaging
29 SouveraineOS Updater started 07-25 rust rewrite of pachub; doesn't build yet; first repo to build into the pipeline
30 Agent reach: verb tables across the surfaces half built 07-26 sessiond has describe + refusal codes + intent; dock/apps/shell/settings do not
31 The radial dial open component before contents; entries come from the verb tables, not a list in QML
32 The pill and the keyboard, as owned apps open both erroneous daily; neither has an owner or a shipping story
33 Battery and charging belong to the device state machine open last raw feed going straight to the glass; the charge ceiling is writable today
34 SLPI bring-up sequencing regression needs re-diagnosis 07-27 doorbell is ACTIVE and sensors work (live lux measured); its /sys/bus/iio/devices test is not valid — SSC sensors never appear there
35 sessiond answers nothing: handler threads park forever open, live 347 threads in futex_wait, 691/1024 fds; accept loop fine, no request ever answered
36 CHRE nanoapp host for the SLPI open chrecd already runs CHRE with zero nanoapps; method table recovered 07-27, three methods to add
37 "Back" as a first-class verb open our Gestures.qml is already the compositor half; can_go_back is the dial's enabled/reason
38 Pill swipe-to-max swaps the keyboard open micro; the ONLY route to a terminal keyboard since stevia dropped its layout
39 Audio levels as tracked state, and sound roles open measured 07-28: WirePlumber persistence works — it restores 0.49 faithfully, so this is defaults+roles, not a save bug; do not add a second writer
40 Inference tiering for the sensor surfaces open, gating P1 applied to sensord/grip/dial; blocks TASK-13's raw stream and gates TASK-31's IPC
41 Producers must be attested; one authority per input open doctrine §10 pointed at a real surface; demonstrated live 07-28 — a squeeze and a dial-open both accepted from an SSH shell
42 viewtop: the Souveraine compositor foundation 07-28 lock/gate/layers/back + intent table, 123 tests, CI green for the first time; no Wayland/DRM yet. Engine in-process is settled; the two-client lock handoff is the thing not to get wrong
Unify the shell trees open ~900-file ii drift; blocks durable shell fixes reaching the phone

Archived (see archive/): 05 crash reporter — done 2026-07-21, CrashReporter.qml in-shell watcher, kill-test verified on device; 04 notification server — done 2026-07-21, server already existed (quickshell owns the name), built the lock card + NotifyEvents seam; 06 qtpim build — retired 2026-07-20, qtpim is no longer the contacts path; 10 boot chain — done, we ship our own mkinitcpio; 11 souveraine-secrets — built and committed 2026-07-20; fix-dock-fullscreen-detection — superseded 2026-07-21 by unify-shell-trees-laptop-phone.md (the patch is correct but stranded per-device, which is that task's problem, not this one's); unified-device-state-deploy — done 2026-07-25. souveraine 0.1.r219.gaa3027845dbd installed from the repo, sessiond took the lock, the machine reached Locked, and the forensic log recorded panel-dim then panel-off. Two of its checks are still unverified and moved to their owners: proximity-blanks-locked-screen needs sensors back (SLPI, TASK-09 neighbours), and the shell handshake needs a cold boot — restarting sessiond mid-session drops shell_alive (that gap is TASK-28); 01 favorites — folded into TASK-16 as lane F 2026-07-26, it was gated on 16.B/C in every step and a file whose every step reads "after 16" is a pointer, not a work unit; 22 settings polish — folded into TASK-19 2026-07-26, its own text sourced its candidates from 19's "still required" list and its status was a placeholder ("items to enumerate with Casey at session start").

Docs consolidated 2026-07-26. The agent-substrate tree was rescued out of souveraine/docs (gitignored, one disk, no snapshots) into docs/substrate/. Eighteen device task files that had been stranded there moved to archive/from-substrate/, each pointing at the numbered task that owns its subject; four live ones were promoted to docs/ as FIRST-CLASS-APPS.md, SHELL-ECOSYSTEM.md, SETTINGS-AUTHORITY.md and AUDIO-PRIVACY.md. Seven handoffs/DUMPs and four docs for the abandoned Chatty/qtpim stack moved to docs/archive/. Top-level device docs: 31 → 19.

TASK-26 was never written and no longer needs to be. It had two subjects and both are now closed. blueline-proximity-lock running as a second authority over proximity: resolved 2026-07-25, it reports to sessiond and decides nothing (its remaining loose end, unpackaged, belongs to TASK-27). Evidence-source health as device state — the half PAF/slpi.md was actually pointing at, and which the first retirement note read past: built 2026-07-26, DEVICE-STATE-MACHINE.md §10. The dangling references in STATE.md, TASK-25, TASK-27 and PAF/slpi.md now say so instead of pointing at a file that does not exist.

Conventions

  • Repo of record: ~/Projects/souveraine (substrate + QML shell), ~/Projects/Pixel3Arch (phone rootfs/overlays/kernel), ~/Projects/SouveraineOS/docs (this tree).
  • Builds: on archdev (10.10.20.123, ssh key ~/.ssh/ani, Proxmox kernel — binfmt locked, see TASK-06). Never the laptop (96% disk).
  • Phone: ssh aliases pixel / pixel-root at 172.16.42.1. COLD boots only (warm reboot poisons TZ/remoteproc).
  • Commits: no Co-Authored-By, no Claude attribution, terse sysadmin prose, no caveats in public messages.