Casey Tunturi

August 10, 2026

August 10, 2026

38 recorded commits · 6 named repos · 13 private repos

Work threads
docs10lens4tasks3shell2fingerprint2work2turn2smithay2
  • Private work 13 private repos

    Activity was recorded across 13 private repos. Names, subjects, counts, and links stay private.

  • SouveraineOS14 changes
    • docs: name x86 and reconcile public body claims
      11:42 p.m. · fff0618 · internal Gitea record only
    • docs: record the public shell redesign
      11:31 p.m. · a02d3a4 · internal Gitea record only
    • docs: correct the front page release record
      11:17 p.m. · 5cf7bbc · internal Gitea record only
    • docs: record the SouveraineOS front page release
      11:09 p.m. · 3840922 · internal Gitea record only
    • docs: record the Souveraine site release
      10:55 p.m. · a1931fd · internal Gitea record only
    • docs: task 66 souveraine.ai overhaul
      10:35 p.m. · dee46a6 · internal Gitea record only
    • docs: name the iPhone boot project
      9:55 p.m. · 00489c9 · internal Gitea record only
    • tasks: 67 — what 6eda491 closed, and what it did not
      8:57 p.m. · 22adbe1 · internal Gitea record only

      §2 closed, §3 built and half-accepted: the split reaches the message and serialises, but no test asserts it and no surface renders it. §1's config change is recorded as mine, not Casey's word. Run 1283 green, r399 shipped to edge and running on the laptop; the phone has not pulled it.

    • docs: define temporary FPC Polkit bridge
      8:46 p.m. · a1c184d · internal Gitea record only
    • docs: set the shared-state authority spine
      8:09 p.m. · 9b54eb4 · internal Gitea record only
    • tasks: 67 — the caching landed blind, and compaction drifted
      7:39 p.m. · f4683a6 · internal Gitea record only

      The config hands the subconscious sliding_window where the doc and the code default both say sliding_reflect, and the memory tool exposed the blind strategy while hiding the safe one.

    • docs: checkpoint device and system state
      5:00 p.m. · 6cc89ef · internal Gitea record only
    • distribution: establish the OS release contract
      4:53 p.m. · d1312cb · internal Gitea record only
    • tasks: 65 — a stalled subconscious wedges the surface
      3:46 p.m. · 287acdf · internal Gitea record only

      Measured once: reply commits and PrimaryComplete fires, then the N+1 pass stops at round 3 of 10 with a fully idle runtime. The pass runs inside run_turn, so tx never drops and the SSE stream never closes. Lead is the todo tool. Stream lifetime is a separate fix.

  • souveraine14 changes
    • shell: offer resume instead of forcing it
      11:04 p.m. · ec87e6a · internal Gitea record only
    • shell: patches queue — agent stages, human applies
      11:04 p.m. · aaea09f · internal Gitea record only

      The composed config is symlinked into the repo and quickshell reloads on write, so an agent editing QML edits the live shell mid-turn. Stage changes as patches instead; the human applies and reloads on their own beat.

    • compaction: target the active conversation, not the oldest one
      10:50 p.m. · ce6741b · internal Gitea record only
    • lens: explicit status guard instead of optional chains
      10:35 p.m. · 28ed6f2 · internal Gitea record only
    • subconscious: a failed pass must not report as a quiet one
      10:27 p.m. · 3175700 · internal Gitea record only

      The Err branch surfaced the same 'no anomalies detected' text as the success path, at Low urgency. A subconscious erroring on every turn was indistinguishable from one noticing nothing. The only record of the real cause was a tracing::warn on a stderr whose socket has no reader.

    • fingerprint-preview: root in Singleton, not QtObject
      9:41 p.m. · 29ec9fe · internal Gitea record only

      The reload killer: FileView under a QtObject root — QtObject has no default property, so the whole service tree failed to compile. Every working service singleton roots in Quickshell's Singleton type.

    • sidebar: the garden's micro-view — Lens service, vault card in the right panel
      9:24 p.m. · cb7dd73 · internal Gitea record only

      The vault card lives where notifications were — header with sync pill (clean/ahead/behind/dirty), today's note entry, five freshest notes, cold start and push rows — over the notification list. Lens.qml owns souveraine-lens the way Face owns the rig: one socket, event lines up, no vault access of its own. Kiyoshi's slash grammar and tool registry are noted for the fuller app; the micro view only opens and plants.

    • polkit: add temporary FPC confirmation
      8:46 p.m. · 658217e · internal Gitea record only
    • lock: add FPC wiring preview
      8:10 p.m. · 902a724 · internal Gitea record only
    • turn: the cache split reaches the message, not just a log line
      7:35 p.m. · 6eda491 · internal Gitea record only

      a10ef5e added the counters and nothing read them — assistant_with_usage had zero callers, so ConversationMessage.usage was always None and the only proof caching worked was a grep. The turn now sums usage across its rounds and commits it with the reply, and the per-round log carries the split on every provider rather than only the Anthropic bridge.

    • providers: the provider follows the model, not the agent
      2:36 p.m. · 30e1c34 · internal Gitea record only

      Subconscious, reflection and archivist each pick a model independently of the primary, then took the primary's provider to run it on. A subconscious on deepseek-v4-flash under a claude-subscription primary was sent to api.anthropic.com asking for a model it has never heard of, so a split like Opus-5 primary with a DeepSeek subconscious could not work at all.

    • turn: keep the reply a raced interjection used to erase
      2:24 p.m. · eee26fc · internal Gitea record only

      A finished text response arriving with a queued interjection was pushed nowhere: not streamed, not added to messages, and overwritten in final_content on the next round. The surface showed nothing and she answered the interjection blind to what she had just said. It now streams, enters history, and is carried into the single commit.

    • claude: log the cache split per call
      1:33 p.m. · dfc89d0 · internal Gitea record only

      A cache hit and a short prompt are indistinguishable from outside; this provider logged nothing per request at all, which is how an uncached bridge went unnoticed across 93 turns.

    • claude: cache the prefix the bridge was re-billing every turn
      1:33 p.m. · a10ef5e · internal Gitea record only

      No cache_control was ever set, so tools, system and the whole transcript were charged in full on every round. Breakpoints now sit on the tail of each stable span; message content is always a block array so the marked tail cannot change the prefix bytes as it moves.

  • souveraine-lens4 changes
    • lens: the micro state — state/open/create ops over the limb
      9:19 p.m. · d0f2fab · internal Gitea record only

      The sidebar asks, the lens answers on the same line protocol: state returns the freshest notes and the git truth (ahead/behind now read from git status -sb); open drives the page by name; create plants a note and refreshes the page. Page gains thin __lens.open/refresh/sync/create wrappers so the shell never speaks page internals.

    • lens: the limb — --ipc socket in, event lines out
      8:30 p.m. · c2830ab · internal Gitea record only

      serve_ipc from the rig's discipline (stale-socket unlink, parent dir created); shell evals run in the page; page events leave as stdout lines the sidebar can hear. The vault stays the one thing with no other readers.

    • new repocreated repo Fimeg/souveraine-lens
      8:12 p.m. · forge event · internal Gitea record only
    • lens: wry mind-graph over a git-backed markdown vault
      8:11 p.m. · 531e7e7 · internal Gitea record only

      vault walker (frontmatter, wikilinks, graph), embedded page with a hand-rolled force layout, ipc bridge with no server connection, autocommit on save, house ci gates.

  • Pixel3Arch3 changes
    • boot: assemble boot.img on the proven pmos chain
      10:35 p.m. · e06aa70 · internal Gitea record only
    • fingerprint: route FPC approvals through Polkit PAM
      8:46 p.m. · f52a57b · internal Gitea record only
    • fingerprint: ship the preview pulse producer
      8:12 p.m. · 5927aa7 · internal Gitea record only
  • souveraine-viewtop3 changes
    • ci: permit rerunning the phone build
      7:32 p.m. · f45f459 · internal Gitea record only
    • smithay: lock the fence-wait revision
      4:39 p.m. · f49af4a · internal Gitea record only
    • smithay: pick up the missing fence wait
      11:39 a.m. · 72608e9 · internal Gitea record only

      build_planes documented a wait it never performed, so with no exportable fence the atomic commit raced the renderer into the scan-out buffer. That is the tearing on the d10: simpledrm has no syncobj, supports_fencing is false, and nothing held the flip while llvmpipe was still writing.

  • smithay2 changes
    • deleted branch Fimeg/smithay
      12:53 p.m. · forge event · internal Gitea record only
    • drm/compositor: wait when there is no native fence
      11:36 a.m. · fee1d42 · internal Gitea record only

      build_planes already documented this: with no exportable fence, or a surface that cannot fence at all, the sync point has to be waited on. It never was, so the atomic commit raced the renderer into the scan-out buffer. Tears on simpledrm + llvmpipe, where supports_fencing is false and nothing held the flip.