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
{{ message }}
Repository navigation
Dogfood: run labelsync against specsnl from CI #48
Make this repository the tool's first real user: labelsync managing labelsync's own labels. A
scheduled drift-correction job is a no-op when there is nothing to fix, which is exactly the
property worth demonstrating.
.github/workflows/labels.yml — dry-run on pull requests touching labels.yml, apply on
merge to main, and a weekly scheduled drift correction
Pull-request runs use sync --dry-run --output=json; exit 2 fails the check when the
config and live state disagree
The Actions-injected GITHUB_TOKEN will not work. It is scoped to the repository the
workflow runs in and cannot write labels to other repositories in the organisation. Use a PAT
stored as LABELSYNC_TOKEN, and document the rotation burden
Note the GitHub App alternative — no expiry, higher rate limits, scoped to selected
repositories — as the later option, addable behind the same resolver interface without
touching call sites
Decide whether the stock bug and enhancement labels become the renames: worked
example, or prune candidates
Left unticked: extending labels.yml beyond the self group. The box says "only after a
dry-run has been reviewed", and that review has not happened. It also needs a decision this issue
does not contain: the org holds ~67 repositories, most of them private client projects, and this
catalogue's labels (area: palette, type: spike) describe this codebase rather than any of
them. Rolling out sensibly means a second group with its own label set, not widening self — worth
its own issue.
Decision on the stock labels: renames, not prune candidates.bug → type: bug and enhancement → type: feature are now in labels.yml. A rename is a PATCH, so the label keeps
its id and its issues; a delete plus a create would strip it from all of them. On this repository
both entries are inert — the targets already exist, so the planner skips them — and that is the
point: they migrate the next repository the catalogue covers.
Two things to be aware of before merging.
The secret does not exist yet. Until LABELSYNC_TOKEN is set, the job annotates a warning
and skips rather than failing, and it is deliberately not a required status check — a fork's pull
request never sees the secret, and paths: means the job does not run on most pull requests at
all.
The first apply will recolour three labels. A local dry run against this repository:
~ recolour bug #936d1f (displaced by "type: bug")
~ recolour documentation #13ec80 (displaced by "area: docs")
~ recolour enhancement #a50d73 (displaced by "type: feature")
Configured colours are reserved, and those three leftovers are sitting on them. Every stock label
here is unused (0 issues, 0 pull requests), so the tidier outcome is to remove them once — labelsync sync --mode prune --prune all — after which the apply is a clean no-op. That is a
destructive write to live labels, so it is your call rather than something this branch does.
Dropped the extend labels.yml to the wider organisation scope item, and the Goal's clause about the organisation with it: rolling labelsync out across specsnl is not happening from this repository, so it is not a box this issue can ever tick. What is left is dogfooding — labelsync managing its own labels — and #97 covers all of it.
Activity
Ilyes512 commentedon Aug 11, 2026
Implemented on
feat/GH-48-dogfood-ci.Left unticked: extending
labels.ymlbeyond theselfgroup. The box says "only after adry-run has been reviewed", and that review has not happened. It also needs a decision this issue
does not contain: the org holds ~67 repositories, most of them private client projects, and this
catalogue's labels (
area: palette,type: spike) describe this codebase rather than any ofthem. Rolling out sensibly means a second group with its own label set, not widening
self— worthits own issue.
Decision on the stock labels: renames, not prune candidates.
bug→type: bugandenhancement→type: featureare now inlabels.yml. A rename is aPATCH, so the label keepsits id and its issues; a delete plus a create would strip it from all of them. On this repository
both entries are inert — the targets already exist, so the planner skips them — and that is the
point: they migrate the next repository the catalogue covers.
Two things to be aware of before merging.
The secret does not exist yet. Until
LABELSYNC_TOKENis set, the job annotates a warningand skips rather than failing, and it is deliberately not a required status check — a fork's pull
request never sees the secret, and
paths:means the job does not run on most pull requests atall.
The first apply will recolour three labels. A local dry run against this repository:
Configured colours are reserved, and those three leftovers are sitting on them. Every stock label
here is unused (0 issues, 0 pull requests), so the tidier outcome is to remove them once —
labelsync sync --mode prune --prune all— after which the apply is a clean no-op. That is adestructive write to live labels, so it is your call rather than something this branch does.
Ilyes512 commentedon Aug 12, 2026
Dropped the extend
labels.ymlto the wider organisation scope item, and the Goal's clause about the organisation with it: rolling labelsync out acrossspecsnlis not happening from this repository, so it is not a box this issue can ever tick. What is left is dogfooding — labelsync managing its own labels — and #97 covers all of it.Merge pull request #97 from specsnl/feat/GH-48-dogfood-ci