{
 "formatVersion": 3,
 "source": "starter",
 "plan": {
  "name": "Half · 2:00",
  "distanceKind": "half",
  "goalTimeSeconds": 7200,
  "numWeeks": 12,
  "minWeeks": 12
 },
 "weeks": [
  {
   "week": 1,
   "phase": "base",
   "targetMeters": 40234,
   "isRecovery": false
  },
  {
   "week": 2,
   "phase": "base",
   "targetMeters": 43452,
   "isRecovery": false
  },
  {
   "week": 3,
   "phase": "build",
   "targetMeters": 46671,
   "isRecovery": false
  },
  {
   "week": 4,
   "phase": "build",
   "targetMeters": 48280,
   "isRecovery": false
  },
  {
   "week": 5,
   "phase": "recovery",
   "targetMeters": 40234,
   "isRecovery": true
  },
  {
   "week": 6,
   "phase": "build",
   "targetMeters": 51499,
   "isRecovery": false
  },
  {
   "week": 7,
   "phase": "build",
   "targetMeters": 54718,
   "isRecovery": false
  },
  {
   "week": 8,
   "phase": "recovery",
   "targetMeters": 40234,
   "isRecovery": true
  },
  {
   "week": 9,
   "phase": "peak",
   "targetMeters": 53108,
   "isRecovery": false
  },
  {
   "week": 10,
   "phase": "peak",
   "targetMeters": 56327,
   "isRecovery": false
  },
  {
   "week": 11,
   "phase": "taper",
   "targetMeters": 45062,
   "isRecovery": false
  },
  {
   "week": 12,
   "phase": "taper",
   "targetMeters": 33796,
   "isRecovery": false
  }
 ],
 "workouts": [
  {
   "week": 1,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 4828,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 4828,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 1,
   "day": 2,
   "type": "quality",
   "title": "3 × 6 min threshold",
   "plannedDistanceMeters": 9656,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 360,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 360,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 360,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "Controlled and repeatable—not a test. Finish the third rep at the same effort as the first."
  },
  {
   "week": 1,
   "day": 3,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 1,
   "day": 5,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 1,
   "day": 6,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 12875,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 12875,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 2,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 2,
   "day": 2,
   "type": "quality",
   "title": "3 × 8 min threshold",
   "plannedDistanceMeters": 9656,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 480,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 480,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 480,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "Hold a comfortably hard effort with controlled breathing; keep all three repetitions even."
  },
  {
   "week": 2,
   "day": 3,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 2,
   "day": 5,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 2,
   "day": 6,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 14484,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 14484,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 3,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 3,
   "day": 2,
   "type": "quality",
   "title": "3 × 1 mi at goal pace",
   "plannedDistanceMeters": 11265,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 3219,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "interval",
     "target": {
      "distance_m": 1609,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "distance_m": 1609,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "distance_m": 1609,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "Learn the selected half-marathon goal rhythm. Smooth and economical is more important than running ahead of pace."
  },
  {
   "week": 3,
   "day": 3,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 3,
   "day": 5,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 3,
   "day": 6,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 16093,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 16093,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 4,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 4,
   "day": 2,
   "type": "quality",
   "title": "2 × 12 min threshold",
   "plannedDistanceMeters": 9656,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 720,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 180,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 720,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "Settle before pressing. The second repetition should match the first without turning into a race."
  },
  {
   "week": 4,
   "day": 3,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 4,
   "day": 5,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 4,
   "day": 6,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 16093,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 16093,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 5,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 5,
   "day": 2,
   "type": "quality",
   "title": "2 × 8 min threshold",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 480,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 480,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "A reduced, familiar session after four progressive weeks. If easy running does not feel normal, make all 5 miles easy instead. Keep the mileage gentle and do not make up the threshold work later."
  },
  {
   "week": 5,
   "day": 3,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 5,
   "day": 5,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 5,
   "day": 6,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 12875,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 12875,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 6,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 6,
   "day": 2,
   "type": "quality",
   "title": "2 × 2 mi at goal pace",
   "plannedDistanceMeters": 12875,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "interval",
     "target": {
      "distance_m": 3219,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 180,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "distance_m": 3219,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 3219,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "Practice half-marathon goal rhythm in two calm blocks. Use the recovery to reset, not to rescue an over-fast first block."
  },
  {
   "week": 6,
   "day": 3,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 6,
   "day": 5,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 6,
   "day": 6,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 17703,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 17703,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 7,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 7,
   "day": 2,
   "type": "quality",
   "title": "3 × 10 min threshold",
   "plannedDistanceMeters": 11265,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 600,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 600,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "duration_s": 600,
      "pace": {
       "kind": "relative",
       "reference": "threshold",
       "speed_fraction": 1
      },
      "hr_zone": "threshold"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "This is the largest threshold dose. Keep it under control and leave the session knowing one more rep was possible."
  },
  {
   "week": 7,
   "day": 3,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 7,
   "day": 5,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 7,
   "day": 6,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 19312,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 19312,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 8,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 8,
   "day": 2,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 8,
   "day": 3,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 12875,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 12875,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 8,
   "day": 4,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 4828,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 4828,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 8,
   "day": 6,
   "type": "race",
   "title": "5K benchmark",
   "plannedDistanceMeters": 5000,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 3219,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "work",
     "target": {
      "distance_m": 5000,
      "effort": "Hard, even 5K benchmark"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 1609,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "Run only if Weeks 5–7 were absorbed and easy running feels normal. Otherwise edit this to 6 mi easy or 3 × 8 min threshold inside 6 mi total; the week can still meet its mileage contract while quality is intentionally short. Do not add the benchmark later."
  },
  {
   "week": 9,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 9,
   "day": 2,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 9,
   "day": 3,
   "type": "quality",
   "title": "2 × 2 mi at goal pace",
   "plannedDistanceMeters": 12875,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "interval",
     "target": {
      "distance_m": 3219,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 180,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "distance_m": 3219,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 3219,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "Return to half-marathon goal rhythm in two controlled blocks after the benchmark. Do not turn the first block into another test."
  },
  {
   "week": 9,
   "day": 5,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 9,
   "day": 6,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 19312,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 19312,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 10,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 10,
   "day": 2,
   "type": "quality",
   "title": "5 mi at goal pace",
   "plannedDistanceMeters": 14484,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 3219,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 3219,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "The peak race-specific session. Stay at the selected half-marathon goal effort and finish with form intact."
  },
  {
   "week": 10,
   "day": 3,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 10,
   "day": 5,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 10,
   "day": 6,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 19312,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 19312,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 11,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 11,
   "day": 2,
   "type": "quality",
   "title": "3 × 1 mi at goal pace",
   "plannedDistanceMeters": 9656,
   "structure": [
    {
     "kind": "warmup",
     "target": {
      "distance_m": 1609,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "interval",
     "target": {
      "distance_m": 1609,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "distance_m": 1609,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "recovery",
     "target": {
      "duration_s": 120,
      "hr_zone": "easy",
      "effort": "Easy jog"
     }
    },
    {
     "kind": "interval",
     "target": {
      "distance_m": 1609,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "hr_zone": "steady"
     }
    },
    {
     "kind": "cooldown",
     "target": {
      "distance_m": 2414,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": "Keep the familiar half-marathon rhythm while the total load falls. This should build confidence, not fatigue."
  },
  {
   "week": 11,
   "day": 3,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 6437,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 6437,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 11,
   "day": 5,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 8047,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 8047,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 11,
   "day": 6,
   "type": "long",
   "title": "Long run",
   "plannedDistanceMeters": 14484,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 14484,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 12,
   "day": 1,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 4828,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 4828,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 12,
   "day": 3,
   "type": "easy",
   "title": "Easy run",
   "plannedDistanceMeters": 4828,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 4828,
      "hr_zone": "easy"
     }
    }
   ],
   "notes": null
  },
  {
   "week": 12,
   "day": 5,
   "type": "easy",
   "title": "Easy shakeout + strides",
   "plannedDistanceMeters": 3219,
   "structure": [
    {
     "kind": "steady",
     "target": {
      "distance_m": 3219,
      "hr_zone": "easy"
     }
    },
    {
     "kind": "repeat",
     "sets": 4,
     "children": [
      {
       "kind": "strides",
       "target": {
        "duration_s": 20,
        "effort": "Relaxed, fast form"
       }
      }
     ]
    }
   ],
   "notes": "Keep the run easy. Add four relaxed 20-second strides with full easy recovery; finish feeling sharper, not tired."
  },
  {
   "week": 12,
   "day": 6,
   "type": "race",
   "title": "Half marathon",
   "plannedDistanceMeters": 21097,
   "structure": [
    {
     "kind": "work",
     "target": {
      "distance_m": 21097,
      "pace": {
       "kind": "relative",
       "reference": "HMP",
       "speed_fraction": 1
      },
      "effort": "Best sustainable race effort"
     }
    }
   ],
   "notes": "Start controlled, settle into goal effort, and make decisions late. The first miles should feel deliberately patient."
  }
 ],
 "questions": [],
 "rationale": [
  "Built for a healthy runner averaging 22–28 miles over five days for at least eight weeks, with a recent relaxed 8-mile long run, prior controlled quality work, and a recent race or controlled session consistent with the selected goal.",
  "Weekly mileage and easy consistency come first; one quality session and one easy long run supply the only recurring anchors.",
  "The workout vocabulary stays intentionally small: controlled threshold work, half-marathon-pace work, and one optional 5K benchmark.",
  "Cutbacks sit at recovery decision points, not on a fixed cycle: Week 5 absorbs the opening load, while Week 8 creates space for the optional benchmark. When recovery is not normal, convert hard work to easy mileage and do not make it up later."
 ]
}
