Phase two: daily operations and rolling planning
Proposal for next implementation steps — CoachLuca / Sidney
Status: Draft — in progress Date drafted: 2026-04-10 Depends on: Phase one scaffold complete, Sidney intake files populated, TrainingPeaks inputs validated
1. What we are building
Phase one established the team structure, file ownership, and reporting architecture. Phase two turns that scaffold into a live coaching loop that can operate every day without drifting into templated admin.
Phase two should be built as four interlocking systems:
- Daily readiness and inbound monitoring — a real check on Sidney's state before the day is locked, plus same-day handling for material inbound messages.
- Daily athlete communication — a morning plan at 08:00 and an evening summary at 20:00, both sent by Coach Luca.
- Rolling near-term planning — a concrete 7-day schedule and a looser 3-week horizon, updated from the latest confirmed reality rather than from stale assumptions.
- Season plan — the stable macro arc that gives the 3-week and 7-day documents context.
These outputs are interconnected. The season plan shapes the 3-week horizon. The 3-week horizon shapes the 7-day schedule. The latest confirmed athlete state shapes what actually gets sent in the morning and what gets adjusted during the day.
2. Operating principles
The proposal should be implemented with six operating rules:
- No false certainty. Missing TrainingPeaks data, missing athlete check-in, or incomplete recovery information must stay explicitly unknown until confirmed.
- Readiness comes before prescription. The day is not considered fully set until Coach Luca has checked the latest athlete state, recovery flags, and any inbound messages.
- Inbound matters the same day. Material messages from Sidney do not wait for the 20:00 summary.
- The 7-day plan is a living document. It should be stabilised the evening before, then only lightly adjusted in the morning if the latest information requires it.
- Recovery surveillance is active, not passive. Health, fatigue, sleep, travel load, and Hashimoto's-related watch items must be reviewed daily.
- Race-day coaching should guide execution, not over-script it. The system should support decision quality without pretending the race can be pre-written.
3. Daily operating loop
3a. Readiness check and morning synthesis
Decision window: Before the 08:00 morning send.
Owner: Coach Luca, using recovery and endurance inputs.
This is the missing control point that makes the rest of phase two credible. Before writing the morning plan, Coach Luca must determine Sidney's current readiness state from the latest available evidence.
Required inputs:
- Any inbound message from Sidney since the previous evening summary
- Recovery specialist's latest daily log, including active watch items
- Yesterday's session outcome if confirmed
- Current 7-day schedule entry
- Current week in the 3-week outline
- Weather for Sidney's location
- Nutrition guidance relevant to the day
Readiness check factors to review every day:
- Sleep and general freshness
- Perceived fatigue and leg sensation
- Health symptoms, including early illness signals
- Travel disruption and schedule compression
- Non-training stress if surfaced by Sidney
- Any Hashimoto's-related watch item or recovery concern
Operational state:
Coach Luca does not need a formal questionnaire to make this work, but the system does need a defined readiness state every day. If Sidney has not checked in directly, the state can still be set to Unconfirmed based on the available evidence.
3b. Morning plan — 08:00 daily
Trigger: Scheduled cron at 08:00 local time.
Owner: Coach Luca.
Purpose: Give Sidney a clear plan for today that reflects the current reality, not just the prewritten schedule.
Content — fixed fields, in order:
- Weather — conditions and temperature for Sidney's location today, including anything that affects clothing, hydration, or execution.
- Training plan for the day — session type, duration, and effort target. Specific enough to execute from.
- Training goal for the day — what the session is trying to achieve. One sentence.
- Weekly training goal reminder — where this day sits in the week's broader intent. One sentence.
- Nutrition goals for the day — fueling and hydration targets for the work and conditions.
- Other reminders — travel, equipment, logistics, or health watch items. Omit entirely if nothing matters enough to say.
Tone: Direct and functional. This is not a pep talk, a report, or a motivational script. Read once, act on it.
Length: As short as the content allows.
Workflow:
- Cron triggers Coach Luca at 08:00.
- Coach Luca loads the morning-plan skill.
- Coach Luca determines the readiness state from Section 3a.
- Coach Luca fetches weather and reads the latest planning and specialist inputs.
- Coach Luca writes the six-field message using the current readiness state as a constraint.
- Coach Luca sends the message, saves it, and appends a one-line routing entry.
Important rule: The morning plan can adjust the day downward, sideways, or to recovery. It must not increase load purely because the written 7-day plan says a harder day was due.
Canonical file location: athlete/logs/daily/YYYY-MM-DD.md, with the exact sent body stored under ## Messages -> ### Morning plan and internal coordinator reasoning stored under ## Coach Luca
3c. Daytime inbound handling
Window: Between the morning send and the evening summary.
Owner: Coach Luca.
If Sidney sends a material message during the day, Coach Luca should respond in the same day rather than folding it into the evening summary by default.
Respond immediately when the inbound message changes the training decision or recovery risk:
- Illness symptoms
- Unusual fatigue or soreness
- Travel disruption
- Schedule change that affects session execution
- A session that was stopped, failed, or substantially modified
- Any health concern that should not sit unanswered
Can wait for the evening summary when the inbound message is informational but non-urgent:
- Routine confirmation that a planned session was completed
- Low-stakes comments that do not change the next decision
- Small observations that can be reflected on at 20:00
Rule: The daily system is not just two broadcasts. It is a coaching loop with same-day response when the athlete state changes.
3d. Evening summary — 20:00 daily
Trigger: Scheduled cron at 20:00 local time.
Owner: Coach Luca.
Purpose: Close the loop on the day, update the near-term plan, and settle Sidney into the next 12 hours.
Content:
- Acknowledgement of what happened today
- A short read on what it means for the broader plan
- Recovery guidance for tonight
- A brief preview of tomorrow
- An optional question or reflection prompt when it genuinely helps decision quality
Tone: Warm, grounded, and professional. Sidney should feel seen, not managed by template.
Length: Roughly 150–250 words.
Workflow:
- Cron triggers Coach Luca at 20:00.
- Coach Luca reads today's morning note, today's inbound from Sidney, today's TrainingPeaks activity summary if available, and the recovery specialist's latest log.
- Coach Luca classifies the session outcome using explicit certainty.
- Coach Luca writes and sends the evening summary.
- Coach Luca updates the routing log.
- Coach Luca reviews and stabilises tomorrow's 7-day entry before ending the pass.
Session outcome states:
Important rule: Missing TrainingPeaks data must not be treated as completed-as-planned. If the session outcome is unclear, the evening note should stay neutral and the next day should not be escalated on that basis.
Tomorrow preview rule: The preview is enough to orient Sidney, not a second full plan. The full prescription still belongs to the next morning message.
Canonical file location: athlete/logs/daily/YYYY-MM-DD.md, with the exact sent body stored under ## Messages -> ### Evening summary and internal coordinator reasoning stored under ## Coach Luca
4. Message skill documents
Each scheduled message should still be governed by a dedicated skill document. The skill file remains the adjustable control surface for tone, reading order, decision rules, and special-day variants.
File locations
skills/morning-plan/SKILL.md
skills/evening-summary/SKILL.md
These live inside the Coach Luca workspace because they are coordinator-owned tools.
4a. Morning plan skill
Frontmatter name: morning-plan
Frontmatter description: Produce Sidney's daily morning message. Use when the 08:00 cron fires. Deliver the fixed six-field message after checking the latest readiness state, recovery flags, current 7-day entry, weather, and nutrition guidance.
The skill must govern:
- Required reading order before writing
- Readiness-state handling for green, amber, red, and unconfirmed
- Field order and omission rules
- Variant rules for rest day, race day, travel day, and high-fatigue day
- Routing-log writeback policy and canonical daily-log save path
What to read before writing:
- Weather for Sidney's location
- Today's entry in
athlete/rolling-7-day.md - Current week in
athlete/rolling-3-week.md - Latest endurance, nutrition agent, and recovery logs
- Any inbound message from Sidney since the prior evening summary
- Yesterday's evening summary if relevant
What the skill must enforce:
- No zone explanations
- No filler in Other reminders
- No escalation of load when readiness is amber, red, or unconfirmed
- Clear distinction between plan and rationale
4b. Evening summary skill
Frontmatter name: evening-summary
Frontmatter description: Produce Sidney's daily evening summary. Use when the 20:00 cron fires. Read today's planned work, actual confirmed data, inbound messages, and recovery status to close the day and stabilise tomorrow.
The skill must govern:
- Session-outcome certainty handling
- Reflection-question cadence
- Preview depth for tomorrow
- Variant rules for rest day, race day, travel day, and high-fatigue day
- Requirement to review tomorrow's 7-day entry before ending the pass
What to read before writing:
- Today's saved morning-plan block in the canonical daily log
- Today's TrainingPeaks data if available
- Any inbound from Sidney during the day
- Recovery specialist's latest daily log
- Tomorrow's entry in
athlete/rolling-7-day.md
What the skill must enforce:
- No assumption of completion when data is missing
- No overlong recap of the day
- Recovery guidance tied to what actually happened
- Tomorrow preview kept brief unless a logistics reason requires more
4c. Special day variants
Both skill documents should include named variants covering the most common departures from a standard training day.
Race-day guidance should focus on decision anchors, not rigid pacing scripts. The athlete should arrive clearer, not tighter.
5. Rolling planning documents
5a. Rolling 7-day schedule
Owner: Coach Luca, with endurance specialist input.
Purpose: The concrete day-by-day plan for the next seven days.
Content per day:
- Date
- Session type
- Duration target
- Effort target
- Key execution note
- Constraint or watch item if relevant
- Source reference from the 3-week plan
Update cadence:
- Primary update window: after the evening summary, when today's reality is known
- Morning update window: only if new readiness information requires a change before 08:00
This is an important change from the first draft. The 7-day file should not be rebuilt reactively at 07:55 every day. Most of tomorrow's plan should already be stable by the end of tonight's pass.
File location: athlete/rolling-7-day.md
5b. Rolling 3-week outline
Owner: Coach Luca, with endurance specialist as primary input source.
Purpose: The next three weeks at block level. This is where intent, load distribution, and race proximity are managed without pretending that every daily detail is already known.
Content per week:
- Week dates
- Block type
- Approximate volume and intensity distribution
- Dominant session types
- Gym work planned
- Key recovery or health watch items
- Connection to the race schedule
- Adjustment triggers that would force replanning
Update cadence: Weekly, typically Sunday evening or Monday morning, and immediately when racing, travel, health, or training response makes the current outline stale.
File location: athlete/rolling-3-week.md
The 3-week outline should explicitly carry forward any meaningful uncertainty. If travel, recovery, or race outcome may change week two, that uncertainty belongs in the file rather than in someone's head.
6. Overall season plan
Owner: Coach Luca.
Purpose: The stable macro document covering the full arc from now through the 2027 World Championships.
Structure:
- Phase map by month or block from April 2026 through January 2027
- Key dates: Canmore, PanAm Championships, Ostrava, Ostend
- Phase descriptors: what each block is trying to accomplish and why
- Travel impact notes
- Key decision points where the plan may branch
- Ongoing health-monitoring note, including Hashimoto's as an active watch item
Initial phase structure:
Update cadence: Monthly, and immediately when priority events, health status, or season direction changes.
File location: athlete/season-plan.md
Hashimoto's should remain visible here, but only as a macro watch item. The daily operational expression of that watch belongs in the readiness and recovery loop.
7. What needs to happen before this can go live
7a. Sidney's intake files must be populated
Several files remain too skeletal for reliable automation:
intake/athlete/current-status.mdis still critical and still empty.intake/planning/race-schedule.mdmust be reconciled withintake/athlete/race-calendar.md.intake/planning/goals-and-priority-events.mdmust be reconciled withintake/athlete/goals.md.
Action required: Populate the current-status file and reconcile the planning inputs before phase two is treated as live.
7b. The readiness loop must be made explicit
The system cannot run safely on outbound messaging alone.
Action required: Define how Sidney's current state is surfaced each day, what counts as green, amber, red, or unconfirmed, and where that information is read from in the morning workflow.
7c. Skill documents must be written
The two skill documents still need to be authored.
Action required: Write morning-plan/SKILL.md and evening-summary/SKILL.md, then dry-run both manually.
7d. Season plan must be drafted
The 3-week and 7-day documents need macro context.
Action required: Produce the first-pass season plan, then have endurance and recovery review it.
7e. TrainingPeaks integration should be confirmed
The evening workflow improves materially with real activity data, but it must be treated carefully.
Action required: Validate scripts/tp_check.js and scripts/tp_last_activity.js, confirm output quality, and define how missing or partial TP data is represented.
7f. Cron schedule design must include decision logic, not just timing
Two cron triggers are still required:
0 8 * * *for the morning plan0 20 * * *for the evening summary
Action required: Confirm Sidney's timezone, then design prompts that tell Coach Luca which files to read, how to handle uncertainty, and what writeback is required.
8. Implementation sequence
Step 1: Populate intake files
- Populate
current-status.md. - Reconcile race schedule and goals planning inputs.
Step 2: Define the readiness protocol
- Set the daily readiness check factors.
- Define green, amber, red, and unconfirmed decision rules.
- Decide where the latest readiness evidence lives and how Coach Luca reads it.
Step 3: Draft the season plan
- Produce first-pass
athlete/season-plan.md. - Endurance reviews phase structure.
- Recovery flags health-monitoring checkpoints.
Step 4: Draft the first 3-week outline
- Endurance produces first-pass block structure.
- Coach Luca writes
athlete/rolling-3-week.md.
Step 5: Draft the first 7-day schedule
- Coach Luca writes the first
athlete/rolling-7-day.mdfrom the 3-week outline. - Operator reviews for plausibility and tone.
Step 6: Author the skill documents
- Write
skills/morning-plan/SKILL.md. - Write
skills/evening-summary/SKILL.md. - Include readiness handling, uncertainty handling, and special-day variants.
Step 7: Manual dry run
- Produce a morning plan from the new skill.
- Produce an evening summary from the new skill.
- Test at least one amber or unconfirmed scenario, not just the clean case.
Step 8: Validate TrainingPeaks integration
- Run TP scripts.
- Confirm how confirmed completed, confirmed modified, confirmed not completed, and unconfirmed states are derived.
Step 9: Enable cron scheduling
- Configure 08:00 and 20:00 triggers.
- Monitor for at least three days before treating the loop as stable.
9. Open questions
- Sidney's timezone: What is the correct primary timezone now, and how should travel-period overrides work?
- Delivery channel: Where do the morning and evening messages actually land, and does Sidney reply in the same thread?
- Readiness source: Is the daily readiness signal sourced from direct athlete messages, a formal check-in prompt, specialist logs, or a combination?
- Rest day handling: The current recommendation is yes, still send the morning message, but in a reduced form. Does the operator want that locked in?
- Race-day handling: Are there any race-day elements Sidney specifically wants standardised beyond logistics, fueling, and one or two execution anchors?
- Health-monitoring visibility: How explicitly should Hashimoto's-related watch items appear in the recovery log and morning synthesis?
10. Success criteria for phase two
Phase two is working when:
- Sidney receives a morning plan and evening summary every day with the right level of specificity.
- The morning plan reflects the latest confirmed athlete state rather than blindly following the written schedule.
- The system responds the same day when Sidney sends something that changes the coaching decision.
- The evening summary distinguishes confirmed outcomes from unconfirmed ones instead of guessing.
- The 7-day schedule reflects what is actually happening and is usually stabilised the night before.
- The 3-week outline remains aligned with the season plan while carrying forward meaningful uncertainty.
- Recovery, health, travel load, and Hashimoto's are active decision inputs rather than background notes.