nisse-review: a new head's review waits for its CI
A review judges the CI result (R1), so a new head's review now waits while its checks are pending, and starts once they finish, passed or failed. It also keeps reviews off a GPU that CI is using: #154's first review ran beside CI's end-to-end job and took about 30 minutes. - Pending: waits up to tuning.review.ci_wait_s (1 h), then reviews anyway. - No checks: waits tuning.review.ci_grace_s (2 min) for them to appear, then reviews. - A PR waiting on CI holds up no other: the oldest settled one goes first. - The head's first sighting is kept on the item (seen_at). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
This commit is contained in:
1 parent
3283f9540d
commit
be5ea5f170
8 files changed
+134
-6
No files matched your search
@@ -73,6 +73,7 @@ class FakeGitea:
|
||||
# Readable but not given (public, no grant): missing from /user/repos.
|
||||
public: set[str] = field(default_factory=set)
|
||||
unlisted: set[str] = field(default_factory=set) # its PRs can't be listed
|
||||
ci: dict[str, str] = field(default_factory=dict) # head -> checks; success
|
||||
|
||||
def _up(self) -> None:
|
||||
if self.down:
|
||||
@@ -124,7 +125,7 @@ class FakeGitea:
|
||||
return []
|
||||
|
||||
def checks(self, repo: str, sha: str) -> str:
|
||||
return "success"
|
||||
return self.ci.get(sha, "success")
|
||||
|
||||
def archive(self, repo: str, ref: str) -> bytes:
|
||||
return archive(self.files)
|
||||
|
||||
Reference in new issue
Block a user