endurance-coach-debugging-playbooklisted
Install: claude install-skill maxeskell/personal-training-app
# Endurance Coach — debugging playbook
**Use this when** a symptom is happening now and you need to find the cause and fix-or-degrade it fast.
**Don't use this when** you want the settled story of why a past decision was made or reverted — that's
`endurance-coach-failure-archaeology`. For deriving/proving a statistical method, use
`endurance-coach-proof-and-analysis-toolkit`. For the change gate / how to ship a fix, use
`endurance-coach-change-control` (gate) and `endurance-coach-run-and-operate` (ship mechanics).
All commands below assume the repo at `/Users/maxeskell/dev/personal-training-app`. Copy them whole.
## Jargon, defined once
- **Provenanced slot** — every field of the daily `AthleteState` is `{ value: T | null, source, note? }`.
A tool error or shape drift degrades ONE field to `value: null` (rendered `—`) with a `note` saying why —
it never crashes the assemble. So a missing field is *expected behaviour*, not a bug, unless the whole
state is null.
- **Degrade, don't crash** — external fetches (Garmin, weather, local LLM, `.FIT` parse) are best-effort
with timeouts. A failure = a missing card/field with a note, never an error page. Enforced project-wide.
- **WriteGate** — the propose→confirm two-step; the ONLY path that mutates AI Endurance
(`src/guardrails/writeGate.ts`). Never route a fix around it.
- **AIE** — AI Endurance, the platform that owns the load model (FTP/CSS/threshold/recovery), pulled live
over MCP/OAuth. **MODEL/estimate** — any co