You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Re-run the read-only audit and post current figures here
Pilot on a single low-traffic repository, verify the result by hand
Migrate in-use labels before deleting unused ones, so a mid-run abort leaves the safer state
Batch by repository, not by label, so a failure is contained
Archive the before-state and the per-repo result, as was done for the canonical rollout
Cautions
The canonical set contains bothdependencies (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.
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
Approved and executed 2026-07-25: pilot on
z-shell/null, then all 85 remainingrepos 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:
delete_unknown_labels: falseRoughly 2,400 irreversible write operations.
dependencies 📦→area:dependenciesalone 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
Cautions
dependencies(the Dependabot and Renovate auto-applied label) andarea:dependencies. Only the emoji-suffixeddependencies 📦is legacy. Do not touch the baredependencies.labels-sync.rbhas no rate-limit backoff and returns early on first error per repo. Expect to re-run to converge.labels.ymlfiles 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.ymlis now the only canonical file.Related