Repository source: docs/plans/instance_content_sync/instance_content_sync_step1_solution_assessment.md
Original Query
From the TODO file:
Make it easy to import/sync content from another instance.
- Make this schedulable too.
Please write Step 1 of docs/fdp/FEATURE_DEVELOPMENT_PROCESS.md.
Understood Intent
An instance operator should be able to bring another instance's content into their own. The user approved Option A first and saved Option B separately for later review. On approval, they deferred scheduling to a separate request and requested a command accepting an instance name/URL, with a possible web UI. This updated scope supersedes the scheduled first release originally proposed below.
Problem Statement
Existing archive import (source unavailable) and background queue capabilities do not yet provide a convenient, repeatable workflow from a remote instance through to visible local content.
Option A — Scheduled archive pull and additive import
Let an operator save a source instance, preview and run an import from its repository download, and enable recurring pulls through the existing background queue.
Pros: Reuses existing downloads, duplicate detection, conflict reporting, and worker operations; can avoid read-model schema changes.
Cons: Repeated full downloads grow costly; changed records require review; the current importer needs tighter content boundaries and failure recovery before unattended use.
Option B — Incremental content sync API
Provide a remote change feed that the destination can consume manually or on a schedule, with explicit rules for additions, edits, and deletions.
Pros: Efficient recurring transfers; clearer support for evolving content and resumable progress.
Cons: Requires a new cross-instance contract and compatible source deployments; authentication, retention, and conflict semantics expand the first release substantially.
Option C — Git-based repository replication
Have operators connect a remote content repository and schedule fetch-and-merge operations, then refresh the local site's content views.
Pros: Uses the existing canonical repository and transfers changes efficiently while retaining history.
Cons: Requires remote Git access and merge recovery; repository-wide replication can mix content with instance settings and trust decisions; harder to make approachable.
Recommendation
Option A is approved with scheduling deferred: deliver on-demand, one-way additive import from a compatible public instance by name/URL. Remote edits become reported conflicts and remote deletions do not delete local content. Incremental sync remains a separate future FDP cycle.
Complete vertical slice: An operator supplies a source name/URL, optionally previews the import, downloads and imports in one command, sees the result locally, and inspects conflicts or recovers a failed run. Prevent overlapping imports.
Content boundary: Step 2 defines the requested “all the data” coverage, including associated public content beyond threads/replies, while distinguishing content merging from full-instance restoration.
Validate early: Confirm archive compatibility, record validation, and visibility under local trust rules. Prove repeat runs avoid duplicates and interrupted imports or failed publication recover without leaving permanently stale content.
Scope viability: Target one day/eight development stages by reusing the importer. Scheduling and incremental sync are deferred; Step 2 assesses the optional web UI separately from the required CLI outcome.