// Package contract defines the shared full-sync domain and service boundaries. // It contains no Redis, filesystem, replay execution, or HTTP handler code. // // Legacy queue models remain in internal/queue/zset until adapters adopt this // package. Their existing JSON fields are retained here; new run fields are // optional so historical records still decode. Missing extended counters mean // unknown, not a reconstructed total. FailedCount is the historical terminal // count for a run; cleaning source failures changes PendingFailureCount only. // // Implementations must preserve these boundaries: run-local Redis keys share // one hash tag, global indexes do not; archive summaries never contain card // details; cursors are opaque and scoped to the original query; replay writes // are idempotent and fenced by a lease before source cleanup is allowed. package contract