August 9, 2026
24 recorded commits · 3 named repos · 8 private repos
- Private work 8 private repos
Activity was recorded across 8 private repos. Names, subjects, counts, and links stay private.
- SouveraineOS9 changes
- HANDOFF 2026-08-10: the d10, dark and untouchable10:38 p.m. · a8e590a · internal Gitea record only
Display pipe binds and the panel stays dark; touch worked once and stopped. Both have a named single-boot test rather than a theory. Driver changes and rails are ruled out by test; the display path is not.
- devices/d10: the panel cannot sleep, and both ends are blueline-shaped10:33 p.m. · 46685ae · internal Gitea record only
blueline-screen-toggle does not exist here so the blank no-ops, and Dim is an absolute that reads as off on a 2047-step backlight. Lit-forever or black-forever, nothing between, until eb0292c ships.
- devices/: a support matrix per body10:30 p.m. · 1068515 · internal Gitea record only
One row per capability, one column per body, with a strict status vocabulary — "works" means exercised with evidence named, never that a device node appeared. blueline points at PAF/ rather than copying it; d10 carries its own state; m1 records what already transfers before anything is measured.
- TASK-63: touch on the glass, and a display pipe on T801010:09 p.m. · dd5e242 · internal Gitea record only
Touch proven with real events, not a device node: three layers, the last being runtime report activation gated to D11 so D10 went silent a second after boot.
- 63: the second body, and every place the base assumed one board7:50 p.m. · 37b570e · internal Gitea record only
The shell is on the iPhone 7 — viewtop, sessiond and qs, drawn by llvmpipe on a card with no render node, over one cable. Wallpaper, palette, bar, clock, dock and her quote match the Pixel.
- dump: fingerprint handoff, and the protocol is recovered10:01 a.m. · b78342a · internal Gitea record only
STATE moved to 2026-08-09. One instrument is waiting on a finger; everything else about the enrol lifecycle is reachable in RAM today.
- task 44: there is no API to design9:58 a.m. · 34cc8e9 · internal Gitea record only
fprintd, gazed, sailfish-fpd and biometryd are the same interface four times. Take that shape and face and finger become one surface with two backends. Mapped every call onto the recovered TA commands; the gaps are persistence and the auth token, both already named.
- task 44: the factor is a daemon, and the listener is not its job9:54 a.m. · d09978d · internal Gitea record only
Prior art checked: sailfish-fpd-community needs hybris, wrobelda's libfprint branch is the only match-on-chip-over-QSEE example, and nobody has done FPC over QSEE natively. One listener receiver per device means the supplicant is a separate owner from the fp daemon.
- task 44: the command protocol is recovered9:21 a.m. · 5134b4e · internal Gitea record only
- Pixel3Arch9 changes
- docs: repoint the rest at SouveraineOS/PAF7:43 p.m. · 2c67530 · internal Gitea record only
The remaining citations in package recipes, overlay patches and task files still named the retired in-repo spine.
- usb-signaller: the streaming HID writer the shell talks to7:43 p.m. · dcd97e5 · internal Gitea record only
pkgrel 6. Adds a stream mode that holds both endpoint fds open and acknowledges each accepted report, so the shell-side controller is a persistent trackpad and keyboard rather than a process per keystroke.
- PAF: finish the move, leave a pointer that says where it went7:43 p.m. · a58a589 · internal Gitea record only
SouveraineOS 72aaa53 copied the spine on 2026-07-24 and this repo kept a live copy, so both drifted through phone calls, Active Edge and the fingerprint work. The newer tree was promoted before this duplicate was retired; nothing was lost, and 9b1afd1 still holds the whole retired PAF.
- tools: rescue the five fingerprint tools that lived only on the phone10:01 a.m. · e60eab8 · internal Gitea record only
fp-arm/bringup/go/load/sweep have been in ~ on the device since 2026-08-01; a reprovision would have taken them. fp-go's error table, decoded from the HAL, independently matches the router codes read out of the TA today -- recorded in the protocol doc.
- tools: ask the TA for finger state instead of counting edges9:51 a.m. · cfaa7a0 · internal Gitea record only
Target 10 command 1 is check_finger_lost. Arms exactly once and brackets every query with the interrupt count, so the call's own edge is reported apart from spontaneous ones -- the 1444-event trap.
- docs: storage is confined to target 2, so bio cannot block9:48 a.m. · 8288225 · internal Gitea record only
The only persistence is qsee_fts_*, reached from three wrappers. Call graph says targets 2 and 12 reach them and nothing else does, so the enrol/identify lifecycle runs in RAM with no listener. Parking TZ is the real hazard and it lives in target 2 alone.
- docs: recover the fpctzappfingerprint command protocol9:21 a.m. · 85bd4b8 · internal Gitea record only
The TA is not stripped: every handler logs __func__, so the router's jump tables resolve to names. Eight targets; sensor is 10 and bio is 11 with the full enrol/identify/enumerate/delete set. Target 10 command 1 is check_finger_lost, which is the instrument TASK-44 was missing. Static, from the vendor image on disk.
- docs: three reads landed, and one trap8:52 a.m. · e2ca92a · internal Gitea record only
qcom_qseecom is bound on the phone, so QSEE is reachable from mainline today and the TEE slot is simply empty. linux-firmware carries no fingerprint TA on sdm845/sm8250/sm8150, so TAs are per-device extracts, not shippable. Blind qfprom dumps stay off the daily driver.
- docs: name the FPC application and settle the tethering question8:38 a.m. · 13888ed · internal Gitea record only
fpctzappfingerprint was in blueline's own vendor.img, and it is FPC's cross-OEM name, not a per-device one. Google's driver and the b1c1 fingerprint dtsi pulled down beside it. qtestsign's own README settles persistent EL2: test keys need secure boot off, and XBL authenticates hyp before ABL can know the bootloader is unlocked.
- souveraine6 changes
- lock: answer touchKeypad on a cold start, not just a reload10:21 p.m. · bf469c4 · internal Gitea record only
PersistentProperties is in-process, so it carries the surface choice through a reload and not through a fresh shell. sessiond locks before the shell exists, so a greetd-started shell adopts a live lock with Config.ready still false and binds the desktop surface — and WlSessionLock.surfaceComponent cannot change once active. A lock screen that will not take your PIN, on the iPhone 7 tonight.
- sessiond: dim by percent, not an absolute9:19 p.m. · eb0292c · internal Gitea record only
brightnessctl set 10 is 4% on blueline's 255-step backlight and 0.5% on the iPhone 7's 2047-step Apple DWI, where it reads as fully off. Measured on d10 2026-08-09: brightness=1 with the panel still powered, so the screen went black on a dim that never blanked.
- sessiond: a power seam that cannot report an outcome it does not have7:31 p.m. · b2774c8 · internal Gitea record only
Power is the one irreversible transition and it bypassed the authority entirely: both menus called Session.poweroff() straight into systemctl, so there was no Action, no trail entry and no refusal path.
- packaging: sessiond ships on both arches, enabled on neither7:31 p.m. · c802f7d · internal Gitea record only
CI already built the x86_64 daemon and then threw it away — the binary and its user unit were copied into the package only under aarch64, so the laptop could never receive the thing every lock, blank and button report assumes is running.
- usb: land the HID controller the doorway was already calling7:31 p.m. · 32c0198 · internal Gitea record only
78d6743 committed PowerMenu's half and never added the file, so the singleton in qmldir resolved to nothing and the shell would not load on a tree that had not been hand-linked.
- docs: the working agreement for this repo7:30 p.m. · abdf310 · internal Gitea record only
Points at the personal agreement and the cross-repo map, names this tree as the substrate rather than a harness, and starts architecture at saf/INDEX.md.