COMMS: two watchers, one event — re-arming without stopping the old one

Mine rather than the mechanism's, and recorded because the mechanism invites it:
having acted on a fire, I armed a fresh watcher while the previous one was still
alive. Two watchers on one branch produce two notifications for one event, and the
second is indistinguishable from a real second push.

It compounds the self-trigger fault above — the agent pushes, both fire, neither has
anything to report.

The discipline is dull: stop the watcher before you push, re-arm after. A pgrep
before arming costs nothing and catches it.

For Command HQ it is a hazard rather than tidiness. A commander armed twice is two
processes doing the same work behind one card.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-18 07:37:18 +01:00
co-authored by Claude Opus 5
parent 1c1c669029
commit ff88c93b80
+15
View File
@@ -56,6 +56,21 @@ What works: re-baseline from **local HEAD** after any push of your own, which is
`git pull` + `git rev-parse HEAD` naturally gives you. Worth stating in the preamble as a rule for any
watcher whose subject the agent also writes to, because the failure looks exactly like a real event.
## 3b. Re-arming without stopping the old one leaves two watchers
Mine, not the mechanism's, and worth recording because the mechanism invites it. Having acted on a
fire, I armed a fresh watcher while the previous one was still alive — the old one had fired but its
process had not been reaped yet. Two watchers on the same branch then produce two notifications for one
event, and the second looks exactly like a real second push.
It compounds §3: the agent pushes, both watchers fire, and neither has anything to report.
The discipline that works is dull and reliable: **stop the watcher before you push, re-arm after.** Not
"re-arm when convenient". A `pgrep` for the job before arming a new one costs nothing and catches it.
For Command HQ this is a real hazard rather than a tidiness point — a commander that has been
accidentally armed twice is two processes doing the same work, and the grid would show one card.
## 4. `timeout` is not available, and the preamble insists on it
Rule 6 says *"`timeout` every network call, or a hung one leaves it alive and blind."* Correct in