{
  "label": "phone-chrome-gm",
  "finished": "2026-10-08T06:25:01.683Z",
  "gmSend": "/gm+time+night,/gm+weather+sandstorm",
  "gmOff": false,
  "graphicsApi": "OpenGLES3",
  "graphicsVersion": "OpenGL ES 3.0 (WebGL 2.0 (OpenGL ES 3.0 Chromium))",
  "consoleErrors": 0,
  "consoleWarnings": 21,
  "checkFailures": 0,
  "pass": true,
  "results": [
    {
      "case": "default",
      "url": "http://localhost:4350/?gm-send=%2Fgm%2Btime%2Bnight%3B%2Fgm%2Bweather%2Bsandstorm",
      "expectTier": "Mid",
      "bootMs": 2827,
      "boot": {
        "product": "Zoen",
        "version": "0.1.0",
        "unity": "6000.3.25f1",
        "platform": "WebGLPlayer",
        "graphicsApi": "OpenGLES3",
        "graphicsVersion": "OpenGL ES 3.0 (WebGL 2.0 (OpenGL ES 3.0 Chromium))",
        "gpu": "ANGLE (Qualcomm, Adreno (TM) 730, OpenGL ES 3.2)",
        "device": "Chrome 154.0.0.0",
        "os": "Android 10",
        "systemMemoryMb": 122,
        "screenWidth": 1080,
        "screenHeight": 2121,
        "tier": "Mid",
        "tiers": [
          "Low",
          "Mid"
        ],
        "tierRequest": "",
        "tierRefused": "",
        "tierSource": "PlatformDefault",
        "capKey": "web",
        "cycle": [
          "Low",
          "Mid"
        ],
        "ultraGate": "none",
        "benchmark": "off",
        "deviceMemoryGb": 8,
        "logicalCores": 8,
        "displayHz": 60,
        "fpsTarget": 30,
        "targetFrameRate": 30,
        "vSyncCount": 0
      },
      "fps": "tier=Mid api=OpenGLES3 target=30 fps=30.1 avgMs=33.25 p50Ms=33.00 p95Ms=35.00 p99Ms=42.00 maxMs=56.00 frames=240 logErrors=0 logWarnings=0\n",
      "webgl": {
        "webgl2": true,
        "version": "WebGL 2.0 (OpenGL ES 3.0 Chromium)",
        "renderer": "ANGLE (Qualcomm, Adreno (TM) 730, OpenGL ES 3.2)"
      },
      "userAgent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Mobile Safari/537.36",
      "screenshot": "logs/evidence/M0-12I/web-phone-chrome-gm-default.png",
      "consoleErrors": [],
      "consoleWarnings": [
        "Manual synchronization of Unity Application.persistentDataPath via JS_FileSystem_Sync() is deprecated and will be later removed in a future Unity version. The persistent data directory will be automatically synchronized instead on file modification. Pass config.autoSyncPersistentDataPath = true; to configuration in createUnityInstance() to opt in to the new behavior.",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio",
        "The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://developer.chrome.com/blog/autoplay/#web_audio"
      ],
      "checkFailures": [],
      "gm": [
        "panel=on buttons=15",
        "/gm time night -> night 01:24 x1 clear (auto)",
        "/gm weather sandstorm -> night 01:24 x1 sandstorm (forced)"
      ],
      "sky": "phase=night clock=01:24 weather=sandstorm (forced) speed=x1 tier=Mid particles=200 sheets fog=0.0540",
      "zoenLines": [
        "ZOEN_BOOT {\"product\":\"Zoen\",\"version\":\"0.1.0\",\"unity\":\"6000.3.25f1\",\"platform\":\"WebGLPlayer\",\"graphicsApi\":\"OpenGLES3\",\"graphicsVersion\":\"OpenGL ES 3.0 (WebGL 2.0 (OpenGL ES 3.0 Chromium))\",\"gpu\":\"ANGLE (Qualcomm, Adreno (TM) 730, OpenGL ES 3.2)\",\"device\":\"Chrome 154.0.0.0\",\"os\":\"Android 10\",\"systemMemoryMb\":122,\"screenWidth\":1080,\"screenHeight\":2121,\"tier\":\"Mid\",\"tiers\":[\"Low\",\"Mid\"],\"tierRequest\":\"\",\"tierRefused\":\"\",\"tierSource\":\"PlatformDefault\",\"capKey\":\"web\",\"cycle\":[\"Low\",\"Mid\"],\"ultraGate\":\"none\",\"benchmark\":\"off\",\"deviceMemoryGb\":8.0,\"logicalCores\":8,\"displayHz\":60.0,\"fpsTarget\":30,\"targetFrameRate\":30,\"vSyncCount\":0}\n",
        "ZOEN_GM panel=on buttons=15\n",
        "ZOEN_GM /gm time night -> night 01:24 x1 clear (auto)\n",
        "ZOEN_SKY phase=night clock=01:24 weather=clear (auto) speed=x1 tier=Mid particles=0 none fog=0.0148\n",
        "ZOEN_GM /gm weather sandstorm -> night 01:24 x1 sandstorm (forced)\n",
        "ZOEN_SKY phase=night clock=01:24 weather=sandstorm (forced) speed=x1 tier=Mid particles=200 sheets fog=0.0540\n",
        "ZOEN_FPS tier=Mid api=OpenGLES3 target=30 fps=29.7 avgMs=33.64 p50Ms=33.00 p95Ms=37.00 p99Ms=45.00 maxMs=85.00 frames=149 logErrors=0 logWarnings=0\n",
        "ZOEN_FPS tier=Mid api=OpenGLES3 target=30 fps=30.1 avgMs=33.25 p50Ms=33.00 p95Ms=35.00 p99Ms=42.00 maxMs=56.00 frames=240 logErrors=0 logWarnings=0\n"
      ],
      "pass": true
    }
  ]
}
