Both were sub-items, not work units. 01's every step read "after 16.B/C";
22 sourced its own candidates from 19's still-required list and its status
line was "enumerate with Casey at session start".
TASK-26 had two subjects. Yesterday's note closed the proximity-authority
half and read past the other one — evidence-source health, which is what
PAF/slpi.md was actually pointing at. Built now, so both are closed.
TASK-28 gains two measured cases: the reporter/sessiond split-delivery
order, and sessiond restart putting up the fallback PIN surface.
DEVICE-STATE-MACHINE §0: the audit, in the doc rather than a new task file.
Lock shadow copy found and fixed (doctrine §4). Two open: proximity has no
debounce and thrashed 69 transitions in 40min (§9.5 already specifies the fix),
and forensic.jsonl sits on tmpfs — RAM, wiped on reboot, unbounded.
TASK-26 was never written and no longer needs to be: the proximity second
authority is resolved, packaging is TASK-27. Dangling refs in STATE.md,
TASK-25 and TASK-27 now say that instead of pointing at a missing file.
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.
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").
Doctrine: where docs and code disagree, the code is right.
Also records the second pass: lock-before-blank is now an invariant enforced in
the authority, and hypridle's competing listeners are deleted.
fix-dock-fullscreen-detection (superseded) and unified-device-state-deploy
(done 07-25) moved to archive/; pointers to them updated.
Index was missing rows for 21-25 and unify-shell-trees entirely. Statuses
corrected against today: 08 actuating, 15 blocked on slice separation, 17
has no word completion. TASK-26 is cited by STATE.md and TASK-25 but was
never written - noted.
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.
Also recorded: there is no `primary` branch despite ci.yml triggering on it
(public is the de facto release branch, proven by the phone's installed
package matching public's head); kernel.yml's fourth blocker, the
config-blueline move that breaks PKGBUILD:53; and that the archdev aarch64
sysroot was half-updated and silently lies about which ABI a cross build
targeted, which makes every recent cross-built artifact suspect.
- drop 10.10.20.9; it was never a real address. Phone is pixel/172.16.42.1
over USB, 10.10.20.234 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
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.
Corrects the status: b4b30b1 built the enum, the transition guard, the
confidence arithmetic and the forensic log, but nothing drives them - the
daemon never leaves Active, so six of eight states are unreachable outside
tests, and no sensor feeder exists. Notes the two places the code already
diverges from section 4.
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.
And the target is not to make the scripts clients of the state machine. The
machine absorbs them: proximity-while-locked, the DT2W gate and rotation are
device state reactions by definition. Three scripts, two of them reading the
same proximity signal, are three state machines with no forensic log and no
coordination - which is why they land together, not one at a time.
Adds the 07-25 SLPI/hexagonrpcd outage as the concrete argument that
evidence-source health is itself device state.
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.
Also: 08(b) corrected (ChargeType and PercentageTrusted existed on the bus
but reported defaults for days; three fixes needed, only the third moved it),
25 gains the real kernel blockers and the unowned-file inventory, and STATE
no longer claims the kernel ships by pacman.
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.
25 captures the pipeline unification: souveraine's CI is the only one
doing repo-add --sign, so everything else has to be hand-carried to the
phone. Records the phone-side wiring that went live today and the two
pacman traps behind it (DownloadUser vs a custom XferCommand, and the
DisableSandbox* lines that were never real options).
Records what the 2026-07-21/22 sessions actually found and shipped,
so the ledger matches reality:
- TASK-16: A, B, D landed; C (contact card) implemented, phone
acceptance pending; new unit E (history-fill boot amnesia) done.
- TASK-08: shell-side state projection exists; add the maintenance-
lease requirement so a deploy can never race the idle lock again
(root cause of the 19:29 auto-lock-during-deploy crash).
- TASK-09: stale-lock incident — panel/IRQ alive, session-lock
routing stale; capture both in the resume test.
- TASK-14: expand to the Auxo-style running-app surface and an
unconditional Home tap; folds in the GLES OpacityMask and
workspace-ratchet findings.
- TASK-17: pin the iOS-like keyboard target and the Hyprland
key-safety hammer test.
- Mic trace path corrected to its new home.
New: TASK-19 (settings control center), TASK-20 (player video +
agent control), TASK-21 (reboot-to-Android confirmation), TASK-22
(settings/fullscreen tweaks), TASK-23 (culver locked-notification
nudge).
03: today's deep boot investigation — the splash-to-splash flicker is a
DRM-master handoff race on a panel with supportsAsyncCommit:false (56
EBUSY commits); the Hyprland splash text is killed (disable_splash_rendering);
the corner box is an unidentified top-right toast (NOT the error overlay,
which stays); the recovery-mode wedge is documented. The EBUSY handoff
fix is the one real remaining timing bug.
17: stevia OSK + mic key + dictation shipped this session; layout/UX
polish and TTS wiring remain.
The doubled samples were L/R pairs of a stereo client-side upmix of the
mono source; the de-interleaved channel is clean 48k. Capture path has
no fidelity defect — the pin is the one remaining mic defect.
07 rewritten around the working mic-race-fix kernel (f56b1ae08 running):
canonical-tree truth, the sample-duplication defect with measured
evidence, and the cold-boot unpin protocol. 15 is the freeze/doze/
RTC-wakeup design carved from today's idle-burn numbers.