{
  "python": "3.12.14",
  "gradio": "6.28.0",
  "machine": "x86_64",
  "host": "65-109-31-107.ptr",
  "when": "2026-09-21 11:05:51",
  "elapsed_seconds": 20.2,
  "passed": 36,
  "failed": 0,
  "warned": 0,
  "skipped": 2,
  "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.12.14"
    },
    {
      "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:46291"
    },
    {
      "suite": "environment",
      "test": "writable temp dir for uploads",
      "status": "PASS",
      "detail": "/tmp/gradio-0"
    },
    {
      "suite": "install",
      "test": "import gradio",
      "status": "PASS",
      "detail": "gradio 6.28.0"
    },
    {
      "suite": "install",
      "test": "import gradio_client",
      "status": "PASS",
      "detail": "gradio_client 2.7.1"
    },
    {
      "suite": "install",
      "test": "expected gradio version for this interpreter",
      "status": "PASS",
      "detail": "6.28.0 (expected 6.28.0)"
    },
    {
      "suite": "install",
      "test": "core dependencies import",
      "status": "PASS",
      "detail": "fastapi 0.141.1, pydantic 2.13.5, numpy 2.5.3"
    },
    {
      "suite": "install",
      "test": "matplotlib present for gr.Plot",
      "status": "PASS",
      "detail": "matplotlib 3.11.2"
    },
    {
      "suite": "install",
      "test": "pin: huggingface-hub < 1.0 (gradio 4 only)",
      "status": "SKIP",
      "detail": "not applicable to gradio 6"
    },
    {
      "suite": "install",
      "test": "pin: pydantic < 2.11 (gradio 4 only)",
      "status": "SKIP",
      "detail": "not applicable to gradio 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": "54 wheels, 0 source archives"
    },
    {
      "suite": "functional",
      "test": "launch application under test",
      "status": "PASS",
      "detail": "ready in 2.3s on port 30331"
    },
    {
      "suite": "functional",
      "test": "GET / returns 200",
      "status": "PASS",
      "detail": "200, 96741 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-OOWiRlj3.js -> 200"
    },
    {
      "suite": "functional",
      "test": "page needs no external hosts",
      "status": "PASS",
      "detail": "0 external refs, 0 blocking"
    },
    {
      "suite": "functional",
      "test": "frontend templates free of external refs",
      "status": "PASS",
      "detail": "clean"
    },
    {
      "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 3.6s, GET / -> 200"
    },
    {
      "suite": "offline",
      "test": "startup is not delayed by network timeouts",
      "status": "PASS",
      "detail": "2.8s"
    }
  ],
  "metrics": [
    {
      "metric": "startup time (cold, mean of 2)",
      "value": 2.831351399421692,
      "unit": "s",
      "note": "min 2.1 / max 3.6"
    },
    {
      "metric": "resident memory after startup",
      "value": 137.48828125,
      "unit": "MB",
      "note": "gradio 6.28.0"
    },
    {
      "metric": "GET / latency (median)",
      "value": 6.176471710205078,
      "unit": "ms",
      "note": "p95 6.3 ms"
    },
    {
      "metric": "GET /config latency (median)",
      "value": 0.6475448608398438,
      "unit": "ms",
      "note": "p95 0.9 ms"
    },
    {
      "metric": "predict throughput (serial)",
      "value": 80.75520086255861,
      "unit": "calls/s",
      "note": "10 calls in 0.1s"
    },
    {
      "metric": "predict latency (serial mean)",
      "value": 12.383103370666504,
      "unit": "ms",
      "note": ""
    },
    {
      "metric": "predict throughput (8 threads)",
      "value": 173.70730432036612,
      "unit": "calls/s",
      "note": "16 calls, 0 errors"
    },
    {
      "metric": "queue: 8 x 0.25s handlers",
      "value": 0.2950570583343506,
      "unit": "s",
      "note": "serial would be 2.0s, 0 errors"
    },
    {
      "metric": "streaming 20 chunks end-to-end",
      "value": 13.964653015136719,
      "unit": "ms",
      "note": ""
    },
    {
      "metric": "upload + checksum 2 MB",
      "value": 28.39079543159621,
      "unit": "MB/s",
      "note": "0.07s round trip"
    },
    {
      "metric": "matplotlib plot render",
      "value": 278.0575752258301,
      "unit": "ms",
      "note": "50 points, Agg backend"
    }
  ]
}