small-hackathon-trainer / MVP_COMPROMISES.md
Lucas
Add llama.cpp parser backend for Space
95cf15d
|
Raw
History Blame Contribute Delete
4.07 kB
# MVP_COMPROMISES.md β€” What we are deliberately simplifying
This file tracks the compromises we are making to finish a real, runnable MVP without
forgetting what is missing afterward.
## Product compromises
- **Single user only.** No profiles, account system, sharing, or multi-athlete support.
- **One fixed 4-day template.** The app does not generate a split or choose exercises
from a broad database.
- **One-minute rests everywhere.** The supplied rest differences are normalized to 1
minute for the MVP.
- **One goal context.** The MVP is for hypertrophy and continuous progress during a lean
bulk or maintenance phase.
- **Today tab first.** Plan, Progress, Research, and richer coach views are deferred
until the daily loop works.
- **No fancy UI polish yet.** The interface should be usable and clear, not custom or
highly styled.
## Training-engine compromises
- **Classic straight sets only.** Supersets, drop sets, rest-pause, myo-reps, circuits,
and other advanced set structures are deferred.
- **No automatic substitutions yet.** Exercise equipment and availability are not in the
schema yet.
- **No pain substitutions yet.** The deterministic engine can remove exercises that hit
a painful muscle, but it does not yet choose replacement exercises.
- **MVP exercise muscle tags.** Exercise-to-muscle mappings are fixed for the current
template and should be reviewed/refined later.
- **Simple time compression.** The engine reduces sets for short sessions, but it does
not yet estimate true exercise duration, warm-up time, or transition cost.
- **Simple readiness adaptation.** The engine reduces sets/RIR from a weighted score,
but soreness is still inferred from free text and stress/mood share one field.
- **Simple load increments.** Double progression uses fixed +1 kg jumps for all
exercises. Later, increments should vary by exercise, equipment, available plates, and
whether the movement is compound or isolation.
- **Incomplete progression gating.** Double progression now moves reps before load, but
the MVP progression rule still checks reps and latest load only. Target RIR, form
quality, pain severity, and exercise-specific edge cases are follow-up decisions.
- **No periodization yet.** Deloads, mesocycles, volume landmarks, and planned up/down
weeks are out of scope for the MVP.
## Parser compromises
- **The parser is not the coach.** It extracts structured check-in data and asks
follow-up questions; it does not make training decisions.
- **Multi-round clarification over one-shot perfection.** The small model proposes
structured follow-up questions, and deterministic cleanup removes obvious duplicates,
already-answered questions, and unsupported activity/body-area follow-ups.
- **Local development uses Ollama.** This is fast and useful locally. Hugging Face
Spaces use a GGUF llama.cpp backend so CPU deployment does not rely on slow PyTorch
Transformers generation.
- **Acceptance fixtures are test coverage, not product proof.** They help catch obvious
regressions, but real value still comes from logged sessions.
## Persistence compromises
- **Local JSON default.** The app defaults to local JSON so it can run fully locally
without cloud dependency. Hugging Face Dataset storage is optional deployment
persistence enabled by environment variables.
- **Minimal history first.** We only store completed date, day number, exercise id, set
number, actual reps, actual load, and optional RPE/notes before adding richer
analytics.
- **No sync/conflict handling.** Single-user MVP means no concurrent edits or merge
logic.
## Hackathon compromises
- **Backyard AI proof over breadth.** Real logged use, a precise parser job, and a
deterministic engine matter more than many features.
- **Small-model badge only if it does not break the spine.** Tiny/local model work is
valuable, but the daily training loop comes first.
- **Research-reader and fine-tuning are stretch.** They stay out until check-in β†’
session β†’ log β†’ next session works end to end.