Casey Tunturi

July 28, 2026

July 28, 2026

32 public commits · 7 public repos · 303 private commits

Work threads
work14arm642edge-sense2kernelroadmaptasksTASK-43tools
  • Private work 6 repos sealed

    303 commits count toward the day. Names, subjects, and links stay private.

    • 7:28 p.m. · cc65484

      lockprobe replays the boot handoff against a running viewtop without involving sessiond, so the server side is provable on a daily driver with no risk of locking it. Result:

    • 6:20 p.m. · 997f32d

      - kms.rs: libseat + udev + DrmDevice + GBM + GlesRenderer + connector scan, vblank as the frame clock. Single GPU, single panel, no hotplug or leasing — blueline has one soldered DSI panel and the rest is a laptop problem. Compiles and cross-compiles; not yet executed, since running it takes the panel from the live session. First run is the boot test. - viewtop takes --nested or --kms, sharing socket setup and the dispatch loop. - spawn_heartbeat: registers as the live shell and streams directives. Proven on blueline — sessiond answered `refused_by_state — shell authority is already registe...

    • 5:51 p.m. · 73f749e

      viewtop now starts, serves a Wayland socket, and reads the live daemon. On blueline it came up with sessiond's real state: locked, display_active false, dimmed true.

    • 3:14 p.m. · a308f39

      - layers.rs: furniture stacking is a derived total order, not a z-index anyone configures. pill_outranks_dock is a test. INTERFACE-ARCHITECTURE's recurring defect is a documented guarantee the code doesn't enforce, and the pill one was a Lua layerrule in another repo. State gates visibility (Phosh model): locked drops the dock, overview and dial, keeps the pill. - navigation.rs: TASK-37. can_go_back is the state channel; the verb alone is the losing design. Two declared tiers — tier 2 gets XF86Back synthesised and BackOutcome::Synthesised carries no success flag, so tier 2 can't be reported...

    • 2:55 p.m. · 6d1919d

      Read souveraine/src/sessiond/{lock,server}.rs and TASK-02/03/41 — the previous commit's lock model was wrong about the common case.

    • 2:42 p.m. · 3ef1bc4

      - lock.rs: serves the protocol; sessiond keeps the decision, viewtop attests presentation. disclosure_locked() is the union of both answers, fail-closed. Abandoned locks are adoptable by the same uid so a sessiond restart while locked isn't unrecoverable — no unlocked frame across the handover. - gate.rs: replaces denial's secure_session_locked(). Splits routing / disclosure / composition. Composition is never gated by lock; unlock is never an agent verb, unconditionally. - Sensitivity is its own axis, off SurfaceKind — a toplevel can hold personal content. Defaults to Personal. - shell-hos...

    • 8:00 a.m. · d1b7a16

      SessionFacts carried {locked, lock_secure, read_grant} — a shape of our own invention that the daemon never sends. It now matches the device_state reply field for field, so it deserializes straight off the wire and a rename here is a protocol change rather than a refactor: device_state, display_active, dimmed, observed, observed_confidence, sensors_degraded.

    • 1:00 a.m. · d1a9d73

      Ambient, personal, step-up. Grants are bound to an action family, expire on a policy window, and clear on lock. Cannot be minted from a boolean.

    • 12:58 a.m. · e1c93a5

      Compositor sends facts, shell sends intents. The shell is one of several things that can ask and none of them is the authority.

    • 12:49 a.m. · 36b6b2e
    • 12:49 a.m. · c6f74d0

      sessiond-client is tested against the live daemon. No compiled-in verb vocabulary: describe returns the table and callers plan from it. Nothing caches state the protocol owns.

    • 12:47 a.m. · forge event