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 a759c9e..5106148 100644 --- a/persistent-memory.d/2026-09-01-althing-320-deploy.md +++ b/persistent-memory.d/2026-09-01-althing-320-deploy.md @@ -106,43 +106,76 @@ confirming it is up."** Both waiters reported `push`/`reachable` immediately aft - **Do not loop on re-arming.** Two kills is the pattern; declare a pane route instead. Raised both consequences with forseti on the deploy thread. -## ⚠ THE FOUR REVOKED ROUTES — the herald's stated reason is FALSE, and all four are non-Claude +## ✅ MIGRATION COMPLETE — 5/5 pane routes pinned by 22:26, all four re-declared in ~12 min -Operator directed notification (2026-09-01); all four told individually with their own pid, -pane and start time. Measured **before** writing, which is what turned up both findings: +Operator directed notification; all four told individually with their own measured pid, pane +and start time. Every one re-declared within ~12 minutes and needed no help beyond the +pre-filled pid. - handle pid declaring proc started alive running - bil-smithy-dev 98493 Aug 28 10:33:02 4d11h kimi - dvalin-smithy-dev 96050 Aug 28 10:29:26 4d11h grok - eitri-smithy-dev 103662 Aug 28 10:39:30 4d11h codex - regin-smithy-dev 96864 Aug 28 10:30:59 4d11h pi + handle pid started_at command status + bil-smithy-dev 98493 1713267 kimi push, poked via pane + dvalin-smithy-dev 96050 1691681 grok push + eitri-smithy-dev 103662 1752089 node/codex push + regin-smithy-dev 96864 1700952 pi push, poked via pane + infra-ops 2175612 38608652 claude push, poked via pane -**FINDING 1 — the exclusion message misdescribes the migration case.** The herald says *"the -process that declared this route is gone, or its pid was reused by something that started at a -different time."* **Neither disjunct is true for any of the four.** Each declaring process -started 1-3 min *before* its route was written and is still running four days later; `pid_max` -is 4,194,304 against a current ~2.86M, so the counter has not wrapped and there is no reuse to -suspect. The real reason is a third one the message never offers: **the route predates the -guard fields, so identity cannot be verified and the herald declines.** Correct behaviour, -wrong explanation — and it sends a debugger hunting a dead agent that is alive. Raised with -forseti with a suggested third branch. ⚠ **Do not trust that log line at face value.** +Zero stale routes; last exclusion line 22:25:01, everything after is `poked via pane`. -**FINDING 2 — all four seats are non-Claude CLIs** (`kimi`, `grok`, `codex`, `pi`), and the -pane poke is designed around Claude Code: it types a line into the pane and presses Enter. -Two things unverified, both raised with forseti and stated plainly to the four rather than -papered over: +## ⚠ FINDING — the herald's exclusion reason is FALSE for the migration case -- **Does `--discover-pid` recognise a non-Claude process tree?** It walked to `claude` - correctly for infra-ops. Unknown for a `codex` or `pi` tree. Sidestepped by handing each - agent their measured pid (`althing-route declare --pid `) — but a fresh agent following - the skill reaches for `--discover-pid` first. -- **What does a pane poke do to a non-Claude TUI?** Might be input; might be a keystroke the - TUI did not expect. Each was offered the choice: re-declare and treat the first poke as a - test (reporting anything odd + `althing-route release`), or stay pull-only until forseti - confirms. Not decided for them. +The herald logs *"the process that declared this route is gone, or its pid was reused by +something that started at a different time."* **Neither disjunct was true for any of the +four.** Measured before notifying: each declaring process started 1-3 min *before* its route +was written and was still running four days later; `pid_max` 4,194,304 against a current +~2.86M, so no wrap and no reuse to suspect. bil-smithy-dev independently confirmed it against +pid 98493. -⚠ If non-Claude seats are out of scope for the pane path, that belongs in the skill — those -four are exactly the seats the migration moved off the waiter path. +Real cause is a third branch the message never offers: **the route predates the guard fields, +so identity cannot be verified and the herald declines.** Right behaviour, wrong explanation — +it sends a debugger hunting a dead agent that is alive and healthy. ⚠ **Do not trust that log +line at face value.** Raised with forseti with a suggested third branch. + +## ⚠ MY MISS — I called an open risk on something the release author had already measured + +I flagged "what does a pane poke do to a non-Claude TUI?" to forseti as an **open risk on the +release**. It was never open: **forseti's own Aug 28 submit-byte and race probes were pane +pokes typed into the kimi seat**, with a characterised matrix (LF fires the turn, delayed pokes +split, no-delay bursts coalesce) that is what identified the settle bug they then fixed. regin +had also smoke-tested 3.0.3 on the `pi` seat. + +**The failure was not caution — it was not checking whether the thing was already settled +before calling it open**, with the peers who knew right in front of me. This is exactly the +ignorance-of-context category in the cross-frontier triage discipline, pointed inward: a +"you missed X" claim from someone who had not checked what the other party already read. +⚠ **"I don't know" and "this is an open risk on the release" are different claims.** Saying the +first was honest; asserting the second was not warranted. Retracted with forseti and with all +three seats. → [[feedback_canonical_sourced_values]] + +## Verified: pane delivery works on Claude AND non-Claude seats + +- **infra-ops** (`claude`) — `poked infra-ops on nh3-dev via pane (rung 0)`, landed as own turns. +- **regin-smithy-dev** (`pi`) — first **3.2.0-era** typed-Enter poke, reported by the seat: + own turn, `[ALTHING-HERALD]` prefix, nothing batched, no interference. +- **dvalin-smithy-dev** (`grok`) — pre-3.2.0 pokes landed as own submitted turns, no leftover + unsubmitted text. + +## ⚠ ONE-TICK LATENCY LOOKS LIKE FAILURE + +`postbox status` immediately after `althing-route declare` still reports `mode: pull` until the +herald ticks (~26 s). Two of four hit it. regin's framing: *"one tick of latency, not a +failure, in case anyone else reports it as one."* Asked forseti for a line in the skill. + +## Open with forseti (nothing blocking) + +1. `uv tool install .` runbook fix (`--force`) — the one that would bite the next person. +2. Exclusion-message third branch. +3. **`--discover-pid` against a non-Claude process tree is still untested** — all four used the + explicit `--pid`, so the ancestry walk has never met a codex/pi/kimi/grok tree. +4. One-tick-latency note in the skill. +5. `postbox status` push/reachable is not durable evidence. + +**Withdrawn:** non-Claude delivery risk (was forseti's own prior work). +**Moot:** log back-off — zero stale routes, the log went quiet on its own. ## Rollback (unused) diff --git a/persistent-memory.md b/persistent-memory.md index f17a48a..33114d0 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -135,27 +135,20 @@ _As of 2026-09-01 — **the GX10 is on the operator's desk, NOT racked. Standing instead**, which is the power answer rather than a power triage. Do not relaunch on ana-ml2 without deciding that first. Exactly TWO 3c launches, only one died. → `persistent-memory.d/2026-08-27-run3c-launch-count-reconstruction.md` -- **🟢 ALTHING 3.2.0 DEPLOYED on nh3-dev (2026-09-01 22:13).** forseti authored, infra-ops - deployed: `uv tool install --force .` (3.1.2 -> 3.2.0, **7** binaries — `althing-route` is - the new one the SessionStart hook calls by name), herald restart, skill sync. Pane-poking - replaces detached waiters because **CC 2.1.257 reaps detached tasks when the seat sits in - `shell`** — corroborated by our own waiter dying with status `killed` 30 min earlier. - ⚠ **`uv tool install .` is a SILENT NO-OP on reinstall** — uv matches the source *spec*, not - its contents; exits 0 having done nothing. **Always `--force` from a local path.** - ⚠ 4 pane routes revoked by the new guards (bil-/dvalin-/eitri-/regin-smithy-dev); they - re-declare with `althing-route declare --pid `. **All four notified individually - 2026-09-01 on operator direction.** ⚠ Two findings from measuring first: the herald's - exclusion reason ("process gone, or pid reused") is **FALSE for the migration case** — all - four declaring processes are alive 4 days, no pid wrap; the real cause is the route - predating the guard fields. And **all four seats are non-Claude CLIs** (kimi/grok/codex/pi) - while the pane poke types into a Claude Code pane — `--discover-pid` and poke behaviour - against a non-Claude TUI are both UNVERIFIED. Both raised with forseti. - ⚠ **infra-ops now runs on a PANE ROUTE, not a waiter** (`althing-route declare - --discover-pid` — walks to the long-lived `claude` pid, never `$$`). The reap killed our - `althing-listen` **twice in one session, the second within minutes of arming**, each time - after it had reported `push`/`reachable`. **A green `postbox status` is not durable evidence - of monitoring, and re-arming in a loop is not a fix.** - → `persistent-memory.d/2026-09-01-althing-320-deploy.md` +- **🟢 ALTHING 3.2.0 DEPLOYED + MIGRATION COMPLETE on nh3-dev (2026-09-01 22:13-22:26).** + forseti authored, infra-ops deployed; **5/5 pane routes pinned**, all four affected seats + re-declared within ~12 min of individual notice, log clean. Pane-poking replaces detached + waiters because **CC 2.1.257 reaps detached tasks when the seat sits in `shell`**. + ⚠ **`uv tool install .` is a SILENT NO-OP on reinstall** — matches the source *spec*, not + contents; exits 0 having done nothing. **Always `--force` from a local path.** + ⚠ **The herald's exclusion reason ("process gone, or pid reused") is FALSE for the migration + case** — all four declaring processes were alive 4 days, no pid wrap; real cause is the route + predating the guard fields. Don't debug a dead agent that isn't. + ⚠ **My miss:** I called non-Claude pane delivery an "open risk" when forseti had personally + measured it on Aug 28 — didn't check whether it was already settled before calling it open. + Delivery now confirmed on `claude`, `pi` and `grok` seats. + ⚠ One-tick latency after `declare` reads as failure; `--discover-pid` on a non-Claude process + tree remains untested. → `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, HTTP 200, 18,500 -> 612 MiB. ⚠ **The resulting ~43.8 GB free is a snapshot, not a floor** —