mirror of
https://github.com/openclaw/openclaw.git
synced 2026-10-03 17:53:39 +00:00
## What Problem This Solves Completed Code Mode workers could remain alive after their creating Gateway or CLI command closed. The warm pool and idle-expiry timers had no host lifetime. ## User Impact Closing a host now waits for its Code Mode workers to retire. Other live hosts keep their workers, and failed native cleanup remains owned for a later retry. Standalone executor calls close completed workers immediately instead of retaining an unowned warm pool. Suspended continuations retain their existing contract. ## Why This Change Was Made Warm pools capture the existing resource host when created. Each host owns a scheduler scope and its admitted workers; idle expiry uses that scope. Reuse stays within the creating host. The four-worker bound, five-minute idle period, fresh VM contexts, and memory-pressure eviction remain unchanged. Production: **+65 / -7 / net +58** (`src/**` and `extensions/**`, excluding tests and support). This growth supplies host isolation and joined retirement; this cut is not a LOC reduction. There are no persisted format or configuration changes. Update behavior: existing state remains compatible; the retirement ordering takes effect after restart. ## Evidence Independent reviews of the production change and the test-fixture correction are clean through P2. Candidate: `6c475248c2ab5b21a3eb0b9e121b38e76d5bffe3`. - The final source tree passed all 30 tests across the five Code Mode lifecycle/native sibling files in **22.31s pnpm wall**. The native warm-pool fixture now supplies a real host and joins its teardown; the real workers, test bodies, and worker-count assertions are preserved. - The original production implementation failed the new standalone-worker retirement assertion as intended. The initial 14 lifecycle cases passed in **15.33s pnpm wall**. Full production changed checks passed in **1414.68s**; the final test-only delta passed its changed checks in **205.14s**. - The final candidate build passed in **434.34s**. Its canonical package passed tarball integrity checks. - The two native warm-pool failures during development were deterministic fixture mismatches: standalone calls no longer retain a pool, while those tests assert host-owned reuse. This was not a flake fix; no assertions, timeouts, retries, or worker implementations were weakened. Blacksmith Testbox leases: `tbx_01m3t3g3afjjrmnqjhr0mqasv0` ([native and production proof](https://github.com/openclaw/openclaw/actions/runs/36779653190)) and `tbx_01m3taxfbahdc6c63a38n0fq50` ([final build, fixture checks, and update cell](https://github.com/openclaw/openclaw/actions/runs/36792095804)). The first lease completed at two hours during the fixture changed gate, after all 30 tests passed. The unfinished gate was completed on the fresh lease; the disconnected run is not counted as a passing gate. The real published `2026.9.7` updater installed the exact candidate in **151s**. Both installed Gateways passed health and joined SIGTERM; the original disabled cron job, workspace bytes, authored configuration, and SQLite integrity were preserved. Doctor applied its existing implicit-main-roster normalization (`agents.entries.main = {}`). The first verification incorrectly expected the whole agents object to remain byte-shaped; source inspection confirmed the existing migration, and a separate read-only verification of the same original artifacts asserted that exact normalization and all remaining preservation checks. The update was not rerun. This cell covers installed update and shutdown; the worker tests above cover warm-worker custody. |
||
|---|---|---|
| .. | ||
| acp-agents | ||
| browser | ||
| code-mode | ||
| skill-workshop | ||
| subagents | ||
| tts | ||
| acp-agents-setup.md | ||
| acp-agents.md | ||
| agent-send.md | ||
| apply-patch.md | ||
| ask-user.md | ||
| brave-search.md | ||
| browser-control.md | ||
| browser-linux-troubleshooting.md | ||
| browser-login.md | ||
| browser-wsl2-windows-remote-cdp-troubleshooting.md | ||
| browser.md | ||
| btw.md | ||
| chrome-extension.md | ||
| code-execution.md | ||
| code-mode.md | ||
| creating-skills.md | ||
| custodian-skills.md | ||
| diffs.md | ||
| duckduckgo-search.md | ||
| elevated.md | ||
| exa-search.md | ||
| exec-approvals-advanced.md | ||
| exec-approvals.md | ||
| exec.md | ||
| firecrawl.md | ||
| gemini-search.md | ||
| goal.md | ||
| grok-search.md | ||
| image-generation.md | ||
| index.md | ||
| kimi-search.md | ||
| llm-task.md | ||
| lobster.md | ||
| loop-detection.md | ||
| mcp.md | ||
| media-overview.md | ||
| minimax-search.md | ||
| multi-agent-sandbox-tools.md | ||
| music-generation.md | ||
| ollama-search.md | ||
| parallel-search.md | ||
| pdf.md | ||
| permission-modes.md | ||
| perplexity-search.md | ||
| plugin.md | ||
| progress-card.md | ||
| reactions.md | ||
| screen.md | ||
| searxng-search.md | ||
| secrets.md | ||
| self-learning.md | ||
| show-widget.md | ||
| skill-workshop.md | ||
| skills-config.md | ||
| skills.md | ||
| slash-commands.md | ||
| steer.md | ||
| subagents.md | ||
| swarm.md | ||
| tavily.md | ||
| theme.md | ||
| thinking.md | ||
| tokenjuice.md | ||
| tool-search.md | ||
| trajectory.md | ||
| tts.md | ||
| video-generation.md | ||
| web-fetch.md | ||
| web.md | ||