fix(overseer): converge P2 verify-and-merge escalation (#4344, #4145) - #4356
Open
rysweet wants to merge 2 commits into
Open
fix(overseer): converge P2 verify-and-merge escalation (#4344, #4145)#4356rysweet wants to merge 2 commits into
rysweet wants to merge 2 commits into
Conversation
Automatic checkpoint to preserve work in progress. Tests and implementation saved before refactoring phase.
Replace the bespoke sanitize_blocker_detail helper with the shared, hardened signal::sanitize_detail. This removes a duplicated sanitizer and strengthens the escalation log: blocker details now also get ANSI stripping and token-shaped-secret redaction (previously only control-char collapse + length bound), closing a potential token-leak path when a merge-judge 'reason' string carries a credential. Behavior preserved: class-change re-paging, backoff suppression, and the empty->'no detail' fallback are unchanged. All 589 overseer tests pass; clippy clean. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
📊 Coverage Summary
Coverage data from CI run. Test files matching |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Makes the overseer's P2 verify-and-merge escalation converge: an unchanged, still-blocked PR is now escalated once and then suppressed on subsequent ticks (via a
BackoffGate), instead of re-paging the operator every tick. Fixes the non-convergence defect observed onrysweet/Simard#4344and#4145, where the same "escalated to operator: verify-and-merge" line re-fired continuously without a concrete blocker.What changed
src/overseer/mod.rs): per-PR escalation state keyed on{repo}#{pr}, tracked inmerge_escalation_gate(backoff) +merge_escalation_blocker(last-seen blocker class). Re-pages only when the blocker class changes or the backoff window elapses; a successful merge neither escalates nor writes the gate. O(1) per tick per PR.3a1d8183): replaced the bespokesanitize_blocker_detailwith the shared, hardenedsignal::sanitize_detail, adding ANSI stripping + token-shaped-secret redaction to escalation logs (closes a potential token-leak path when a merge-judge reason carries a credential). Behavior otherwise preserved.docs/reference/overseer-merge-escalation-convergence.md(design + defect writeup), overseer design/API reference updates, wired intomkdocs.yml.Testing
cargo fmt --all -- --check— cleancargo clippy --all-targets --all-features --locked -- -D warnings— cleanNotes / out of scope
coverage_backoff,blocked_goal_gate); bounded by real PR volume. Shared-infra change deferred to a separate PR.mod.rsfield/gate collisions).Refs #4344, #4145
Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com