Repository navigation
Unify Harness process lifetimes and preserve interruption - #449
Merged
Merged
Conversation
This was referenced Oct 6, 2026
Closed
Closed
Merged
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.
Summary
Live Sessions remain interruptible after CLI exit, and unread prompts cannot block supervision. Sessions, Muse/OpenCode checks and OpenCode export share one Harness process owner.
Session logging preserves raw bytes and live progress. Consumer failures retain the partial stream for after-exit recovery, warnings and elapsed/usage reporting before returning the original error. The old captured-execution module is removed.
Evidence
interrupting_a_live_session_after_cli_exit_stops_the_command_holding_stdoutfailed onmain: interruption waited for the finite stdout holder's natural expiry.After: passes with the under-two-second SIGINT bound and owned-command termination assertion. The equivalent captured regression uses the same bound.
a_log_failure_still_recovers_and_reports_warnings_and_usagefailed because a logging error skipped the warning and recovered usage summary.After: passes, preserving the original
BrokenPipeerror, once-only warning and exported usage summary.cargo fmt --check,cargo check --all-targets,cargo clippy --all-targets -- -D warnings, and fullcargo testpassed on Linux: 1,184 tests passed, 0 failed, across 39 test binaries.outputandstreaming; the thirdshift CLI in process-isolated Scenario regressions. Coverage includes exact captured bytes/status, raw streamed bytes, stdin transport/closure, EOF before exit, retained stdout/stderr after exit, unread/broken prompts, consumer failure/panic, escaped-group cleanup and normal background-work survival.main: Standards had no findings; Spec finding P1 was addressed and both reviewers rechecked the final diff.Merge Danger
Door: two-way
The implementation can be reverted without a configuration or data migration.
Blast Radius: Harness
Changes session/check/export process lifetimes across all six Harnesses. Adapter stop signals and ten-second grace periods are retained.
Unaddressed findings
Standards
None. No Standards findings were raised.
Spec
None. P1 was addressed; no Spec findings were skipped.
Closes #448
Built with codex · gpt-6.1-sol · xhigh