{
  "schema": "NEXPROD01_V44_SHOULDER_CLAVICLE_ANCHOR_SEAL_REPORT",
  "generatedAt": "2026-06-23T09:13:55.459894Z",
  "runtimeVersion": "NEXPROD01_RUNTIME_V44_SHOULDER_CLAVICLE_ANCHOR_SEAL_2026_06_23",
  "scope": "Minimal patch on existing NexProd01 runtime/player/testhost, no new test page, no new normalizer rewrite.",
  "rootCause": "V43 still allowed the public lateral clavicle/acromion landmark to behave as a second shoulder point beyond the shoulder/upperarm anchor. In overlay this created a free clavicle->upperarm stub; in push-up/goblet it looked like the outer clavicle was not attached to the shoulder.",
  "fixes": [
    "Build shoulder/upperarm anchor directly from Spine02 using raw IK shoulder direction and Nex direct rest distance.",
    "Seal L/R_Clavicle target to L/R_Upperarm as a lateral clavicle/acromion visual alias.",
    "Keep NEX_AUX_L/R_MEDIAL_CLAVICLE as the only medial clavicle branch anchors for internal branch fitting.",
    "Remove zero-length clavicle->upperarm aim segment from the final one-writer commit.",
    "Update overlay edges to draw Spine02->Upperarm directly, then Upperarm->Forearm->Hand."
  ],
  "validation": {
    "caseCount": 13,
    "pass": 13,
    "ikNexTruthPass": 13,
    "morphologyPass": 13,
    "hingeIntegrityPass": 13,
    "biomechPass": 13,
    "ikSourceLockPass": 13,
    "directionPass": 13,
    "strictDirectionPass": 13,
    "strictNormalizationPass": 13,
    "landmarkCanonicalPass": 13,
    "semanticIkLandmarkPointPass": 1,
    "semanticVirtualReadbackPass": 13,
    "branchShapePass": 13,
    "branchAnchorPass": 0,
    "contactPass": 13,
    "noFlyPass": 13,
    "gates": {
      "finalRuntimeWriterCount": 1,
      "externalWriterCount": 0,
      "noCGVWriter": true,
      "noV07Writer": true,
      "noRenderHold": true
    },
    "minDotWorst": 1,
    "worstCanonicalLandmarkAvg": 0.08691,
    "worstSemanticIkLandmarkMax": 0.14517,
    "worstSemanticVirtualReadbackMax": 0,
    "worstCanonicalLandmarkMax": 0.24365,
    "worstIkNexPointMax": 5e-05,
    "worstIkNexAngleMax": 0,
    "worstMorphologyDriftCm": 0.01,
    "morphologyFailCases": [],
    "hingeFailCases": [],
    "biomechFailCases": [],
    "ikSourceLockFailCases": []
  },
  "diagnosticsKept": {
    "branchAnchorPass": "still diagnostic only; raw FBX bone origins may remain offset from semantic landmarks",
    "semanticIkLandmarkPointPass": "raw bone-origin map diagnostic can remain low; final IK truth uses semantic actual readback"
  },
  "patchedFiles": [
    "assets/nexprod/nexprod01-runtime-candidate.mjs",
    "assets/nexprod/nexprod01-player.html",
    "tools/nexprod01-player-testhost-v03.html",
    "assets/nexprod/nexprod01-parity-sandbox-truth-v03d.json",
    "assets/nexprod/nexprod01-v44-shoulder-clavicle-anchor-seal-report.json"
  ],
  "publicTestUrls": {
    "pushups": "https://nextnarvik.no/next11/tools/nexprod01-player-testhost-v03.html?exercise=push-up&caseId=pushup_bottom&phase=0.968&play=0&debug=1&v=v44&nativeRuntimeParity=1&visualMode=overlay",
    "goblet": "https://nextnarvik.no/next11/tools/nexprod01-player-testhost-v03.html?exercise=goblet-squat&caseId=goblet_bottom&phase=0.125&play=0&debug=1&v=v44&nativeRuntimeParity=1&visualMode=overlay",
    "bodyweightSquat": "https://nextnarvik.no/next11/tools/nexprod01-player-testhost-v03.html?exercise=bodyweight-squat&caseId=bodyweight_squat_bottom&phase=0.667&play=0&debug=1&v=v44&nativeRuntimeParity=1&visualMode=overlay"
  }
}