TrainingPeaks publish report: July 22 to September 13
- Executed: 2026-07-07 by Cowork session, per
planning/2026-07-07-tp-publish-instructions-jul-08-to-sep-13.md - Scope: the 67 remaining
TrainingPeaks ID: pendingcalendar sections (Jul 8-21 and the Jul 22 bike ride were already published with IDs) - Athlete ID 1575220 passed explicitly on every call. Create-only; no pre-existing item touched.
Totals
67 items created: 42 bike workouts, 8 strength workouts, 6 runs, 10 Day Off items (7 recovery days + 3 travel days, following the June rest-day pattern), 1 event. Every item read back after create; every calendar section now carries a real ID and grep "TrainingPeaks ID: pending" across the range returns nothing.
Pre-publish checks
- Auth valid via keyring (athlete 1575220). The
/users/v3/user402 bug did not reproduce. - Live power zones match
context/power-zones.mdexactly (Z1 0-145 ... Z6 315-2000, FTP 260). No drift. - Only pre-existing item in the window: our own 2026-07-22 "Endurance 2:00" (3833232317). No Gunnar items, no collisions, no events.
Deviations and limitations
- CX subtype not set:
tp_get_workout_typesreturns a persistent server error, so CX-surface days were published as sport Bike without a subtype ID. Titles carry the CX context. - FTP retest (Aug 18, 3833248279) published description-only: the structure validator requires numeric %FTP on every step, and the 20-min test step is "maximal even effort". The full protocol is spelled out in the description, as the instructions allow.
- Maximal short efforts in structures: the Sep 1 starts and Sep 8 accelerations were encoded as 150-300% FTP steps named "(maximal)" since TP requires numeric targets. Recovery durations for "full recovery" were set to fit the planned session length (2:30 after starts, 4:00 / 2:48 in openers).
- "Endurance to finish" steps (Jul 25, Aug 1, Aug 15) had no listed duration; set to fill the 3:30 lower-bound total (30/46/45 min).
- Nested 30/30 set blocks (Jul 28, Aug 25) flattened to alternating repetition blocks and 8-min recovery steps, per the tool's documented multi-set pattern.
- Event 39391662 (Canmore C2, Sep 13): priority C persisted and verified. Event type does NOT persist — "Cyclocross", then fallbacks "MountainBiking" and "RoadCycling" all read back as
Undefined. This is a live TP API/mapping limitation; the type may need to be set manually in the TP UI. The event object also has no tag field, so it carries nolucatag. - Descriptions normalized to Canadian English (fuelling/fuelled) where source files had American spellings (Aug 8, 18, 22, 29, Sep 13). Source calendar files were not edited beyond ID writeback.
Created IDs
- 2026-07-22 Run 25 min with easy hills: 3833244252
- 2026-07-23 CX skills 1:30: 3833244282
- 2026-07-24 Easy spin 1:00: 3833244312 | Gym: posterior chain 2: 3833244340
- 2026-07-25 Long ride 3:30 with late pressure: 3833245079 (structured, TSS 181.2)
- 2026-07-26 Endurance 1:45: 3833245100
- 2026-07-27 Recovery day: 3833245110
- 2026-07-28 30/30s, 3 sets of 8: 3833245672 (structured, TSS 91.9) | Gym: posterior chain 3: 3833245871
- 2026-07-29 Endurance 2:00 heat session: 3833246152
- 2026-07-30 CX skills and starts 1:30: 3833246366
- 2026-07-31 Easy spin 1:00: 3833247393 | Gym: posterior chain 4: 3833247404
- 2026-08-01 Long ride 3:30 with race-pace blocks: 3833247438 (structured, TSS 185.4)
- 2026-08-02 Endurance 1:30: 3833247471 | Run 25 min with hill strides: 3833247478
- 2026-08-03 Travel to Vermont: 3833247592
- 2026-08-04 Camp ride: endurance: 3833247612
- 2026-08-05 Camp quality day: 3833247638
- 2026-08-06 Camp ride: easy with technical play: 3833247650
- 2026-08-07 Camp ride: endurance with tempo touches: 3833247662
- 2026-08-08 Camp final ride: 3833247670
- 2026-08-09 Travel home, optional spin: 3833247776
- 2026-08-10 Recovery day: 3833247793
- 2026-08-11 Race-pace repeatability 5 x 3 min: 3833247820 (structured, TSS 78.6) | Gym: posterior chain 5: 3833247835
- 2026-08-12 Endurance 2:00 heat session: 3833247896 | Run 25 min with hill strides: 3833247911
- 2026-08-13 CX skills and starts 1:30: 3833247998
- 2026-08-14 Easy spin 1:00: 3833248006 | Gym: posterior chain 6: 3833248096
- 2026-08-15 Long ride 3:30-4:00, final durability ride: 3833248122 (structured, TSS 189.8)
- 2026-08-16 Endurance 2:00: 3833248137
- 2026-08-17 Recovery day: 3833248146
- 2026-08-18 FTP retest: 3833248279 (description-only, see deviation 2)
- 2026-08-19 Easy spin 1:15: 3833248289 | Gym: maintenance 1: 3833248363
- 2026-08-20 Short-power retest: 3833248365
- 2026-08-21 Easy spin 1:00: 3833248368 | Run 20 min easy: 3833248370
- 2026-08-22 CX race simulation 1: 3833248511
- 2026-08-23 Travel to Alberta: 3833248523
- 2026-08-24 Recovery day: 3833248536
- 2026-08-25 30/30s maintenance, 2 sets of 8: 3833248568 (structured, TSS 70.5) | Gym: maintenance 2: 3833248579
- 2026-08-26 Endurance 1:45: 3833248603
- 2026-08-27 CX skills 1:30: 3833248761
- 2026-08-28 Easy spin 1:00: 3833248768
- 2026-08-29 CX race simulation 2: 3833248781
- 2026-08-30 Endurance 2:15: 3833248808 | Run 20 min with strides: 3833248822
- 2026-08-31 Recovery day: 3833248828
- 2026-09-01 Starts and 1-min sharpener: 3833249030 (structured, TSS 104.2) | Gym: light maintenance: 3833249037
- 2026-09-02 Endurance 1:30: 3833249045 | Run 15 min easy: 3833249059
- 2026-09-03 CX skills at race speed 1:15: 3833249066
- 2026-09-04 Easy spin 1:00: 3833249078
- 2026-09-05 CX race simulation 3, short and sharp: 3833249274
- 2026-09-06 Endurance 1:30: 3833249286
- 2026-09-07 Recovery day: 3833249304
- 2026-09-08 Openers 1:00: 3833249339 (structured, TSS 64.6)
- 2026-09-09 Easy spin with CX touch: 3833249355
- 2026-09-10 Rest or 45 min easy: 3833249362
- 2026-09-11 Travel to Canmore, easy ride: 3833249478
- 2026-09-12 Pre-race openers and course recon: 3833249497
- 2026-09-13 Canmore C2 — season opener: event 39391662 (priority C verified; eventType Undefined, see deviation 6)
Amendment (2026-07-07, same session)
Per operator request after the initial publish:
- Structured workout blocks added to all 32 previously description-only bike sessions via
tp_update_workout(spins as single easy steps, endurance/heat/camp rides as warm-up/endurance/cool-down, camp quality day as the solo 4x4 option, CX skills sessions as named skills blocks plus maximal-start repeats at 150-300% FTP, race sims with a race-rhythm block at 85-105% FTP, Sep 11/12 with their acceleration and opener sets). Every Luca-created bike workout now carries in-activity workout blocks with server-computed TSS/IF. Still description-only by design: strength (8), runs (6), rest/travel Day Off items (10), and the two maximal benchmark days (FTP retest 3833248279, short-power retest 3833248365) where numeric targets would be invented. - Wording rule: "touch/touches" removed everywhere. TP titles and calendar files renamed: 2026-08-07 → "Camp ride: endurance with tempo efforts" (3833247662), 2026-09-09 → "Easy spin with CX flow" (3833249355), including calendar Id slugs (no external references existed). Rule recorded in
athlete/skills/trainingpeaks-activity-creator/SKILL.mdalongside a standing rule to prefer structured blocks on every bike session.
Amendment 2 (2026-07-08)
The Jul 8-21 items, published earlier by a separate session, had the same gap plus formatting artifacts. Fixed via tp_update_workout: structured blocks added to all 10 unstructured bike rides in that window plus the pre-existing Jul 22 ride (3833232317); Jul 21 VO2 4x4 (3833226845) got its intended interval structure which the earlier publish had failed to build; raw ### markdown headers pasted into 13 descriptions were cleaned to the standard Workout / Fuelling / Notes format; American "fueling/fueled" corrected, including the Jul 18 title, now "Long endurance 3:00 with fuelling verification" in both TP and the calendar file. Jul 14 FTP test and Jul 16 short-power benchmarks remain description-only (maximal test days), with their protocols spelled out in plain text. Verified by full Jul 8-21 readback: every bike ride except the two test days now shows structure-derived TSS.
Amendment 3 (2026-07-08): off-bike climbing block
Operator requested special focus on leg strength, stair climbing, and hill running repeats for off-bike climbing. Changes made in both the calendar files and live TP:
- Gym add-ons (climbing-specific): weighted step-ups and single-leg calf raises added to posterior chain 2 (3833244340), 4 (3833247404), and 5 (3833247835); calf raises added to posterior chain 3 (3833245871) and 6 (3833248096), which already carry step-downs; light step-ups and calf raises added to maintenance 1 (3833248363, now ~40 min) and 2 (3833248579, hold load). Sep 1 light session untouched (taper).
- Runs upgraded from strides to hill repeats: Aug 12 → "Run 25 min with hill repeats", 6 x 30 sec uphill (3833247911); Aug 30 → "Run 20 min with hill repeats", 5 x 30 sec uphill, last one before the race (3833248822). Jul 22 easy-hills run and Aug 2 first-strides run left as the progression base; Aug 21 and Sep 2 runs stay easy (pre-sim and taper).
- New stair sessions on light days: 2026-07-29 "Stair climbing intro 15 min" → TP 3838416230; 2026-08-26 "Stair repeats 20 min" (Edmonton, altitude note included) → TP 3838416270. Both sport Run, tag luca, ankle/calf/SI caution retained, IDs written back to the calendar files.
- Progression logic: strength base and stair rhythm first (late July), loaded step-ups through the August build, hill/stair repeats peaking Aug 26-30, then only the existing CX skills run-ups from Sep 1 onward so the taper is untouched. CX skills sessions already rehearse run-ups at race speed and were not changed.
Amendment 4 (2026-07-11): blocks on test days, runs, and stair sessions
Operator confirmed blocks should exist on every activity. Added via tp_update_workout:
- Bike test days now carry structure with maximal steps as labelled wide ranges: FTP test Jul 14 (3833095200) and FTP retest Aug 18 (3833248279) with "20 min test: maximal even effort" at 100-120 %FTP; short-power benchmarks Jul 16 (3833095231) and retest Aug 20 (3833248365) with all-out steps at 150-300 / 130-200 / 110-140 %FTP.
- All runs and stair sessions structured with percentOfThresholdPace: run/walks Jul 12 (3833094458) and Jul 17 (3833095255), Jul 22 easy-hills run (3833244252), Aug 2 hill strides (3833247478), Aug 12 and Aug 30 hill repeats (3833247911, 3833248822), Aug 21 and Sep 2 easy runs (3833248370, 3833249059), stair sessions Jul 29 (3838416230) and Aug 26 (3838416270).
- Remaining description-only by design: strength sessions and rest/travel Day Off items, where TP structure has no meaningful rendering. The supplement skill rule was updated accordingly.
- Verified by Jul 11-21 readback: every ride and run in the window now shows structure-derived TSS (FTP test 96.6, benchmarks 117.3).
Verification
Final tp_get_workouts 2026-07-22 to 2026-09-13 returns 67 workouts (66 new + the pre-existing Jul 22 ride) and tp_get_events returns the one event — matching the calendar exactly. All readbacks confirmed date, title, sport type, tags luca, and structure presence on the 8 structured workouts.