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

  • PR feat(labels): add gated migrate and delete paths to labels-sync.rb #466 merged (2026-07-21)
  • Explicit maintainer approval for the full org-wide run, with figures re-measured at run time.
    Approved and executed 2026-07-25: pilot on z-shell/null, then all 85 remaining
    repos in two confirmed passes (migrate, then delete), then a final read-only
    re-check across all 86 confirming zero remaining operations. See comments below.

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. Resolved by PR fix(labels): make lib/labels.yml the only canonical label file #471 (2026-07-21); lib/labels.yml is now the only canonical file.

Related

Metadata

Metadata

Assignees

Labels

area:metaOrganization-wide policy, templates, or meta-repo work.meta:org-trackedIndicates this issue has cross-repository tracking implications (synced to Linear).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