{
  "label": "mac-chrome",
  "finished": "2026-10-07T20:06:35.114Z",
  "graphicsApi": "OpenGLES3",
  "graphicsVersion": "OpenGL ES 3.0 (WebGL 2.0 (OpenGL ES 3.0 Chromium))",
  "consoleErrors": 0,
  "consoleWarnings": 77,
  "checkFailures": 0,
  "pass": true,
  "results": [
    {
      "case": "default",
      "url": "http://localhost:4350/",
      "expectTier": "Mid",
      "bootMs": 1894,
      "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 (Apple, ANGLE Metal Renderer: Apple M3, Unspecified Version)",
        "device": "Chrome 155.0.0.0",
        "os": "MacOS 10.15.7",
        "systemMemoryMb": 107,
        "screenWidth": 960,
        "screenHeight": 600,
        "tier": "Mid",
        "tiers": [
          "Low",
          "Mid"
        ],
        "tierRequest": "",
        "targetFrameRate": -1,
        "vSyncCount": 1
      },
      "fps": "tier=Mid api=OpenGLES3 fps=60.0 avgMs=16.67 p50Ms=17.00 p95Ms=17.00 p99Ms=18.00 maxMs=18.00 frames=240 logErrors=0 logWarnings=0\n",
      "webgl": {
        "webgl2": true,
        "version": "WebGL 2.0 (OpenGL ES 3.0 Chromium)",
        "renderer": "ANGLE (Apple, ANGLE Metal Renderer: Apple M3, Unspecified Version)"
      },
      "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/155.0.0.0 Safari/537.36",
      "screenshot": "logs/evidence/M0-04/web-mac-chrome-default.png",
      "consoleErrors": [],
      "consoleWarnings": [
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "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": [],
      "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 (Apple, ANGLE Metal Renderer: Apple M3, Unspecified Version)\",\"device\":\"Chrome 155.0.0.0\",\"os\":\"MacOS 10.15.7\",\"systemMemoryMb\":107,\"screenWidth\":960,\"screenHeight\":600,\"tier\":\"Mid\",\"tiers\":[\"Low\",\"Mid\"],\"tierRequest\":\"\",\"targetFrameRate\":-1,\"vSyncCount\":1}\n",
        "ZOEN_FPS tier=Mid api=OpenGLES3 fps=60.0 avgMs=16.67 p50Ms=17.00 p95Ms=17.00 p99Ms=18.00 maxMs=18.00 frames=240 logErrors=0 logWarnings=0\n"
      ],
      "pass": true
    },
    {
      "case": "low",
      "url": "http://localhost:4350/?tier=low",
      "expectTier": "Low",
      "bootMs": 1504,
      "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 (Apple, ANGLE Metal Renderer: Apple M3, Unspecified Version)",
        "device": "Chrome 155.0.0.0",
        "os": "MacOS 10.15.7",
        "systemMemoryMb": 107,
        "screenWidth": 960,
        "screenHeight": 600,
        "tier": "Low",
        "tiers": [
          "Low",
          "Mid"
        ],
        "tierRequest": "low",
        "targetFrameRate": -1,
        "vSyncCount": 1
      },
      "fps": "tier=Low api=OpenGLES3 fps=60.0 avgMs=16.67 p50Ms=17.00 p95Ms=17.00 p99Ms=18.00 maxMs=18.00 frames=240 logErrors=0 logWarnings=0\n",
      "webgl": {
        "webgl2": true,
        "version": "WebGL 2.0 (OpenGL ES 3.0 Chromium)",
        "renderer": "ANGLE (Apple, ANGLE Metal Renderer: Apple M3, Unspecified Version)"
      },
      "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/155.0.0.0 Safari/537.36",
      "screenshot": "logs/evidence/M0-04/web-mac-chrome-low.png",
      "consoleErrors": [],
      "consoleWarnings": [
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "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"
      ],
      "checkFailures": [],
      "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 (Apple, ANGLE Metal Renderer: Apple M3, Unspecified Version)\",\"device\":\"Chrome 155.0.0.0\",\"os\":\"MacOS 10.15.7\",\"systemMemoryMb\":107,\"screenWidth\":960,\"screenHeight\":600,\"tier\":\"Low\",\"tiers\":[\"Low\",\"Mid\"],\"tierRequest\":\"low\",\"targetFrameRate\":-1,\"vSyncCount\":1}\n",
        "ZOEN_FPS tier=Low api=OpenGLES3 fps=60.0 avgMs=16.67 p50Ms=17.00 p95Ms=17.00 p99Ms=18.00 maxMs=18.00 frames=240 logErrors=0 logWarnings=0\n"
      ],
      "pass": true
    },
    {
      "case": "ultra-refused",
      "url": "http://localhost:4350/?tier=ultra",
      "expectTier": "Mid",
      "bootMs": 1144,
      "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 (Apple, ANGLE Metal Renderer: Apple M3, Unspecified Version)",
        "device": "Chrome 155.0.0.0",
        "os": "MacOS 10.15.7",
        "systemMemoryMb": 107,
        "screenWidth": 960,
        "screenHeight": 600,
        "tier": "Mid",
        "tiers": [
          "Low",
          "Mid"
        ],
        "tierRequest": "ultra",
        "targetFrameRate": -1,
        "vSyncCount": 1
      },
      "fps": "tier=Mid api=OpenGLES3 fps=60.0 avgMs=16.67 p50Ms=17.00 p95Ms=17.00 p99Ms=18.00 maxMs=18.00 frames=240 logErrors=0 logWarnings=0\n",
      "webgl": {
        "webgl2": true,
        "version": "WebGL 2.0 (OpenGL ES 3.0 Chromium)",
        "renderer": "ANGLE (Apple, ANGLE Metal Renderer: Apple M3, Unspecified Version)"
      },
      "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/155.0.0.0 Safari/537.36",
      "consoleErrors": [],
      "consoleWarnings": [
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "WebGL: INVALID_ENUM: getInternalformatParameter: invalid internalformat",
        "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": [],
      "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 (Apple, ANGLE Metal Renderer: Apple M3, Unspecified Version)\",\"device\":\"Chrome 155.0.0.0\",\"os\":\"MacOS 10.15.7\",\"systemMemoryMb\":107,\"screenWidth\":960,\"screenHeight\":600,\"tier\":\"Mid\",\"tiers\":[\"Low\",\"Mid\"],\"tierRequest\":\"ultra\",\"targetFrameRate\":-1,\"vSyncCount\":1}\n",
        "ZOEN_FPS tier=Mid api=OpenGLES3 fps=60.0 avgMs=16.67 p50Ms=17.00 p95Ms=17.00 p99Ms=18.00 maxMs=18.00 frames=240 logErrors=0 logWarnings=0\n"
      ],
      "pass": true
    }
  ]
}
