Skip to content

Reference daily canary

Daily smoke test that catches forge regressions BEFORE Justin hits them manually. Runs at 06:00 every morning. Silent on pass; pushes a critical notify on any failure.

Files

  • forge/scripts/forge_canary.py — implementation
  • ~/.config/systemd/user/forge-canary.{service,timer} — user-mode systemd
  • forge/logs/canary.log — runtime log

Checks

  1. spawn-canaryclaude -p "ok" boots and replies within 120s. Catches plugin breakage, auth issues, MCP backlog, ABI mismatches.
  2. bot-canaryforge-lifeos-coordinator and forge-remote-bridge services are active AND have log activity in last 10 min.
  3. reaper-canary — runs the reaper's classification logic in dry-run. Fails if any session with bridgeSessionId set would be classified as orphan (false-positive sentinel).

On any failure: forge_notify.sh critical "Canary failed (N/3)" "<details>".

Why this exists

Today's three real failures (coordinator EROFS, context-mode ABI mismatch, reaper false positives) all could've been caught by a smoke test the morning they appeared. Running it at 06:00 means Justin sees breakage in his morning notifications before he tries to use the broken thing.

Manual tick

systemctl --user start forge-canary.service
tail /home/justinwieb/forge/logs/canary.log

Enable (one-time, from unrestricted shell)

loginctl enable-linger justinwieb
systemctl --user daemon-reload
systemctl --user enable --now forge-canary.timer