{
  "version": "1.47.0",
  "captured": "2026-11-01 Asia/Manila",
  "environment": "Windows Chromium/WebKit; emulated phone/tablet sizes, not physical iPhone or iPad",
  "checks": {
    "pool": {
      "game": "pool",
      "completeRoundThroughBrowserControls": true,
      "moves": 53,
      "elapsedSeconds": 105.84,
      "result": "Ivory Bunny sinks the called eight and wins!",
      "rematchAndLeave": true,
      "maxAverageFrameMs": 16.666681318681373,
      "networkMedianMs": 32.069,
      "networkMaxMs": 48.17,
      "browserErrors": [],
      "environment": "Local Windows Chromium; normal-motion real controls with deterministic practice move chooser"
    },
    "golf": {
      "game": "golf",
      "completeRoundThroughBrowserControls": true,
      "moves": 34,
      "elapsedSeconds": 56.66,
      "result": "Emerald Dragon & Ivory Bunny wins with 17 strokes!",
      "rematchAndLeave": true,
      "maxAverageFrameMs": 16.66669230769231,
      "networkMedianMs": 19.441000000000003,
      "networkMaxMs": 35.33,
      "browserErrors": [],
      "environment": "Local Windows Chromium; normal-motion real controls with deterministic practice move chooser"
    },
    "bowling": {
      "game": "bowling",
      "completeRoundThroughBrowserControls": true,
      "moves": 42,
      "elapsedSeconds": 105.53,
      "result": "Emerald Dragon & Ivory Bunny wins with 190 points!",
      "rematchAndLeave": true,
      "maxAverageFrameMs": 16.666187050359714,
      "networkMedianMs": 22.5995,
      "networkMaxMs": 37.335,
      "browserErrors": [],
      "environment": "Local Windows Chromium; normal-motion real controls with deterministic practice move chooser"
    },
    "behavior-and-throttled-performance": {
      "checks": [
        "chromium pool touch aim responds",
        "chromium pool keyboard aim responds",
        "chromium pool completes shot without script errors",
        "chromium pool phone fits",
        "chromium golf touch aim responds",
        "chromium golf keyboard aim responds",
        "chromium golf completes shot without script errors",
        "chromium golf phone fits",
        "chromium bowling touch aim responds",
        "chromium bowling keyboard aim responds",
        "chromium bowling completes shot without script errors",
        "chromium bowling phone fits",
        "webkit pool touch aim responds",
        "webkit pool keyboard aim responds",
        "webkit pool completes shot without script errors",
        "webkit pool phone fits",
        "webkit golf touch aim responds",
        "webkit golf keyboard aim responds",
        "webkit golf completes shot without script errors",
        "webkit golf phone fits",
        "webkit bowling touch aim responds",
        "webkit bowling keyboard aim responds",
        "webkit bowling completes shot without script errors",
        "webkit bowling phone fits",
        "Update waits while game active",
        "Demo does not submit real shots",
        "Reduced motion skips replay animation",
        "Connection error popup is inside phone viewport",
        "Dismissed connection error stays dismissed on retry",
        "Automatic reconnection succeeds",
        "Later choice persists"
      ],
      "performance": [
        {
          "engine": "chromium",
          "cpuThrottle": 4,
          "game": "pool",
          "frames": 138,
          "averageFrameMs": 16.593478260955948,
          "slowFrames": 0
        },
        {
          "engine": "chromium",
          "cpuThrottle": 4,
          "game": "golf",
          "frames": 115,
          "averageFrameMs": 16.66608695652174,
          "slowFrames": 0
        },
        {
          "engine": "chromium",
          "cpuThrottle": 4,
          "game": "bowling",
          "frames": 139,
          "averageFrameMs": 16.548920863437996,
          "slowFrames": 0
        },
        {
          "engine": "webkit",
          "cpuThrottle": 1,
          "game": "pool",
          "frames": 651,
          "averageFrameMs": 3.5053763440860215,
          "slowFrames": 0
        },
        {
          "engine": "webkit",
          "cpuThrottle": 1,
          "game": "golf",
          "frames": 587,
          "averageFrameMs": 3.2572402044293014,
          "slowFrames": 0
        },
        {
          "engine": "webkit",
          "cpuThrottle": 1,
          "game": "bowling",
          "frames": 569,
          "averageFrameMs": 4.042179261862917,
          "slowFrames": 0
        }
      ],
      "environment": "Windows Chromium 4x CPU slowdown and WebKit; 390px touch viewport emulation; no physical device"
    },
    "touch-and-render-equivalence": {
      "checks": [
        "pool: portrait/landscape touch, 320\u20131024px widths, replay pauses behind demo, resume/next action, no browser errors",
        "golf: portrait/landscape touch, 320\u20131024px widths, replay pauses behind demo, resume/next action, no browser errors",
        "bowling: portrait/landscape touch, 320\u20131024px widths, replay pauses behind demo, resume/next action, no browser errors"
      ],
      "pixelComparisons": [
        {
          "game": "pool",
          "changedPixels": 0,
          "pixels": 500000,
          "fraction": 0,
          "maxDifference": 2
        },
        {
          "game": "pool",
          "changedPixels": 0,
          "pixels": 500000,
          "fraction": 0,
          "maxDifference": 5
        },
        {
          "game": "pool",
          "changedPixels": 0,
          "pixels": 500000,
          "fraction": 0,
          "maxDifference": 9
        },
        {
          "game": "golf",
          "changedPixels": 39,
          "pixels": 500000,
          "fraction": 7.8e-05,
          "maxDifference": 42
        },
        {
          "game": "golf",
          "changedPixels": 0,
          "pixels": 500000,
          "fraction": 0,
          "maxDifference": 3
        },
        {
          "game": "golf",
          "changedPixels": 0,
          "pixels": 500000,
          "fraction": 0,
          "maxDifference": 5
        },
        {
          "game": "bowling",
          "changedPixels": 0,
          "pixels": 500123,
          "fraction": 0,
          "maxDifference": 3
        },
        {
          "game": "bowling",
          "changedPixels": 0,
          "pixels": 500123,
          "fraction": 0,
          "maxDifference": 3
        },
        {
          "game": "bowling",
          "changedPixels": 38,
          "pixels": 500123,
          "fraction": 7.598130859808487e-05,
          "maxDifference": 65
        }
      ],
      "tolerance": "Below 0.5% pixels with channel difference >16 (sampling/antialiasing tolerance)",
      "environment": "Windows WebKit emulation; test-only full-redraw hook injected by browser routing, not shipped"
    },
    "online-security": {
      "checks": [
        "Guest online creation denied",
        "pool host-only start and capacity",
        "pool spectator and wrong-turn write denied",
        "pool CSRF checked",
        "pool stale moves rejected",
        "pool synchronized server state",
        "pool spectator public state strips identity keys",
        "pool unchanged poll compact",
        "golf host-only start and capacity",
        "golf spectator and wrong-turn write denied",
        "golf CSRF checked",
        "golf stale moves rejected",
        "golf synchronized server state",
        "golf spectator public state strips identity keys",
        "golf unchanged poll compact",
        "bowling host-only start and capacity",
        "bowling spectator and wrong-turn write denied",
        "bowling CSRF checked",
        "bowling stale moves rejected",
        "bowling synchronized server state",
        "bowling spectator public state strips identity keys",
        "bowling unchanged poll compact",
        "Private sports table rejects spectators",
        "Spectator has no shot controls",
        "Bowling event reaches independent browser",
        "Reload rejoins same online table",
        "No multiplayer browser errors"
      ],
      "environment": "Local synthetic accounts; three isolated Chromium contexts on one Windows computer/network"
    }
  },
  "webkitBefore": [
    {
      "version": 44,
      "game": "pool",
      "width": 390,
      "height": 844,
      "dpr": 3,
      "frames": 82,
      "averageFrameMs": 26.621951219512194,
      "slowFrames": 7
    },
    {
      "version": 44,
      "game": "golf",
      "width": 390,
      "height": 844,
      "dpr": 3,
      "frames": 69,
      "averageFrameMs": 27.652173913043477,
      "slowFrames": 2
    },
    {
      "version": 44,
      "game": "bowling",
      "width": 390,
      "height": 844,
      "dpr": 3,
      "frames": 60,
      "averageFrameMs": 38.71666666666667,
      "slowFrames": 35
    },
    {
      "version": 44,
      "game": "pool",
      "width": 768,
      "height": 1024,
      "dpr": 2,
      "frames": 94,
      "averageFrameMs": 23.28723404255319,
      "slowFrames": 1
    },
    {
      "version": 44,
      "game": "golf",
      "width": 768,
      "height": 1024,
      "dpr": 2,
      "frames": 85,
      "averageFrameMs": 22.4,
      "slowFrames": 2
    },
    {
      "version": 44,
      "game": "bowling",
      "width": 768,
      "height": 1024,
      "dpr": 2,
      "frames": 125,
      "averageFrameMs": 18.512,
      "slowFrames": 3
    },
    {
      "version": 44,
      "game": "pool",
      "width": 1024,
      "height": 768,
      "dpr": 2,
      "frames": 106,
      "averageFrameMs": 20.69811320754717,
      "slowFrames": 1
    },
    {
      "version": 44,
      "game": "golf",
      "width": 1024,
      "height": 768,
      "dpr": 2,
      "frames": 95,
      "averageFrameMs": 20.189473684210526,
      "slowFrames": 2
    },
    {
      "version": 44,
      "game": "bowling",
      "width": 1024,
      "height": 768,
      "dpr": 2,
      "frames": 193,
      "averageFrameMs": 11.94300518134715,
      "slowFrames": 1
    },
    {
      "version": 44,
      "game": "pool",
      "width": 1280,
      "height": 800,
      "dpr": 2,
      "frames": 83,
      "averageFrameMs": 26.27710843373494,
      "slowFrames": 3
    },
    {
      "version": 44,
      "game": "golf",
      "width": 1280,
      "height": 800,
      "dpr": 2,
      "frames": 59,
      "averageFrameMs": 32.644067796610166,
      "slowFrames": 6
    },
    {
      "version": 44,
      "game": "bowling",
      "width": 1280,
      "height": 800,
      "dpr": 2,
      "frames": 116,
      "averageFrameMs": 19.82758620689655,
      "slowFrames": 2
    }
  ],
  "webkitAfter": [
    {
      "version": 47,
      "game": "pool",
      "width": 390,
      "height": 844,
      "dpr": 3,
      "frames": 163,
      "averageFrameMs": 13.386503067484663,
      "slowFrames": 2
    },
    {
      "version": 47,
      "game": "golf",
      "width": 390,
      "height": 844,
      "dpr": 3,
      "frames": 265,
      "averageFrameMs": 7.2075471698113205,
      "slowFrames": 2
    },
    {
      "version": 47,
      "game": "bowling",
      "width": 390,
      "height": 844,
      "dpr": 3,
      "frames": 161,
      "averageFrameMs": 14.316770186335404,
      "slowFrames": 2
    },
    {
      "version": 47,
      "game": "pool",
      "width": 768,
      "height": 1024,
      "dpr": 2,
      "frames": 305,
      "averageFrameMs": 7.137704918032787,
      "slowFrames": 2
    },
    {
      "version": 47,
      "game": "golf",
      "width": 768,
      "height": 1024,
      "dpr": 2,
      "frames": 1159,
      "averageFrameMs": 1.646246764452114,
      "slowFrames": 1
    },
    {
      "version": 47,
      "game": "bowling",
      "width": 768,
      "height": 1024,
      "dpr": 2,
      "frames": 843,
      "averageFrameMs": 2.735468564650059,
      "slowFrames": 1
    },
    {
      "version": 47,
      "game": "pool",
      "width": 1024,
      "height": 768,
      "dpr": 2,
      "frames": 324,
      "averageFrameMs": 6.728395061728395,
      "slowFrames": 1
    },
    {
      "version": 47,
      "game": "golf",
      "width": 1024,
      "height": 768,
      "dpr": 2,
      "frames": 980,
      "averageFrameMs": 1.9428571428571428,
      "slowFrames": 1
    },
    {
      "version": 47,
      "game": "bowling",
      "width": 1024,
      "height": 768,
      "dpr": 2,
      "frames": 773,
      "averageFrameMs": 2.984476067270375,
      "slowFrames": 1
    },
    {
      "version": 47,
      "game": "pool",
      "width": 1280,
      "height": 800,
      "dpr": 2,
      "frames": 226,
      "averageFrameMs": 9.676991150442477,
      "slowFrames": 1
    },
    {
      "version": 47,
      "game": "golf",
      "width": 1280,
      "height": 800,
      "dpr": 2,
      "frames": 1412,
      "averageFrameMs": 1.3491501416430596,
      "slowFrames": 2
    },
    {
      "version": 47,
      "game": "bowling",
      "width": 1280,
      "height": 800,
      "dpr": 2,
      "frames": 705,
      "averageFrameMs": 3.276595744680851,
      "slowFrames": 1
    }
  ],
  "limits": [
    "Synthetic headless frame intervals are not physical screen refresh rates.",
    "Physical iPhone/iPad, independent-network and manual screen-reader testing remain pending."
  ]
}