test(cli): bound the version probe by the wedge, not a clock - #3092
Merged
Merged
Conversation
`a_descendant_holding_stdout_cannot_hold_the_probe_past_its_deadline` asserted `elapsed() < 5s` while its descendant held the inherited pipe for 20 s. The 5 s stood in for "the probe did not wait for the pipe" without saying so. The hold is now a named constant, and the bound is that hold: a probe returning at or after it waited for the descendant. The overfill test's bare 2 s becomes `VERSION_PROBE_DEADLINE`, the deadline a wait-before-read probe would run into. Not reproduced on master: 30 runs of the version_probe module at 16 test threads pinned to cores 0-1 with 128 competing spinners passed. The same harness passes 30 of 30 with this change.
|
Contributor
There was a problem hiding this comment.
🔍 Devin Review: 2 flags
Not posted on this PR by your GitHub settings — view them in Devin Review. (Configure)
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.
Ports what is still needed from
fix/load-sensitive-test-bounds(written 2026-09-21, about 1,350 commits behind master). One of its four commits still applies, in narrowed form. Master already fixed the other three.Kept: 6f21ffe, narrowed (
test(cli): bound the version probe by the wedge, not a clock)Target:
a_descendant_holding_stdout_cannot_hold_the_probe_past_its_deadlineincrates/tracedecay-cli/src/upgrade.rs.Cause: the test asserts
elapsed() < 5swhile its descendant holds the inherited stdout pipe for 20 s. The 5 s stands in for "the probe returned on its own deadline and did not wait for the pipe". The descendant's hold is now a named constant (DESCENDANT_PIPE_HOLD, 30 s), and the assertion uses it. A probe that returns at or after the hold waited for the pipe. The overfill test's bare< 2sbecomes< VERSION_PROBE_DEADLINE, the deadline that a wait-before-read probe would run into.Failing before: NOT REPRODUCED. Harness: the
upgrade::tests::version_probemodule (7 tests) at--test-threads=16, pinned withtaskset -c 0-1, with N busy-loop spinners pinned to the same two cores.The change is kept because it replaces a raw wall-clock bound that stands in for a liveness fact.
Passing after: the same N=128 harness passed 30 of 30.
cargo test -p tracedecay-cli --bin tracedecay: 354 passed, 0 failed.Not ported from this commit: the rewrite of
a_wedged_binary_is_killed_and_reaped_at_the_deadline(pid file, then a/procscan). Master already replaced the pid-file race. Its child now blocks on a FIFO, andprocesses_runningscans/procfor the script path. The original commit'sWEDGED_PROBE_DEADLINE(300 ms raised to 1 s) existed for that race, so it is not ported either.Dropped
test(daemon): name the graph-activation liveness ceiling. Its target,failed_cold_mount_graph_replay_preserves_retained_text_generation, no longer has a clock. Master now awaitsCodeIndexOwnerSignalsV1::changed()for the decode, text-readiness and seat waits, so the 5 s poll deadline that failed under load is gone.test(code-index): share one ceiling for the readiness waits. Master already boundswait_for_dashboard_readyandwait_for_event_to_readywithSERVING_SEAT_FAILURE_CEILING(feat(code-index): publish owner activity signals and await them in tests #2107, fix(code-index): drop wall budgets from load-sensitive waits #2600 / 7736848).test(mcp): keep response-handle sweeps in their own home. fix(test): isolate response-handle fixture profile #1965 (338773e) makesproduction_composition_fixturehold anIsolatedEnvwithTRACEDECAY_DATA_DIRand global-DB guards. It also asserts that the response-handle root is inside the fixture profile. This commit is now redundant.Gates
cargo fmt --all -- --check: pass.cargo test -p tracedecay-cli --bin tracedecay: 354 passed. The host-CLI fixture example must be built first.cargo clippy --workspace --all-targets --locked -- -D warnings: fails on master, not on this diff.items_after_test_moduleincrates/tracedecay-code-index/src/production/generation_statistics.rs:72, from f4b8918.match_boolincrates/tracedecay-mcp/src/handlers/analysis/hotspots.rs:73.Open PR fix(ci): repair lanes broken by retrieval disclosure commit #3090 fixes both. With those two fixes applied locally and not committed here, workspace clippy exits 0 on this branch.