From cdf3b2be0c8dca9ba61a6496e46d9a755e5df982 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Thu, 15 Oct 2026 04:48:36 +0000 Subject: [PATCH 1/2] fix(bazel): name the dated nightly in RUSTUP_TOOLCHAIN for tests rules_rust reports a dated nightly's version as its compiler semver (1.100.0 for nightly-2026-09-27). The test launcher exported that as RUSTUP_TOOLCHAIN, which rustup reads as an uninstalled stable toolchain, so the daemon's rust-analyzer proxy was refused, no semantic route mounted, and production_lsp_negotiates_and_projects_canonical_context negotiated no documentSymbolProvider. Regressed with the nightly pin in f152080418 (#3883); 1.99.0 had been a valid rustup name. --- scripts/bazel/rust_test.bzl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/bazel/rust_test.bzl b/scripts/bazel/rust_test.bzl index b62908bbb24..93c6d83ff7b 100644 --- a/scripts/bazel/rust_test.bzl +++ b/scripts/bazel/rust_test.bzl @@ -137,7 +137,12 @@ def _isolated_rust_test_impl(ctx): runfiles = runfiles.merge(target[DefaultInfo].default_runfiles) test_environment = ctx.attr.test_binary[RunEnvironmentInfo] environment = dict(test_environment.environment) - environment["RUSTUP_TOOLCHAIN"] = toolchain.version + # rustup names a dated nightly or beta `-`. `version` alone + # is the compiler's semver (1.100.0 for nightly-2026-09-27), which rustup + # treats as an uninstalled stable toolchain, so rust-analyzer never starts. + environment["RUSTUP_TOOLCHAIN"] = ( + "{}-{}".format(toolchain.channel, toolchain.iso_date) if toolchain.iso_date else toolchain.version + ) environment["RUSTC_WRAPPER"] = "" environment["RUSTC_WORKSPACE_WRAPPER"] = "" return [ From def954d0119fe9b0eb2362739882e267087f1631 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Thu, 15 Oct 2026 04:48:39 +0000 Subject: [PATCH 2/2] test(runtime): expect Codex user response_item as its own turn a2a0cb1c53 (#3884) made a user response_item message a canonical turn beside its item_completed echo and updated the transcript ingest suites, but missed this runtime acceptance test, which still asserted the 9d1f430c1e dedupe. The malformed items still project nothing. --- .../host_event_fixture_test.rs | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/crates/tracedecay/tests/runtime_acceptance_suite/host_event_fixture_test.rs b/crates/tracedecay/tests/runtime_acceptance_suite/host_event_fixture_test.rs index c2f9330b8d5..5e6892d4cf7 100644 --- a/crates/tracedecay/tests/runtime_acceptance_suite/host_event_fixture_test.rs +++ b/crates/tracedecay/tests/runtime_acceptance_suite/host_event_fixture_test.rs @@ -795,7 +795,7 @@ async fn execute_native_provider_path(provider: &str, home: &Path) -> HostAdmiss } #[tokio::test] -async fn current_codex_user_pair_projects_once_and_rejects_malformed_items() { +async fn current_codex_user_pair_projects_each_record_and_rejects_malformed_items() { let tmp = TempDir::new().unwrap(); let project = tmp.path().join("project"); std::fs::create_dir_all(&project).unwrap(); @@ -913,13 +913,16 @@ async fn current_codex_user_pair_projects_once_and_rejects_malformed_items() { .await .unwrap(); - assert_eq!(projection.projected_outputs, 1); + // a2a0cb1c53 (#3884) made a user `response_item` message a turn of its + // own beside its `item_completed` echo. The two malformed items still + // project nothing. + assert_eq!(projection.projected_outputs, 2); assert_eq!( runtime .session_message_count_for_test(HostAdmissionScope::Project, None) .await .unwrap(), - 1 + 2 ); let messages = runtime .search_session_messages_for_test( @@ -931,8 +934,19 @@ async fn current_codex_user_pair_projects_once_and_rejects_malformed_items() { ) .await .unwrap(); - assert_eq!(messages.len(), 1); - assert_eq!(messages[0].message.message_id, "user-item-1"); + assert_eq!(messages.len(), 2); + assert!( + messages + .iter() + .all(|hit| hit.message.role == "user" && hit.message.text == prompt), + "{messages:?}" + ); + assert!( + messages + .iter() + .any(|hit| hit.message.message_id == "user-item-1"), + "{messages:?}" + ); } #[tokio::test]