## Outcome: **Not medically/nutritionally ready** ### Findings - **Critical — Pregnancy/lactation zinc targets are numerically corrupted.** `_numbers()` recognizes decimal points but not decimal commas, so values such as `9,1/10,9/12,6/14,3 mg` are parsed as separate integers. The phytate selector can consequently produce targets such as **1 mg** or **4 mg**, yielding absurd percentages. **Refs:** `scripts/health/dashboard_v5/nutrition_references.py:186-188`, `:212-220`; `scripts/health/dashboard_v5/references/blv-2026-07-22/preg-female.csv:74`; `.../lac-female.csv:74`. - **Critical — Pregnancy/lactation increment values are treated as absolute daily targets.** With `activity_level` present, lactation energy `+500 kcal/day` becomes an absolute 500-kcal target. Protein logic likewise uses only `0.83 g/kg` and silently drops pregnancy trimester additions (`+1/+9/+28 g`) and lactation additions (`+19/+13 g`). Required trimester/lactation-phase factors are not represented. **Refs:** `scripts/health/dashboard_v5/nutrition_references.py:126-133`, `:225-235`, `:251-274`; `scripts/health/dashboard_v5/references/blv-2026-07-22/preg-female.csv:5,35`; `.../lac-female.csv:5,35`. - **Important — The BLV age boundary is off by one year.** Code assigns age 65 to the older group and labels it “65 Jahre und älter,” while the snapshots define **18–65 years** and **66 years and older**. A person on their 65th birthday therefore receives the wrong group. **Refs:** `scripts/health/dashboard_v5/nutrition_references.py:161-164`; `scripts/health/dashboard_v5/references/blv-2026-07-22/18years-both.csv:2`; `.../65years-both.csv:2`. - **Important — Missing life-stage information is implicitly treated as “not pregnant/not lactating.”** `life_stage` defaults to an empty string, after which a female profile with only birth date and sex resolves to the ordinary age group. Missing, unknown, and not-applicable life-stage states are therefore not distinguished. **Refs:** `scripts/health/dashboard_v5/nutrition_references.py:121-145`; profile extraction at `scripts/health/dashboard_v5/read_api.py:1420-1439`. - **Important — Multi-day periods can silently cross a BLV/profile-group boundary.** The 7/30-day mean is resolved entirely against the group applicable on `effective_end`; there is no segmentation or fail-closed behavior when the period crosses a birthday/group or profile-validity boundary. **Refs:** `scripts/health/dashboard_v5/read_api.py:1841-1848`; `scripts/health/dashboard_v5/nutrition_references.py:324-325`. - **Important — Vitamin A units are treated as equivalent without evidence.** Intake contract unit `µg` is directly compared with BLV `µg-RE`. Unlike niacin and folate, this semantic unit mismatch is not rejected, so percentages may be falsely precise. **Refs:** `scripts/health/dashboard_v5/nutrition_contract.py:86`; `scripts/health/dashboard_v5/nutrition_references.py:209-211`, `:260-262`; `scripts/health/dashboard_v5/references/blv-2026-07-22/18years-both.csv:230,233`. - **Moderate — Nutrient contribution averages use the wrong denominator.** Main nutrient means use nutrient-specific documented days, but top-food contributions are divided by all period nutrition rows and then described as “Mittel pro dokumentiertem Tag.” This can dilute contributions when that nutrient is documented on fewer days. **Refs:** `scripts/health/dashboard_v5/read_api.py:1784-1825`, `:1849-1854`; `scripts/health/assets/health-assets/dashboard-v5-nutrition.js:44`. - **Moderate — A raw supplement recommendation can reach the UI.** The pregnancy folate source text includes `+ Ergänzung`; raw BLV display text is passed through as the visible reference despite the requirement to avoid supplement recommendations. **Refs:** `scripts/health/dashboard_v5/references/blv-2026-07-22/preg-female.csv:91`; `scripts/health/dashboard_v5/nutrition_references.py:342-358`; `scripts/health/assets/health-assets/dashboard-v5-nutrition.js:41,44-45`. - **Moderate — Public provenance is only snapshot-level.** Per-row `Referenzen` and `Weitere Hinweise` from the official CSV are discarded; the API/UI expose only the general BLV name, retrieval date, and local version. Numeric targets therefore lack exact row-level source provenance. **Refs:** `scripts/health/dashboard_v5/nutrition_references.py:170-183`, `:376`; `scripts/health/assets/health-assets/dashboard-v5-nutrition.js:44-45`. ### Checks that passed - Unknown/partial nutrient data suppress numeric percentage interpretation rather than becoming zero. - Percentages above 100 remain numerically unclamped in text; wording is generally neutral and includes a non-diagnostic notice. - Food and supplement amounts remain separately attributable. - Focused tests ran successfully: **6 passed**. - Snapshot SHA-256 values matched the README manifest. ### Workspace - **Files modified:** none. - **Issues encountered:** none; review was read-only.