2026-06-06 to 2026-06-13 Live TrainingPeaks Luca Workout Analysis

Report scope

  • Athlete: Sidney
  • TrainingPeaks athlete ID: 1575220
  • Review window: 2026-06-06 through 2026-06-13 inclusive
  • Filter used for analysis: TrainingPeaks activities tagged luca
  • Main target protected by this review: Ghost of the Gravel, 2026-06-27

Evidence and live data connection

OpenClaw was connected to live TrainingPeaks data for this review.

  • Authentication check: tp-mcp auth-status returned authenticated.
  • Authenticated account: luca@materiaal.cc
  • Athlete ID confirmed by TrainingPeaks MCP config: 1575220
  • Primary live data path used: local TrainingPeaks MCP Python environment at /Users/notgeoff/Documents/projects/coachluca/_system/trainingpeaks-mcp, using tp_mcp.client.TPClient and explicit Sidney athlete endpoints.
  • Explicit endpoint pattern used: /fitness/v6/athletes/1575220/workouts/YYYY-MM-DD/YYYY-MM-DD
  • Reason for explicit endpoint: the helper path tp_get_workouts() hit an ensure_athlete_id() runtime bug in this environment, so the report used the verified direct Sidney endpoint instead.
  • Workout analysis source: Peaksware workout analysis endpoint through the same authenticated client.

Evidence artifacts for reviewer follow-up:

  • Raw live TrainingPeaks fetch: tmp/trainingpeaks-live-2026-06-06-to-2026-06-12.json
  • Compact live summary: tmp/trainingpeaks-live-2026-06-06-to-2026-06-12-summary.json
  • Per-workout analysis files: tmp/tp-analysis-2026-06-06-to-12/
  • June 13 live TrainingPeaks fetch: tmp/trainingpeaks-live-2026-06-13.json
  • June 13 compact summary: tmp/trainingpeaks-live-2026-06-13-summary.json
  • June 13 workout analysis files: tmp/tp-analysis-2026-06-13/workout_3779663600.json and tmp/tp-analysis-2026-06-13/workout_3779663600-summary.json
  • Completed Luca-tagged workout analysis files:
    • tmp/tp-analysis-2026-06-06-to-12/workout_3775054591.json
    • tmp/tp-analysis-2026-06-06-to-12/workout_3775055445.json
    • tmp/tp-analysis-2026-06-06-to-12/workout_3779663570.json
    • tmp/tp-analysis-2026-06-06-to-12/workout_3779663579.json
    • tmp/tp-analysis-2026-06-06-to-12/workout_3779663588.json
    • tmp/tp-analysis-2026-06-06-to-12/workout_3779663597.json
    • tmp/tp-analysis-2026-06-13/workout_3779663600.json

Limitations:

  • The live analysis files contained power, GPS, speed, distance, elevation-related data, and summary TrainingPeaks metrics. Heart-rate analysis was not available from the June 7-12 downloaded analysis files. June 13 has partial HR data only: Sidney's HR monitor failed around 2:20, and the late TrainingPeaks HeartRate rows appear to carry stale repeated values, so no HR-based conclusion should be drawn after that point.
  • Athlete comments and coach comments were not present in the extracted live summaries for the Luca-tagged completed bike sessions.
  • Several daily logs had readiness marked Unconfirmed because same-morning subjective feedback was missing. TrainingPeaks now confirms the bike completions, but it does not replace subjective recovery, symptom, GI, or perceived-exertion feedback.

Inclusion and exclusion summary

Included for completed-activity analysis:

Date Workout ID Title Sport Tags Completed File Actual time Actual TSS
2026-06-07 3775054591 Endurance 3:00 Bike luca, Cycling yes yes 3.01 h 125.2
2026-06-08 3775055445 Easy endurance 1:15-1:30 Bike luca, Cycling yes yes 1.54 h 74.6
2026-06-09 3779663570 Short power control Bike luca, Cycling yes yes 2.20 h 112.0
2026-06-10 3779663579 Easy endurance 1:15 Bike luca, Cycling yes yes 1.25 h 49.7
2026-06-11 3779663588 Gravel endurance primer 3:15 Bike luca, Cycling yes yes 2.34 h 105.3
2026-06-12 3779663597 Easy spin 0:45-1:00 Bike luca, Cycling yes yes 1.01 h 41.0
2026-06-13 3779663600 Ghost simulation 5:00 Bike luca, Cycling yes yes 4.97 h 279.0

Luca-tagged but not completed or no activity file:

Date Workout ID Title Sport Tags Status Handling
2026-06-10 3779663664 Optional easy run-walk (treadmill) Run / treadmill luca not completed, no file Do not infer completion. Ask Sidney whether she did it and whether ankle, calf, back, SI, or heaviness changed after.
2026-06-12 3779663679 Optional upper + core activation Strength luca not completed, no file Do not infer completion. Morning note removed this activation because readiness was unconfirmed, so leaving it uncompleted is appropriate unless Sidney says otherwise.

Live but excluded from Luca-tagged analysis:

Date Workout ID Title Sport Tags Status Reason excluded
2026-06-06 3775053724 2 minute bangers Bike Cycling completed No luca tag.
2026-06-08 3775055306 Strength Sidney Strength none not completed, no file No luca tag and no file. Note only as gym-feedback context.
2026-06-10 3775062006 Big 30's Bike none not completed No luca tag.
2026-06-11 3775065407 4.0HR Endurance Bike none not completed No luca tag.
2026-06-12 3775065455 Strength Sidney Strength none not completed, no file No luca tag and no file. Note only as gym-feedback context.

Load summary for completed Luca-tagged bike work

  • Completed Luca-tagged bike sessions: 7
  • Planned duration across completed bike sessions: 17.33 h
  • Actual duration across completed bike sessions: 16.32 h
  • Duration delta: -1.01 h
  • Actual TrainingPeaks TSS: 786.9
  • Distance: 440.5 km
  • Mechanical work: 9688 kJ
  • Largest positive load deviation: June 8 easy endurance, +0.29 h and +28.1 TSS versus plan.
  • Largest negative load deviation: June 11 gravel primer, -0.91 h and -60.5 TSS versus plan.
  • Overall interpretation: the block delivered meaningful aerobic and gravel-specific load, then confirmed the key Ghost simulation almost exactly on target. June 11 came in short, but June 13 made that gap less important as the decisive rehearsal load. The missing subjective response data still matters, especially for fuelling, GI, back/SI, and late-ride RPE.

Power distribution and best-effort calculations below use FTP approximately 260 W. These are approximate from the downloaded analysis time-series samples, not a replacement for TrainingPeaks native charts.

2026-06-06

Live TrainingPeaks activities

  • 2 minute bangers, workout 3775053724, bike, completed, actual 1.64 h, TSS 69.6.
  • Tags: Cycling, not luca.
  • Result: excluded from the Luca-tagged analysis by scope.

Context note

The daily log records Sidney reporting rainy weather, tiredness, a completed 25 minute run-walk, and about 1 hour of core. The coaching response moved the longer endurance work to June 7 and treated the run-walk and core as real off-bike load. Because the completed bike workout was not tagged luca, it should not be used to judge Luca session execution, but the fatigue and off-bike load matter for interpreting June 7 and June 8.

Open follow-up

Ask Sidney whether the June 6 core created any back, SI, hip-flexor, abdominal, calf, or ankle response. This matters because later daily notes repeatedly carried forward those guardrails without direct subjective confirmation.

2026-06-07

Endurance 3:00, workout 3775054591

Plan versus actual:

Metric Planned Actual Delta
Duration 3.00 h 3.01 h +0.01 h
TSS not available in plan 125.2 n/a
IF n/a 0.647 n/a
NP n/a 168 W n/a
Average power n/a 164 W n/a
VI n/a 1.06 n/a
Work n/a 1649 kJ n/a

Power distribution, approximate FTP 260 W:

Bucket Share
<55% FTP 12.0%
55-75% FTP 43.0%
75-86% FTP 22.5%
86-95% FTP 9.2%
95-110% FTP 8.1%
>110% FTP 5.1%

Best sampled powers:

Window Power
2 min 286 W
5 min 241 W
10 min 223 W
20 min 209 W
30 min 207 W

Interpretation:

Sidney completed almost exactly the prescribed duration after the June 6 schedule change. IF 0.647 and VI 1.06 support a generally controlled endurance execution. The distribution was not purely low Z2: about 22.5% sat in the 75-86% FTP band, and there was some time above 86% FTP. That likely reflects terrain, group/road variability, or small climbs/pressure moments rather than a failed endurance ride, but it was not an ultra-easy day coming after fatigue, run-walk, and core on June 6.

Coaching read:

The session delivered useful endurance load and was within the adjusted ceiling. The cost is meaningful enough that June 8 needed to stay absorb-and-protect, which matches the subsequent plan.

2026-06-08

Easy endurance 1:15-1:30, workout 3775055445

Plan versus actual:

Metric Planned Actual Delta
Duration 1.25 h 1.54 h +0.29 h
TSS 46.5 74.6 +28.1
IF n/a 0.700 n/a
NP n/a 182 W n/a
Average power n/a 178 W n/a
VI n/a 1.04 n/a
Work n/a 941 kJ n/a

Power distribution, approximate FTP 260 W:

Bucket Share
<55% FTP 10.7%
55-75% FTP 43.1%
75-86% FTP 27.8%
86-95% FTP 9.1%
95-110% FTP 6.5%
>110% FTP 2.8%

Best sampled powers:

Window Power
2 min 236 W
5 min 220 W
10 min 214 W
20 min 206 W
30 min 201 W

Interpretation:

This is the clearest day where the execution ran hotter than the intent. The morning plan classified readiness as Amber and asked for easy endurance, Z1 to low Z2, with gym only if the ride felt normal and no soreness or heaviness was present. Actual duration exceeded the low-end plan by 17 minutes and TSS overshot by 28.1. IF 0.700 and NP 182 W are reasonable for endurance, but high for an absorb-and-protect day after June 6 fatigue/core and June 7 endurance.

Coaching read:

The ride was productive but not as protective as prescribed. It probably added more load than intended before the June 9 control session. If Sidney reports feeling flat on June 13 or after, June 8 is one likely contributor. The unfiled Strength Sidney workout that day was not tagged luca and had no file; do not assume completion. Ask for gym feedback if she did any strength work.

2026-06-09

Short power control, workout 3779663570

Plan versus actual:

Metric Planned Actual Delta
Duration 1.83 h 2.20 h +0.36 h
TSS 104.7 112.0 +7.3
IF n/a 0.715 n/a
NP n/a 186 W n/a
Average power n/a 167 W n/a
VI n/a 1.13 n/a
Work n/a 1265 kJ n/a

Power distribution, approximate FTP 260 W:

Bucket Share
<55% FTP 15.9%
55-75% FTP 55.3%
75-86% FTP 14.2%
86-95% FTP 3.7%
95-110% FTP 1.7%
>110% FTP 9.2%

Best sampled powers:

Window Power
2 min 344 W
5 min 249 W
10 min 226 W
20 min 219 W
30 min 214 W

Interpretation:

This appears to have achieved the intended short-power stimulus without a major TSS overshoot. The 9.2% of samples above 110% FTP and best 2 minute power around 344 W indicate the short-power component was real. VI 1.13 fits variable work. Duration ran 22 minutes longer than plan, but TSS only exceeded plan by 7.3, suggesting the added time was likely mostly lower-intensity riding rather than a large hidden intensity cost.

Coaching read:

Good stimulus, acceptable load. Given the prior day ran hotter than intended, the only concern is cumulative load rather than the June 9 session by itself. The daily log references possible ride fuelling and core work through nutrition context, but no direct session-response note was available. Ask Sidney whether any core was completed and whether it produced soreness.

2026-06-10

Easy endurance 1:15, workout 3779663579

Plan versus actual:

Metric Planned Actual Delta
Duration 1.25 h 1.25 h +0.00 h
TSS 46.5 49.7 +3.2
IF n/a 0.632 n/a
NP n/a 164 W n/a
Average power n/a 162 W n/a
VI n/a 1.06 n/a
Work n/a 690 kJ n/a

Power distribution, approximate FTP 260 W:

Bucket Share
<55% FTP 18.4%
55-75% FTP 60.8%
75-86% FTP 13.7%
86-95% FTP 3.1%
95-110% FTP 2.7%
>110% FTP 1.3%

Best sampled powers:

Window Power
2 min 217 W
5 min 197 W
10 min 193 W
20 min 184 W
30 min 180 W

Interpretation:

This was the cleanest support-day execution in the window. Duration matched plan, TSS was only +3.2, IF was low, and 79.2% of sampled power was below 75% FTP. This fits the instruction to keep the day easy between June 9 control work and the June 11 primer.

No-file note:

The optional Luca-tagged treadmill run-walk, workout 3779663664, was not completed in live TrainingPeaks and had no activity file. Since the morning note made it truly optional and conditional on no ankle, calf, back, SI, or heaviness response, this should be treated as skipped unless Sidney says otherwise. Ask directly before adding any run/walk load to the record.

Coaching read:

Good restraint. This day helped absorb the prior two days and set up the June 11 primer.

2026-06-11

Gravel endurance primer 3:15, workout 3779663588

Plan versus actual:

Metric Planned Actual Delta
Duration 3.25 h 2.34 h -0.91 h
TSS 165.8 105.3 -60.5
IF n/a 0.673 n/a
NP n/a 175 W n/a
Average power n/a 162 W n/a
VI n/a 1.11 n/a
Work n/a 1313 kJ n/a

Power distribution, approximate FTP 260 W:

Bucket Share
<55% FTP 18.2%
55-75% FTP 40.6%
75-86% FTP 13.4%
86-95% FTP 15.5%
95-110% FTP 9.3%
>110% FTP 3.0%

Best sampled powers:

Window Power
2 min 271 W
5 min 256 W
10 min 250 W
20 min 243 W
30 min 225 W

Interpretation:

The session was materially shorter and lower TSS than planned, but it still included meaningful gravel pressure. The best 20 minute power near 243 W, best 10 minute near 250 W, and 24.8% of samples between 86% and 110% FTP show real sustained work. The actual execution looks like a condensed primer rather than a missed day.

This is probably positive for the larger block if Sidney absorbed it well. The original plan kept June 13 as the block priority, and the June 11 morning note explicitly made the second pressure block conditional on clean early ride response. The shortened total reduced fatigue risk before the five-hour simulation while still touching sustained race-relevant pressure.

Coaching read:

Keep this as a useful but incomplete primer. Do not try to make up the missing 55 minutes before June 13. The key missing data is why the ride ended early: planned choice, route/logistics, fatigue, back/SI, fuelling/GI, weather, equipment, or time constraint.

2026-06-12

Easy spin 0:45-1:00, workout 3779663597

Plan versus actual:

Metric Planned Actual Delta
Duration 1.00 h 1.01 h +0.01 h
TSS 33.9 41.0 +7.1
IF n/a 0.642 n/a
NP n/a 167 W n/a
Average power n/a 163 W n/a
VI n/a 1.03 n/a
Work n/a 569 kJ n/a

Power distribution, approximate FTP 260 W:

Bucket Share
<55% FTP 18.6%
55-75% FTP 61.8%
75-86% FTP 11.8%
86-95% FTP 3.1%
95-110% FTP 4.1%
>110% FTP 0.7%

Best sampled powers:

Window Power
2 min 207 W
5 min 192 W
10 min 187 W
20 min 180 W
30 min 178 W

Interpretation:

This was close to the prescribed duration and largely easy. TSS was +7.1 above plan, but still low in absolute terms. The best 30 minute power near 178 W and low VI suggest a stable aerobic spin. The daily plan had removed optional upper/core activation from the athlete-facing note because readiness was unconfirmed, and the live uncompleted activation aligns with that conservative choice.

No-file note:

The Luca-tagged optional upper + core activation, workout 3779663679, was not completed and had no file. Treat as skipped unless Sidney reports otherwise. The non-Luca Strength Sidney workout also had no completion/file and should not be assumed completed.

Coaching read:

Appropriate pre-simulation support day. The one concern is nutrition: the morning log was carb-light, and the coaching note asked for extra pre-ride carbohydrate. We need Sidney's actual pre-ride/during/post-ride intake and how the legs felt to interpret readiness for June 13.

2026-06-13

Ghost simulation 5:00, workout 3779663600

Plan versus actual:

Metric Planned Actual Delta
Duration 5.00 h 4.97 h -0.03 h
TSS 278.2 279.0 +0.8
Distance 125-150 km target 135.2 km within target
Elevation gain not specified 1579 m n/a
IF n/a 0.75 n/a
NP n/a 195 W n/a
Average power n/a 190 W n/a
VI n/a 1.06 n/a
Work n/a 3272 kJ n/a
HR through monitor failure n/a 154 bpm avg / 179 bpm max through about 2:20 partial only
Average cadence n/a 84 rpm n/a

TrainingPeaks compliance fields:

Metric Compliance
Duration 99.4%
TSS 100.2%
Distance 98.3%

Structure execution, using the live TrainingPeaks Structure channel:

Segment TP target Actual average Read
Warm-up 68% / 177 W 202 W above target
Endurance 75% / 195 W 271 W above target in sampled rows
Gravel pressure 1 86% / 224 W 257 W above target
Recovery 1 65% / 169 W 192 W above target
Gravel pressure 2 86% / 224 W 256 W above target
Recovery 2 65% / 169 W 175 W near target
Gravel pressure 3 86% / 224 W 233 W near target
Recovery 3 65% / 169 W 176 W near target
Endurance before final hour 73% / 190 W 198 W near target
Final-hour pressure 1 94% / 244 W 257 W completed above target
Final-hour recovery 1 65% / 169 W 181 W near target
Final-hour pressure 2 94% / 244 W 251 W completed above target
Final-hour recovery 2 65% / 169 W 178 W near target
Final-hour pressure 3 94% / 244 W 243 W completed on target
Final-hour recovery 3 65% / 169 W 176 W near target
Final-hour pressure 4 94% / 244 W 264 W completed above target
Final-hour recovery 4 65% / 169 W 194 W above target
Cool-down 60% / 156 W 173 W above target

Final-hour pressure execution:

Rep Target Actual average
1 90-94% FTP / 234-244 W 257 W
2 90-94% FTP / 234-244 W 251 W
3 90-94% FTP / 234-244 W 243 W
4 90-94% FTP / 234-244 W 264 W

Partial HR coverage:

Window Heart rate Handling
First hour 146 bpm valid
Second hour 157 bpm valid
2:00-2:20 165 bpm valid, before reported monitor failure
After about 2:20 n/a excluded; monitor failure/stale values

Metric note: The June 13 structure comparison uses the live TrainingPeaks workout object and the completed workout's embedded Structure channel, not the secondary derived-metrics JSON artifact. The raw time-series rows are sparse, so segment averages are coaching approximations, but the final-hour pressure pattern is clear: the four prescribed 5-minute efforts were completed at or above the planned target. HR is partial only; late HR values are excluded because the monitor failed and TrainingPeaks appears to carry stale values after the failure.

Interpretation:

Sidney completed the simulation almost exactly as prescribed by duration, distance, and load. The live TrainingPeaks object reports 99.4% duration compliance, 100.2% TSS compliance, and 98.3% distance compliance. A 4:58 ride, 279 TSS, 135 km, 1579 m climbing, and 3272 kJ is a legitimate race-rehearsal load, not a partial completion. The total TSS landed almost perfectly on plan, which means the workload target was met despite the earlier concern that June 11 had come in short.

The overall intensity was race-relevant and well matched to the plan. IF 0.75 over nearly five hours is substantial, while VI 1.06 shows good pacing discipline for gravel terrain. The important comparison is not a generic first-third versus final-third power slope; it is execution against the prescribed structure. On that basis, the workout was very successful.

The final-hour work is the clearest evidence. The plan asked for 4 x 5 minutes at 90-94% FTP, with 5-minute recoveries. The completed file's structure-labeled rows show those four pressure reps averaging about 257 W, 251 W, 243 W, and 264 W against a 234-244 W target range. That is not a power fade. That is successful completion of the planned final-hour pressure.

Execution context and missing data:

The main coaching flag is not execution quality; it is missing context. HR can only be interpreted before the monitor failure: about 146 bpm in the first hour, 157 bpm in the second hour, and 165 bpm from 2:00-2:20. After that, HR should be treated as missing, not as evidence of late cardiac drift. The power file itself does not show failed final-hour execution when compared to the actual plan.

In plain coaching terms: the ride was successful, and the final-hour structure was executed very well. Because HR is missing after about 2:20, do not frame this as confirmed cardiac drift. The still-missing information is not whether she hit the power structure; she did. The missing information is subjective and practical: RPE, GI response, thirst, heat, back/SI, and exactly how the race fuelling setup worked.

For Ghost of the Gravel preparation, this is strongly positive information. Sidney can carry the race-relevant duration and workload, and she can still execute the planned final-hour pressure. The next decision should be based on recovery and fuelling response, not on a presumed late power failure.

Fuelling and recovery read:

The available nutrition log shows a high-carbohydrate breakfast at 08:58, about two hours before the TrainingPeaks start time of 10:58. That meal provided about 170 g carbohydrate, which is directionally strong, but the timing was tighter than the planned 3-4 hour race-breakfast window. This can work for some athletes, but it raises the importance of gut comfort feedback.

The post-ride smoothie at 16:16 appears close to the finish window and added about 111 g carbohydrate, which is a good immediate recovery signal. The later rice, chicken, avocado, vegetables, mango, and sesame meal improved protein and micronutrient coverage. What is still missing is the key race-rehearsal evidence: on-bike carbohydrate per hour, fluid per hour, sodium per hour, product timing, and GI response. Since the ride prescription targeted 85-90 g carbohydrate per hour and 600-900 mg sodium per hour, this should be collected before changing the race plan.

Coaching read:

This was a successful Ghost simulation. The plan asked for a full rehearsal, and the file delivered nearly exact planned duration and TSS, on target distance, substantial climbing, controlled variability, and successful final-hour pressure. From a race-readiness perspective, this is the best single confirmation in the June 6-13 block.

The limiter is no longer visible as a power-execution problem in this file. The right next questions are recovery cost and fuelling reliability: arrive fresh, fuel early, keep sodium/fluid steady, and avoid spending unnecessary matches in the first three hours.

Pattern findings

What went well

  • The completed Luca-tagged bike work gives a coherent progression: endurance, endurance-plus overload, short-power control, true easy support, condensed gravel pressure, easy pre-simulation spin, then a full Ghost simulation.
  • June 10 and June 12 were controlled enough to serve the larger block.
  • June 9 delivered a short-power stimulus without a major TSS overshoot.
  • June 11 did not hit full planned volume, but it included meaningful pressure and likely reduced fatigue before the June 13 simulation.
  • June 13 delivered the key rehearsal load almost exactly as planned: 4.97 h, 279 TSS, 135.2 km, 1579 m climbing, 3272 kJ, NP 195 W, and VI 1.06.

Main concerns

  • Subjective recovery data is thin. Daily readiness was often Unconfirmed because sleep, soreness, fatigue, back/SI, GI, and RPE feedback were missing.
  • June 8 exceeded the intended absorb-and-protect load. This is the main small red flag in the data.
  • June 11 ended substantially short. This may be wise load management or may signal fatigue/logistics. We need the reason.
  • June 13 showed excellent plan execution, including the final four 5-minute pressure reps. HR became unusable after the monitor failed around 2:20, so fuelling, fluid/sodium, heat, RPE, and back/SI follow-up remain important before final race-week decisions.
  • Strength/gym completion is unclear. The only Luca-tagged strength/activation item in the window was uncompleted, while non-Luca strength entries had no files. Do not assume gym work happened.
  • HR was unavailable in the June 7-12 live analysis files, so internal load for those rides is inferred from power/TSS only. June 13 HR is partial only and should not be used for late-ride drift analysis.

Recommendations for planned activities through 2026-06-27

These recommendations use the completed June 13 simulation as the key decision point. The race fitness box is largely checked; the work now is absorption, fuelling certainty, equipment certainty, and controlled sharpness.

2026-06-14 Optional recovery spin

Keep as written in principle, but bias strongly toward recovery after the completed 279 TSS simulation. Full rest is acceptable; a very short recovery spin is only useful if it improves legs.

Adjustment recommendation:

  • Make June 14 full rest or 30-45 minutes maximum recovery spin.
  • Do not chase volume because June 11 was short. The simulation supersedes that gap.
  • No strength.

2026-06-15 Rest day

Keep as written: full rest.

Adjustment recommendation:

  • No ride. Gentle mobility only if it clearly improves comfort.
  • Prioritize carbohydrate repletion, protein consistency, and sleep.

2026-06-16 Threshold sharpening 3 x 10 min

This is the first decision point after the simulation.

Recommended adjustment:

  • If Sidney reports normal fatigue only, good sleep, no back/SI issue, and no GI fallout: keep threshold sharpening, but start with 2 x 10 min at 94-98% FTP and add the third rep only if power, RPE, back/SI, and cadence are clean.
  • If she reports heaviness, poor sleep, back/SI symptoms, poor gut response, or high RPE drift from June 13: replace with 60-90 minutes endurance only and skip threshold.
  • If subjective feedback is missing: default to 2 x 10 min maximum, not 3 x 10 min.

2026-06-17 Endurance with cadence 1:30

Keep the aerobic cadence day, but protect it from becoming another June 8 style overshoot.

Recommended adjustment:

  • Cap at 1:15-1:30.
  • Keep cadence efforts aerobic, 95-105 rpm, no power chasing.
  • Optional movement reset should remain 10-15 minutes and stop before it feels like training.

2026-06-18 Recovery day

Keep as written.

Adjustment recommendation:

  • No structured training.
  • Use this as the checkpoint before the final gravel endurance day. If Sidney is not clearly rebounding by this day, reduce June 19.

2026-06-19 Final gravel endurance 3:15-3:30

This is the second major conditional workout before race week.

Recommended adjustment:

  • If June 13 and June 16 are both absorbed well: keep 3:00-3:15 with limited 90-95% pressure, but cap the day and avoid extra volume.
  • If June 13 is hard to absorb or June 16 is reduced: ride 2:15-2:45 endurance only, or skip the ride if symptoms/fatigue persist.
  • If back/SI or systemic heaviness appears: remove the 90-95% efforts and keep endurance.
  • There is no reason to chase another 279 TSS rehearsal.

2026-06-20 Optional recovery spin

Keep optional.

Adjustment recommendation:

  • Full rest is preferable if June 19 included pressure work.
  • If spinning, 45 minutes is enough.

2026-06-21 Easy endurance 1:15

Keep as flexible support.

Adjustment recommendation:

  • Ride only if it improves rhythm before the June 22 tune.
  • If Friday/Saturday left heaviness, take full rest.
  • Do not exceed 1:15.

2026-06-22 Threshold tune 1:15

Keep as a sharpness session only if freshness is present.

Recommended adjustment:

  • If fresh: keep 2 x 5 min at 95-100% FTP plus 3 x 15 sec accelerations.
  • If any fatigue is present: reduce to 1 x 5 min and 2 accelerations.
  • If travel stress or poor recovery is already showing before June 23: make this an easy spin and preserve freshness.

2026-06-23 Travel to Alberta

Keep as travel/recovery.

Adjustment recommendation:

  • No meaningful training load.
  • Use the optional movement reset only if it reduces stiffness after travel.
  • Confirm bike, kit, charging, repair, bottles, and race nutrition after arrival.

2026-06-24 Gravel feel 1:00-1:15

Keep as a logistics and terrain-feel session, not a workout to prove fitness.

Recommended adjustment:

  • If travel fatigue is low: keep 2-3 x 3 min at 85-90% FTP.
  • If travel fatigue or logistics are high: ride 45-60 minutes easy and skip pressure checks.
  • Optional activation should stay one easy round only.

2026-06-25 Race prep day

Keep as written: no recon ride.

Adjustment recommendation:

  • Do not replace a missed June 24 gravel feel unless explicitly reopened.
  • Prioritize food, hydration, number pickup/logistics, equipment, bottles, and calm.

2026-06-26 Pre-race openers

Keep if Sidney is fresh enough for openers to improve feel.

Recommended adjustment:

  • If fresh: keep 3 x 1 min at 100-105% FTP and 3 x 12 sec fast openers.
  • If stale, heavy, or travel-affected: reduce to 2 x 1 min and 2 x 12 sec, or easy spin only.
  • No extra volume and no makeup recon.

2026-06-27 Ghost of the Gravel

Race day plan remains appropriate from current evidence.

Execution emphasis:

  • Fuel early and consistently, 90-100 g carbohydrate per hour if practised successfully.
  • Sodium target 700-1000 mg/hr depending on heat and sweat rate.
  • Fluid target 600-800 mL/hr adjusted for conditions.
  • Start controlled enough to keep positioning and fuelling intact.
  • Let the first half feel composed, fuel before hunger, drink before thirst, and preserve the ability to repeat the kind of final-hour pressure she executed successfully in the simulation.
  • Treat the final hour as an active race window only if race-week freshness and gut confidence support it.

Specific questions for Sidney

These questions would materially improve the next review agent's confidence.

  1. June 6: Did the 25 minute run-walk or 1 hour core create any back, SI, hip-flexor, abdominal, calf, or ankle soreness in the next 24-48 hours?
  2. June 8: Did any gym/strength work happen? If yes, what movements, duration, load, and next-day soreness?
  3. June 9: Did core work happen around the ride? Any soreness or fatigue response?
  4. June 10: Was the optional treadmill run-walk skipped, or completed without a TrainingPeaks file?
  5. June 11: Why was the gravel primer 55 minutes shorter than planned: fatigue, symptoms, time, weather, route, equipment, or deliberate choice?
  6. June 11: Was there any back/SI tightness, unusual RPE, or fuelling/GI issue during the pressure work?
  7. June 12: Did she add the recommended pre-ride carbohydrate after the carb-light breakfast?
  8. June 13 simulation: What did she take on-bike by hour: carbohydrate, fluid, sodium, caffeine, and products?
  9. June 13 simulation: Any GI symptoms from the breakfast timing or from the race-bottle concentration?
  10. June 13 simulation: How did the final hour feel: controlled pressure, survival, or still race-capable?
  11. June 13 simulation: Any back/SI, hip, foot, calf, hand, or neck issues during or after?
  12. June 13 simulation: Did the final four pressure efforts feel controlled, hard-but-repeatable, or close to the limit?
  13. June 13 simulation: What was the perceived effort in the final 30 minutes compared with the first hour?

Bottom line

The completed Luca-tagged TrainingPeaks data now show the full June 6-13 build into the key Ghost simulation: 16.32 hours and 786.9 TSS across seven completed bike sessions. The week included one hotter-than-intended easy day on June 8, one well-executed control day on June 9, a properly easy support day on June 10, a shortened but still meaningful gravel primer on June 11, a suitable easy spin on June 12, and a successful full Ghost simulation on June 13.

The June 13 ride is the decisive anchor: Sidney completed the key rehearsal at almost exactly planned load and executed the final-hour pressure work successfully. The coaching response should be to absorb it, not build on top of it. The next two weeks should preserve the race-readiness gained from that ride while confirming recovery and fuelling reliability. Keep recovery intact, make June 16 and June 19 conditional, keep gym/activation work optional and light, and treat fuelling execution details as the most important missing evidence before race day.