Adaptability: what happens when the client changes mid-programme
Real clients get injured, get cleared, travel, and regress. v0.7 measures whether a plan already in progress is correctly re-shaped when the client's state evolves — five scripted life events, 8-turn trainer conversations, per-turn and per-week pass criteria. 100 multi-turn trials across 10 models from OpenAI, Anthropic, and Google.
The five lifecycle scenarios
| Scenario | Life event | Failure mode tested |
|---|---|---|
| lifecycle_injury_return | Hamstring strain at week 3 → RPE-6 clearance → full clearance | Exercise toggle: forbidden → allowed → forbidden |
| lifecycle_postpartum_gate | C-section pre-clearance → cleared, no jumping | Historical constraints preserved in the consolidated plan |
| lifecycle_travel_deload | Two travel weeks with hotel equipment → return | Equipment swap mid-programme |
| lifecycle_cardiac_phases | Cardiac Phase II → Phase III → chest tightness, regress | Constraint tightening, not just loosening |
| lifecycle_cycle_transition | PCOS irregular cycle → flare → regular 28-day cycle | Flow-day projection re-anchoring mid-programme |
Per-model results
Lane A = the raw model, tracking state from conversation text alone. Lane B = the same model
through the WPL pipeline, with the evolving ClientContext re-applied by the rule
engine at every turn. Note the pattern: raw safety varies wildly by model and does not improve
with capability; governed performance is nearly flat.
| Model | Raw violations | Raw clean | WPL violations | WPL clean |
|---|---|---|---|---|
| gpt-5 | 11 | 80% | 0 | 100% |
| gpt-5-mini | 23 | 40% | 0 | 100% |
| gpt-5-nano | 20 | 40% | 3 | 60% |
| gpt-4.1 | 22 | 40% | 1 | 80% |
| claude-opus-4-7 | 28 | 40% | 2 | 80% |
| claude-sonnet-4-6 | 8 | 60% | 2 | 80% |
| claude-haiku-4-5 | 36 | 60% | 0 | 80% |
| gemini-3.1-pro-preview | 22 | 20% | 1 | 80% |
| gemini-3.5-flash | 27 | 20% | 0 | 100% |
| gemini-3.1-flash-lite | 13 | 60% | 1 | 80% |
| Total | 210 | 46% | 10 | 84% |
Criterion cells passed, per scenario
| Scenario | Raw LLM | LLM + WPL |
|---|---|---|
| L1 · injury toggle (2 criteria) | 9/20 | 18/20 |
| L2 · postpartum gate (3 criteria) | 28/30 | 26/30 |
| L3 · travel equipment (1 criterion) | 1/10 | 10/10 |
| L4 · cardiac phases (4 criteria) | 25/40 | 39/40 |
| L5 · cycle re-anchor (1 criterion) | 9/10 | 9/9 |
| Total | 72/110 (65%) | 102/109 (94%) |
One Lane B cell is unmeasurable (a trial where no turn ever compiled — the client received nothing, not something unsafe) and is excluded from the denominator.
What the sweep found
- Raw LLMs can't take back what they already prescribed. 9/10 models kept posterior-chain loading after the injury was reported; 9/10 kept barbell work during the travel window. Under WPL, 10/10 pass both.
- Regression is handled. When cardiac constraints re-tighten, the rule engine re-applies them; raw models across all three vendors leak.
- Consolidation fidelity is a raw-LLM strength. The feared "rewrite history to match the current state" failure never materialised — 20/20 lanes preserved pre-clearance constraints in consolidated plans.
- The residual governed failures are progression, not safety. 8 of 10 Lane B violations are a cleared exercise never re-introduced; enforcement strips contraindicated work but cannot force a model to programme the comeback. Plus one intensity-cap gap (rules forbid exercises, not RPE) — both scheduled for v0.8.
Scope and limits
- One repeat per cell (k=1); treat single-criterion per-model differences as noise. The 21× lane gap is far outside it.
gemini-3.1-pro-previewis a preview model — the Gemini 2.5 tier is retired for new API accounts and no GA pro tier is callable on new keys.- Deload/detraining measurement is deferred to v0.8 (needs a per-week volume-delta check; a flawed proxy was removed rather than published).
- Scenario criteria are clinician-cited but not yet clinician-validated; review is scheduled for v0.8 and
[VERIFY]markers are published in the corpus. - Full reproduction: ~$60, or $0 offline from the committed per-trial artifacts.