Watch
1
0
Fork
You've already forked souveraine
0
souveraine/surfaces/quickshell/patches
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Fimeg e784fe48a3 patches: queue 0006, step-up authenticates through PAM
Authored in a parallel session (Rook, Codex side) on 2026-08-12; committed
here because untracked is the fragile state, not because authorship is mine.
Finding stands on its own: StepUpAuth called souveraine-pam-auth, a binary
never written, and fell back to pkcheck against an action never shipped, so
every grant request was silently denied. Unapplied, unloaded.
2026-08-12 12:20:11 -04:00
..
0001-resume-offer.patch shell: patches queue — agent stages, human applies 2026-08-10 23:04:59 -04:00
0002-think-fence-collision.patch patches: queue think-fence collision fix 2026-08-11 08:10:39 -04:00
0003-typed-chat-segments-tool-cards.patch patches: queue typed chat segments 2026-08-11 08:56:08 -04:00
0004-shell-keep-typed-segments-QML-compatible.patch patches: queue QML compatibility fix 2026-08-11 09:37:09 -04:00
0006-stepup-authenticate-through-pam.patch patches: queue 0006, step-up authenticates through PAM 2026-08-12 12:20:11 -04:00
README.md patches: the queue is 0001-0004, say so 2026-08-12 09:24:06 -04:00

patches/

Staged shell changes that are not applied to the tree.

Why this directory exists

~/.config/quickshell/souveraine/*.qml are symlinks into this repo, and quickshell reloads on write. So editing a file here edits the running shell, immediately. When the agent is the one editing, that means an edit can take down the process the agent's own turn is running inside — and a shell that fails to compile does not come back on its own (see 29ec9fe: one bad root type failed the whole qs.services module).

So the rule is: the agent writes patches, the human applies them. The reload happens on a human's beat, when nothing is in flight, with a known-good tree one git checkout away.

Applying

cd ~/Projects/souveraine
git am surfaces/quickshell/patches/0001-....patch
# then reload the shell yourself and watch it come up

Verify before trusting:

cd surfaces/quickshell
./deploy.sh
timeout 40 qs -c souveraine 2>&1 | grep -E "ERROR|Configuration Loaded"

If it does not come up, git reset --hard HEAD~1 and the patch is just a file again.

Discipline

  • One patch, one behaviour. Reviewable in a sitting.
  • The patch's commit message says what it changes and what it deliberately leaves alone.
  • A patch is untested against a running shell unless its notes say otherwise. Say which: verified / reasoned / untested.
  • Applied patches get deleted from this directory in the same commit that applies them. This directory is a queue, not an archive — git keeps history.

In the queue

00010004 are still on disk and still unapplied — resume-offer, think-fence collision, typed chat segments, and the QML-compat follow-up. They carry their own notes in their commit messages; none has been described here. Anything applied or retired is deleted from this directory by design.

Recently closed

  • 0005 — config: never store a null option. Applied and committed as f7e0e51. Null-valued options serialised into config.json and segfaulted JsonAdapter::deserializeRec on the next launch — the session that wrote the option ran fine, every launch after it died ~10 s in. Replaced with tristate strings (auto/on/off), booleans still honoured. Verified live: shell loads clean, no nulls written back.
  • 0005 (earlier) — mount the agent island. Retired by 013a06a; the island left the bar to sit beside chat (2179b62). The number was reused.