Skip to content

fix(slack): remove socket reconnect attempt cap so gateway stays connected indefinitely#73162

Merged
steipete merged 3 commits into
openclaw:mainfrom
suboss87:fix/slack-socket-reconnect-no-cap
Jun 18, 2026
Merged

fix(slack): remove socket reconnect attempt cap so gateway stays connected indefinitely#73162
steipete merged 3 commits into
openclaw:mainfrom
suboss87:fix/slack-socket-reconnect-no-cap

Conversation

@suboss87

@suboss87 suboss87 commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Keep recoverable Slack Socket Mode reconnects running indefinitely instead of stopping after 12 attempts.
  • Keep transient Slack Web API request and HTTP failures retryable while preserving immediate failure for permanent account and credential errors.
  • Add monitor-level regression coverage and align the Slack documentation with runtime behavior.

Fixes #72808

Verification

  • pnpm build
  • pnpm check
  • node scripts/run-vitest.mjs extensions/slack/src/monitor/provider.reconnect-loop.test.ts extensions/slack/src/monitor/provider.reconnect.test.ts extensions/slack/src/monitor/provider.auth-errors.test.ts extensions/slack/src/monitor/provider.interop.test.ts extensions/slack/src/monitor/provider.allowlist.test.ts — 5 files, 61 tests passed
  • node scripts/check-docs-mdx.mjs docs README.md — 679 files passed
  • Azure changed-surface validation — run run_1a5e8fdab015
  • Final autoreview — no accepted or actionable findings

Real behavior proof

Behavior addressed: Recoverable Slack Socket Mode failures continue reconnecting beyond the former 12-attempt limit while permanent account and credential failures stop immediately.

Real environment tested: Azure Linux validation host plus the local Node 24 maintainer checkout.

Exact steps or command run after this patch: Ran the focused Slack monitor tests above and the repository changed-surface validation.

Evidence after fix: The reconnect-loop regression reaches attempt 13 for raw network, Slack Web API request, and HTTP 503 failures and then reconnects successfully; all 61 focused Slack tests passed.

Observed result after fix: Recoverable failures remain retryable and abortable; permanent Slack account and credential errors fail fast.

What was not tested: No live Slack workspace disconnect was forced. The full local suite completed with unrelated baseline failures outside the Slack surface; build, static checks, the Slack shard, docs validation, and remote changed-surface validation passed.

@aisle-research-bot

aisle-research-bot Bot commented Apr 28, 2026

Copy link
Copy Markdown

🔒 Aisle Security Analysis

We found 1 potential security issue(s) in this PR:

# Severity Title
1 🟡 Medium Unlimited Slack socket reconnect attempts when maxAttempts set to 0 (resource-exhaustion DoS)
1. 🟡 Unlimited Slack socket reconnect attempts when maxAttempts set to 0 (resource-exhaustion DoS)
Property Value
Severity Medium
CWE CWE-400
Location extensions/slack/src/monitor/reconnect-policy.ts:4-10

Description

SLACK_SOCKET_RECONNECT_POLICY.maxAttempts was changed from 12 to 0. The reconnect loop treats maxAttempts <= 0 as no limit, causing infinite reconnect attempts.

In monitor/provider.ts, the bail-out condition is guarded by maxAttempts > 0, so setting it to 0 disables the cap:

  • Input/trigger: repeated network disconnects / Slack socket start failures (can be attacker-influenced in hostile networks, or due to misconfig/outage)
  • Behavior: while (!abortSignal.aborted) loop retries forever with backoff (up to 30s) and logs each failure
  • Impact: persistent background activity and log flooding; may consume CPU/memory over time and repeatedly hit Slack endpoints, potentially contributing to rate limiting or operational DoS of the gateway process

Vulnerable logic (cap disabled when maxAttempts is 0):

if (SLACK_SOCKET_RECONNECT_POLICY.maxAttempts > 0 &&
    reconnectAttempts >= SLACK_SOCKET_RECONNECT_POLICY.maxAttempts) {
  throw new Error("...max attempts reached...");
}

Recommendation

Reintroduce a finite reconnect cap, or implement an explicit circuit breaker/disable flag instead of using 0.

Option A (simple): restore a reasonable cap (e.g., 12):

export const SLACK_SOCKET_RECONNECT_POLICY = {
  initialMs: 2_000,
  maxMs: 30_000,
  factor: 1.8,
  jitter: 0.25,
  maxAttempts: 12,
} as const;

Option B (explicit unlimited + safety): if unlimited retries are desired, add safeguards such as:

  • maximum total retry duration (e.g., stop after N minutes and require manual restart)
  • log rate limiting
  • configurable maxAttempts via env/config with a safe default

Example duration cap (pseudo):

const startedAt = Date.now();
const MAX_RETRY_WINDOW_MS = 10 * 60_000;
...
if (Date.now() - startedAt > MAX_RETRY_WINDOW_MS) throw new Error("reconnect window exceeded");

Analyzed PR: #73162 at commit ffd4867

Last updated on: 2026-04-28T02:09:23Z

@openclaw-barnacle openclaw-barnacle Bot added channel: slack Channel integration: slack size: XS labels Apr 28, 2026
@greptile-apps

greptile-apps Bot commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR changes maxAttempts from 12 to 0 in SLACK_SOCKET_RECONNECT_POLICY, making Slack socket reconnects unlimited. The consuming code in provider.ts already guards with maxAttempts > 0 && before checking the cap, and log strings already use || "∞" — so 0 was always a valid "unlimited" sentinel. Non-recoverable auth errors (account_inactive, invalid_auth, etc.) are still caught and bail early via isNonRecoverableSlackAuthError before the reconnect loop, so there is no risk of infinite retries on permanent credential failures.

Confidence Score: 5/5

Safe to merge — minimal one-line change with well-understood semantics already supported by the existing consumer code.

The change is a single-field update to a policy constant. The consuming code in provider.ts already explicitly handles 0 as 'unlimited' via maxAttempts > 0 && guards, and the log format already uses || '∞'. Non-recoverable auth errors are handled separately and unaffected by this change.

No files require special attention.

Reviews (1): Last reviewed commit: "fix(slack): remove socket reconnect atte..." | Re-trigger Greptile

@suboss87

Copy link
Copy Markdown
Contributor Author

CI failures (checks-node-core-fast-support, checks-node-core) are in src/media-generation/runtime-shared.test.ts and src/proxy-capture/runtime.test.ts — both unrelated to this Slack-extension change. Looks like pre-existing flakiness from recent main activity (0294aabe feat(providers): add DeepInfra, aeba1d6b test: keep stateful tests out of unit-fast). The 813 Slack extension tests all pass.

@tleyden

tleyden commented Apr 29, 2026

Copy link
Copy Markdown

@suboss87 I posted more details of the logs I am seeing here: #72808 (comment) - let me know anything else you want me to collect

@suboss87

suboss87 commented Apr 29, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the detailed trace @tleyden. Your analysis is exactly right. The throw at provider.ts:469 after 12 attempts is the exit path, and the missing publishSlackDisconnectedStatus in the finally block is why the gateway shows connected while Slack is dead.

This PR flips maxAttempts to 0 (unlimited), which answers your design question 2, consistent with how WhatsApp and Feishu socket transports behave. The publishSlackDisconnectedStatus gap is a separate hardening item worth a follow-up issue.

Your logs confirm the reproduction. Nothing else needed from you, this is ready for maintainer review.

@clawsweeper

clawsweeper Bot commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed June 17, 2026, 11:25 AM ET / 15:25 UTC.

Summary
The branch changes Slack Socket Mode reconnects from a 12-attempt cap to unlimited retries and adds a CHANGELOG entry for that fix.

PR surface: Source 0, Docs +1. Total +1 across 2 files.

Reproducibility: yes. at source level: current main still has the 12-attempt Slack Socket Mode cap and throws when reconnect attempts reach it, and the linked issue includes matching logs. I did not run a live Slack disconnect sequence in this read-only review.

Review metrics: 1 noteworthy metric.

  • Slack reconnect default: 1 changed: 12 attempts -> unlimited. This hardcoded Slack recovery default affects existing gateway upgrade behavior and needs maintainer-visible proof before merge.

Root-cause cluster
Relationship: same_root_cause
Canonical: #72808
Summary: This PR is the open implementation path for the Slack silent-disconnect cap tracked by the canonical issue; the process-SIGTERM issue overlaps on Slack outage symptoms but asks for a distinct recovery policy.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🦪 silver shellfish
Proof: 🦪 silver shellfish
Patch quality: 🦐 gold shrimp
Result: blocked until stronger real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Add redacted real behavior proof from this branch showing recoverable Slack reconnect retries use and continue after the former cap.
  • Update the Slack docs so operator guidance matches the new unlimited retry behavior.
  • Remove the normal-PR CHANGELOG.md entry.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: Related issue logs show an equivalent local mitigation, but this external PR still needs redacted contributor-run branch proof in the PR body; redact tokens, IPs, phone numbers, private endpoints, and after updating the body a fresh ClawSweeper review should run or a maintainer can comment @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Risk before merge

  • [P1] The PR lacks contributor-run, branch-specific real behavior proof; related issue logs support the idea but do not prove this exact head after the fix.
  • [P1] Unlimited retries change Slack recovery behavior for existing operators and may interact with the distinct process-restart escalation request in Gateway should self-SIGTERM after K=3 failed Slack reconnects (silent 15h outage in v2026.5.7) #81491.
  • [P1] The PR currently leaves Slack docs stale and adds a release-owned changelog entry that should not merge with a normal PR.

Maintainer options:

  1. Refresh the PR before merge (recommended)
    Update the Slack docs for unlimited recoverable retries, remove the CHANGELOG entry, and add redacted real reconnect proof that shows the new retry behavior on this branch while auth failures still fail fast.
  2. Accept unlimited retry as policy
    Maintainers can explicitly accept the operational shift from finite provider exit to indefinite Slack retry, with the remaining docs/proof cleanup still required before landing.
  3. Pause for recovery-policy direction
    If maintainers prefer process-level escalation or a configurable threshold, pause or close this PR in favor of a replacement design tied to Gateway should self-SIGTERM after K=3 failed Slack reconnects (silent 15h outage in v2026.5.7) #81491.

Next step before merge

  • [P1] Needs contributor proof and maintainer review of the Slack recovery-policy tradeoff before any automated repair or merge path is safe.

Security
Cleared: No concrete security or supply-chain regression was found; the unlimited retry concern is an availability/operator-policy risk with bounded backoff and auth fail-fast behavior, not a security-boundary issue.

Review findings

  • [P2] Update Slack docs for unlimited retries — extensions/slack/src/monitor/reconnect-policy.ts:13
  • [P3] Remove the release-owned changelog entry — CHANGELOG.md:33
Review details

Best possible solution:

Land a narrow Slack plugin fix that removes or revises the recoverable Socket Mode cap, preserves non-recoverable auth fail-fast behavior, updates Slack operator docs, removes the release-owned changelog edit, and includes real reconnect proof for the chosen recovery policy.

Do we have a high-confidence way to reproduce the issue?

Yes at source level: current main still has the 12-attempt Slack Socket Mode cap and throws when reconnect attempts reach it, and the linked issue includes matching logs. I did not run a live Slack disconnect sequence in this read-only review.

Is this the best way to solve the issue?

No as submitted: the one-line runtime change is the narrow owner-boundary fix for the finite-cap failure, but docs, release-owned changelog, real behavior proof, and maintainer recovery-policy acceptance remain before merge.

Full review comments:

  • [P2] Update Slack docs for unlimited retries — extensions/slack/src/monitor/reconnect-policy.ts:13
    Changing maxAttempts to 0 makes recoverable Socket Mode retries unlimited, but docs/channels/slack.md:532 still tells operators those failures stop after 12 attempts. Please update that user-facing guidance so the merged runtime and docs do not disagree.
    Confidence: 0.92
  • [P3] Remove the release-owned changelog entry — CHANGELOG.md:33
    Normal PRs should not edit release-owned CHANGELOG.md; the PR body already carries the release-note context. Please drop this added line and leave final release notes to the release generation flow.
    Confidence: 0.9

Overall correctness: patch is incorrect
Overall confidence: 0.87

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against a7f96847ce2d.

Label changes

Label changes:

  • add merge-risk: 🚨 availability: Indefinite retry may improve transient recovery but can also mask provider states that need escalation or restart, which CI cannot prove.
  • add rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • add status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: Related issue logs show an equivalent local mitigation, but this external PR still needs redacted contributor-run branch proof in the PR body; redact tokens, IPs, phone numbers, private endpoints, and after updating the body a fresh ClawSweeper review should run or a maintainer can comment @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Label justifications:

  • P1: The PR targets a real Slack channel outage mode where messages can stop delivering until manual restart.
  • merge-risk: 🚨 compatibility: Changing the hardcoded Slack retry default from finite to unlimited changes existing operator-visible recovery behavior without a config or migration path.
  • merge-risk: 🚨 availability: Indefinite retry may improve transient recovery but can also mask provider states that need escalation or restart, which CI cannot prove.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: Related issue logs show an equivalent local mitigation, but this external PR still needs redacted contributor-run branch proof in the PR body; redact tokens, IPs, phone numbers, private endpoints, and after updating the body a fresh ClawSweeper review should run or a maintainer can comment @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed

PR surface:

Source 0, Docs +1. Total +1 across 2 files.

View PR surface stats
Area Files Added Removed Net
Source 1 1 1 0
Tests 0 0 0 0
Docs 1 1 0 +1
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 2 2 1 +1

What I checked:

  • Current main still uses a finite Slack retry cap: SLACK_SOCKET_RECONNECT_POLICY.maxAttempts is still 12 on current main, so this PR changes the existing Slack plugin runtime default rather than duplicating already-implemented behavior. (extensions/slack/src/monitor/reconnect-policy.ts:13, a7f96847ce2d)
  • Provider treats non-positive maxAttempts as unlimited but still fails auth fast: The Slack provider formats non-positive maxAttempts as infinity, skips the cap only when maxAttempts <= 0, and still throws immediately for non-recoverable Slack auth errors before retrying. (extensions/slack/src/monitor/provider.ts:123, a7f96847ce2d)
  • User-facing Slack docs would be stale after merge: The Slack docs still tell operators that recoverable Socket Mode start/start-wait failures stop after 12 attempts, which would contradict the PR's unlimited retry behavior. Public docs: docs/channels/slack.md. (docs/channels/slack.md:532, a7f96847ce2d)
  • PR diff changes runtime policy and release-owned changelog: The PR changes only maxAttempts: 12 to 0 in the Slack reconnect policy and adds a normal-PR CHANGELOG.md entry, while repo policy says release generation owns changelog edits. (extensions/slack/src/monitor/reconnect-policy.ts:13, 7de350a271aa)
  • Pinned Slack dependency retries internally without an explicit cap: The pinned @slack/[email protected] client increments reconnection failures and delays reconnect attempts internally; OpenClaw's wrapper adds the OpenClaw-visible cap and status/log behavior being changed here.
  • Related issue has source and field evidence but not branch proof: The linked Slack outage issue includes matching retry 1/12 logs and an equivalent installed maxAttempts: 0 mitigation showing retry 1/∞, but the PR itself does not include contributor-run proof for this branch after the patch.

Likely related people:

  • pandego: Authored the merged Slack Socket Mode reconnect PR that added the bounded reconnect loop and 12-attempt policy this PR changes. (role: introduced behavior; confidence: high; commits: 949faff5ce7d; files: src/slack/monitor/provider.ts, extensions/slack/src/monitor/provider.ts, extensions/slack/src/monitor/reconnect-policy.ts)
  • Takhoffman: Merged the original Slack reconnect PR via squash and recorded validation, so they are relevant to the current behavior's provenance. (role: merger; confidence: medium; commits: 949faff5ce7d; files: src/slack/monitor/provider.ts)
  • steipete: Extracted the Slack socket reconnect policy helpers into the separate policy module that now owns the constant changed by this PR. (role: feature-history contributor; confidence: medium; commits: 1dd77e410658; files: src/slack/monitor/reconnect-policy.ts, src/slack/monitor/provider.ts, extensions/slack/src/monitor/reconnect-policy.ts)
  • scoootscooob: Moved the Slack channel implementation into extensions/slack/src, preserving the reconnect policy and provider paths now affected. (role: plugin migration contributor; confidence: medium; commits: 8746362f5ebf; files: extensions/slack/src/monitor/provider.ts, extensions/slack/src/monitor/reconnect-policy.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@martingarramon

Copy link
Copy Markdown
Contributor

Static review. CI authoritative.

The maxAttempts: 12 → 0 flip at extensions/slack/src/monitor/reconnect-policy.ts:4-10 is the correct minimal scope for #72808. Uses the zero-as-unlimited convention already present (maxAttempts > 0 && guard + || "∞" log fallback) — no callers need to change.

Load-bearing on isNonRecoverableSlackAuthError early-bailing before the policy gate. Not re-verified against current main; if it holds, scope is correct.

Does not address process restart after non-exhaustion exits (panic, unhandled rejection in the socket-mode worker). Out-of-scope per PR body — separate supervisor concern.

Corroborating field evidence: downgrade to 2026.4.14 / 2026.4.23 restores prior behavior; truiem-bot's retry 1/12 logs show the cap as the regression vector.

LGTM.

suboss87 pushed a commit to suboss87/openclaw that referenced this pull request May 3, 2026
@tleyden

tleyden commented May 11, 2026

Copy link
Copy Markdown

@suboss87 any update on this PR? How can I help?

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 13, 2026
@openclaw-barnacle openclaw-barnacle Bot added triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. labels May 13, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 13, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 13, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 13, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 13, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 13, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 13, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 13, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 13, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 14, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 14, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 14, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 14, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 14, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 14, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 14, 2026
@openclaw-barnacle openclaw-barnacle Bot added stale Marked as stale due to inactivity and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 14, 2026
@clawsweeper clawsweeper Bot added P1 High-priority user-facing bug, regression, or broken workflow. and removed P2 Normal backlog priority with limited blast radius. labels Jun 14, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the stale Marked as stale due to inactivity label Jun 15, 2026
@clawsweeper clawsweeper Bot added the merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. label Jun 15, 2026
@steipete steipete self-assigned this Jun 17, 2026
@clawsweeper clawsweeper Bot removed proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 17, 2026
@openclaw-barnacle openclaw-barnacle Bot added the triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. label Jun 17, 2026
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 17, 2026
@openclaw-barnacle

Copy link
Copy Markdown

This assigned pull request has been automatically marked as stale after being open for 27 days.
Please add updates or it will be closed.

@steipete

steipete commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Maintainer preparation complete.

Proof:

  • Node 24 pnpm build passed.
  • Node 24 pnpm check passed.
  • Focused Slack monitor proof passed: 5 files, 61 tests.
  • Docs MDX validation passed: 679 files.
  • Azure changed-surface validation passed: run_1a5e8fdab015.
  • Final autoreview found no accepted or actionable issues.

The full local test suite completed with unrelated baseline failures in gateway, plugin-SDK reporting, infra/state platform assumptions, secrets timeout cleanup, and tooling timeout cleanup. No Slack test failed; the Slack shard and remote changed-surface validation are green.

Prepared head: ac51979a7f5ccaca2cc7fce127501aff833ac334.

suboss87 and others added 3 commits June 18, 2026 02:17
Recover recoverable Socket Mode failures indefinitely while preserving SDK fail-fast errors. Add monitor-level regression proof and align the Slack documentation.

Fixes openclaw#72808
Keep Slack Web API request and HTTP failures in the reconnect loop while preserving fail-fast handling for permanent account and credential errors.
@steipete

Copy link
Copy Markdown
Contributor

Merged via squash.

Thanks @suboss87!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

channel: slack Channel integration: slack docs Improvements or additions to documentation merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P1 High-priority user-facing bug, regression, or broken workflow. proof: override Maintainer override for the external PR real behavior proof gate. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. size: S stale Marked as stale due to inactivity status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Silently lost connection to Slack

5 participants