{
  "python": "3.9.25",
  "gradio": "4.44.1",
  "machine": "x86_64",
  "host": "65-109-31-107.ptr",
  "when": "2026-09-21 11:04:58",
  "elapsed_seconds": 16.0,
  "passed": 36,
  "failed": 0,
  "warned": 2,
  "skipped": 0,
  "rows": [
    {
      "suite": "environment",
      "test": "OS is RHEL-family 9",
      "status": "PASS",
      "detail": "AlmaLinux release 9.8 (Olive Jaguar)"
    },
    {
      "suite": "environment",
      "test": "architecture is x86_64",
      "status": "PASS",
      "detail": "x86_64"
    },
    {
      "suite": "environment",
      "test": "glibc >= 2.17 (manylinux_2_17 wheels)",
      "status": "PASS",
      "detail": "glibc 2.34"
    },
    {
      "suite": "environment",
      "test": "interpreter matches the requested set",
      "status": "PASS",
      "detail": "python 3.9.25"
    },
    {
      "suite": "environment",
      "test": "no proxy variables capture loopback",
      "status": "PASS",
      "detail": "no proxy set"
    },
    {
      "suite": "environment",
      "test": "SELinux state",
      "status": "PASS",
      "detail": "Permissive"
    },
    {
      "suite": "environment",
      "test": "a loopback port can be bound",
      "status": "PASS",
      "detail": "bound 127.0.0.1:6183"
    },
    {
      "suite": "environment",
      "test": "writable temp dir for uploads",
      "status": "PASS",
      "detail": "/tmp/gradio-0"
    },
    {
      "suite": "install",
      "test": "import gradio",
      "status": "PASS",
      "detail": "gradio 4.44.1"
    },
    {
      "suite": "install",
      "test": "import gradio_client",
      "status": "PASS",
      "detail": "gradio_client 1.3.0"
    },
    {
      "suite": "install",
      "test": "expected gradio version for this interpreter",
      "status": "PASS",
      "detail": "4.44.1 (expected 4.44.1)"
    },
    {
      "suite": "install",
      "test": "core dependencies import",
      "status": "PASS",
      "detail": "fastapi 0.128.8, pydantic 2.10.6, numpy 2.0.2"
    },
    {
      "suite": "install",
      "test": "matplotlib present for gr.Plot",
      "status": "PASS",
      "detail": "matplotlib 3.9.4"
    },
    {
      "suite": "install",
      "test": "pin: huggingface-hub < 1.0 (gradio 4 only)",
      "status": "PASS",
      "detail": "huggingface_hub 0.36.2"
    },
    {
      "suite": "install",
      "test": "pin: pydantic < 2.11 (gradio 4 only)",
      "status": "PASS",
      "detail": "pydantic 2.10.6"
    },
    {
      "suite": "install",
      "test": "every dependency resolves (pip check)",
      "status": "PASS",
      "detail": "No broken requirements found."
    },
    {
      "suite": "install",
      "test": "no compiler was needed (all wheels binary)",
      "status": "PASS",
      "detail": "61 wheels, 0 source archives"
    },
    {
      "suite": "functional",
      "test": "launch application under test",
      "status": "PASS",
      "detail": "ready in 2.5s on port 46707"
    },
    {
      "suite": "functional",
      "test": "GET / returns 200",
      "status": "PASS",
      "detail": "200, 38495 bytes"
    },
    {
      "suite": "functional",
      "test": "GET /config is valid JSON with components",
      "status": "PASS",
      "detail": "53 components"
    },
    {
      "suite": "functional",
      "test": "GET /info returns the API schema",
      "status": "PASS",
      "detail": "7 named endpoints"
    },
    {
      "suite": "functional",
      "test": "static frontend assets are served",
      "status": "PASS",
      "detail": "index-BQPjLIsY.js -> 200"
    },
    {
      "suite": "functional",
      "test": "page needs no external hosts",
      "status": "WARN",
      "detail": "gradio 4 requests cdnjs.cloudflare.com, fonts.googleapis.com, fonts.gstatic.com; see scripts/patch-offline-assets.sh and use a local-font theme"
    },
    {
      "suite": "functional",
      "test": "frontend templates free of external refs",
      "status": "WARN",
      "detail": "index.html, share.html reference cdnjs.cloudflare.com, fonts.googleapis.com, fonts.gstatic.com; run scripts/patch-offline-assets.sh <venv>"
    },
    {
      "suite": "functional",
      "test": "endpoint /echo round trip",
      "status": "PASS",
      "detail": "'echo:hello'"
    },
    {
      "suite": "functional",
      "test": "endpoint /add computes correctly",
      "status": "PASS",
      "detail": "2 + 40 = 42.0"
    },
    {
      "suite": "functional",
      "test": "generator endpoint streams to completion",
      "status": "PASS",
      "detail": "'012345' via queue"
    },
    {
      "suite": "functional",
      "test": "matplotlib plot renders through gr.Plot",
      "status": "PASS",
      "detail": "dict"
    },
    {
      "suite": "functional",
      "test": "gr.State is per-session, not global",
      "status": "PASS",
      "detail": "session A: 1,2 | session B: 1"
    },
    {
      "suite": "functional",
      "test": "concurrent requests all succeed",
      "status": "PASS",
      "detail": "16/16 ok"
    },
    {
      "suite": "functional",
      "test": "gradio_client connects and reads schema",
      "status": "PASS",
      "detail": "7 endpoints"
    },
    {
      "suite": "functional",
      "test": "gradio_client predict round trip",
      "status": "PASS",
      "detail": "'echo:abc'"
    },
    {
      "suite": "functional",
      "test": "file upload and checksum round trip",
      "status": "PASS",
      "detail": "864 bytes, sha256 8d84725c5632"
    },
    {
      "suite": "offline",
      "test": "pip install would use no index",
      "status": "PASS",
      "detail": "resolved from local wheels"
    },
    {
      "suite": "offline",
      "test": "analytics disabled in this environment",
      "status": "PASS",
      "detail": "GRADIO_ANALYTICS_ENABLED=False"
    },
    {
      "suite": "offline",
      "test": "huggingface hub in offline mode",
      "status": "PASS",
      "detail": "HF_HUB_OFFLINE=1"
    },
    {
      "suite": "offline",
      "test": "app starts with outbound traffic blackholed",
      "status": "PASS",
      "detail": "started in 2.0s, GET / -> 200"
    },
    {
      "suite": "offline",
      "test": "startup is not delayed by network timeouts",
      "status": "PASS",
      "detail": "2.0s"
    }
  ],
  "metrics": [
    {
      "metric": "startup time (cold, mean of 2)",
      "value": 2.013728141784668,
      "unit": "s",
      "note": "min 2.0 / max 2.0"
    },
    {
      "metric": "resident memory after startup",
      "value": 159.5703125,
      "unit": "MB",
      "note": "gradio 4.44.1"
    },
    {
      "metric": "GET / latency (median)",
      "value": 1.1954307556152344,
      "unit": "ms",
      "note": "p95 1.3 ms"
    },
    {
      "metric": "GET /config latency (median)",
      "value": 1.0867118835449219,
      "unit": "ms",
      "note": "p95 1.2 ms"
    },
    {
      "metric": "predict throughput (serial)",
      "value": 565.041627374377,
      "unit": "calls/s",
      "note": "10 calls in 0.0s"
    },
    {
      "metric": "predict latency (serial mean)",
      "value": 1.7697811126708984,
      "unit": "ms",
      "note": ""
    },
    {
      "metric": "predict throughput (8 threads)",
      "value": 806.9848965848965,
      "unit": "calls/s",
      "note": "16 calls, 0 errors"
    },
    {
      "metric": "queue: 8 x 0.25s handlers",
      "value": 0.25884103775024414,
      "unit": "s",
      "note": "serial would be 2.0s, 0 errors"
    },
    {
      "metric": "streaming 20 chunks end-to-end",
      "value": 2.0813941955566406,
      "unit": "ms",
      "note": ""
    },
    {
      "metric": "upload + checksum 2 MB",
      "value": 2.8155939948099635,
      "unit": "MB/s",
      "note": "0.74s round trip"
    },
    {
      "metric": "matplotlib plot render",
      "value": 41.95809364318848,
      "unit": "ms",
      "note": "50 points, Agg backend"
    }
  ]
}