From 12006d287af2179dedc92db17d7434cbb617d45d Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Tue, 1 Sep 2026 22:52:35 -0700 Subject: [PATCH] =?UTF-8?q?memory:=20snapshot=20=E2=80=94=20althing=203.2.?= =?UTF-8?q?2=20deployed;=20discover-pid=20was=20a=20bug,=20not=20an=20unkn?= =?UTF-8?q?own?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four of the five items I raised are closed and tagged. The one that matters most: --discover-pid matched comm == "claude", which means kimi, grok, codex and pi would each have walked to the multiplexer and refused. Four of five pane seats could never have used it. It now matches the pane's own command, which zellij already reports and guard 1 already compares against, so discovery and the guard read one string. Recording a second miss of my own alongside it. I handed all four seats explicit measured pids because I suspected the ancestry walk was broken, then reported the suspicion as an open question rather than spending the same twenty seconds to settle it, with four live non-Claude seats in front of me. That pairs with the earlier miss in the opposite direction: asserting an open risk on something the author had already measured. Same root -- having the means to settle a question and reporting it as open instead. Also keeping forseti's two dead ends as negative results, because they are the obvious things to propose next and both fail: locating a TUI's input box in a screen dump needs per-TUI parsing, and diffing two dumps to detect typing refuses every poke forever, because status bars carry live token counts and clocks so consecutive dumps differ on an idle pane. The kimi/pi coverage gap is deliberately unfixed and now sits with the operator, with a recommendation to leave it per-seat. --- .../2026-09-01-althing-320-deploy.md | 62 +++++++++++++++++++ persistent-memory.md | 6 ++ 2 files changed, 68 insertions(+) diff --git a/persistent-memory.d/2026-09-01-althing-320-deploy.md b/persistent-memory.d/2026-09-01-althing-320-deploy.md index f1632ac..0dba47d 100644 --- a/persistent-memory.d/2026-09-01-althing-320-deploy.md +++ b/persistent-memory.d/2026-09-01-althing-320-deploy.md @@ -294,6 +294,68 @@ on the first observed stapling. Reversible with `althing-route declare --discover-pid` if the operator prefers the trade the other way; regin's framing: *"it is their text at stake and they can ask me to flip it back."* +## ✅ 3.2.2 DEPLOYED 22:51 (`c4ce947`) — four of five open items closed + + 22:51:xx uv tool install --force . 3.2.1 -> 3.2.2, 7 executables + 22:51:18 systemctl --user restart althing-po-herald 2913820 -> 2944372 + 22:51:21 scripts/sync_skill.sh --check clean + +1. **`--discover-pid` — FIXED, and it was a BUG, not an unknown.** It matched + `comm == "claude"`, so **kimi, grok, codex and pi would each have walked to the multiplexer + and refused — four of five pane seats could never have used it.** Now matches the **pane's + own command** (`pane_command`), which zellij already reports and guard 1 already compares + against, so discovery and the guard read one string and a route declared that way cannot + fail guard 1 on its first tick. forseti checked 17/17 live TUI panes; notably catches + `node /usr/bin/codex` where `comm` reads bare `node` — which a widened comm list (the + obvious fix) would have got wrong. Ancestry walk retained because 12 panes report an + identical `claude ...`, so a global /proc search is ambiguous by construction. +2. **Exclusion message — FIXED as a message bug, split not softened.** DEAD covers four facts, + all four were rendered as "gone, or pid reused". Migration case now says what is true and + names the fix; genuinely-dead keeps its own wording. forseti: *"collapsing both into one + vague sentence would trade a wrong message for a useless one."* ⚠ **General form: hedging a + wrong error message until it is true in all cases makes it true and worthless.** +3. **`uv tool install --force`** now in the runbook and althing's CLAUDE.md, beside the + editable-install warning it rhymes with. +4. **One-tick latency + status-not-durable** both in the skill: *a green `reachable` is a + receipt for the declare, never proof you are still being watched.* + +Count correction accepted: 8 fifo, not 12. + +## ⚠ MY SECOND MISS OF THE NIGHT — I FILED A SUSPICION INSTEAD OF CLOSING IT + +forseti generously framed my measured-pid workaround as the reason the `--discover-pid` bug +"looked like an unknown". Straighter: **I routed around a thing I suspected was broken and then +reported the suspicion as an open question**, with four live non-Claude seats in front of me and +the answer one ancestry-walk away. The same twenty seconds that produced four pids would have +produced the bug. + +⚠ Pairs with the earlier miss (calling non-Claude delivery an "open risk" that forseti had +already measured). **Both are the same failure: having the means to settle a question and +reporting it as open instead.** Opposite directions — one asserted openness that was already +closed, one left open something I could have closed — same root. + +## 🔵 OPERATOR DECISION PENDING — the kimi/pi seats guard 4 cannot cover + +forseti deliberately did NOT fix this and escalated it: *"That trades one peer's delivery +against another's safety on seats that are not mine."* Their dead-ends, worth keeping as +negative results: + +- `dump-screen` gives visible pane content, but locating the input box needs **per-TUI + parsing** — exactly the hardcoding the pinned baseline exists to avoid. +- **Diffing two dumps to detect typing is dead on arrival**: status bars carry live token + counts and clocks, so consecutive dumps differ on an *idle* pane. It would refuse every poke + forever. + +Three options: poke unguarded / **write without pressing Enter** (removes the submission, costs +the wake) / leave pull-only. + +**infra-ops recommended LEAVING IT PER-SEAT (status quo).** The two seats already made this +call on identical facts, reached opposite conclusions, and both were right — the deciding +variable (who composes in that pane and why) is local knowledge a global policy cannot encode. +Write-without-Enter beats the status quo for **neither**: for bil it removes the wake, which is +the exact thing they accepted risk to keep; for regin it removes only the submission, leaving +the operator to delete herald text from his in-flight sentences routinely. + ## Rollback (unused) `uv tool install althing-core==3.1.2` restores the six binaries; the SessionStart hook returns diff --git a/persistent-memory.md b/persistent-memory.md index 7bf4b77..2ebc159 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -163,6 +163,12 @@ _As of 2026-09-01 — **the GX10 is on the operator's desk, NOT racked. Standing way would be wrong for one of them. ⚠ **Path to closing the hole (regin's):** a moment-check reading pane CONTENT (input-line length) rather than cursor COLUMN would cover pi/kimi — column is a proxy, empty-input-line is the real predicate. + ✅ **3.2.2 deployed 22:51** — closes 4 of 5: `--discover-pid` was a **BUG not an unknown** + (matched `comm=="claude"`, so 4 of 5 pane seats could never have used it; now matches + `pane_command`), exclusion message split rather than softened, `--force` in the runbook, + latency + status-not-durable in the skill. 🔵 **PENDING OPERATOR:** the kimi/pi seats guard 4 + cannot cover — poke unguarded / write-without-Enter / pull-only. **Recommended per-seat + status quo**; write-without-Enter beats it for neither seat. → `persistent-memory.d/2026-09-01-althing-320-deploy.md` - **✅ A6000 window CLOSED 2026-09-01 — operator freed ComfyUI's VRAM instead of anyone stopping it.** ⚠ It was a **model unload, not a stop**: `comfyui` still up 8 days, same pid,