Phase 1 offline prototype — test results
Pass criteria are in the README.
Run 1 — 31 Oct 2026
Setup: real Android phone, Expo Go (SDK 58), API on the developer PC over home Wi-Fi, Cloudflare R2 bucket property-preservation-hub.
| # | Test | Result | Notes |
|---|---|---|---|
| — | Online capture → R2 | Pass | 4 photos, ~1.5 s each (presign ~20 ms, server verify ~1.2 s). |
| 1 | Airplane mode capture, kill app, reopen | Pass | Photos stayed Waiting after the app was killed. |
| 2 | Network back → sends on its own | Pass | All moved to "Sent to office" with no taps. |
| — | Totals | Pass | Phone: 15 sent, 0 waiting, 0 failed. R2: 15 objects. Server: 15 presign, 15 confirm stored, 0 errors, 0 duplicates. |
| 3 | Kill app mid-upload | Not run | |
| 4 | 500 photos on mobile data | Not run | |
| 5 | Weak network retries | Not run | |
| 6 | Background send with app closed | Not run | Needs an EAS development build; Expo Go is not reliable for background tasks. |
| 7 | Mock-location flag | Not run |
Tests 3–7 deferred by decision (31 Oct 2026): run them before phase 4 (sync, QA) on an EAS development build.
Fixed during the run: Link asChild with an array style crashed expo-router's Slot; the button now uses router.push.