[System] You are Pozify's grounded coach-summary model. Use only the provided structured evidence and knowledge cards. Return coach_summary.json as JSON only.

[User]
{
  "user_profile": {
    "goal": "beginner_practice",
    "experience_level": "beginner",
    "intended_exercise": "auto",
    "intended_variation": null,
    "known_limitations": [],
    "equipment": "bodyweight"
  },
  "exercise_classification": {
    "exercise": "squat",
    "confidence": 0.9998,
    "fallback_required": false
  },
  "variation": {
    "exercise": "squat",
    "detected_variation": "pause_squat",
    "variation_confidence": 0.95,
    "not_issues": [
      "bottom_pause",
      "low_rom_requires_user_intent_check"
    ]
  },
  "rep_summary": {
    "rep_count": 15,
    "aggregate_metrics": {
      "avg_rom_score": 0.54,
      "avg_stability_score": 0.07,
      "avg_symmetry_score": 0.87,
      "avg_rep_duration_sec": 2.23,
      "avg_tempo_consistency_score": 0.91,
      "avg_landmark_confidence": 0.958,
      "fatigue_trend_rom_delta": -0.04,
      "pose_valid_ratio": 1.0,
      "avg_stance_width_ratio": 1.3553,
      "avg_bottom_pause_sec": 2.2647
    },
    "rep_metrics": [
      {
        "rep_id": 1,
        "duration_sec": 2.1,
        "range_of_motion_score": 0.55,
        "stability_score": 0.0,
        "symmetry_score": 0.84,
        "metrics": {
          "rep_duration_sec": 2.1,
          "eccentric_duration_sec": 1.33,
          "concentric_duration_sec": 0.77,
          "tempo_ratio": 1.73,
          "top_pause_sec": 2.13,
          "bottom_pause_sec": 2.13,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.96,
          "hip_lateral_drift": 0.0001,
          "min_knee_angle_deg": 96.19,
          "max_knee_angle_deg": 163.71,
          "min_hip_angle_deg": 85.24,
          "max_hip_angle_deg": 164.04,
          "hip_depth_delta": -0.6171,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 21.76,
          "knee_valgus_proxy": 0.1512,
          "knee_tracking_score": 0.85,
          "stance_width_ratio": 1.386,
          "hip_shift": 0.0001,
          "bottom_stability_score": 0.0,
          "tempo_consistency_score": 0.94
        },
        "variation_hints": [
          "wide_squat_stance"
        ]
      },
      {
        "rep_id": 2,
        "duration_sec": 2.2,
        "range_of_motion_score": 0.53,
        "stability_score": 0.04,
        "symmetry_score": 0.86,
        "metrics": {
          "rep_duration_sec": 2.2,
          "eccentric_duration_sec": 1.37,
          "concentric_duration_sec": 0.83,
          "tempo_ratio": 1.65,
          "top_pause_sec": 2.23,
          "bottom_pause_sec": 2.23,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 99.1,
          "max_knee_angle_deg": 162.09,
          "min_hip_angle_deg": 84.93,
          "max_hip_angle_deg": 162.94,
          "hip_depth_delta": -0.6307,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 28.59,
          "knee_valgus_proxy": 0.1463,
          "knee_tracking_score": 0.85,
          "stance_width_ratio": 1.335,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.04,
          "tempo_consistency_score": 0.99
        },
        "variation_hints": []
      },
      {
        "rep_id": 3,
        "duration_sec": 2.17,
        "range_of_motion_score": 0.55,
        "stability_score": 0.0,
        "symmetry_score": 0.86,
        "metrics": {
          "rep_duration_sec": 2.17,
          "eccentric_duration_sec": 1.23,
          "concentric_duration_sec": 0.93,
          "tempo_ratio": 1.32,
          "top_pause_sec": 2.2,
          "bottom_pause_sec": 2.2,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 87.55,
          "max_knee_angle_deg": 162.39,
          "min_hip_angle_deg": 76.5,
          "max_hip_angle_deg": 162.61,
          "hip_depth_delta": -0.5711,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 26.66,
          "knee_valgus_proxy": 0.1076,
          "knee_tracking_score": 0.89,
          "stance_width_ratio": 1.315,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.0,
          "tempo_consistency_score": 0.97
        },
        "variation_hints": []
      },
      {
        "rep_id": 4,
        "duration_sec": 2.17,
        "range_of_motion_score": 0.55,
        "stability_score": 0.0,
        "symmetry_score": 0.85,
        "metrics": {
          "rep_duration_sec": 2.17,
          "eccentric_duration_sec": 1.3,
          "concentric_duration_sec": 0.87,
          "tempo_ratio": 1.49,
          "top_pause_sec": 2.2,
          "bottom_pause_sec": 2.2,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.96,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 90.33,
          "max_knee_angle_deg": 163.12,
          "min_hip_angle_deg": 82.42,
          "max_hip_angle_deg": 163.05,
          "hip_depth_delta": -0.5921,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 18.77,
          "knee_valgus_proxy": 0.1416,
          "knee_tracking_score": 0.86,
          "stance_width_ratio": 1.316,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.0,
          "tempo_consistency_score": 0.97
        },
        "variation_hints": []
      },
      {
        "rep_id": 5,
        "duration_sec": 1.83,
        "range_of_motion_score": 0.54,
        "stability_score": 0.04,
        "symmetry_score": 0.84,
        "metrics": {
          "rep_duration_sec": 1.83,
          "eccentric_duration_sec": 1.27,
          "concentric_duration_sec": 0.57,
          "tempo_ratio": 2.23,
          "top_pause_sec": 1.87,
          "bottom_pause_sec": 1.87,
          "smoothness_score": 1.0,
          "jerk_score": 0.0,
          "landmark_confidence": 0.96,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 96.59,
          "max_knee_angle_deg": 160.43,
          "min_hip_angle_deg": 85.06,
          "max_hip_angle_deg": 161.07,
          "hip_depth_delta": -0.5894,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 19.31,
          "knee_valgus_proxy": 0.1537,
          "knee_tracking_score": 0.85,
          "stance_width_ratio": 1.418,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.04,
          "tempo_consistency_score": 0.82
        },
        "variation_hints": [
          "wide_squat_stance"
        ]
      },
      {
        "rep_id": 6,
        "duration_sec": 2.6,
        "range_of_motion_score": 0.55,
        "stability_score": 0.08,
        "symmetry_score": 0.88,
        "metrics": {
          "rep_duration_sec": 2.6,
          "eccentric_duration_sec": 1.67,
          "concentric_duration_sec": 0.93,
          "tempo_ratio": 1.8,
          "top_pause_sec": 2.63,
          "bottom_pause_sec": 2.63,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.96,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 94.19,
          "max_knee_angle_deg": 162.37,
          "min_hip_angle_deg": 79.55,
          "max_hip_angle_deg": 161.19,
          "hip_depth_delta": -0.6127,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 26.92,
          "knee_valgus_proxy": 0.1704,
          "knee_tracking_score": 0.83,
          "stance_width_ratio": 1.378,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.08,
          "tempo_consistency_score": 0.83
        },
        "variation_hints": [
          "wide_squat_stance"
        ]
      },
      {
        "rep_id": 7,
        "duration_sec": 2.2,
        "range_of_motion_score": 0.55,
        "stability_score": 0.0,
        "symmetry_score": 0.83,
        "metrics": {
          "rep_duration_sec": 2.2,
          "eccentric_duration_sec": 1.27,
          "concentric_duration_sec": 0.93,
          "tempo_ratio": 1.37,
          "top_pause_sec": 2.23,
          "bottom_pause_sec": 2.23,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.97,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 94.09,
          "max_knee_angle_deg": 161.48,
          "min_hip_angle_deg": 81.4,
          "max_hip_angle_deg": 165.6,
          "hip_depth_delta": -0.577,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 23.81,
          "knee_valgus_proxy": 0.1371,
          "knee_tracking_score": 0.86,
          "stance_width_ratio": 1.337,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.0,
          "tempo_consistency_score": 0.99
        },
        "variation_hints": []
      },
      {
        "rep_id": 8,
        "duration_sec": 2.23,
        "range_of_motion_score": 0.55,
        "stability_score": 0.01,
        "symmetry_score": 0.83,
        "metrics": {
          "rep_duration_sec": 2.23,
          "eccentric_duration_sec": 1.37,
          "concentric_duration_sec": 0.87,
          "tempo_ratio": 1.57,
          "top_pause_sec": 2.27,
          "bottom_pause_sec": 2.27,
          "smoothness_score": 1.0,
          "jerk_score": 0.0,
          "landmark_confidence": 0.96,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 94.8,
          "max_knee_angle_deg": 162.43,
          "min_hip_angle_deg": 81.09,
          "max_hip_angle_deg": 164.89,
          "hip_depth_delta": -0.6032,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 25.52,
          "knee_valgus_proxy": 0.1378,
          "knee_tracking_score": 0.86,
          "stance_width_ratio": 1.342,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.01,
          "tempo_consistency_score": 1.0
        },
        "variation_hints": []
      },
      {
        "rep_id": 9,
        "duration_sec": 2.03,
        "range_of_motion_score": 0.55,
        "stability_score": 0.0,
        "symmetry_score": 0.84,
        "metrics": {
          "rep_duration_sec": 2.03,
          "eccentric_duration_sec": 1.37,
          "concentric_duration_sec": 0.67,
          "tempo_ratio": 2.04,
          "top_pause_sec": 2.07,
          "bottom_pause_sec": 2.07,
          "smoothness_score": 1.0,
          "jerk_score": 0.0,
          "landmark_confidence": 0.97,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 95.63,
          "max_knee_angle_deg": 160.52,
          "min_hip_angle_deg": 81.17,
          "max_hip_angle_deg": 162.13,
          "hip_depth_delta": -0.5786,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 22.82,
          "knee_valgus_proxy": 0.1267,
          "knee_tracking_score": 0.87,
          "stance_width_ratio": 1.33,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.0,
          "tempo_consistency_score": 0.91
        },
        "variation_hints": []
      },
      {
        "rep_id": 10,
        "duration_sec": 2.93,
        "range_of_motion_score": 0.54,
        "stability_score": 0.17,
        "symmetry_score": 0.9,
        "metrics": {
          "rep_duration_sec": 2.93,
          "eccentric_duration_sec": 1.87,
          "concentric_duration_sec": 1.07,
          "tempo_ratio": 1.75,
          "top_pause_sec": 2.97,
          "bottom_pause_sec": 2.97,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 98.58,
          "max_knee_angle_deg": 162.44,
          "min_hip_angle_deg": 84.72,
          "max_hip_angle_deg": 163.4,
          "hip_depth_delta": -0.6712,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 27.82,
          "knee_valgus_proxy": 0.1913,
          "knee_tracking_score": 0.81,
          "stance_width_ratio": 1.343,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.17,
          "tempo_consistency_score": 0.69
        },
        "variation_hints": []
      },
      {
        "rep_id": 11,
        "duration_sec": 1.77,
        "range_of_motion_score": 0.55,
        "stability_score": 0.26,
        "symmetry_score": 0.92,
        "metrics": {
          "rep_duration_sec": 1.77,
          "eccentric_duration_sec": 0.93,
          "concentric_duration_sec": 0.83,
          "tempo_ratio": 1.12,
          "top_pause_sec": 1.8,
          "bottom_pause_sec": 1.8,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.97,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 96.88,
          "max_knee_angle_deg": 162.92,
          "min_hip_angle_deg": 82.84,
          "max_hip_angle_deg": 163.4,
          "hip_depth_delta": -0.5249,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 24.58,
          "knee_valgus_proxy": 0.1871,
          "knee_tracking_score": 0.81,
          "stance_width_ratio": 1.415,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.26,
          "tempo_consistency_score": 0.79
        },
        "variation_hints": [
          "wide_squat_stance"
        ]
      },
      {
        "rep_id": 12,
        "duration_sec": 2.53,
        "range_of_motion_score": 0.55,
        "stability_score": 0.09,
        "symmetry_score": 0.89,
        "metrics": {
          "rep_duration_sec": 2.53,
          "eccentric_duration_sec": 1.6,
          "concentric_duration_sec": 0.93,
          "tempo_ratio": 1.72,
          "top_pause_sec": 2.57,
          "bottom_pause_sec": 2.57,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.96,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 94.09,
          "max_knee_angle_deg": 161.11,
          "min_hip_angle_deg": 80.71,
          "max_hip_angle_deg": 161.03,
          "hip_depth_delta": -0.5969,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 24.77,
          "knee_valgus_proxy": 0.1864,
          "knee_tracking_score": 0.81,
          "stance_width_ratio": 1.355,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.09,
          "tempo_consistency_score": 0.87
        },
        "variation_hints": [
          "wide_squat_stance"
        ]
      },
      {
        "rep_id": 13,
        "duration_sec": 2.17,
        "range_of_motion_score": 0.55,
        "stability_score": 0.16,
        "symmetry_score": 0.89,
        "metrics": {
          "rep_duration_sec": 2.17,
          "eccentric_duration_sec": 1.4,
          "concentric_duration_sec": 0.77,
          "tempo_ratio": 1.82,
          "top_pause_sec": 2.2,
          "bottom_pause_sec": 2.2,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.96,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 89.57,
          "max_knee_angle_deg": 161.33,
          "min_hip_angle_deg": 77.8,
          "max_hip_angle_deg": 162.56,
          "hip_depth_delta": -0.5769,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 22.94,
          "knee_valgus_proxy": 0.1902,
          "knee_tracking_score": 0.81,
          "stance_width_ratio": 1.333,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.16,
          "tempo_consistency_score": 0.97
        },
        "variation_hints": []
      },
      {
        "rep_id": 14,
        "duration_sec": 2.17,
        "range_of_motion_score": 0.53,
        "stability_score": 0.03,
        "symmetry_score": 0.91,
        "metrics": {
          "rep_duration_sec": 2.17,
          "eccentric_duration_sec": 1.3,
          "concentric_duration_sec": 0.87,
          "tempo_ratio": 1.49,
          "top_pause_sec": 2.2,
          "bottom_pause_sec": 2.2,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.96,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 98.66,
          "max_knee_angle_deg": 161.7,
          "min_hip_angle_deg": 88.13,
          "max_hip_angle_deg": 160.04,
          "hip_depth_delta": -0.5895,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 20.19,
          "knee_valgus_proxy": 0.1759,
          "knee_tracking_score": 0.82,
          "stance_width_ratio": 1.35,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.03,
          "tempo_consistency_score": 0.97
        },
        "variation_hints": []
      },
      {
        "rep_id": 15,
        "duration_sec": 2.37,
        "range_of_motion_score": 0.51,
        "stability_score": 0.15,
        "symmetry_score": 0.86,
        "metrics": {
          "rep_duration_sec": 2.37,
          "eccentric_duration_sec": 1.4,
          "concentric_duration_sec": 0.97,
          "tempo_ratio": 1.44,
          "top_pause_sec": 2.4,
          "bottom_pause_sec": 2.4,
          "smoothness_score": 1.0,
          "jerk_score": 0.0001,
          "landmark_confidence": 0.93,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": 102.5,
          "max_knee_angle_deg": 162.17,
          "min_hip_angle_deg": 93.44,
          "max_hip_angle_deg": 162.79,
          "hip_depth_delta": -0.6438,
          "hip_depth_relative_to_knee": "above_parallel",
          "max_torso_lean_deg": 20.0,
          "knee_valgus_proxy": 0.1904,
          "knee_tracking_score": 0.81,
          "stance_width_ratio": 1.376,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.15,
          "tempo_consistency_score": 0.94
        },
        "variation_hints": [
          "wide_squat_stance"
        ]
      }
    ]
  },
  "issue_summary": {
    "issue_counts": {
      "shallow_depth": 2
    },
    "issues": [
      {
        "rep_id": 4,
        "issue": "shallow_depth",
        "severity": 1.0,
        "start_frame": 210,
        "end_frame": 216,
        "start_sec": 7.0,
        "end_sec": 7.2,
        "affected_joints": [
          "left_hip",
          "right_hip",
          "left_knee",
          "right_knee"
        ],
        "evidence": {
          "hip_depth_delta": -0.745,
          "threshold": -0.03,
          "confidence": 0.48,
          "peak_frame": 210,
          "variation_context": {
            "detected_variation": "pause_squat",
            "variation_confidence": 0.95,
            "not_issues": [
              "bottom_pause",
              "low_rom_requires_user_intent_check"
            ]
          },
          "mean_metric_value": -0.7666,
          "supporting_frames": 7
        }
      },
      {
        "rep_id": 4,
        "issue": "shallow_depth",
        "severity": 1.0,
        "start_frame": 239,
        "end_frame": 245,
        "start_sec": 7.967,
        "end_sec": 8.167,
        "affected_joints": [
          "left_hip",
          "right_hip",
          "left_knee",
          "right_knee"
        ],
        "evidence": {
          "hip_depth_delta": -0.2859,
          "threshold": -0.03,
          "confidence": 0.49,
          "peak_frame": 239,
          "variation_context": {
            "detected_variation": "pause_squat",
            "variation_confidence": 0.95,
            "not_issues": [
              "bottom_pause",
              "low_rom_requires_user_intent_check"
            ]
          },
          "mean_metric_value": -0.4774,
          "supporting_frames": 7
        }
      }
    ],
    "top_issue_intervals": [
      {
        "issue": "shallow_depth",
        "rep_id": 4,
        "severity": 1.0,
        "start_sec": 7.0,
        "end_sec": 7.2,
        "evidence": {
          "hip_depth_delta": -0.745,
          "threshold": -0.03,
          "confidence": 0.48,
          "peak_frame": 210,
          "variation_context": {
            "detected_variation": "pause_squat",
            "variation_confidence": 0.95,
            "not_issues": [
              "bottom_pause",
              "low_rom_requires_user_intent_check"
            ]
          },
          "mean_metric_value": -0.7666,
          "supporting_frames": 7
        }
      },
      {
        "issue": "shallow_depth",
        "rep_id": 4,
        "severity": 1.0,
        "start_sec": 7.967,
        "end_sec": 8.167,
        "evidence": {
          "hip_depth_delta": -0.2859,
          "threshold": -0.03,
          "confidence": 0.49,
          "peak_frame": 239,
          "variation_context": {
            "detected_variation": "pause_squat",
            "variation_confidence": 0.95,
            "not_issues": [
              "bottom_pause",
              "low_rom_requires_user_intent_check"
            ]
          },
          "mean_metric_value": -0.4774,
          "supporting_frames": 7
        }
      }
    ]
  },
  "priority_cues": [
    "Sit slightly deeper before standing up.",
    "Slow the bottom portion so depth stays consistent.",
    "Reference depth, torso control, and rep-to-rep consistency using the measured evidence.",
    "Keep top fixes practical, such as controlling the descent or sitting slightly deeper when `shallow_depth` is present.",
    "Keep language descriptive rather than diagnostic.",
    "Prefer control and repeatability cues that do not assume external load adjustments."
  ],
  "knowledge_cards": [
    {
      "card_id": "exercise:squat",
      "card_type": "exercise",
      "labels": [
        "squat"
      ],
      "title": "Squat",
      "summary": "A squat summary should stay grounded in rep evidence while using standardized execution cues for depth, balance, torso position, and stance context.",
      "evidence_rules": [
        "Use rep analysis and issue markers instead of inferring directly from the video.",
        "Describe squat depth, torso control, and balance only when supported by structured evidence.",
        "Treat stance-width context as a valid variation unless issue markers show a separate problem."
      ],
      "coaching_points": [
        "Reference depth, torso control, and rep-to-rep consistency using the measured evidence.",
        "Keep top fixes practical, such as controlling the descent or sitting slightly deeper when `shallow_depth` is present.",
        "Keep language descriptive rather than diagnostic."
      ],
      "allowed_interpretations": [
        "Target muscles commonly include quads and glutes, but coaching should remain focused on the observed movement evidence."
      ],
      "forbidden_claims": [],
      "related_cards": [
        "issue:shallow_depth",
        "issue:excessive_torso_lean"
      ],
      "source_kind": "external",
      "source_path": "/Users/t/Documents/tihado/formcoach-ai/data/knowledge_cards/grounded_exercise_expansion.json"
    },
    {
      "card_id": "issue:shallow_depth",
      "card_type": "issue",
      "labels": [
        "shallow_depth"
      ],
      "title": "Shallow Depth",
      "summary": "The squat bottom position stayed above the expected depth threshold in the issue markers.",
      "evidence_rules": [
        "Only mention this issue when `shallow_depth` exists in `issue_markers.json`."
      ],
      "coaching_points": [
        "Sit slightly deeper before standing up.",
        "Slow the bottom portion so depth stays consistent."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "equipment:bodyweight",
      "card_type": "equipment",
      "labels": [
        "bodyweight"
      ],
      "title": "Bodyweight Context",
      "summary": "Bodyweight sessions should keep cues simple and focused on repeatable control.",
      "evidence_rules": [
        "Treat equipment as context for cue wording, not as a new issue."
      ],
      "coaching_points": [
        "Prefer control and repeatability cues that do not assume external load adjustments."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "goal:beginner_practice",
      "card_type": "goal",
      "labels": [
        "beginner_practice"
      ],
      "title": "Beginner Practice Goal",
      "summary": "Beginner practice coaching should stay simple, encouraging, and concrete.",
      "evidence_rules": [
        "Limit the number of corrections in a single summary."
      ],
      "coaching_points": [
        "Pick the top one or two form priorities for next time."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "goal_overlay:squat:beginner_practice",
      "card_type": "goal_overlay",
      "labels": [
        "squat:beginner_practice"
      ],
      "title": "Squat Beginner Overlay",
      "summary": "For beginner-practice squats, keep the tone encouraging and corrections minimal.",
      "evidence_rules": [
        "Use this overlay only as a prioritization hint for the detected exercise and goal."
      ],
      "coaching_points": [
        "Explain what looked stable before introducing the top squat fix.",
        "Use simple depth or balance language rather than stacking many cues."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:grounded_only",
      "card_type": "safety_rule",
      "labels": [
        "grounded_only"
      ],
      "title": "Grounded Only",
      "summary": "The summary must explain only the structured evidence and retrieved knowledge cards.",
      "evidence_rules": [
        "Do not infer new issues that are absent from JSON."
      ],
      "coaching_points": [
        "State confidence limits when the evidence is thin."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:no_diagnosis",
      "card_type": "safety_rule",
      "labels": [
        "no_diagnosis"
      ],
      "title": "No Diagnosis",
      "summary": "The summary must not diagnose pain, injury, imbalance, mobility deficits, or pathology.",
      "evidence_rules": [
        "Do not use diagnostic language."
      ],
      "coaching_points": [
        "Use uncertainty language when evidence is limited."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [
        "diagnosis",
        "injury",
        "pathology",
        "medical assessment"
      ],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:no_injury_prevention_claim",
      "card_type": "safety_rule",
      "labels": [
        "no_injury_prevention_claim"
      ],
      "title": "No Injury Prevention Claim",
      "summary": "The summary must not claim that a cue will prevent injury.",
      "evidence_rules": [
        "Do not promise injury prevention."
      ],
      "coaching_points": [
        "Keep coaching language descriptive and performance-focused."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [
        "injury prevention",
        "prevent injury"
      ],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:variation_not_issue",
      "card_type": "safety_rule",
      "labels": [
        "variation_not_issue"
      ],
      "title": "Variation Is Not Automatically An Issue",
      "summary": "A detected variation or listed not-issue should not be overcorrected as a mistake.",
      "evidence_rules": [
        "Keep valid variation context separate from issue language."
      ],
      "coaching_points": [
        "Explain why the variation is treated as context when needed."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    }
  ]
}

[Assistant]
{
  "summary": "This grounded summary is based on structured artifacts for `squat` rather than direct video interpretation. The highest-priority issue labels were `shallow_depth`. The detected variation was `pause_squat`.",
  "what_you_did": [
    "You completed 15 detected `squat` reps with the variation labeled as `pause_squat`.",
    "Your selected training goal was `beginner_practice`."
  ],
  "what_looked_good": [
    "Range of motion showed room to tighten up overall (54%).",
    "Rep stability showed room to tighten up overall (7%).",
    "Left-right symmetry looked steady overall (87%)."
  ],
  "what_changed_across_reps": [
    "Rep-to-rep range stayed fairly stable across the set."
  ],
  "valid_variation_vs_issue": [
    "The detected variation was `pause_squat`, so it should be treated as context rather than a fault by default.",
    "The variation step marked `bottom_pause`, `low_rom_requires_user_intent_check` as not-issue context.",
    "The actual issue markers in this set were `shallow_depth`."
  ],
  "top_fixes": [
    "Sit slightly deeper before standing up."
  ],
  "next_session_plan": [
    "Start with 1 easy set of controlled reps using the same camera angle.",
    "Keep your top focus on `shallow_depth`.",
    "Compare the next run against this report to see whether the same labels show up again."
  ],
  "confidence_notes": [
    "This summary stays grounded to the current JSON evidence and may miss details outside that evidence.",
    "Fallback summary was used because the generated summary did not pass verification: (Request ID: Root=1-6a2e83e3-53d8f957580a494015c269d8;70fc29a0-33b8-48f1-a941-c63054be0d40)\n\n403 Forbidden: This authentication method does not have sufficient permissions to call Inference Providers on behalf of user tiena2cva.\nCannot access content at: https://router.huggingface.co/v1/chat/completions.\nMake sure your token has the correct permissions."
  ]
}


[System] You are Pozify's grounded coach-summary model. Use only the provided structured evidence and knowledge cards. Return coach_summary.json as JSON only.

[User]
{
  "user_profile": {
    "goal": "beginner_practice",
    "experience_level": "beginner",
    "intended_exercise": "auto",
    "intended_variation": null,
    "known_limitations": [],
    "equipment": "bodyweight"
  },
  "exercise_classification": {
    "exercise": "squat",
    "confidence": 0.92,
    "fallback_required": false
  },
  "variation": {
    "exercise": "squat",
    "detected_variation": "pause_squat",
    "variation_confidence": 0.95,
    "not_issues": [
      "bottom_pause",
      "low_rom_requires_user_intent_check"
    ]
  },
  "rep_summary": {
    "rep_count": 10,
    "aggregate_metrics": {
      "avg_rom_score": 0.3,
      "avg_stability_score": 0.86,
      "avg_symmetry_score": 1.0,
      "avg_rep_duration_sec": 2.98,
      "avg_tempo_consistency_score": 0.952,
      "avg_landmark_confidence": 0.95,
      "fatigue_trend_rom_delta": 0.0,
      "pose_valid_ratio": 1.0,
      "avg_stance_width_ratio": 1.0,
      "avg_bottom_pause_sec": 0.846
    },
    "rep_metrics": [
      {
        "rep_id": 1,
        "duration_sec": 2.8,
        "range_of_motion_score": 0.3,
        "stability_score": 0.87,
        "symmetry_score": 1.0,
        "metrics": {
          "rep_duration_sec": 2.8,
          "eccentric_duration_sec": 1.4,
          "concentric_duration_sec": 1.4,
          "tempo_ratio": 1.0,
          "top_pause_sec": 0.56,
          "bottom_pause_sec": 0.84,
          "smoothness_score": 0.88,
          "jerk_score": 0.0149,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": null,
          "max_knee_angle_deg": null,
          "min_hip_angle_deg": null,
          "max_hip_angle_deg": null,
          "hip_depth_delta": 0.0391,
          "hip_depth_relative_to_knee": "below_parallel",
          "max_torso_lean_deg": null,
          "knee_valgus_proxy": 0.0,
          "knee_tracking_score": 1.0,
          "stance_width_ratio": 1.0,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.87,
          "tempo_consistency_score": 0.94
        },
        "variation_hints": []
      },
      {
        "rep_id": 2,
        "duration_sec": 3.1,
        "range_of_motion_score": 0.31,
        "stability_score": 0.86,
        "symmetry_score": 1.0,
        "metrics": {
          "rep_duration_sec": 3.1,
          "eccentric_duration_sec": 1.7,
          "concentric_duration_sec": 1.4,
          "tempo_ratio": 1.21,
          "top_pause_sec": 0.85,
          "bottom_pause_sec": 0.85,
          "smoothness_score": 0.89,
          "jerk_score": 0.0136,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": null,
          "max_knee_angle_deg": null,
          "min_hip_angle_deg": null,
          "max_hip_angle_deg": null,
          "hip_depth_delta": 0.0422,
          "hip_depth_relative_to_knee": "below_parallel",
          "max_torso_lean_deg": null,
          "knee_valgus_proxy": 0.0,
          "knee_tracking_score": 1.0,
          "stance_width_ratio": 1.0,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.86,
          "tempo_consistency_score": 0.96
        },
        "variation_hints": []
      },
      {
        "rep_id": 3,
        "duration_sec": 3.1,
        "range_of_motion_score": 0.29,
        "stability_score": 0.86,
        "symmetry_score": 1.0,
        "metrics": {
          "rep_duration_sec": 3.1,
          "eccentric_duration_sec": 1.4,
          "concentric_duration_sec": 1.7,
          "tempo_ratio": 0.82,
          "top_pause_sec": 0.56,
          "bottom_pause_sec": 0.85,
          "smoothness_score": 0.89,
          "jerk_score": 0.0136,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": null,
          "max_knee_angle_deg": null,
          "min_hip_angle_deg": null,
          "max_hip_angle_deg": null,
          "hip_depth_delta": 0.0373,
          "hip_depth_relative_to_knee": "below_parallel",
          "max_torso_lean_deg": null,
          "knee_valgus_proxy": 0.0,
          "knee_tracking_score": 1.0,
          "stance_width_ratio": 1.0,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.86,
          "tempo_consistency_score": 0.96
        },
        "variation_hints": []
      },
      {
        "rep_id": 4,
        "duration_sec": 2.8,
        "range_of_motion_score": 0.3,
        "stability_score": 0.87,
        "symmetry_score": 1.0,
        "metrics": {
          "rep_duration_sec": 2.8,
          "eccentric_duration_sec": 1.4,
          "concentric_duration_sec": 1.4,
          "tempo_ratio": 1.0,
          "top_pause_sec": 0.56,
          "bottom_pause_sec": 0.84,
          "smoothness_score": 0.88,
          "jerk_score": 0.0149,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": null,
          "max_knee_angle_deg": null,
          "min_hip_angle_deg": null,
          "max_hip_angle_deg": null,
          "hip_depth_delta": 0.0391,
          "hip_depth_relative_to_knee": "below_parallel",
          "max_torso_lean_deg": null,
          "knee_valgus_proxy": 0.0,
          "knee_tracking_score": 1.0,
          "stance_width_ratio": 1.0,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.87,
          "tempo_consistency_score": 0.94
        },
        "variation_hints": []
      },
      {
        "rep_id": 5,
        "duration_sec": 3.1,
        "range_of_motion_score": 0.31,
        "stability_score": 0.86,
        "symmetry_score": 1.0,
        "metrics": {
          "rep_duration_sec": 3.1,
          "eccentric_duration_sec": 1.7,
          "concentric_duration_sec": 1.4,
          "tempo_ratio": 1.21,
          "top_pause_sec": 0.85,
          "bottom_pause_sec": 0.85,
          "smoothness_score": 0.89,
          "jerk_score": 0.0136,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": null,
          "max_knee_angle_deg": null,
          "min_hip_angle_deg": null,
          "max_hip_angle_deg": null,
          "hip_depth_delta": 0.0422,
          "hip_depth_relative_to_knee": "below_parallel",
          "max_torso_lean_deg": null,
          "knee_valgus_proxy": 0.0,
          "knee_tracking_score": 1.0,
          "stance_width_ratio": 1.0,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.86,
          "tempo_consistency_score": 0.96
        },
        "variation_hints": []
      },
      {
        "rep_id": 6,
        "duration_sec": 3.1,
        "range_of_motion_score": 0.29,
        "stability_score": 0.86,
        "symmetry_score": 1.0,
        "metrics": {
          "rep_duration_sec": 3.1,
          "eccentric_duration_sec": 1.4,
          "concentric_duration_sec": 1.7,
          "tempo_ratio": 0.82,
          "top_pause_sec": 0.56,
          "bottom_pause_sec": 0.85,
          "smoothness_score": 0.89,
          "jerk_score": 0.0136,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": null,
          "max_knee_angle_deg": null,
          "min_hip_angle_deg": null,
          "max_hip_angle_deg": null,
          "hip_depth_delta": 0.0373,
          "hip_depth_relative_to_knee": "below_parallel",
          "max_torso_lean_deg": null,
          "knee_valgus_proxy": 0.0,
          "knee_tracking_score": 1.0,
          "stance_width_ratio": 1.0,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.86,
          "tempo_consistency_score": 0.96
        },
        "variation_hints": []
      },
      {
        "rep_id": 7,
        "duration_sec": 2.8,
        "range_of_motion_score": 0.3,
        "stability_score": 0.87,
        "symmetry_score": 1.0,
        "metrics": {
          "rep_duration_sec": 2.8,
          "eccentric_duration_sec": 1.4,
          "concentric_duration_sec": 1.4,
          "tempo_ratio": 1.0,
          "top_pause_sec": 0.56,
          "bottom_pause_sec": 0.84,
          "smoothness_score": 0.88,
          "jerk_score": 0.0149,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": null,
          "max_knee_angle_deg": null,
          "min_hip_angle_deg": null,
          "max_hip_angle_deg": null,
          "hip_depth_delta": 0.0391,
          "hip_depth_relative_to_knee": "below_parallel",
          "max_torso_lean_deg": null,
          "knee_valgus_proxy": 0.0,
          "knee_tracking_score": 1.0,
          "stance_width_ratio": 1.0,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.87,
          "tempo_consistency_score": 0.94
        },
        "variation_hints": []
      },
      {
        "rep_id": 8,
        "duration_sec": 3.1,
        "range_of_motion_score": 0.31,
        "stability_score": 0.86,
        "symmetry_score": 1.0,
        "metrics": {
          "rep_duration_sec": 3.1,
          "eccentric_duration_sec": 1.7,
          "concentric_duration_sec": 1.4,
          "tempo_ratio": 1.21,
          "top_pause_sec": 0.85,
          "bottom_pause_sec": 0.85,
          "smoothness_score": 0.89,
          "jerk_score": 0.0136,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": null,
          "max_knee_angle_deg": null,
          "min_hip_angle_deg": null,
          "max_hip_angle_deg": null,
          "hip_depth_delta": 0.0422,
          "hip_depth_relative_to_knee": "below_parallel",
          "max_torso_lean_deg": null,
          "knee_valgus_proxy": 0.0,
          "knee_tracking_score": 1.0,
          "stance_width_ratio": 1.0,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.86,
          "tempo_consistency_score": 0.96
        },
        "variation_hints": []
      },
      {
        "rep_id": 9,
        "duration_sec": 3.1,
        "range_of_motion_score": 0.29,
        "stability_score": 0.86,
        "symmetry_score": 1.0,
        "metrics": {
          "rep_duration_sec": 3.1,
          "eccentric_duration_sec": 1.4,
          "concentric_duration_sec": 1.7,
          "tempo_ratio": 0.82,
          "top_pause_sec": 0.56,
          "bottom_pause_sec": 0.85,
          "smoothness_score": 0.89,
          "jerk_score": 0.0136,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": null,
          "max_knee_angle_deg": null,
          "min_hip_angle_deg": null,
          "max_hip_angle_deg": null,
          "hip_depth_delta": 0.0373,
          "hip_depth_relative_to_knee": "below_parallel",
          "max_torso_lean_deg": null,
          "knee_valgus_proxy": 0.0,
          "knee_tracking_score": 1.0,
          "stance_width_ratio": 1.0,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.86,
          "tempo_consistency_score": 0.96
        },
        "variation_hints": []
      },
      {
        "rep_id": 10,
        "duration_sec": 2.8,
        "range_of_motion_score": 0.3,
        "stability_score": 0.87,
        "symmetry_score": 1.0,
        "metrics": {
          "rep_duration_sec": 2.8,
          "eccentric_duration_sec": 1.4,
          "concentric_duration_sec": 1.4,
          "tempo_ratio": 1.0,
          "top_pause_sec": 0.56,
          "bottom_pause_sec": 0.84,
          "smoothness_score": 0.88,
          "jerk_score": 0.0149,
          "landmark_confidence": 0.95,
          "hip_lateral_drift": 0.0,
          "min_knee_angle_deg": null,
          "max_knee_angle_deg": null,
          "min_hip_angle_deg": null,
          "max_hip_angle_deg": null,
          "hip_depth_delta": 0.0391,
          "hip_depth_relative_to_knee": "below_parallel",
          "max_torso_lean_deg": null,
          "knee_valgus_proxy": 0.0,
          "knee_tracking_score": 1.0,
          "stance_width_ratio": 1.0,
          "hip_shift": 0.0,
          "bottom_stability_score": 0.87,
          "tempo_consistency_score": 0.94
        },
        "variation_hints": []
      }
    ]
  },
  "issue_summary": {
    "issue_counts": {},
    "issues": [],
    "top_issue_intervals": []
  },
  "priority_cues": [
    "Reference depth, torso control, and rep-to-rep consistency using the measured evidence.",
    "Keep top fixes practical, such as controlling the descent or sitting slightly deeper when `shallow_depth` is present.",
    "Keep language descriptive rather than diagnostic.",
    "Prefer control and repeatability cues that do not assume external load adjustments.",
    "Explain what looked stable before introducing the top squat fix.",
    "Use simple depth or balance language rather than stacking many cues."
  ],
  "knowledge_cards": [
    {
      "card_id": "exercise:squat",
      "card_type": "exercise",
      "labels": [
        "squat"
      ],
      "title": "Squat",
      "summary": "A squat summary should stay grounded in rep evidence while using standardized execution cues for depth, balance, torso position, and stance context.",
      "evidence_rules": [
        "Use rep analysis and issue markers instead of inferring directly from the video.",
        "Describe squat depth, torso control, and balance only when supported by structured evidence.",
        "Treat stance-width context as a valid variation unless issue markers show a separate problem."
      ],
      "coaching_points": [
        "Reference depth, torso control, and rep-to-rep consistency using the measured evidence.",
        "Keep top fixes practical, such as controlling the descent or sitting slightly deeper when `shallow_depth` is present.",
        "Keep language descriptive rather than diagnostic."
      ],
      "allowed_interpretations": [
        "Target muscles commonly include quads and glutes, but coaching should remain focused on the observed movement evidence."
      ],
      "forbidden_claims": [],
      "related_cards": [
        "issue:shallow_depth",
        "issue:excessive_torso_lean"
      ],
      "source_kind": "external",
      "source_path": "/Users/t/Documents/tihado/formcoach-ai/data/knowledge_cards/grounded_exercise_expansion.json"
    },
    {
      "card_id": "equipment:bodyweight",
      "card_type": "equipment",
      "labels": [
        "bodyweight"
      ],
      "title": "Bodyweight Context",
      "summary": "Bodyweight sessions should keep cues simple and focused on repeatable control.",
      "evidence_rules": [
        "Treat equipment as context for cue wording, not as a new issue."
      ],
      "coaching_points": [
        "Prefer control and repeatability cues that do not assume external load adjustments."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "goal:beginner_practice",
      "card_type": "goal",
      "labels": [
        "beginner_practice"
      ],
      "title": "Beginner Practice Goal",
      "summary": "Beginner practice coaching should stay simple, encouraging, and concrete.",
      "evidence_rules": [
        "Limit the number of corrections in a single summary."
      ],
      "coaching_points": [
        "Pick the top one or two form priorities for next time."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "goal_overlay:squat:beginner_practice",
      "card_type": "goal_overlay",
      "labels": [
        "squat:beginner_practice"
      ],
      "title": "Squat Beginner Overlay",
      "summary": "For beginner-practice squats, keep the tone encouraging and corrections minimal.",
      "evidence_rules": [
        "Use this overlay only as a prioritization hint for the detected exercise and goal."
      ],
      "coaching_points": [
        "Explain what looked stable before introducing the top squat fix.",
        "Use simple depth or balance language rather than stacking many cues."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:grounded_only",
      "card_type": "safety_rule",
      "labels": [
        "grounded_only"
      ],
      "title": "Grounded Only",
      "summary": "The summary must explain only the structured evidence and retrieved knowledge cards.",
      "evidence_rules": [
        "Do not infer new issues that are absent from JSON."
      ],
      "coaching_points": [
        "State confidence limits when the evidence is thin."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:no_diagnosis",
      "card_type": "safety_rule",
      "labels": [
        "no_diagnosis"
      ],
      "title": "No Diagnosis",
      "summary": "The summary must not diagnose pain, injury, imbalance, mobility deficits, or pathology.",
      "evidence_rules": [
        "Do not use diagnostic language."
      ],
      "coaching_points": [
        "Use uncertainty language when evidence is limited."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [
        "diagnosis",
        "injury",
        "pathology",
        "medical assessment"
      ],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:no_injury_prevention_claim",
      "card_type": "safety_rule",
      "labels": [
        "no_injury_prevention_claim"
      ],
      "title": "No Injury Prevention Claim",
      "summary": "The summary must not claim that a cue will prevent injury.",
      "evidence_rules": [
        "Do not promise injury prevention."
      ],
      "coaching_points": [
        "Keep coaching language descriptive and performance-focused."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [
        "injury prevention",
        "prevent injury"
      ],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:variation_not_issue",
      "card_type": "safety_rule",
      "labels": [
        "variation_not_issue"
      ],
      "title": "Variation Is Not Automatically An Issue",
      "summary": "A detected variation or listed not-issue should not be overcorrected as a mistake.",
      "evidence_rules": [
        "Keep valid variation context separate from issue language."
      ],
      "coaching_points": [
        "Explain why the variation is treated as context when needed."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    }
  ]
}

[Assistant]
{
  "summary": "The pipeline segmented 10 squat reps from the current pose stream. Exercise routing, variation labeling, and coaching language may still use lightweight rules or placeholders. The detected variation is `pause_squat`. The frame-level issue rules did not find a sustained threshold violation.",
  "what_you_did": [],
  "what_looked_good": [],
  "what_changed_across_reps": [],
  "valid_variation_vs_issue": [],
  "top_fixes": [
    "Keep the same setup and record from a stable camera angle.",
    "Stop the set when the first repeated issue marker appears.",
    "Use slower reps until the highlighted metric improves."
  ],
  "next_session_plan": [
    "Warm up with 1 easy set of 5 controlled reps.",
    "Perform 2 working sets and keep the camera angle consistent.",
    "Compare the next run against this report's issue timeline."
  ],
  "confidence_notes": [
    "Current mock classifier confidence placeholder: 92%.",
    "Rep segmentation can run on real pose, but downstream interpretation is still partially mocked."
  ]
}


[System] You are Pozify's grounded coach-summary model. Use only the provided structured evidence and knowledge cards. Return coach_summary.json as JSON only.

[User]
{
  "user_profile": {
    "goal": "beginner_practice",
    "experience_level": "beginner",
    "intended_exercise": "auto",
    "intended_variation": null,
    "known_limitations": [],
    "equipment": "bodyweight"
  },
  "exercise_classification": {
    "exercise": "unknown",
    "confidence": 0.0,
    "fallback_required": true
  },
  "variation": {
    "exercise": "unknown",
    "detected_variation": "unknown",
    "variation_confidence": 0.3,
    "not_issues": [
      "low_rom_requires_user_intent_check"
    ]
  },
  "rep_summary": {
    "rep_count": 0,
    "aggregate_metrics": {
      "avg_rom_score": 0.0,
      "avg_stability_score": 0.0,
      "avg_symmetry_score": 0.0,
      "avg_rep_duration_sec": 0.0,
      "avg_tempo_consistency_score": 0.0,
      "avg_landmark_confidence": 1.0,
      "fatigue_trend_rom_delta": 0.0,
      "pose_valid_ratio": 1.0
    },
    "rep_metrics": []
  },
  "issue_summary": {
    "issue_counts": {},
    "issues": [],
    "top_issue_intervals": []
  },
  "priority_cues": [
    "Prefer control and repeatability cues that do not assume external load adjustments.",
    "Pick the top one or two form priorities for next time.",
    "State confidence limits when the evidence is thin.",
    "Use uncertainty language when evidence is limited.",
    "Keep coaching language descriptive and performance-focused.",
    "Explain why the variation is treated as context when needed."
  ],
  "knowledge_cards": [
    {
      "card_id": "equipment:bodyweight",
      "card_type": "equipment",
      "labels": [
        "bodyweight"
      ],
      "title": "Bodyweight Context",
      "summary": "Bodyweight sessions should keep cues simple and focused on repeatable control.",
      "evidence_rules": [
        "Treat equipment as context for cue wording, not as a new issue."
      ],
      "coaching_points": [
        "Prefer control and repeatability cues that do not assume external load adjustments."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "goal:beginner_practice",
      "card_type": "goal",
      "labels": [
        "beginner_practice"
      ],
      "title": "Beginner Practice Goal",
      "summary": "Beginner practice coaching should stay simple, encouraging, and concrete.",
      "evidence_rules": [
        "Limit the number of corrections in a single summary."
      ],
      "coaching_points": [
        "Pick the top one or two form priorities for next time."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:grounded_only",
      "card_type": "safety_rule",
      "labels": [
        "grounded_only"
      ],
      "title": "Grounded Only",
      "summary": "The summary must explain only the structured evidence and retrieved knowledge cards.",
      "evidence_rules": [
        "Do not infer new issues that are absent from JSON."
      ],
      "coaching_points": [
        "State confidence limits when the evidence is thin."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:no_diagnosis",
      "card_type": "safety_rule",
      "labels": [
        "no_diagnosis"
      ],
      "title": "No Diagnosis",
      "summary": "The summary must not diagnose pain, injury, imbalance, mobility deficits, or pathology.",
      "evidence_rules": [
        "Do not use diagnostic language."
      ],
      "coaching_points": [
        "Use uncertainty language when evidence is limited."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [
        "diagnosis",
        "injury",
        "pathology",
        "medical assessment"
      ],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:no_injury_prevention_claim",
      "card_type": "safety_rule",
      "labels": [
        "no_injury_prevention_claim"
      ],
      "title": "No Injury Prevention Claim",
      "summary": "The summary must not claim that a cue will prevent injury.",
      "evidence_rules": [
        "Do not promise injury prevention."
      ],
      "coaching_points": [
        "Keep coaching language descriptive and performance-focused."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [
        "injury prevention",
        "prevent injury"
      ],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    },
    {
      "card_id": "safety:variation_not_issue",
      "card_type": "safety_rule",
      "labels": [
        "variation_not_issue"
      ],
      "title": "Variation Is Not Automatically An Issue",
      "summary": "A detected variation or listed not-issue should not be overcorrected as a mistake.",
      "evidence_rules": [
        "Keep valid variation context separate from issue language."
      ],
      "coaching_points": [
        "Explain why the variation is treated as context when needed."
      ],
      "allowed_interpretations": [],
      "forbidden_claims": [],
      "related_cards": [],
      "source_kind": "builtin",
      "source_path": null
    }
  ]
}

[Assistant]
{
  "summary": "The pipeline segmented 0 unknown reps from the current pose stream. Exercise routing, variation labeling, and coaching language may still use lightweight rules or placeholders. The detected variation is `unknown`. The frame-level issue rules did not find a sustained threshold violation.",
  "what_you_did": [],
  "what_looked_good": [],
  "what_changed_across_reps": [],
  "valid_variation_vs_issue": [],
  "top_fixes": [
    "Keep the same setup and record from a stable camera angle.",
    "Stop the set when the first repeated issue marker appears.",
    "Use slower reps until the highlighted metric improves."
  ],
  "next_session_plan": [
    "Warm up with 1 easy set of 5 controlled reps.",
    "Perform 2 working sets and keep the camera angle consistent.",
    "Compare the next run against this report's issue timeline."
  ],
  "confidence_notes": [
    "Current mock classifier confidence placeholder: 0%.",
    "Rep segmentation can run on real pose, but downstream interpretation is still partially mocked."
  ]
}