Fix: timing-resilient EmitServiceMessage (closes Listening_OutputVariableWithBase64Encoding flake)
Summary
-
Fix: add
Start-Sleep -Seconds 1(PowerShell) /sleep 1(bash) before the heredoc emit inEmitServiceMessagetest helper. -
Diagnosis: failure log shows
Parsed: [](zero variables parsed) — same root cause as Windows polling + concurrent tests had: pwsh.exe spawn (300-500ms) > script run-to-completion time, agent's stdout reader misses the emit. -
Same pattern as the existing
SleepThenEchoresilience adopted in those other tests.
Why this is in the test, not production
The flake reflects test-runner load characteristics on Windows GHA. The production agent's Halibut RPC + LocalScriptService work correctly when the script gives the reader time to attach. Operators don't run sub-100ms scripts that emit-and-exit immediately; their deployment scripts run for seconds-to-minutes. So this is a test-fidelity fix, not a production gap.
Test plan
-
dotnet buildgreen -
Windows CI: Listening_OutputVariableWithBase64Encoding(and the other 2 service-message tests using EmitServiceMessage) consistently green going forward -
No new tests needed — the existing tests are the regression pin