{
  "schema": 1,
  "measured_at": "2026-09-29T12:34:35.809Z",
  "commit": "f283d1d",
  "dirty": false,
  "method": {
    "tool": "tools/measure-rig.mjs",
    "browser": "Chromium 149.0.7827.55 headless, SwiftShader (software GL)",
    "viewport": "1440×900 @1x, dark scheme",
    "note": "Headless software rendering. Timing is for comparing builds on the same bench, not a real-device frame rate."
  },
  "entries": {
    "001": {
      "slug": "enigma",
      "payload": {
        "js_gzip": 242943,
        "js_bytes": 872206,
        "js": [
          {
            "file": "/assets/enigmaLive-CxNjyK2-.js",
            "bytes": 68866,
            "gzip": 25473
          },
          {
            "file": "/assets/modulepreload-polyfill-B5Qt9EMX.js",
            "bytes": 711,
            "gzip": 399
          },
          {
            "file": "/assets/react-DsceW-4w.js",
            "bytes": 140863,
            "gzip": 45188
          },
          {
            "file": "/assets/client-Be93g9SH.js",
            "bytes": 967,
            "gzip": 606
          },
          {
            "file": "/assets/three-CCq634Q5.js",
            "bytes": 616006,
            "gzip": 157797
          },
          {
            "file": "/assets/GLTFLoader-C86H0wSE.js",
            "bytes": 44793,
            "gzip": 13480
          }
        ],
        "glb_bytes": 1596220,
        "glb": [
          {
            "file": "/models/bombe.glb",
            "bytes": 714168
          },
          {
            "file": "/models/enigma.glb",
            "bytes": 582068
          },
          {
            "file": "/models/props.glb",
            "bytes": 299984
          }
        ],
        "compression": "gzip -9 (node zlib); GLBs are raw file size"
      },
      "render": {
        "beats": [
          {
            "p": 0.04,
            "name": "The machine",
            "frame": "/projects/enigma/rig/p0_04.webp",
            "calls": 581,
            "triangles": 173680,
            "textures": 69,
            "geometries": 148,
            "programs": 15
          },
          {
            "p": 0.31,
            "name": "The assembly",
            "frame": "/projects/enigma/rig/p0_31.webp",
            "calls": 526,
            "triangles": 164916,
            "textures": 50,
            "geometries": 146,
            "programs": 15
          },
          {
            "p": 0.45,
            "name": "The rotor",
            "frame": "/projects/enigma/rig/p0_45.webp",
            "calls": 53,
            "triangles": 20674,
            "textures": 13,
            "geometries": 46,
            "programs": 8
          },
          {
            "p": 0.6,
            "name": "The path",
            "frame": "/projects/enigma/rig/p0_6.webp",
            "calls": 533,
            "triangles": 249299,
            "textures": 43,
            "geometries": 152,
            "programs": 17
          },
          {
            "p": 0.83,
            "name": "The bombe",
            "frame": "/projects/enigma/rig/p0_83.webp",
            "calls": 302,
            "triangles": 168966,
            "textures": 8,
            "geometries": 143,
            "programs": 12
          },
          {
            "p": 0.95,
            "name": "Your turn",
            "frame": "/projects/enigma/rig/p0_95.webp",
            "calls": 608,
            "triangles": 254718,
            "textures": 69,
            "geometries": 158,
            "programs": 19
          }
        ],
        "source": "renderer.info after the last frame, at ?p=<beat>&probe=1 (or the beat's own query), once the scene stopped growing"
      },
      "first_frame_ms": {
        "median": 7164,
        "runs": [
          6383,
          6145,
          7177,
          7164,
          7300
        ],
        "source": "performance.now() after the first renderer.render, cold context, top of page"
      },
      "cipher": {
        "typed": "HELLO",
        "out": "FDJDQ",
        "pass": true
      },
      "ci": {
        "conclusion": "success",
        "at": "2026-09-29T12:25:26Z",
        "sha": "f283d1d",
        "url": "https://github.com/StovBuilds/jarvising/actions/runs/36568004815"
      }
    },
    "002": {
      "slug": "cortex",
      "measured_at": "2026-09-29T12:38:31.187Z",
      "commit": "f283d1d",
      "dirty": false,
      "method": {
        "tool": "tools/measure-rig.mjs --entry 002",
        "browser": "Chromium 149.0.7827.55 headless, SwiftShader (software GL)",
        "viewport": "1440×900 @1x, dark scheme",
        "note": "Headless software rendering. Timing is for comparing builds on the same bench, not a real-device frame rate."
      },
      "payload": {
        "js_gzip": 296711,
        "js_bytes": 1056514,
        "js": [
          {
            "file": "/assets/Pass-T1qavycg.js",
            "bytes": 1130,
            "gzip": 619
          },
          {
            "file": "/assets/RenderPass-BMKPggHM.js",
            "bytes": 25333,
            "gzip": 5869
          },
          {
            "file": "/assets/UnrealBloomPass-BwaN4D1v.js",
            "bytes": 9249,
            "gzip": 2382
          },
          {
            "file": "/assets/client-Be93g9SH.js",
            "bytes": 967,
            "gzip": 606
          },
          {
            "file": "/assets/cortexLive-Bp1WM1a0.js",
            "bytes": 77528,
            "gzip": 25974
          },
          {
            "file": "/assets/index-D8k111YP.js",
            "bytes": 92196,
            "gzip": 30586
          },
          {
            "file": "/assets/modulepreload-polyfill-B5Qt9EMX.js",
            "bytes": 711,
            "gzip": 399
          },
          {
            "file": "/assets/react-DsceW-4w.js",
            "bytes": 140863,
            "gzip": 45188
          },
          {
            "file": "/assets/react-force-graph-3d-CATIRmfN.js",
            "bytes": 92531,
            "gzip": 27291
          },
          {
            "file": "/assets/three-CCq634Q5.js",
            "bytes": 616006,
            "gzip": 157797
          }
        ],
        "lite_js_gzip": 133759,
        "lite_js": [
          {
            "file": "/assets/client-Be93g9SH.js",
            "bytes": 967,
            "gzip": 606
          },
          {
            "file": "/assets/cortexLive-Bp1WM1a0.js",
            "bytes": 77528,
            "gzip": 25974
          },
          {
            "file": "/assets/index-D8k111YP.js",
            "bytes": 92196,
            "gzip": 30586
          },
          {
            "file": "/assets/modulepreload-polyfill-B5Qt9EMX.js",
            "bytes": 711,
            "gzip": 399
          },
          {
            "file": "/assets/react-DsceW-4w.js",
            "bytes": 140863,
            "gzip": 45188
          },
          {
            "file": "/assets/react-force-graph-2d-aFR4kNIB.js",
            "bytes": 89535,
            "gzip": 31006
          }
        ],
        "compression": "gzip -9 (node zlib) of the JS files the page fetched; 3D at 1440×900, lite at 390×844"
      },
      "data": {
        "nodes": "191",
        "links": "273",
        "clusters": "7",
        "mode": "3D"
      },
      "render": {
        "views": [
          {
            "tag": "table",
            "name": "The table",
            "frame": "/projects/cortex/rig/table.webp",
            "calls": 1079,
            "triangles": 88428,
            "textures": 24,
            "geometries": 429,
            "programs": 22
          },
          {
            "tag": "search",
            "name": "Search",
            "frame": "/projects/cortex/rig/search.webp",
            "calls": 96,
            "triangles": 61780,
            "textures": 24,
            "geometries": 294,
            "programs": 23
          },
          {
            "tag": "live",
            "name": "Live stream",
            "frame": "/projects/cortex/rig/live.webp",
            "calls": 1079,
            "triangles": 88428,
            "textures": 24,
            "geometries": 429,
            "programs": 22
          },
          {
            "tag": "globe",
            "name": "The globe",
            "frame": "/projects/cortex/rig/globe.webp",
            "calls": 1165,
            "triangles": 46996,
            "textures": 19,
            "geometries": 343,
            "programs": 20
          }
        ],
        "source": "renderer.info summed over the latest whole frame (scene + bloom passes), via ?probe=1, once the scene stopped changing"
      },
      "first_frame_ms": {
        "median": 488,
        "runs": [
          1138,
          471,
          476,
          492,
          488
        ],
        "source": "performance.now() at the first WebGL draw call, cold context, ?intro=0"
      },
      "search": {
        "query": "coyote",
        "found": "coyote time",
        "pass": true
      },
      "ci": {
        "conclusion": "success",
        "at": "2026-09-29T12:25:26Z",
        "sha": "f283d1d",
        "url": "https://github.com/StovBuilds/jarvising/actions/runs/36568004815"
      }
    },
    "003": {
      "slug": "rig",
      "measured_at": "2026-09-29T12:46:05.916Z",
      "commit": "f283d1d",
      "dirty": false,
      "method": {
        "tool": "tools/measure-rig.mjs",
        "browser": "Chromium 149.0.7827.55 headless, SwiftShader (software GL)",
        "viewport": "1440×900 @1x, dark scheme",
        "query": "?tier=HIGH on every load",
        "note": "Headless software rendering. Timing is for comparing builds on the same bench, not a real-device frame rate."
      },
      "payload": {
        "js_gzip": 278823,
        "js_bytes": 1007395,
        "js": [
          {
            "file": "/assets/rigLive-fcnMPOzn.js",
            "bytes": 165230,
            "gzip": 51438
          },
          {
            "file": "/assets/modulepreload-polyfill-B5Qt9EMX.js",
            "bytes": 711,
            "gzip": 399
          },
          {
            "file": "/assets/react-DsceW-4w.js",
            "bytes": 140863,
            "gzip": 45188
          },
          {
            "file": "/assets/client-Be93g9SH.js",
            "bytes": 967,
            "gzip": 606
          },
          {
            "file": "/assets/three-CCq634Q5.js",
            "bytes": 616006,
            "gzip": 157797
          },
          {
            "file": "/assets/Pass-T1qavycg.js",
            "bytes": 1130,
            "gzip": 619
          },
          {
            "file": "/assets/RenderPass-BMKPggHM.js",
            "bytes": 25333,
            "gzip": 5869
          },
          {
            "file": "/assets/UnrealBloomPass-BwaN4D1v.js",
            "bytes": 9249,
            "gzip": 2382
          },
          {
            "file": "/assets/OutputPass-BB48C9w8.js",
            "bytes": 3113,
            "gzip": 1045
          },
          {
            "file": "/assets/GLTFLoader-C86H0wSE.js",
            "bytes": 44793,
            "gzip": 13480
          }
        ],
        "glb_bytes": 384212,
        "glb": [
          {
            "file": "/models/rig-parts.glb",
            "bytes": 384212
          }
        ],
        "compression": "gzip -9 (node zlib); GLBs are raw file size"
      },
      "render": {
        "beats": [
          {
            "p": 0.1,
            "name": "Inside the CPU",
            "frame": "/projects/rig/rig/p0_1.webp",
            "calls": 23,
            "triangles": 19024,
            "textures": 19,
            "geometries": 23,
            "programs": 19
          },
          {
            "p": 0.21,
            "name": "The package",
            "frame": "/projects/rig/rig/p0_21.webp",
            "calls": 603,
            "triangles": 158802,
            "textures": 19,
            "geometries": 426,
            "programs": 23
          },
          {
            "p": 0.55,
            "name": "Inside the GPU",
            "frame": "/projects/rig/rig/p0_55.webp",
            "calls": 27,
            "triangles": 5446,
            "textures": 21,
            "geometries": 26,
            "programs": 21
          },
          {
            "p": 0.72,
            "name": "Move the heat",
            "frame": "/projects/rig/rig/p0_72.webp",
            "calls": 693,
            "triangles": 196056,
            "textures": 23,
            "geometries": 482,
            "programs": 26
          },
          {
            "p": 1,
            "name": "The atlas",
            "qs": "atlas=1&explode=0.75&flat=1",
            "frame": "/projects/rig/rig/p1.webp",
            "calls": 977,
            "triangles": 259766,
            "textures": 21,
            "geometries": 489,
            "programs": 26
          }
        ],
        "source": "renderer.info after the last frame, at ?p=<beat>&probe=1 (or the beat's own query), once the scene stopped growing; counted across every post-processing pass"
      },
      "first_frame_ms": {
        "median": 1658,
        "runs": [
          1895,
          1745,
          1521,
          1341,
          1658
        ],
        "source": "performance.now() after the first renderer.render, cold context, top of page"
      },
      "search": {
        "query": "memory",
        "results": 8,
        "first": [
          "RAM DIMM 1",
          "RAM DIMM 2",
          "DIMM Slots"
        ],
        "pass": true
      },
      "parts": {
        "count": 104,
        "source": "src/rig/ids.ts"
      },
      "ci": {
        "conclusion": "success",
        "at": "2026-09-29T12:25:26Z",
        "sha": "f283d1d",
        "url": "https://github.com/StovBuilds/jarvising/actions/runs/36568004815"
      }
    },
    "004": {
      "slug": "submarine",
      "measured_at": "2026-09-29T11:24:39.989Z",
      "commit": "a947b90",
      "dirty": false,
      "method": {
        "tool": "tools/measure-rig.mjs --entry 004",
        "browser": "Chromium 149.0.7827.55 headless, SwiftShader (software GL)",
        "viewport": "1440×900 @1x, dark scheme",
        "note": "Headless software rendering. Timing is for comparing builds on the same bench, not a real-device frame rate."
      },
      "payload": {
        "js_gzip": 188122,
        "js_bytes": 705691,
        "js": [
          {
            "file": "/assets/submarineLive-B-uaDDTa.js",
            "bytes": 50149,
            "gzip": 20011
          },
          {
            "file": "/assets/modulepreload-polyfill-B5Qt9EMX.js",
            "bytes": 711,
            "gzip": 399
          },
          {
            "file": "/assets/three-CCq634Q5.js",
            "bytes": 616006,
            "gzip": 157797
          },
          {
            "file": "/assets/Pass-T1qavycg.js",
            "bytes": 1130,
            "gzip": 619
          },
          {
            "file": "/assets/RenderPass-BMKPggHM.js",
            "bytes": 25333,
            "gzip": 5869
          },
          {
            "file": "/assets/UnrealBloomPass-BwaN4D1v.js",
            "bytes": 9249,
            "gzip": 2382
          },
          {
            "file": "/assets/OutputPass-BB48C9w8.js",
            "bytes": 3113,
            "gzip": 1045
          }
        ],
        "compression": "gzip -9 (node zlib) of the module and its modulepreloads; no assets, the scene is built in code"
      },
      "render": {
        "states": [
          {
            "tag": "40ft",
            "name": "Periscope depth",
            "qs": "depth=40",
            "frame": "/projects/submarine/rig/40ft.webp",
            "calls": 182,
            "triangles": 186757,
            "textures": 17,
            "geometries": 102,
            "programs": 49
          },
          {
            "tag": "ping",
            "name": "Ping at the hull",
            "qs": "depth=110&ping=0.52",
            "frame": "/projects/submarine/rig/ping.webp",
            "calls": 185,
            "triangles": 210969,
            "textures": 17,
            "geometries": 105,
            "programs": 51
          },
          {
            "tag": "280ft",
            "name": "Below the layer",
            "qs": "depth=280&ping=1.05",
            "frame": "/projects/submarine/rig/280ft.webp",
            "calls": 186,
            "triangles": 204049,
            "textures": 17,
            "geometries": 106,
            "programs": 51
          },
          {
            "tag": "open",
            "name": "Opened up",
            "qs": "depth=280&view=open&ping=0.3",
            "frame": "/projects/submarine/rig/open.webp",
            "calls": 431,
            "triangles": 241955,
            "textures": 17,
            "geometries": 256,
            "programs": 58
          }
        ],
        "source": "renderer.info summed over one whole frame (scene + bloom + finishing passes), via ?probe=1, in pinned frozen states"
      },
      "first_frame_ms": {
        "median": 3273,
        "runs": [
          5925,
          4024,
          3273,
          2145,
          1971
        ],
        "source": "performance.now() after the first composer.render, cold context, unpinned"
      },
      "echo": {
        "above": {
          "qs": "depth=110&ping=1.05",
          "depth_ft": 110,
          "strength": 1,
          "word": "Strong",
          "range_m": 123,
          "status": "Escort has a fix · echo in 0.16 s"
        },
        "below": {
          "qs": "depth=280&ping=1.05",
          "depth_ft": 280,
          "strength": 0.13,
          "word": "Faint",
          "range_m": 143,
          "status": "Hidden below the layer"
        },
        "round_trip": {
          "shown_s": 0.16,
          "expected_s": 0.164,
          "pass": true
        },
        "pass": true
      },
      "ci": {
        "conclusion": "success",
        "at": "2026-09-29T09:12:10Z",
        "sha": "27ca1d0",
        "url": "https://github.com/StovBuilds/jarvising/actions/runs/36547626810"
      }
    }
  }
}
