From 4bd99ea583704a40487c25dec5eb5a80f5ff89a3 Mon Sep 17 00:00:00 2001 From: Evan Lezar Date: Mon, 31 Aug 2026 12:15:25 +0200 Subject: [PATCH 1/2] chore(deps): replace serde_yml with noyalib Signed-off-by: Evan Lezar --- Cargo.lock | 55 ++++++++----------- Cargo.toml | 2 +- e2e/rust/Cargo.lock | 51 +++++++++-------- e2e/rust/Cargo.toml | 2 +- examples/governance-interceptor/Cargo.lock | 61 ++++++++++----------- examples/governance-interceptor/Cargo.toml | 2 +- examples/governance-interceptor/src/main.rs | 7 +-- 7 files changed, 86 insertions(+), 94 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index edc940ea68..c713ace9ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3240,16 +3240,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "libyml" -version = "0.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3302702afa434ffa30847a83305f0a69d6abd74293b6554c18ec85c7ef30c980" -dependencies = [ - "anyhow", - "version_check", -] - [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -3558,6 +3548,22 @@ dependencies = [ "bitflags 2.11.1", ] +[[package]] +name = "noyalib" +version = "0.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f075ef19fa3bcf8697c0ef96c37d5c435d339a40ab8081cae3aac3a4e7fee9a" +dependencies = [ + "hashbrown 0.17.0", + "indexmap", + "libm", + "memchr", + "rustc-hash 2.1.2", + "serde", + "serde_core", + "smallvec", +] + [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -3793,6 +3799,7 @@ dependencies = [ "indicatif", "miette", "nix 0.29.0", + "noyalib", "oauth2", "openshell-bootstrap", "openshell-core", @@ -3808,7 +3815,6 @@ dependencies = [ "rustls-pemfile", "serde", "serde_json", - "serde_yml", "tar", "temp-env", "tempfile", @@ -3991,11 +3997,11 @@ version = "0.0.0" dependencies = [ "base64 0.22.1", "futures", + "noyalib", "openshell-core", "openshell-policy", "serde", "serde_json", - "serde_yml", "tempfile", "thiserror 2.0.18", "tokio", @@ -4212,11 +4218,11 @@ version = "0.0.0" dependencies = [ "hickory-proto", "miette", + "noyalib", "openshell-core", "prost-types", "serde", "serde_json", - "serde_yml", ] [[package]] @@ -4226,9 +4232,9 @@ dependencies = [ "glob", "include_dir", "miette", + "noyalib", "owo-colors", "serde", - "serde_yml", "z3", ] @@ -4237,11 +4243,11 @@ name = "openshell-providers" version = "0.0.0" dependencies = [ "glob", + "noyalib", "openshell-core", "openshell-policy", "serde", "serde_json", - "serde_yml", "thiserror 2.0.18", "url", ] @@ -4251,11 +4257,11 @@ name = "openshell-router" version = "0.0.0" dependencies = [ "bytes", + "noyalib", "openshell-core", "reqwest 0.12.28", "serde", "serde_json", - "serde_yml", "tempfile", "thiserror 2.0.18", "tokio", @@ -4471,6 +4477,7 @@ dependencies = [ "ipnet", "libc", "miette", + "noyalib", "openshell-core", "openshell-ocsf", "openshell-policy", @@ -4486,7 +4493,6 @@ dependencies = [ "rustls-pemfile", "serde", "serde_json", - "serde_yml", "sha1 0.10.6", "sha2 0.10.9", "spiffe", @@ -6309,21 +6315,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "serde_yml" -version = "0.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e2dd588bf1597a252c3b920e0143eb99b0f76e4e082f4c92ce34fbc9e71ddd" -dependencies = [ - "indexmap", - "itoa", - "libyml", - "memchr", - "ryu", - "serde", - "version_check", -] - [[package]] name = "serdect" version = "0.4.2" diff --git a/Cargo.toml b/Cargo.toml index 6936439a3b..47418d0fc5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,7 +80,7 @@ socket2 = "0.6" # Serialization serde = { version = "1", features = ["derive"] } serde_json = "1" -serde_yml = "0.0.12" +serde_yml = { package = "noyalib", version = "0.0.28", default-features = false, features = ["std", "compat-serde-yaml"] } toml = "0.8" apollo-parser = "0.8.5" tower-mcp-types = "0.12.0" diff --git a/e2e/rust/Cargo.lock b/e2e/rust/Cargo.lock index bbccb7496a..88049ec0dc 100644 --- a/e2e/rust/Cargo.lock +++ b/e2e/rust/Cargo.lock @@ -646,6 +646,8 @@ checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", "hashbrown", + "serde", + "serde_core", ] [[package]] @@ -696,14 +698,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] -name = "libyml" -version = "0.0.5" +name = "libm" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3302702afa434ffa30847a83305f0a69d6abd74293b6554c18ec85c7ef30c980" -dependencies = [ - "anyhow", - "version_check", -] +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "linux-raw-sys" @@ -773,6 +771,22 @@ dependencies = [ "libc", ] +[[package]] +name = "noyalib" +version = "0.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f075ef19fa3bcf8697c0ef96c37d5c435d339a40ab8081cae3aac3a4e7fee9a" +dependencies = [ + "hashbrown", + "indexmap", + "libm", + "memchr", + "rustc-hash", + "serde", + "serde_core", + "smallvec", +] + [[package]] name = "num-bigint" version = "0.4.8" @@ -827,11 +841,11 @@ dependencies = [ "hyper-util", "jsonwebtoken", "nix", + "noyalib", "prost", "rand", "serde", "serde_json", - "serde_yml", "serial_test", "sha1", "sha2", @@ -1038,6 +1052,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + [[package]] name = "rustix" version = "1.1.4" @@ -1135,21 +1155,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_yml" -version = "0.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e2dd588bf1597a252c3b920e0143eb99b0f76e4e082f4c92ce34fbc9e71ddd" -dependencies = [ - "indexmap", - "itoa", - "libyml", - "memchr", - "ryu", - "serde", - "version_check", -] - [[package]] name = "serial_test" version = "3.5.0" diff --git a/e2e/rust/Cargo.toml b/e2e/rust/Cargo.toml index 18556d0f7b..8d3632e950 100644 --- a/e2e/rust/Cargo.toml +++ b/e2e/rust/Cargo.toml @@ -217,7 +217,7 @@ hex = "0.4" rand = "0.9" serde = { version = "1", features = ["derive"] } serde_json = "1" -serde_yml = "0.0.12" +serde_yml = { package = "noyalib", version = "0.0.28", default-features = false, features = ["std", "compat-serde-yaml"] } tonic = { version = "0.14", features = ["transport"] } tonic-prost = "0.14" tower = "0.5" diff --git a/examples/governance-interceptor/Cargo.lock b/examples/governance-interceptor/Cargo.lock index d01fd3eee1..b946e1f55b 100644 --- a/examples/governance-interceptor/Cargo.lock +++ b/examples/governance-interceptor/Cargo.lock @@ -698,6 +698,8 @@ checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", "hashbrown 0.17.1", + "serde", + "serde_core", ] [[package]] @@ -809,14 +811,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] -name = "libyml" -version = "0.0.5" +name = "libm" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3302702afa434ffa30847a83305f0a69d6abd74293b6554c18ec85c7ef30c980" -dependencies = [ - "anyhow", - "version_check", -] +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "linux-raw-sys" @@ -931,6 +929,22 @@ dependencies = [ "libc", ] +[[package]] +name = "noyalib" +version = "0.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f075ef19fa3bcf8697c0ef96c37d5c435d339a40ab8081cae3aac3a4e7fee9a" +dependencies = [ + "hashbrown 0.17.1", + "indexmap", + "libm", + "memchr", + "rustc-hash", + "serde", + "serde_core", + "smallvec", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -1030,6 +1044,7 @@ name = "openshell-governance-interceptor-example" version = "0.0.0" dependencies = [ "jsonwebtoken", + "noyalib", "openshell-core", "openshell-policy", "openshell-providers", @@ -1039,7 +1054,6 @@ dependencies = [ "rcgen", "serde", "serde_json", - "serde_yml", "sha2", "tokio", "tonic", @@ -1051,11 +1065,11 @@ version = "0.0.0" dependencies = [ "hickory-proto", "miette", + "noyalib", "openshell-core", "prost-types", "serde", "serde_json", - "serde_yml", ] [[package]] @@ -1063,11 +1077,11 @@ name = "openshell-providers" version = "0.0.0" dependencies = [ "glob", + "noyalib", "openshell-core", "openshell-policy", "serde", "serde_json", - "serde_yml", "thiserror", "url", ] @@ -1462,6 +1476,12 @@ version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + [[package]] name = "rustc_version" version = "0.4.1" @@ -1546,12 +1566,6 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - [[package]] name = "same-file" version = "1.0.6" @@ -1658,21 +1672,6 @@ dependencies = [ "zmij", ] -[[package]] -name = "serde_yml" -version = "0.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e2dd588bf1597a252c3b920e0143eb99b0f76e4e082f4c92ce34fbc9e71ddd" -dependencies = [ - "indexmap", - "itoa", - "libyml", - "memchr", - "ryu", - "serde", - "version_check", -] - [[package]] name = "sha2" version = "0.10.9" diff --git a/examples/governance-interceptor/Cargo.toml b/examples/governance-interceptor/Cargo.toml index edf660033b..e55d18efdc 100644 --- a/examples/governance-interceptor/Cargo.toml +++ b/examples/governance-interceptor/Cargo.toml @@ -21,7 +21,7 @@ prost-types = "0.14" rcgen = { version = "0.13", features = ["crypto", "pem"] } serde = { version = "1", features = ["derive"] } serde_json = "1" -serde_yml = "0.0.12" +serde_yml = { package = "noyalib", version = "0.0.28", default-features = false, features = ["std", "compat-serde-yaml"] } sha2 = "0.10" tokio = { version = "1.43", features = ["macros", "rt-multi-thread", "fs", "signal"] } tonic = { version = "0.14", features = ["transport"] } diff --git a/examples/governance-interceptor/src/main.rs b/examples/governance-interceptor/src/main.rs index 4e9b38f409..207727622a 100644 --- a/examples/governance-interceptor/src/main.rs +++ b/examples/governance-interceptor/src/main.rs @@ -863,11 +863,8 @@ fn load_provider_profile_source( let mapping = value .as_mapping_mut() .ok_or_else(|| format!("provider profile {source} must be a YAML mapping"))?; - mapping.insert( - serde_yml::Value::String("id".to_string()), - serde_yml::Value::String(profile_id.to_string()), - ); - let profile = serde_yml::from_value::(value) + mapping.insert("id", serde_yml::Value::String(profile_id.to_string())); + let profile = serde_yml::from_value::(&value) .map_err(|err| format!("failed to decode provider profile {source}: {err}"))? .to_proto(); Ok(LoadedProviderProfile { profile }) From f8b73fa76b38cca9f677d624c65eb50b89566c5c Mon Sep 17 00:00:00 2001 From: Evan Lezar Date: Mon, 7 Sep 2026 14:19:15 +0200 Subject: [PATCH 2/2] fix(providers): annotate generic YAML test values Signed-off-by: Evan Lezar --- crates/openshell-providers/src/profiles.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/crates/openshell-providers/src/profiles.rs b/crates/openshell-providers/src/profiles.rs index cbf4d1ba95..9cdf2257ad 100644 --- a/crates/openshell-providers/src/profiles.rs +++ b/crates/openshell-providers/src/profiles.rs @@ -4157,8 +4157,9 @@ endpoints: assert!(parse_profile_yaml(yaml).is_err()); assert!(parse_profile_catalog_yamls(&[yaml]).is_err()); - let value = serde_yml::from_str(yaml).expect("generic YAML value must parse"); - assert!(serde_yml::from_value::(value).is_err()); + let value = + serde_yml::from_str::(yaml).expect("generic YAML value must parse"); + assert!(serde_yml::from_value::(&value).is_err()); for json in [ r#"{"id":"mcp-example","display_name":"MCP Example","endpoints":[{"host":"mcp.example.com","port":443,"protocol":"mcp","mcp":null}]}"#, @@ -4220,8 +4221,9 @@ mcp: endpoint_yaml.trim_start().replace('\n', "\n ") ); assert!(parse_profile_yaml(&profile_yaml).is_err()); - let value = serde_yml::from_str(&profile_yaml).expect("generic YAML value must parse"); - assert!(serde_yml::from_value::(value).is_err()); + let value = serde_yml::from_str::(&profile_yaml) + .expect("generic YAML value must parse"); + assert!(serde_yml::from_value::(&value).is_err()); let profile_json = format!( r#"{{"id":"mcp-example","display_name":"MCP Example","endpoints":[{endpoint_json}]}}"#