muster release v5.23.6

Fixed

  • muster test: two races of the harness under --parallel 50, both seen once in CI on 2026-09-15. test_restart_mock_oauth_server listened again on the port the old server had just released, and any socket on the host could take it in between – the mocks listen on kernel-assigned ephemeral ports, the range every outgoing connection draws from (failed to listen again on port 45841: bind: address already in use). The mock now keeps its socket bound across the restart and replaces only the server behind it, as a Service keeps its address while the pod is replaced. And a step whose call to muster serve never returns (a wait_for_state poll still pending when its budget ran out; oauth-subject-grant-refresh failed that way with an instance that kept logging and a harness that kept finishing other scenarios) is reported as stalled instead of “expectations not met”, and the runner records where everything was: muster serve gets SIGQUIT so its goroutines end the instance stderr of the report, the harness’s goroutines are stored as harness_goroutines, and the failure line points at both. The harness also runs the muster binary it is part of before consulting PATH: a stale go install first on PATH ran the suite against the wrong muster serve.