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:
parent
44acb11ab5
commit
b56635e0f2
1 changed files with 36 additions and 23 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue