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,