Scope of this suite. TC-01 through TC-20 verify the v1.0 baseline (recorded baseline run 20/20 test cases Pass on 2026-07-05, plus 7/7 UAT Accept). TC-21 through TC-27 verify the post-release increments (2a-2c Garmin activities, Garmin daily wellness metrics, and Withings weight; 3 hockey auto-schedule; 4 MyFitnessPal nutrition at per-meal grain), added and executed in run-2 on 2026-07-10 (17/17 automated Pass). That run found and fixed defect D-08 (three sync scripts wrote rows without a Person relation) and hardened the baseline cases against live-data mutation. The increments are therefore formally verified, closing the operational-evidence-only gap noted at the v1.0 baseline. This element is a documentation note, not an executable test; it carries no Parent relation and asserts no result. See pm/project-state.md for the authoritative as-built state.
-
9.4. Count only after Attended UID: HOK-004 EARS_TYPE: Ubiquitous VERIFICATION: Test STATEMENT: The system shall only count a hockey game toward training after it is marked Attended.
RELATIONS (Parent): RELATIONS (Child): -
9.6. Default not counted until Attended UID: HOK-006 EARS_TYPE: Ubiquitous VERIFICATION: Test STATEMENT: By default the system shall set a hockey game to not count toward training until it is marked Attended.
RELATIONS (Parent): RELATIONS (Child): -
9.8. Not attended excluded from load UID: HOK-008 EARS_TYPE: Unwanted VERIFICATION: Test STATEMENT: If a hockey game is not marked Attended, then the system shall exclude it from training-load calculations.
RELATIONS (Parent): RELATIONS (Child):
A hockey session with Attendance = Did Not Attend has Counts Toward Training (auto) = false.
-
9.7. Attended marks it counting UID: HOK-007 EARS_TYPE: Event VERIFICATION: Test STATEMENT: When a hockey Game Training Session is marked Attended, the system shall set Counts Toward Training? to true.
RELATIONS (Parent): RELATIONS (Child):
A hockey session with Attendance = Attended has Counts Toward Training (auto) = true.
-
9.4. Count only after Attended UID: HOK-004 EARS_TYPE: Ubiquitous VERIFICATION: Test STATEMENT: The system shall only count a hockey game toward training after it is marked Attended.
RELATIONS (Parent): RELATIONS (Child):
A non-hockey session with Status = Completed has Counts Toward Training (auto) = true.
-
9.4. Count only after Attended UID: HOK-004 EARS_TYPE: Ubiquitous VERIFICATION: Test STATEMENT: The system shall only count a hockey game toward training after it is marked Attended.
RELATIONS (Parent): RELATIONS (Child):
A non-hockey session with Status = Planned has Counts = false; setting Status = Completed flips it to true.
-
12.4. Total mileage rollup UID: SHO-004 EARS_TYPE: Ubiquitous VERIFICATION: Test STATEMENT: The system shall compute total mileage per shoe via a rollup or formula that sums Distance across the Training Sessions related to that shoe.
RELATIONS (Parent): RELATIONS (Child):
an example running shoe Total Miles = 16 (sum of Distance from the two linked runs, 11 + 5).
-
12.4. Total mileage rollup UID: SHO-004 EARS_TYPE: Ubiquitous VERIFICATION: Test STATEMENT: The system shall compute total mileage per shoe via a rollup or formula that sums Distance across the Training Sessions related to that shoe.
RELATIONS (Parent): RELATIONS (Child):
Linking a new run to the shoe increases Total Miles; unlinking returns it to the prior value.
-
2.5. Secondary User first-class across areas UID: PEO-005 EARS_TYPE: Ubiquitous VERIFICATION: Test STATEMENT: The system shall allow Secondary User to be referenced from Goals, Races, Metrics/Check-ins, Nutrition Log, and future training structures, not solely as a placeholder.
RELATIONS (Parent): RELATIONS (Child): -
5.5. Relates to People UID: TS-005 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: Each Training Session shall relate to People via a Person relation.
RELATIONS (Parent): RELATIONS (Child):
Secondary User exists in People and is selectable as Person on sessions/goals/metrics.
-
19.2. Metrics and Nutrition relate to People UID: REL-002 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall relate Metrics/Check-ins and Nutrition Log to People.
RELATIONS (Child):
Filtering by Person = Primary User vs Secondary User returns only that person's rows.
-
4.4. Manual default source UID: AUTO-004 EARS_TYPE: Event VERIFICATION: Test STATEMENT: When a record is created by hand rather than an integration, the system shall default its Source to Manual.
RELATIONS (Parent): RELATIONS (Child):
A hand-created session has Source = Manual.
-
10.4. Stickhandling ball pending UID: EQP-004 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall mark the stickhandling ball as pending and not currently usable.
RELATIONS (Parent): RELATIONS (Child): -
10.5. No unavailable equipment assumptions UID: EQP-005 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall not assume availability of kettlebells, net, barbell, or medicine ball in any template.
RELATIONS (Parent): RELATIONS (Child):
Kettlebells, Net, Barbell, Medicine ball = Not available; Stickhandling ball = Pending; the rest Available.
-
10.6. No template requires unavailable equipment UID: EQP-006 EARS_TYPE: Unwanted VERIFICATION: Analysis STATEMENT: If a Workout Template would require unavailable equipment, then the system shall not present it as a currently-doable template.
RELATIONS (Parent): RELATIONS (Child):
The seeded Workout Templates reference only Available equipment.
-
8.3. Seed Example Half Marathon UID: RACE-003 EARS_TYPE: Event VERIFICATION: Inspection STATEMENT: When the Races database is created, the system shall seed the Example Half Marathon on an example date for Primary User, Type Half Marathon, Goal sub-2 ideal finish strong acceptable, Goal Time 2:00:00, Status Training/Registered.
RELATIONS (Parent): RELATIONS (Child): -
8.4. Seed Example 5K UID: RACE-004 EARS_TYPE: Event VERIFICATION: Inspection STATEMENT: When the Races database is created, the system shall seed the Example 5K on an example date for Primary User, Type 5K, Status Registered/Planned.
RELATIONS (Parent): RELATIONS (Child):
Example Half Marathon = Half Marathon / Goal 2:00:00; Example 5K = 5K.
-
7.1. Seed 5-mile hill repeats UID: HIST-001 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall add a completed Training Session for the 5-mile hill repeats run on an example date.
RELATIONS (Parent): RELATIONS (Child): -
7.2. Seed 11-mile long run UID: HIST-002 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall add a completed Training Session for the 11-mile long run on an example date.
RELATIONS (Parent): RELATIONS (Child):
11-mile long run = 11 mi / Long; 5-mile hill repeats = 5 mi / Hills.
-
19.1. Session relationships UID: REL-001 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall relate Training Sessions to People, Training Blocks, Races, Running Shoes, Running Routes, Exercise Log, and the source game for hockey.
RELATIONS (Child): -
5.8. Shoe and Route relations UID: TS-008 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: Each Training Session shall provide a Running Shoe relation and a Running Route relation.
RELATIONS (Parent): RELATIONS (Child):
The 11-mile run relates to Person, Running Shoe, Running Route, and Training Block.
-
17.3. Goal to Race relation UID: GOL-003 EARS_TYPE: Optional VERIFICATION: Inspection STATEMENT: Where a Goal is tied to a race, the system shall allow it to relate to a Race.
RELATIONS (Parent): RELATIONS (Child):
The Sub-2:00 goal has a Race relation to the Example Half Marathon.
-
9.2. Existing game databases are source of truth UID: HOK-002 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall keep the existing hockey game databases as the source of truth for game data.
RELATIONS (Child):
A hockey session can relate to a Team A/Team B game without altering the source game DB.
-
1.2. Child of Personal Dashboard UID: NAV-002 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall exist as a child page under the "Personal Dashboard" page.
RELATIONS (Child): -
1.3. Link below Inbox UID: NAV-003 EARS_TYPE: Event VERIFICATION: Inspection STATEMENT: When the Personal Training OS page is created, the system shall place a link to it directly below the "Inbox" link on the Personal Dashboard.
RELATIONS (Parent): RELATIONS (Child):
The Personal Training OS page is a child of Personal Dashboard, linked below Inbox.
-
20.6. Mobile low-effort capture UID: NFR-USE-001 EARS_TYPE: Ubiquitous VERIFICATION: Demonstration STATEMENT: The system shall be usable on the Notion mobile apps so that data capture is low-effort across devices.
RELATIONS (Child):
A session/check-in can be logged with low effort in the Notion mobile app.
-
20.3. Backup and recovery UID: NFR-BKP-001 EARS_TYPE: Ubiquitous VERIFICATION: Demonstration STATEMENT: The system shall support periodic export of its data so that training records are recoverable after accidental loss.
RELATIONS (Child):
The OS data can be exported from Notion and is restorable.
-
11.3. Create Workout Templates UID: TMP-001 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall create a Workout Templates database composed of exercises from the Exercise Library.
RELATIONS (Parent): RELATIONS (Child): -
18.1. Create Hockey Drills UID: DRL-001 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall create a Hockey Drills database.
RELATIONS (Parent): RELATIONS (Child):
At least one running, one strength, and one hockey Workout Template exist, plus Hockey Drills.
-
4.6. Sync populates provenance fields UID: AUTO-006 EARS_TYPE: Event VERIFICATION: Test STATEMENT: When an automated import creates or updates a record, the system shall populate Source, Source ID, Imported At, and Last Synced At for that record.
RELATIONS (Parent): RELATIONS (Child): - DES-AUTO Standard Automation Block
- TC-21 Garmin daily wellness metrics provenance (Increment 2b)
- TC-22 Withings weight provenance (Increment 2c)
- TC-23 Garmin activities into Training Sessions (Increment 2a)
- TC-25 MyFitnessPal nutrition at per-meal grain (Increment 4)
- TC-26 Idempotent upsert, unique Source IDs
-
14.2. Automation fields on metrics UID: MET-002 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: Each Metrics/Check-ins record shall carry the standard automation fields.
RELATIONS (Parent): RELATIONS (Child): -
14.3. Metrics sources UID: MET-003 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The Metrics/Check-ins database shall be automation-ready for Garmin, Apple Health, Apple Watch, and Manual.
RELATIONS (Parent): RELATIONS (Child):
Each Metrics/Check-ins row sourced from Garmin carries a garmin-metrics-<date> Source ID, an Imported At timestamp, and at least one wellness value.
-
4.6. Sync populates provenance fields UID: AUTO-006 EARS_TYPE: Event VERIFICATION: Test STATEMENT: When an automated import creates or updates a record, the system shall populate Source, Source ID, Imported At, and Last Synced At for that record.
RELATIONS (Parent): RELATIONS (Child): - DES-AUTO Standard Automation Block
- TC-21 Garmin daily wellness metrics provenance (Increment 2b)
- TC-22 Withings weight provenance (Increment 2c)
- TC-23 Garmin activities into Training Sessions (Increment 2a)
- TC-25 MyFitnessPal nutrition at per-meal grain (Increment 4)
- TC-26 Idempotent upsert, unique Source IDs
-
14.3. Metrics sources UID: MET-003 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The Metrics/Check-ins database shall be automation-ready for Garmin, Apple Health, Apple Watch, and Manual.
RELATIONS (Parent): RELATIONS (Child):
Each Metrics/Check-ins row sourced from Withings carries a withings-<grpid> Source ID, a Weight value, and an Imported At timestamp.
-
4.6. Sync populates provenance fields UID: AUTO-006 EARS_TYPE: Event VERIFICATION: Test STATEMENT: When an automated import creates or updates a record, the system shall populate Source, Source ID, Imported At, and Last Synced At for that record.
RELATIONS (Parent): RELATIONS (Child): - DES-AUTO Standard Automation Block
- TC-21 Garmin daily wellness metrics provenance (Increment 2b)
- TC-22 Withings weight provenance (Increment 2c)
- TC-23 Garmin activities into Training Sessions (Increment 2a)
- TC-25 MyFitnessPal nutrition at per-meal grain (Increment 4)
- TC-26 Idempotent upsert, unique Source IDs
-
5.1. Create Training Sessions UID: TS-001 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall create a Training Sessions database as the central log of all training activity.
RELATIONS (Parent): RELATIONS (Child): - DES-TS Training Sessions core schema
- TS-002 Automation fields on sessions
- TS-003 Session Type
- TS-004 Status
- TS-005 Relates to People
- TS-006 Distance field
- TS-007 Run Type field
- TS-008 Shoe and Route relations
- HIST-001 Seed 5-mile hill repeats
- HIST-002 Seed 11-mile long run
- TC-23 Garmin activities into Training Sessions (Increment 2a)
-
5.3. Session Type UID: TS-003 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: Each Training Session shall provide a Session Type such as Run, Race, Workout, or Hockey Game.
RELATIONS (Parent): RELATIONS (Child):
Each Training Session row sourced from Garmin carries a Garmin Activity ID and an Imported At timestamp.
-
9.2. Existing game databases are source of truth UID: HOK-002 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The system shall keep the existing hockey game databases as the source of truth for game data.
RELATIONS (Child): -
5.3. Session Type UID: TS-003 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: Each Training Session shall provide a Session Type such as Run, Race, Workout, or Hockey Game.
RELATIONS (Parent): RELATIONS (Child):
Each Training Session row sourced from the Hockey DB links a source game (Gabagools or Bacon).
-
4.6. Sync populates provenance fields UID: AUTO-006 EARS_TYPE: Event VERIFICATION: Test STATEMENT: When an automated import creates or updates a record, the system shall populate Source, Source ID, Imported At, and Last Synced At for that record.
RELATIONS (Parent): RELATIONS (Child): - DES-AUTO Standard Automation Block
- TC-21 Garmin daily wellness metrics provenance (Increment 2b)
- TC-22 Withings weight provenance (Increment 2c)
- TC-23 Garmin activities into Training Sessions (Increment 2a)
- TC-25 MyFitnessPal nutrition at per-meal grain (Increment 4)
- TC-26 Idempotent upsert, unique Source IDs
-
15.2. Automation fields on nutrition UID: NUT-002 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: Each Nutrition Log record shall carry the standard automation fields.
RELATIONS (Parent): RELATIONS (Child): -
15.3. Nutrition sources UID: NUT-003 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: The Nutrition Log database shall be automation-ready for MyFitnessPal and Manual.
RELATIONS (Parent): RELATIONS (Child):
Each Nutrition Log row sourced from MyFitnessPal carries an mfp-<date>-<meal> Source ID, a Meal, a Calories value, and an Imported At timestamp.
-
4.6. Sync populates provenance fields UID: AUTO-006 EARS_TYPE: Event VERIFICATION: Test STATEMENT: When an automated import creates or updates a record, the system shall populate Source, Source ID, Imported At, and Last Synced At for that record.
RELATIONS (Parent): RELATIONS (Child): - DES-AUTO Standard Automation Block
- TC-21 Garmin daily wellness metrics provenance (Increment 2b)
- TC-22 Withings weight provenance (Increment 2c)
- TC-23 Garmin activities into Training Sessions (Increment 2a)
- TC-25 MyFitnessPal nutrition at per-meal grain (Increment 4)
- TC-26 Idempotent upsert, unique Source IDs
No two synced rows within a database share a Source ID, confirming idempotent upserts across the Metrics, Nutrition, and Training Sessions databases.
-
14.4. Metrics relate to People UID: MET-004 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: Each Metrics/Check-ins record shall relate to People.
RELATIONS (Parent): RELATIONS (Child): -
15.5. Nutrition relates to People UID: NUT-005 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: Each Nutrition Log record shall relate to People.
RELATIONS (Parent): RELATIONS (Child): -
5.5. Relates to People UID: TS-005 EARS_TYPE: Ubiquitous VERIFICATION: Inspection STATEMENT: Each Training Session shall relate to People via a Person relation.
RELATIONS (Parent): RELATIONS (Child):
Every synced row (Garmin, Withings, MyFitnessPal, Hockey DB) across Metrics, Nutrition, and Training Sessions relates to a Person. This case found defect D-08; the fix and a 54-row backfill landed in run-2.