July 25, 2026
46 public commits · 6 public repos · 147 private commits
- Private work 6 repos sealed
147 commits count toward the day. Names, subjects, and links stay private.
- SouveraineOS 16 changes
- 7:19 p.m. · 45a4e44
LOCK-DPMS-LESSONS §1: the idle clause described 300s-lock-before-600s-blank, which no longer exists. sessiond enforces the ordering now.
- 6:41 p.m. · b768220
- 6:39 p.m. · 8323520
DEVICE-STATE-MACHINE.md said "partly built and entirely inert" and the archived deploy task said "observational only". Both were written 2026-07-25 midday and were overtaken by aa30278 the same afternoon. tasks/README.md already said "actuating 07-25" — the index was right and the design docs were two hours behind, which read as a live blocker on TASK-25's ordering note ("state-machine controls must wait for TASK-15/08 to give it actuators").
- 5:21 p.m. · 1c1e139
- 5:11 p.m. · 9363abc
- 4:32 p.m. · 5faae0f
- 4:25 p.m. · 81196d1
- 3:23 p.m. · 0db3a8a
fix-dock-fullscreen-detection (superseded) and unified-device-state-deploy (done 07-25) moved to archive/; pointers to them updated.
- 3:08 p.m. · fa664dc
- 2:34 p.m. · 0083c6d
Scoped from what was measured today. The finding that matters: rootfs-overlay is not a package, so overlay fixes reach a running phone only via reprovision — which costs Casey his live system. Two fixes are already stuck behind it.
- 2:24 p.m. · c304e97
- drop [host]; it was never a real address. Phone is pixel/[host] over USB, [host] over wifi - delivery is the package, not scp to /usr/local/bin. Verified: /usr/bin/souveraine-sessiond is owned by souveraine 0.1.r218.g91c0cf800bf6-1, which already contains b4b30b1 - there is no socat on the phone, nor nc; record the python3 form the other sessiond clients use - record what the checklist's own verification steps actually returned: device_state=active and forensic count 0 with no forensic.jsonl, 2.5h into a session with locks. The machine was inert on hardware, not merely unwired
- 12:17 p.m. · ab600c2
TASK-26 duplicated this doc and should not have been written. The doc already covers the seven-actor scatter, the evidence model, the proximity-lock/screen-toggle mapping, and names sessiond as the owner.
- 8:22 a.m. · 4933283
Wrong on two counts before. The sensors are not in question - SLPI bring-up was solved 2026-07-10 and the 07-13 SUID sweep found accel/gyro (BMI160), mag (LIS2MDL), pressure (BMP380), ambient_light/proximity (TMD2725) and sensor_temperature; only amd lacks a SUID. A failed monitor-sensor accelerometer claim was contention with blueline-autorotate, not absence.
- 8:14 a.m. · 7cb5540
The device state machine is not observational, it is blind: nothing in any repo ever sends SensorInput, so observed_confidence cannot leave 0.0 and the forensic log cannot fill. Meanwhile blueline-proximity-lock is live and acting on proximity on its own authority, unowned by any package. Carved as its own task because 08(a) and 15 are both efferent and assume afferents that do not exist - wiring actuators first would manufacture exactly the success-shaped switches 19 forbids.
- 7:08 a.m. · 1823680
The N/A reading was from the charger, not the battery. upower reads the battery, and on SDM845 that is the fuel gauge, which has no charge_type at all - so 628283f could never move the symptom. Records the device-link fix, the three blockers actually in front of repo-add --sign, and the one hand-copied header that had been blocking -Syu.
- 6:06 a.m. · 712e8a9
- 7:19 p.m. · 45a4e44
- souveraine 14 changes
- 6:57 p.m. · 9ab1cfb
An older sessiond has no lock_ack_budget_secs. Show the upgrade note instead of inventing a number.
- 6:53 p.m. · 24ce6d3
SessiondBridge: handle pushed {"directive":"lock"} on the heartbeat line and raise the lock surface. Unknown directives are console.error — a silent drop leaves the daemon blanking unlocked when its budget expires.
- 6:45 p.m. · 6eb87a5
pacman -Fy asks for souveraine-<arch>.files, not .files.tar.zst, so it 404'd.
- 6:38 p.m. · 15a3279
LOCK-DPMS-LESSONS §1 is "Ordering: lock, then off". It held only because hypridle's 300s lock listener fired before its own 600s screen-off listener — two numbers in a config file, not a guarantee. Anything that skipped the lock (idle inhibitor, native coordinator off, dead shell) still met the blank, and the panel went dark on an unlocked session with nothing said about it.
- 5:50 p.m. · 044c373
edge is a shared archive but ci.yml deleted and recreated it each push, erasing other producers. publish-edge.sh merges into the live db under a flock and removes only its own superseded builds. Verifies the merge kept every foreign entry, and reads the db back before trusting it.
- taggedtagged Fimeg/souveraine5:46 p.m. · forge event
- 5:46 p.m. · forge event
- 3:08 p.m. · 9d8bce2
- 2:23 p.m. · aa30278
The state machine landed in b4b30b1 and never ran. Verified on the phone after 2.5h of use: device_state=active, observed_confidence=0.0, forensic_log count=0, forensic.jsonl never created. Not one transition.
- 7:49 a.m. · 91c0cf8
The heuristic tested charge_full, which qcom-battery lacks and which upower never uses for the percentage anyway - it reads capacity directly. And like charge-type it was only set in UpDeviceSupply, so a battery got the FALSE default. Verified: charge-type now reads fast against the charger's Fast.
- 7:30 a.m. · bcf4bf2
Real batteries are backed by UpDeviceSupplyBattery, which never ran the refresh that set charge-type, so it stayed at the UNKNOWN default.
- 7:05 a.m. · e7afd7b
rust-test failed on 16aa469 with only a submodule gitlink changed and no Rust touched, so aarch64-artifact skipped and no package was produced.
- 6:51 a.m. · 16aa469
SDM845 splits fuel gauge and charger; qcom-battery has no charge_type at all, so the battery-only read returned UNKNOWN regardless of the N/A spelling fix. Follows the kernel's device links to the charger instead.
- 6:05 a.m. · 155288d
- 6:57 p.m. · 9ab1cfb
- souveraine-updater 6 changes
- 6:53 p.m. · ffb34c1
--depth 1 makes rev-list --count always 1, leaving the sha to order versions. vercmp reads that alphanumerically, so upgrades were a coin flip.
- 6:45 p.m. · ec1f42e
- 6:30 p.m. · e4f00c5
Cross-build helpers from culver, prebuilt PKGBUILD, and a packaging step that signs into souveraine-{arch} via souveraine's additive publisher. Replaces pachub. Smoke test loads the QML root, since a null root builds green.
- 6:14 p.m. · fb001c9
QString properties, apply_filter onto the QObject, exec off the pinned app. Main.qml never imported its own module, so PackageManager didn't resolve. Icon embedded via qrc_resources.
- 6:14 p.m. · forge event
- 5:18 p.m. · e678fd6
- 6:53 p.m. · ffb34c1
- Pixel3Arch 6 changes
- 6:42 p.m. · 569e6e9
- 6:38 p.m. · cadaec9
The 300s lock and 600s `blueline-screen-toggle off` listeners were "the redundant fallback" only while the device state machine was observational. Once sessiond got a clock and real actuators (souveraine aa30278) they became a competing writer, and the competition had a security shape: LOCK-DPMS-LESSONS §1 ordering held here only because 300 < 600. Anything that skipped the lock still met the blank, and the screen went dark unlocked.
- 2:39 p.m. · 842aa12
The bind guard silently dropped all 11 touch gestures when the plugin failed to load, which is why a soname break went unnoticed for twenty days. Add the else branch.
- 2:23 p.m. · 557c8e1
hyprgrass: touch gestures have been dead and nothing said so. hyprgrass.so NEEDED libhyprutils.so.12; hyprutils went 0.14.0 and ships .13. The plugin lived in /var/cache/hyprpm/, owned by no package, so a routine library upgrade broke it invisibly — the two "unknown config key" errors in the Hyprland log were downstream of the failed load, not a config problem.
- 12:24 p.m. · cfcff37
The stevia/squeekboard co-existence redesign was written but never committed or deployed, so the phone still ran the old hyprland.lua starting mobi.phosh.OSK.service - a unit pkgrel 6 deliberately stopped shipping. The keyboard therefore never launched and Super+K did not exist on the device.
- 8:22 a.m. · 5a14a14
Live 2026-07-25 06:04:33 on a running system, not a cold boot. remoteproc recovered SLPI, but blueline-hexagonrpcd-sdsp exited Broken pipe and Deactivated successfully, so systemd never restarted it. Sensors were down for hours - HasAccelerometer/HasAmbientLight/HasProximity all false - and nothing noticed, because a script consuming a dead sensor looks the same as one whose sensor is quiet. The restart/ordering fix belongs in rootfs-overlay, not on the device.
- culver 4 changes
- 4:41 p.m. · 8dc8553
- 4:30 p.m. · ab559bc
- 4:23 p.m. · b28b15f
- 4:17 p.m. · 1e3ea12
- upower 3 changes
- 7:39 a.m. · beb94dc
Two bugs, same shape as charge-type.
- 7:29 a.m. · f974714
up-enumerator-udev.c tries UP_TYPE_DEVICE_SUPPLY_BATTERY first for every power_supply device and only falls back to UP_TYPE_DEVICE_SUPPLY if that fails to initialise, so a system battery is backed by UpDeviceSupplyBattery and never runs UpDeviceSupply::refresh_device. charge-type was only ever set there, so it sat at the UNKNOWN enum default - indistinguishable from the driver not reporting it.
- 6:43 a.m. · 718e921
On a discrete-PMIC platform the fuel gauge and the charger are separate devices and only the charger knows the charge regime. On SDM845 qcom-battery is fuel-gauge@4000 and exposes no charge_type at all, while pmi8998-charger is charger@1000 and does, so reading only the battery's own attribute returned UNKNOWN on every refresh.
- 7:39 a.m. · beb94dc