|
37 | 37 | "huggingface/optimum-intel#1874", |
38 | 38 | "yuekaizhang/Fun-ASR-vllm#21", |
39 | 39 | "ray-project/ray#64053", |
| 40 | + "sgl-project/sglang-omni#1460", |
40 | 41 | "huggingface/speech-to-speech#319", |
41 | 42 | "livekit/agents#6176", |
42 | 43 | "punkpeye/awesome-mcp-servers#7153", |
|
113 | 114 | }, |
114 | 115 | "reason": "Current Ray failures are Buildkite/ReadTheDocs gates already triaged; the remaining PR-local Black fix is waiting on the contributor branch owner", |
115 | 116 | "action": "wait for contributor branch update", |
116 | | - } |
| 117 | + }, |
| 118 | + "sgl-project/sglang-omni#1460": { |
| 119 | + "failed_check_names": {"omni-ci-gate"}, |
| 120 | + "reason": ( |
| 121 | + "Omni CI stopped at the missing run-ci opt-in before setup or ASR GPU tests; " |
| 122 | + "the PR author must run `/tag-and-rerun-ci fun-asr`" |
| 123 | + ), |
| 124 | + "action": "wait for PR author CI opt-in", |
| 125 | + }, |
117 | 126 | } |
118 | 127 | KNOWN_REVIEW_GATES = { |
119 | 128 | "punkpeye/awesome-mcp-servers#7153": { |
|
301 | 310 | MANUAL_HANDOFF_ACTIONS = { |
302 | 311 | "submit Glama", |
303 | 312 | "wait for author CLA", |
| 313 | + "wait for PR author CI opt-in", |
304 | 314 | "wait for contributor conflict resolution", |
305 | 315 | "wait for preview authorization", |
306 | 316 | } |
@@ -491,6 +501,25 @@ def summarize_commit_checks(repo: str, head_sha: str) -> Dict[str, Any]: |
491 | 501 | github_headers(), |
492 | 502 | ) |
493 | 503 | check_runs = check_runs_payload.get("check_runs", []) |
| 504 | + latest_check_runs: Dict[tuple[str, Any], tuple[tuple[str, int, int], Dict[str, Any]]] = {} |
| 505 | + for position, check_run in enumerate(check_runs): |
| 506 | + app = check_run.get("app") or {} |
| 507 | + key = (str(check_run.get("name") or ""), app.get("slug") or app.get("id")) |
| 508 | + timestamp = str( |
| 509 | + check_run.get("completed_at") |
| 510 | + or check_run.get("started_at") |
| 511 | + or check_run.get("created_at") |
| 512 | + or "" |
| 513 | + ) |
| 514 | + try: |
| 515 | + run_id = int(check_run.get("id") or 0) |
| 516 | + except (TypeError, ValueError): |
| 517 | + run_id = 0 |
| 518 | + rank = (timestamp, run_id, -position) |
| 519 | + previous = latest_check_runs.get(key) |
| 520 | + if previous is None or rank > previous[0]: |
| 521 | + latest_check_runs[key] = (rank, check_run) |
| 522 | + check_runs = [entry[1] for entry in latest_check_runs.values()] |
494 | 523 | failed_check_runs = [] |
495 | 524 | pending_check_runs = [] |
496 | 525 | for check_run in check_runs: |
@@ -1061,7 +1090,11 @@ def format_integration_markdown(metrics: Dict[str, Any]) -> str: |
1061 | 1090 | if manual_handoff_integrations: |
1062 | 1091 | lines.extend(["", "## Manual handoff gates", ""]) |
1063 | 1092 | for integration in manual_handoff_integrations: |
1064 | | - reason = integration.get("known_review_gate_reason") or "manual action required" |
| 1093 | + reason = ( |
| 1094 | + integration.get("known_review_gate_reason") |
| 1095 | + or integration.get("known_external_failure_reason") |
| 1096 | + or "manual action required" |
| 1097 | + ) |
1065 | 1098 | lines.append( |
1066 | 1099 | f"- [{integration['pr']}]({integration.get('html_url')}): " |
1067 | 1100 | f"{integration.get('next_action') or 'inspect'}; {reason}" |
|
0 commit comments