patches: retire the queue discipline; the shell was never in the agent's cgroup
This commit is contained in:
parent
6f12fceea9
commit
57e53adac3
1 changed files with 39 additions and 12 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue