Move organization_transfer_support to dedicated registry

What does this MR do?

Extracts the organization_transfer_support field from 158 db/docs/*.yml files into a single config/organizations/transfer_support.yml registry.

Problem

Updating transfer support status for org-sharded tables required editing db/docs/<table>.yml files, which:

  1. Triggered mandatory database team reviews via CODEOWNERS and Danger rules, even though the change is purely application-level metadata
  2. Caused frequent merge conflicts in the spec file, which maintained large hardcoded allowlists that every concurrent MR touched

Solution

New registry file: config/organizations/transfer_support.yml

A flat, alphabetically-sorted key-value map:

award_emoji: supported
labels: no_work_needed
pool_repositories: todo
  • One line per table — two MRs adding different tables touch different lines, git auto-merges cleanly
  • No arrays — avoids the append-to-list conflicts that plagued the spec
  • Owned by Organizations team via CODEOWNERS, no database review required

Simplified spec

The spec now validates registry consistency (valid statuses, alphabetical sorting, all org-sharded tables present, tables exist in dictionary) without any hardcoded table lists. Zero spec changes needed when adding or updating a table.

Changes

  • Add config/organizations/transfer_support.yml as the single source of truth
  • Add Gitlab::Organizations::TransferSupportRegistry module to read the YAML
  • Update Dictionary::Entry#organization_transfer_support to delegate to the registry
  • Simplify organization_transfer_support_spec.rb — remove all hardcoded allowlists
  • Remove organization_transfer_support from all db/docs/*.yml files
  • Remove field from spec/db/docs_spec.rb allowed fields list
  • Update CODEOWNERS: assign registry and spec to Organizations backend team
  • Update documentation to reference the new registry location

How to add transfer support for a new table

Add one alphabetically-sorted line to config/organizations/transfer_support.yml:

your_new_table: supported

No spec changes. No database review.

Merge request reports

Loading
Loading