Repository navigation
π review-fix: dispatch fix kicks when reports carry no body digest - #14676
Conversation
|
[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 |
|
@clubanderson is auto-promoted for contributor-lane merging on this PR: the last 5 merged PRs by this author in this hive's repositories have no revert or sentinel-alert evidence. CI, reviewer verdict, diff fences, soak, holds and branch protection still apply. |
Open PR overlap checkBase branch: Conflicts are checked with every PR merged onto the current tip of
|
|
@clubanderson this PR is held at Failing checks:
Next: the hive does not push to your branch. Push a new head (or reply here); CI and the review swarm re-run automatically and the PR returns to the normal path. |
A report without body_digest was read by bodyEditedVerdictRevisitable as "PR body edited since verdict", so the planner re-requested review instead of dispatching a fix, every cycle, forever. Missing digest now means unknown/unchanged; only a present-and-different digest triggers revisit. Writers now stamp body_digest: ModelStamps.apply fills it from dispatch records at Collect time, and the relay stamps advisory verdicts from the PR snapshot via review.PullRequestBodyDigest. Starvation guard: a changes_requested head suppressed by the revisit path for RevisitStarvationCycles (3) consecutive cycles is forced onto the fix path; each suppressed cycle records a FixExclusion and logs a WARN, and the planner summary line exposes fix_excluded / fix_excluded_reasons. Fixes #14665 Signed-off-by: Andy Anderson <andy@clubanderson.com>
PlanDispatch org-qualifies pr.Repo before recording state; the guard tests looked the counter up with the bare repo and read 0. Signed-off-by: Andy Anderson <andy@clubanderson.com>
8f30347 to
b792235
Compare
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
|
merged by Hive trusted-author auto-merge: author @clubanderson holds role owner and GitHub permission admin on repo; CI green at b792235. |
Fixes #14665
Problem
After reviewers return
changes_requested, a PR moves tostage/070-fixingbut the planner never dispatches a fix kick. The perspective review reports carried nobody_digest, andbodyEditedVerdictRevisitable(src/pkg/review/dispatch.go) treatedpr.BodyDigest != "" && agg.BodyDigest == ""as "PR body edited since verdict β revisit". The planner therefore re-asked for review instead of dispatching a fix, every cycle, forever (hive#14614, hive#14630:fix_kicks: 0, no exclusion logged, no PendingFix).Fix
bodyEditedVerdictRevisitableonly returns true when both digests are present and differ (falls back toUpdatedAtonly when the PR itself has no digest).body_digestusing the canonicalreview.PullRequestBodyDigest:ModelStamps(collect time) now carries the dispatch record's body digest and fills it onto reports that lack one (skipped when records for the same head disagree).reviewedPRSnapshot{Head, BodyDigest}and stamps advisory (non-dispatched) verdicts with the PR's digest; dispatched verdicts already inherited the dispatch digest.changes_requestedhead records aFixExclusion(verdict-revisit:body-edited/verdict-revisit:stale-reviewer) and is logged at WARN.RevisitStarvationCycles(= 3) consecutive suppressed cycles the planner forces the fix path (DispatchPlan.ForcedFixes, WARN logged). State resets when the head settles/moves.fix_kicks:now also printsfix_excludedandfix_excluded_reasons(reason=count,β¦).src/pkg/review/revisit_body_digest_14665_test.go, notime.Sleep): missing digest β fix kick; matching digest β fix kick; differing digest β revisit + visible exclusion; N-cycle guard forces fix; counter reset on settled cycle; prune on head move; Collect stamps digest from dispatch records.Builds on #14624 (PendingFix TTL) without changing its behaviour.