Mobile Safari Validation
Use this runbook before promoting Hybrid Live or progressive receiver behavior to production.
Receiver Result Handoff
Append a validation run id to the receiver/share URL before the fragment key. The receive page stores bounded receiver checkpoints in the dev-only browser-result endpoint without sending the fragment key.
https://ultra-dev.egomonk.com/s/{shareId}?mobile_validation_run_id=iphone_sw_20260617a#{fragmentKey}
GET https://ultra-dev.egomonk.com/api/browser-baseline-results/iphone_sw_20260617a
Dev Link Command
The dev-only link generator creates an encrypted progressive share, prints a physical iPhone receiver URL, uploads chunks directly to R2, and polls the stored receiver result.
cd workers npm run validate:mobile-safari -- --run-id=iphone_sw_YYYYMMDDa
It refuses non-dev hosts, reads ULTRA_TEST_SESSION_TOKEN from the environment or workers/.dev.vars without printing it, creates the link before upload completion, and defaults to --size=1088MiB, --chunk-size=64MiB, --concurrency=4, and --cleanup=on-pass. Open the printed receiverUrl on physical iPhone Safari and tap Start live download while the command is still uploading.
npm run validate:mobile-safari -- --run-id=iphone_sw_YYYYMMDD_5gib --size=5GiB --chunk-size=64MiB --concurrency=4
Audit a stored row later without creating another transfer:
npm run validate:mobile-safari -- --audit-run-id=iphone_sw_YYYYMMDDa
Pass Signal
isIOSandisMobileDevicematch the physical iPhone Safari device.browserissafarianddeviceClassisiphone.sawLifecycleSignalistrue.sawTerminalSignalistrue, from completion, failure, or the intentional unsafe-fallback block.mobileSafetyStatusisbounded_service_worker_stream_startedorunsafe_fallback_blocked.sawUnsafePageAssemblyStartisfalse.recentEventsincludes Service Worker, fallback, completion/failure, and lifecycle/network events from the run.
Required Matrix
- Physical iPhone Safari on representative Wi-Fi.
- Background/foreground and refresh behavior.
- Hybrid target classes, prioritizing 1 GiB and 5 GiB before attempting 10 GiB.
- Manual production review with desktop Chrome proof rows and rollback flags.