From c13a15acad409cb6f9dcb17deecbc6af038a9bd8 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 9 Aug 2026 22:11:27 +0000 Subject: [PATCH] Ship: pm2-zulip contract fixes (captain ruling 2026-08-09) --- pm2-self-heal.prose.md | 21 +++++++++++++++------ zulip-health.prose.md | 9 ++++++++- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/pm2-self-heal.prose.md b/pm2-self-heal.prose.md index 343d9f9..b2705bc 100644 --- a/pm2-self-heal.prose.md +++ b/pm2-self-heal.prose.md @@ -2,21 +2,30 @@ kind: responsibility name: pm2-self-heal description: > - Monitors critical PM2 processes (abiba-zulip, abiba-telegram) and - auto-restarts any that are stopped or errored. Logs every action to - the knowledge graph and alerts the owner via Zulip DM on failures. + Monitors critical PM2 processes (abiba-zulip, abiba-telegram, gitea-runner, + spoton-service, zulip-watchdog) and auto-restarts any that are stopped or + errored. Logs every action to the knowledge graph and alerts the owner via + Zulip DM on failures. CRITICAL: Never restart abiba-zulip — it runs this contract. + AS-BUILT 2026-08-09 (captain ruling, ecosystem is authoritative): + gpu-monitor is systemd-managed (gpu-monitor.service) — NOT PM2; + gpu-watchdog decommissioned (function folded into gpu-monitor.service); + gitea-runner KEPT (online in PM2); abiba-zulip KEPT (online 4d+, the + 2026-07-04 'removed/decommissioned' note was stale and is removed). --- ## Maintains - abiba-telegram: { status: "online", uptime: string, restarts: number } -- gpu-watchdog: { status: "online", uptime: string, restarts: number } -- gpu-monitor: { status: "online", uptime: string, restarts: number } +- abiba-zulip: { status: "online", uptime: string, restarts: number } - gitea-runner: { status: "online", uptime: string, restarts: number } +- spoton-service: { status: "online", uptime: string, restarts: number } +- zulip-watchdog: { status: "online", uptime: string, restarts: number } - last_check: timestamp -> **Note (2026-07-04):** `abiba-zulip` removed — Zulip extension decommissioned. +> **Note (2026-07-04, SUPERSEDED 2026-08-09):** `abiba-zulip` remains ONLINE and +> is monitored — the decommission note was stale (process re-added; do not treat +> it as removed). ## Continuity diff --git a/zulip-health.prose.md b/zulip-health.prose.md index 5737799..6173222 100644 --- a/zulip-health.prose.md +++ b/zulip-health.prose.md @@ -199,7 +199,14 @@ Check `platforms.zulip.state`: `connected` ✅ | `disconnected` ❌ | `error` ssh root@ "ps aux | grep 'gateway run' | grep -v grep" ``` -Gateway PID should exist with uptime > 60s. **Dual-gateway detection**: if more than one `gateway run` process is found, the gateway has a collision (typically one `--force` and one `--replace` process). Kill the newer/duplicate process, then restart the remaining gateway via PM2 (`pm2 restart mumuni-zulip`). Check gateway log for "Gateway running with 2 platform(s)" (not 1) to confirm Zulip reloaded. +Gateway PID should exist with uptime > 60s. **Dual-gateway detection**: if more than one `gateway run` process is found, the gateway has a collision (typically one `--force` and one `--replace` process). Kill the newer/duplicate process, then restart the remaining gateway per-agent (parameterized 2026-08-09, captain ruling): + +| Agent | Restart command | Notes | +|-------|-----------------|-------| +| Mumuni (.24) | `pm2 restart abiba-zulip` | Hermes gateway runs under PM2 as `abiba-zulip` | +| Tanko (.122) | `bash /opt/hermes-zulip-plugin/run.sh` (or the agent's systemd/user unit) | Tanko does NOT use PM2 — never run `pm2 restart mumuni-zulip` for Tanko (process does not exist) | + +Check gateway log for "Gateway running with 2 platform(s)" (not 1) to confirm Zulip reloaded. **B3: Heartbeat Verification** -- 2.54.0