crash gate: a fleet step runs the crash gate on any feat commit; a socket timeout says what the socket did
Summary
- New fleet step
scripts/measure/crash-gate.sh: it builds a tagged Debug cmux-next app at the step's commit (reload.sh, the same route asscripts/measure/tab-switch.sh) and runsscripts/cmux-next/crash-ends-app-gate.pyon it. On afeat-cmux-nextpush the CI crash gate job is skipped, so no tip has run the gate since #28041 merged (00:35:22Z). This gives the tip the gate without a CI change:
cmux-ci run --class exclusive --label measure --label gui-session-v1 --script scripts/measure/crash-gate.sh --ref SHA crash-ends-app-gate.py: the message "the app's debug socket never answered" (run 41132712722 attempt 1, the only gate result of #28041) gave no cause. The message now names the socket path, whether it exists, whether the app still runs, and the last reply. A timeout means the main thread did not servedebug.crashes; a refused connect means no listener. The pass and fail rules do not change.
The script must be on feat-cmux-next before the controller runs it (an unlisted scripts/measure script runs only at a commit on a reviewed branch, and the worker checks its bytes against the branch tip).
Changelog
none
Observed / Not run
- Observed:
bash -nandpy_compilepass;prepush-gate.pyreports no new violations. The CI log of run 41132712722 (job 124327772537, cmuxs-Mac-mini-4): both launches ran 180 s,app-*.logholds only the open-file limit line, both runs end "debug socket never answered". - Not run: the fleet step itself (it needs this commit on
feat-cmux-next). It runs on the tip right after merge; the result goes in a comment here.
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Adds a fleet step that runs the cmux-next crash gate on a tagged Debug build of any feat commit, since CI skips that gate on feat-cmux-next pushes. The step builds the app via reload.sh (the same route as tab-switch.sh) and runs crash-ends-app-gate.py; pass and fail rules are unchanged. Run it per commit with cmux-ci run --class exclusive --label measure --label gui-session-v1 --script scripts/measure/crash-gate.sh --ref SHA.
The gate's socket-timeout message now says what the socket did: its path, whether it exists, whether the app still runs, and the last reply. A timeout means the main thread never served debug.crashes; a refused connect means no listener.