{
  "version": "0.46.0",
  "buildSHA256": "11bdfdafc3dbc44fd075a01ecb67f21a61279cce491fe298890f08c5a7551fb8",
  "finalDiff": {
    "profiledBuildSHA256": "d1e26563f0a33b7ce99032b1ff0032b7f7875b0119e7a8b87e6fe2de0057cf00",
    "finalBuildSHA256": "11bdfdafc3dbc44fd075a01ecb67f21a61279cce491fe298890f08c5a7551fb8",
    "soleFinalChange": "Retain Settings/About GPU glyph vertices until the original static canvas actually redraws. No other generated HTML bytes change.",
    "verification": "Replacing exactly the retained drawUI wrapper in the profiled build reproduces the final HTML byte-for-byte."
  },
  "finalBuildChecks": {
    "gauntlet": [
      "Overlapping upright barrels separate and remain solid",
      "Barrel-on-barrel stack supports weight for three simulated seconds",
      "Two magnetized barrels remain separated during a two-second pull",
      "Native R completes reload and native I starts inspection",
      "GPU glyphs cover world/tool labels and place the weapon indicator beside the reticle",
      "Settings glyphs stay visible while the cached canvas panel is idle"
    ],
    "ui": [
      "Gameplay has no canvas action buttons or floating machine, cursor or speed buttons",
      "B and Escape close the Toybox into free cursor; Tab captures deliberately, and Add buddy uses an unobstructed placement preview",
      "Settings return to pause, all fourteen tools are accessible, and search spans categories without stealing hotkeys",
      "Wheel changes tools and slow motion has a compact explicit status",
      "Native E starts all three demos from a physical switch, rejects out-of-reach use, and stops moving machinery in place",
      "Rotated press switches stay aligned, solid junk blocks use, and Grab clicks the physical button without grabbing or firing",
      "Revised crusher completes a crushing cycle and injures its loaded buddy"
    ],
    "chrome": [
      "Hardware GPU compute and no CPU physics/paint readback",
      "120 GPU ticks; finite bodies and floor collision",
      "Chaos: 150 bodies, live GPU droplets and no lost stamps",
      "Compute paints persistent floor pigment",
      "GPU clear erases every floor tile",
      "GPU reset restores three dolls",
      "Repeatable GPU simulation after reset",
      "Twelve-dummy cap, finite physics, arena bounds and joint gaps below 15 cm",
      "All three spawn torso sightlines at 1366, 1920 and 3000 px",
      "Audio enabled and running, output separately muted"
    ],
    "firefox": [
      "Hardware GPU compute and no CPU physics/paint readback",
      "120 GPU ticks; finite bodies and floor collision",
      "Chaos: 150 bodies, live GPU droplets and no lost stamps",
      "Compute paints persistent floor pigment",
      "GPU clear erases every floor tile",
      "GPU reset restores three dolls",
      "Repeatable GPU simulation after reset",
      "Twelve-dummy cap, finite physics, arena bounds and joint gaps below 15 cm",
      "All three spawn torso sightlines at 1366, 1920 and 3000 px",
      "Audio enabled and running, output separately muted"
    ]
  },
  "startup": {
    "method": "Local offline HTML. Each browser uses a new dedicated profile, followed by a reload in that same profile. OS and driver shader caches are not forcibly cleared. Firefox is headed with explicit user permission; Chrome is headless. Figures measure navigation through all shaders and simulation warmup, before the entry button.",
    "chrome": [
      {
        "cache": "fresh profile",
        "readyMs": 4990.899999976158,
        "pipelineMs": 4486.700000047684,
        "mainMeshAssemblyMs": 15.700000047683716
      },
      {
        "cache": "same-profile reload",
        "readyMs": 843.3000000119209,
        "pipelineMs": 429,
        "mainMeshAssemblyMs": 16.19999998807907
      }
    ],
    "firefox": [
      {
        "cache": "fresh profile",
        "readyMs": 21578,
        "pipelineMs": 19416,
        "mainMeshAssemblyMs": 14,
        "loadingAnimationFrames": 1236,
        "worstLoadingFrameMs": 343,
        "meshCacheHit": false,
        "adapter": {
          "vendor": "",
          "architecture": "",
          "isFallbackAdapter": false
        },
        "errors": []
      },
      {
        "cache": "same-profile reload",
        "readyMs": 10089,
        "pipelineMs": 8227,
        "mainMeshAssemblyMs": 19,
        "loadingAnimationFrames": 555,
        "worstLoadingFrameMs": 363,
        "meshCacheHit": true,
        "adapter": {
          "vendor": "",
          "architecture": "",
          "isFallbackAdapter": false
        },
        "errors": []
      }
    ]
  },
  "checks": [
    {
      "command": "tools/wgsl-verify.mjs",
      "status": 0,
      "result": [
        "COMPLETE 63 embedded WGSL modules passed Naga validation"
      ]
    },
    {
      "command": "tools/compute-profile.mjs rockets",
      "status": 0,
      "result": [
        "COMPLETE native GPU gameplay and 3000x1800 profiles passed"
      ],
      "receipt": "tools\\out\\compute-native-rockets-chrome\\verification.json"
    },
    {
      "command": "tools/gauntlet-v46.mjs",
      "status": 0,
      "seconds": 9.201,
      "result": [
        "COMPLETE V46 gauntlet checks"
      ]
    },
    {
      "command": "tools/prop-motion-verify.mjs final-v46",
      "status": 0,
      "seconds": 10.081,
      "result": [
        "COMPLETE 12 prop motion checks passed"
      ]
    },
    {
      "command": "tools/utility-verify.mjs final-v46",
      "status": 0,
      "seconds": 21.319,
      "result": [
        "COMPLETE 16 utility checks passed"
      ]
    },
    {
      "command": "tools/static-geometry-verify.mjs final-v46",
      "status": 0,
      "seconds": 8.63,
      "result": [
        "COMPLETE static platform collision checks"
      ]
    },
    {
      "command": "tools/ui-verify.mjs",
      "status": 0,
      "seconds": 17.388,
      "result": [
        "COMPLETE 7 UI and model checks"
      ]
    },
    {
      "command": "tools/compute-verify.mjs",
      "status": 0,
      "seconds": 19.523,
      "result": [
        "COMPLETE compute game checks passed (10 checks)"
      ]
    },
    {
      "command": "tools/compute-profile.mjs",
      "status": 0,
      "seconds": 59.732,
      "result": [
        "COMPLETE native GPU gameplay and 3000x1800 profiles passed (8 checks)"
      ]
    },
    {
      "command": "tools/compute-profile.mjs junk",
      "status": 0,
      "seconds": 35.304,
      "result": [
        "COMPLETE native GPU gameplay and 3000x1800 profiles passed (1 checks)"
      ]
    },
    {
      "command": "tools/startup-profile.mjs v46-final",
      "status": 0,
      "seconds": 6.79,
      "result": []
    },
    {
      "command": "tools/startup-firefox.mjs after-only",
      "status": 0,
      "seconds": 35.066,
      "result": []
    },
    {
      "command": "tools/compute-verify.mjs firefox",
      "status": 0,
      "seconds": 36.122,
      "result": [
        "COMPLETE compute game checks passed (10 checks)"
      ]
    }
  ],
  "clips": [
    {
      "name": "pistol",
      "file": "pistol.mp4",
      "bytes": 1328775,
      "audio": {
        "enabled": true,
        "state": "running",
        "thuds": 0,
        "lastThud": null
      },
      "sha256": "bb9d92ef7640e718e3bd87ceabbaf0c792ad393d390a276be9b7f2cc33ae7a7e",
      "media": {
        "programs": [],
        "stream_groups": [],
        "streams": [
          {
            "codec_name": "h264",
            "width": 1440,
            "height": 900
          },
          {
            "codec_name": "aac"
          }
        ],
        "format": {
          "duration": "7.477333"
        }
      }
    },
    {
      "name": "rocket",
      "file": "rocket.mp4",
      "bytes": 1748131,
      "audio": {
        "enabled": true,
        "state": "running",
        "thuds": 3,
        "lastThud": {
          "strength": 1,
          "melee": false,
          "explosion": true,
          "saw": false,
          "junk": false,
          "machine": false,
          "material": 0,
          "body": 255,
          "latency": 11.200000047683716,
          "frameID": 974
        }
      },
      "sha256": "913c005a6be7be5d6230d93420cfead312bc8a7f18622933f111f0d29430c3bb",
      "media": {
        "programs": [],
        "stream_groups": [],
        "streams": [
          {
            "codec_name": "h264",
            "width": 1440,
            "height": 900
          },
          {
            "codec_name": "aac"
          }
        ],
        "format": {
          "duration": "7.462333"
        }
      }
    },
    {
      "name": "shotgun",
      "file": "shotgun.mp4",
      "bytes": 1648060,
      "audio": {
        "enabled": true,
        "state": "running",
        "thuds": 3,
        "lastThud": {
          "strength": 1,
          "melee": false,
          "explosion": true,
          "saw": false,
          "junk": false,
          "machine": false,
          "material": 0,
          "body": 255,
          "latency": 11.200000047683716,
          "frameID": 974
        }
      },
      "sha256": "339233e614d8dd446ec0b06f8f63501410d58affc2b7475628c84861a22623d0",
      "media": {
        "programs": [],
        "stream_groups": [],
        "streams": [
          {
            "codec_name": "h264",
            "width": 1440,
            "height": 900
          },
          {
            "codec_name": "aac"
          }
        ],
        "format": {
          "duration": "7.467833"
        }
      }
    },
    {
      "name": "sawblade",
      "file": "sawblade.mp4",
      "bytes": 1835829,
      "audio": {
        "enabled": true,
        "state": "running",
        "thuds": 10,
        "lastThud": {
          "strength": 0.7172161172161172,
          "melee": false,
          "explosion": false,
          "saw": true,
          "junk": false,
          "machine": false,
          "material": 0,
          "body": 255,
          "latency": 8.599999964237213,
          "frameID": 2065
        }
      },
      "sha256": "0de69aa84a42fa427ef6d4eed607eff40dcc17785a1139ad6463ac28035daefa",
      "media": {
        "programs": [],
        "stream_groups": [],
        "streams": [
          {
            "codec_name": "h264",
            "width": 1440,
            "height": 900
          },
          {
            "codec_name": "aac"
          }
        ],
        "format": {
          "duration": "7.474333"
        }
      }
    },
    {
      "name": "tools-and-hands",
      "file": "tools-and-hands.mp4",
      "bytes": 4609371,
      "audio": {
        "enabled": true,
        "state": "running",
        "thuds": 56,
        "lastThud": {
          "strength": 0.14993894993894993,
          "melee": false,
          "explosion": false,
          "saw": false,
          "junk": false,
          "machine": false,
          "material": 0,
          "body": 44,
          "latency": 8.699999988079071,
          "frameID": 2668
        }
      },
      "sha256": "046751a6df582cff2e74319234d1ca3b6b7400514df5c6381093db5d1e4b5dd9",
      "media": {
        "programs": [],
        "stream_groups": [],
        "streams": [
          {
            "codec_name": "h264",
            "width": 1440,
            "height": 900
          },
          {
            "codec_name": "aac"
          }
        ],
        "format": {
          "duration": "15.744833"
        }
      }
    }
  ],
  "poses": [
    {
      "tool": 1,
      "angle": "front",
      "file": "tool-1-front.png",
      "sha256": "22fb2ee42d561156d355ec91861ee4760124912e9f9338934d88c0be990a3e19"
    },
    {
      "tool": 1,
      "angle": "inside",
      "file": "tool-1-inside.png",
      "sha256": "28bd745f92f897b3bda0babf2ce77fdaac4b070da5fc46ea371f57274d34e900"
    },
    {
      "tool": 1,
      "angle": "outside",
      "file": "tool-1-outside.png",
      "sha256": "7676676e8173543f00bd52eb135ee659b8b09914bf6a9da3b48d48d3ba6c0396"
    },
    {
      "tool": 2,
      "angle": "front",
      "file": "tool-2-front.png",
      "sha256": "f461e29b1aa225d30b27300db003d705c26f8c26270d8eda5c7a470855ac162e"
    },
    {
      "tool": 2,
      "angle": "inside",
      "file": "tool-2-inside.png",
      "sha256": "0ad7596e909d79dbc575062de192640e088a153e6378173ac31f760ecd30fea5"
    },
    {
      "tool": 2,
      "angle": "outside",
      "file": "tool-2-outside.png",
      "sha256": "ed9fb37e3575f7ee79d2e90cef6df63b961d91419c69f31f878c60f2baa30476"
    },
    {
      "tool": 3,
      "angle": "front",
      "file": "tool-3-front.png",
      "sha256": "2091c0c6f116f776f900cec075a567a5563f8124651185417b5e9c169555585c"
    },
    {
      "tool": 3,
      "angle": "inside",
      "file": "tool-3-inside.png",
      "sha256": "db4ac1d465fb76809f69d91e41237eb0551a76083880dcfc281b96c3898e630a"
    },
    {
      "tool": 3,
      "angle": "outside",
      "file": "tool-3-outside.png",
      "sha256": "ca700de54f47aa4c7880ca729b88286e9c0453022123aa17f5144114e680567c"
    },
    {
      "tool": 4,
      "angle": "front",
      "file": "tool-4-front.png",
      "sha256": "1b4a61aaccf831636c1f5345de4c80f4eac57ad8f1abb6d53dc8427f69d7ead6"
    },
    {
      "tool": 4,
      "angle": "inside",
      "file": "tool-4-inside.png",
      "sha256": "2d3961471c8edaf8f9eebaf596774666a47a08ea2c833a660cb81e0122fb1b30"
    },
    {
      "tool": 4,
      "angle": "outside",
      "file": "tool-4-outside.png",
      "sha256": "26a0ebf7dcb1526d123189fbda638db5e92a6bd35d2b8f4090e7d634a99a7fb5"
    },
    {
      "tool": 5,
      "angle": "front",
      "file": "tool-5-front.png",
      "sha256": "c78c35aeac8721f31773000b8b7536e5568a97428753dd7af768a140b875f738"
    },
    {
      "tool": 5,
      "angle": "inside",
      "file": "tool-5-inside.png",
      "sha256": "e148053bc30521056c73f6f812ec630a2b1d87239b955fab5c41f76449a2869e"
    },
    {
      "tool": 5,
      "angle": "outside",
      "file": "tool-5-outside.png",
      "sha256": "d29e38a16c76e2918d8498fd39050c33c4d6fead5ab096d2f46bbb059dcf236c"
    },
    {
      "tool": 6,
      "angle": "front",
      "file": "tool-6-front.png",
      "sha256": "a9124f73bbd601bf36296be4cab6c89c408bbf2e13e854d2cff5506d717d462a"
    },
    {
      "tool": 6,
      "angle": "inside",
      "file": "tool-6-inside.png",
      "sha256": "ee66db387a732046dfb33b01146d6b520ce492d1c4c56af7b16feb2c1b4b1a72"
    },
    {
      "tool": 6,
      "angle": "outside",
      "file": "tool-6-outside.png",
      "sha256": "fdbebaeb80173b953201320108741dc43bfe7de2c93910db155838bb3e8cbef9"
    },
    {
      "tool": 7,
      "angle": "front",
      "file": "tool-7-front.png",
      "sha256": "66095e72686a67b68d8b0a662da70606d9df5dd7a2fa27432134ef0f2b819995"
    },
    {
      "tool": 7,
      "angle": "inside",
      "file": "tool-7-inside.png",
      "sha256": "dd27b0ab6e2cf5f8f48bdf0709c2bfaefc3b3017545749adfda43f6e02c696bf"
    },
    {
      "tool": 7,
      "angle": "outside",
      "file": "tool-7-outside.png",
      "sha256": "b62451fe4fcec15c3b4cef4da4d3549f4ed68092ff28982784a63fdef33ad59a"
    },
    {
      "tool": 8,
      "angle": "front",
      "file": "tool-8-front.png",
      "sha256": "3173eda9efd3d0e20347d58243d8daac3d566cc877dd54738edd08895b8fde26"
    },
    {
      "tool": 8,
      "angle": "inside",
      "file": "tool-8-inside.png",
      "sha256": "c32fe3bc78bf0439b21fff29c77d68008cf5f961666a61c50f4df75006a7e812"
    },
    {
      "tool": 8,
      "angle": "outside",
      "file": "tool-8-outside.png",
      "sha256": "b78f2474d1d50faabd5887b9b55bb90b8799dae4a6e372bc0fb84da766e8786f"
    },
    {
      "tool": 9,
      "angle": "front",
      "file": "tool-9-front.png",
      "sha256": "b2a5bc6edde3fcc61e4d8c4f91fb767e2426e1b3be205ab8f5a00e967def92a4"
    },
    {
      "tool": 9,
      "angle": "inside",
      "file": "tool-9-inside.png",
      "sha256": "6d7ba56667da8ce8bc0aaec2eda4302b146e204fc070f385ac78c8d73a8cbeed"
    },
    {
      "tool": 9,
      "angle": "outside",
      "file": "tool-9-outside.png",
      "sha256": "987483b8c392d59e66beb793d35d9cdc230c43cb0a4f79d0fe16cf2b36abda68"
    },
    {
      "tool": 10,
      "angle": "front",
      "file": "tool-10-front.png",
      "sha256": "c5772daf712c5d2bcbe7a220a1f98b240f01e710638a558765e47c3fb0a5a108"
    },
    {
      "tool": 10,
      "angle": "inside",
      "file": "tool-10-inside.png",
      "sha256": "c90bab48110ce204bc87737ae7d1d5894dc48ab5bcd8ddbbc0178d8a54a17039"
    },
    {
      "tool": 10,
      "angle": "outside",
      "file": "tool-10-outside.png",
      "sha256": "b5f4632287d7835b0498dc69a97dd3486ad56c2669f478bb79fa2dbf5cccc254"
    },
    {
      "tool": 11,
      "angle": "front",
      "file": "tool-11-front.png",
      "sha256": "ba6625d1bc382dde121fefb01ce826e3cd71c72efb9cb25a0cb216c98e08312f"
    },
    {
      "tool": 11,
      "angle": "inside",
      "file": "tool-11-inside.png",
      "sha256": "6c18c742c1a40a3083dbeb3e30e2263a600f1fcc90f16c55a3d10805ae54c038"
    },
    {
      "tool": 11,
      "angle": "outside",
      "file": "tool-11-outside.png",
      "sha256": "76ceefcd75e2e2e61e92c5dce8a66415746be91c8007f47c041a202deb42374c"
    },
    {
      "tool": 12,
      "angle": "front",
      "file": "tool-12-front.png",
      "sha256": "54def52224681964534a6e3f1b03171801ee8f7659c551a42b981d3fe5b9e134"
    },
    {
      "tool": 12,
      "angle": "inside",
      "file": "tool-12-inside.png",
      "sha256": "6165ca7e929227d3fdd75009decbad1b316720a05e0cbe5bf012783369dd81fb"
    },
    {
      "tool": 12,
      "angle": "outside",
      "file": "tool-12-outside.png",
      "sha256": "a035c1ccaceee6fa8dbe58288389e5d66efedfde7fdd9430582f44d254ff6ccc"
    },
    {
      "tool": 13,
      "angle": "front",
      "file": "tool-13-front.png",
      "sha256": "f554a5eb121898d9b9e6239ca3dc2cdb5804b6975a1dcb20bb410cc343139bc0"
    },
    {
      "tool": 13,
      "angle": "inside",
      "file": "tool-13-inside.png",
      "sha256": "bf84ce15a3a96be14de59512b4731f188e8d480a5db8ad4712c8c635865de219"
    },
    {
      "tool": 13,
      "angle": "outside",
      "file": "tool-13-outside.png",
      "sha256": "a800633268bd1ca9c6a0602fdc9ef4dc733f1c7a9a98d9c57c7aec3bf4c35f82"
    }
  ],
  "limitations": [
    "Firefox cold startup remains slow; threaded meshing and animated progress do not eliminate shader compilation.",
    "Loading/error text uses browser rendering until WebGPU is ready; DOM controls retain semantics and native text editing.",
    "Area lights remain unshadowed.",
    "Ammunition remains unlimited; manual reloads are presentation and a temporary firing lock."
  ]
}
