Slack overhaul: kill the notification firehose + fix command understanding #3837
Cross-repo impact
See what breaks downstream if this PR merges.
⮌ Merged
This pull request was merged into main.
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts
Originally written by @ccantynz-alt on GitHub.
Imported from https://github.com/ccantynz-alt/jarvis-platform/pull/1
Why
Craig was getting hundreds of Slack notifications and couldn't control Jarvis through Slack — natural-language repair commands were misrouted or silently mishandled.
Root causes found
Notification flood
chat.postMessagewith zero throttling, dedupe, or batchingscore ?/100because/audit/runresponds before the audit finishes; audit-runner then posted its own full report per platform on top → double spam every morningCommands misunderstood
can you fix vapron signupstarts with "can" → classified as a question → status report instead of a fixhey jarvis ...matched the registered platformjarvisand routed commands thereWhat changed
New
src/notify-center.js— single gate for all unsolicited notifications:critical(immediate, bypasses quiet hours/mute) /warning(immediate, deduped + rate-limited) /info(batched into a digest, default every 30 min)mute,mute 2h,mute all,unmute,digest,notificationsNew
src/intent.js— keyword tier extracted, pure and unit-tested:hey jarvisaddress prefix and polite lead-ins before matching →can you fix Xnow dispatchessrc/slack-bridge.jsrewired:/slack/reportlevels itself from audit status — healthy → digest)ANTHROPIC_API_KEYis set, CLI fallback otherwise (debt #2 code path)POST /slack/digest,GET /slack/notify-statussrc/orchestrator.js: daily audit cron no longer posts per-platform lines (audit-runner reports real results through the leveled path); skips platforms without audit configs.src/deploy-gate.js: gate-blocked alerts markedcritical.Docs/config: CLAUDE.md updated per Rule 0 (incl. stale platform list + debt items);
secrets.env.examplegainsANTHROPIC_API_KEY+ notification tuning vars.Verification
npm test, node --test)node --checkclean on all services/slack/testdry-run:hey jarvis can you fix the signup flow on vapron→ normalizedfix the signup flow on vapron→ dispatch (Haiku CLI fallback also ran live and agreed)Deploy notes (on the box)
git pull && systemctl restart jarvis-slack jarvis-orchestrator jarvis-deploy-gateANTHROPIC_API_KEYto/opt/jarvis/config/secrets.envto get ~300 ms intent classification (optional but recommended — clears debt #2)curl http://127.0.0.1:9203/slack/health→classifier: "http-api",notifyblock present🤖 Generated with Claude Code
https://claude.ai/code/session_01ASQBuvnQ97d4ZJvtxFBXUA
Generated by Claude Code