Skip to content

chore(labels): run the legacy label cleanup across the organization #467

Description

@ss-o

Tracks the execution that #465 and PR #466 deliberately left out of scope. The tooling is the PR; running it is this issue.

Blocked on

Measured scope (2026-07-21, will need re-measuring)

Across 86 active, public, non-fork repositories, counting every issue and pull request in any state:

Operation Count
Unused legacy labels to delete 1,405
In-use legacy labels to migrate 60 (repo, label) pairs
Items to relabel before those deletions 1,002 across 31 repos
Unknown labels 1,503 — never deleted, delete_unknown_labels: false

Roughly 2,400 irreversible write operations. dependencies 📦area:dependencies alone accounts for 754 items across 18 repos.

Why the figures must be re-measured

The counts above come from a point-in-time sweep. Labels gain items continuously, and a label that reads as unused today may not be tomorrow. The tooling measures usage live per repo, so a stale plan is not itself dangerous — but the approval should be given against real numbers, not these.

Suggested sequence

  1. Re-run the read-only audit and post current figures here
  2. Pilot on a single low-traffic repository, verify the result by hand
  3. Migrate in-use labels before deleting unused ones, so a mid-run abort leaves the safer state
  4. Batch by repository, not by label, so a failure is contained
  5. Archive the before-state and the per-repo result, as was done for the canonical rollout

Cautions

  • The canonical set contains both dependencies (the Dependabot and Renovate auto-applied label) and area:dependencies. Only the emoji-suffixed dependencies 📦 is legacy. Do not touch the bare dependencies.
  • labels-sync.rb has no rate-limit backoff and returns early on first error per repo. Expect to re-run to converge.
  • Two labels.yml files have drifted; docs cite the stale one #461 (two labels.yml files have drifted) should land first — deleting against the wrong source of truth would be difficult to undo.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:metaOrganization-wide policy, templates, or meta-repo work.meta:org-trackedIndicates this issue has cross-repository tracking implications (synced to Linear).status:blockedCannot proceed until an external dependency or decision changes.type:maintenanceNon-feature maintenance, cleanup, or org work.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions