Problem
There are two canonical-label files in this repo, and they have diverged. Every document points at the one the tooling does not read.
|
lib/labels.yml |
.github/lib/labels.yml |
Read by scripts/labels-sync.rb |
yes — DEFAULT_LABELS_FILE |
no |
Cited by AGENTS.md / runbooks / .github/README.md |
no |
yes, all 8 references |
| Last substantive update |
#451 (Linear transition) |
#416 |
legacy_migrations block |
present |
absent |
sync_policy block |
present |
absent |
dependencies / github_actions automation labels |
present |
absent |
meta:org-tracked carries conflicting descriptions between the two:
- root:
Indicates this issue has cross-repository tracking implications (synced to Linear).
.github/: Auto-add this issue to the org-wide Z-Shell Tracker.
The root copy reflects the post-#451 Linear reality; the .github/ copy still describes the retired GitHub Projects tracker.
Why it matters
The failure is silent. A maintainer follows runbooks/labels.md, edits .github/lib/labels.yml as instructed, runs scripts/labels-sync.rb, and their change has no effect — the script read root lib/labels.yml. Nothing errors, and the dry-run output looks plausible.
The structural blocks are the sharper half: legacy_migrations and sync_policy exist only in root. Anyone treating .github/lib/labels.yml as the source of truth has no legacy-migration table at all, which is precisely the mapping that keeps emoji-suffixed legacy labels from being reintroduced.
History
.github/lib/labels.yml dates to #416. Root lib/labels.yml was then deliberately established by #422 ("restore canonical label source file") and updated again by #451. So the .github/ copy is a stale leftover the documentation was never repointed away from — not a competing authority.
Suggested fix
grep for any other consumer of the .github/lib/labels.yml path — workflows, scripts, external automation, or other repos — before removing anything.
- Delete or symlink
.github/lib/labels.yml to the root file.
- Repoint the 8 documentation references:
AGENTS.md:89, .github/README.md:100,136, runbooks/triage.md:26, runbooks/labels.md:7,109,113,181.
- Consider whether the canonical file belongs at the path the docs already advertise, and move root there instead — either direction works, but only one file should exist.
Also minor: root lib/labels.yml is mode 0600 while the rest of the tree is 0664.
Triage
- Type: bug, area:meta
- Priority: medium — latent, silently wrong, no current breakage
- Effort: small, but requires the consumer audit in step 1 first
Problem
There are two canonical-label files in this repo, and they have diverged. Every document points at the one the tooling does not read.
lib/labels.yml.github/lib/labels.ymlscripts/labels-sync.rbDEFAULT_LABELS_FILE.github/README.mdlegacy_migrationsblocksync_policyblockdependencies/github_actionsautomation labelsmeta:org-trackedcarries conflicting descriptions between the two:Indicates this issue has cross-repository tracking implications (synced to Linear)..github/:Auto-add this issue to the org-wide Z-Shell Tracker.The root copy reflects the post-#451 Linear reality; the
.github/copy still describes the retired GitHub Projects tracker.Why it matters
The failure is silent. A maintainer follows
runbooks/labels.md, edits.github/lib/labels.ymlas instructed, runsscripts/labels-sync.rb, and their change has no effect — the script read rootlib/labels.yml. Nothing errors, and the dry-run output looks plausible.The structural blocks are the sharper half:
legacy_migrationsandsync_policyexist only in root. Anyone treating.github/lib/labels.ymlas the source of truth has no legacy-migration table at all, which is precisely the mapping that keeps emoji-suffixed legacy labels from being reintroduced.History
.github/lib/labels.ymldates to #416. Rootlib/labels.ymlwas then deliberately established by #422 ("restore canonical label source file") and updated again by #451. So the.github/copy is a stale leftover the documentation was never repointed away from — not a competing authority.Suggested fix
grepfor any other consumer of the.github/lib/labels.ymlpath — workflows, scripts, external automation, or other repos — before removing anything..github/lib/labels.ymlto the root file.AGENTS.md:89,.github/README.md:100,136,runbooks/triage.md:26,runbooks/labels.md:7,109,113,181.Also minor: root
lib/labels.ymlis mode0600while the rest of the tree is0664.Triage