Watch
1
0
Fork
You've already forked souveraine
0

patches: 0008/0009 landed; queue is 0001, 0006, 0007

Verified against a running shell rather than a clean load, which immediately
found two faults every prior gate had called clean. Both controls dropped from
0008 recorded as decisions so a later session does not restore them.
This commit is contained in:
Fimeg 2026-08-12 14:54:35 -04:00
commit b56635e0f2

View file

@ -1,7 +1,24 @@
# patches/
> **⚠ 0008 — control-row parity resolved `df11bba`; still needs one load.**
> `0008-agent-surface-owned-message-delegate.patch` swaps the message delegate
> **0008 and 0009 landed `93fe30a` (2026-08-12).** Applied by Casey, reloaded,
> and — for the first time in this lane — *verified against a running shell*.
>
> The load immediately found two faults that every prior gate had called clean
> (`44acb11`): a missing `qs.modules.common.functions` import in `ThinkingCard`
> throwing `ReferenceError: ColorUtils` on every reasoning segment, and
> `sidebar.ai.fontSize` absent from our Config override, so the vendor
> `MessageTextBlock` assigned `undefined` to `font.pixelSize` on every render.
>
> Neither was reachable by lint as it was being run. The lesson is recorded in
> that commit and worth repeating here: **lint the composed tree, not a
> hand-built approximation of it** — a stand-in tests the stand-in. And a
> qmllint run that resolves nothing reports 0 findings in exactly the same
> voice as one that resolves everything.
<details>
<summary>Original 0008 header — kept for the two controls dropped on purpose</summary>
> `0008-agent-surface-owned-message-delegate.patch` swapped the message delegate
> to `modules/souveraine/agent/AgentMessage.qml`. When it was queued, that file
> carried **none** of the vendor's seven controls
> (`ii-base/.../aiChat/AiMessage.qml:196-308`), so applying it would have
@ -32,6 +49,8 @@
> qmllint cannot resolve, proven environmental because `AiChat.qml` — live in
> the running shell — produces the identical failure. **Nothing has loaded it.**
</details>
Staged shell changes that are **not** applied to the tree.
@ -84,8 +103,8 @@ Run it before trusting this list — a queue file is a claim with a shelf life.
git apply --check --reverse "$p" 2>/dev/null && echo "$p LANDED"
done
**Apply order.** 0009 before or with 0008; 0007 last, after the server upgrade.
The rest are independent.
**Apply order.** 0007 last, after the server upgrade. 0001 and 0006 are
independent lanes and can go whenever.
- **0001 — resume offer.** Pending since 2026-08-10. The agent-established hook
*offers* the latest thread instead of silently attaching it; default becomes
@ -114,28 +133,22 @@ The rest are independent.
shim), so it runs under viewtop, fails, and its error text is captured **as
the cursor position** — the probe tested whether the tool was installed, not
whether it answered.
- **0008 — owned message delegate.** Parity resolved by `df11bba`; see the
header. Apply with or after 0009.
- **0009 — speech: make stop actually stop, and re-synthesis actually
re-synthesize.** Three defects that all present as audio piling up and not
being callable back:
- `playProc` ran `sh -c "mpv … || ffplay …"`. A *compound* command means sh
does not exec-replace itself — it forks the player and waits — so
`running = false` SIGTERMs **sh** while the player keeps sounding as an
orphan. Reproduced directly: wrapper died, child survived. Now mpv is
invoked with no shell, so the pid quickshell holds is the pid making noise.
- `resynthesize()` added. `speak()` opens with a cache check keyed on the
text, and re-synthesis is by definition the *same text* — so the one
control that exists for "that came out wrong" was guaranteed to replay the
identical broken audio.
- `synthesizing`/`playing` split out of `speaking`, which could not tell
~11 s of synthesis from audible playback. `speaking` left untouched.
Lint identical before and after — introduced nothing. **No audio has been
played through it.**
## Recently closed
- **0008 — owned message delegate. Landed `93fe30a`, 2026-08-12.** Applied by
Casey and reloaded. The load found two faults no gate had (`44acb11`) — see
the header. Worth keeping: the two controls dropped were *decisions*
(regenerate is impossible on text; there is no in-place edit), so a later
session should not helpfully restore them.
- **0009 — speech: stop actually stops. Landed `93fe30a`, 2026-08-12.**
`sh -c "mpv … || ffplay …"` is a *compound* command, so sh does not
exec-replace itself and SIGTERM killed the wrapper while the player kept
sounding as an orphan — reproduced directly. That was the back-to-back TTS
slam. Shell dropped entirely; the pid held is now the pid making noise.
`resynthesize()` bypasses the cache the old path always hit.
**Still unverified: no audio has been played through it.**
- **0002 — think-fence collision. Retired 2026-08-12, obsolete not abandoned.**
It patched `inThinkBlock` in `services/Ai.qml`; `grep -c inThinkBlock` on
that file now returns **0**. Typed chat segments (0003) made the collision