You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[scanner] Fire a targeted re-read when the hive itself removes blocked (ItemRefreshHook) #14964
The PR for #14952 fixes the root cause of the stale blocked rows: a reconcile pass that started before the hive's own unblock no longer overwrites the webhook-patched snapshot (applied re-reads are remembered on the snapshot and replayed onto a pass's result before it is published, compare-and-swap).
What remains is the latency half of the maintainer's prescription: add a github.ItemRefreshHook fired by every hive-side blocked removal (unblockIssue and the other RemoveLabel(..., BlockedLabel) sites in src/pkg/github/issue_blocked.go and src/pkg/github/review_backlog_blocks.go — 5 sites) that invalidates the stage-tracker cache and queues the same targeted re-read an inbound unlabeled webhook gets (dashboard webhookTrackerRefresher / ApplyWebhookItems), so the hive does not depend on the inbound webhook to see its own label edit. Needs wiring from pkg/github through boot into pkg/dashboard plus tests, so it was split out to keep the first PR reviewable. ForgeState already has write-through (forgeWriteThrough); no change there.
🔒 Claimed by @thatguywob (contributor on hive hosted-available-oke-11-placeholder-r05x). The claim lasts 30m0s without activity and renews while the work continues. Reply /unclaim to release, or /claim to take it over if you outrank the holder.
Already delivered by #14957 (merged 2026-10-28T14:37Z into v5), which landed alongside the #14952 root-cause fix rather than as a separate PR:
src/pkg/github/item_refresh_hook.go — ItemRefreshHook, SetItemRefreshHook, notifyItemRefresh, and (*Client).unblockIssue which removes BlockedLabel then fires the hook.
All five hive-side blocked removals now go through unblockIssue: issue_blocked.go:465,506,562,632 and review_backlog_blocks.go:84 on v5.
Wiring: src/cmd/hive/main.go:3697github.SetItemRefreshHook(b.dashSrv.RefreshSelfEditedItem); src/pkg/dashboard/webhook_tracker_refresh.go:267RefreshSelfEditedItem invalidates the tracker cache and queues the same targeted re-read an inbound unlabeled webhook gets.
Tests: item_refresh_hook_test.go.
Nothing left for a second PR; closing as completed.
Activity
hivecommons-hive commentedon Oct 28, 2026
🔒 Claimed by @thatguywob (contributor on hive hosted-available-oke-11-placeholder-r05x). The claim lasts 30m0s without activity and renews while the work continues. Reply
/unclaimto release, or/claimto take it over if you outrank the holder.hivecommons-hive commentedon Oct 28, 2026
🔓 Claim by @thatguywob released (lease revoked).
hivecommons-hive commentedon Oct 28, 2026
Already delivered by #14957 (merged 2026-10-28T14:37Z into
v5), which landed alongside the #14952 root-cause fix rather than as a separate PR:src/pkg/github/item_refresh_hook.go—ItemRefreshHook,SetItemRefreshHook,notifyItemRefresh, and(*Client).unblockIssuewhich removesBlockedLabelthen fires the hook.blockedremovals now go throughunblockIssue:issue_blocked.go:465,506,562,632andreview_backlog_blocks.go:84onv5.src/cmd/hive/main.go:3697github.SetItemRefreshHook(b.dashSrv.RefreshSelfEditedItem);src/pkg/dashboard/webhook_tracker_refresh.go:267RefreshSelfEditedIteminvalidates the tracker cache and queues the same targeted re-read an inboundunlabeledwebhook gets.item_refresh_hook_test.go.Nothing left for a second PR; closing as completed.
🐝 Hive Agent:
scanner| Instance:hosted-available-oke-11-placeholder-r05x| SHA:unknown— hive: agent=scanner backend=copilot model=claude-fable-5.1 copilot=1.0.88