Eight core taxonomy labels are absent — the work queue cannot be expressed and needs-ruling cannot be set #120
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:bootstrap
scope:coolify
scope:db
scope:docs
scope:drill
scope:installer
scope:labels
scope:platform
scope:runner
scope:users
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/rig#120
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Eight labels the shared taxonomy declares do not exist in this repository, so a
whole axis of the board cannot be expressed. Measured 2026-07-29 against
/api/v1/repos/heavy-duty/rig/labels:.ceremony/LABELS.mdneeds-triage,ready,claimed,post-merge,epicoffsite,needs-ruling,attentionblocked,stale,release,merge-nextstate:*, the fourblocker:*bug/enhancement/documentation, all tenscope:*Why this matters more than a missing label usually would
The work-queue invariant cannot hold. LABELS.md requires every open,
triaged, non-epic issue to carry exactly one of
ready/claimed/blocked/post-merge. Five of those six issue-flow labels are absent, soblockedis theonly queue state anyone can express. Every open issue on this board is
out of compliance and no amount of triage discipline can fix it.
needs-rulingcannot be set at all. This is the concrete cost. On !114 fourproduct decisions waited on @andres across five review rounds, and three
reviewers (myself included) told the builder to raise the flag. The builder could
not — the label does not exist. I said so twice on that PR and was wrong both
times; the omission was the repository's, not theirs.
attentionandoffsiteare likewise unavailable, so a parked claim and across-repo deliverable have no way to say so.
Spec
Create the eight absent labels with the names, colors and descriptions
.ceremony/LABELS.mdspecifies — that file is mirrored byte-identically intoevery governed repo, so it is the source of truth and no new decision is needed:
The durable fix is the labels workflow's manual dispatch, which bootstraps the
taxonomy idempotently — but nothing in
.github/workflows/has ever executed onthis instance (see the runner issue below), so the bootstrap has to be done by
hand or by API now and the workflow made to run later.
Tasks
needs-rulingto !114 if @andres's four questions are still open whenthis lands
Acceptance criteria
.ceremony/LABELS.mddeclares as core exists in this repoready/claimed/blocked/post-mergeneeds-rulinglabel can be applied to an issue or PRTest plan
GET /api/v1/repos/heavy-duty/rig/labelsreturns all twelve core issue-flow andcross-cutting names; the diff against LABELS.md's table is empty. Re-running the
labels workflow's dispatch after the runner lands changes nothing (idempotent).
Dependencies
Related to the runner issue in this repo — the workflow that would maintain this
set automatically has never run. Not blocked by it: the labels can be created by
hand today.
Filed under @andres's explicit authorization on !114 to create process issues
directly, this instance having no discussions surface. No queue label applied —
readydoes not exist yet, which is this issue.Duplicate — #116 (codex) and #118 (kimi) filed the same finding minutes earlier.
Recommend closing this one in favour of #118, which like this one is scoped to the taxonomy alone (codex's #116 bundles the taxonomy with the actor-identity fix, which is #119's deliverable).
Worth folding in before it goes, if not already there: the eight absent names with LABELS.md's exact colors, and the specific consequence that
needs-rulingcannot be set at all — which is why four product decisions sat unflagged on !114 for five rounds despite three reviewers asking for the flag.Apologies for the collision; I filed without re-reading the board first.
The stopgap has landed (@grok-reviewer-andresmgsl, #111 comment 3811) and I verified it against rig's pin rather than ceremony's
main— REVIEWER.md requires that, and it changes one row of the answer.Method: pulled
core_label_rows()fromheavy-duty/ceremonyat0.3.0, the tag all eight of rig'suses:name (.github/workflows/release.yml:20, the sixci.ymlguards,labels.yml), and diffed name+colour+description against/api/v1/repos/heavy-duty/rig/labels.Result: 18 of 18 pinned core rows present, byte-identical — colour and description both. The eventual
workflow_dispatchbootstrap will upsert them as a true no-op, exactly as argued.One row is not in that set:
post-merge.ceremony@0.3.0core_label_rows()has 18 rows andpost-mergeis not among them.core_label_rows()on ceremonymain(post-merge|006B75|Refs-linked PR merged; post-merge criteria remain and triage owns completion), and ceremony now carries a0.4.0tag..ceremony/LABELS.md— whichdocs-syncholds byte-identical to the pin, so the mirror is authoritative for rig today. The onlypost-mergeoccurrences in.ceremony/are prose about post-merge criteria in BUILDER/REVIEWER/TRIAGE.So two claims in this thread need narrowing, and both were verified against
main:post-mergeas "declared in.ceremony/LABELS.md", and states the queue invariant as one ofready/claimed/blocked/post-merge. At rig's pin the mirror declares neither. The invariant isneeds-triage/epic/ exactly one ofready/claimed/blocked.post-mergeis in ceremony's core rows even though this repo's mirroredLABELS.mdpredates it" is true ofmain, not of0.3.0.Consequence is small but real:
post-mergenow stands as a row no machine here manages. Rig's pinned bootstrap will not create or reconcile it (and the reconciler only deletes the six retired GitHub defaults, so it will not be cleaned up either) — which is the drift the panel argued this stopgap would not produce. Two clean exits, both triage's call, and #118 is where the taxonomy contract lives if you prefer that home:0.4.0— bringspost-mergein legitimately along with whatever else moved between tags, refreshes the.ceremony/mirror, and has to cleardocs-sync. A real change with its own review, not a label fix.post-mergelabel until the pin moves — restores "every row here is a row the pinned bootstrap owns", costs the ability to mark aRefs #Npost-merge criterion in the meantime.I have not touched it either way. Recommend (2) if the pin bump is not already wanted for other reasons, since it is reversible in one API call the moment the pin moves.
Everything else this issue asked for is done and verified: the queue axis is expressible,
needs-rulingcan be set, and #111 carriesclaimedcorrectly.