ENGINEERING

Weekly Stale Feature-Flag Scan with Auto-Cleanup MRs

Every Monday, scans your flag registry for flags that have been 100% rolled out for over 30 days.

CategoryEngineering
Enginesim
Difficultyintermediate
Triggerschedule
Steps6
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerWeekly Monday schedule fires
  • ActionQuery Postgres for 100%-rollout flags idle 30+ daysPostgreSQLPostgres
  • LogicDrop flags tagged permanent or kill-switch
  • ActionSearch GitLab repo for each flag key and build removal diffGitLabGitLab
  • ActionOpen one cleanup MR per stale flagGitLabGitLab
  • OutputPost digest of opened MRs to SlackSlack

What it does

Finds feature flags that are fully rolled out (100% enabled) and have not changed state in over 30 days, then automatically opens one GitLab merge request per stale flag. Each MR removes the flag check and the now-dead `else` branch, leaving only the shipped code path.

When to use it

Run this when your codebase has accumulated dozens of permanent-by-accident flags. Teams that gate every feature behind a flag but never circle back to clean them up end up with brittle, hard-to-read conditionals. This turns a quarterly chore into a weekly trickle of small, reviewable MRs.

How it works

  1. 1A weekly schedule fires Monday morning.
  2. 2Query Postgres flag-state table for flags at 100% rollout with `last_changed_at` older than 30 days.
  3. 3Filter out flags tagged `permanent` or `kill-switch` so operational toggles survive.
  4. 4For each remaining flag, search the GitLab repo for its key and generate a diff that deletes the branch.
  5. 5Open a GitLab MR per flag with the diff, a checklist, and reviewers auto-assigned.
  6. 6Post a digest to Slack listing the MRs opened so the team can triage.

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.