From 530b4cf6a009970589bdf44a78effc2b9e5ba053 Mon Sep 17 00:00:00 2001 From: Willem Jiang Date: Mon, 31 Aug 2026 23:40:08 +0800 Subject: [PATCH] fix(ci): keep fixing the skill reviewer error (#5122) * fix(ci):resolve the skill_review errors * fix(ci): split skill creator fixes from waiver rollout * fix(skill-creator): address review findings --- .../eval-viewer/generate_review.py | 29 ++----------------- .../scripts/aggregate_benchmark.py | 4 +-- 2 files changed, 4 insertions(+), 29 deletions(-) diff --git a/skills/public/skill-creator/eval-viewer/generate_review.py b/skills/public/skill-creator/eval-viewer/generate_review.py index 26e2c193e..f8aad2d49 100644 --- a/skills/public/skill-creator/eval-viewer/generate_review.py +++ b/skills/public/skill-creator/eval-viewer/generate_review.py @@ -16,15 +16,11 @@ import argparse import base64 import json import mimetypes -import os import re -import signal -import subprocess import sys -import time import webbrowser from functools import partial -from http.server import HTTPServer, BaseHTTPRequestHandler +from http.server import BaseHTTPRequestHandler, HTTPServer from pathlib import Path # Files to exclude from output listings @@ -285,25 +281,6 @@ def generate_html( # HTTP server (stdlib only, zero dependencies) # --------------------------------------------------------------------------- -def _kill_port(port: int) -> None: - """Kill any process listening on the given port.""" - try: - result = subprocess.run( - ["lsof", "-ti", f":{port}"], - capture_output=True, text=True, timeout=5, - ) - for pid_str in result.stdout.strip().split("\n"): - if pid_str.strip(): - try: - os.kill(int(pid_str.strip()), signal.SIGTERM) - except (ProcessLookupError, ValueError): - pass - if result.stdout.strip(): - time.sleep(0.5) - except subprocess.TimeoutExpired: - pass - except FileNotFoundError: - print("Note: lsof not found, cannot check if port is in use", file=sys.stderr) class ReviewHandler(BaseHTTPRequestHandler): """Serves the review HTML and handles feedback saves. @@ -435,14 +412,12 @@ def main() -> None: print(f"\n Static viewer written to: {args.static}\n") sys.exit(0) - # Kill any existing process on the target port port = args.port - _kill_port(port) handler = partial(ReviewHandler, workspace, skill_name, feedback_path, previous, benchmark_path) try: server = HTTPServer(("127.0.0.1", port), handler) except OSError: - # Port still in use after kill attempt — find a free one + # If the requested port is unavailable, use a free local port. server = HTTPServer(("127.0.0.1", 0), handler) port = server.server_address[1] diff --git a/skills/public/skill-creator/scripts/aggregate_benchmark.py b/skills/public/skill-creator/scripts/aggregate_benchmark.py index 7a117bdd7..891644e43 100755 --- a/skills/public/skill-creator/scripts/aggregate_benchmark.py +++ b/skills/public/skill-creator/scripts/aggregate_benchmark.py @@ -195,12 +195,12 @@ def aggregate_results(results: dict) -> dict: pass_rates = [r["pass_rate"] for r in runs] times = [r["time_seconds"] for r in runs] - tokens = [r.get("tokens", 0) for r in runs] + token_counts = [r.get("tokens", 0) for r in runs] run_summary[config] = { "pass_rate": calculate_stats(pass_rates), "time_seconds": calculate_stats(times), - "tokens": calculate_stats(tokens) + "tokens": calculate_stats(token_counts) } # Calculate delta between the first two configs (if two exist)