fix: recover Slack channel restart after stop timeout#77686
fix: recover Slack channel restart after stop timeout#77686kevinslin merged 2 commits intoopenclaw:mainfrom
Conversation
48b7ff4 to
ca57928
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ca5792855e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Codex review: needs maintainer review before merge. Summary Reproducibility: yes. at source level: current main routes health-monitor restarts through the manual stop path, and the timeout branch leaves Real behavior proof Next step before merge Security Review detailsBest possible solution: Land the narrow Gateway lifecycle fix after maintainer review and required checks, keeping manual stops suppressing restarts while recovery stops can reconnect after stop timeouts. Do we have a high-confidence way to reproduce the issue? Yes at source level: current main routes health-monitor restarts through the manual stop path, and the timeout branch leaves Is this the best way to solve the issue? Yes: splitting manual and recovery stops at the ChannelManager boundary is the narrowest maintainable fix, and the latest patch keeps manual stops during recovery backoff cancellable with a separate abort signal. Acceptance criteria:
What I checked:
Likely related people:
Remaining risk / open question:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 557c5bf70521. Re-review progress:
|
0b8c713 to
b77aec5
Compare
|
Hi @kevinslin I hope you are doing well. I'd like to discuss something regarding contribution. If you're free, can we connect on Telegram? |
* fix: recover Slack channel restart after stop timeout * fix: keep recovery restart cancellable
Summary
Fixes #77651.
Real behavior proof
createChannelManagerimplementation through Node/tsx with a temporary channel plugin installed in the runtime registry.node --import tsx --input-type=moduleruntime harness that importssrc/gateway/server-channels.ts, starts a channel account whose first task ignores abort until explicitly released, callsstopChannel('discord', 'default', { manual: false }), immediately requestsstartChannel, releases the old task, waits for the manager's real auto-restart path, then performs a manual cleanup stop.startCalls=2,running=true,lastError=null). A later manual stop leftrestartPending=falseandmanuallyStopped=true.Verification
pnpm exec oxfmt --check --threads=1 src/gateway/server-channels.ts src/gateway/server-channels.test.ts src/gateway/channel-health-monitor.ts src/gateway/channel-health-monitor.test.tsgit diff --check HEAD~2..HEADpnpm changed:lanes --jsonpnpm test src/gateway/server-channels.test.ts src/gateway/channel-health-monitor.test.tsReal behavior proofabove.Notes
pnpm changed:lanes --jsonselected broad lanes after the rebase because the branch had been rewritten on top of currentmain; the touched-surface checks above are the local targeted proof for this PR.blacksmithnorcrabboxis installed here.