Two labels named headless exist in this repo, one repo-scoped and one org-scoped, so the dispatch gate's vocabulary is ambiguous here #305

Open
opened 2026-08-15 15:52:57 +00:00 by coilyco-ops · 1 comment
Member

Filed by Darren (director seat), 2026-08-15. Found incidentally while labelling #304, not looked for. Small, but it is the kind of thing that reads as working right up until it does not.

What is there

id 331  headless  repo-scoped   /repos/coilyco-gaming/eco-app/labels/331
id 333  headless  org-scoped    /orgs/coilyco-gaming/labels/333

Two distinct labels, same name, both applicable to an issue in this repo. Adding headless by name applies both, which is how I noticed: #304 came out carrying it twice.

Current usage across this repo's issues:

331  headless    repo   4
332  consult     org    3
333  headless    org    1   <- only the one I added, since removed

So consult here is org-scoped and headless is repo-scoped. The mode axis is meant to be one vocabulary defined once at org scope, and in this repo it is split across two scopes.

Why it is worth a ticket rather than a shrug

The automation-mode labels are not decoration. They are the dispatch gate: a surface runs an issue only when surface <= mode, read off Issue.Labels. That lookup is by name, so both labels satisfy it today and nothing is currently broken.

What is fragile is everything around it:

  • An issue can carry headless twice, which is what happened on #304.
  • Editing the org label's description or colour silently does not apply to the four issues using the repo-scoped one, so the two drift in meaning while sharing a name.
  • Anyone reading label IDs rather than names, including a script that hardcodes an ID after looking it up once, gets a different answer here than in sibling repos.
  • The other portfolio repos resolve headless to the org label, so this repo is the odd one out and nothing says so.

Do

  1. Retag the four issues currently on 331 to the org label 333.
  2. Delete the repo-scoped 331 once nothing references it.
  3. Check the rest of the mode and tier set in this repo for the same shadowing, since consult is already org-scoped and the split suggests these were created at different times by different hands.

Acceptance

  • Exactly one label named headless is applicable to an issue in this repo, and it is the org-scoped one.
  • No repo-scoped label shadows an org-scoped mode or tier label.
  • Adding a mode label by name applies exactly one label.

Turned up while filing #304. Unrelated to that issue's subject and separated so neither blocks the other.

**Filed by Darren (director seat), 2026-08-15.** Found incidentally while labelling #304, not looked for. Small, but it is the kind of thing that reads as working right up until it does not. ## What is there ``` id 331 headless repo-scoped /repos/coilyco-gaming/eco-app/labels/331 id 333 headless org-scoped /orgs/coilyco-gaming/labels/333 ``` Two distinct labels, same name, both applicable to an issue in this repo. Adding `headless` by name applies **both**, which is how I noticed: #304 came out carrying it twice. Current usage across this repo's issues: ``` 331 headless repo 4 332 consult org 3 333 headless org 1 <- only the one I added, since removed ``` So `consult` here is org-scoped and `headless` is repo-scoped. The mode axis is meant to be one vocabulary defined once at org scope, and in this repo it is split across two scopes. ## Why it is worth a ticket rather than a shrug The automation-mode labels are not decoration. They are the **dispatch gate**: a surface runs an issue only when `surface <= mode`, read off `Issue.Labels`. That lookup is by name, so both labels satisfy it today and nothing is currently broken. What is fragile is everything around it: * An issue can carry `headless` twice, which is what happened on #304. * Editing the org label's description or colour silently does not apply to the four issues using the repo-scoped one, so the two drift in meaning while sharing a name. * Anyone reading label IDs rather than names, including a script that hardcodes an ID after looking it up once, gets a different answer here than in sibling repos. * The other portfolio repos resolve `headless` to the org label, so this repo is the odd one out and nothing says so. ## Do 1. Retag the four issues currently on 331 to the org label 333. 2. Delete the repo-scoped 331 once nothing references it. 3. Check the rest of the mode and tier set in this repo for the same shadowing, since `consult` is already org-scoped and the split suggests these were created at different times by different hands. ## Acceptance * Exactly one label named `headless` is applicable to an issue in this repo, and it is the org-scoped one. * No repo-scoped label shadows an org-scoped mode or tier label. * Adding a mode label by name applies exactly one label. --- Turned up while filing #304. Unrelated to that issue's subject and separated so neither blocks the other.
Author
Member

Step 1 is done, and step 2 now needs only the admin token. Darren (director seat), 2026-08-15.

Found again from the other direction: an org-wide backfill of priority/*, autonomy/* and role/* reported four eco-app issues as missing an autonomy label when they visibly carried headless. They carried the repo-scoped one, which does not match the autonomy/ prefix.

Retagged. #266, #267, #269 and #304 now carry autonomy/headless (org id 333), and the repo-scoped id 331 has been removed from each. Nothing in this repo references 331 any more, open or closed.

That leaves the two remaining steps:

  1. Retag the four issues on 331 - done.
  2. Delete the repo-scoped label 331. It is now unreferenced, so the delete costs nothing. This is the one step I did not take: org-label/repo-label deletes need the attended admin credential, and coilyco-ops is a member rather than an owner.
  3. Check the rest of the mode and tier set for the same shadowing. Worth doing while the admin token is out, since the pattern here was one axis org-scoped and its sibling repo-scoped.

Note that the taxonomy moved underneath this issue while it was open. The labels are now autonomy/headless, autonomy/live-collab, autonomy/async-consult and autonomy/epic, all scoped and exclusive. A repo-scoped label named plain headless no longer shadows anything by name - it is simply an unrelated label that reads like the old vocabulary, which is arguably worse for a human skimming the list.

aosguard ops forgejo-admin org-label delete exists as of coilyco-flight-deck/agentic-os #1069, so the deletion is one verb once someone has the token.

**Step 1 is done, and step 2 now needs only the admin token. Darren (director seat), 2026-08-15.** Found again from the other direction: an org-wide backfill of `priority/*`, `autonomy/*` and `role/*` reported four eco-app issues as missing an autonomy label when they visibly carried `headless`. They carried the repo-scoped one, which does not match the `autonomy/` prefix. **Retagged.** #266, #267, #269 and #304 now carry `autonomy/headless` (org id 333), and the repo-scoped id 331 has been removed from each. Nothing in this repo references 331 any more, open or closed. That leaves the two remaining steps: 1. ~~Retag the four issues on 331~~ - done. 2. **Delete the repo-scoped label 331.** It is now unreferenced, so the delete costs nothing. This is the one step I did not take: `org-label`/repo-label deletes need the attended admin credential, and `coilyco-ops` is a member rather than an owner. 3. Check the rest of the mode and tier set for the same shadowing. Worth doing while the admin token is out, since the pattern here was one axis org-scoped and its sibling repo-scoped. Note that the taxonomy moved underneath this issue while it was open. The labels are now `autonomy/headless`, `autonomy/live-collab`, `autonomy/async-consult` and `autonomy/epic`, all scoped and exclusive. A repo-scoped label named plain `headless` no longer shadows anything by name - it is simply an unrelated label that reads like the old vocabulary, which is arguably worse for a human skimming the list. `aosguard ops forgejo-admin org-label delete` exists as of `coilyco-flight-deck/agentic-os` #1069, so the deletion is one verb once someone has the token.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/eco-app#305
No description provided.