# Calorie Tracker Evaluation — 2026-07-15

## Scope

- 10 live model scenarios with `dietitian` and `calorie_tracker` enabled: 7 foods/meals and 3 activities.
- Logger-only CRUD unit coverage for norm, meal, and activity create/update/delete/report actions.
- Normal-loop dashboard regressions after root-cause fixes; no direct tool-output passthrough.

## Baseline estimate review

| Case | Logged result | Evaluation |
|:--|:--|:--|
| 120 g banana | 105 kcal; P 1.3, F 0.4, C 27 | Accurate. |
| 150 g chicken + 180 g rice | 482 kcal; P 52, F 7, C 100 | Calorie total plausible, but chicken incorrectly received 50 g carbs; failed item-level macro sanity. |
| 2 eggs + 40 g toast + 10 g butter | 316 kcal; P 16, F 18.2, C 20.8 | Accurate. |
| Yogurt + blueberries + honey | 233 kcal; P 36.7, F 0.7, C 35 | Calories plausible; 36 g protein for 200 g plain nonfat Greek yogurt is unusually high and should have been verified. |
| Salmon + potato + 15 g oil | 863 kcal; P 66, F 44.3, C 52 | Too high; the 180 g salmon component alone was logged as 495 kcal and failed the per-100-g plausibility check. |
| Spain Big Mac | 544 kcal; P 27, F 29, C 42 | Numerically plausible, but a secondary source was described as official. Source-tier handling failed. |
| 100 g dry durum pasta | 371 kcal; P 13, F 1.5, C 75 | Accurate correction of the challenged 500 kcal estimate. |
| Walk, 5.5 km/h, 60 min, 70 kg | 266 kcal | Defensible using 3.8 MET and the `MET × kg × hours` convention. |
| Run, 8 km/h, 30 min, 70 kg | 280 kcal | Low: 2024 Compendium category is about 8.5 MET, giving about 298 kcal with the shortcut convention or 312 kcal with the oxygen-equivalent formula. |
| Cycling, 16–19 km/h, 45 min, 80 kg | 240 kcal | Incorrect category. The 6.8 MET category gives about 408 kcal with the shortcut convention or 428 kcal with the oxygen-equivalent formula. |

## Root causes and corrections

1. Native tool descriptions were clipped at 900 characters, hiding the dashboard-copy instruction. The cap was removed and a regression test verifies instruction text beyond character 900 remains present.
2. The model was asked to edit a long Markdown block without an explicit single-line limit. The tip is now constrained to one line and 160 characters in the tool result, tool instruction, and dietitian skill.
3. Calories remaining and percentage incorrectly used net calories after activity. They now use consumed calories; net remains in the Activity section only.
4. Food estimates lacked composition and per-100-g audits. The skill now forbids copied item macros, checks zero/trace carbs for plain animal foods/oils, and requires verification of implausible density.
5. Activity estimates used generic intensity labels and mismatched categories. The skill now anchors current Compendium speed categories and audits the selected MET and arithmetic convention.
6. Secondary nutrition sources could be mislabeled as official. The skill now requires honest source-tier disclosure.
7. Water was removed from norm fields, stored day output, and the dashboard.

## Post-fix verification

- Food dashboard regression: complete template, exact headings, filled single-line tip, no `{tip}`, no Water.
- Activity dashboard regression: correct calorie-section arithmetic and no Water.
- Corrected cycling category: 6.8 MET and 408 kcal using the stated shortcut convention.
- Final single-line-tip acceptance case: passed.
- Automated tests: 147 passed.

