Skip to content

Add 'performance' to the canonical label set #462

Description

@ss-o

Context

Several repos carry a local performance 🚀 label (#006b75, "Performance improvements") that has no canonical equivalent and no legacy_migrations entry in lib/labels.yml. It is therefore classified as an unknown local label: preserved by sync_policy, but never migrated and never created in repos that lack it.

Surfaced while relabelling z-shell/zsh-fancy-completions#47 (a completion-resolver memoization proposal). The migration table cleanly resolved bug 🐞, ci 🤖, enhancement ✨, and plugin ⚙️, but performance 🚀 had nowhere to go. The result is an inconsistency between two related issues: zsh-fancy-completions#47 kept the legacy label (correctly preserved), while zsh-fancy-completions#49 — the benchmark issue supporting it — carries no performance signal at all, because applying the legacy label to a new issue would have reintroduced exactly the non-canonical form the taxonomy is meant to eliminate.

Proposal

Add performance as a severity/modifier label, alongside regression, security, and breaking-change. Those are cross-cutting concern markers rather than work types, which is the right shape for this: performance work can be a bug, a maintenance task, or a feature, and the existing type: axis already carries that distinction.

- name: performance
  color: '006b75'
  description: Performance-sensitive work or a measured regression in speed or memory.

Reuse #006b75 — the color repos already use for performance 🚀 — so migration is visually seamless.

Plus the migration entry:

performance 🚀: performance

Scope

  • lib/labels.yml — canonical entry and legacy_migrations mapping.
  • runbooks/labels.md — severity/modifiers list and legacy migration table.
  • runbooks/triage.md — severity/modifiers table.

Explicitly not .github/lib/labels.yml. That file is a stale duplicate that the tooling does not read; adding to it would imply it is maintained. See #461.

Alternative considered

Leave performance 🚀 as a permanent non-canonical local label. Rejected: the sync policy preserves unknown labels but never propagates them, so repos would keep diverging, and every new performance issue forces the same choice between an off-taxonomy label and no signal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:metaOrganization-wide policy, templates, or meta-repo work.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