From ec70dd89d2e69e760dfa8c88a0e790c5c2a03a67 Mon Sep 17 00:00:00 2001 From: Denis_Drobyshev Date: Sun, 20 Sep 2026 16:06:03 +0300 Subject: [PATCH 1/2] Report a pull request that is green and waiting on a decision The report answers one question -- what needs a decision this week -- and could not see the clearest case of all. A pull request whose checks are green, which is not a draft and was not opened by a bot, has had everything done to it that can be done automatically. The only thing left is somebody deciding. That is the question, and it was falling through. It fell through because red checks were the only thing that counted as needing you, and thirty days the only thing that counted as old. decisionrl#31 is green on every leg including the forty-minute learning job, has been open for twenty-four days, and the report called the repository quiet. Adding the section finds four of them immediately, none of which the report has ever mentioned: decisionrl#31 green 24 days the ignore filter that does not filter decisionrl#24 green 24 days off-policy evaluation for contextual bandits decisionrl#22 green 24 days seeded rollout-buffer RNG and eval-freeze stadion#4 green 40 days concurrent instances The last would have appeared under Drifting on age alone, with nothing to say it was ready. --- scripts/org_triage.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/scripts/org_triage.py b/scripts/org_triage.py index 39ca072..9152ffb 100644 --- a/scripts/org_triage.py +++ b/scripts/org_triage.py @@ -243,6 +243,7 @@ def unpinned_actions(full: str) -> list[str] | None: def render(reports: list[dict]) -> tuple[str, bool]: """The report, and whether anything in it needs a decision.""" urgent: list[str] = [] + ready: list[str] = [] waiting: list[str] = [] quiet: list[str] = [] drifting: list[str] = [] @@ -265,8 +266,23 @@ def render(reports: list[dict]) -> tuple[str, bool]: elif pull["bot"]: waiting.append(f"{line} — {pull['age']}d, checks {pull['checks']}") interesting = True + elif pull["checks"] == "green" and not pull["draft"]: + # Green, not a draft, author is not a bot: everything that can be + # automated has happened and the only thing left is somebody + # deciding. That is the question this report asks, so it belongs + # here rather than waiting for STALE_DAYS. + # + # It was not here before, and decisionrl#31 is why: green on every + # leg including the forty-minute learning job, open twenty-four + # days, and this report called the repository quiet -- because red + # checks were the only thing that counted as needing you, and + # thirty days the only thing that counted as old. + ready.append( + f"{line}\n Green for {pull['age']} days and waiting on a decision." + ) + interesting = True elif pull["age"] >= STALE_DAYS: - drifting.append(f"{line} — open {pull['age']} days") + drifting.append(f"{line} — open {pull['age']} days, checks {pull['checks']}") interesting = True ci = report["ci"] @@ -313,6 +329,7 @@ def section(title: str, lines: list[str]) -> str: parts = [ f"_Generated {NOW:%Y-%m-%d %H:%M} UTC._\n", section("Needs you this week", urgent), + section("Green and waiting on you", ready), section("Waiting on review", waiting), section("Quiet", [", ".join(quiet)] if quiet else []), section("Drifting", drifting), @@ -329,7 +346,7 @@ def section(title: str, lines: list[str]) -> str: ) ) - return "\n".join(parts), bool(urgent) + return "\n".join(parts), bool(urgent or ready) def main() -> int: From df97c602f6355d33944d8567b788ebd81cc5a022 Mon Sep 17 00:00:00 2001 From: Denis_Drobyshev Date: Sun, 20 Sep 2026 16:09:07 +0300 Subject: [PATCH 2/2] Count a pull request with no checks at all as waiting too "none" is what collect() reports when no check ever ran, which in a repository without CI is every pull request in it. This one had none until yesterday, and #7 -- adding stadion to the organisation profile, twenty-eight added lines and nothing removed -- has been cleanly mergeable there for forty-one days without appearing in a single report. It is labelled differently from green, because "no checks ran" and "checks passed" are not the same news and the line should not pretend otherwise. --- scripts/org_triage.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/org_triage.py b/scripts/org_triage.py index 9152ffb..474cbd2 100644 --- a/scripts/org_triage.py +++ b/scripts/org_triage.py @@ -266,7 +266,7 @@ def render(reports: list[dict]) -> tuple[str, bool]: elif pull["bot"]: waiting.append(f"{line} — {pull['age']}d, checks {pull['checks']}") interesting = True - elif pull["checks"] == "green" and not pull["draft"]: + elif pull["checks"] in ("green", "none") and not pull["draft"]: # Green, not a draft, author is not a bot: everything that can be # automated has happened and the only thing left is somebody # deciding. That is the question this report asks, so it belongs @@ -277,8 +277,13 @@ def render(reports: list[dict]) -> tuple[str, bool]: # days, and this report called the repository quiet -- because red # checks were the only thing that counted as needing you, and # thirty days the only thing that counted as old. + # "none" means no check ever ran, which in a repository without + # CI is every pull request in it. .github#7 has been open and + # cleanly mergeable for forty-one days on exactly that basis, and + # calling it unchecked rather than green is the honest wording. + state = "Green" if pull["checks"] == "green" else "No checks ran, and mergeable," ready.append( - f"{line}\n Green for {pull['age']} days and waiting on a decision." + f"{line}\n {state} for {pull['age']} days and waiting on a decision." ) interesting = True elif pull["age"] >= STALE_DAYS: