docs: update n8n handoff - all 6 implementation items completed

This commit is contained in:
William Valentin
2026-05-13 14:45:01 -07:00
parent 62a1f57c1f
commit 8544267842
@@ -14,13 +14,16 @@ related: [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automatio
n8n is running on `n8n-agent` at `http://127.0.0.1:18808`.
Last verified on 2026-05-13:
Last verified on 2026-05-13 (evening):
- Container: `n8n-agent` running and healthy.
- Health endpoint: `GET /healthz` returns `{"status":"ok"}`.
- Workflow export: `n8n export:workflow --all` succeeds.
- Active workflows: 11.
- Active workflows: 12.
- Inactive workflows: 1 (Nightly Obsidian Vault Sync replaced by Evening Digest).
- Archived workflows: 2 unrecoverable duplicate IMAP workflows archived after SQLite recovery.
- Docker health endpoint: `GET :18809/health` returns container state for 7 services.
- Systemd user service `docker-health-endpoint.service` active and enabled.
## Implemented and active
@@ -44,8 +47,12 @@ Last verified on 2026-05-13:
- Uses `127.0.0.1:5678` for n8n self-health.
- Alerts Telegram and Discord after two consecutive failures.
- Sends recovery messages when a previously-alerted service becomes healthy again.
- Docker health enrichment: implemented 2026-05-13.
- Host-side Python HTTP endpoint at `~/lab/swarm/scripts/docker-health-server.py` on port `18809`.
- Systemd user service `docker-health-endpoint.service`.
- Watchdog now calls `http://172.19.0.1:18809/health` and includes container status/health/restarts in alerts.
- Remaining improvement:
- Add Docker health-state enrichment. This requires either mounting Docker socket read-only or adding a host-side helper endpoint/script. Do not mount the Docker socket casually; decide the safer boundary first.
- Tune alert deduplication thresholds after observing real failure patterns.
### n8n Failure Digest
@@ -56,8 +63,9 @@ Last verified on 2026-05-13:
- Queries recent failed n8n executions.
- Groups failures by workflow/node/error.
- Sends a concise Telegram digest.
- Discord delivery: implemented 2026-05-13.
- Now delivers to both Telegram and Discord #ops-alerts in parallel.
- Remaining improvement:
- Add Discord delivery to ops channel.
- Tune grouping/windowing after observing real failure volume.
- Add first-seen/last-seen persistence if the current digest is too repetitive.
@@ -73,6 +81,7 @@ Last verified on 2026-05-13:
- Archived duplicates:
- `xjUoQf97TkBrawc8``IMAP Inbox Triage + Obsidian Notes (squareffect)`
- `kHDK9QdUSiAJ8rCM``IMAP Inbox Triage + Obsidian Notes (wills-portal)`
- Container URLs fixed 2026-05-13: stale `192.168.153.130` replaced with Docker bridge `172.19.0.1`.
- Remaining improvement:
- Rebuild any needed second-mailbox triage flows from scratch instead of unarchiving the corrupted duplicates.
- Add draft-reply generation for reply-needed messages.
@@ -105,16 +114,21 @@ Last verified on 2026-05-13:
- Add meeting-prep note template.
- Add after-meeting follow-up path that collects event + notes + transcript and produces action items.
### Nightly Obsidian Vault Sync
### Evening Digest (replaces Nightly Obsidian Vault Sync)
- Workflow ID: `75JCevkdgkyCr2qH`
- Old workflow ID: `75JCevkdgkyCr2qH` (deactivated)
- New workflow ID: `PlZywwqL8MRNEAN6`
- Status: active
- Trigger: nightly
- Trigger: daily at 21:00 America/Los_Angeles
- Current behavior:
- Generates nightly operational note using local LLM and live service context.
- Queries n8n executions API for today's successes and failures.
- Checks Docker container health via `172.19.0.1:18809`.
- Lists new Obsidian notes created today.
- Synthesizes with local gemma-4-26B LLM.
- Delivers to Telegram, Discord #ops-alerts, and Obsidian.
- Remaining improvement:
- Align with the desired evening digest shape: jobs run today, failed jobs, reminders, short summaries.
- Add n8n Failure Digest summary as an input.
- Add systemd timer health once a host-side endpoint exists.
- Add reminders and task queue summary.
### Daily OpenClaw Session Digest
@@ -279,36 +293,27 @@ Recommended implementation:
## Recommended next order of work
1. Observe Gmail IMAP fallback.
- Goal: confirm the next real Gmail ingestion produces the expected Telegram digest and Obsidian note.
- If output shape is wrong, adjust the shared triage/formatting nodes; do not return to the broken OAuth trigger unless Google OAuth is re-authorized.
1. ~~Fix Gmail Trigger warning.~~ Done 2026-05-13: replaced with IMAP fallback.
2. ~~Add Docker health-state enrichment to Swarm Health Watchdog.~~ Done 2026-05-13: host-side endpoint on 18809, systemd service.
3. ~~Build Morning Brief v1.~~ Done 2026-05-13: workflow `g3IdGZCK1EtTsv9T`, daily 06:30 PT.
4. ~~Extend Evening Digest.~~ Done 2026-05-13: workflow `PlZywwqL8MRNEAN6`, daily 21:00 PT.
5. ~~Add Discord delivery to n8n Failure Digest.~~ Done 2026-05-13.
6. ~~Fix stale container URLs in IMAP workflow.~~ Done 2026-05-13.
2. Add Docker health-state enrichment to Swarm Health Watchdog.
- Prefer safe host-side helper over raw Docker socket mount.
- Include last Docker health state and suggested fix in alerts.
3. Build Morning Brief v1.
- Start small: calendar + weather + email highlights + swarm/n8n health.
- Deliver to Telegram/Discord and save to Obsidian.
4. Extend Evening Digest.
- Use n8n Failure Digest plus workflow/timer run summary.
- Include failed jobs and next recommended action.
5. Implement Obsidian Semantic Index.
7. Implement Obsidian Semantic Index.
- Decide canonical vector store first.
- Use Ollama embeddings on `18807`.
- Add incremental update path.
6. Upgrade Web-to-Notes Capture.
8. Upgrade Web-to-Notes Capture.
- Add PDF and YouTube transcript support.
- Add source metadata and claim extraction.
7. Upgrade Voice Memo Pipeline.
9. Upgrade Voice Memo Pipeline.
- Add native Telegram/Discord voice ingestion.
- Add optional Kokoro audio summary.
8. Define webhook action bus catalog.
10. Define webhook action bus catalog.
- Document stable endpoints and schemas.
- Add `process_url`, `summarize_pdf`, `add_reminder`, `sync_vault`, `run_health_check`.