Skip to main content

Issue and pull request labels

TL;DR Five groups: work-type, outside-contribution, pull request size, scope and readiness, and triage. Work-type and pull request size are automatic. A pull request inherits good first issue from a linked closing issue; the remaining labels are applied by hand.

The labels already exist on the repository with the colors below. This file is the record of what they mean and how each one gets applied, so the scheme does not drift as issues are filed.

Work-typeโ€‹

Exactly one per issue. Every issue form applies it automatically, so an issue opened through a form arrives already labeled.

LabelColorMeaningApplied by
bug#d73a4aSomething isn't workingBug report form
enhancement#a2eeefNew feature or requestFeature request form
documentation#0075caImprovements or additions to documentationDocumentation form
refactor#fbca04Code restructuring without behavior changeMaintenance: refactoring form
test#0e8a16Test coverage and fixturesMaintenance: tests form
chore#bfd4f2Tooling, CI, and dependenciesMaintenance: tooling, CI, dependencies form

The three kinds of maintenance are separate forms rather than one form with a type dropdown, so each carries its own work-type label and none needs a label applied by hand.

On a pull request the same label comes from the title, which already names the type because titles follow Conventional Commits. .github/workflows/pr-label.yml maps the commit types in CONTRIBUTING.md to the labels above, keeps exactly one of them on the pull request so a corrected title does not leave the old one behind, and fails when the title starts with something that has no label, which is also the check that the title follows the format.

Commit typeLabel
featenhancement
fixbug
docsdocumentation
refactorrefactor
testtest
chorechore

Outside-contributionโ€‹

Applied by hand to issues during triage, on top of a work-type label, to mark work shaped for someone arriving from outside. A pull request inherits good first issue when it closes an issue carrying that label. help wanted stays on the issue.

LabelColorMeaning
good first issue#7057ffGood for newcomers
help wanted#008672Extra attention is needed

Pull request sizeโ€‹

Exactly one per pull request and never applied to an issue. The PR label workflow adds additions and deletions, applies the matching black label, and replaces it when the diff changes.

LabelColorChanged lines
๐Ÿ“ xs#0000000โ€“9
๐Ÿ“ s#00000010โ€“49
๐Ÿ“ m#00000050โ€“199
๐Ÿ“ l#000000200โ€“999
๐Ÿ“ xl#0000001,000 or more

Scope and readinessโ€‹

Applied by hand during triage, on top of a work-type label. Two of these say what the work touches, and two say whether it can start. None of them can come from a Conventional Commits prefix, which carries only the kind of change, so none of them is applied by .github/workflows/pr-label.yml.

LabelColorMeaning
fidelity#c05621Answering it means observing real socket.io
breaking#7b341eMajor under decision 0019
needs decision#ed8936A decision is needed before any code
blocked#fbd38dCannot start until another issue settles

The four share one shade family so the group reads as a group next to the reds, blues and greens above. The shade within the family carries no meaning.

fidelity needs a boundary sharp enough to stop it spreading. Every delivery change is checked against socket.io, so "was verified against socket.io" would catch all of them and mark nothing. The line is whether observing socket.io is the work, which holds when the issue cannot be answered from a decision taken here and only real socket.io settles it.

breaking is the label for a change that decision 0019 puts in the major row. That is removing or altering a differences.md ยงA entry, a public type change that stops existing call sites compiling, and raising engines.node. A conformance correction is not one of these, however much it moves, which is the point 0019 settles. Before 1.0.0 those changes ship as minor, so the label marks what was touched rather than which number moved.

needs decision does not overlap with the Issues column in decisions/README.md. That column is backward-looking, listing the issues an existing decision record came out of. This label is forward-looking, on an issue where no record exists yet.

Triageโ€‹

Applied by hand to record how an issue was resolved. A question is normally routed to Discussions by the issue-form configuration rather than filed as an issue, so question is rare on the tracker.

LabelColorMeaning
question#d876e3Further information is requested
duplicate#cfd3d7This issue or pull request already exists
invalid#e4e669This doesn't seem right
wontfix#ffffffThis will not be worked on