{
  "schema": "NEXT11_V417_WAITERS_BOW_DIFF_AUDIT_V1",
  "baseCheckpoint": "V416_EXERCISE_MEDIA_BACKFILL_FULL_ROOT",
  "targetCheckpoint": "V417_WAITERS_BOW_CANONICAL_VIDEO_TIMED",
  "pass": true,
  "changedExistingFiles": [
    "CURRENT_STATE.json",
    "assets/js/core/video-registry.js",
    "assets/js/data/nex-exercise-sequences.js",
    "assets/js/data/nex-exercise-sequences.json",
    "assets/js/data/nex-ik-animation-profiles.js",
    "assets/js/data/nex-ik-animation-profiles.json",
    "assets/js/data/nex-nexdatah-full-bank-physio-ik-keypose-specs.js",
    "assets/js/data/nex-nexdatah-full-bank-physio-ik-keypose-specs.json"
  ],
  "addedFiles": [
    "CURRENT_STEP_V417_WAITERS_BOW_CANONICAL_VIDEO_TIMED.md",
    "HANDOVER_V417_WAITERS_BOW_CANONICAL_VIDEO_TIMED.md",
    "START_HERE_V417_WAITERS_BOW_CANONICAL_VIDEO_TIMED.md",
    "assets/media/exercises/waiters-bows/source/NEXT11_dynamic_warmup_ijj7TD0DA6Q_waiters-bows.MOV",
    "assets/media/exercises/waiters-bows/video-manifest.json",
    "assets/media/exercises/waiters-bows/waiters-bows.mp4",
    "assets/nexprod/nexprod01-resolved-playback-v417.mjs",
    "assets/nexprod/nexprod01-resolved-player-v417.html",
    "assets/nexprod/resolved/waiters-bows-v417-canonical-video-timed.resolved.json",
    "config/visual_qa/v417_waiters_bow_cases.json",
    "diagnostics/v417/V417_WAITERS_BOW_BUILD_REPORT.json",
    "diagnostics/v417/V417_WAITERS_BOW_CHROMIUM_OPENGL_AGGREGATE_QA.json",
    "diagnostics/v417/V417_WAITERS_BOW_CHROMIUM_OPENGL_MULTIVIEW_CONTACT.jpg",
    "diagnostics/v417/V417_WAITERS_BOW_DIFF_AUDIT.json",
    "diagnostics/v417/V417_WAITERS_BOW_FINAL_QA_REPORT.md",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_left_bottom_front_CHROMIUM_OPENGL.json",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_left_bottom_front_CHROMIUM_OPENGL.png",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_left_bottom_left_side_CHROMIUM_OPENGL.json",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_left_bottom_left_side_CHROMIUM_OPENGL.png",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_left_bottom_rear_CHROMIUM_OPENGL.json",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_left_bottom_rear_CHROMIUM_OPENGL.png",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_left_bottom_right_side_CHROMIUM_OPENGL.json",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_left_bottom_right_side_CHROMIUM_OPENGL.png",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_right_bottom_front_CHROMIUM_OPENGL.json",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_right_bottom_front_CHROMIUM_OPENGL.png",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_right_bottom_left_side_CHROMIUM_OPENGL.json",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_right_bottom_left_side_CHROMIUM_OPENGL.png",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_right_bottom_rear_CHROMIUM_OPENGL.json",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_right_bottom_rear_CHROMIUM_OPENGL.png",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_right_bottom_right_side_CHROMIUM_OPENGL.json",
    "diagnostics/v417/chromium_opengl/V417_WAITERS_BOW_right_bottom_right_side_CHROMIUM_OPENGL.png",
    "tools/nexprod/build_v417_waiters_bow.mjs"
  ],
  "removedFiles": [],
  "semanticScope": {
    "sequenceStepsChanged": [
      "waiters-bows"
    ],
    "animationProfilesChanged": [
      "warmup_waiters_bow_ik_v1"
    ],
    "canonicalIkProfilesChangedJson": [
      "warmup_waiters_bow_ik_v1"
    ],
    "canonicalIkProfilesChangedJs": [
      "warmup_waiters_bow_ik_v1"
    ],
    "canonicalJsTopLevelChanges": [],
    "unrelatedCanonicalIkSemanticChanges": []
  },
  "rules": {
    "newSolver": false,
    "runtimePrimitive": false,
    "postSolveOverrides": 0,
    "approvedPriorNexAnimationsModified": false,
    "playerServiceModified": false,
    "videoServiceModified": false
  },
  "notes": [
    "The generated canonical JS was surgically repaired so V416 content is preserved verbatim outside warmup_waiters_bow_ik_v1.",
    "V417 resolved-playback module is the same generic non-presentation playback logic already used by V395/V398/V399/V400/V401/V405, with only its version constant changed.",
    "Regular exercise-player/video-service runtime is unchanged; Waiter's bows is added through the existing registry/data path."
  ]
}
