At startup the node estimates its offline gap from the persisted
last-online timestamp: within the sync window it catches up via
full-node reconciliation (retrying until a sync peer is found, with the
periodic sync loop as safety net); beyond the window, or on fresh
start, it falls back to a bounded store resume, waiting for a store
peer before consuming retry attempts. The catch-up runs as a background
future so node startup no longer blocks up to 90 s on store peers, and
shutdown bounds its cancellation wait. StoreResume is also mounted on
sync-enabled full nodes so they track last-online.
Part of the "Store as a startup-only dependency" experiment (step 10).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>