Skip to content

MoSCoW Prioritization — Personal Training OS (v1 / race-week MVP)

Artifact: 1.2 (Phase 1 — Planning) · Owner: Product Owner (Primary User) Version: v1.0 — RATIFIED by PO 2026-07-04 · Date: 2026-07-04

MoSCoW sorts scope into Must (no v1 without it), Should (important, not vital), Could (nice, first to drop), Won't (explicitly out this release). Discipline rule: Must-haves should be a minority of effort — if everything is Must, nothing is prioritized. "Won't" is a real decision, carried from the Charter's out-of-scope.

Prioritized at capability level (not all 94 requirements). Note: creating the 15 database structures is itself a Must (requirement ARCH-001); what varies below is how far each is seeded, viewed, and automated for v1.

Must — the race-week MVP (usable for the SF races, 25–26 Jul)

Capability Serves
All 15 DBs created with schema, relationships & automation-ready fields ARCH-001; foundation
People + Primary User & Secondary User as first-class SC3
Training Sessions core (log runs / races / workouts) core
Races DB + Example Half Marathon & Example 5K seeds race week
Historical run seeds (11-mi, 5-mi) continuity
Running Shoes + auto mileage rollup SC6 (gear)
Running Routes + generic seeds core
Hockey game sessions + attendance / counts-toward-training logic core rule
Dashboard + core views (This Week, Planned Runs, Races, Hockey both teams, Shoe Mileage) SC1
Calendar import for planned runs (low-effort capture) SC2
Core rollups (shoe mileage, hockey load) SC4

Should — valuable; do if time before race week, else fast-follow

Capability Serves
Metrics / Check-ins usable (manual daily) SC4
Nutrition Log usable (manual) future SC2
Goals + Training Blocks with views insight
Weekly Reviews (manual) habit/SC1
Exercise Library + Workout Templates populated SC5
≥1 running + 1 strength + 1 hockey plan (linked/embedded materials) SC5
Hockey Drills + Resources seeded SC5

Could — nice-to-have; first to drop under time pressure

Capability Serves
Richer insight dashboards (beyond mileage + load) SC4+
Embedded videos / extra plan materials SC5+
Equipment/balance-board nuance, extra routes polish

Won't (this release) — deferred by Charter, revisit post-v1

Deferred Why / status
~~Garmin live sync~~ PROMOTED → SHIPPED as Increment 2 (2026-07-05). Was deferred for time; time recovered (ahead of schedule) → built.
MyFitnessPal / Apple Health / Strava live sync Still deferred. Discovery done 2026-07-05: Strava = your subscription-cost call; MyFitnessPal = no viable automated path (API partner-only, scraper broke on MFP's Dec-2025 SPA rewrite, ToS bans scraping) → recommend FatSecret/Cronometer or manual; Apple Health = no cloud API, needs on-device Health Auto Export bridge, largely redundant with Garmin.
RAG / AI-insight capability Charter §5. Candidate for a post-race-week Increment 4 (payoff grows with logged data).
Other life domains ("everything eventually") Charter §5 — mission boundary, not a schedule call. Keep out.
Users beyond Primary User + Secondary User (family/friends/kids) Charter §5 — keep out unless a real need appears.
~~Auto-schedule hockey games into Training Sessions~~ PROMOTED → SHIPPED as Increment 3 (2026-07-05). Upcoming games auto-create Planned Hockey sessions linked to the game; TBD bracket placeholders are filtered (team must be a named participant); the plan-vs-actual reconciler flips the row to Attended when the Garmin skate lands. Built to ADR-0003 (game DBs stay source-of-truth).

PO ratification: ✅ 2026-07-04 — accepted as drafted. SC5 (training-plan materials) accepted as Should / fast-follow: go-live (G6) may precede SC5, with materials landing shortly after race week.

Amendment v1.1 (2026-07-05): added one Won't-this-release item (auto-schedule hockey games) from UAT validation. Verification passed (built to ADR-0003) but validation flagged an expectation gap; PO disposition = accept MVP as-is, deferred automation logged above. No change to Must/Should/Could.

Amendment v1.3 (2026-07-05): re-triage after finishing Must+Should+Could ahead of schedule (build complete ~3 weeks before race week 25–26 Jul). "Won't" is a time-boxed decision, so two items were promoted out of Won't and shipped: (1) Garmin live sync → Increment 2; (2) auto-schedule hockey games → Increment 3 (this change). Also corrected drift: the Won't list had still shown Garmin as deferred after it shipped. Discovery run on the remaining integrations (MyFitnessPal, Apple Health) — findings folded into the Won't table above. No change to Must/Should/Could scope. Change driver = capacity, logged in RAID.