Repository navigation
feat(execution): share native spill with private shell channels - #919
Draft
Haoming9527 wants to merge 1 commit into
Draft
Haoming9527 wants to merge 1 commit into
Haoming9527 wants to merge 1 commit into
Conversation
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.
Refs #872. Stacked on #918 (
work/872-task-spill-integration, base454123e090636ae4a1ec861fa4faa6298e331e05). This is the private-channel storage slice; the full issue remains open.What was wrong
Persistent-shell output channels retained only a bounded prefix. Reusing native full-stream spill also requires distinguishing authenticated pipe EOF from a pending file seal, and ensuring the session coordinator never drops an unconfirmed reader before managed-kernel shutdown.
The change
Add optional shared
SpillStorecapture to authenticated stdout/stderr channels. Only the real framed writer owns capture; empty metadata opens cannot forge EOF or seal a stream. Control and completion channels keep their existing framing. Full-path, seal and failure facts come from the existing shared output implementation, with no second store or writer queue.Bound channel joining and preserve poisoned ownership. Known pending storage keeps the short descriptor-settlement grace from misclassifying a slow write/seal, while the request deadline remains effective. The session failure path checks both Driver and per-call capture cleanup, closes admission and invokes the Manager fatal callback before either owner can drop. Transport loss leaves admitted effects unknown and lets the public host retire the kernel.
The optional driver/example path and actual-process probe cover exact binary output, retained state, shared storage and existing retention. Production session metadata, ledger handoff and runtime activation are the next integration slice. No runtime eligibility, shipped pin, dependency or model-facing schema changes.
Validation
cargo test --workspace --locked --manifest-path native/Cargo.toml: 730 passed, 0 failed, 6 ignored. Child fixtures are explicitly invoked by parent tests/probes; the separately gated UNC fixture retains its documented platform requirement.cargo clippy --workspace --all-targets --locked --manifest-path native/Cargo.toml -- -D warnings, worker/example build, formatting and diff checks: passed.wait. Stock-runtime foreground-only probe: 5/5 passed. This stock result does not qualify its asynchronous output behavior for sessions.channel-spill-{candidate,stock,driver-compatibility}-final.jsonl.pull_request/CI requiredrun: https://github.com/T-Auto/dsh-ops/actions/runs/43491308503 — completed successfully.Environment
Windows x64, Node26.12.1, Rust1.99.0 locally; CI uses the repository-pinned compiler. Original stack main
e724444416fed01eb1f75916ec556c0a286e73f9. Real checks use the public host subprocess/sandbox contract. Candidate Niubash remains a local reviewed backport, not a published distribution. No PR merge, release or deployment.