July 27, 2026
45 recorded commits · 5 named repos · 7 private repos
- Private work 7 private repos
Activity was recorded across 7 private repos. Names, subjects, counts, and links stay private.
- hexagonrpc12 changes
- chrecd: hexdump the host message, not just its length10:01 p.m. · 6dec932 · internal Gitea record only
A byte count cannot tell a LoadNanoappResponse carrying success=true from one carrying success=false. elmyra loads and answers 52 bytes, and a squeeze produces nothing; without the bytes those two cases are indistinguishable.
- chrecd: load nanoapps by name, and read CHRE's outbound messages5:26 p.m. · f2ab7b6 · internal Gitea record only
Encodes LoadNanoappRequest by hand (verified field-for-field against a flatc-generated reader) and names the file rather than shipping it: the DSP opens it over HexagonFS, which hexagonrpcd already serves.
- chrecd: the real chre_slpi method table, from vendor daemon disassembly1:41 p.m. · 3743745 · internal Gitea record only
Methods 3-5 recovered by reading the six invoke scalars out of the vendor host daemon. Method 4 is get_message_to_host, not load_nanoapp: there is no load_nanoapp RPC, loading is a LoadNanoappRequest flatbuffer sent over deliver_message_from_host.
- 0015-apps-std-implement-ftell12:16 p.m. · c0ff2b4 · internal Gitea record only
- 0014-lazy-truncate-reverse-writes12:16 p.m. · e62ce22 · internal Gitea record only
- 0013-trace-write-fd-assignment12:16 p.m. · 97097c3 · internal Gitea record only
- 0012-trace-write-newlines12:16 p.m. · d5eb8d5 · internal Gitea record only
- 0011-trace-write-size-format12:16 p.m. · f76e143 · internal Gitea record only
- 0010-trace-reverse-writes12:16 p.m. · 7396071 · internal Gitea record only
- 0009-trace-dsp-file-requests12:16 p.m. · 21b732a · internal Gitea record only
- 0008-blueline-map-registry-control-nodes12:16 p.m. · 4a89ab8 · internal Gitea record only
- 0007-real-write-and-reverse-monitor12:16 p.m. · 1a39c81 · internal Gitea record only
- Pixel3Arch12 changes
- hexagonrpc pkgrel 6: chrecd loads nanoapps; build only via build.sh6:32 p.m. · 8fff087 · internal Gitea record only
- hexagonrpc pkgrel 5: real chre_slpi method table, drop the invented load_nanoapp1:42 p.m. · c18be31 · internal Gitea record only
- hexagonrpc: regenerate 0016 patch against post-0015 state, clean heredoc11:56 a.m. · b4a45ff · internal Gitea record only
0016 was generated via Python heredoc which mangled escape sequences. Regenerated from hand-written files via git diff --cached. Full 0001-0016 sequence verified clean on fresh upstream clone.
- hexagonrpc: use existing ~/build/aarch64-cross.ini for cross-build11:51 a.m. · 2dbe9c4 · internal Gitea record only
- hexagonrpc: fix 0015 corrupt patch, regenerate against post-0014 state11:47 a.m. · 1561d21 · internal Gitea record only
0015-apps-std-implement-ftell.patch was written against upstream but patches 0007-0014 shifted the apps_std.c line numbers. Regenerated against the actual post-0014 state. Full sequence 0001-0016 verified clean.
- hexagonrpc: chrecd load_nanoapp (method 4) + cross-build11:15 a.m. · ab09c5e · internal Gitea record only
chrecd now loads the elmyra nanoapp after starting CHRE: - Method 4 (load_nanoapp): SC=0x40100200, 1 in-scalar (size), 2 out-scalars (txn_id, result). Binary delivered through HexagonFS file bridge. - chrecd accepts optional argv[1] for nanoapp path, defaults to /usr/share/qcom/sensors/sdsp/elmyra.so. - initialize_reverse_monitor (method 2) called before start_thread.
- edge-sense: the rail is a DT gpio-hog now, drop the gpioset unit10:19 a.m. · 318f7d0 · internal Gitea record only
- squeekboard: relocate the cross-install leak before stripping the OSK unit10:11 a.m. · 84673db · internal Gitea record only
- squeekboard 1.43.1-5; cross linker wrapper so makepkg RUSTFLAGS cannot shadow --sysroot9:27 a.m. · a07801b · internal Gitea record only
stevia 0.56.0-9: drop the terminal layout (0005).
- blobs: chre preloaded_nanoapps manifest9:00 a.m. · c8b0287 · internal Gitea record only
- blobs: full vendor /firmware set, plus the CHRE daemon and contexthub HAL8:58 a.m. · 33da1d8 · internal Gitea record only
- stevia 0.56.0-8: drop the 5th symbol-page row that shrank every key8:45 a.m. · 84adb45 · internal Gitea record only
- souveraine10 changes
- shell: fail closed when the session authority cannot be reached9:38 p.m. · 68b6025 · internal Gitea record only
Every failure path in shellReady answered cb(false) — no lock owed — so a socket that was not up, a duplicate handshake, or a 3s timeout all concluded the session was open. The timeout logged 'proceeding without sessiond' and left the phone unlocked at exactly the moment the authority was unreachable, while the daemon side of the same contract retakes the lock on heartbeat EOF 'whether or not the session was locked at the time. Fail closed.'
- shell: send locked_ack on re-registration when the surface is already secure9:30 p.m. · deda4a7 · internal Gitea record only
onScreenLockSecureChanged is an edge. After a sessiond restart our lock surface is already secure, so the edge is in the past and the ack owed by the new handoff was never sent — sessiond logged 'shell never confirmed its lock after handoff' and retook the lock 15s later.
- shell: resolve logind session via User.Display, re-register after sessiond restart9:21 p.m. · 4ed8f3d · internal Gitea record only
SessionEvents asked loginctl for -p ObjectPath, which is not a property — it returned empty on every boot, so external lock signals were never monitored and the shell had no unlock ingress. Resolve the graphical session the way lockhint.rs does; not GetSession(auto) (this shell is a session-less user unit) and not the /session/auto alias (PropertiesChanged only fires on the concrete path).
- sensord: decay accel motion, debounce light in both directions9:21 p.m. · 45fc69b · internal Gitea record only
Accel inferred moving from orientation edges, so Moving(false) was only reachable from the startup banner — boot 0 carried 165 true to 8 false and the keepalive re-sent a stuck true every 30s, pinning +0.3 into observed_confidence for the life of the process. Motion now decays over MOTION_WINDOW and the keepalive re-derives it.
- sessiond: an expected source that never reports is Absent, not silent3:34 p.m. · 3d93400 · internal Gitea record only
sensord hung off graphical-session.target, which nothing on this device starts, so it was enabled and dead from every boot. Down starts from a last-seen stamp and structurally cannot see that. Bind the reporter to sessiond and make the machine say so.
- upower: remove the emptied parents after relocating, not just the subtree2:54 p.m. · 684d1f9 · internal Gitea record only
An empty home/casey still ships and still trips the stray check. Runs 1234 and 1248 were both this guard, not the build.
- upower: var/ is a legitimate prefix, not a leak1:46 p.m. · 25d1e19 · internal Gitea record only
Run 1234 failed because the new stray check omitted var/lib/upower.
- upower: relocate the cross-install udev leak, and assert it stays gone10:11 a.m. · 7eb2135 · internal Gitea record only
udev rules and hwdb installed under the sysroot prefix, so none of the fork's quirks were ever active on the phone.
- deploy: fail loudly when a qmldir names a file the composed tree lacks9:15 a.m. · 2170ba6 · internal Gitea record only
- dial: bind the ring origin instead of assigning it before the surface is sized8:29 a.m. · 53dcb40 · internal Gitea record only
- SouveraineOS10 changes
- task-36: nanoapp loader built and verified; task-34: SSR does not recover the wedge6:35 p.m. · 6c5d39b · internal Gitea record only
- tasks: index 36-40, correct TASK-34's invalid test, add inference tiering task3:49 p.m. · 4287d87 · internal Gitea record only
- device-state §12: manual brightness override is anchors, not a bias3:36 p.m. · b24963a · internal Gitea record only
- task-36: the chre_slpi method table, recovered by disassembly1:43 p.m. · 04831db · internal Gitea record only
- task-36: chrecd already runs CHRE; the gap is three chre_slpi methods10:23 a.m. · 0533f9f · internal Gitea record only
- tasks 37-39: back verb, pill swipe osk swap, audio levels as state9:29 a.m. · 4973393 · internal Gitea record only
- task-13: elmyra nanoapp imports ash*ElmyraFilters; task-36 CHRE host9:00 a.m. · ed21db0 · internal Gitea record only
- task-24: dead band above the letters page was max_rows across layers8:46 a.m. · 78c62a6 · internal Gitea record only
- task-13: PM8998 gpio2 power-source is VIN0 on both stacks; no DT patch fixes excitation8:36 a.m. · ccf02e3 · internal Gitea record only
- task-13: registry and vddio ruled out; pad VIN selection is the open question2:03 a.m. · 3abf45a · internal Gitea record only
- linux-blueline1 change
- arm64: dts: sdm845-google: hog the Active Edge power rail10:19 a.m. · 31eb5aa · internal Gitea record only
PM8998 GPIO 2 gates the MAX11261 strain-gauge supply and nothing raised it from the kernel. Replaces a systemd unit holding the line with gpioset.