Merge remote-tracking branch 'origin/staging' into codex/loading-1103
Independent Staging Quality Gate / validate-python (push) Successful in 9m8s
Independent Staging Quality Gate / validate-frontend (push) Successful in 9m8s
Independent Staging Quality Gate / publish (push) Successful in 3m18s

This commit is contained in:
2026-11-03 17:35:07 +08:00
+29
View File
@@ -166,6 +166,7 @@ jobs:
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
"${packages[@]}"
fi
echo "runner: $(nproc) CPUs, $(awk '/MemTotal/ {printf "%.1f", $2 / 1048576}' /proc/meminfo) GiB RAM"
python3 --version
curl --version
git --version
@@ -324,6 +325,7 @@ jobs:
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
"${packages[@]}"
fi
echo "runner: $(nproc) CPUs, $(awk '/MemTotal/ {printf "%.1f", $2 / 1048576}' /proc/meminfo) GiB RAM"
python3 --version
curl --version
git --version
@@ -472,6 +474,33 @@ jobs:
export PATH="$PWD/.venv/bin:$PATH"
npm test --prefix frontend
- name: Report slowest frontend tests
if: always()
run: |
set -euo pipefail
# Timing evidence for CI tuning: the 25 slowest top-level tests and
# the sum of all top-level test time (tests run concurrently, so the
# sum is larger than the step's wall time).
tap=gate-logs/frontend-tests.tap
[ -f "$tap" ] || { echo "no $tap"; exit 0; }
python3 - "$tap" <<'PY'
import re, sys
rows, name = [], None
for line in open(sys.argv[1], encoding="utf-8", errors="replace"):
head = re.match(r"^(?:not )?ok \d+ - (.*)$", line)
if head:
name = head.group(1)
continue
took = re.match(r"^ duration_ms: ([0-9.]+)$", line)
if took and name is not None:
rows.append((float(took.group(1)), name))
name = None
rows.sort(reverse=True)
print(f"top-level tests={len(rows)} summed={sum(r[0] for r in rows) / 1000:.0f}s")
for ms, test in rows[:25]:
print(f"{ms / 1000:8.1f}s {test[:150]}")
PY
- name: Frontend lint
run: |
set -euo pipefail