{
  "schema": "NEXPROD01_V43_SEMANTIC_ACTUAL_TRUTH_GATE_SANDBOX_REPORT",
  "generatedAt": "2026-06-23T08:46:59Z",
  "runtimeVersion": "NEXPROD01_RUNTIME_V43_SEMANTIC_ACTUAL_TRUTH_GATE_2026_06_23",
  "scope": "Minimal patch to existing NEXPROD01 runtime/testhost; no standalone test page and no NormIK target rewrite.",
  "rootCauseFixed": [
    "V42 compared IK/MediaPipe-style landmarks directly against raw FBX bone origins; V43 separates raw bone-origin diagnostics from semantic actual landmark truth.",
    "V42 branchRigidFit units were labeled as cm but stored as meters; V43 reports actual cm and correctly keeps raw branch anchor as diagnostic fail where offsets are 5-12 cm.",
    "V42 strictNormalization failed on declared V41 head-anchored shoulder semantic edge; V43 classifies Spine02->Upperarm as a semantic edge while distal chains remain strict raw IK direction preservation.",
    "V42 contact selection could promote hands/lifted feet by generic low-height inference; V43 uses canonical IK contactRules as allowed groups and exact-frame IK height as active support selector, then gates contact on semantic actual readback."
  ],
  "bodyweightProbe": {
    "caseId": "bodyweight_squat_bottom",
    "profileId": "bodyweight_squat_ik_v1",
    "phase": 0.667,
    "pass": true,
    "gates": {
      "directionPass": true,
      "strictDirectionPass": true,
      "landmarkCanonicalPass": true,
      "landmarkRawShiftedPass": false,
      "contactPass": true,
      "noFly": true,
      "oneWriter": true,
      "ikSourceLockPass": true,
      "ikNexTruthPass": true,
      "morphologyPass": true,
      "hingeIntegrityPass": true,
      "biomechPass": true,
      "rawIkFidelityPass": false,
      "runtimeTargetSelfComparePass": true,
      "rawBoneOriginTruthPass": false,
      "semanticActualTruthPass": true,
      "strictNormalizationPass": true,
      "semanticIkLandmarkPointPass": false,
      "semanticVirtualReadbackPass": true,
      "branchShapePass": true,
      "branchAnchorPass": false
    }
  },
  "focusBankSummary": {
    "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": 5,
    "branchAnchorPass": 0,
    "contactPass": 13,
    "noFlyPass": 13,
    "gates": {
      "finalRuntimeWriterCount": 1,
      "externalWriterCount": 0,
      "noCGVWriter": true,
      "noV07Writer": true,
      "noRenderHold": true
    },
    "minDotWorst": 1,
    "worstCanonicalLandmarkAvg": 0.09441,
    "worstSemanticIkLandmarkMax": 0.18431,
    "worstSemanticVirtualReadbackMax": 0,
    "worstCanonicalLandmarkMax": 0.20981,
    "worstIkNexPointMax": 3e-05,
    "worstIkNexAngleMax": 0,
    "worstMorphologyDriftCm": 0,
    "morphologyFailCases": [],
    "hingeFailCases": [],
    "biomechFailCases": [],
    "ikSourceLockFailCases": []
  },
  "importantDiagnosticsKeptAsExpected": {
    "rawBoneOriginTruthPass": "expected false for cases where bone origin != IK/MediaPipe landmark; diagnostic only",
    "branchAnchorPass": "expected false after unit fix when raw bone-origin branch anchor is offset; diagnostic only",
    "semanticIkLandmarkPointPass": "old raw semantic map remains diagnostic and not final truth"
  },
  "publicTestUrl": "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=v43&nativeRuntimeParity=1&visualMode=overlay",
  "patchedFiles": [
    "assets/nexprod/nexprod01-runtime-candidate.mjs",
    "assets/nexprod/nexprod01-player.html",
    "tools/nexprod01-player-testhost-v03.html",
    "assets/nexprod/nexprod01-v43-semantic-actual-truth-gate-sandbox-report.json",
    "README_NEXPROD01_PLAYER_TESTHOST_V43_SEMANTIC_ACTUAL_TRUTH_GATE_2026_06_23.md"
  ]
}