Watch
1
0
Fork
You've already forked souveraine
0

patches: retire the queue discipline; the shell was never in the agent's cgroup

This commit is contained in:
Fimeg 2026-08-12 20:12:12 -04:00
commit 57e53adac3

View file

@ -54,18 +54,45 @@
Staged shell changes that are **not** applied to the tree.
## Why this directory exists
## Why this directory existed — and why it is being wound down
`~/.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).
> **Retired 2026-08-12.** The premise below was measured and found false. New
> shell work is edited directly; see *Direct edits* at the foot of this file.
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.
The original rule was: *editing a symlinked file edits the running shell, so an
edit can take down the process the agent's own turn is running inside.*
**It cannot.** Measured twice on 2026-08-12:
qs 232867 /user@1000.service/kitty-20961-2.scope
me 442470 /user@1000.service/app.slice/souveraine.service
Separate cgroups. The shell is parented to the terminal it was launched from,
not to `souveraine.service`. On 2026-08-12 patches 0007, 0010 and 0011 were
applied *directly to the live symlinked files* while an agent turn was in
flight; the shell reloaded and kept running, PID unchanged, for five hours
afterwards.
What remains true is smaller: a shell that fails to compile does not come back
on its own (29ec9fe — one bad root type failed the whole `qs.services` module).
That costs **Casey his bar**, not the agent its turn, and it is one
`git checkout` from repaired. It is a reason to *verify*, not a reason to
*queue*.
## Direct edits — the discipline that replaces the queue
1. **Commit before the edit.** Rollback is `git checkout <file> && ./deploy.sh`.
2. **Lint the composed tree**, never a hand-built stand-in
(`/usr/lib/qt6/bin/qmllint`, resolved against `~/.config/quickshell/`).
A run that resolves nothing reports 0 findings in the same voice as one that
resolves everything.
3. **Scan the shell log after the reload**
`/tmp/souveraine-shell.log`, for `Error|error:|Unable to assign|ReferenceError`.
This is the step that was missing all along: on 2026-08-12 the shell had been
throwing `Cannot assign [undefined] to int` on *every turn for two and a half
hours* and nobody read the file.
4. **Confirm it is still alive ~10s after "Configuration Loaded."** A load is
not a pass — the null-config crash loads clean and dies ten seconds later.
## Applying