sync_blocked_label.py is a no-op: labels moved to the org #3
Closed
opened 2026-09-07 16:04:20 +00:00 by claude
·
0 comments
Labels
Clear labels
Compat
Breaking
Breaking change that won't be backward compatible
Kind
Documentation
Documentation changes
Kind
Enhancement
Improve existing functionality
Kind
Feature
New functionality
Kind
Question
A question that has to be answered before the work can be specified
Kind
Security
This is security issue
Kind
Testing
Issue or pull request related to testing
Priority
Critical
1
The priority is critical
Priority
High
2
The priority is high
Priority
Medium
3
The priority is medium
Priority
Low
4
The priority is low
Reviewed
Confirmed
1
Issue has been confirmed
Reviewed
Duplicate
2
This issue or pull request already exists
Reviewed
Invalid
3
Invalid issue
Reviewed
Won't Fix
4
This issue won't be fixed
Status
Blocked
1
Something is blocking this issue or pull request
Status
Need More Info
2
Feedback is required to reproduce issue or to continue work
Status
On Hold
3
Deliberately deferred. Not blocked by a dependency and not waiting on a fact
Status
Abandoned
4
Somebody has started to work on this but abandoned work
Type
Bug
Something is not working
Type
Chore
Infrastructure, CI, tooling or packaging. No user-visible change
Type
Epic
An umbrella issue with sub-issues. Never worked directly
Type
Meta
About how work is done here rather than about the code
Type
Spike
The deliverable is a measurement or a decision, not merged code
Type
Task
An ordinary unit of work with a deliverable. The default
Milestone
No items
No Milestone
Notifications
Due Date
No due date set.
Reference: weblib/weblib-ci#3
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The reconciler is currently a no-op in all five repos. My regression, from
today's move to org-level labels (weblib-archive#63).
Measured, not inferred:
label_id()resolves the label fromrepos/{repo}/labels, and that nowreturns
[]everywhere — the labels moved toorgs/weblib/labels. So everyrun skips, and
Status/Blockedhas not been maintained since the migration.It fails safe — skipping rather than mislabelling, which is what the
docstring on
label_idwas written for — so nothing is corrupted. But nothingis reconciled either, and that is silent: the job goes green every 15 minutes.
Fix 1 — resolve the label from the org, falling back to the repo
Try
repos/{repo}/labelsfirst and thenorgs/{owner}/labels. Keeping therepo lookup means the script still works for a repo that has local labels, and
does not care which way a given instance is set up.
Fix 2 — never overwrite another
Status/*This one is not yet broken; it arms the moment
Status/*becomes exclusiveagain, which bit has said it will:
The reasoning is sound for
On HoldvsNeed More Info. The case it does notcover is that
Status/Blockedis set by this script, automatically, every 15minutes — so under an exclusive
Status/*, the moment a parked issue gains adependency the reconciler would silently delete a human-set label:
And because
Status/On Holdis exactly what makes the backlog sweep skip anissue, the parked issue would then be offered back as available work — the
failure that label was created to prevent.
Measured on the org labels while they were briefly exclusive: adding
Status/Blockeddid evictStatus/Need More Info.Rule: a human-set status wins. If an issue already carries a
Status/*other than
Status/Blocked, the reconciler leaves it alone rather than addingBlocked. Nothing is lost —On Hold,Need More InfoandAbandonedallalready mean "not workable", which is what
Blockedwould have said.Removal is unaffected and stays as it is: if
Blockedis present and everyblocker is closed, take it off.
Verification
Status/BlockedStatus/On Holdand an open dependency does not, and keepsOn Hold--dry-runstill changes nothingType/Bug,Priority/High— it is a live regression in a job that runs every15 minutes and reports success while doing nothing.