PR Pipeline — Authorize → Validate → Review → Merge / auth (pull_request) Successful in 4s
PR Pipeline — Authorize → Validate → Review → Merge / validate (pull_request) Successful in 1s
PR Pipeline — Authorize → Validate → Review → Merge / lint (pull_request) Successful in 1s
PR Pipeline — Authorize → Validate → Review → Merge / ai-review (pull_request) Successful in 1s
PR Pipeline — Authorize → Validate → Review → Merge / gate (pull_request) Successful in 1s
Tanko migrated from Hermes to DSH (DeepSeek Harness) on 2026-08-27. Update all records that described tanko as a Hermes agent / Hermes runtime: - infra-control: CT 112 tanko platform Hermes -> DSH - zulip-health / zulip-self-heal / zulip-mention-reliability / pi-approval: tanko is on DSH, mumuni remains on Hermes - memory-audit-maintenance: exclude tanko from Hermes roster (uses DSH-native memory) - hermes-config-template / hermes-agent-baseline: remove tanko from Hermes roster, keep LiteLLM key alias 'tanko' - hermes-zulip-plugin / hermes-zulip-restore / build-zulip-plugin: tanko excluded - infrastructure-maintenance: gateways check no longer probes Hermes on tanko CT112 - scripts/daily-infra-report.py: fix CT-ID regression (CT 122->112), report tanko as DSH - scripts/zulip-monitor.sh: stop probing tanko's retired Hermes gateway - scripts/agent-health-check.py: skip Hermes gateway checks for tanko (runtime=dsh) - scripts/prose-auth-check.sh + AGENTS.md: authorize tanko/tanko-bot for its own records Tanko remains CT 112 at 192.168.68.122; infrastructure facts unchanged. Dated/incident records (run logs, migration logs) left intact as history.
3.1 KiB
3.1 KiB
kind, name, status, description
| kind | name | status | description |
|---|---|---|---|
| responsibility | zulip-mention-reliability | retired | RETIRED 2026-07-04 — Zulip extension decommissioned. Abiba now operates exclusively through Telegram (@AbibaBot). This contract is kept for historical reference only. |
⚠️ RETIRED — The pi Zulip extension (
~/.pi/agent/extensions/zulip/) and PM2 process (abiba-zulip) have been decommissioned. All mention/reliability monitoring now happens through Telegram. Agents (Mumuni on Hermes, Tanko on DSH) and Agent Zero (kagentz) continue to use Zulip.
Maintains
-
mention_response_rate: number — % of @mentions that get a response (target: >95%)
-
last_test_result: "pass" | "fail" | "degraded"
-
known_failure_modes: array — History of what went wrong and how it was fixed
-
queue_health: "healthy" | "expired" | "reconnecting"
Postconditions
- test_mention_gets_response == true — Send @Abiba Bot test, confirm response within 30s
- stream_subscription_active == true — Bot is subscribed to #agent-hub and #general chat
- queue_active == true — PM2's event queue is registered and polling
- no_echo_loop == true — Bot doesn't respond to its own messages
- dm_always_works == true — DMs still respond even if streams are broken
Known Failure Modes (from History)
| Failure | Root Cause | Fix |
|---|---|---|
| No stream events | Bot had 0 stream subscriptions | Subscribe via API |
| No @mention detection | botUserId was null (register endpoint doesn't return it) | Fetch from /api/v1/users/me |
| No stream events | zulip-js library sends multipart/form-data instead of form-urlencoded | Use URLSearchParams directly |
| Double responses | Both TUI and PM2 loaded the extension | ZULIP_EXTENSION_ACTIVE guard |
Remediation Rules
Rule 1: Queue Expired
- Detect: Poll returns BAD_EVENT_QUEUE_ID
- Fix:
pm2 restart abiba-zulip - Verify: Check logs for "Connected, queue:"
Rule 2: Subscription Missing
- Detect:
GET /api/v1/users/me/subscriptionsreturns 0 for #agent-hub - Fix: Subscribe via
POST /api/v1/users/me/subscriptions - Verify: Re-check subscriptions
Rule 3: Extension Crashed
- Detect: PM2 status shows "errored" for abiba-zulip
- Fix:
pm2 restart abiba-zulip - Escalate: If restarts >5 in last hour, alert user
Rule 4: No Response to Test Mention
- Detect: Send test @mention, wait 30s, check if response appeared
- Fix: Run diagnostics (check queue, check code, check logs)
- Log: Record failure mode as new entry in Known Failure Modes
Continuity
- On user report: User says "you didn't respond" → run diagnostic
- On test failure: Test mention fails → run remediation
- Retrospective: Every 6 hours — send a test @mention to self-verify
- On PM2 restart: Always run a self-test after restart
Execution
- Self-test: Send
@**Abiba Bot** _selftest_in #agent-hub, wait for response - If no response in 30s: Run diagnostics
- Diagnose: Check queue, subscriptions, PM2 status, logs
- Fix: Apply matching remediation rule
- Retest: Try again
- Log: Record success or new failure mode
- Report: DM user only if escalation needed