Summary
test/unit/queue-4.test.ts > queue processors > debounces noisy PR events without publishing public surfaces fails on current main (confirmed via git checkout origin/main -- . in a clean worktree, zero other changes applied).
Root cause
#9169 added "labeled" and "unlabeled" to PR_PUBLIC_SURFACE_ACTIONS in src/queue/processors.ts so that a maintainer adding/removing the manual-review hold label re-syncs immediately instead of waiting for the ~2-minute sweep. The stated reasoning (per that commit's own comment) is narrowly about the manual-review hold, which is read straight off the PR's labels — but the implementation added labeled/unlabeled unconditionally, so any label change (e.g. a maintainer tagging a PR bug) now runs the full public-surface publish pipeline too, which is exactly the noisy-event debounce this test pins.
Fix
Scope the labeled/unlabeled fast-path to only fire when the changed label is itself a disposition input (manual-review, ready-to-merge, changes-requested, migration-collision, pending-closure — the same set resolveAgentDispositionLabels already resolves elsewhere in this file). An unrelated label stays debounced to the sweep, same as before #9169.
Summary
test/unit/queue-4.test.ts > queue processors > debounces noisy PR events without publishing public surfacesfails on currentmain(confirmed viagit checkout origin/main -- .in a clean worktree, zero other changes applied).Root cause
#9169 added
"labeled"and"unlabeled"toPR_PUBLIC_SURFACE_ACTIONSinsrc/queue/processors.tsso that a maintainer adding/removing the manual-review hold label re-syncs immediately instead of waiting for the ~2-minute sweep. The stated reasoning (per that commit's own comment) is narrowly about the manual-review hold, which is read straight off the PR's labels — but the implementation addedlabeled/unlabeledunconditionally, so any label change (e.g. a maintainer tagging a PRbug) now runs the full public-surface publish pipeline too, which is exactly the noisy-event debounce this test pins.Fix
Scope the
labeled/unlabeledfast-path to only fire when the changed label is itself a disposition input (manual-review, ready-to-merge, changes-requested, migration-collision, pending-closure — the same setresolveAgentDispositionLabelsalready resolves elsewhere in this file). An unrelated label stays debounced to the sweep, same as before #9169.