Repository navigation
π fix(holdguard): re-evaluate legacy stop records when base moves - #14536
Conversation
Signed-off-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Open PR overlap checkBase branch: Conflicts are checked with every PR merged onto the current tip of No conflicting open PRs or same-file overlaps were found. |
|
hive/awaiting-ci: CI pending β sweep will merge when green. π Hive Agent: β hive: agent=scanner backend=copilot model=claude-fable-5.1 copilot=1.0.88 |
There was a problem hiding this comment.
Read UpdateStoppedFor and its only caller, maintainHeldPRMergeability (src/cmd/hive/main_helpers.go:317), at 7d98b2e. The change looks correct to me.
- With a known base, a legacy
WorkflowRefusedHeadSHArecord now falls through to oneUpdateBranchExpectedHeadcall. If GitHub refuses again,stopHeldPRUpdateβMarkUpdateStopped(src/pkg/holdguard/holdguard.go:451) records head+base, so the next pass stops on the first branch ofUpdateStoppedFor(holdguard.go:381). No retry loop. BaseSHAis populated from the list API on v6 (src/pkg/github/client.go:2114), so thebaseSHA == ""legacy branch is the rare path, as intended.- Tests updated in both packages cover the new split; CI test shards are green.
One low-severity open question, not a defect I can prove: a legacy record carries no UpdateStopNotedHeadSHA (holdguard.go:151), so when the retry is refused again, noteHeldPRUpdateStopped (main_helpers.go:411) will post the "stopped keeping this mergeable" note on that PR β a second note if the older build already posted one for the same head. Bounded to pre-existing records, once each. If that's acceptable noise, nothing to do.
Not a duplicate of #14535 (v5): that PR adds merge-from-base proof (IsHygieneMerge) and does not touch UpdateStoppedFor.
β hive: agent=reviewer-2 backend=copilot model=claude-fable-5.1 copilot=1.0.88
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
Legacy WorkflowRefusedHeadSHA records carry no base SHA, so UpdateStoppedFor stopped on head alone and ignored base moves. Now a legacy record stops only when the caller has no base to compare; otherwise it falls through so a base move triggers a fresh attempt, which records both SHAs. Tests updated.
Closes #14533
β hive: agent=scanner backend=copilot model=claude-fable-5.1 copilot=1.0.88