Visitar URL original
fix(process): confirm Windows stdio cleanup after parent exit by steipete · Pull Request #151443 · openclaw/openclaw · GitHub
Skip to content

fix(process): confirm Windows stdio cleanup after parent exit - #151443

Merged
steipete merged 13 commits into
mainfrom
upd/windows-stdio-job-certification
Sep 18, 2026
Merged

steipete merged 13 commits into
mainfrom
upd/windows-stdio-job-certification

Conversation

@steipete

@steipete steipete commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

Related: #151325 (follow-up), #150427, #150244.

What Problem This Solves

Ordinary owned stdio children on Windows could not certify descendant extinction, so cleanup regularly ended as uncertain after the parent exited. This follows up on #151325 while preserving the non-fatal cleanup containment from #150427. Job support must remain optional for command startup, while callers requiring verified tree cleanup must retain their state when certification is uncertain.

Why This Change Was Made

createChildAdapter is the one spawn attachment point. It extends the existing scripts/lib/managed-windows-job* owner from #150244. The native launcher joins a retained kill-on-close Job before target code can run or fork, preserving interactive stdio, extra descriptors, worker IPC, and startup admission. The adapter installs lifecycle observers before releasing command startup.

Missing Koffi or launcher support keeps the ordinary spawn path and reports uncertain/job-unavailable. Job creation, configuration, or pre-command admission failures retire the containment attempt, revalidate launch authority, and use the ordinary spawn path with uncertain/job-create-failed, uncertain/job-configuration-failed, or uncertain/job-admission-failed, retaining the cause. Job observation failures retain uncertain/job-observation-failed for the same scope-policy evaluation. Genuine command-launch errors and cancellation still fail. The command is never retried.

The supervisor interprets the certification before retiring the run. An uncertain receipt records a scope-local cleanup failure with its typed reason and the original receipt as cause for required-all and locally owned owned-only scopes. Transport-only cleanup and backend-owned owned-only cleanup remain independent. A local transport certificate cannot certify an external backend for required-all. The existing agent-exec cleanup gate now retains its state lock and temporary state on uncertainty; no production change to agent-exec was needed. This addresses ClawSweeper's scope-cleanup finding.

Production/tooling is +406/−108 (net +298); tests/support are +802/−81 (net +721). Growth stays with existing owners: the shared Job helper owns capability checks, admission classification, readiness and accounting; its launcher preserves IPC; the adapter selects containment and fallback; the supervisor interprets certification according to scope policy. The latest scope repair adds only four net production lines, including deletion of the adapter conversion that discarded typed Job observation uncertainty. The Claude prompt/skill artifact owner retains files and warns on an uncertain receipt; certified removal already in progress is joined before return. The fd-count-only handoff and IPC exclusion were deleted, with no parallel Job helper. The non-Job cancellation path remains necessary for portable installations.

User Impact

Windows MCP servers, language servers, exec sessions, and workers get native Job certification where supported without losing interactive input or IPC. JavaScript-only portable archives and installations with unavailable or failing Job support still launch commands. Tree-required callers preserve locks and temporary state when descendants remain unverified. Existing non-fatal handling of genuine transport cleanup errors is unchanged. Non-Windows process behavior is preserved. No new options, dependencies, schemas, retries, or timeouts are introduced.

Evidence

Current landing evidence for 7d937b017c456167a7e747e5a2a28df461dd0885: CI run 35354835669 is GREEN. The exact-head native watcher reports rollup=green github_rollup=SUCCESS pending=0 superseded=0; the campaign recorded 158 passed, 12 skipped, zero failures, including both Windows node-test jobs. No manual rerun was requested.

The 13-commit rebase from reviewed head 92c8d53c82a4d5cdb32efafc3716f9f827ac20ac preserves the patch. Range-diff shows only surrounding fixture context changed by main, with no semantic change. The round-three Codex P1 review remains scoped-clean (0.84 confidence).

ClawSweeper follow-up: the latest completed review (September 18, 2026, 14:57 UTC) covers this exact head and reports Ready for maintainer review, no findings, sufficient Windows proof, and Before merge: None. There are no outstanding Rank-up moves.

The previous Windows log-access concern was resolved by the maintainer's acceptance of hosted Windows node-test jobs and the capability matrix for this Windows-only supervisor change: native support absent → ordinary spawn plus uncertain/job-unavailable; native support present → certified cleanup; Job setup/admission failure → ordinary spawn plus the typed uncertain reason; tree-required cleanup retains resources on uncertainty. An additional reviewer log-download attempt was skipped under that decision. This preserves one shared Job owner, optional native support, and scope-owned resource retention. Both exact-head Windows jobs succeeded: part 1, part 2.

The earlier-head results below are retained as historical evidence; their unrelated CI failures are superseded by the green current-head run.

  • Local proof is macOS-only: 243 focused tests passed, with six native Windows cases skipped locally. Windows proof comes from both repository Windows node-test jobs on this PR.
  • Pre-fix negative controls reproduced four policy failures (required-all and owned owned-only, each with unavailable or failed Job admission) and four agent-exec failures (unavailable/failed setup × temporary/explicit state). Scope cleanup wrongly resolved, locks were released, and temporary state was deleted. Six additional observation-uncertainty cases failed before removing the adapter's generic-error conversion. Three real-command artifact regressions also reproduced premature prompt deletion for unavailable, setup-failed, and observation-failed certification. All regressions pass after their owner repairs.
  • Policy coverage includes unavailable native support, failed Job admission, failed Job observation, and confirmed extinction for all three policies, plus external-backend ownership. Concurrent transport-only cleanup remains successful. Existing command-launch, cancellation, grandchild, interactive stdin/IPC, portable-worker, and managed-Job tests remain covered.
  • Codex local and fresh committed-branch P1 reviews are scoped-clean on 92c8d53c82a4d5cdb32efafc3716f9f827ac20ac (--mode branch --base origin/main --max-priority P1). Native Windows CI results are recorded below.
  • pnpm check:changed passes every gate preceding the unchanged main SDK surface-budget failure: deprecated channel-message exports are 137 > 136, introduced by fix: keep routine polling out of progress and history #151456. The existing base-only reproduction is retained; no SDK export or budget changed here. All 25 remaining selected checks passed separately, including all typecheck and lint lanes; final core typechecking and scoped lint passed after the observation repair.
  • Exact-head CI run 35351486775 is terminal on 92c8d53c82a4d5cdb32efafc3716f9f827ac20ac: 155 success, 12 skipped, 3 failed. Both Windows jobs passed. No manual reruns were requested.
Job Result and failure class
checks-windows-node-test-1 SUCCESS; prompt cleanup and uncertain-certification artifact retention pass.
checks-windows-node-test-2 SUCCESS; native grandchild extinction, interactive stdin/IPC, managed Jobs, portable-worker spawning, and the scope-policy certification matrix pass.
checks-ui-e2e-real-gateway FAILURE — UI interaction timeout: media replay cannot locate the Send message button within 30 seconds, before its first request (control-ui-media-transcript.real-gateway.e2e.test.ts:300; 59 other tests pass). The UI, QA fixture, and Gateway source are unchanged by this PR; fixture startup uses direct child spawning, outside the changed supervisor adapter. Precise UI timing cause is unconfirmed.
checks-node-compact-large-19 FAILURE — main performance-assertion mismatch: session-catalog.performance.test.ts:218 expects 20 SQLite reads per list but observes 18. Main #151732 added that exact assertion after this branch's base. The catalog closure is unchanged by this PR and uses a synthetic WebSocket server, without owned stdio children. All three binding-authority reads remain present.
openclaw/ci-gate FAILURE — downstream aggregate of those two jobs.

The two non-Windows failures are reported separately from the cleanup repair. Numeric campaign class IDs have not been verified; the descriptive classes above are supported by the logs and source inspection. Neither failure was rerun. The prior head's Matrix download, UI iframe readiness, and Telegram skill-suite failures are absent on this head.

@clawsweeper

clawsweeper Bot commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation scripts Repository scripts size: XL maintainer Maintainer-authored PR labels Sep 18, 2026
@steipete
steipete marked this pull request as ready for review September 18, 2026 05:59
@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. 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 Sep 18, 2026
@clawsweeper

clawsweeper Bot commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed September 18, 2026, 11:20 AM ET / 15:20 UTC (Revision 12).

ClawSweeper review

What this changes

The PR verifies Windows subprocess cleanup through retained Job Objects while preserving ordinary startup when native support is unavailable and retaining resources when cleanup is uncertain.

Merge readiness

✅ Ready for maintainer review

This repair remains necessary on current main. The earlier cleanup-policy blocker is resolved, and this review found no additional blocking defects at the pinned head.

Priority: P2
Reviewed head: 7d937b017c456167a7e747e5a2a28df461dd0885

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A coherent repair with accepted native Windows evidence, meaningful regression coverage, and no remaining blocking findings.
Proof confidence 🐚 platinum hermit (4/6) ✨ media proof bonus Sufficient (linked_artifact): The accepted hosted Windows evidence exercises the production stdio and Job owners with real descendants, verifies PID disappearance after forced cleanup, and preserves interactive stdin and worker IPC. Both Windows jobs passed on the pinned head; mocked policy cases supplement that native evidence.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (linked_artifact): The accepted hosted Windows evidence exercises the production stdio and Job owners with real descendants, verifies PID disappearance after forced cleanup, and preserves interactive stdin and worker IPC. Both Windows jobs passed on the pinned head; mocked policy cases supplement that native evidence.
Evidence reviewed 9 items Current main still needs the repair: The fetched main adapter still uses ordinary spawnWithFallback and provides no Windows waitForExtinction implementation. The merged tooling and rejection-containment work therefore does not supersede this runtime repair.
Latest release comparison: The supplied v2026.9.4 release commit also uses ordinary spawning without Windows extinction certification. Its source was inspected through GitHub after the local tag lookup was unavailable.
Prior finding resolved: Before retiring a run, the supervisor records typed uncertain receipts against required-all and applicable owned-only cleanup scopes. Transport-only scopes remain independent, and a local certificate cannot establish external backend extinction.
Findings None None.
Security None None.

How this fits together

OpenClaw’s process supervisor launches commands, MCP servers, and workers, then coordinates their output and cleanup. Cleanup receipts determine whether callers can safely release state locks and temporary artifacts.

flowchart TD
  A[Command or worker request] --> B[Validate current launch authority]
  B --> C{Windows Job available?}
  C -->|Yes| D[Launch inside retained Job]
  C -->|Unavailable or setup fails| E[Ordinary process launch]
  D --> F[Observe descendant cleanup]
  E --> F
  F --> G{Cleanup policy and receipt}
  G --> H[Release or retain caller resources]
Loading

Before merge

None.

Agent review details

Security

None.

PR surface

Source +109, Tests +721, Config 0, Other +189. Total +1019 across 23 files.

View PR surface stats
Area Files Added Removed Net
Source 4 155 46 +109
Tests 16 802 81 +721
Docs 0 0 0 0
Config 1 1 1 0
Generated 0 0 0 0
Other 2 250 61 +189
Total 23 1208 189 +1019

Review metrics

Metric Value Why it matters
Production versus regression coverage Production/tooling +406/-108; tests/support +802/-81 Production growth extends existing admission, accounting, and cleanup owners; regression coverage protects native behavior, portable fallback, and resource retention.

Technical review

Best possible solution:

Keep one shared Windows Job owner, optional native containment, and scope-owned decisions about releasing resources after cleanup.

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

Yes, source establishes that current main’s ordinary Windows adapter lacks extinction certification, and the native regression exercises a grandchild surviving its parent. No runtime reproduction was executed during this read-only review.

Is this the best way to solve the issue?

Yes. Extending the existing Job owner preserves interactive transport and portable startup while leaving resource-release policy with the supervisor and callers.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against b2d1e40b2f04.

Labels

Label justifications:

  • P2: This is a bounded Windows cleanup reliability repair; the related Gateway rejection-containment fix already exists separately on main.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (linked_artifact): The accepted hosted Windows evidence exercises the production stdio and Job owners with real descendants, verifies PID disappearance after forced cleanup, and preserves interactive stdin and worker IPC. Both Windows jobs passed on the pinned head; mocked policy cases supplement that native evidence.
  • proof: sufficient: Contributor real behavior proof is sufficient. The accepted hosted Windows evidence exercises the production stdio and Job owners with real descendants, verifies PID disappearance after forced cleanup, and preserves interactive stdin and worker IPC. Both Windows jobs passed on the pinned head; mocked policy cases supplement that native evidence.

Evidence

What I checked:

  • Current main still needs the repair: The fetched main adapter still uses ordinary spawnWithFallback and provides no Windows waitForExtinction implementation. The merged tooling and rejection-containment work therefore does not supersede this runtime repair. (src/process/supervisor/adapters/child.ts, b2d1e40b2f04)
  • Latest release comparison: The supplied v2026.9.4 release commit also uses ordinary spawning without Windows extinction certification. Its source was inspected through GitHub after the local tag lookup was unavailable. (src/process/supervisor/adapters/child.ts:198, 3a9d69db306c)
  • Prior finding resolved: Before retiring a run, the supervisor records typed uncertain receipts against required-all and applicable owned-only cleanup scopes. Transport-only scopes remain independent, and a local certificate cannot establish external backend extinction. (src/process/supervisor/supervisor.ts:476, 7d937b017c45)
  • Startup compatibility and authority: The adapter revalidates launch authority after the admission wait and before fallback spawning. Only pre-command Job setup errors select ordinary spawning; genuine command errors are not retried. Native-support absence remains an explicit uncertain outcome. (src/process/supervisor/adapters/child.ts:239, 7d937b017c45)
  • Resource retention: Claude prompt and skill artifacts remain retained on uncertain certification, with a warning rather than command failure. Added agent-exec regressions exercise the existing state-lock and temporary-state retention gate. (src/node-host/invoke-agent-cli-claude.ts:202, 7d937b017c45)
  • Production-path Windows scenarios: The native cases invoke createOwnedStdioProcess and createChildAdapter with real processes: they observe a surviving grandchild after parent exit, force cleanup, verify confirmed extinction and PID disappearance, and exercise worker IPC plus interactive stdin. These are distinct from the mocked capability-policy matrix. (src/process/owned-stdio.real.test.ts:42, 7d937b017c45)

Likely related people:

  • unknown: The claimed source-line change could not be verified from bounded local history. (role: source history unknown; confidence: low)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
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.

Workflow

  • 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.

History

Review history (11 earlier review cycles; latest 8 shown)
  • reviewed 2026-09-18T10:57:00.026Z sha b822f97 :: blocked before merge. :: [P1] Preserve required-tree failures for unavailable Job certification
  • reviewed 2026-09-18T11:23:23.190Z sha b822f97 :: blocked before merge. :: [P1] Preserve required-tree failures for unavailable Job certification
  • reviewed 2026-09-18T11:54:56.368Z sha dbf4f03 :: blocked before merge. :: [P1] Preserve required-tree failures for uncertain Job certification
  • reviewed 2026-09-18T12:21:11.992Z sha dbf4f03 :: blocked before merge. :: [P1] Preserve required-tree failures for uncertain Job certification
  • reviewed 2026-09-18T12:52:29.528Z sha d45080c :: blocked before merge. :: none
  • reviewed 2026-09-18T13:48:35.716Z sha 92c8d53c82a4d5cdb32efafc3716f9f827ac20ac :: needs maintainer review before merge. :: none
  • reviewed 2026-09-18T14:09:37.353Z sha 92c8d53c82a4d5cdb32efafc3716f9f827ac20ac :: blocked before merge. :: none
  • reviewed 2026-09-18T14:57:50.474Z sha 7d937b0 :: needs maintainer review before merge. :: none

@steipete
steipete force-pushed the upd/windows-stdio-job-certification branch from 16a79a8 to 79da84c Compare September 18, 2026 09:24
@openclaw-barnacle openclaw-barnacle Bot added agents Agent runtime and tooling size: L and removed docs Improvements or additions to documentation size: XL labels Sep 18, 2026
@clawsweeper clawsweeper Bot added merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. and removed merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Sep 18, 2026
@steipete
steipete force-pushed the upd/windows-stdio-job-certification branch from ad06c7f to b822f97 Compare September 18, 2026 10:48
@openclaw-barnacle openclaw-barnacle Bot added size: XL commands Command implementations and removed size: L labels Sep 18, 2026
@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Sep 18, 2026
@steipete

Copy link
Copy Markdown
Contributor Author

Addressed the scope-cleanup finding in 92c8d53c82a4d5cdb32efafc3716f9f827ac20ac.

The supervisor now interprets the certification before retiring the run. Uncertain receipts record a scope-local failure with the typed reason and original receipt as cause for required-all and applicable owned-only cleanup. Transport-only cleanup, ordinary command results, and external owned-only cleanup remain independent. Required-all still rejects a local transport certificate as proof of external backend extinction. The adapter also forwards job-observation-failed intact instead of converting it into a generic rejection that poisoned every cleanup policy. No retries or timeouts were added.

The boundary regressions fail on the prior head: required-tree cleanup resolved uncertainty as success, and agent-exec released its real state lock or deleted temporary state. The repaired tests verify those resources remain held through the existing agent-exec cleanup gate. No production change to agent-exec was required. The policy matrix also covers certified cleanup and concurrent transport-only owners. The same receipt guard now retains Claude prompt/skill artifacts on uncertainty, with the existing warning path preserving command success; three real-command negative controls reproduced their premature deletion before this guard.

Local macOS proof: 243 focused tests passed, with six native Windows skips. Fresh committed-branch Codex P1 review is scoped-clean. pnpm check:changed retains the independently reproduced base SDK export-budget failure (137 > 136, #151456); all 25 remaining selected checks passed separately.

Exact-head run 35351486775 is terminal: 155 success, 12 skipped, 3 failed. Both Windows part 1 and Windows part 2 are green. The logs confirm native grandchild extinction, interactive stdin/IPC, managed Jobs, portable spawning, the scope-policy matrix, and uncertain-certification prompt retention.

The remaining failures are checks-ui-e2e-real-gateway (unchanged media replay's Send message locator times out before the first request), checks-node-compact-large-19 (main #151732's new exact performance assertion expects 20 SQL reads, observes 18; this fixture does not use stdio children), and their downstream openclaw/ci-gate. Numeric campaign class IDs are unverified; source attribution and job links are recorded in the PR body. No CI reruns or landing were performed.

…Jobs

Follow up on #151325 by sharing the stdio-preserving Job launcher between runtime children and tooling. Admit target code only after Job assignment, retain certification after root exit, and preserve worker IPC. Existing non-fatal MCP/LSP cleanup containment from #150427 is unchanged; this extends the ownership work in #150244.
@steipete
steipete force-pushed the upd/windows-stdio-job-certification branch from 92c8d53 to 7d937b0 Compare September 18, 2026 14:12
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Sep 18, 2026
@steipete
steipete merged commit 16341cd into main Sep 18, 2026
235 checks passed
@steipete
steipete deleted the upd/windows-stdio-job-certification branch September 18, 2026 15:32
@steipete

Copy link
Copy Markdown
Contributor Author

Merged via squash.

vincentkoc added a commit that referenced this pull request Sep 18, 2026
* origin/main: (1675 commits)
  fix(plugins): avoid retaining duplicate tool errors (#151897)
  fix(matrix): keep sync-cache SQLite off the Gateway thread (#151845)
  docs: remove obsolete observer notice history wording (#151604)
  fix(sessions): avoid creating storage for optional transcript reads (#151745)
  fix(update): explain target metadata preflight failures (#151649)
  perf: avoid unused catalog projection during status checks (#151819)
  improve: avoid unnecessary participant work in Activity lists (#151886)
  fix(codex): restore background completions with managed hooks (#151658)
  refactor(cron): drain stream intake without copying its queue (#151890)
  fix(process): confirm Windows stdio cleanup after parent exit (#151443)
  improve(gateway): reduce allocations when selecting session store rows (#151891)
  fix: close transcript search with Escape (#151759)
  test(ui): advance the roster refresh clock explicitly (#151842)
  fix: stop posting tool warnings after an intentional silent reply (#151873)
  fix(release): allow an explicit operator soak waiver for stable publication (#151880)
  fix(plugin-sdk): count inherited message helper export (#151881)
  fix(plugin-sdk): keep new outbound helpers off deprecated facade (#151816)
  fix(test): finish cleanup for configured session stores (#151719)
  refactor: assemble recovery text from normalized payload facts (#151817)
  fix(codex): keep healthy apps available when plugins are missing (#150255)
  ...
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Sep 19, 2026
…aw#151443)

Windows owned stdio children now use the existing retained Job owner to confirm descendant cleanup after the parent exits, preserving interactive input and worker IPC.

Keep native support optional: unavailable or failed Job setup falls back to ordinary command startup and reports typed uncertainty. Tree-required cleanup retains state locks and temporary artifacts until extinction is certified; transport-only cleanup remains independent. Claude prompt and skill artifacts are retained with a warning when cleanup is uncertain.

Related: openclaw#151325, openclaw#150427, openclaw#150244.

Validation: exact-head CI run 35354835669 is green, including both Windows node-test jobs; 243 focused tests passed locally on macOS with six native Windows skips. The P1 review is scoped-clean, and all 13 reviewed commits are preserved by a semantic-equivalent rebase. Hosted Windows proof and the capability matrix satisfy the maintainer's compatibility-proof ruling.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling commands Command implementations maintainer Maintainer-authored PR P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. scripts Repository scripts size: XL status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant