What to build
Create shared upgrade fixtures for every production-supported DB upgrade path and verify real Android-to-iOS and iOS-to-Android backup/restore behavior. Derive supported versions from current migration and restore contracts.
Part 8 of the approved cross-platform persistence reliability plan. Android and iOS remain separate native implementations with shared observable contracts. Local planning document: docs/persistence-reliability-plan.md; this issue is self-contained. Type: AFK.
Likely files
modules/vescape-core/ios/telemetry/DatabaseBackupManager.swift - production behavior or caller to inspect
modules/vescape-core/ios/telemetry/TelemetryMigrationTests.swift - existing verification seam
modules/vescape-core/android/src/main/java/expo/modules/vescapecore/telemetry/DatabaseBackupManager.kt - production behavior or caller to inspect
modules/vescape-core/android/src/test/java/expo/modules/vescapecore/telemetry/TelemetryBoardIdMigrationTest.kt - existing verification seam
modules/vescape-core/ios/telemetry/TelemetryDatabase.swift - production behavior or caller to inspect
Implementation hints
Keep Room on Android and GRDB on iOS. Native owns durable truth; JS renders state and sends intents. Follow bidirectional @parity links and preserve bridge payloads. Custom SQL is allowed for migrations and aggregate updates with real DB tests. Use existing error UI and avoid a generic persistence/recovery framework. Diagnostics transport follows ADR 0031; Sentry handles errors independently of local event persistence. Use bun commands and appropriate scoped verification.
Acceptance criteria
Blocked by
Related
What to build
Create shared upgrade fixtures for every production-supported DB upgrade path and verify real Android-to-iOS and iOS-to-Android backup/restore behavior. Derive supported versions from current migration and restore contracts.
Part 8 of the approved cross-platform persistence reliability plan. Android and iOS remain separate native implementations with shared observable contracts. Local planning document: docs/persistence-reliability-plan.md; this issue is self-contained. Type: AFK.
Likely files
modules/vescape-core/ios/telemetry/DatabaseBackupManager.swift- production behavior or caller to inspectmodules/vescape-core/ios/telemetry/TelemetryMigrationTests.swift- existing verification seammodules/vescape-core/android/src/main/java/expo/modules/vescapecore/telemetry/DatabaseBackupManager.kt- production behavior or caller to inspectmodules/vescape-core/android/src/test/java/expo/modules/vescapecore/telemetry/TelemetryBoardIdMigrationTest.kt- existing verification seammodules/vescape-core/ios/telemetry/TelemetryDatabase.swift- production behavior or caller to inspectImplementation hints
Keep Room on Android and GRDB on iOS. Native owns durable truth; JS renders state and sends intents. Follow bidirectional @parity links and preserve bridge payloads. Custom SQL is allowed for migrations and aggregate updates with real DB tests. Use existing error UI and avoid a generic persistence/recovery framework. Diagnostics transport follows ADR 0031; Sentry handles errors independently of local event persistence. Use bun commands and appropriate scoped verification.
Acceptance criteria
Blocked by
Related