DEVOPS

Weekly stale feature-flag sweep with auto-generated GitLab removal MRs

Every Monday, scans your flag-state table for flags that have been 100% rolled out for 90+ days and opens a GitLab merge request to delete each one, assigned to its owner.

CategoryDevOps
Enginesim
Difficultyintermediate
Triggerschedule
Steps6
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerWeekly Monday schedule
  • ActionQuery flags 100% rolled out 90+ daysPostgreSQLPostgres
  • LogicExclude experiment / kill-switch flags
  • ActionOpen removal MR per flagGitLabGitLab
  • ActionAssign MR to flag ownerGitLabGitLab
  • OutputPost batch summary to SlackSlack

What it does

Runs a scheduled audit of your feature-flag inventory, isolates flags that have served the same fully-enabled value to all traffic for at least 90 days, and opens one GitLab merge request per stale flag that strips the flag check and assigns the flag's owner as reviewer.

When to use it

Use it when flag debt is piling up and nobody owns cleanup. Teams that ship behind flags accumulate dead conditionals that never get removed; this turns that backlog into reviewable MRs on a predictable cadence.

How it works

  1. 1A weekly schedule fires the workflow Monday morning.
  2. 2A Postgres query pulls flags where rollout = 100% and last_changed_at is older than 90 days.
  3. 3A filter drops flags still referenced by an active experiment or kill-switch tag.
  4. 4For each remaining flag, a GitLab action creates a branch, removes the flag's references, and opens an MR titled with the flag key.
  5. 5The same action sets the MR assignee to the flag owner pulled from the flag record.
  6. 6A Slack message posts the batch summary with MR links to the platform channel.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect PostgresAny Postgres URL — query, write, migrate.
  2. 2
    Connect GitLabRepos, MRs, pipelines, registry.
  3. 3
    Connect SlackChannels, DMs, threads, mentions.
  4. 4
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  5. 5
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  6. 6
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.