Repository navigation
upstream-rebase: send open questions and refused pushes to review - #50
Merged
Merged
Conversation
A rebase can pass every mechanical check and still raise a question the checker cannot see. Run 37816859023 was clean (zero drift, all builds passing) while Claude's report flagged that upstream 0822a2e now reaches downstream Arm dom0 vPCI; it would have been force-pushed with that question unread had the push not been refused. Stop the automatic push when the report asks for a decision: its "Needs a decision" section holds anything but "None.", or any line is marked UNSURE. report-needs-decision.sh makes that call, errs towards a pull request, and is tested alongside the checker. The skill now tells Claude that a question stops the push and to reserve UNSURE for that. When the push itself is refused (a branch rule, or edera/4.22 moving under the lease), open the pull request with the refusal as the reason instead of failing the job. Previously the result was dropped and the next night repeated the same rebase, paid for again, and failed the same way. The backup branch made for the refused push is deleted.
kaniini
requested review from
alexandermerritt,
azenla,
bleggett and
tycho
as code owners
October 8, 2026 18:25
alexandermerritt
approved these changes
Oct 8, 2026
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.
Two cases where the nightly rebase currently does the wrong thing, both seen in yesterday's runs.
1. A clean rebase with an open question would auto-push
Run 37816859023 passed every mechanical check: zero drift and all three builds passing. Claude's report still flagged that upstream
0822a2e890(unaligned vPCI accesses by the hardware domain) now reaches downstream Arm dom0 vPCI, where nothing on the Arm config path can carry out an unaligned access. Under the current rule that result would have been force-pushed with the question unread. It wasn't pushed only because the push happened to be refused.Now the push also requires that the report asks for no decision.
.github/scripts/report-needs-decision.shsays a decision is needed when either:None., orUNSURE.It errs towards a pull request: a stray
UNSUREcosts one review, while a missed question costs an unreviewed hypervisor change. The skill now tells Claude that raising a question stops the push, and to reserveUNSUREfor that.2. A refused push dropped the result
When the force-push was refused by a branch rule (run #4) or would be refused because
edera/4.22moved under the lease,publishjust failed. The result was lost, and the next night repeated the same rebase, paid for it again, and failed the same way. A refused push now falls back to a pull request, stating the refusal as the reason, e.g.the push to `edera/4.22` was refused (`error: GH013: Repository rule violations found …`). The backup branch made for the refused attempt is deleted. If the tip moved, the land workflow already refuses to land a stale result, and the next night supersedes it.Testing
report-needs-decision.test.sh, 9 cases:None.; an empty section.UNSUREoutside the section; heading case and trailing space; a level-3 heading inside the section; the real run Fix static plugin linking in oxenstored #4 report.awk) does not support.--force-with-lease"stale info" rejection.upstream-rebase-selftest.ymlruns the new tests and shellchecks the new scripts.