You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On a real device a fresh install's ubiquity container is cloud-only
until metadata syncs; the restore used plain filesystem walks, missed
the un-materialized note bodies, and installing the catalog blocked any
retry - notes came back with titles but no content (found on-device in
1.3 build 10; the dev-override simulator E2E structurally cannot catch
this).
- ICloudBackupModule: listCloudFiles via NSMetadataQuery (sees cloud-
only items and nudges the sync; main-queue lifecycle with timeout and
double-completion guard; /private symlink standardization; cloud-only
directories classified by content type). ensureDownloaded now retries
startDownloadingUbiquitousItem until the deadline instead of giving
up when metadata has not arrived.
- backupEngine: manifest and backup catalog reads are download-forced
too (the same race can hit them). Restore now MERGES the backup
catalog - backup metadata adopted for missing notes and recovery
stubs, local notes and tombstones untouched - and is resumable:
resumeRestoreIfIncomplete heals notes-without-bodies and stub titles
on every launch, gated to files iCloud still lists so a stale
manifest entry cannot cause a retry-forever loop.
- useBackup runs the silent resume before the startup sync, so devices
already damaged by build 10 self-heal on first launch of this build.
Verified: 48 node tests including the device repro (partial restore
resumes to completion) and the mirror-image race (stub titles heal);
simulator E2E of the exact broken device state - catalog with titles,
zero bodies, one a stub - fully healed on launch with no prompts.
Claude-Session: https://claude.ai/code/session_01Vy3wDR2rgpvNKrbBpCbrEY
0 commit comments