Org Mover: Selective Checksum/Sync By Organization
## Problems
### We want to avoid bad data clean up during a move
The first problem is cleaning an organization's data prior to a move. For example, it's common for some files to be missing due to old or new bugs. We want to resolve as many bad data problems as possible upfront, to avoid doing that work in the critical path of a move.
As of March 2025, Geo checksums all data in a primary site. Using this feature as-is on GitLab.com would be wasteful to the point of being problematic. In particular, it would increase load and the amount of data in the legacy cell DBs, which is already an urgent problem.
### A move only needs to replicate the data for the organization to be moved
It is much more efficient.
### Not all tables are sharded yet
As of April 2025, there are some remaining tables which cannot easily be sharded, and must be handled as special cases.
## Proposal
Geo already has "Selective sync by namespace". Extend this to add "Selective sync by organization".
We will use this to scope and run checksumming on selected organizations on the legacy cell.
Besides selective checksumming by org, this work effectively also implements selective sync by org. They both depend on the same scopes on the source cell/site to determine "what needs to be checksummed or synced".
## Acceptance criteria
* In the Admin UI in GDK in **Admin \> Geo \> Sites \> Edit (a secondary site)** , you can choose Selective synchronization by organization, and choose 1 or more organizations.
* Geo will only sync Git repos, blobs, or container repositories if their organization is selected.
* Part 1 will exclude models with tables which are not yet sharded.
### Data Types Progress
3/17 Data Types completed - Project Repositories, Project Wikis and Design Repositories (Oct 13-17 2025)
5/17 Data Types completed - Dependency Proxy Manifest and Group Wiki Repository (Oct 21 - 28 2025)
6/17 Data Types completed - 4 in review and 1 in dev (Nov 10 - 14 2025)
10/17 Data Types completed - 4 in review (Nov 17-21 2025)
| Data Type | Issue | Status | Notes |
|-----------|-------|--------|-------|
| ~~Project Repository~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534198 | Complete | |
| ~~Project Wiki Repository~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534199 | Complete | |
| ~~DesignManagement:Repository~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534197 | Complete | |
| ~~Group Wiki Repository~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534201 | Complete | |
| ~~Snippet Repository~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534200 | Complete | |
| ~~LFS Object~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534160 | Complete | |
| ~~Container Repository~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534202 | Complete | |
| ~~DependencyProxy:Blob~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534196 | Complete | |
| ~~DependencyProxy:Manifest~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534194 | Complete | |
| ~~CI:JobArtifact~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534157 | Complete | |
| ~~CI:PipelineArtifact~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534158 | Complete | |
| ~~CI:SecureFile~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534159 | Complete | |
| ~~MergeRequestDiff~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534161 | Complete | |
| ~~Packages:PackageFile~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534162 | Complete | |
| Packages::Helm::MetadataCache | https://gitlab.com/gitlab-org/gitlab/-/work_items/582314 | Started | |
| ~~Packages::Nuget::Symbol~~ | https://gitlab.com/gitlab-org/gitlab/-/work_items/585543 | Complete | |
| ~~PagesDeployment~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534163 | Complete | |
| ~~Terraform:StateVersion~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534164 | Complete | |
| ~~Upload~~ | https://gitlab.com/gitlab-org/gitlab/-/issues/534193 & https://gitlab.com/gitlab-org/gitlab/-/issues/512567 | Complete | |
epic