What happens
These tracedecay lib tests fail only under load. Each one passes when run alone. I found them while looping the lib suite for #2513 and did not investigate them.
How it was reproduced
- Binary: master d842ec3,
cargo test -p tracedecay --features test-transport --lib --no-run.
- Load: the whole lib suite, 772 tests, run with
--test-threads=64. Two to four copies ran at once on a 96-core host that was shared with other agents' builds.
- 50 runs in total.
| Test |
Failed runs (of 50) |
mcp::server::routing::tests::many_slow_initialize_roots_share_one_discovery_budget |
14 |
daemon::production_harness::advisory_cycle_language_journey_test::first_advisory_cycle_after_a_reopen_answers_without_a_retry |
13 |
daemon::tests::replay::client_identity_startup_replays_retained_profile_receipts |
10 |
mcp::server::host_admission_tests::owned_project_replay_worker_continues_past_one_bounded_batch |
7 |
daemon::production_harness::lcm_preserved_profile_journey_test::preserved_profile_lcm_discovery_converges_without_blocking_retrieval |
7 |
daemon::tests::lifecycle::one_shot_tool_call_allows_long_response_while_daemon_stays_live |
3 |
daemon::production_harness::generation_retention_test::mounted_code_generation_retention_continues_capped_segment_reclamation |
3 |
session_temporal_benchmark::tests::fresh_benchmark_db_provisions_key_for_rank_and_hydration |
2 |
session_temporal_benchmark::tests::fixture_refresh_persists_progress_before_measurement |
2 |
daemon::tests::route_discovery::a_deferred_discovery_converges_on_the_next_request |
1 |
corrupt_graph_restart_rebuilds_from_the_sealed_segments_without_decoding also failed in 10 of the 50 runs. #2633 already tracks it, so it is not listed here.
Known cause for one test
many_slow_initialize_roots_share_one_discovery_budget compares wall-clock time: it asserts elapsed < 3s across three 1.5s injected probes (crates/tracedecay/src/mcp/server/routing.rs). Under CPU contention the budget check fails before the deadline logic it is meant to test gets a chance to run.
I did not capture the panic text for the other tests. The run above reproduces them.
Repro
B=$(cargo test -p tracedecay --features test-transport --lib --no-run 2>&1 | sed -n 's/.*(\(target[^)]*\)).*/\1/p')
cd crates/tracedecay
for i in 1 2 3; do "../../$B" --test-threads=64 & done; wait
What happens
These
tracedecaylib tests fail only under load. Each one passes when run alone. I found them while looping the lib suite for #2513 and did not investigate them.How it was reproduced
cargo test -p tracedecay --features test-transport --lib --no-run.--test-threads=64. Two to four copies ran at once on a 96-core host that was shared with other agents' builds.mcp::server::routing::tests::many_slow_initialize_roots_share_one_discovery_budgetdaemon::production_harness::advisory_cycle_language_journey_test::first_advisory_cycle_after_a_reopen_answers_without_a_retrydaemon::tests::replay::client_identity_startup_replays_retained_profile_receiptsmcp::server::host_admission_tests::owned_project_replay_worker_continues_past_one_bounded_batchdaemon::production_harness::lcm_preserved_profile_journey_test::preserved_profile_lcm_discovery_converges_without_blocking_retrievaldaemon::tests::lifecycle::one_shot_tool_call_allows_long_response_while_daemon_stays_livedaemon::production_harness::generation_retention_test::mounted_code_generation_retention_continues_capped_segment_reclamationsession_temporal_benchmark::tests::fresh_benchmark_db_provisions_key_for_rank_and_hydrationsession_temporal_benchmark::tests::fixture_refresh_persists_progress_before_measurementdaemon::tests::route_discovery::a_deferred_discovery_converges_on_the_next_requestcorrupt_graph_restart_rebuilds_from_the_sealed_segments_without_decodingalso failed in 10 of the 50 runs. #2633 already tracks it, so it is not listed here.Known cause for one test
many_slow_initialize_roots_share_one_discovery_budgetcompares wall-clock time: it assertselapsed < 3sacross three 1.5s injected probes (crates/tracedecay/src/mcp/server/routing.rs). Under CPU contention the budget check fails before the deadline logic it is meant to test gets a chance to run.I did not capture the panic text for the other tests. The run above reproduces them.
Repro