memory: snapshot — never arm a waiter on a pane-routed seat
The /althing:monitor slash command is a separate artifact from the canonical skill and sync_skill.sh does not touch it. It sits at plugin version 0.0.1 with pre-3.2.0 text and zero mentions of pane routes, while the canonical skill it should mirror is at 3.2.2. That makes it active harm rather than stale documentation. The canonical precedence rule is that a live waiter wins over a pane entry, so an agent on a healthy pane route who follows the command verbatim demotes itself back onto the FIFO path the harness reaps -- the path that died twice on this seat tonight. The command cannot warn about it because it predates the problem, and every Claude Code seat reaches for the slash command first because it is the discoverable surface. Declined to arm on this seat and left the route intact. Reported to forseti with a recommendation that althing-listen refuse to arm when a pane route exists for the handle, since a binary enforcing the documented precedence beats a doc that relies on a reader noticing. Also cleared a stale wake-listener lock holding a dead pid, and recorded why it matters: the next althing-listen seeing it exits 3, whose documented response is do not drain and do not re-arm. A stale lock turns a reap into a permanent monitoring outage that reports itself as healthy.
This commit is contained in:
@@ -356,6 +356,36 @@ Write-without-Enter beats the status quo for **neither**: for bil it removes the
|
||||
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.
|
||||
|
||||
## ⚠⚠ DO NOT ARM `althing-listen` ON A PANE-ROUTED SEAT — `/althing:monitor` IS STALE
|
||||
|
||||
The `/althing:monitor` slash command is a **different artifact from the canonical skill**, and
|
||||
`scripts/sync_skill.sh` does NOT cover it:
|
||||
|
||||
canonical althing/skills/althing/SKILL.md -> 3.2.2, correct, synced
|
||||
plugin cmd ~/.claude/plugins/cache/althing/althing/0.0.1/commands/monitor.md
|
||||
-> pre-3.2.0 text, ZERO occurrences of "pane", never synced
|
||||
|
||||
⚠ **Following it verbatim on a pane-routed seat is ACTIVE HARM, not stale docs.** The canonical
|
||||
skill's precedence rule: *"**A live waiter wins.** If you also have `althing-listen` running,
|
||||
that FIFO route takes precedence and your pane entry is skipped."* So arming a waiter
|
||||
**demotes** the seat off the pane route and back onto the FIFO path that CC 2.1.257 reaps —
|
||||
the path that died **twice in one session** here. The command does not warn; it predates the
|
||||
problem. **Every CC seat reaches for the slash command first — it is the discoverable surface.**
|
||||
|
||||
**On this seat: declined to arm, route left intact.** Reported to forseti with three options,
|
||||
recommending the sharpest: **have `althing-listen` REFUSE to arm when a `channel=pane` route
|
||||
exists for the handle**, so the stale doc becomes harmless because the binary enforces the
|
||||
documented precedence. The doc-only fixes rely on a reader noticing.
|
||||
|
||||
## ⚠ A STALE WAITER LOCK IS A SILENT PERMANENT OUTAGE THAT REPORTS HEALTHY
|
||||
|
||||
`~/.althing/wake-listener-<handle>.lock` survived the waiter's reap (held dead pid 2854412 from
|
||||
22:16). A future `althing-listen` seeing it returns **exit 3 = "a waiter is already running"**,
|
||||
whose documented response is *"do NOT drain, do NOT re-arm"*. So a stale lock converts a reap
|
||||
into a **permanent monitoring outage that looks like correct behaviour.** Removed here (pid
|
||||
verified dead, own handle, literal path). Suggested to forseti that the waiter clear a lock
|
||||
whose pid is dead rather than trusting the file.
|
||||
|
||||
## Rollback (unused)
|
||||
|
||||
`uv tool install althing-core==3.1.2` restores the six binaries; the SessionStart hook returns
|
||||
|
||||
Reference in New Issue
Block a user