commit 63887bad0acfaec0d2587b165c8a89bf7a916c3c
parent ce11fb632bf4c8ec33b0e14d01c8c22969b67caa
Author: triesap <tyson@radroots.org>
Date: Sun, 9 Aug 2026 16:58:49 +0000
blossom: retain bounded server error evidence
- parse only validated public service error identifiers
- preserve generic SDK failure codes and HTTP status
- propagate server evidence through mobile runtime and UniFFI
- cover bounds, redaction, and FFI schema evolution
Diffstat:
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/core/crates/tera_ffi/src/dto.rs b/core/crates/tera_ffi/src/dto.rs
@@ -1874,6 +1874,7 @@ pub struct FfiBlossomEvidenceRecord {
pub observed_at_unix_ms: Option<u64>,
pub http_status: Option<u16>,
pub error_code: Option<String>,
+ pub server_error_code: Option<String>,
pub error_phase: Option<String>,
pub retryable: bool,
pub possible_orphan: bool,
@@ -1907,6 +1908,7 @@ impl From<SdkBlossomEvidenceRecord> for FfiBlossomEvidenceRecord {
observed_at_unix_ms: value.observed_at_unix_ms,
http_status: value.http_status,
error_code: value.error_code,
+ server_error_code: value.server_error_code,
error_phase: value.error_phase,
retryable: value.retryable,
possible_orphan: value.possible_orphan,
diff --git a/core/crates/tera_ffi/tests/runtime_delegation.rs b/core/crates/tera_ffi/tests/runtime_delegation.rs
@@ -123,13 +123,14 @@ async fn native_boundary_delegates_the_complete_core_surface() {
.sdk_blossom_evidence()
.expect("Blossom evidence")
.expect("configured evidence");
- assert_eq!(evidence.schema_version, 1);
+ assert_eq!(evidence.schema_version, 2);
assert_eq!(evidence.origin, "https://media.example");
assert_eq!(evidence.config_fingerprint, blossom.config_fingerprint);
assert_eq!(evidence.state, "configured_unobserved");
assert_eq!(evidence.transport_security, "public_webpki");
assert!(evidence.observed_at_unix_ms.is_none());
assert!(evidence.error_code.is_none());
+ assert!(evidence.server_error_code.is_none());
runtime
.configure_blossom(
FfiBlossomHostKind::Simulator,