slachiewicz opened a new pull request, #301:
URL: https://github.com/apache/maven-gh-actions-shared/pull/301

   Three colours in `labels.js` are each used by more than one label, so those 
labels are indistinguishable wherever they appear together:
   
   ```
   #912E29   maintenance, build
   #E4E669   invalid, breaking, skip-changelog
   #FFFFFF   waiting-for-feedback, wontfix
   ```
   
   ## Colours — five moves, not three
   
   | label | from | to | why |
   |---|---|---|---|
   | `build` | `#912E29` | `#795548` | frees `maintenance`, which keeps its 
established colour |
   | `skip-changelog` | `#E4E669` | `#2F6F6F` | |
   | `breaking` | `#E4E669` | `#FF4F00` | `#E4E669` carries **three** labels; 
`invalid` keeps it as a GitHub default |
   | `wontfix` | `#FFFFFF` | `#6E7781` | frees white |
   | `waiting-for-feedback` | `#FFFFFF` | `#BF8700` | otherwise left alone on 
pure white |
   
   Two things that are easy to miss. `#E4E669` is on three labels, so moving 
`skip-changelog` off it still leaves `invalid` and `breaking` identical. And 
once `wontfix` vacates white, `waiting-for-feedback` is stranded there — an 
invisible outline in light mode, a glaring chip in dark.
   
   `breaking` deliberately does **not** move to `#B60205`, the obvious GitHub 
red: that is 23 in RGB distance from `priority:blocker`'s `#CC0000`, and those 
two land on the same pull request often enough to matter. `#FF4F00` keeps the 
danger reading at 79 from its nearest neighbour.
   
   After the five moves the closest pair left is `dependencies` / 
`documentation` — the two stock blues, RGB 19 apart and honestly 
indistinguishable. They are left alone on purpose: both are entrenched GitHub 
and Dependabot defaults, they rarely co-occur, and renaming or recolouring them 
costs more than it buys.
   
   ## Descriptions — nine rewrites
   
   `maintenance` had none at all, despite being the third most-applied label in 
the org. `skip-changelog`'s was not grammatical. `breaking`'s said *"Pull 
requests that break existing features"*, which describes a **regression** 
rather than a backwards-incompatible change.
   
   Four labels described themselves as applying to pull requests while also 
being applied to issues. In `apache/maven` alone, `breaking` sits on **2 issues 
against 4 pull requests** and `deprecated` on **1 against 2** — so for a third 
of `breaking`'s uses, its own description told a maintainer it did not apply.
   
   `dependencies`, `java` and `github_actions` keep the pull-request wording. 
Dependabot is the only thing that applies them and it only ever opens pull 
requests, so there the phrasing is accurate; staying byte-identical to 
Dependabot's own string also stops them reading as drift in a newly created 
repository.
   
   ## Six declarations of labels that already exist
   
   Not new labels — these are the ones the sync does not manage, which is 
exactly where all the colour drift lives:
   
   | label | repos | state today |
   |---|---|---|
   | `github_actions` | 83 | two different descriptions (74 / 9), as Dependabot 
changed its wording |
   | `question` | 78 | two colours, frozen per repo by GitHub's 2018 default 
change |
   | `Stale` | 24 | no description; load-bearing in the stale workflow |
   | `hacktoberfest-accepted` | 17 | **sixteen** different colours |
   | `security` | 13 | **thirteen** colours, zero descriptions |
   | `reverted` | 0 | but `release-drafter.yml` already lists it in 
`exclude-labels` |
   
   `security`'s description carries the reporting address from this project's 
own `SECURITY.md`, because the label picker is exactly where someone is about 
to file a public exploit report.
   
   `Stale` keeps `#EDEDED` and its capitalisation. `actions/stale` never edits 
label metadata — the GitHub API auto-creates a missing label at that colour 
when it is first applied, which is why all 24 copies look identical — so this 
declaration is a no-op on every repository that already has one, and the 
workflows match the name case-sensitively.
   
   ## Worth knowing before merging
   
   - **Declaring creates.** All six will be created in every active repository 
on the next sync, including `security` in the 79 that lack it and 
`hacktoberfest-accepted` in the ones that never took part. That is the intended 
behaviour and it ends the colour drift permanently, but it is a real 
consequence rather than a no-op.
   - **`labels.js` lives only on `main`.** `v4` and `v5` do not carry it, so 
this is deliberately a single-branch change rather than an omission.
   - **Nothing is deleted.** The sync only creates and updates, so undeclared 
labels such as `task` or the version-targeting ones stay exactly where they are.
   - The result is 28 labels with no two sharing a colour, no empty 
descriptions, and every description inside GitHub's 100-character limit.
   
   ## Not in this pull request
   
   The shared `release-drafter.yml` categorises on 11 labels that exist in no 
repository in the org (`major-enhancement`, `major-rfe`, `major-bug`, `rfe`, 
`fix`, `bugfix`, `regression`, `developer`, `internal`, `test`, and `reverted` 
— the last of which this change fixes by declaring it). That is a separate 
change and I would rather it be reviewed on its own.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to