Skip to content

Commit a20c4e6

Browse files
committed
polished roadmap
1 parent 998827b commit a20c4e6

File tree

1 file changed

+151
-22
lines changed

1 file changed

+151
-22
lines changed

ROADMAP.md

Lines changed: 151 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,163 @@
1-
## Roadmap
1+
## Endurance Coach – Roadmap
22

3-
### Bugs
3+
This roadmap is organized to make **coaching correctness and judgment** the spine of the system, with tooling and UI serving that goal—not competing with it.
44

5-
- Fix incorrect training start dates. The Athlete part of the yaml has a eventDate but no trainingStartDate, check what is determining the training start date and fix it.
5+
---
6+
7+
## Phase 0: Coaching Correctness (Foundation)
8+
9+
### Bugs / Invariants
10+
11+
- **Fix incorrect training start dates**
12+
- Current issue: `Athlete` YAML contains `eventDate` but no explicit `trainingStartDate`.
13+
- Investigate and document what currently determines the training start date.
14+
- Make the inference rule explicit and deterministic.
15+
- Add regression tests covering:
16+
- Event-based plans
17+
- Non-event-based plans
18+
- Edge cases (late config edits, timezone boundaries)
19+
20+
---
21+
22+
## Phase 1: Workout Template System (Expression Layer)
623

724
### Epic: Workout Template Enhancements
825

9-
- The CLI expander should throw an error if an unknown workout template name is used, and suggest that the agent can create a custom workout template or use a known template.
10-
- Custom workout templates go in ~/.endurance-coach/workout-templates/ the render function should look there for templates first before looking in the built-in templates.
11-
- The CLI expander should have a --list-templates option to list all known workout templates, both built-in and custom.
12-
- The CLI expander should have a --show-template TEMPLATE_NAME option to display the contents of a specific workout template, whether built-in or custom.
13-
- There are still certain template variables that are not being used in the Viewer project.
26+
Goal: Treat workout templates as **first-class, inspectable, and safe-to-extend artifacts**.
27+
28+
- **Fail fast on unknown templates**
29+
- CLI expander throws a clear error if an unknown template name is used.
30+
- Error message should:
31+
- List closest matching known templates
32+
- Suggest creating a custom template if needed
33+
34+
- **Custom template precedence & discovery**
35+
- Custom templates live in:
36+
- `~/.endurance-coach/workout-templates/`
37+
38+
- Template resolution order:
39+
1. User templates
40+
2. Built-in templates
41+
42+
- **Template inspectability & ergonomics**
43+
- Improve `templates` CLI command to clearly explain:
44+
- Template `id`
45+
- Template source (built-in vs user)
46+
47+
- Add:
48+
- `templates list`
49+
- `templates show <template-id>`
50+
51+
- **Template validation**
52+
- Add command:
53+
- `templates validate --template <template-id>`
54+
55+
- Validation behavior:
56+
- Checks user templates first, then built-ins
57+
- Validates schema, required variables, and unsupported fields
58+
59+
- **Template variable hygiene**
60+
- Audit all template variables
61+
- Identify variables not consumed by the Viewer project
62+
- Either:
63+
- Wire them through properly, or
64+
- Deprecate them explicitly
65+
66+
---
67+
68+
## Phase 2: Reflection as Data (Core Coaching Differentiator)
1469

1570
### Epic: Post-Workout Interview with Agent
1671

17-
- Skill enhancement: User can ask the agent to conduct a post-workout interview, agent starts by syncing workout (if strava enabled), else asks naturally for workout details.
18-
- Agent asks a series of questions about the workout, including:
72+
Goal: Turn subjective athlete feedback into **structured coaching signal**, not just notes.
73+
74+
- **Post-workout interview entry point**
75+
- User can explicitly ask the agent to conduct a post-workout interview
76+
- Agent behavior:
77+
- Sync workout automatically if Strava is enabled
78+
- Otherwise, naturally prompt for workout details
79+
80+
- **Interview flow (baseline questions)**
1981
- How did the workout feel overall?
20-
- Were there any specific challenges or highlights during the workout?
21-
- Did you stick to the planned workout structure?
22-
- How was your energy and hydration levels?
23-
- Any areas for improvement or adjustments for future workouts?
24-
- If something is inferrable from the workout data (e.g., pace, heart rate), the agent should incorporate that into the questions or feedback.
25-
- After the interview, the agent summarizes the key points, and saves them to the coach.db ~/.endurance-coach/coach.db associated with that workout.
26-
- ^ this actually requires a db schema update to the coach.db, we should handle it with db increments for backwards compatibility.
27-
- Store interview data in a separate table with a foreign key to the workout id, enabling support for multiple interviews per workout.
28-
- Optionally, the web UI can remind the user to do a post-workout interview when they mark a workout as completed.
29-
- **Stretch Goal**: Enable in-app interview chat within the web UI by having the CLI launch a local web server for the interview session, allowing the user to conduct the interview using the same agent framework they're configured with. This could potentially spin off into a separate epic to avoid scope creep.
82+
- What were the key challenges or highlights?
83+
- Did you stick to the planned structure?
84+
- How were energy, hydration, and mental focus?
85+
- What would you change or improve next time?
86+
87+
- **Data-aware questioning**
88+
- Agent incorporates inferred signals from workout data:
89+
- Pace vs plan
90+
- Heart rate trends
91+
- Duration and completion fidelity
92+
93+
- Questions and follow-ups should adapt based on these signals
94+
95+
- **Coaching judgment (not just summarization)**
96+
- Persist two distinct outputs:
97+
1. **Athlete Reflection Summary** (what the user said)
98+
2. **Coach Notes** (agent’s opinionated assessment)
99+
100+
- Coach Notes may:
101+
- Challenge perceived effort vs objective data
102+
- Flag fatigue, overreaching, or execution issues
103+
104+
- **Persistence & schema evolution**
105+
- Store interviews in a dedicated table
106+
- Foreign key → workout ID
107+
- Support multiple interviews per workout
108+
109+
- Introduce explicit DB schema versioning
110+
- Forward-only, idempotent migrations
111+
- Backwards compatibility guaranteed
112+
113+
- **Optional UX support**
114+
- Web UI reminder when a workout is marked complete
115+
- Reminder should be non-blocking and skippable
116+
117+
- **Stretch Goal (intentionally scoped)**
118+
- In-app interview chat via local web server
119+
- CLI launches a temporary local UI for the interview
120+
- Uses the same agent framework and configuration
121+
- If complexity grows, split into a separate epic
122+
123+
---
124+
125+
## Phase 3: Intelligence Compounding (Future-Facing)
126+
127+
_(Not implementation-heavy yet, but directionally important)_
128+
129+
- Cross-workout pattern detection:
130+
- Repeated perception vs data mismatches
131+
- Accumulating fatigue signals
132+
133+
- Agent-generated flags:
134+
- “Effort trending higher than expected”
135+
- “Execution consistency improving / degrading”
136+
137+
- Use interview insights to influence future workout recommendations
138+
139+
---
140+
141+
## Phase 4: Web UI Enhancements (Amplify Insight, Not Distract)
30142

31143
### Epic: Web UI Enhancements
32144

33-
- When user opens a workout card, show floating arrow buttons to the left and right of the card to navigate to previous/next workout without going back to the calendar view.
34-
- Expanded Side bar to view the side bar content without needing to scroll.
145+
Goal: Reduce friction **only where it surfaces coaching insight**.
146+
147+
- **Workout navigation ergonomics**
148+
- Floating left/right arrows on workout card
149+
- Navigate to previous/next workout without returning to calendar
150+
151+
- **Sidebar usability**
152+
- Expand sidebar to view full content without scrolling
153+
154+
> UI work should not precede coaching intelligence. It should surface and reinforce it.
155+
156+
---
157+
158+
## Guiding Principles
159+
160+
- Correctness before cleverness
161+
- Judgment before conversation
162+
- Data + perception > either alone
163+
- UI exists to amplify insight, not replace it

0 commit comments

Comments
 (0)