{
  "schema": "portfolio.clockwork-evidence/1",
  "recordedAt": "2026-09-09",
  "sourceCommit": "f57790e1603a1a34085ca1485a6183cc48b3420e",
  "sourceHref": "https://github.com/xsparc/ludoweave-engine/blob/f57790e1603a1a34085ca1485a6183cc48b3420e/examples/clockwork_arena.py",
  "environment": {
    "python": "3.12.13",
    "system": "Windows",
    "wgpu": "0.32.0",
    "source": "f57790e1603a1a34085ca1485a6183cc48b3420e",
    "audio": "null",
    "surface": "offscreen",
    "dimensions": [960, 540],
    "adapter": {
      "vendor": "AMD proprietary driver",
      "device": "AMD Radeon(TM) Graphics",
      "adapter_type": "IntegratedGPU",
      "backend_type": "Vulkan"
    }
  },
  "capture": "Unmodified RGBA capture_surface bytes encoded losslessly as PNG; no cropping or retouching.",
  "captureHarnessSha256": "510087ecf4d162dabcdaa2e3d7077a6bcdee9ee5bac12c03fccc49df0f7b11a8",
  "exampleSourceSha256": "fd3c83c678f65f9a29610a5c054151f1308e3e035bda00e379bf4fbf617486c4",
  "runs": [
    {
      "ticks": 60,
      "command": "python examples/clockwork_arena.py --ticks 60 --renderer wgpu --audio null",
      "result": {
        "arena": {
          "damage_taken": 0,
          "enemies_active": 1,
          "enemies_destroyed": 2,
          "enemies_spawned": 3,
          "game_over": false,
          "player_health": 20,
          "projectiles_active": 2,
          "restarts": 0,
          "score": 200,
          "shots_fired": 6,
          "state_hash": "sha256:6980c62a93a7339b8192db27f787acee4cbad26741d50bfcc08d92479123da33",
          "ticks": 60,
          "wave": 1
        },
        "capture_sha256": "65f87c827be2f37ecdd014657a412b40f5ea7828ec8613fcd8480decfc4541b7",
        "draw_calls": 60,
        "ludoweave_version": "0.1.0a1",
        "renderer": "wgpu",
        "schema": "ludoweave.example.clockwork_arena/1",
        "sprite_instances": 309,
        "surface": "offscreen"
      },
      "image": "/evidence/clockwork-60.png",
      "pngSha256": "52c6a778961f453ea2e32ed6337a4972a8bbf25652367cfb350f6f5fa434157e"
    },
    {
      "ticks": 180,
      "command": "python examples/clockwork_arena.py --ticks 180 --renderer wgpu --audio null",
      "result": {
        "arena": {
          "damage_taken": 0,
          "enemies_active": 0,
          "enemies_destroyed": 3,
          "enemies_spawned": 3,
          "game_over": false,
          "player_health": 20,
          "projectiles_active": 2,
          "restarts": 0,
          "score": 300,
          "shots_fired": 18,
          "state_hash": "sha256:da6140a2de95519957eeb74291d301b984d33a31e1ee4ff71970c06459625c4f",
          "ticks": 180,
          "wave": 1
        },
        "capture_sha256": "60af2a19beef9f0dc9c65e61d12289ade61adebc12a4af0cf1f20891bc06cebf",
        "draw_calls": 180,
        "ludoweave_version": "0.1.0a1",
        "renderer": "wgpu",
        "schema": "ludoweave.example.clockwork_arena/1",
        "sprite_instances": 927,
        "surface": "offscreen"
      },
      "image": "/evidence/clockwork-180.png",
      "pngSha256": "fe7e80e4794bc0d60747394699142d1b242e05848bb5fb041a9d72c426224bde"
    }
  ],
  "repeat180": {
    "result": {
      "arena": {
        "damage_taken": 0,
        "enemies_active": 0,
        "enemies_destroyed": 3,
        "enemies_spawned": 3,
        "game_over": false,
        "player_health": 20,
        "projectiles_active": 2,
        "restarts": 0,
        "score": 300,
        "shots_fired": 18,
        "state_hash": "sha256:da6140a2de95519957eeb74291d301b984d33a31e1ee4ff71970c06459625c4f",
        "ticks": 180,
        "wave": 1
      },
      "capture_sha256": "60af2a19beef9f0dc9c65e61d12289ade61adebc12a4af0cf1f20891bc06cebf",
      "draw_calls": 180,
      "ludoweave_version": "0.1.0a1",
      "renderer": "wgpu",
      "schema": "ludoweave.example.clockwork_arena/1",
      "sprite_instances": 927,
      "surface": "offscreen"
    },
    "stateHashMatches": true,
    "captureHashMatches": true
  },
  "limitations": [
    "Single local environment and pinned historical snapshot.",
    "Null audio: no device playback, latency or listening claim.",
    "Offscreen capture: no interactive window or user-input test.",
    "Matching repeated hashes do not prove cross-device determinism or production readiness."
  ]
}
