{
  "schema_version": "whitebox-case-verification/1.0",
  "date": "2026-09-10",
  "status": "verified_with_explicit_limits",
  "environment": {
    "blender": "5.2.1 LTS",
    "ffmpeg": "8.1.2",
    "render_resolution": [
      320,
      180
    ],
    "fps": 24
  },
  "unit_tests": {
    "passed": 8,
    "failed": 0,
    "scope": [
      "argument validation",
      "frame selection",
      "output isolation",
      "existing-output protection",
      "relocated replay preflight",
      "unsupported position rejection",
      "chase numerical clearance",
      "power vote sequence",
      "fight support penetration/floating/missing-actor/NaN rejection"
    ]
  },
  "integration_test": {
    "three_case_test_passed": true,
    "elapsed_s": 96.136,
    "source_timing": "after application-cache redirection, before the fight floor-penetration patch"
  },
  "cases": {
    "chase": {
      "mode": "frames",
      "frames": [
        126
      ],
      "video_sha256": "b8545484e307c1498ef958a5e68dc14eadd46e30909659e08dd9aecdb4dc8b0c",
      "full_sample_file_decode_pass": true,
      "covers_complete_case": false,
      "decoded_frame_count": 1,
      "scene_source_hashes_match_current": true,
      "scene_source_sha256": {
        "assets/cases/chase/build_chase.py": "f584eea023b89f5b5ed941807bf55d620b0efd1ef4b6a8ffd69fd665b392236e",
        "assets/cases/chase/chase_motion.py": "f79aaebd24a406689daae3548276be948d2bccfc1069b23855dc5f5b9c3c4fc1"
      },
      "geometry": {
        "frames_checked": 360,
        "vehicle_min_clearance_m": 0.313942316828811,
        "barrier_min_clearance_m": 0.4,
        "camera_vehicle_min_clearance_m": 0.299999999999967,
        "camera_static_min_clearance_m": 0.882876306772232
      }
    },
    "power": {
      "mode": "frames",
      "frames": [
        534,
        542
      ],
      "video_sha256": "e4b5773d701128f45c85a8dea3e9c39151803c11714e0523fd59e86e7c7d67d4",
      "full_sample_file_decode_pass": true,
      "covers_complete_case": false,
      "decoded_frame_count": 2,
      "scene_source_hashes_match_current": true,
      "scene_source_sha256": {
        "assets/cases/power/build_power.py": "d1fe0c973a810a8d8976b62dd410ead9469b18022a026447e4d2a11e23cf275b",
        "assets/cases/power/power_data.py": "81c3aae6ee4c601bde5ba859247d9748ffb24c65750d1b5f24033b473b947092",
        "assets/cases/power/audit_power.py": "cb2cccd756334b117a65f9a21c96338998ab2934c078bbc4094db799fd5951a1"
      },
      "geometry": {
        "status": "geometry_checks_pass",
        "characters": 6,
        "votes": 6,
        "keys": 1,
        "fixed_seat_displacement_m": 0
      }
    },
    "fight": {
      "mode": "frames",
      "frames": [
        29,
        30,
        31
      ],
      "video_sha256": "6d54f9e51cf35056e05870422f80c9217d584a2aa17d814eaffc744b0c39de14",
      "full_sample_file_decode_pass": true,
      "covers_complete_case": false,
      "decoded_frame_count": 3,
      "scene_source_hashes_match_current": true,
      "scene_source_sha256": {
        "assets/cases/fight/build_fight.py": "34a29ce5f00fcbdfc23fa5fc31aa4fdec76821e712e1e2db34f38ef81749cee7",
        "assets/cases/fight/compile_fight.py": "91cb50ffd8da4da275ec5b35f6d8655212408eb189bb28ac842b3e4491a75630",
        "assets/cases/fight/fight_checks.py": "85e080956b74a60b54001827b30499f19f525a1a2887111a3d291e22aef256c8"
      },
      "geometry": {
        "numeric_gates_passed": 10
      }
    }
  },
  "final_replay": {
    "case": "fight",
    "mode": "frames",
    "frames": [
      29,
      30,
      31
    ],
    "source_relocation_and_unrelated_working_directory": true,
    "all_current_runtime_source_hashes_match": true,
    "source_sha256": {
      "assets/cases/fight/build_fight.py": "34a29ce5f00fcbdfc23fa5fc31aa4fdec76821e712e1e2db34f38ef81749cee7",
      "assets/cases/fight/compile_fight.py": "91cb50ffd8da4da275ec5b35f6d8655212408eb189bb28ac842b3e4491a75630",
      "assets/cases/fight/fight_checks.py": "85e080956b74a60b54001827b30499f19f525a1a2887111a3d291e22aef256c8",
      "scripts/run_case.py": "40aed6418362531c74ff59a5fe6330d009a4c20536477b59d5725584c61f8e48",
      "scripts/case_catalog.py": "5ecf6dfdc8d01e61e998c1c25366e6b8d4d7a1e93e60bf3a14aaa1b8fc9359c6",
      "scripts/blender_case_adapter.py": "ecc7f06146cd332e47781f9a9d71f17d12ec5e72f09ee4800cac41dc4ea1d94c"
    }
  },
  "regression": {
    "original_48_force_support_times_pass": true,
    "injected_minus_0_2m_support_penetration_rejected": true,
    "final_fight_replay_ten_numeric_gates_pass": true
  },
  "limitations": [
    "Only selected frames were raster-rendered in this packaging verification; all case numerical timelines were rebuilt.",
    "The new full-render CLI branch was not rerendered for every full-length movie in this verification.",
    "Decoded keyframes do not establish continuous playback review.",
    "User acceptance and final AI-video generation remain pending/not run.",
    "Three authored templates are supported; arbitrary prompt, position, action and duration inputs are not supported.",
    "System skill quick_validate could not run in the checked Python runtimes because PyYAML was unavailable."
  ],
  "package_source_sha256": {
    "agents/openai.yaml": "907b663a916b7272f1cb975010f98b1d25108b57299eea8e0b0f9f9eb747756e",
    "assets/cases/chase/build_chase.py": "f584eea023b89f5b5ed941807bf55d620b0efd1ef4b6a8ffd69fd665b392236e",
    "assets/cases/chase/chase_motion.py": "f79aaebd24a406689daae3548276be948d2bccfc1069b23855dc5f5b9c3c4fc1",
    "assets/cases/fight/build_fight.py": "34a29ce5f00fcbdfc23fa5fc31aa4fdec76821e712e1e2db34f38ef81749cee7",
    "assets/cases/fight/compile_fight.py": "91cb50ffd8da4da275ec5b35f6d8655212408eb189bb28ac842b3e4491a75630",
    "assets/cases/fight/fight_checks.py": "85e080956b74a60b54001827b30499f19f525a1a2887111a3d291e22aef256c8",
    "assets/cases/power/audit_power.py": "cb2cccd756334b117a65f9a21c96338998ab2934c078bbc4094db799fd5951a1",
    "assets/cases/power/build_power.py": "d1fe0c973a810a8d8976b62dd410ead9469b18022a026447e4d2a11e23cf275b",
    "assets/cases/power/power_data.py": "81c3aae6ee4c601bde5ba859247d9748ffb24c65750d1b5f24033b473b947092",
    "assets/sample-previs.json": "e3f68de5d64c8938e34f1359f4fc3067d42600f26202597cdf426298e5ede5f6",
    "references/original-cases.md": "14f5e4a10b863bb735c3bd9f69a7ee60f310c967649c251c1c41966217429874",
    "references/previs-spec.md": "4b281a1db6499baf1fd5ca4a068588da833ade6dcec697f3ca42030f1b8858dd",
    "references/prompt-to-previs.md": "87dd808dc7d57698cfb0e61d3ea6eac9b6f1aab1801e30358a468320fcb2dcd1",
    "scripts/blender_case_adapter.py": "ecc7f06146cd332e47781f9a9d71f17d12ec5e72f09ee4800cac41dc4ea1d94c",
    "scripts/blender_previs_adapter.py": "9f6324340de0a18f36dfbc1c5751746eb8798d60ec082248be6040a2d79cfcda",
    "scripts/blender_rigged_fight_adapter.py": "b815c9f9e6136c0edf031ee5b4c74bfc67b9aaac6e8c09951ad8e693bf30f97e",
    "scripts/case_catalog.py": "5ecf6dfdc8d01e61e998c1c25366e6b8d4d7a1e93e60bf3a14aaa1b8fc9359c6",
    "scripts/render_previs.py": "035b2e44536265240dae04ae3d5a8fc6b74595b0aac904573b8eaa8b7a16c020",
    "scripts/run_blender_previs.py": "c58806d662fe0414fcdb0d2a50af77d300285fea358157159c3b4bfeb74db77f",
    "scripts/run_blender_rigged_fight.py": "4cf7edcb4d93288065a1c8fc75437ce6a77a7a6414d58344c194931c5d3bac59",
    "scripts/run_case.py": "40aed6418362531c74ff59a5fe6330d009a4c20536477b59d5725584c61f8e48",
    "scripts/validate_compiled_previs.py": "81e03ae93c0560859c8b7f74c3fe6e6d849d5e47dac5b7c04b3b245b8b96634d",
    "scripts/validate_spec.py": "39e08ab46b4d3d633285ed873654ec674a9e3124453c8b76c480a6c7d8130f44",
    "SKILL.md": "5ef950aad1acd02148660747050c0f724d2abc94db9862a9759d77f3f8a3356f"
  },
  "test_source_sha256": "c99cd4490985cca7782e9d77eaa12aa93a7eea8ac83a28527252269bc8720916"
}
