sync_blocked_label.py is a no-op: labels moved to the org #3
Reference in New Issue
Block a user
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?
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.