@isparling/engram-coach 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -18
- package/SETUP.md +559 -0
- package/SKILL_PACK.md +75 -0
- package/analyses/catalog.md +257 -0
- package/analysis-tools/hrv-trend.ts +592 -0
- package/analysis-tools/migrate-structured-capture.ts +234 -0
- package/analysis-tools/race-context.ts +96 -0
- package/analysis-tools/stream-analyze.ts +1008 -0
- package/analysis-tools/tsb-predict.ts +117 -0
- package/capture-handler.ts +301 -0
- package/config.json.example +21 -0
- package/engram-coach-ambient-capture.ts +336 -0
- package/engram-coach-capture-types.ts +185 -0
- package/engram-coach-config.ts +268 -0
- package/engram-coach-domain.ts +7 -2
- package/engram-coach-keys.ts +189 -0
- package/engram-coach-materialization.ts +638 -0
- package/engram-coach-migration.ts +1078 -0
- package/engram-coach-pack.ts +17 -12
- package/engram-coach-presentation.ts +10 -1
- package/engram-coach-reconciliation.ts +305 -2
- package/engram-coach-structured-capture.ts +622 -0
- package/package.json +39 -6
- package/personas/aggressive-monitoring.md +121 -0
- package/personas/aggressive.json +85 -0
- package/personas/conservative-monitoring.md +133 -0
- package/personas/conservative.json +93 -0
- package/personas/polarized-monitoring.md +112 -0
- package/personas/polarized.json +72 -0
- package/personas/volume-monitoring.md +85 -0
- package/personas/volume.json +108 -0
- package/shared/retrieval.md +71 -0
- package/shared/setup.md +207 -0
- package/skills/.gitkeep +0 -0
- package/skills/adapt-plan/SKILL.md +263 -0
- package/skills/block-review/SKILL.md +275 -0
- package/skills/consult/SKILL.md +176 -0
- package/skills/intake/SKILL.md +315 -0
- package/skills/lactate-analyze/SKILL.md +230 -0
- package/skills/lessons-rollup/SKILL.md +196 -0
- package/skills/monitoring-rollup/SKILL.md +208 -0
- package/skills/race-analysis/SKILL.md +219 -0
- package/skills/season-retrospective/SKILL.md +200 -0
- package/skills/set-goal/SKILL.md +297 -0
- package/templates/base.md +55 -0
- package/templates/build-1.md +57 -0
- package/templates/build-2.md +62 -0
- package/templates/race-report.md +51 -0
- package/templates/race-specificity.md +62 -0
- package/templates/season-review.md +40 -0
- package/engram-coach-extractor.ts +0 -295
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: set-goal
|
|
3
|
+
description: Use when establishing a new training arc toward a new goal — typically between major training cycles, after a race, or when goals change. Produces a full arc: canonical arc-overview and methodology documents written directly, plus durable workout identities, structured prescription records, and explicit conclusions captured through the previewed engram capture channel; prescription YAML and consultation logs are generated views produced by materialization. Distinct from intake (one-time athlete setup) and consult (advice within an existing plan). Requires Intervals.icu MCP and config.json configured.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Set Goal
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Workflow for establishing a new training arc toward a new goal. An "arc" is the multi-block journey from now to a target event (or fitness-maintenance goal). Decomposes into 2-4 named sub-blocks, each with its own methodology document; prescription state lives as structured records keyed by arc and durable session id. The arc is the unit of season-level planning; sub-blocks are the unit of `adapt-plan` and `block-review`.
|
|
11
|
+
|
|
12
|
+
**Authority split:** the arc-overview document and every methodology document are canonical, approved documents this skill writes itself. Prescription YAML and consultation logs are GENERATED compatibility views rendered from active Engram records by materialization — never write or edit them directly.
|
|
13
|
+
|
|
14
|
+
**This skill is RIGID — phases execute in exact order. Do not skip, reorder, or combine phases.**
|
|
15
|
+
|
|
16
|
+
**When to use this skill vs. others:**
|
|
17
|
+
- `intake` — one-time athlete onboarding (persona, paths, season). Run once per athlete.
|
|
18
|
+
- `set-goal` — recurring "what's next" planning at season transitions, post-race, or when goals change. Produces a full arc with methodology docs plus structured prescription records.
|
|
19
|
+
- `consult` — advisory within an existing plan. Appends a consultation event and targeted prescription edits, not a full arc.
|
|
20
|
+
- `adapt-plan` — per-session post-workout adaptation.
|
|
21
|
+
|
|
22
|
+
## Workflow
|
|
23
|
+
|
|
24
|
+
```dot
|
|
25
|
+
digraph set_goal {
|
|
26
|
+
"Phase 1: Orient" [shape=box];
|
|
27
|
+
"Phase 2: Gather (goal+constraints)" [shape=box];
|
|
28
|
+
"Phase 3: Synthesize (arc shape + change set)" [shape=box];
|
|
29
|
+
"Phase 4: Propose (preview under one hash)" [shape=box];
|
|
30
|
+
"Athlete approves?" [shape=diamond];
|
|
31
|
+
"Phase 5: Write docs, apply hash, materialize" [shape=box];
|
|
32
|
+
|
|
33
|
+
"Phase 1: Orient" -> "Phase 2: Gather (goal+constraints)";
|
|
34
|
+
"Phase 2: Gather (goal+constraints)" -> "Phase 3: Synthesize (arc shape + change set)";
|
|
35
|
+
"Phase 3: Synthesize (arc shape + change set)" -> "Phase 4: Propose (preview under one hash)";
|
|
36
|
+
"Phase 4: Propose (preview under one hash)" -> "Athlete approves?";
|
|
37
|
+
"Athlete approves?" -> "Phase 5: Write docs, apply hash, materialize" [label="yes"];
|
|
38
|
+
"Athlete approves?" -> "Phase 3: Synthesize (arc shape + change set)" [label="revise"];
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
### Pre-Phase Setup _(no user input — run silently)_
|
|
45
|
+
|
|
46
|
+
Follow **`${CLAUDE_PLUGIN_ROOT}/shared/setup.md`** — the shared configuration
|
|
47
|
+
preamble (paths, config, profile, persona, athlete profile).
|
|
48
|
+
|
|
49
|
+
**Optional steps this skill declares:** PRESCRIPTIONS, SEASON, MCP
|
|
50
|
+
|
|
51
|
+
Do not proceed past a stop condition defined there.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### Phase 1 — Orient _(no user input)_
|
|
55
|
+
|
|
56
|
+
Read silently and announce findings before asking anything.
|
|
57
|
+
|
|
58
|
+
1. **Recent block reviews** — find the most recent `SUMMARY.md` files under `{coaching_docs_dir}/{season}/*/SUMMARY.md`. Read up to 3 most recent.
|
|
59
|
+
2. **Recent race reports** — find the most recent `RACE_REPORT.md` files under `{coaching_docs_dir}/{season}/races/*/RACE_REPORT.md`. Read up to 2 most recent.
|
|
60
|
+
3. **Active prescription check** — read the active generated prescription view(s) under `prescriptions_dir`. Find the session with the most recent `session_date`. Note when that block ended (most recent date) and how many days have elapsed since.
|
|
61
|
+
4. **Current fitness state** — call `get_fitness_summary` via Intervals.icu MCP to retrieve current CTL, ATL, TSB.
|
|
62
|
+
5. **QMD history search**:
|
|
63
|
+
- `qmd query "arc planning"` and `qmd query "next block"` — surface any prior arc-planning records
|
|
64
|
+
- `qmd query "{persona} {modality}"` — surface persona-modality fit notes from ATHLETE_PROFILE
|
|
65
|
+
|
|
66
|
+
Follow `${CLAUDE_PLUGIN_ROOT}/shared/retrieval.md` when constructing these — parameterize with the specifics below, and add queries for whatever this particular goal actually raises.
|
|
67
|
+
|
|
68
|
+
Announce findings before Phase 2. Surface:
|
|
69
|
+
- Days since last race or block-end
|
|
70
|
+
- Current CTL/ATL/TSB
|
|
71
|
+
- Persona-fit notes for likely-relevant modalities
|
|
72
|
+
- Any prior arc-planning patterns from QMD
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### Phase 2 — Gather _(one question at a time)_
|
|
77
|
+
|
|
78
|
+
Ask only what cannot be inferred from the orient findings. **Ask one question at a time. Wait for each answer before asking the next.**
|
|
79
|
+
|
|
80
|
+
Required information by end of Phase 2:
|
|
81
|
+
|
|
82
|
+
1. **The goal.** Specific event (name + date + modality) OR fitness-maintenance goal (description + horizon).
|
|
83
|
+
2. **Modality specifics.** Bike type / sport / specific equipment if relevant. Locked vs leaning.
|
|
84
|
+
3. **Recovery status.** How the athlete is feeling now. Days since last race; subjective sense of readiness to start.
|
|
85
|
+
4. **Calendar constraints.** Major events, vacations, work-travel, family commitments between now and the target. Both opportunities (3-day weekends, vacation that can absorb volume) and obstacles (travel that blocks training).
|
|
86
|
+
5. **Time budget.** Typical training-week structure. Weekday availability, weekend long-ride capacity, non-negotiables (e.g., recurring group rides, family commitments).
|
|
87
|
+
6. **Lifestyle/modality preferences.** Outdoor vs indoor preference, strong likes/dislikes, anything that should shape the prescription style.
|
|
88
|
+
|
|
89
|
+
Some of these may be obvious from the Orient findings (e.g., ATHLETE_PROFILE already records modality and persona-fit). If so, confirm rather than ask blind.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
### Phase 3 — Synthesize _(shown to athlete)_
|
|
94
|
+
|
|
95
|
+
Reason aloud about arc shape before proposing anything. Cover:
|
|
96
|
+
|
|
97
|
+
1. **Goal framing.** What the goal requires physiologically (durability, peak power, specific modality stress) and how it differs from prior goals the athlete has trained for.
|
|
98
|
+
2. **Persona-fit.** Whether the active persona is the right tool for this goal. Reference ATHLETE_PROFILE persona-fit notes. If a persona change is warranted, surface it explicitly here (and recommend re-running `intake` if so).
|
|
99
|
+
3. **Calendar mapping.** Map the calendar constraints from Phase 2 onto the time-to-goal window. Identify natural volume opportunities (vacations, long weekends) and structural obstacles.
|
|
100
|
+
4. **Arc shape proposal — sub-block decomposition.** Propose 2-4 named sub-blocks. Each sub-block should be 1-5 weeks. Total arc length matches time-to-goal. Sub-block names should be descriptive (`reengage`, `volume`, `camp`, `taper` or `base`, `build`, `race-specificity`, `taper` — whatever fits the arc).
|
|
101
|
+
5. **Modality split across the arc.** How time/volume distributes across training modalities (e.g., trainer/outdoor, ride/walk, geared/SS).
|
|
102
|
+
6. **Carryover lessons.** Specifically cite ATHLETE_PROFILE entries that should shape the arc (`[race:...]`, `[block-review:...]` tags).
|
|
103
|
+
7. **Key tradeoffs.** What this arc is choosing to NOT do vs. a "textbook" approach for the goal, and why those choices fit this athlete.
|
|
104
|
+
|
|
105
|
+
This phase is **explanatory** about coaching reasoning — but while reasoning,
|
|
106
|
+
build the complete structured change set IN PARALLEL so Phase 4 can preview it:
|
|
107
|
+
|
|
108
|
+
**Durable session identity.** Generate each session's durable `session_id` ONCE
|
|
109
|
+
(any stable unique slug, e.g. `ses{year}w{week}{day}`) and reuse that exact
|
|
110
|
+
value in EVERY place the session appears: its prescription state item, its
|
|
111
|
+
workout reference, narrative text, and the arc overview outline. The
|
|
112
|
+
`session_date`, week position, title, and workout contents are MUTABLE
|
|
113
|
+
attributes — rescheduling a session later changes those attributes but never
|
|
114
|
+
its `session_id` or identity.
|
|
115
|
+
|
|
116
|
+
**The change set.** Assemble ONE `StructuredChangeSet` covering the complete
|
|
117
|
+
graph:
|
|
118
|
+
|
|
119
|
+
- One prescription state item per planned session. `key_components` MUST carry
|
|
120
|
+
BOTH `arc_id` (the snake_case arc name) AND that session's durable
|
|
121
|
+
`session_id`; `details` carries the FULL prescription value for the session
|
|
122
|
+
(week, day, session date, name, modality, duration, effort zone or interval
|
|
123
|
+
structure, plus the shared arc goal object). Every session gets a complete
|
|
124
|
+
value — no placeholders to be filled in later.
|
|
125
|
+
- Optionally one consultation event capturing significant goal-setting
|
|
126
|
+
reasoning that does not fit the methodology documents (the kickoff note),
|
|
127
|
+
with `action_targets` naming the affected durable session ids.
|
|
128
|
+
- Explicit report claims for the conclusions embedded in the documents you are
|
|
129
|
+
about to write: one `arc-conclusion` claim anchored to the arc's first
|
|
130
|
+
prescription entity, and one `methodology-conclusion` claim per sub-block
|
|
131
|
+
anchored to a representative session of that sub-block. Each claim carries
|
|
132
|
+
its intended `source_document` path.
|
|
133
|
+
|
|
134
|
+
The skill NEVER assigns record IDs, relationships (supersedes/refines/
|
|
135
|
+
supports), statuses, or retirement targets — those are derived and owned by
|
|
136
|
+
the pack during preview. If any session cannot be given a durable, unique
|
|
137
|
+
`session_id`, stop and resolve that here; an unbound session must never reach
|
|
138
|
+
Phase 4.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### Phase 4 — Propose _(requires explicit approval of ONE hash)_
|
|
143
|
+
|
|
144
|
+
Convert Phase 3 reasoning into a concrete arc structure, then bind everything
|
|
145
|
+
to a single approval:
|
|
146
|
+
|
|
147
|
+
1. **Preview FIRST.** Before presenting anything, call `engram_capture_preview`
|
|
148
|
+
with the complete change set. The pack derives every canonical entity key,
|
|
149
|
+
reconciles against active records, and returns the exact mutation plan plus
|
|
150
|
+
its `plan_hash`.
|
|
151
|
+
2. **Check the preview.** Every prescription key must be bound —
|
|
152
|
+
`prescription:{arc_id}:{session_id}` with both components present. If ANY
|
|
153
|
+
session key came back unbound or ambiguous (or the preview is blocked),
|
|
154
|
+
CORRECT THE GRAPH (fix the `session_id`s / `arc_id`) and call
|
|
155
|
+
`engram_capture_preview` AGAIN. Never ask for approval against a blocked or
|
|
156
|
+
partially-bound preview.
|
|
157
|
+
3. **Present together, under one approval:**
|
|
158
|
+
- For each sub-block: **Block name** (snake_case), **Dates** (start → end),
|
|
159
|
+
**Duration in weeks**, **Intent**, **Weekly structure outline**, and
|
|
160
|
+
**Success criteria**.
|
|
161
|
+
- The proposed **Arc name**, **Goal block**, and the canonical documents to
|
|
162
|
+
be written: the arc-overview document and each methodology document.
|
|
163
|
+
- The exact record mutations from the preview: which records will be
|
|
164
|
+
created (new prescription states, the kickoff consultation event, and the
|
|
165
|
+
arc/methodology report claims).
|
|
166
|
+
- The generated compatibility-view paths materialization will produce from
|
|
167
|
+
those records (the arc's prescription view and the consultation log) —
|
|
168
|
+
presented as outputs of apply, never as files you will write by hand.
|
|
169
|
+
- The exact **plan hash**.
|
|
170
|
+
4. Wait for **explicit approval, rejection, or modification**. Approval covers
|
|
171
|
+
BOTH the coaching proposal AND the record/artifact mutations under that
|
|
172
|
+
hash. Iterate: any modification returns to Phase 3 to rebuild the change
|
|
173
|
+
set, re-previews, and presents a NEW hash. Do not write any files until the
|
|
174
|
+
athlete approves the current hash.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
### Phase 5 — Write canonical documents, then apply _(with approval)_
|
|
179
|
+
|
|
180
|
+
Execute in this order.
|
|
181
|
+
|
|
182
|
+
**1. Arc directory + canonical documents.** Create the arc directory and write
|
|
183
|
+
the two kinds of CANONICAL, approved documents exactly as approved:
|
|
184
|
+
|
|
185
|
+
**Arc overview doc** — `{coaching_docs_dir}/{season}/{arc_name}/arc-overview.md`
|
|
186
|
+
|
|
187
|
+
Frontmatter:
|
|
188
|
+
```yaml
|
|
189
|
+
---
|
|
190
|
+
type: arc-overview
|
|
191
|
+
season: {season}
|
|
192
|
+
arc: {arc_name}
|
|
193
|
+
target_event: {event name}
|
|
194
|
+
target_date: {date}
|
|
195
|
+
modality: {modality}
|
|
196
|
+
persona: {active_persona}
|
|
197
|
+
---
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Body covers:
|
|
201
|
+
- Why this arc exists; what it differs from prior arcs
|
|
202
|
+
- Arc shape table (sub-block / weeks / dates / intent) — reference sessions by their durable `session_id`
|
|
203
|
+
- Modality split across the arc
|
|
204
|
+
- Success criteria (race outcome + mid-arc fitness markers)
|
|
205
|
+
- Brake signals (arc-level)
|
|
206
|
+
- Carryover lessons embedded in the arc (cite ATHLETE_PROFILE tags)
|
|
207
|
+
- Open questions / mid-arc checkpoints
|
|
208
|
+
- File index (lists the methodology documents and notes that prescription/consultation views generate from records)
|
|
209
|
+
|
|
210
|
+
**Per-sub-block methodology doc** — for each sub-block, write `{coaching_docs_dir}/{season}/{arc_name}/{sub_block_name}-methodology.md`
|
|
211
|
+
|
|
212
|
+
Frontmatter:
|
|
213
|
+
```yaml
|
|
214
|
+
---
|
|
215
|
+
type: methodology
|
|
216
|
+
season: {season}
|
|
217
|
+
arc: {arc_name}
|
|
218
|
+
sub_block: {sub_block_name}
|
|
219
|
+
dates: {start} to {end}
|
|
220
|
+
duration_weeks: {N}
|
|
221
|
+
---
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Body covers:
|
|
225
|
+
- Context (what state the athlete is in entering this sub-block)
|
|
226
|
+
- Goal (one or two sentences)
|
|
227
|
+
- Why this sub-block is shaped this way (vs. a generic approach for the same role)
|
|
228
|
+
- Weekly structure pattern
|
|
229
|
+
- Progression through the sub-block (if multi-week)
|
|
230
|
+
- Key session rationale
|
|
231
|
+
- Success criteria
|
|
232
|
+
- Brake signals specific to this sub-block
|
|
233
|
+
|
|
234
|
+
These documents are the skill's direct writes. Do NOT write prescription YAML
|
|
235
|
+
or consultation logs — they are generated compatibility views.
|
|
236
|
+
|
|
237
|
+
**2. Apply the approved hash.** Call `engram_capture_apply` with the exact
|
|
238
|
+
plan hash the athlete approved. The core commits the active records, retires
|
|
239
|
+
anything superseded, runs the guarded qmd refresh, and invokes the pack
|
|
240
|
+
materializers, which GENERATE the prescription YAML view and the consultation
|
|
241
|
+
log from the newly active records.
|
|
242
|
+
|
|
243
|
+
- On success, collect the committed record IDs and the regenerated artifact
|
|
244
|
+
paths for the completion summary.
|
|
245
|
+
- If the apply reports the plan as STALE (records changed after approval), do
|
|
246
|
+
not retry blindly: return to Phase 4, re-preview the same change set, present
|
|
247
|
+
the new hash, and obtain fresh approval.
|
|
248
|
+
- Records commit authoritatively even if index refresh or materialization
|
|
249
|
+
hiccups; report any stale view honestly and retry apply with the SAME hash
|
|
250
|
+
if only materialization needs a rerun.
|
|
251
|
+
|
|
252
|
+
**3. Completion summary** — output, with the EXACT record IDs from the applied
|
|
253
|
+
plan and the EXACT generated view paths:
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
✓ Arc established: {arc_name}
|
|
257
|
+
|
|
258
|
+
Target: {event} — {date} ({modality})
|
|
259
|
+
Sub-blocks: {count} ({list of names})
|
|
260
|
+
Arc dates: {start} → {end}
|
|
261
|
+
Coaching docs: {coaching_docs_dir}/{season}/{arc_name}/
|
|
262
|
+
Records created: {committed record IDs, grouped as states/event/claims}
|
|
263
|
+
Generated views: {prescription view path}, {consultation log path}
|
|
264
|
+
|
|
265
|
+
Next steps:
|
|
266
|
+
1. {first sub-block name} starts {date}
|
|
267
|
+
2. Invoke engram-coach:adapt-plan after first key session
|
|
268
|
+
3. Invoke engram-coach:consult mid-{first sub-block} for check-in (or sooner if signals diverge)
|
|
269
|
+
4. Invoke engram-coach:block-review at each sub-block boundary
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## Key Constraints
|
|
275
|
+
|
|
276
|
+
| Rule | Detail |
|
|
277
|
+
|---|---|
|
|
278
|
+
| Rigid phases | Execute in order — no skipping, reordering, or combining |
|
|
279
|
+
| Approval gate | Nothing written until Phase 4 explicitly approves the exact plan hash |
|
|
280
|
+
| One question at a time | Phase 2 never batches questions |
|
|
281
|
+
| Synthesis before proposal | Phase 3 must complete (including the change set) before Phase 4 begins |
|
|
282
|
+
| Sub-block decomposition required | Never prescribe a single multi-month block. Always decompose into 2-4 named sub-blocks of 1-5 weeks each. |
|
|
283
|
+
| Canonical vs generated | Arc-overview and methodology documents are canonical and written by this skill; prescription YAML and consultation logs are generated views produced only by materialization — never write or edit them directly. |
|
|
284
|
+
| Durable session identity | Generate each `session_id` once; reuse it everywhere. Rescheduling mutates dates/titles, never identity. Prescription keys always carry both `arc_id` and `session_id`. |
|
|
285
|
+
| One hash binds all | Documents, record mutations, and generated paths are approved together under one plan hash; a stale apply returns to Phase 4 for a fresh preview and approval. |
|
|
286
|
+
| No record internals | The skill never chooses record IDs, relationships, statuses, or retirement targets — the pack derives them at preview. |
|
|
287
|
+
| Persona-change escalation | If Phase 3 identifies a persona mismatch, recommend re-running `intake` before continuing. Do not silently shift persona. |
|
|
288
|
+
| Knowledge compounds | Arc-overview and methodology docs are durable artifacts; structured claims and consultation events build on them. Future Orient phases benefit from the structured separation. |
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## When NOT to use this skill
|
|
293
|
+
|
|
294
|
+
- **For per-session adjustments** → use `adapt-plan` instead. set-goal is for arc-level planning, not session edits.
|
|
295
|
+
- **For mid-arc advice without restructuring** → use `consult` instead. set-goal rewrites the arc; consult appends to it.
|
|
296
|
+
- **For initial athlete onboarding** → use `intake` instead. set-goal assumes config.json + persona + paths are already set.
|
|
297
|
+
- **When the existing arc is still on track** → don't run set-goal "just to refresh." Run it when the goal changes or the prior arc has concluded.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Base Training Block
|
|
2
|
+
|
|
3
|
+
## Block Goal
|
|
4
|
+
|
|
5
|
+
Build the aerobic foundation from which all higher-intensity training is built. The primary adaptation target is maximizing mitochondrial density, fat oxidation capacity, and movement economy at low-to-moderate intensity before structured intensity work is introduced.
|
|
6
|
+
|
|
7
|
+
## Physiological Adaptations Targeted
|
|
8
|
+
|
|
9
|
+
- **Mitochondrial biogenesis** — increased density of mitochondria within slow-twitch muscle fibers, expanding the cell's capacity to produce ATP aerobically and reducing reliance on glycolysis at moderate intensities.
|
|
10
|
+
- **Enhanced fat oxidation** — improved ability to oxidize fat as a fuel source at aerobic intensities, sparing glycogen stores and extending sustainable duration.
|
|
11
|
+
- **Increased stroke volume and cardiac output** — the heart adapts to sustained aerobic demand by increasing left-ventricular volume, improving the volume of blood delivered per beat at any given heart rate.
|
|
12
|
+
- **Capillary density** — growth of new capillary networks within trained muscle, improving oxygen delivery and metabolite clearance at the cellular level.
|
|
13
|
+
- **Slow-twitch fiber recruitment efficiency** — the nervous system becomes more economical at recruiting Type I fibers for low-intensity work, reducing overall energy cost per unit of output.
|
|
14
|
+
- **Improved movement economy** — repeated aerobic sessions at consistent intensities reinforce biomechanically efficient motor patterns, reducing the metabolic cost of movement at sub-threshold intensities.
|
|
15
|
+
|
|
16
|
+
## When to Use This Block
|
|
17
|
+
|
|
18
|
+
The Base block is the first structured training block following a recovery or transition period. Athletes should have a minimum baseline aerobic tolerance — capable of completing moderate-duration aerobic sessions without significant next-day fatigue — before entering a Base block. The Base block sets the aerobic ceiling for all subsequent work: a well-executed Base directly determines how much intensity load the athlete can absorb in Build 1 and beyond.
|
|
19
|
+
|
|
20
|
+
## Weekly Session Pattern
|
|
21
|
+
|
|
22
|
+
### Key Sessions
|
|
23
|
+
|
|
24
|
+
| Session | Typical Day | Type | Purpose |
|
|
25
|
+
|---------|-------------|------|---------|
|
|
26
|
+
| Long Aerobic | Weekend (Sat or Sun) | Zone 2 endurance | Primary aerobic stimulus; builds duration tolerance and fat oxidation at the key adaptation intensity |
|
|
27
|
+
| Moderate Aerobic | Mid-week (Tue or Wed) | Zone 2 aerobic | Volume accumulation at aerobic intensity; reinforces adaptation between long weekend sessions |
|
|
28
|
+
| Optional: LT1 Assessment | Every 2-3 weeks | Sub-threshold or LT1 test | Tracks aerobic development; confirms Zone 2 targets remain calibrated to current fitness |
|
|
29
|
+
|
|
30
|
+
### Supporting Sessions
|
|
31
|
+
|
|
32
|
+
Recovery and easy sessions fill the remaining training days, keeping weekly volume high without adding meaningful physiological stress. The emphasis is on volume accumulation at low intensity — every easy session contributes to the aerobic base without creating fatigue that compromises key session quality. No high-intensity work (Zone 4 or above) belongs in a pure Base block. If intensity appears, it should be incidental — a brief climb on a Zone 2 ride — not prescribed.
|
|
33
|
+
|
|
34
|
+
## Intensity Zone Targets
|
|
35
|
+
|
|
36
|
+
| Session Type | Zone | % FTP Range | Purpose |
|
|
37
|
+
|-------------|------|-------------|---------|
|
|
38
|
+
| Long Aerobic | Zone 2 | 55-75% FTP | Primary aerobic base development; fat oxidation and mitochondrial stimulus |
|
|
39
|
+
| Moderate Aerobic | Zone 2 | 60-75% FTP | Volume accumulation; reinforce aerobic adaptation mid-week |
|
|
40
|
+
| Recovery Sessions | Zone 1 | Below 55% FTP | Active recovery; blood flow without physiological demand |
|
|
41
|
+
| LT1 Assessment (if included) | Zone 3 | 75-85% FTP | Threshold measurement baseline; calibrate zone targets |
|
|
42
|
+
|
|
43
|
+
## Volume Progression
|
|
44
|
+
|
|
45
|
+
Base blocks typically follow a 3+1 pattern: three progressive load weeks followed by one recovery week. Volume increases 5-10% per load week, allowing the athlete's aerobic system to adapt before the next dose is applied. Intensity stays constant throughout — only volume progresses; Zone 2 remains Zone 2 regardless of the week. The recovery week reduces volume to 50-60% of the peak load week, allowing accumulated fatigue to dissipate and aerobic adaptations to consolidate before the next load cycle begins.
|
|
46
|
+
|
|
47
|
+
## Common Execution Risks
|
|
48
|
+
|
|
49
|
+
- **Intensity creep** — easy sessions drifting from Zone 2 into Zone 3 due to effort calibration error, ego, or terrain. Detect early by monitoring heart rate: if aerobic sessions consistently trend into Zone 3, recalibrate effort targets. Zone 2 should feel genuinely easy — conversational pace, low perceived effort.
|
|
50
|
+
- **Volume ramp too steep** — increasing weekly volume faster than 10% per week accumulates fatigue faster than aerobic adaptation can occur, blunting the quality of the aerobic stimulus. Detect early by monitoring resting heart rate and subjective fatigue: if morning HR trends upward or sessions feel progressively harder at the same intensity, slow the volume ramp.
|
|
51
|
+
- **Skipping the recovery week** — the recovery week is when aerobic adaptations consolidate. Athletes who extend the load phase because they "feel good" often arrive at Build 1 under-recovered, suppressing the ability to absorb the new intensity stimulus.
|
|
52
|
+
|
|
53
|
+
## Signals This Block Should Produce
|
|
54
|
+
|
|
55
|
+
Successful Base block adaptation is visible in the aerobic metrics over 4-6 weeks. Heart rate at a given pace or power should drift lower week-over-week as fat oxidation improves and cardiac efficiency increases — this is the primary signal that Zone 2 training is working. Perceived effort at the same intensities should decline: the same aerobic session that felt moderate in Week 1 should feel easy by Week 4. Recovery quality should improve over the block — resting heart rate trends downward or stabilizes, HRV baseline holds steady or improves. If these signals are absent after 4 weeks, review whether intensity zones are calibrated correctly and whether the recovery week was fully executed.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Build 1 Training Block
|
|
2
|
+
|
|
3
|
+
## Block Goal
|
|
4
|
+
|
|
5
|
+
Introduce the first structured intensity above Zone 2, developing sub-threshold capacity — the ability to sustain efforts just below LT2 — while maintaining the aerobic base built during the Base block. Build 1 is a controlled transition from pure aerobic volume toward a blend of aerobic maintenance and structured sub-threshold work.
|
|
6
|
+
|
|
7
|
+
## Physiological Adaptations Targeted
|
|
8
|
+
|
|
9
|
+
- **Elevated LT2 ceiling** — structured sub-threshold intervals apply targeted stress just below the lactate threshold, progressively raising the power or pace at which lactate accumulation accelerates. A higher LT2 ceiling means more of race intensity sits below the critical threshold.
|
|
10
|
+
- **Improved lactate clearance at moderate intensities** — repeated exposure to the LT1-LT2 intensity range trains the body's lactate shuttle system, improving the rate at which lactate is cleared from working muscle and recycled as fuel.
|
|
11
|
+
- **Threshold power and pace economy** — sustained sub-threshold work recruits both slow-twitch and early-recruited fast-twitch fibers, improving the efficiency of fiber recruitment at moderate-high intensities and reducing oxygen cost per unit of output.
|
|
12
|
+
- **Increased cardiac output at moderate-high efforts** — the cardiovascular system adapts to the higher demand of structured sub-threshold work, improving stroke volume and oxygen delivery efficiency in the Zone 3-4 range.
|
|
13
|
+
- **Aerobic base maintenance** — by preserving Zone 2 volume alongside the intensity introduction, the mitochondrial and fat oxidation adaptations from the Base block are retained rather than eroded.
|
|
14
|
+
- **Recovery capacity between high-demand sessions** — structured intervals and sustained recovery days teach the body to regenerate between efforts, improving inter-session recovery over the course of the block.
|
|
15
|
+
|
|
16
|
+
## When to Use This Block
|
|
17
|
+
|
|
18
|
+
Build 1 follows the successful completion of a Base block where the athlete has established stable Zone 2 volume tolerance and demonstrated consistent aerobic session quality. The athlete should be capable of completing multiple-hour aerobic sessions without excessive residual fatigue before sub-threshold intervals are introduced — the aerobic base is the substrate that absorbs the new intensity stimulus. Build 1 prepares the physiological system for the higher intensities of Build 2, where VO2max work or higher-density threshold work may be introduced.
|
|
19
|
+
|
|
20
|
+
## Weekly Session Pattern
|
|
21
|
+
|
|
22
|
+
### Key Sessions
|
|
23
|
+
|
|
24
|
+
| Session | Typical Day | Type | Purpose |
|
|
25
|
+
|---------|-------------|------|---------|
|
|
26
|
+
| Sub-LT2 Intervals | Mid-week (Tue) | 85-92% FTP intervals | Primary intensity stimulus; develops sub-threshold capacity in a controlled, measurable format |
|
|
27
|
+
| Sweet Spot / Sub-Threshold | Mid-week (Thu) | 88-93% FTP sustained efforts | Secondary intensity session; reinforces LT2 ceiling development without the recovery cost of threshold work |
|
|
28
|
+
| Long Aerobic | Weekend (Sat) | Zone 2 endurance with optional surges | Builds aerobic duration tolerance and bike-specific volume; the week's highest-volume session |
|
|
29
|
+
| Aerobic Endurance | Weekend (Sun) | Zone 2-3 blend | Moderate volume day that reinforces aerobic base maintenance while the intensity stimulus from the week integrates |
|
|
30
|
+
|
|
31
|
+
### Supporting Sessions
|
|
32
|
+
|
|
33
|
+
Recovery and easy days are placed between key sessions to allow adaptation and prevent cumulative fatigue from compounding across the week. Volume is maintained from the Base block or reduced modestly (5-10%) to accommodate the physiological cost of the new intensity work. Session spacing is deliberate: the highest-stress sessions (intervals and long aerobic) should not run on consecutive days without a recovery session separating them.
|
|
34
|
+
|
|
35
|
+
## Intensity Zone Targets
|
|
36
|
+
|
|
37
|
+
| Session Type | Zone | % FTP Range | Purpose |
|
|
38
|
+
|-------------|------|-------------|---------|
|
|
39
|
+
| Sub-LT2 Intervals | Zone 3-4 | 85-92% FTP | Sub-threshold capacity development; primary intensity stimulus |
|
|
40
|
+
| Sweet Spot Efforts | Zone 3-4 | 88-93% FTP | Secondary LT2 ceiling development; physiologically efficient threshold stimulus |
|
|
41
|
+
| Long Aerobic | Zone 2 | 60-75% FTP | Aerobic base maintenance; duration and fat oxidation |
|
|
42
|
+
| Aerobic Endurance | Zone 2-3 | 70-82% FTP | Aerobic volume with light tempo transition; reinforces base while bridging to intensity |
|
|
43
|
+
| Recovery Sessions | Zone 1 | Below 55% FTP | Active recovery; supports adaptation between key sessions |
|
|
44
|
+
|
|
45
|
+
## Volume Progression
|
|
46
|
+
|
|
47
|
+
Build 1 follows the same 3+1 pattern as the Base block: three progressive load weeks and one recovery week. The intensity structure holds constant while volume builds — interval sessions extend by one repetition or one to two minutes of interval duration per load week, rather than increasing zone targets. Recovery weeks reduce volume to 50-60% of the peak load week and cut one interval from each key session, allowing accumulated neuromuscular and metabolic fatigue to dissipate. The recovery week is especially important in Build 1 because the athlete is adapting to a new stimulus type, not just more volume.
|
|
48
|
+
|
|
49
|
+
## Common Execution Risks
|
|
50
|
+
|
|
51
|
+
- **Starting sub-LT2 intervals too aggressively** — early interval heart rate spiking above threshold (above LT2 zone) indicates the effort target is miscalibrated or residual fatigue from the Base block is higher than expected. Detect early: if RPE during the first interval set feels like a maximum effort rather than controlled hard work, reduce target power by 3-5% and extend recovery intervals before increasing volume.
|
|
52
|
+
- **Neglecting Zone 2 sessions** — the aerobic base built during the Base block is what absorbs and amplifies the intensity stimulus. If Zone 2 volume is sacrificed to make room for more interval work, the foundation erodes and the interval adaptations become unsustainable. Guard Zone 2 sessions as non-negotiable; they are what makes the intervals effective.
|
|
53
|
+
- **Cumulative fatigue from back-to-back intensity days** — scheduling key sessions without adequate recovery between them (e.g., sub-LT2 intervals followed directly by a long aerobic session the next day with no easy day in between) erodes rather than builds capacity. If fatigue signals appear mid-week (HRV declining over 3+ days, elevated resting HR, RPE mismatch at target intensity), convert the next key session to Zone 1 endurance and reassess.
|
|
54
|
+
|
|
55
|
+
## Signals This Block Should Produce
|
|
56
|
+
|
|
57
|
+
Successful Build 1 adaptation is visible in the trajectory of interval metrics across the block. RPE at the target zone (85-92% FTP) should decrease week over week for the same interval structure — what felt hard in Week 1 should feel controlled by Week 3. Heart rate drift across a multi-interval set should compress: early intervals and late intervals should show more similar HR responses as the system adapts to clearing lactate efficiently. Recovery between intervals (time to return to baseline HR) should improve over the block. HRV and resting HR should remain stable or trend positively through the load weeks — a declining HRV trend sustained over three or more days is an early signal that the intensity dose is outpacing recovery capacity and warrants backing off the next key session.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Build 2 Training Block
|
|
2
|
+
|
|
3
|
+
## Block Goal
|
|
4
|
+
|
|
5
|
+
Build 2 extends the intensity developed in Build 1 to work at and above LT2. Primary goals are true threshold development — sustained efforts at LT2-adjacent intensities — and the ability to handle repeated surges above threshold within an aerobic ride context. Where Build 1 transferred and stabilized aerobic capacity, Build 2 stress-tests the ceiling that was raised.
|
|
6
|
+
|
|
7
|
+
## Physiological Adaptations Targeted
|
|
8
|
+
|
|
9
|
+
- **LT2 power increase (5-10W typical):** Sustained efforts at 92-100% FTP provide the specific stimulus to shift lactate threshold upward. A higher LT2 means the same absolute power represents a smaller fraction of capacity — lower lactate accumulation at any sub-threshold effort.
|
|
10
|
+
- **Improved lactate buffering capacity at and above threshold:** Over-under intervals train the metabolic system to manage lactate flux — clearing during the "under" segments, accumulating during the "over" segments, and tolerating the oscillation without performance degradation.
|
|
11
|
+
- **Enhanced VO2max utilization:** Threshold work operates at the upper end of the aerobic system, improving the efficiency with which the body delivers and uses oxygen at high intensities. This matters for any multi-hour effort where maintaining threshold-adjacent power is required.
|
|
12
|
+
- **Ability to recover from above-threshold efforts while continuing aerobic work:** The over-under session specifically rehearses surge-and-recover dynamics. The athlete learns to produce a brief above-threshold effort and return to sub-threshold work without cumulative HR ratcheting.
|
|
13
|
+
- **Muscular endurance under accumulated fatigue:** Long ride surges in the later portion of a fatigued ride train the neuromuscular system to produce structured power when glycogen is partially depleted — directly applicable to any event where the hardest moments come late.
|
|
14
|
+
|
|
15
|
+
## When to Use This Block
|
|
16
|
+
|
|
17
|
+
Build 2 follows Build 1 — the athlete should have stable sub-threshold aerobic capacity before moving to true threshold work. The transition signal is a consistent ability to execute Sweet Spot intervals (88-93% FTP) across multiple weeks without excessive fatigue accumulation. Build 2 is typically positioned 8-12 weeks out from the target event, providing sufficient recovery time before Race Specificity or a taper block. After Build 2, the next block is Race Specificity (for longer endurance events requiring further durability work) or a direct taper (for shorter events where the fitness ceiling is already adequate).
|
|
18
|
+
|
|
19
|
+
## Weekly Session Pattern
|
|
20
|
+
|
|
21
|
+
### Key Sessions
|
|
22
|
+
|
|
23
|
+
| Session | Typical Day | Type | Purpose |
|
|
24
|
+
|---------|-------------|------|---------|
|
|
25
|
+
| Threshold Intervals | Tuesday | 92-100% FTP, sustained efforts (8-12 min) | LT2 development — accumulate time at threshold with full recovery between reps |
|
|
26
|
+
| Over-Under Intervals | Thursday | 88-92% / 103-107% FTP alternating, continuous blocks (15-20 min) | Lactate clearance under varying power — teach the body to manage flux at the LT2 boundary |
|
|
27
|
+
| Long Ride with Surges | Saturday | Zone 2 (60-75% FTP) base, with 15-min surges at 88-93% FTP in the final third | Muscular endurance under accumulated fatigue — structured power when pre-fatigued |
|
|
28
|
+
|
|
29
|
+
### Supporting Sessions
|
|
30
|
+
|
|
31
|
+
Recovery days between key sessions are more critical in Build 2 than Build 1 — over-under and threshold work produces higher metabolic stress and sympathetic nervous system activation than sub-LT2 efforts. Easy Zone 1 sessions fill remaining days; these should be genuinely easy, not moderate. The spacing logic is Tuesday hard → Wednesday easy → Thursday hard → Friday easy → Saturday hard → Sunday/Monday recovery. Compressing key sessions or turning easy days moderate will blunt the threshold adaptation and risk chronic fatigue accumulation.
|
|
32
|
+
|
|
33
|
+
## Intensity Zone Targets
|
|
34
|
+
|
|
35
|
+
| Session Type | Zone | % FTP Range | Purpose |
|
|
36
|
+
|-------------|------|-------------|---------|
|
|
37
|
+
| Threshold Intervals | Zone 4 | 92-100% FTP | LT2 development — sustained time at threshold |
|
|
38
|
+
| Over-Under — "Under" segments | Zone 3 | 88-92% FTP | Partial lactate clearance while maintaining power |
|
|
39
|
+
| Over-Under — "Over" segments | Zone 4-5 | 103-107% FTP | Brief lactate accumulation — train clearance response |
|
|
40
|
+
| Surge Efforts (in long ride) | Zone 3-4 | 88-93% FTP | Threshold-adjacent power under accumulated fatigue |
|
|
41
|
+
| Long Ride base | Zone 2 | 60-75% FTP | Aerobic substrate for the surge context; not a training stimulus on its own |
|
|
42
|
+
| Recovery / Easy | Zone 1 | <60% FTP | Metabolic recovery between key sessions |
|
|
43
|
+
|
|
44
|
+
**Note:** These percentages reference the athlete's own current FTP, not absolute watt values. Zones should be recalculated if FTP changes mid-block.
|
|
45
|
+
|
|
46
|
+
## Volume Progression
|
|
47
|
+
|
|
48
|
+
Build 2 uses a 3+1 loading pattern (three load weeks, one recovery week), but intensity is the primary driver rather than volume. Total weekly volume may increase modestly (by 5-15%) across load weeks, but the primary progression comes from increasing interval duration rather than adding more intervals. For threshold intervals, this looks like 3×8 min → 3×10 min → 3×12 min across load weeks. For over-under sets, progression is in the number of rounds: 3×15 min → 3×18 min → 3×20 min. Long ride surges increase in number and the endurance preamble extends. The recovery week drops total volume to 50-60% of peak load week volume and removes all above-threshold work — only easy Zone 1-2 riding and reduced interval volume (light threshold only, no over-unders).
|
|
49
|
+
|
|
50
|
+
## Common Execution Risks
|
|
51
|
+
|
|
52
|
+
- **Threshold intervals drifting above 102% FTP:** True threshold work is not VO2max training. Athletes often push above the target on short intervals because it "feels like more effort is better." At 105-110% FTP, the session becomes VO2max work with a much higher fatigue cost and a different adaptation. Pacing discipline — starting conservative and holding — matters more in Build 2 than in Build 1.
|
|
53
|
+
- **Failing to respect recovery days between key sessions:** Over-under work creates cumulative fatigue that compounds without adequate recovery. The risk of turning Wednesday or Friday into a "moderate" day is not just suboptimal performance on the next key session — it's accumulated fatigue that degrades the entire block. Easy days must be genuinely easy.
|
|
54
|
+
- **Using Build 2 structure too close to the target event:** The high metabolic stress of threshold and over-under work requires time to convert into performance gains. Entering Build 2 fewer than 4-5 weeks before the event leaves insufficient time for supercompensation and risks arriving at the event in a fatigued state. Build 2 should conclude at minimum 3-4 weeks before the event.
|
|
55
|
+
- **Saturday long ride becoming a fatigue accumulation session rather than a structured session:** As the endurance preamble extends, there is risk of arriving at the surge block too depleted to execute meaningful work. If surge quality degrades (power falls below 82-85% FTP), shorten the endurance block by 30-60 minutes rather than completing prescribed surges at subthreshold quality.
|
|
56
|
+
|
|
57
|
+
## Signals This Block Should Produce
|
|
58
|
+
|
|
59
|
+
- **Stable threshold interval execution with improving HR and RPE:** By the end of the load weeks, the athlete should be completing the longest prescribed intervals (3×12 min) with HR reaching steady state within 3-4 min and RPE improving relative to early-block sessions at shorter durations. If HR is still climbing at the end of a 12-min effort, the athlete is above their true threshold.
|
|
60
|
+
- **Shorter recovery time between over-under efforts:** As the block progresses, the athlete needs less recovery time between over-under sets to begin the next one. This is the primary signal of improved lactate clearance capacity — the physiological goal of the over-under sessions.
|
|
61
|
+
- **Maintained or improving surge quality in the long ride:** The athlete should be able to produce surges at 88-93% FTP even after 4+ hours of Zone 2 riding. A degradation in surge quality across the block (not just day-to-day) suggests the total load is too high.
|
|
62
|
+
- **Stable or improving LT2 power measured mid-block or at block end:** Whether assessed via lactate test, 20-min field test, or ramp test, FTP should be equal to or greater than entry values by the end of Build 2. A flat FTP with improved execution feel is also a positive signal — not all adaptation registers on a test.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# {Event Name} — Race Report
|
|
2
|
+
**Date:** {YYYY-MM-DD} **Persona:** {active_persona} **Block context:** {ending block name}
|
|
3
|
+
**Result:** {finishing time / position / outcome — from athlete}
|
|
4
|
+
**Goal:** {original goal for the race — from intake or athlete}
|
|
5
|
+
|
|
6
|
+
## Race Context
|
|
7
|
+
{distance, elevation gain, weather, course type — from race-context tool. If weather is null, write "weather data not available for this activity".}
|
|
8
|
+
|
|
9
|
+
## Performance Summary
|
|
10
|
+
| Metric | Value | Notes |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| Duration | | |
|
|
13
|
+
| NP / Avg watts / VI | | |
|
|
14
|
+
| Avg HR / Max HR | | |
|
|
15
|
+
| Decoupling | | (or "not computed — duration <45min") |
|
|
16
|
+
| Fade (NP slope per hour) | | |
|
|
17
|
+
|
|
18
|
+
## Pacing & Fade by Segment
|
|
19
|
+
{Render fade.segments table — columns: label, NP, avg HR, EF, duration_sec.}
|
|
20
|
+
{Narrative: where the largest_drop occurred and what likely caused it. Reference the segment label, not "second half".}
|
|
21
|
+
|
|
22
|
+
## Time in Zone
|
|
23
|
+
{Render time_in_zone.zones table — columns: zone, pct, seconds.}
|
|
24
|
+
{Narrative: was distribution consistent with the race plan? Reference the prescription's target zones if available.}
|
|
25
|
+
|
|
26
|
+
## Lap-by-Lap
|
|
27
|
+
{If the activity has laps, render the full lap_trends.laps table — columns: n, sec, avg_w, np, avg_hr, max_hr, is_rest. Do NOT truncate.}
|
|
28
|
+
{Lap-trends summary: power_slope_w_per_lap, hr_drift_bpm_per_lap, fastest_lap, slowest_lap, first/middle/last third averages, regime_breaks.}
|
|
29
|
+
{If no laps in the activity, write "Continuous-effort event — no lap markers." and skip the section.}
|
|
30
|
+
|
|
31
|
+
## Comparison to Race-Specificity Sims
|
|
32
|
+
{If sim_compare.comparisons is non-empty, render table — columns: sim_date, np_delta_pct, hr_delta_bpm, decoupling_delta_pct, duration_delta_min.}
|
|
33
|
+
{Narrative: did sims predict the race? Where did execution diverge most?}
|
|
34
|
+
{If empty, write "No race-specificity sims found in preceding 6 weeks."}
|
|
35
|
+
|
|
36
|
+
## Surge Response
|
|
37
|
+
{Render hr_recovery.intervals if present: index, end_hr, drop_60s, drop_120s. Plus the trend.}
|
|
38
|
+
{Narrative: how surge recovery compared to past races / late-block sims.}
|
|
39
|
+
|
|
40
|
+
## Fueling & Hydration
|
|
41
|
+
{Athlete-provided timeline from Phase 3 question 1 — render as a list with approximate times and intake.}
|
|
42
|
+
{Correlation note: if specific fueling gaps align with fade segments or HR drift, call it out explicitly.}
|
|
43
|
+
|
|
44
|
+
## Race Intent vs Execution
|
|
45
|
+
{From Phase 3 question 2 — what was the plan, where it held, where it deviated, and why.}
|
|
46
|
+
|
|
47
|
+
## Athlete Perspective
|
|
48
|
+
{Narrative from Phase 3 questions 3-5 — where it got hard, surprises, off-record context. Written in athlete's voice.}
|
|
49
|
+
|
|
50
|
+
## Calibration Points for Future Blocks
|
|
51
|
+
{LLM-extracted bullets, 3-7 items max. Each is a durable, queryable lesson — e.g., "fueling protocol of 90g carb/hr validated up to 7h race duration". These are passed verbatim to lessons-rollup.}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Race Specificity Training Block
|
|
2
|
+
|
|
3
|
+
## Block Goal
|
|
4
|
+
|
|
5
|
+
Race Specificity is the final intensity block before a competition taper. The goal is to rehearse and validate race-pace efforts — the athlete should complete this block able to sustain target race intensity for the expected event duration, with evidence that training adaptations are translating to race-ready performance. Unlike Build 1 and Build 2, which develop and stress-test the fitness ceiling, Race Specificity operates under that ceiling: consolidating, validating, and building confidence rather than introducing new stimuli.
|
|
6
|
+
|
|
7
|
+
## Physiological Adaptations Targeted
|
|
8
|
+
|
|
9
|
+
- **Race-pace economy and efficiency:** Extended efforts at race-relevant power zones train the neuromuscular and metabolic systems to operate efficiently at the specific intensities the event demands. This is not about raising the ceiling — it is about maximizing how much of the ceiling the athlete can access on race day.
|
|
10
|
+
- **Pacing strategy rehearsal and calibration:** The athlete develops and validates their internal sense of sustainable race effort through repeated practice at target power/pace. By the end of the block, race pace should feel "moderate and controlled" rather than effortful.
|
|
11
|
+
- **Event-specific fueling calibration:** Race Specificity sessions are long enough to require real fueling protocols. The block is the last opportunity to confirm that nutrition and hydration strategies work across the full anticipated event duration without GI distress or energy deficits.
|
|
12
|
+
- **Neuromuscular pattern consolidation at race effort:** Repeated execution of race-specific movement patterns (power output, cadence, pacing rhythm, surge-and-recover dynamics) at the right intensity consolidates those patterns. The athlete arrives at the event with practiced, not improvised, race skills.
|
|
13
|
+
- **Durability validation — sustained power in the final hours:** Structured work embedded in long race-simulation efforts proves that fitness built in earlier blocks survives under accumulated fatigue. This is both a physiological confirmation and a psychological one.
|
|
14
|
+
|
|
15
|
+
## When to Use This Block
|
|
16
|
+
|
|
17
|
+
Race Specificity follows Build 2 when threshold power and sub-threshold aerobic capacity are established and stable. The prerequisite is demonstrated recovery from the metabolic debt of Build 2 — if the athlete is still fatigued from threshold work, race-pace execution will be compromised and the block's validation purpose is undermined. Race Specificity is typically positioned 4-8 weeks before the target event depending on event distance: shorter events (under 4 hours) may need only 2-3 weeks of specificity work; longer endurance events (8+ hours) may need 3-4 weeks to accumulate sufficient simulation volume. After Race Specificity comes a taper block — NOT another build. The athlete should not attempt to add fitness after Race Specificity begins.
|
|
18
|
+
|
|
19
|
+
## Weekly Session Pattern
|
|
20
|
+
|
|
21
|
+
### Key Sessions
|
|
22
|
+
|
|
23
|
+
| Session | Typical Day | Type | Purpose |
|
|
24
|
+
|---------|-------------|------|---------|
|
|
25
|
+
| Tempo-Threshold Maintenance | Tuesday | Extended continuous efforts at 88-95% FTP (20-35 min) | Retain threshold sharpness while shifting toward sustained sub-threshold intensities |
|
|
26
|
+
| Race-Pace Simulation with Embedded Surges | Thursday | 60-90 min at target race intensity (70-82% FTP for endurance events) with brief above-threshold surges every 15-20 min | Rehearse actual race rhythm — sustained moderate power punctuated by terrain-driven surges |
|
|
27
|
+
| Event-Distance Long Effort | Saturday | Approaching event duration at race pace, with structured surges in the later portion | Durability validation — the primary proof-of-fitness session for the block |
|
|
28
|
+
|
|
29
|
+
### Supporting Sessions
|
|
30
|
+
|
|
31
|
+
Recovery days are critical in Race Specificity — the block involves high-quality execution at near-race intensities, and the athlete must arrive at each key session with sufficient freshness to execute at race pace. Easy sessions between key sessions should be genuinely Zone 1-2, not moderate — this is not the time to add volume on recovery days. The pattern of hard-easy-hard-easy-long-recovery is more important in Race Specificity than in any prior block because fatigue carryover directly compromises the simulation quality that the block is designed to produce.
|
|
32
|
+
|
|
33
|
+
## Intensity Zone Targets
|
|
34
|
+
|
|
35
|
+
| Session Type | Zone | % FTP Range | Purpose |
|
|
36
|
+
|-------------|------|-------------|---------|
|
|
37
|
+
| Tempo-Threshold Maintenance | Zone 3-4 | 88-95% FTP | Retain LT2 sharpness without introducing new threshold stress |
|
|
38
|
+
| Race Simulation (endurance events) | Zone 2-3 | 65-82% FTP | Race-pace rehearsal — the intensity the athlete will sustain for most of the event |
|
|
39
|
+
| Race Simulation (shorter/intensity events) | Zone 3-4 | 78-92% FTP | Race-pace rehearsal at higher sustained effort |
|
|
40
|
+
| Embedded Surges | Zone 4-5 | 95-107% FTP | Brief terrain-simulating efforts within race-pace context |
|
|
41
|
+
| Long Effort base | Zone 2 | 65-75% FTP | Aerobic endurance foundation for structured work embedded later |
|
|
42
|
+
| Recovery / Easy | Zone 1 | <60% FTP | Genuine recovery between key sessions |
|
|
43
|
+
|
|
44
|
+
**Note:** Exact zone targets depend on event type. Shorter events with higher sustained intensities emphasize the upper end of each range; longer endurance events emphasize the lower end at higher volume. These percentages reference the athlete's own current FTP.
|
|
45
|
+
|
|
46
|
+
## Volume Progression
|
|
47
|
+
|
|
48
|
+
Race Specificity is not a progressive volume block. Total weekly volume stays roughly constant or slightly decreases across the 2-4 week block while race-pace quality is maintained or improved. The goal is freshness plus specificity, not accumulation — adding volume during Race Specificity risks arriving at the event fatigued from training rather than primed. The primary progression across load weeks is the duration of the Saturday event-distance long effort, which builds toward the longest simulation session of the entire plan. By the final load week, the athlete completes their longest race-simulation effort (the validation session). After that, volume drops sharply as the taper begins — typically a 40-50% reduction in the first taper week.
|
|
49
|
+
|
|
50
|
+
## Common Execution Risks
|
|
51
|
+
|
|
52
|
+
- **Turning Race Specificity into more Build 2:** Pushing intensity above race pace or adding threshold intervals "for extra fitness" when the block goal is specificity and confidence, not a new fitness ceiling. The physiological ceiling was built in Build 1 and 2. Race Specificity operates under it — any session that feels like threshold development is a sign the athlete is executing the wrong block.
|
|
53
|
+
- **Fatigue carryover from Build 2:** Entering Race Specificity before recovering from the metabolic debt of threshold and over-under work. Symptoms include poor race-pace execution in early simulation sessions, elevated RPE at moderate intensities, and difficulty completing the prescribed surge structure. If these signs appear, a brief consolidation period (3-5 days of easy riding) before beginning Race Specificity is preferable to executing a compromised block.
|
|
54
|
+
- **Over-relying on HR as a Race Specificity pacing marker:** Race-pace HR for longer endurance events will be meaningfully lower than threshold HR. Using threshold HR targets in simulation efforts creates pacing errors — the athlete either over-rides early (chasing a too-high HR target) or interprets the lower HR as underperformance and pushes harder than intended. RPE and power are more reliable pacing anchors in race simulation sessions.
|
|
55
|
+
- **Over-executing the event-distance long effort:** Riding significantly beyond the planned duration, or attacking surges too hard, creates fatigue that compromises the taper window. The goal is to finish the long effort feeling "I could have continued" — that feeling is the signal you want to carry into the taper. Finishing wrecked produces no additional fitness benefit and risks a compromised taper.
|
|
56
|
+
|
|
57
|
+
## Signals This Block Should Produce
|
|
58
|
+
|
|
59
|
+
- **Race-simulation efforts feel increasingly controlled and sustainable:** Not easier — controlled. The athlete is not getting fitter during Race Specificity; they are getting more efficient at race pace. A consistent "hard but controlled" (7/10 RPE) feel that does not worsen across weeks is the signal. If race-pace efforts feel easier at week 3 than week 1, that is a sign of full absorption from Build 2.
|
|
60
|
+
- **Improved pacing execution across the block:** Smaller power variance between effort segments, better surge-and-return timing, and improved ability to predict finishing time based on effort. By the final simulation session, the athlete should know their sustainable race pace with high confidence.
|
|
61
|
+
- **Fueling and hydration strategies tested and confirmed:** No GI distress, no energy deficits, no unexpected fueling failures across long simulation sessions. The athlete arrives at the event having validated their entire nutrition protocol under race-like conditions.
|
|
62
|
+
- **Athlete arrives at taper feeling race-ready, not depleted:** The defining signal of a well-executed Race Specificity block is the athlete who enters the taper with a sense of readiness — evidence from simulation sessions that race demands are within reach — rather than relief that training is over. Entering the taper depleted indicates the block was over-prescribed or the athlete over-executed.
|