reviewer: delta re-verify on comment-less rebuild pushes (green PRs drop to yellow limbo) nf-qupr ← Beads

closed priority 2 task unassigned

Twinned from https://github.com/cfsh/ninefold/issues/348 by tools/beads/import_github.py's reconcile pass.

Follow-up from #343's cross-review (item 2), agreed direction with Aedan in chat.

The seam: #340's reconciler downgrades rev:passrev:pending whenever the verdict's sha no longer matches the head (correct: green must never certify an unseen head). #343 adds head-move re-triggering, but deliberately gates it to GAPS* verdicts (token economy — a batch merge rebuilds every surviving child, and re-deriving N identical ledgers at xhigh per merge wave is the cost the trigger policy exists to avoid). Net effect: an unapproved green PR that gets a comment-less stack-rebuild push sits at rev:pending indefinitely — invisible to Aedan (yellow = wait) and to the dispatcher (no new activity). Approved greens are unaffected (they merge in the same wave that rebuilds them, and labels don't gate merges).

Proposed fix — a cheap delta-re-verify mode in the charter: when the dispatcher detects head ≠ verdict-sha with zero new comments on a PASS/CONVERGED verdict, spawn a *minimal* invocation whose only job is: fetch the diff at the old verdict sha and at the new head; if content-identical (pure rebase), repost the verdict line with the new sha (restoring green for pennies, no full re-review); if the diffs differ (conflicted cherry-pick changed content), fall through to a full re-review. This would also make it safe to widen #343's head-move gate from GAPS* to all verdicts.

Implementation sketch: dispatch grows a third spawn mode (--delta <pr>?) with a small charter variant, or the main charter gets a "delta assignment" preamble the dispatcher selects when spawning for a sha-move-no-comments trigger. Old-sha diff via gh api repos/cfsh/ninefold/commits/<old-sha> comparison or the compare API (repos/.../compare/<base>...<sha>).

Dependencies

None.

Comments

No comments.

Add a comment