//! Credential-blind Pi native model composition. //! //! The only Pi-layer input is [`PiRawValidProvider`]. This module does not //! import managed DTOs or gateway families, and it never resolves credentials, //! environment variables, commands, files, or network resources. #![allow(dead_code)] use super::{ merge_pi_compat, raw_schema::{PiRawApiId, PiRawValidProvider}, }; use serde_json::{json, Map, Value}; use std::collections::{BTreeMap, HashSet}; const PROVIDER_FIELDS: &[&str] = &[ "name", "baseUrl", "apiKey", "api", "oauth", "headers", "compat", "authHeader", "models", "modelOverrides", ]; const MODEL_FIELDS: &[&str] = &[ "id", "name", "baseUrl", "api", "reasoning", "thinkingLevelMap", "input", "cost", "contextWindow", "maxTokens", "headers", "compat", ]; const OVERRIDE_FIELDS: &[&str] = &[ "name", "reasoning", "thinkingLevelMap", "input", "cost", "contextWindow", "maxTokens", "headers", "compat", ]; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub(crate) enum PiComposerStatus { Composed, Failed, Unknown, } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub(crate) enum PiComposerReasonCode { CatalogRequired, MissingExplicitModels, MissingEffectiveApi, MissingEffectiveEndpoint, NonPositiveModelLimit, UnrepresentableCompat, CompositionFailed, } #[derive(Debug, Clone, PartialEq, Eq)] pub(crate) struct PiComposerReason { pub code: PiComposerReasonCode, pub json_pointer: String, } /// One configured header together with the source pointer that Pi resolves. /// /// `headers` remains the pinned composer's flattened observable result, while /// these entries retain the provider-vs-model boundary needed to reproduce /// the later `ModelRuntime` merge on the wire. #[derive(Debug, Clone, PartialEq, Eq)] pub(crate) struct PiComposedHeader { pub name: String, pub value: String, pub json_pointer: String, } /// The lossless native result of pinned Pi composition. #[derive(Debug, Clone, PartialEq)] pub(crate) struct PiComposedNativeModel { pub id: String, pub name: String, pub api: PiRawApiId, pub provider: String, pub base_url: String, pub reasoning: bool, pub thinking_level_map: Option, pub input: Value, pub cost: Value, pub context_window: Value, pub max_tokens: Value, pub headers: BTreeMap, pub provider_headers: Vec, pub model_headers: Vec, pub compat: Option, pub api_key: Option, pub oauth: Option, pub auth_header: bool, pub provider_extra: BTreeMap, pub model_extra: BTreeMap, pub override_extra: BTreeMap, } #[derive(Debug, Clone, PartialEq)] pub(crate) struct PiNativeComposition { pub status: PiComposerStatus, pub provider_id: Option, pub provider_name: Option, pub provider_base_url: Option, pub models: Vec, pub ignored_override_keys: Vec, pub reasons: Vec, } impl PiNativeComposition { pub(super) fn unavailable_without_valid_raw() -> Self { Self { status: PiComposerStatus::Unknown, provider_id: None, provider_name: None, provider_base_url: None, models: Vec::new(), ignored_override_keys: Vec::new(), reasons: Vec::new(), } } pub(super) fn catalog_required(pointer: &str) -> Self { Self { status: PiComposerStatus::Unknown, provider_id: None, provider_name: None, provider_base_url: None, models: Vec::new(), ignored_override_keys: Vec::new(), reasons: vec![PiComposerReason { code: PiComposerReasonCode::CatalogRequired, json_pointer: pointer.to_string(), }], } } fn failed(code: PiComposerReasonCode, pointer: impl Into) -> Self { Self { status: PiComposerStatus::Failed, provider_id: None, provider_name: None, provider_base_url: None, models: Vec::new(), ignored_override_keys: Vec::new(), reasons: vec![PiComposerReason { code, json_pointer: pointer.into(), }], } } fn unknown(code: PiComposerReasonCode, pointer: impl Into) -> Self { Self { status: PiComposerStatus::Unknown, provider_id: None, provider_name: None, provider_base_url: None, models: Vec::new(), ignored_override_keys: Vec::new(), reasons: vec![PiComposerReason { code, json_pointer: pointer.into(), }], } } } pub(super) fn compose_explicit_custom_catalog( provider_id: &str, provider: &PiRawValidProvider, ) -> PiNativeComposition { let Some(provider_object) = provider.raw().as_object() else { return PiNativeComposition::failed(PiComposerReasonCode::CompositionFailed, ""); }; let Some(definitions) = provider_object .get("models") .and_then(Value::as_array) .filter(|models| !models.is_empty()) else { return PiNativeComposition::failed(PiComposerReasonCode::MissingExplicitModels, "/models"); }; let provider_api = provider_object.get("api").and_then(Value::as_str); let provider_base_url = provider_object.get("baseUrl").and_then(Value::as_str); if provider_object.get("oauth").and_then(Value::as_str) == Some("radius") && provider_base_url.is_none() { return PiNativeComposition::failed( PiComposerReasonCode::MissingEffectiveEndpoint, "/baseUrl", ); } let provider_compat = provider_object.get("compat").cloned(); let provider_header_entries = header_entries(provider_object.get("headers"), "/headers"); let provider_headers = provider_header_entries .iter() .map(|entry| (entry.name.clone(), entry.value.clone())) .collect::>(); let provider_extra = unknown_fields(provider_object, PROVIDER_FIELDS); let api_key = provider_object .get("apiKey") .and_then(Value::as_str) .map(ToOwned::to_owned); let oauth = provider_object.get("oauth").cloned(); let auth_header = provider_object .get("authHeader") .and_then(Value::as_bool) .unwrap_or(false); let overrides = provider_object .get("modelOverrides") .and_then(Value::as_object); let mut models: Vec = Vec::with_capacity(definitions.len()); for (index, definition_value) in definitions.iter().enumerate() { let Some(definition) = definition_value.as_object() else { return PiNativeComposition::failed( PiComposerReasonCode::CompositionFailed, format!("/models/{index}"), ); }; let Some(id) = definition.get("id").and_then(Value::as_str) else { return PiNativeComposition::failed( PiComposerReasonCode::CompositionFailed, format!("/models/{index}/id"), ); }; let existing_index = models.iter().position(|model| model.id == id); let defaults = existing_index .and_then(|position| models.get(position)) .or_else(|| models.first()); let api_value = definition .get("api") .and_then(Value::as_str) .or(provider_api) .or_else(|| defaults.map(|model| model.api.as_str())); let Some(api_value) = api_value else { return PiNativeComposition::failed( PiComposerReasonCode::MissingEffectiveApi, format!("/models/{index}/api"), ); }; let Some(api) = PiRawApiId::new(api_value) else { return PiNativeComposition::failed( PiComposerReasonCode::MissingEffectiveApi, format!("/models/{index}/api"), ); }; let base_url = definition .get("baseUrl") .and_then(Value::as_str) .or(provider_base_url) .or_else(|| defaults.map(|model| model.base_url.as_str())); let Some(base_url) = base_url.filter(|value| !value.is_empty()) else { return PiNativeComposition::failed( PiComposerReasonCode::MissingEffectiveEndpoint, format!("/models/{index}/baseUrl"), ); }; for (field, code) in [ ("contextWindow", PiComposerReasonCode::NonPositiveModelLimit), ("maxTokens", PiComposerReasonCode::NonPositiveModelLimit), ] { if definition .get(field) .and_then(Value::as_f64) .is_some_and(|value| value <= 0.0) { return PiNativeComposition::failed(code, format!("/models/{index}/{field}")); } } let compat = match merge_pi_compat(provider_compat.clone(), definition.get("compat").cloned()) { Ok(compat) => compat, Err(_) => { return PiNativeComposition::unknown( PiComposerReasonCode::UnrepresentableCompat, format!("/models/{index}/compat"), ) } }; let model = PiComposedNativeModel { id: id.to_string(), name: definition .get("name") .and_then(Value::as_str) .unwrap_or(id) .to_string(), api, provider: provider_id.to_string(), base_url: base_url.to_string(), reasoning: definition .get("reasoning") .and_then(Value::as_bool) .unwrap_or(false), thinking_level_map: definition.get("thinkingLevelMap").cloned(), input: definition .get("input") .cloned() .unwrap_or_else(|| json!(["text"])), cost: definition.get("cost").cloned().unwrap_or_else(default_cost), context_window: definition .get("contextWindow") .cloned() .unwrap_or_else(|| json!(128000)), max_tokens: definition .get("maxTokens") .cloned() .unwrap_or_else(|| json!(16384)), headers: BTreeMap::new(), provider_headers: provider_header_entries.clone(), model_headers: Vec::new(), compat, api_key: api_key.clone(), oauth: oauth.clone(), auth_header, provider_extra: provider_extra.clone(), model_extra: unknown_fields(definition, MODEL_FIELDS), override_extra: BTreeMap::new(), }; if let Some(existing_index) = existing_index { models[existing_index] = model; } else { models.push(model); } } for model in &mut models { // Pinned Pi's rawModelHeaders uses Array.find, so duplicate model // definitions obtain request headers from the first definition even // though the later definition replaces the composed model slot. let (definition_index, definition) = definitions .iter() .enumerate() .find_map(|(index, definition)| { definition .as_object() .filter(|definition| { definition.get("id").and_then(Value::as_str) == Some(model.id.as_str()) }) .map(|definition| (index, definition)) }) .expect("raw-valid composed model has a source definition"); let model_override = overrides.and_then(|overrides| overrides.get(&model.id).and_then(Value::as_object)); // rawModelHeaders constructs one case-sensitive JavaScript object from // override headers followed by the first matching model definition. // Exact-name replacement keeps its insertion slot; differently-cased // names remain distinct until ModelRuntime performs its later // case-insensitive HTTP merge. let mut model_headers = Vec::new(); if let Some(model_override) = model_override { overlay_header_entries( &mut model_headers, header_entries( model_override.get("headers"), &format!("/modelOverrides/{}/headers", escape_json_pointer(&model.id)), ), ); } overlay_header_entries( &mut model_headers, header_entries( definition.get("headers"), &format!("/models/{definition_index}/headers"), ), ); let mut headers = provider_headers.clone(); for entry in &model_headers { headers.insert(entry.name.clone(), entry.value.clone()); } model.headers = headers; model.model_headers = model_headers; if let Some(model_override) = model_override { if let Some(name) = model_override.get("name").and_then(Value::as_str) { model.name = name.to_string(); } if let Some(reasoning) = model_override.get("reasoning").and_then(Value::as_bool) { model.reasoning = reasoning; } if let Some(override_map) = model_override .get("thinkingLevelMap") .and_then(Value::as_object) { let mut merged = model .thinking_level_map .take() .and_then(|value| value.as_object().cloned()) .unwrap_or_default(); merged.extend(override_map.clone()); model.thinking_level_map = Some(Value::Object(merged)); } if let Some(input) = model_override.get("input") { model.input = input.clone(); } if let Some(cost) = model_override.get("cost").and_then(Value::as_object) { model.cost = merge_cost(&model.cost, cost); } if let Some(context_window) = model_override.get("contextWindow") { model.context_window = context_window.clone(); } if let Some(max_tokens) = model_override.get("maxTokens") { model.max_tokens = max_tokens.clone(); } model.compat = match merge_pi_compat( model.compat.clone(), model_override.get("compat").cloned(), ) { Ok(compat) => compat, Err(_) => { return PiNativeComposition::unknown( PiComposerReasonCode::UnrepresentableCompat, format!("/modelOverrides/{}/compat", escape_json_pointer(&model.id)), ) } }; model.override_extra = unknown_fields(model_override, OVERRIDE_FIELDS); } } let model_ids = models .iter() .map(|model| model.id.as_str()) .collect::>(); let ignored_override_keys = overrides .into_iter() .flat_map(|overrides| overrides.keys()) .filter(|model_id| !model_ids.contains(model_id.as_str())) .cloned() .collect(); PiNativeComposition { status: PiComposerStatus::Composed, provider_id: Some(provider_id.to_string()), provider_name: Some( provider_object .get("name") .and_then(Value::as_str) .unwrap_or(provider_id) .to_string(), ), provider_base_url: provider_base_url.map(ToOwned::to_owned), models, ignored_override_keys, reasons: Vec::new(), } } fn default_cost() -> Value { json!({ "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }) } fn merge_cost(base: &Value, overlay: &Map) -> Value { let base = base.as_object(); let mut merged = Map::new(); for key in ["input", "output", "cacheRead", "cacheWrite", "tiers"] { if let Some(value) = overlay .get(key) .or_else(|| base.and_then(|base| base.get(key))) { merged.insert(key.to_string(), value.clone()); } } Value::Object(merged) } fn header_entries(value: Option<&Value>, base_pointer: &str) -> Vec { value .and_then(Value::as_object) .into_iter() .flat_map(|object| object.iter()) .filter_map(|(name, value)| { value.as_str().map(|value| PiComposedHeader { name: name.clone(), value: value.to_string(), json_pointer: format!("{base_pointer}/{}", escape_json_pointer(name)), }) }) .collect() } fn overlay_header_entries( base: &mut Vec, overlay: impl IntoIterator, ) { for entry in overlay { if let Some(existing) = base.iter_mut().find(|existing| existing.name == entry.name) { *existing = entry; } else { base.push(entry); } } } fn escape_json_pointer(segment: &str) -> String { segment.replace('~', "~0").replace('/', "~1") } fn unknown_fields(object: &Map, recognized: &[&str]) -> BTreeMap { object .iter() .filter(|(key, _)| !recognized.contains(&key.as_str())) .map(|(key, value)| (key.clone(), value.clone())) .collect() } #[cfg(test)] mod tests { use super::*; use crate::pi_config::raw_schema::{evaluate_provider_value, PiRawValidity}; use serde::Deserialize; const COMPOSER_ORACLE_SOURCE: &str = include_str!("../../../tests/fixtures/pi/native-oracle/composer-oracle-v1.json"); #[derive(Deserialize)] #[serde(rename_all = "camelCase")] struct ComposerOracle { cases: Vec, fail_closed_cases: Vec, } #[derive(Deserialize)] #[serde(rename_all = "camelCase")] struct ComposerOracleCase { id: String, provider_id: String, input: Value, execution: Execution, #[serde(default)] auth_execution: Option, #[serde(default)] expected: Option, #[serde(default)] expected_error: Option, } #[derive(Deserialize)] struct Execution { status: String, } #[derive(Deserialize)] #[serde(rename_all = "camelCase")] struct FailClosedCase { id: String, rust_expected_status: String, reason_code: String, } fn model_as_oracle_value(model: &PiComposedNativeModel) -> Value { let mut object = Map::new(); object.insert("id".into(), json!(model.id)); object.insert("name".into(), json!(model.name)); object.insert("api".into(), json!(model.api.as_str())); object.insert("provider".into(), json!(model.provider)); object.insert("baseUrl".into(), json!(model.base_url)); object.insert("reasoning".into(), json!(model.reasoning)); if let Some(thinking) = &model.thinking_level_map { object.insert("thinkingLevelMap".into(), thinking.clone()); } object.insert("input".into(), model.input.clone()); object.insert("cost".into(), model.cost.clone()); object.insert("contextWindow".into(), model.context_window.clone()); object.insert("maxTokens".into(), model.max_tokens.clone()); object.insert("authHeader".into(), json!(model.auth_header)); if let Some(compat) = &model.compat { object.insert("compat".into(), compat.clone()); } if !model.headers.is_empty() { object.insert("headers".into(), json!(model.headers)); } Value::Object(object) } fn provider_as_oracle_value(composition: &PiNativeComposition) -> Value { let mut object = Map::new(); object.insert( "id".into(), json!(composition .provider_id .as_ref() .expect("composed provider id")), ); object.insert( "name".into(), json!(composition .provider_name .as_ref() .expect("composed provider name")), ); if let Some(base_url) = &composition.provider_base_url { object.insert("baseUrl".into(), json!(base_url)); } Value::Object(object) } fn json_numbers_equal(left: &Value, right: &Value) -> bool { match (left, right) { (Value::Number(left), Value::Number(right)) => left.as_f64() == right.as_f64(), (Value::Array(left), Value::Array(right)) => { left.len() == right.len() && left .iter() .zip(right) .all(|(left, right)| json_numbers_equal(left, right)) } (Value::Object(left), Value::Object(right)) => { left.len() == right.len() && left.iter().all(|(key, left)| { right .get(key) .is_some_and(|right| json_numbers_equal(left, right)) }) } _ => left == right, } } #[test] fn rust_composer_matches_actual_pinned_upstream_execution() { let oracle: ComposerOracle = serde_json::from_str(COMPOSER_ORACLE_SOURCE).expect("parse composer oracle"); for case in oracle.cases { let raw = evaluate_provider_value(&case.input); if case.execution.status == "error" { assert!( case.expected_error.is_some(), "upstream error vector '{}' records its actual error", case.id ); match raw.validity { PiRawValidity::Invalid => {} PiRawValidity::Valid => { let result = compose_explicit_custom_catalog( &case.provider_id, raw.valid_provider.as_ref().expect("raw-valid provider"), ); assert_eq!( result.status, PiComposerStatus::Failed, "raw-valid upstream error case '{}'", case.id ); } PiRawValidity::Unknown => { panic!("oracle case '{}' unexpectedly became Unknown", case.id) } } continue; } assert_eq!(raw.validity, PiRawValidity::Valid, "case '{}'", case.id); let result = compose_explicit_custom_catalog( &case.provider_id, raw.valid_provider.as_ref().expect("raw-valid provider"), ); assert_eq!( result.status, PiComposerStatus::Composed, "case '{}'", case.id ); let auth_execution = case .auth_execution .as_ref() .expect("successful composer case records actual auth execution"); assert_eq!( auth_execution.pointer("/status").and_then(Value::as_str), Some("success"), "case '{}'", case.id ); let actual_resolved_key = auth_execution .pointer("/result/auth/apiKey") .and_then(Value::as_str) .expect("successful literal composer vector resolves an API key"); assert!( result .models .iter() .all(|model| { model.api_key.as_deref() == Some(actual_resolved_key) }), "case '{}' preserves the same literal key that pinned Pi resolved", case.id ); if case .input .get("authHeader") .and_then(Value::as_bool) .unwrap_or(false) { let expected_bearer = format!("Bearer {actual_resolved_key}"); assert_eq!( auth_execution .pointer("/result/auth/headers/Authorization") .and_then(Value::as_str), Some(expected_bearer.as_str()), "case '{}' uses pinned Pi authHeader behavior", case.id ); } let actual = json!({ "provider": provider_as_oracle_value(&result), "models": result .models .iter() .map(model_as_oracle_value) .collect::>(), "ignoredOverrideKeys": result.ignored_override_keys, }); let expected = case.expected.expect("successful upstream expected output"); assert!( json_numbers_equal(&actual, &expected), "oracle case '{}'\nactual: {actual:#}\nexpected: {expected:#}", case.id ); } } #[test] fn unavailable_upstream_catalog_semantics_are_explicitly_unknown() { let oracle: ComposerOracle = serde_json::from_str(COMPOSER_ORACLE_SOURCE).expect("parse composer oracle"); assert_eq!(oracle.fail_closed_cases.len(), 2); for case in oracle.fail_closed_cases { assert_eq!(case.rust_expected_status, "unknown", "case '{}'", case.id); assert_eq!(case.reason_code, "catalog_required", "case '{}'", case.id); let result = PiNativeComposition::catalog_required("/models"); assert_eq!(result.status, PiComposerStatus::Unknown); assert_eq!( result.reasons[0].code, PiComposerReasonCode::CatalogRequired ); } } #[test] fn credential_expressions_are_preserved_without_execution() { let value = json!({ "api": "openai-responses", "baseUrl": "https://example.test/v1", "apiKey": "!read-secret", "oauth": "radius", "authHeader": true, "headers": {"x-tenant": "${TENANT}"}, "models": [{"id": "m"}] }); let raw = evaluate_provider_value(&value); let composed = compose_explicit_custom_catalog( "deferred", raw.valid_provider.as_ref().expect("raw-valid"), ); assert_eq!(composed.status, PiComposerStatus::Composed); assert_eq!(composed.models[0].api_key.as_deref(), Some("!read-secret")); assert_eq!(composed.models[0].oauth, Some(json!("radius"))); assert!(composed.models[0].auth_header); assert_eq!(composed.models[0].headers["x-tenant"], "${TENANT}"); } #[test] fn pinned_cost_override_reconstructs_only_known_cost_members() { let value = json!({ "api": "anthropic-messages", "baseUrl": "https://cost.example", "apiKey": "literal", "models": [{ "id": "m", "cost": { "input": 1, "output": 2, "cacheRead": 0.1, "cacheWrite": 0.2, "futureRate": 9 } }], "modelOverrides": { "m": {"cost": {"output": 3}} } }); let raw = evaluate_provider_value(&value); let composed = compose_explicit_custom_catalog( "cost-shape", raw.valid_provider.as_ref().expect("raw-valid"), ); assert_eq!( composed.models[0].cost, json!({ "input": 1, "output": 3, "cacheRead": 0.1, "cacheWrite": 0.2 }), "pinned applyModelOverride drops unknown base cost keys when an override exists" ); } #[test] fn compat_spread_matches_pinned_composer_request_capture() { let value = json!({ "api": "openai-responses", "baseUrl": "https://compat.example/v1", "apiKey": "literal", "compat": { "openRouterRouting": ["first", "second"], "chatTemplateKwargs": "ab", "baseOnly": true }, "models": [{ "id": "m", "compat": {"supportsStore": true} }], "modelOverrides": { "m": { "compat": { "openRouterRouting": null, "chatTemplateKwargs": {"named": true}, "overlayOnly": true } } } }); let raw = evaluate_provider_value(&value); let composed = compose_explicit_custom_catalog( "compat-spread", raw.valid_provider.as_ref().expect("raw-valid"), ); assert_eq!( composed.models[0].compat, Some(json!({ "openRouterRouting": {"0": "first", "1": "second"}, "chatTemplateKwargs": {"0": "a", "1": "b", "named": true}, "baseOnly": true, "supportsStore": true, "overlayOnly": true })), "captured by scripts/pi-transport-capture.mjs at the pinned Pi commit" ); } #[test] fn compat_spread_fails_closed_when_pinned_output_requires_lone_surrogates() { let value = json!({ "api": "openai-responses", "baseUrl": "https://compat.example/v1", "apiKey": "literal", "compat": {"chatTemplateKwargs": "😀"}, "models": [{"id": "m"}], "modelOverrides": { "m": {"compat": {"chatTemplateKwargs": {"named": true}}} } }); let raw = evaluate_provider_value(&value); let composition = compose_explicit_custom_catalog( "compat-surrogate", raw.valid_provider.as_ref().expect("raw-valid"), ); assert_eq!(composition.status, PiComposerStatus::Unknown); assert_eq!( composition.reasons, vec![PiComposerReason { code: PiComposerReasonCode::UnrepresentableCompat, json_pointer: "/modelOverrides/m/compat".to_string(), }], "capture records UTF-16 d83d/de00 as two lone-surrogate values, which \ serde_json::Value cannot represent" ); } #[test] fn header_layers_retain_runtime_precedence_and_source_pointers() { let value = json!({ "api": "anthropic-messages", "baseUrl": "https://headers.example", "apiKey": "literal", "headers": {"authorization": "Bearer provider"}, "models": [{ "id": "m", "headers": {"Authorization": "Bearer model"} }], "modelOverrides": { "m": {"headers": {"x-layer": "override"}} } }); let raw = evaluate_provider_value(&value); let composed = compose_explicit_custom_catalog( "header-layers", raw.valid_provider.as_ref().expect("raw-valid"), ); let model = &composed.models[0]; assert_eq!( model.provider_headers[0].json_pointer, "/headers/authorization" ); assert_eq!( model .model_headers .iter() .map(|entry| (entry.name.as_str(), entry.value.as_str())) .collect::>(), vec![("x-layer", "override"), ("Authorization", "Bearer model")] ); } #[test] fn unknown_provider_model_and_override_fields_are_retained_losslessly() { let value = json!({ "api": "future-wire-v9", "baseUrl": "https://example.test/v9", "apiKey": "literal", "futureProviderShape": { "nested": [1, {"flag": true}] }, "models": [{ "id": "m", "futureModelShape": { "mode": "novel", "threshold": 0.125 } }], "modelOverrides": { "m": { "futureOverrideShape": [ null, {"preserve": "exactly"} ] } } }); let raw = evaluate_provider_value(&value); let composed = compose_explicit_custom_catalog( "lossless", raw.valid_provider.as_ref().expect("raw-valid"), ); assert_eq!(composed.status, PiComposerStatus::Composed); let model = &composed.models[0]; assert_eq!( model.provider_extra["futureProviderShape"], json!({"nested": [1, {"flag": true}]}) ); assert_eq!( model.model_extra["futureModelShape"], json!({"mode": "novel", "threshold": 0.125}) ); assert_eq!( model.override_extra["futureOverrideShape"], json!([null, {"preserve": "exactly"}]) ); } }