feature/Make-serve-refused-no-ps · L-260923-e82e4a - #42
Merged
Merged
Conversation
In a sandbox that refuses ps, as Codex's workspace-write sandbox does on macOS, make serve started the server, could not read its start time and reported it as a server that exited at once, and make stop took the running server for another process, dropped its record and left it listening with no make gesture able to find it. Both now read serve's own start time before anything else and refuse as `refused: no-ps`, keeping the record. A recorded group whose first process still runs but whose start time cannot be read is refused the same way, never taken for another process's. A stop the system refuses to signal is reported as `failed: still-running` with the record kept, never as `stopped`. The lifecycle tests are skipped where ps cannot run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014vaarU7anrUwbR5tvoiGUe
make stop required ps before it looked at the recorded group, so where ps may not run it refused even for a group that had already ended, and the stale record stayed for every later make stop to refuse on. It now asks for a start time only while the group's first process still runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014vaarU7anrUwbR5tvoiGUe
When make serve gave up on a server it had just started, it ignored how stopping the group ended, removed the record and said the server was stopped, even when the group outlived SIGKILL or the signal was refused. It now removes the record only once the group has ended, and otherwise says failed: still-running, naming the group for a person to stop when the start failed before it could be recorded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014vaarU7anrUwbR5tvoiGUe
ownership took a recorded group that still runs, but none of whose processes lsof reported, for one that had ended, and dropped its record. It now tells the two apart with the group's liveness and refuses as no-lsof, naming the group, when it runs unseen. The changelog entry is split into one bullet per change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
Reviewed locally with Round 1 fixed two defects:
Round 2 fixed two more:
cubic's claim that Round 3 was clean at its bar. Its three findings were deferred to the ledger: one helper for the stop-then-forget sequence, keeping the give-up reason in a still-running verdict, and making that verdict the last line after an unexpected error. |
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.
Where
psmay not run, as in Codex'sworkspace-writesandbox on macOS, the web app template'smake servestarted a server it could not record and reported it as exited, andmake stoptook a running server for another process and dropped its record, so nothing could stop it. Both now refuse asrefused: no-pswith the record kept, a running grouplsofcannot see is refused the same way asno-lsof, and any server serve or stop meant to stop and could not is reported asfailed: still-runningwith its record kept instead of as stopped. The lifecycle tests skip wherepsmay not run, so the template'smake allpasses in that sandbox.Closes L-260923-e82e4a
🤖 Generated with Claude Code
Summary by cubic
Fixes
make serveandmake stopwherepsmay not run, as in Codex'sworkspace-writesandbox on macOS. Previouslymake servestarted a server it couldn't record and reported it as exited, andmake stopcould take a running server for another process, drop its record, and leave it listening with no way to stop it. Both now refuse asrefused: no-pswithout signaling anything, keeping the record.Bug Fixes
make servechecks it can read a start time before starting anything and refuses withrefused: no-psotherwise.make stoprefuses asno-psorno-lsofwhile a recorded group still runs but can't be identified, keeping the record; a group that has ended is still cleared.SIGKILL, is reportedfailed: still-runningwith its record kept instead ofstopped.psmay not run, somake allpasses in that sandbox.Closes L-260923-e82e4a
Written for commit d9647b9. Summary will update on new commits.