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.
Skill:
consensus-rnd:sshx— implemented by one codex-cli seat (flightrunner-teardown-0912) on a clone of this repository; orchestrator (claude main loop, trureturing project) reviewed the diff summary and test list and opens this PR from a fork (no push access). Zero review seats at open time.Defect (observed 2026-09-12 in a downstream project)
run-codex-worker.shruns the carrier synchronously and itsinterrupt()trap only recordsINTERRUPTED; when the host signals the runner (four host memory-pressure kills in one session), the carrier's descendants —make → lake → lean,dotnettest hosts, profiler runs — are not signalled. Five orphanedlean -Dprofilerprocesses of ~15 GB each survived 56 minutes after their runners died, which in turn caused further memory-pressure kills.CODEX_WORKER_SPEC.mddocumented this as host-owned teardown ("The runner therefore does not propagate signals"), citing twoTaskStopexperiments; the memory-pressure kill path signals only the runner and leaves the tree.Change
pgrep -P, recursive; portable macOS/Linux, nosetsid), sends TERM individually, allows ~5 s grace, KILLs survivors, reaps the carrier, then publishesINTERRUPTEDas before. Repeated signals and the Bash 3.2 launch window are handled. Nothing outside the carrier's descendant set is signalled. Status JSON gains an interruption-onlyteardownrecord (descendants_signalledexcludes the carrier;killed_after_graceincludes it); all existing fields,carrier.exitsemantics, success-path artifacts and envelope/sentinel validation are unchanged.test_sigterm_tears_down_carrier_process_tree,test_sigterm_kills_term_ignoring_carrier_tree_after_grace,test_success_does_not_teardown_carrier_descendants,test_signal_at_carrier_launch_boundaries; existing trap/status/batch tests updated to the new wiring. Verified on macOS Bash 3.2; Linux and real host cancellation not exercised (marked ASSUMED-UNVERIFIED in the seat report). No version bump (maintainer's call).🤖 Generated with Claude Code