From d3e80732c91ae1ce37ce1f8e2dce80555f78ffae Mon Sep 17 00:00:00 2001 From: forkwright Date: Sat, 15 Aug 2026 15:26:39 -0500 Subject: [PATCH 1/2] fix(toolchain): build theatron on stable rather than nightly Nothing here requires nightly: there is no `#![feature(...)]` anywhere in the crates, and rustfmt.toml declares only `edition = "2024"`. The channel was nevertheless nightly, which both CI and every local checkout inherited. That is gratuitous instability for a released library. Nightly moves daily, so a build can go red from a compiler change with no commit of ours behind it -- and this repo's scheduled Security workflow has been failing intermittently. Stable also matches the consuming workspace: aletheia pins a stable channel and builds these crates from a git dependency, so the library was being developed on a different compiler from the one that ships it. --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 8e275b7..73cb934 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly" +channel = "stable" components = ["rustfmt", "clippy"] From 8f531b778f549e5d2a6632f14089738b2a007c0d Mon Sep 17 00:00:00 2001 From: forkwright Date: Sat, 15 Aug 2026 16:34:39 -0500 Subject: [PATCH 2/2] fix(keryx): collapse the SSE id guard so it passes on stable clippy The nightly channel was hiding one lint: an inner `if` inside a match arm that stable's collapsible_match flags. Expressed as a match guard instead. Behaviour is unchanged. A NUL-bearing id previously matched the arm and the inner condition skipped the assignment; it now falls through to the ignore arm and is discarded there. Either way the value is not stored, which is what the WHATWG SSE spec requires. --- crates/keryx/src/sse.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/keryx/src/sse.rs b/crates/keryx/src/sse.rs index 1447ba6..f8ab4e9 100644 --- a/crates/keryx/src/sse.rs +++ b/crates/keryx/src/sse.rs @@ -171,12 +171,12 @@ where "event" => { self.current_event = Some(value.to_string()); } - "id" => { - // WHY: WHATWG SSE spec — an id field value containing - // U+0000 NULL must be ignored, not stored. - if !value.contains('\0') { - self.current_id = Some(value.to_string()); - } + // WHY: WHATWG SSE spec — an id field value containing U+0000 NULL + // must be ignored, not stored. Expressed as a guard rather than an + // inner `if` so a NUL-bearing id falls through to the ignore arm, + // which is the same outcome by a shorter path. + "id" if !value.contains('\0') => { + self.current_id = Some(value.to_string()); } "retry" => { if let Ok(ms) = value.parse::() {