field_ios

In-the-field app for Radroots on iOS
git clone https://radroots.dev/git/field_ios.git
Log | Files | Refs | README | LICENSE

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:
Mcore/crates/tera_ffi/src/dto.rs | 2++
Mcore/crates/tera_ffi/tests/runtime_delegation.rs | 3++-
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,