Use state machine for all the registries
This is needed to make states obvious and the code easier to understand.
Refactor each Registry class to use a state machine. This is already done for DesignRegistry and ContainerRepositoryRegistry.
ProjectRegistry < BaseRegistry<= Maybe leave this alone
- JobArtifactRegistry < BaseRegistry
- FileRegistry < BaseRegistry (inherited by LFS and Upload, but they will split in #10067 (closed))
- LfsObjectRegistry < FileRegistry
- UploadRegistry < FileRegistry
Syncable, which has some scopes related to sync state.
- Consider code reuse between Registry classes (this has implications for ease of replicating and verifying new data types)