WIP: unstick plugin PTY acceptance keep-alive hang on macOS CI - #5408
Draft
Hmbown wants to merge 2 commits into
Draft
WIP: unstick plugin PTY acceptance keep-alive hang on macOS CI#5408Hmbown wants to merge 2 commits into
Hmbown wants to merge 2 commits into
Conversation
The macos CI cucumber acceptance plugin_toml_binary_lifecycle_skill_and_stdio_mcp_acceptance dies at ~82s with no panic body. That wall time is ci_scaled(20s). The hermetic tiny_http fixture read POST bodies with read_to_string, which waits for EOF; a keep-alive client never closes, so the single-threaded server never answers the first chat POST. Read Content-Length only, send Connection: close, cover the keep-alive POST with a 2s fixture test, CI-scale wait_for_log, and fail with a short screen/log dump GitHub Actions will actually keep. Agent-assisted work. Nothing published. Co-authored-by: Hunter Bown <Hmbown@users.noreply.github.com>
The keep-alive fixture fix unblocked the first chat POST, then the same scenario died locally waiting for `/plugin trust demo <token>`. The token is two full SHA-256 digests (129 chars). Transcript cards wrap before that, so a single-line matcher never sees it. Join trimmed frame lines, require the 64-hex.64-hex pair, dump head and tail on failure, and cover the wrap with a unit test. Agent-assisted work. Nothing published. Co-authored-by: Hunter Bown <Hmbown@users.noreply.github.com>
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.
Summary
Investigates the required
CI / Test (macos-latest)failure on #5407.Job: https://github.com/Hmbown/CodeWhale/actions/runs/31884025530/job/95018096669
The cucumber test
plugin_toml_binary_lifecycle_skill_and_stdio_mcp_acceptancefails at ~82s with no---- stdout ----body. The same signature is onorigin/main(5ac75add4, job https://github.com/Hmbown/CodeWhale/actions/runs/31870651757/job/94978674482) and the parent. Ubuntu does not run this suite on PRs. This is a pre-existing test-fixture bug, not a #5407 product regression.82s is
ci_scaled(20s)plus cucumber overhead. Slash commands do not need the model; the first chat POST (call plugin echo) is what should surfaceDo you want to proceed?. The hermetictiny_httpfixture usedread_to_string, which waits for EOF. An HTTP/1.1 keep-alive client never closes, so the single-threaded server never answers. GitHub then drops the hugedebug_dumppanic, which is why the log only names the test.This change:
Content-Lengthonly and sendsConnection: closewait_for_loglike every other PTY waitIgnoring the required check would be dishonest. Skipping the test would be dishonest. This is a real fixture fix.
Testing
cargo fmt --all -- --checkcargo clippy --workspace --all-targets --all-features --locked(warning-free under the CI allow list)cargo test --workspace --all-features --lockedcargo test -p codewhale-tui --test cucumber --features long-running-tests limited_http_body_stops_at_content_length hermetic_model_server_answers_http11_keepalive_post plugin_toml_binary_lifecycle_skill_and_stdio_mcp_acceptance -- --test-threads=1Checklist