Add IFR flag registry for code ownership

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Fixed
    • Priority: Major - P3
    • 9.0.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Query Integration
    • Fully Compatible
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Add src/mongo/db/ifr_flag_registry.yml, an auto-generated registry that
      tracks all Incremental Feature Rollout (IFR) feature flags in the `rollout`
      or `released` incremental rollout phases. Gate the file behind a
      CODEOWNERS rule that requires @10gen/rollout-flag-managers review
      on every change, so phase transitions get visibility and an approval gate
      without manual bookkeeping.

      What changed

      • Add buildscripts/idl/generate_ifr_registry.py. The script walks all
        .idl files under src/, collects feature flags declared with
        `incremental_rollout_phase: rollout` or `released`, and writes a
        deterministic, sorted YAML registry to
        src/mongo/db/ifr_flag_registry.yml.
      • Call gen_ifr_registry from bazel/wrapper_hook/wrapper_hook.py before
        every build, regenerating the registry in place so it always
        reflects the current IDL state. Report status alongside the existing
        auto_headers output.
      • Seed src/mongo/db/ifr_flag_registry.yml with the three current
        rollout flags (featureFlagCostBasedRanker, featureFlagMultiPlanLimiter,
        featureFlagUnifiedWriteExecutor) and an empty `released` section.
      • Update CODEOWNERS and OWNERS.yml so any change to
        ifr_flag_registry.yml requires @10gen/rollout-flag-managers approval.

      How to test

      • Run `python3 buildscripts/idl/generate_ifr_registry.py` from the repo
        root and verify src/mongo/db/ifr_flag_registry.yml regenerates
        correctly.
      • Run the unit tests: `python3 -m pytest buildscripts/idl/tests/test_generate_ifr_registry.py`.
      • Trigger a normal bazel build and confirm the wrapper hook reports
        `[ifr_registry] (wrote)` or `[ifr_registry] (nochange)`.

            Assignee:
            Charlie Swanson
            Reporter:
            Charlie Swanson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: