diff --git a/CHANGELOG.md b/CHANGELOG.md index eb74519..a36c081 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +- Reject malformed supplied shared, control and worker static tokens during + client construction, including unused or masked options. Diagnostics name + only the option. Empty tokens and valid token bytes retain their precedence. + - Add `Client::get_run_activities` with typed run activity and attempt metadata, preserving unavailable fields, diagnostic authority and heartbeat progress. diff --git a/Cargo.toml b/Cargo.toml index abb55b0..14e219b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ readme = "README.md" rust-version = "1.86" keywords = ["durable", "workflow", "temporal", "worker", "sdk"] categories = ["api-bindings", "asynchronous"] -include = ["/src/**", "/schema/**", "/examples/**", "/Cargo.toml", "/README.md", "/CHANGELOG.md", "/LICENSE", "/tests/fixtures/replay-regressions/published-php-complete-explicit-backoff.json", "/tests/fixtures/sdk-metrics-contract.json"] +include = ["/src/**", "/schema/**", "/examples/**", "/Cargo.toml", "/README.md", "/CHANGELOG.md", "/LICENSE", "/tests/fixtures/replay-regressions/published-php-complete-explicit-backoff.json", "/tests/fixtures/sdk-metrics-contract.json", "/tests/fixtures/auth-configuration/static-credentials-v1.json"] [package.metadata.durable-workflow] product-train = "4.12.0" diff --git a/src/lib.rs b/src/lib.rs index 56a5af3..f47f490 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -281,6 +281,11 @@ pub enum Error { "invalid Durable Workflow base URL: omit the SDK-owned /api suffix and pass the Server or Cloud runtime base URL; the SDK appends /api automatically" )] InvalidBaseUrl, + /// A supplied static credential failed validation before client construction. + #[error( + "invalid static credential option {option}: leading or trailing Unicode whitespace or control character" + )] + InvalidStaticCredential { option: &'static str }, #[error("invalid additional root certificates: {0}")] InvalidRootCertificates(String), #[error("invalid raw request: {0}")] @@ -5934,6 +5939,39 @@ pub struct ClientBuilder { danger_accept_invalid_certs: bool, } +fn validate_static_credential(option: &'static str, value: Option<&str>) -> Result<()> { + let Some(value) = value else { + return Ok(()); + }; + // The cross-SDK policy fixes Unicode White_Space at the edges and Cc + // anywhere. Do not normalize, trim, or broaden the accepted token alphabet. + let edge_whitespace = |character| { + matches!( + character, + '\u{0009}'..='\u{000d}' + | '\u{0020}' + | '\u{0085}' + | '\u{00a0}' + | '\u{1680}' + | '\u{2000}'..='\u{200a}' + | '\u{2028}' + | '\u{2029}' + | '\u{202f}' + | '\u{205f}' + | '\u{3000}' + ) + }; + if value.chars().next().is_some_and(edge_whitespace) + || value.chars().next_back().is_some_and(edge_whitespace) + || value + .chars() + .any(|character| matches!(character, '\u{0000}'..='\u{001f}' | '\u{007f}'..='\u{009f}')) + { + return Err(Error::InvalidStaticCredential { option }); + } + Ok(()) +} + impl ClientBuilder { /// Configure stable request metrics. Newly constructed workers inherit this recorder. pub fn metrics_recorder(mut self, recorder: Arc) -> Self { @@ -5946,16 +5984,22 @@ impl ClientBuilder { self } + /// Set the shared static token. Build validates every supplied token without + /// trimming it. `None` is absent; `Some("")` remains a supplied empty token. pub fn token(mut self, token: Option) -> Self { self.token = token; self } + /// Set the control-plane token, which takes precedence over the shared token + /// even when empty. Build also validates tokens for unused roles. pub fn control_token(mut self, token: Option) -> Self { self.control_token = token; self } + /// Set the worker-plane token, which takes precedence over the shared token + /// even when empty. Build also validates tokens for unused roles. pub fn worker_token(mut self, token: Option) -> Self { self.worker_token = token; self @@ -5979,6 +6023,9 @@ impl ClientBuilder { } pub fn build(self) -> Result { + validate_static_credential("token", self.token.as_deref())?; + validate_static_credential("control_token", self.control_token.as_deref())?; + validate_static_credential("worker_token", self.worker_token.as_deref())?; let base_url = self.base_url.trim_end_matches('/').to_string(); let has_sdk_api_suffix = reqwest::Url::parse(&base_url) .map(|url| url.path().trim_end_matches('/').ends_with("/api")) @@ -19299,6 +19346,7 @@ mod tests { mod nexus; mod runtime_payloads; mod runtime_uploads; + mod static_credentials; mod version_marker_contract; mod worker_capacity; mod worker_session; diff --git a/src/tests/static_credentials.rs b/src/tests/static_credentials.rs new file mode 100644 index 0000000..8769e9b --- /dev/null +++ b/src/tests/static_credentials.rs @@ -0,0 +1,188 @@ +use super::*; +use sha2::{Digest, Sha256}; + +const FIXTURE: &[u8] = + include_bytes!("../../tests/fixtures/auth-configuration/static-credentials-v1.json"); + +fn fixture() -> Value { + serde_json::from_slice(FIXTURE).unwrap() +} + +fn text(points: &Value) -> String { + points + .as_array() + .unwrap() + .iter() + .map(|point| char::from_u32(point.as_u64().unwrap().try_into().unwrap()).unwrap()) + .collect() +} + +fn configure(builder: ClientBuilder, option: &str, value: String) -> ClientBuilder { + match option { + "token" => builder.token(Some(value)), + "control_token" => builder.control_token(Some(value)), + "worker_token" => builder.worker_token(Some(value)), + _ => panic!("unknown fixture option"), + } +} + +fn invalid(result: Result, option: &str) { + let error = match result { + Err(error) => error, + Ok(_) => panic!("malformed {option} was accepted"), + }; + assert_eq!( + error.to_string(), + format!("invalid static credential option {option}: leading or trailing Unicode whitespace or control character") + ); + assert_eq!( + format!("{error:?}"), + format!("InvalidStaticCredential {{ option: {option:?} }}") + ); +} + +#[test] +fn frozen_static_credential_fixture_identity_and_rust_mapping() { + assert_eq!(FIXTURE.len(), 60_716); + assert_eq!( + format!("{:x}", Sha256::digest(FIXTURE)), + "0d4f01b763d72850943acbd9a74a0cc5da1ca6db5bc1b6fa5ca37fda11810acb" + ); + let fixture = fixture(); + assert_eq!( + fixture["language_mappings"]["rust"], + json!({ + "logical_setting_names": {"shared": "token", "control": "control_token", "worker": "worker_token"}, + "none": "existing-absence", + "some_literal_empty": "preserve-supplied-empty-and-fallback-precedence", + "opposite_only": "existing-role-refusal" + }) + ); +} + +#[test] +fn static_credential_common_scalar_vectors_validate_every_option() { + let fixture = fixture(); + let rows = fixture["common_scalar_cases"].as_array().unwrap(); + assert_eq!(rows.len(), 286); + for row in rows { + let value = text(&row["input_code_points"]); + for option in ["token", "control_token", "worker_token"] { + let result = + configure(Client::builder("http://127.0.0.1:1"), option, value.clone()).build(); + match row["expected"].as_str().unwrap() { + "preserve" => { + let client = result.unwrap(); + let protocol = if option == "worker_token" { + RequestProtocol::DefaultWorker + } else { + RequestProtocol::ControlPlane + }; + let selected = client.auth_token(protocol).unwrap().unwrap(); + let hex: String = selected.bytes().map(|byte| format!("{byte:02x}")).collect(); + assert_eq!(hex, row["expected_utf8_hex"].as_str().unwrap()); + assert_eq!(selected, value); + } + "reject" => invalid(result, option), + _ => panic!("unknown fixture verdict"), + } + } + } +} + +#[test] +fn static_credential_unused_and_masked_options_refuse_before_selection() { + let fixture = fixture(); + let rows = fixture["pre_selection_cases"].as_array().unwrap(); + assert_eq!(rows.len(), 3); + let names = &fixture["language_mappings"]["rust"]["logical_setting_names"]; + for row in rows { + let mut builder = Client::builder("http://127.0.0.1:1"); + for (logical, points) in row["options_code_points"].as_object().unwrap() { + builder = configure(builder, names[logical].as_str().unwrap(), text(points)); + } + let offending = row["offending_option"].as_str().unwrap(); + invalid(builder.build(), names[offending].as_str().unwrap()); + } +} + +#[test] +fn static_credential_refusal_precedes_other_client_construction_errors() { + for option in ["token", "control_token", "worker_token"] { + invalid( + configure( + Client::builder("http://127.0.0.1:1/api"), + option, + "fixture-value\n".to_owned(), + ) + .build(), + option, + ); + } +} + +#[test] +fn static_credential_absence_empty_and_role_precedence_stay_distinct() { + let anonymous = Client::builder("http://127.0.0.1:1").build().unwrap(); + assert_eq!( + anonymous.auth_token(RequestProtocol::ControlPlane).unwrap(), + None + ); + assert_eq!( + anonymous + .auth_token(RequestProtocol::DefaultWorker) + .unwrap(), + None + ); + for shared in ["fixture-shared", ""] { + let client = Client::builder("http://127.0.0.1:1") + .token(Some(shared.into())) + .control_token(None) + .worker_token(None) + .build() + .unwrap(); + assert_eq!( + client.auth_token(RequestProtocol::ControlPlane).unwrap(), + Some(shared) + ); + assert_eq!( + client.auth_token(RequestProtocol::DefaultWorker).unwrap(), + Some(shared) + ); + } + for scoped in ["fixture-scoped", ""] { + let client = Client::builder("http://127.0.0.1:1") + .token(Some("fixture-shared".into())) + .control_token(Some(scoped.into())) + .worker_token(Some(scoped.into())) + .build() + .unwrap(); + assert_eq!( + client.auth_token(RequestProtocol::ControlPlane).unwrap(), + Some(scoped) + ); + assert_eq!( + client.auth_token(RequestProtocol::DefaultWorker).unwrap(), + Some(scoped) + ); + } + let control_only = Client::builder("http://127.0.0.1:1") + .control_token(Some("fixture-control".into())) + .build() + .unwrap(); + assert!(matches!( + control_only.auth_token(RequestProtocol::DefaultWorker), + Err(Error::MissingRoleCredentials { role: "worker", .. }) + )); + let worker_only = Client::builder("http://127.0.0.1:1") + .worker_token(Some("fixture-worker".into())) + .build() + .unwrap(); + assert!(matches!( + worker_only.auth_token(RequestProtocol::ControlPlane), + Err(Error::MissingRoleCredentials { + role: "control", + .. + }) + )); +} diff --git a/tests/fixtures/auth-configuration/README.md b/tests/fixtures/auth-configuration/README.md new file mode 100644 index 0000000..1c75da4 --- /dev/null +++ b/tests/fixtures/auth-configuration/README.md @@ -0,0 +1,15 @@ +# Static credential configuration fixture + +`static-credentials-v1.json` is copied byte for byte from +[`durable-workflow/server` at `23972b1d12fcaa64788480eda0a31de7a5347422`](https://github.com/durable-workflow/server/blob/23972b1d12fcaa64788480eda0a31de7a5347422/tests/Fixtures/AuthConfiguration/static-credentials-v1.json). +It has 60,716 bytes and SHA-256 +`0d4f01b763d72850943acbd9a74a0cc5da1ca6db5bc1b6fa5ca37fda11810acb`. +Server issue [#554](https://github.com/durable-workflow/server/issues/554) +records the shared policy and exact-row review. + +The Rust consumer applies the 286 common scalar rows to each typed token option +and the three pre-selection rows to client construction. It preserves the Rust +mapping for `None`, supplied empty strings and role selection. PHP byte-loader, +Server setting and decoded binary key rows are outside the Rust token surface. +All strings are synthetic. Passing these checks establishes constructor/text +behavior, without making an authentication or HTTP-header acceptance claim. diff --git a/tests/fixtures/auth-configuration/static-credentials-v1.json b/tests/fixtures/auth-configuration/static-credentials-v1.json new file mode 100644 index 0000000..d27da5b --- /dev/null +++ b/tests/fixtures/auth-configuration/static-credentials-v1.json @@ -0,0 +1,341 @@ +{ + "schema": "durable-workflow.static-credential-configuration.v1", + "domain": "original configured static textual credentials; valid Unicode scalar text for common rows", + "white_space_code_points": ["U+0009","U+000A","U+000B","U+000C","U+000D","U+0020","U+0085","U+00A0","U+1680","U+2000","U+2001","U+2002","U+2003","U+2004","U+2005","U+2006","U+2007","U+2008","U+2009","U+200A","U+2028","U+2029","U+202F","U+205F","U+3000"], + "control_Cc_ranges": ["U+0000..U+001F","U+007F..U+009F"], + "common_scalar_cases": [ + {"id":"scalar-ordinary","expected":"preserve","expected_utf8_hex":"666978747572652d746f6b656e","input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"scalar-interior-space","expected":"preserve","expected_utf8_hex":"6669787475726520746f6b656e","input_code_points":[102,105,120,116,117,114,101,32,116,111,107,101,110]}, + {"id":"scalar-interior-nbsp","expected":"preserve","expected_utf8_hex":"66697874757265c2a0746f6b656e","input_code_points":[102,105,120,116,117,114,101,160,116,111,107,101,110]}, + {"id":"scalar-upper-case","expected":"preserve","expected_utf8_hex":"464958545552452d544f4b454e","input_code_points":[70,73,88,84,85,82,69,45,84,79,75,69,78]}, + {"id":"scalar-composed","expected":"preserve","expected_utf8_hex":"666978747572652dc3a9","input_code_points":[102,105,120,116,117,114,101,45,233]}, + {"id":"scalar-decomposed","expected":"preserve","expected_utf8_hex":"666978747572652d65cc81","input_code_points":[102,105,120,116,117,114,101,45,101,769]}, + {"id":"scalar-format-bom","expected":"preserve","expected_utf8_hex":"efbbbf66697874757265","input_code_points":[65279,102,105,120,116,117,114,101]}, + {"id":"scalar-format-zero-width","expected":"preserve","expected_utf8_hex":"66697874757265e2808b","input_code_points":[102,105,120,116,117,114,101,8203]}, + {"id":"scalar-format-lrm","expected":"preserve","expected_utf8_hex":"66697874757265e2808e","input_code_points":[102,105,120,116,117,114,101,8206]}, + {"id":"scalar-mongolian-vowel-separator","expected":"preserve","expected_utf8_hex":"66697874757265e1a08e","input_code_points":[102,105,120,116,117,114,101,6158]}, + {"id":"scalar-literal-empty","expected":"preserve","expected_utf8_hex":"","input_code_points":[]}, + {"id":"edge-white-space-0009-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[9,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-0009-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,9]}, + {"id":"edge-white-space-000A-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[10,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-000A-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,10]}, + {"id":"edge-white-space-000B-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[11,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-000B-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,11]}, + {"id":"edge-white-space-000C-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[12,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-000C-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,12]}, + {"id":"edge-white-space-000D-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[13,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-000D-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,13]}, + {"id":"edge-white-space-0020-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[32,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-0020-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,32]}, + {"id":"edge-white-space-0085-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[133,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-0085-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,133]}, + {"id":"edge-white-space-00A0-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[160,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-00A0-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,160]}, + {"id":"edge-white-space-1680-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[5760,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-1680-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,5760]}, + {"id":"edge-white-space-2000-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8192,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2000-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8192]}, + {"id":"edge-white-space-2001-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8193,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2001-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8193]}, + {"id":"edge-white-space-2002-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8194,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2002-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8194]}, + {"id":"edge-white-space-2003-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8195,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2003-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8195]}, + {"id":"edge-white-space-2004-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8196,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2004-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8196]}, + {"id":"edge-white-space-2005-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8197,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2005-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8197]}, + {"id":"edge-white-space-2006-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8198,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2006-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8198]}, + {"id":"edge-white-space-2007-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8199,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2007-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8199]}, + {"id":"edge-white-space-2008-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8200,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2008-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8200]}, + {"id":"edge-white-space-2009-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8201,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2009-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8201]}, + {"id":"edge-white-space-200A-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8202,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-200A-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8202]}, + {"id":"edge-white-space-2028-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8232,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2028-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8232]}, + {"id":"edge-white-space-2029-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8233,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-2029-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8233]}, + {"id":"edge-white-space-202F-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8239,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-202F-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8239]}, + {"id":"edge-white-space-205F-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8287,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-205F-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8287]}, + {"id":"edge-white-space-3000-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[12288,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"edge-white-space-3000-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,12288]}, + {"id":"control-Cc-0000-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[0,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0000-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,0,116,111,107,101,110]}, + {"id":"control-Cc-0000-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,0]}, + {"id":"control-Cc-0001-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[1,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0001-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,1,116,111,107,101,110]}, + {"id":"control-Cc-0001-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,1]}, + {"id":"control-Cc-0002-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[2,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0002-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,2,116,111,107,101,110]}, + {"id":"control-Cc-0002-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,2]}, + {"id":"control-Cc-0003-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[3,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0003-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,3,116,111,107,101,110]}, + {"id":"control-Cc-0003-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,3]}, + {"id":"control-Cc-0004-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[4,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0004-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,4,116,111,107,101,110]}, + {"id":"control-Cc-0004-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,4]}, + {"id":"control-Cc-0005-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[5,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0005-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,5,116,111,107,101,110]}, + {"id":"control-Cc-0005-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,5]}, + {"id":"control-Cc-0006-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[6,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0006-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,6,116,111,107,101,110]}, + {"id":"control-Cc-0006-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,6]}, + {"id":"control-Cc-0007-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[7,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0007-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,7,116,111,107,101,110]}, + {"id":"control-Cc-0007-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,7]}, + {"id":"control-Cc-0008-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0008-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,8,116,111,107,101,110]}, + {"id":"control-Cc-0008-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,8]}, + {"id":"control-Cc-0009-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[9,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0009-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,9,116,111,107,101,110]}, + {"id":"control-Cc-0009-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,9]}, + {"id":"control-Cc-000A-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[10,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-000A-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,10,116,111,107,101,110]}, + {"id":"control-Cc-000A-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,10]}, + {"id":"control-Cc-000B-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[11,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-000B-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,11,116,111,107,101,110]}, + {"id":"control-Cc-000B-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,11]}, + {"id":"control-Cc-000C-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[12,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-000C-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,12,116,111,107,101,110]}, + {"id":"control-Cc-000C-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,12]}, + {"id":"control-Cc-000D-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[13,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-000D-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,13,116,111,107,101,110]}, + {"id":"control-Cc-000D-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,13]}, + {"id":"control-Cc-000E-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[14,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-000E-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,14,116,111,107,101,110]}, + {"id":"control-Cc-000E-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,14]}, + {"id":"control-Cc-000F-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[15,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-000F-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,15,116,111,107,101,110]}, + {"id":"control-Cc-000F-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,15]}, + {"id":"control-Cc-0010-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[16,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0010-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,16,116,111,107,101,110]}, + {"id":"control-Cc-0010-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,16]}, + {"id":"control-Cc-0011-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[17,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0011-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,17,116,111,107,101,110]}, + {"id":"control-Cc-0011-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,17]}, + {"id":"control-Cc-0012-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[18,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0012-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,18,116,111,107,101,110]}, + {"id":"control-Cc-0012-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,18]}, + {"id":"control-Cc-0013-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[19,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0013-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,19,116,111,107,101,110]}, + {"id":"control-Cc-0013-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,19]}, + {"id":"control-Cc-0014-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[20,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0014-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,20,116,111,107,101,110]}, + {"id":"control-Cc-0014-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,20]}, + {"id":"control-Cc-0015-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[21,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0015-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,21,116,111,107,101,110]}, + {"id":"control-Cc-0015-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,21]}, + {"id":"control-Cc-0016-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[22,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0016-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,22,116,111,107,101,110]}, + {"id":"control-Cc-0016-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,22]}, + {"id":"control-Cc-0017-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[23,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0017-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,23,116,111,107,101,110]}, + {"id":"control-Cc-0017-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,23]}, + {"id":"control-Cc-0018-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[24,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0018-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,24,116,111,107,101,110]}, + {"id":"control-Cc-0018-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,24]}, + {"id":"control-Cc-0019-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[25,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0019-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,25,116,111,107,101,110]}, + {"id":"control-Cc-0019-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,25]}, + {"id":"control-Cc-001A-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[26,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-001A-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,26,116,111,107,101,110]}, + {"id":"control-Cc-001A-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,26]}, + {"id":"control-Cc-001B-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[27,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-001B-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,27,116,111,107,101,110]}, + {"id":"control-Cc-001B-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,27]}, + {"id":"control-Cc-001C-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[28,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-001C-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,28,116,111,107,101,110]}, + {"id":"control-Cc-001C-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,28]}, + {"id":"control-Cc-001D-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[29,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-001D-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,29,116,111,107,101,110]}, + {"id":"control-Cc-001D-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,29]}, + {"id":"control-Cc-001E-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[30,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-001E-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,30,116,111,107,101,110]}, + {"id":"control-Cc-001E-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,30]}, + {"id":"control-Cc-001F-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[31,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-001F-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,31,116,111,107,101,110]}, + {"id":"control-Cc-001F-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,31]}, + {"id":"control-Cc-007F-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[127,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-007F-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,127,116,111,107,101,110]}, + {"id":"control-Cc-007F-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,127]}, + {"id":"control-Cc-0080-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[128,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0080-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,128,116,111,107,101,110]}, + {"id":"control-Cc-0080-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,128]}, + {"id":"control-Cc-0081-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[129,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0081-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,129,116,111,107,101,110]}, + {"id":"control-Cc-0081-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,129]}, + {"id":"control-Cc-0082-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[130,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0082-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,130,116,111,107,101,110]}, + {"id":"control-Cc-0082-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,130]}, + {"id":"control-Cc-0083-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[131,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0083-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,131,116,111,107,101,110]}, + {"id":"control-Cc-0083-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,131]}, + {"id":"control-Cc-0084-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[132,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0084-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,132,116,111,107,101,110]}, + {"id":"control-Cc-0084-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,132]}, + {"id":"control-Cc-0085-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[133,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0085-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,133,116,111,107,101,110]}, + {"id":"control-Cc-0085-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,133]}, + {"id":"control-Cc-0086-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[134,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0086-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,134,116,111,107,101,110]}, + {"id":"control-Cc-0086-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,134]}, + {"id":"control-Cc-0087-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[135,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0087-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,135,116,111,107,101,110]}, + {"id":"control-Cc-0087-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,135]}, + {"id":"control-Cc-0088-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[136,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0088-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,136,116,111,107,101,110]}, + {"id":"control-Cc-0088-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,136]}, + {"id":"control-Cc-0089-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[137,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0089-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,137,116,111,107,101,110]}, + {"id":"control-Cc-0089-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,137]}, + {"id":"control-Cc-008A-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[138,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-008A-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,138,116,111,107,101,110]}, + {"id":"control-Cc-008A-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,138]}, + {"id":"control-Cc-008B-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[139,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-008B-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,139,116,111,107,101,110]}, + {"id":"control-Cc-008B-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,139]}, + {"id":"control-Cc-008C-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[140,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-008C-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,140,116,111,107,101,110]}, + {"id":"control-Cc-008C-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,140]}, + {"id":"control-Cc-008D-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[141,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-008D-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,141,116,111,107,101,110]}, + {"id":"control-Cc-008D-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,141]}, + {"id":"control-Cc-008E-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[142,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-008E-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,142,116,111,107,101,110]}, + {"id":"control-Cc-008E-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,142]}, + {"id":"control-Cc-008F-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[143,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-008F-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,143,116,111,107,101,110]}, + {"id":"control-Cc-008F-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,143]}, + {"id":"control-Cc-0090-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[144,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0090-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,144,116,111,107,101,110]}, + {"id":"control-Cc-0090-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,144]}, + {"id":"control-Cc-0091-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[145,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0091-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,145,116,111,107,101,110]}, + {"id":"control-Cc-0091-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,145]}, + {"id":"control-Cc-0092-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[146,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0092-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,146,116,111,107,101,110]}, + {"id":"control-Cc-0092-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,146]}, + {"id":"control-Cc-0093-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[147,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0093-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,147,116,111,107,101,110]}, + {"id":"control-Cc-0093-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,147]}, + {"id":"control-Cc-0094-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[148,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0094-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,148,116,111,107,101,110]}, + {"id":"control-Cc-0094-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,148]}, + {"id":"control-Cc-0095-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[149,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0095-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,149,116,111,107,101,110]}, + {"id":"control-Cc-0095-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,149]}, + {"id":"control-Cc-0096-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[150,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0096-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,150,116,111,107,101,110]}, + {"id":"control-Cc-0096-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,150]}, + {"id":"control-Cc-0097-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[151,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0097-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,151,116,111,107,101,110]}, + {"id":"control-Cc-0097-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,151]}, + {"id":"control-Cc-0098-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[152,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0098-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,152,116,111,107,101,110]}, + {"id":"control-Cc-0098-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,152]}, + {"id":"control-Cc-0099-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[153,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-0099-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,153,116,111,107,101,110]}, + {"id":"control-Cc-0099-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,153]}, + {"id":"control-Cc-009A-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[154,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-009A-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,154,116,111,107,101,110]}, + {"id":"control-Cc-009A-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,154]}, + {"id":"control-Cc-009B-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[155,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-009B-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,155,116,111,107,101,110]}, + {"id":"control-Cc-009B-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,155]}, + {"id":"control-Cc-009C-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[156,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-009C-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,156,116,111,107,101,110]}, + {"id":"control-Cc-009C-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,156]}, + {"id":"control-Cc-009D-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[157,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-009D-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,157,116,111,107,101,110]}, + {"id":"control-Cc-009D-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,157]}, + {"id":"control-Cc-009E-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[158,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-009E-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,158,116,111,107,101,110]}, + {"id":"control-Cc-009E-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,158]}, + {"id":"control-Cc-009F-prefix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[159,102,105,120,116,117,114,101,45,116,111,107,101,110]}, + {"id":"control-Cc-009F-middle","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,159,116,111,107,101,110]}, + {"id":"control-Cc-009F-suffix","expected":"reject","diagnostic_setting_only":true,"input_code_points":[102,105,120,116,117,114,101,45,116,111,107,101,110,159]}, + {"id":"white-space-only-0009","expected":"reject","diagnostic_setting_only":true,"input_code_points":[9]}, + {"id":"white-space-only-000A","expected":"reject","diagnostic_setting_only":true,"input_code_points":[10]}, + {"id":"white-space-only-000B","expected":"reject","diagnostic_setting_only":true,"input_code_points":[11]}, + {"id":"white-space-only-000C","expected":"reject","diagnostic_setting_only":true,"input_code_points":[12]}, + {"id":"white-space-only-000D","expected":"reject","diagnostic_setting_only":true,"input_code_points":[13]}, + {"id":"white-space-only-0020","expected":"reject","diagnostic_setting_only":true,"input_code_points":[32]}, + {"id":"white-space-only-0085","expected":"reject","diagnostic_setting_only":true,"input_code_points":[133]}, + {"id":"white-space-only-00A0","expected":"reject","diagnostic_setting_only":true,"input_code_points":[160]}, + {"id":"white-space-only-1680","expected":"reject","diagnostic_setting_only":true,"input_code_points":[5760]}, + {"id":"white-space-only-2000","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8192]}, + {"id":"white-space-only-2001","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8193]}, + {"id":"white-space-only-2002","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8194]}, + {"id":"white-space-only-2003","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8195]}, + {"id":"white-space-only-2004","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8196]}, + {"id":"white-space-only-2005","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8197]}, + {"id":"white-space-only-2006","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8198]}, + {"id":"white-space-only-2007","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8199]}, + {"id":"white-space-only-2008","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8200]}, + {"id":"white-space-only-2009","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8201]}, + {"id":"white-space-only-200A","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8202]}, + {"id":"white-space-only-2028","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8232]}, + {"id":"white-space-only-2029","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8233]}, + {"id":"white-space-only-202F","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8239]}, + {"id":"white-space-only-205F","expected":"reject","diagnostic_setting_only":true,"input_code_points":[8287]}, + {"id":"white-space-only-3000","expected":"reject","diagnostic_setting_only":true,"input_code_points":[12288]}, + {"id":"scalar-literal-zero","expected":"preserve","expected_utf8_hex":"30","input_code_points":[48]}, + {"id":"scalar-literal-false","expected":"preserve","expected_utf8_hex":"66616c7365","input_code_points":[102,97,108,115,101]}, + {"id":"scalar-literal-null","expected":"preserve","expected_utf8_hex":"6e756c6c","input_code_points":[110,117,108,108]}, + {"id":"scalar-literal-empty-word","expected":"preserve","expected_utf8_hex":"656d707479","input_code_points":[101,109,112,116,121]}, + {"id":"scalar-astral","expected":"preserve","expected_utf8_hex":"666978747572652df09f9982","input_code_points":[102,105,120,116,117,114,101,45,128578]} + ], + "php_byte_loader_cases": [ + {"id":"php-byte-loader-isolated-ff","input_hex":"ff","expected":"reject-invalid-utf8","diagnostic_setting_only":true}, + {"id":"php-byte-loader-stray-continuation","input_hex":"80","expected":"reject-invalid-utf8","diagnostic_setting_only":true}, + {"id":"php-byte-loader-truncated-two-byte","input_hex":"c2","expected":"reject-invalid-utf8","diagnostic_setting_only":true}, + {"id":"php-byte-loader-truncated-three-byte","input_hex":"e282","expected":"reject-invalid-utf8","diagnostic_setting_only":true}, + {"id":"php-byte-loader-broken-continuation","input_hex":"e228a1","expected":"reject-invalid-utf8","diagnostic_setting_only":true}, + {"id":"php-byte-loader-overlong","input_hex":"c0af","expected":"reject-invalid-utf8","diagnostic_setting_only":true}, + {"id":"php-byte-loader-surrogate","input_hex":"eda080","expected":"reject-invalid-utf8","diagnostic_setting_only":true}, + {"id":"php-byte-loader-above-unicode-max","input_hex":"f4908080","expected":"reject-invalid-utf8","diagnostic_setting_only":true}, + {"id":"php-byte-loader-truncated-astral","input_hex":"f09f99","expected":"reject-invalid-utf8","diagnostic_setting_only":true}, + {"id":"php-byte-loader-bad-four-byte-continuation","input_hex":"f0288cbc","expected":"reject-invalid-utf8","diagnostic_setting_only":true} + ], + "pre_selection_cases": [ + {"id":"malformed-unused-worker","selected_plane":"control","expected":"reject","offending_option":"worker","options_code_points":{"shared":[102,105,120,116,117,114,101,45,115,104,97,114,101,100],"control":[102,105,120,116,117,114,101,45,99,111,110,116,114,111,108],"worker":[102,105,120,116,117,114,101,45,119,111,114,107,101,114,160]}}, + {"id":"malformed-unused-control","selected_plane":"worker","expected":"reject","offending_option":"control","options_code_points":{"shared":[102,105,120,116,117,114,101,45,115,104,97,114,101,100],"control":[160,102,105,120,116,117,114,101,45,99,111,110,116,114,111,108],"worker":[102,105,120,116,117,114,101,45,119,111,114,107,101,114]}}, + {"id":"malformed-masked-shared","selected_plane":"control","expected":"reject","offending_option":"shared","options_code_points":{"shared":[102,105,120,116,117,114,101,45,115,104,97,114,101,100,10],"control":[102,105,120,116,117,114,101,45,99,111,110,116,114,111,108],"worker":[102,105,120,116,117,114,101,45,119,111,114,107,101,114]}} + ], + "language_mappings": {"php":{"logical_setting_names":{"shared":"token","control":"controlToken","worker":"workerToken"},"omitted_or_null":"existing-absence","literal_empty_optional":"existing-fallback","all_empty_required_token_authentication":"existing-required-token-error","client_anonymous_configuration":"preserve-existing-availability","pre_selection_loaders":["Client","TokenAuthentication","ServiceConfiguration","ProcessCredentialResolver"],"control_plane_order":["control","shared"],"worker_plane_order":["worker","shared"],"opposite_only":"existing-role-refusal"},"python":{"logical_setting_names":{"shared":"token","control":"control_token","worker":"worker_token"},"omitted_or_null":"existing-absence","literal_empty_optional":"existing-absence","discovery_order":["worker","control","shared"],"worker_plane_order":["worker","shared"],"control_plane_order":["control","shared"],"opposite_only":"existing-role-refusal"},"rust":{"logical_setting_names":{"shared":"token","control":"control_token","worker":"worker_token"},"none":"existing-absence","some_literal_empty":"preserve-supplied-empty-and-fallback-precedence","opposite_only":"existing-role-refusal"}}, + "binary_key_boundary": {"id":"decoded-entropy-is-not-token-text","configured_text":"base64:ACB/gJ//","decoded_bytes_hex":"00207f809fff","apply_text_guard_to_decoded_bytes":false,"production_encoding_change":false}, + "diagnostics": {"identify_setting_only":true,"forbid_value_prefix_digest_or_encoded_content":true,"before_role_selection_and_io":true}, + "exclusions": ["dynamic authentication","general static-header extensions","decoded binary key entropy","new token alphabet","case folding","Unicode normalization","trimming","production fixture-byte encoding"], + "server_setting_mappings": {"bearer_text":[{"primary":"DW_AUTH_TOKEN","legacy":"WORKFLOW_SERVER_AUTH_TOKEN","optionality":"preserve-existing-auth-mode-and-role-rules"},{"primary":"DW_WORKER_TOKEN","legacy":"WORKFLOW_SERVER_WORKER_TOKEN","optionality":"preserve-existing-auth-mode-and-role-rules"},{"primary":"DW_OPERATOR_TOKEN","legacy":"WORKFLOW_SERVER_OPERATOR_TOKEN","optionality":"preserve-existing-auth-mode-and-role-rules"},{"primary":"DW_ADMIN_TOKEN","legacy":"WORKFLOW_SERVER_ADMIN_TOKEN","optionality":"preserve-existing-auth-mode-and-role-rules"}],"request_signature_text":[{"primary":"DW_SIGNATURE_KEY","legacy":"WORKFLOW_SERVER_SIGNATURE_KEY","representation":"text-used-directly-as-HMAC-key-by-existing-PHP","native_auth_mode":"preserve-existing-unsupported-driver"},{"primary":"DW_WORKER_SIGNATURE_KEY","legacy":"WORKFLOW_SERVER_WORKER_SIGNATURE_KEY","representation":"text-used-directly-as-HMAC-key-by-existing-PHP","native_auth_mode":"preserve-existing-unsupported-driver"},{"primary":"DW_OPERATOR_SIGNATURE_KEY","legacy":"WORKFLOW_SERVER_OPERATOR_SIGNATURE_KEY","representation":"text-used-directly-as-HMAC-key-by-existing-PHP","native_auth_mode":"preserve-existing-unsupported-driver"},{"primary":"DW_ADMIN_SIGNATURE_KEY","legacy":"WORKFLOW_SERVER_ADMIN_SIGNATURE_KEY","representation":"text-used-directly-as-HMAC-key-by-existing-PHP","native_auth_mode":"preserve-existing-unsupported-driver"}],"history_export_signing_text":{"primary":"DW_V2_HISTORY_EXPORT_SIGNING_KEY","legacy":"WORKFLOW_V2_HISTORY_EXPORT_SIGNING_KEY","representation":"text-used-directly-as-HMAC-key","empty_optional":"preserve-unsigned-behavior"},"application_and_page_key_text":{"settings":["DW_SERVER_KEY","APP_KEY"],"representation":"existing-configured-text-or-documented-encoded-text","validate_before_documented_binary_decode":true,"change_derivation_or_generation":false},"principal_token_container":{"primary":"DW_PRINCIPAL_TOKENS","legacy":"WORKFLOW_SERVER_PRINCIPAL_TOKENS","validate_token_members_after_existing_container_parse":true,"validate_container_formatting_as_token_text":false,"native_mode":"preserve-existing-refusal"},"source_loader_boundary":{"parse_documented_source_quoting":true,"trim_credential_text":false,"validate_all_supplied_primary_and_legacy_candidates":true,"validate_before_role_or_alias_selection":true,"preserve_existing_env_literal_and_required_setting_rules":true},"signing_key_id_metadata_is_secret_key_input":false}, + "server_pre_selection_cases": [ + {"id":"server-unused-role","selected_role":"control","expected":"reject","offending_setting":"DW_WORKER_TOKEN","options_code_points":{"DW_AUTH_TOKEN":[102,105,120,116,117,114,101,45,115,104,97,114,101,100],"DW_WORKER_TOKEN":[102,105,120,116,117,114,101,45,119,111,114,107,101,114,160]}}, + {"id":"server-masked-legacy-alias","expected":"reject","offending_setting":"WORKFLOW_SERVER_AUTH_TOKEN","options_code_points":{"DW_AUTH_TOKEN":[102,105,120,116,117,114,101,45,115,104,97,114,101,100],"WORKFLOW_SERVER_AUTH_TOKEN":[102,105,120,116,117,114,101,45,111,108,100,10]}}, + {"id":"server-invalid-quoted-credential-after-source-parse","expected":"reject","offending_setting":"DW_AUTH_TOKEN","configured_text_code_points":[32,102,105,120,116,117,114,101,45,115,104,97,114,101,100,32],"source_code_points":[34,32,102,105,120,116,117,114,101,45,115,104,97,114,101,100,32,34]} + ], + "common_input_representation": "Unicode scalar integers, materialized as original test text only; not a production encoding", + "php_adapter_cases": [ + {"id":"php-valid-scoped-mode-unused-worker-scalar","selected_plane":"control","omitted_options":["shared"],"options_case_refs":{"control":"scalar-ordinary","worker":"edge-white-space-00A0-suffix"},"targets":["Client","TokenAuthentication","ServiceConfiguration","ProcessCredentialResolver"],"expected":"reject-credential","offending_option":"worker","diagnostic_setting_only":true,"generic_mode_or_missing_role_error_is_not_success":true}, + {"id":"php-valid-scoped-mode-unused-worker-invalid-utf8","selected_plane":"control","omitted_options":["shared"],"options_case_refs":{"control":"scalar-ordinary","worker":"php-byte-loader-isolated-ff"},"targets":["Client","TokenAuthentication","ServiceConfiguration","ProcessCredentialResolver"],"expected":"reject-credential","offending_option":"worker","diagnostic_setting_only":true,"generic_mode_or_missing_role_error_is_not_success":true}, + {"id":"php-valid-scoped-mode-unused-control-scalar","selected_plane":"worker","omitted_options":["shared"],"options_case_refs":{"worker":"scalar-ordinary","control":"edge-white-space-00A0-prefix"},"targets":["Client","TokenAuthentication","ServiceConfiguration","ProcessCredentialResolver"],"expected":"reject-credential","offending_option":"control","diagnostic_setting_only":true,"generic_mode_or_missing_role_error_is_not_success":true}, + {"id":"php-valid-scoped-mode-unused-control-invalid-utf8","selected_plane":"worker","omitted_options":["shared"],"options_case_refs":{"worker":"scalar-ordinary","control":"php-byte-loader-isolated-ff"},"targets":["Client","TokenAuthentication","ServiceConfiguration","ProcessCredentialResolver"],"expected":"reject-credential","offending_option":"control","diagnostic_setting_only":true,"generic_mode_or_missing_role_error_is_not_success":true}, + {"id":"php-process-handoff-client-scalar","target":"ProcessCredentialResolver","omitted_environment":["DURABLE_WORKFLOW_TOKEN","DURABLE_WORKFLOW_CLIENT_TOKEN","DURABLE_WORKFLOW_WORKER_TOKEN"],"process_role":"client","process_token_case_ref":"edge-white-space-00A0-suffix","expected":"reject-credential","offending_setting":"DURABLE_WORKFLOW_PROCESS_TOKEN","diagnostic_setting_only":true,"generic_mode_or_missing_role_error_is_not_success":true}, + {"id":"php-process-handoff-client-invalid-utf8","target":"ProcessCredentialResolver","omitted_environment":["DURABLE_WORKFLOW_TOKEN","DURABLE_WORKFLOW_CLIENT_TOKEN","DURABLE_WORKFLOW_WORKER_TOKEN"],"process_role":"client","process_token_case_ref":"php-byte-loader-isolated-ff","expected":"reject-credential","offending_setting":"DURABLE_WORKFLOW_PROCESS_TOKEN","diagnostic_setting_only":true,"generic_mode_or_missing_role_error_is_not_success":true}, + {"id":"php-process-handoff-worker-scalar","target":"ProcessCredentialResolver","omitted_environment":["DURABLE_WORKFLOW_TOKEN","DURABLE_WORKFLOW_CLIENT_TOKEN","DURABLE_WORKFLOW_WORKER_TOKEN"],"process_role":"worker","process_token_case_ref":"edge-white-space-00A0-suffix","expected":"reject-credential","offending_setting":"DURABLE_WORKFLOW_PROCESS_TOKEN","diagnostic_setting_only":true,"generic_mode_or_missing_role_error_is_not_success":true}, + {"id":"php-process-handoff-worker-invalid-utf8","target":"ProcessCredentialResolver","omitted_environment":["DURABLE_WORKFLOW_TOKEN","DURABLE_WORKFLOW_CLIENT_TOKEN","DURABLE_WORKFLOW_WORKER_TOKEN"],"process_role":"worker","process_token_case_ref":"php-byte-loader-isolated-ff","expected":"reject-credential","offending_setting":"DURABLE_WORKFLOW_PROCESS_TOKEN","diagnostic_setting_only":true,"generic_mode_or_missing_role_error_is_not_success":true}, + {"id":"php-control-scoped-before-shared","targets":["Client","TokenAuthentication"],"selected_plane":"control","options_case_refs":{"shared":"scalar-upper-case","control":"scalar-ordinary"},"expected":"preserve-selected-text","selected_option":"control","expected_case_ref":"scalar-ordinary"}, + {"id":"php-control-null-falls-back-to-shared","targets":["Client","TokenAuthentication"],"selected_plane":"control","options_case_refs":{"shared":"scalar-upper-case"},"null_options":["control"],"expected":"preserve-selected-text","selected_option":"shared","expected_case_ref":"scalar-upper-case"}, + {"id":"php-control-literal-empty-falls-back-to-shared","targets":["Client","TokenAuthentication"],"selected_plane":"control","options_case_refs":{"shared":"scalar-upper-case"},"empty_options":["control"],"expected":"preserve-selected-text","selected_option":"shared","expected_case_ref":"scalar-upper-case"}, + {"id":"php-control-opposite-only-refuses","targets":["Client","TokenAuthentication"],"selected_plane":"control","options_case_refs":{"worker":"scalar-ordinary"},"expected":"existing-role-refusal-before-request"}, + {"id":"php-worker-scoped-before-shared","targets":["Client","TokenAuthentication"],"selected_plane":"worker","options_case_refs":{"shared":"scalar-upper-case","worker":"scalar-ordinary"},"expected":"preserve-selected-text","selected_option":"worker","expected_case_ref":"scalar-ordinary"}, + {"id":"php-worker-null-falls-back-to-shared","targets":["Client","TokenAuthentication"],"selected_plane":"worker","options_case_refs":{"shared":"scalar-upper-case"},"null_options":["worker"],"expected":"preserve-selected-text","selected_option":"shared","expected_case_ref":"scalar-upper-case"}, + {"id":"php-worker-literal-empty-falls-back-to-shared","targets":["Client","TokenAuthentication"],"selected_plane":"worker","options_case_refs":{"shared":"scalar-upper-case"},"empty_options":["worker"],"expected":"preserve-selected-text","selected_option":"shared","expected_case_ref":"scalar-upper-case"}, + {"id":"php-worker-opposite-only-refuses","targets":["Client","TokenAuthentication"],"selected_plane":"worker","options_case_refs":{"control":"scalar-ordinary"},"expected":"existing-role-refusal-before-request"} + ], + "php_adapter_requirements": {"unrelated_configuration":"valid endpoint, namespace, queue, handlers and bridge settings; no unrelated validation refusal counts","shared_plus_scoped_rows":"the original three SDK pre-selection rows target direct Client/TokenAuthentication, not the bridge mode guard","ProcessCredentialResolver_option_environment":{"shared":"DURABLE_WORKFLOW_TOKEN","control":"DURABLE_WORKFLOW_CLIENT_TOKEN","worker":"DURABLE_WORKFLOW_WORKER_TOKEN"},"materialization":"case refs are materialized into original PHP strings before invocation; hex rows are decoded test input only","environment_limit":"NUL cannot be represented in OS environment values; direct string constructors cover NUL; environment/setup failures are never credential rejection","request_or_transport":"spy only, no HTTP/authentication or real credential; reject before role selection and I/O","positive_selection":"compare exact selected fixture UTF-8 only; no authentication or arbitrary-Unicode HTTP-header success claim"} +}