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 51ea1582d9c4751892cc375056aea0a678b5c8d3
parent 63887bad0acfaec0d2587b165c8a89bf7a916c3c
Author: triesap <tyson@radroots.org>
Date:   Sun,  9 Aug 2026 17:31:56 +0000

mobile_core: restore actionable media draft state

- Derive aggregate draft state from every persisted media prerequisite.
- Leave byte-verified uploads editable until the authored operation is queued.
- Return failed media to the retryable preparation surface with orphan evidence intact.
- Lock successful and failed real-I/O Blossom transitions with regression assertions.

Diffstat:
Mcore/crates/tera_ffi/tests/local_mvp_real_io.rs | 2++
1 file changed, 2 insertions(+), 0 deletions(-)

diff --git a/core/crates/tera_ffi/tests/local_mvp_real_io.rs b/core/crates/tera_ffi/tests/local_mvp_real_io.rs @@ -233,6 +233,7 @@ async fn public_runtime_completes_the_local_mvp_against_real_protocol_services() .await .expect("upload and re-fetch exact media"); assert_eq!(uploaded.media[0].stage, FfiMediaStage::Verified); + assert_eq!(uploaded.state, FfiOutboxState::MediaPreparing); let evidence = publisher .sdk_blossom_evidence() .expect("Blossom evidence") @@ -818,6 +819,7 @@ async fn prove_corrupted_media_fails( .await .expect("durable corrupt-media status"); assert_eq!(failed.media[0].stage, FfiMediaStage::Failed); + assert_eq!(failed.state, FfiOutboxState::MediaPreparing); assert!(failed.media[0].possible_orphan); let evidence = runtime .sdk_blossom_evidence()