1// Package replication plans and executes durable relay synchronization.2//3// Planning is separate from transport. RelayDirectory and Discovery provide4// routing inputs; PrepareIntents turns them into idempotent storage.Intent5// values that can be committed with the event that caused them. Delivery,6// PullTransport and PushTransport perform network operations and are owned by7// the application that constructs the Service or calls the standalone sync8// functions. Those callers retain ownership of their transports and stores.9//10// Service owns replication's durable work queue and job state. Handlers can be11// composed with other work handlers and run by work.RunPool. A handler error12// is retried by the work package with backoff; a terminal error can be marked13// with work.Stop. Successful recurring jobs enqueue a new intent, preserving a14// completed record for the prior run.15//16// WebSocket transports validate relay URLs and public address resolution before17// dialing. Backup and artifact helpers write complete files through temporary18// files and same-directory rename.19package replication