Repository navigation
Conversation
Drain excess output without retaining it and await the direct child plus both readers under one absolute deadline. Own reader futures directly, bound cleanup, and reject unsupported timeout arithmetic. Add focused regressions for noisy output, inherited pipes, read errors, cancellation and extreme timeouts. Document direct-child-only cleanup.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Assert call wall-clock bounds and record call return, runtime teardown and host exit separately in a finite real-process diagnostic. Document Tokio's Windows blocking-pipe teardown limitation instead of claiming a hard CLI-process exit deadline. Execution logic is unchanged.
Use connected overlapped named-pipe readers with synchronous child writers. Keep direct-child cleanup and bounded evidence semantics, and assert real host lifetime, descendant liveness, output integrity and handle cleanup. AI-assisted implementation with independent source and Linux regression review. Windows qualification follows on the existing draft pull request.
Give the IOCP reactor time to release its queued pipe handle before reopening the same name. Retry only ERROR_PIPE_BUSY within one second; all other errors still fail immediately. Production code is unchanged.
Merge main cea4725 into the existing bounded-command-capture branch. Preserve case-insensitive environment normalization and the Python bytecode override before the reviewed connected-pipe setup. Only runner.rs and the operator guide differ from main. Dependency files remain identical to main; PR64 changes are not included.
Allocate each bounded 8 KiB scratch buffer on the heap so nested async futures do not overflow the Windows debug binary's main-thread stack. Preserve scoped read ownership, cancellation, deadlines and evidence caps. Add broad inline-size budgets for capture, run and run_indirect futures. The regression fails before this change; focused tests and Clippy pass. Actual Windows CLI and resource tests remain required in hosted CI.
tang-vu
marked this pull request as ready for review
October 7, 2026 07:20
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The bounded command runner stopped reading at its output cap and timed only direct-child exit. Verbose checks could fail on a closed pipe, and inherited writers could delay capture indefinitely. The initial fix bounded the async call, but Windows still took about eight seconds to exit for a one-second deadline because Tokio's anonymous-pipe adapter retained blocking reads.
Change
Only runner.rs and the operator guide change. Direct-child termination, command classification, environment scrubbing and fail-closed evidence behavior are preserved. Descendants may survive and later see a closed output pipe. This provides no process-tree sandbox and does not bound unrelated application shutdown work.
Verification
Current head: f2a1b04. The production correction is f9a4324; the follow-up changes only Windows cleanup tests. Published trees and reviewed file hashes were verified.
The first correction's hosted run compiled and exercised the Windows production path:
That run also exposed a Windows cleanup test assuming immediate pipe-name reuse. Mio can retain a handle until a queued IOCP event is processed. The follow-up keeps the same-name resource check, gives the reactor progress for at most one second, retries only ERROR_PIPE_BUSY, and fails immediately on other errors. Production is unchanged. The first run is not a complete Windows pass.
Final Windows cleanup qualification and exact-head checks are pending in CI run 37581650170. A full-workspace pass is not claimed.
The existing main-branch path-validation, Windows PATH-scrubbing and rustls audit failures are addressed separately by #61. No #61 implementation or dependency/workflow changes are included here. This PR stays draft pending Windows qualification, baseline fixes, CI and required maintainer approval.
AI-assisted implementation and separate technical review are disclosed. That review does not substitute for independent human maintainer approval.