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
auto-rebase: verify DIRTY PRs now reach the conflict-sentinel path; retire the redundant stuck-comment escalation #928
Part of #926 (AC4). Blocked by the eligibility-default-flip issue — this can't be observed until eligibility: all ships.
Confirm that a DIRTY, non-draft PR is now actually attempted by update-branch (since it's no longer skipped for lacking an approval) and therefore reaches the existing <!-- auto-rebase-conflict: --> sentinel → dev-lead agentic-rebase path. If confirmed, retire the weaker one-time <!-- auto-rebase-stuck --> comment escalation (combsmith/.github-private#711) as redundant dead code.
Issue:#928 — auto-rebase: verify DIRTY PRs now reach the conflict-sentinel path; retire the redundant stuck-comment escalation
Confirmation (AC4)
Verified in .github/workflows/auto-rebase-reusable.yml: since #927 flipped the eligibility default to all and removed the approval/review-ready plumbing, a DIRTY, non-draft PR now:
passes the eligibility gate (all never skips),
is detected as behind (behind_by > 0),
is actually attempted by update-branch (no approval precondition remains),
No approval or mergeable_state check short-circuits a DIRTY PR. Confirmed.
Scope
Codify the AC4 confirmation as a CI-gated bats regression test so the DIRTY → conflict-sentinel path cannot silently regress (e.g. by reintroducing an approval gate before update-branch).
Implementation Checklist
test/workflows/auto-rebase/conflict-sentinel.bats — new regression guards on the reusable workflow
Tests to Write
update-branch is attempted for eligible behind PRs (DIRTY PRs are no longer skipped)
no approval / review-decision precondition gates update-branch
a merge conflict update failure branches to the conflict path
the conflict path posts the <!-- auto-rebase-conflict: --> dev-lead sentinel
the weaker <!-- auto-rebase-stuck --> escalation is absent from this repo's reusable (retired)
Out of Scope (handoff)
The primary retirement of the one-time <!-- auto-rebase-stuck --> comment escalation lives in combsmith/.github-private#711 (dev-lead-reusable), a separate repo this dev-lead run cannot modify. It must be removed there as a follow-up; this repo only carries the confirmation + regression guard.
Traced .github/workflows/auto-rebase-reusable.yml. Since #927 shipped eligibility: all and removed the approval/review-ready plumbing, a DIRTY, non-draft PR is now handled as:
Eligible — auto_rebase_pr_eligible all always returns 0 (no approval gate).
Behind — a conflicting PR has behind_by > 0, so it is not skipped.
Attempted — PUT /pulls/{n}/update-branch is called (line 156).
Conflict branch — the 422 merge conflict path is taken (line 186).
No approval or mergeable_state check short-circuits a DIRTY PR before update-branch. The DIRTY → conflict-sentinel → dev-lead path is reached.
Plan Execution
Verified AC4 against the reusable workflow
Codified the confirmation as CI-gated bats regression guards (test/workflows/auto-rebase/conflict-sentinel.bats)
Proved the new guards fail on a simulated regression (approval gate reintroduced / conflict sentinel dropped / stuck sentinel added)
Full bats suite green (19/19) + dev-lead-lint.sh clean
Test Results
1..19
ok 5 conflict-sentinel: reusable workflow file exists
ok 6 conflict-sentinel: every eligible behind PR is attempted via update-branch
ok 7 conflict-sentinel: update-branch is not gated on an approval / review decision
ok 8 conflict-sentinel: a merge-conflict update failure branches to the conflict path
ok 9 conflict-sentinel: the merge-conflict path posts the <!-- auto-rebase-conflict: --> dev-lead sentinel
ok 10 conflict-sentinel: the weaker one-time <!-- auto-rebase-stuck --> escalation is absent (retired)
... (13 pre-existing tests also pass)
19 tests, 0 failures
dev-lead-lint.sh: shellcheck (29 files) + CODEOWNERS — all checks passed
Files Changed
test/workflows/auto-rebase/conflict-sentinel.bats (new): regression guards pinning the DIRTY → conflict-sentinel path (update-branch attempted, no approval gate, merge-conflict branch posts the <!-- auto-rebase-conflict: --> dev-lead sentinel, <!-- auto-rebase-stuck --> absent). Auto-picked up by auto-rebase-tests.yml (runs the whole dir).
TDD note (Phase 2 exception)
The confirmed behavior already shipped in #927, so these are regression/verification guards on already-correct code rather than red→green feature tests. To honor the intent, I demonstrated they fail against a deliberately regressed copy of the reusable before landing them.
Out of scope / required follow-up
Retiring the actual weaker one-time <!-- auto-rebase-stuck --> comment escalation is a petry-projects/.github-private change (dev-lead-reusable, tracked by combsmith/.github-private#711). That escalation code does not exist in this (petry-projects/.github) repo — grepped the whole tree, no auto-rebase-stuck reference. It must be removed in .github-private as a follow-up; this repo carries only the AC4 confirmation + a guard that the stuck sentinel is never introduced here.
Notes
No behavior change to any workflow or script — verification + test only. No unrelated files touched.
Activity
don-petry commentedon Aug 3, 2026
Dev-Lead Implementation Plan
Issue: #928 — auto-rebase: verify DIRTY PRs now reach the conflict-sentinel path; retire the redundant stuck-comment escalation
Confirmation (AC4)
Verified in
.github/workflows/auto-rebase-reusable.yml: since #927 flipped the eligibility default toalland removed the approval/review-ready plumbing, aDIRTY, non-draft PR now:allnever skips),behind_by > 0),update-branch(no approval precondition remains),merge conflict(422) branch, and<!-- auto-rebase-conflict: -->sentinel → dev-lead agentic-rebase path.No approval or
mergeable_statecheck short-circuits a DIRTY PR. Confirmed.Scope
Codify the AC4 confirmation as a CI-gated bats regression test so the
DIRTY → conflict-sentinelpath cannot silently regress (e.g. by reintroducing an approval gate beforeupdate-branch).Implementation Checklist
test/workflows/auto-rebase/conflict-sentinel.bats— new regression guards on the reusable workflowTests to Write
merge conflictupdate failure branches to the conflict path<!-- auto-rebase-conflict: -->dev-lead sentinel<!-- auto-rebase-stuck -->escalation is absent from this repo's reusable (retired)Out of Scope (handoff)
The primary retirement of the one-time
<!-- auto-rebase-stuck -->comment escalation lives in combsmith/.github-private#711 (dev-lead-reusable), a separate repo this dev-lead run cannot modify. It must be removed there as a follow-up; this repo only carries the confirmation + regression guard.Test Command
bats --print-output-on-failure test/workflows/auto-rebase/don-petry commentedon Aug 3, 2026
Dev-Lead: Implementation Complete
Confirmation (AC4) — CONFIRMED
Traced
.github/workflows/auto-rebase-reusable.yml. Since #927 shippedeligibility: alland removed the approval/review-ready plumbing, aDIRTY, non-draft PR is now handled as:auto_rebase_pr_eligible allalways returns 0 (no approval gate).behind_by > 0, so it is not skipped.PUT /pulls/{n}/update-branchis called (line 156).merge conflictpath is taken (line 186).<!-- auto-rebase-conflict:<base_sha> -->(lines 196–228) → dev-lead agentic-rebase.No approval or
mergeable_statecheck short-circuits a DIRTY PR beforeupdate-branch. TheDIRTY → conflict-sentinel → dev-leadpath is reached.Plan Execution
test/workflows/auto-rebase/conflict-sentinel.bats)dev-lead-lint.shcleanTest Results
Files Changed
test/workflows/auto-rebase/conflict-sentinel.bats(new): regression guards pinning the DIRTY → conflict-sentinel path (update-branch attempted, no approval gate, merge-conflict branch posts the<!-- auto-rebase-conflict: -->dev-lead sentinel,<!-- auto-rebase-stuck -->absent). Auto-picked up byauto-rebase-tests.yml(runs the whole dir).TDD note (Phase 2 exception)
The confirmed behavior already shipped in #927, so these are regression/verification guards on already-correct code rather than red→green feature tests. To honor the intent, I demonstrated they fail against a deliberately regressed copy of the reusable before landing them.
Out of scope / required follow-up
Retiring the actual weaker one-time
<!-- auto-rebase-stuck -->comment escalation is a petry-projects/.github-private change (dev-lead-reusable, tracked by combsmith/.github-private#711). That escalation code does not exist in this (petry-projects/.github) repo — grepped the whole tree, noauto-rebase-stuckreference. It must be removed in.github-privateas a follow-up; this repo carries only the AC4 confirmation + a guard that the stuck sentinel is never introduced here.Notes
No behavior change to any workflow or script — verification + test only. No unrelated files touched.
feat: implement issue #928 — auto-rebase: verify DIRTY PRs now reach …