v1.5.0 : « Tracé labs » — courbe hybride ancrée sur les labs (M(t)×ρ(t))
Demande débattue avec l'utilisatrice (hésitation assumée, décision v1.5.0)
: une courbe biologiquement plausible MAIS passant par tous les labs.
- pk/LabTrajectoryModel.kt (pur) : M(t) = modèle PK brut (scaleFactor
forcé 1) ; ρ_k = lab/M(t_k) interpolé LOG-LINÉAIREMENT entre labs
consécutifs — passgage exact garanti, morphing d'amplitude continu.
Garde anti-#61 (labIsSignificant : lab hors fenêtre d'action PAS un
ancrage). E2 uniquement, fenêtre [1er ; dernier lab], < 2 labs → vide.
Indépendante de la calibration (elle est SA propre référence — sinon
double correction, épinglé). JAMAIS dans levelAt/alertes/rappels.
- UI : chip 'Tracé labs' (off par défaut) dans la rangée modèles,
horizontalScroll CONFINÉ à la rangée (chip 4ᵉ coupé hors fenêtre —
constat émulateur) ; couleur ChartLabTrajectory #C2185B dashed ;
ChartSeries.showExtrema (tracé labs hors pics/creux) ; leçon #63 :
clé 'LAB' exclue de la boucle légende (sinon légende TFS dupliquée).
- 11 tests LabTrajectoryModelTest (183 verts total, 161 sans données
locales) + lint ; validé émulateur §16.ter (courbe passe exactement
sur le lab 248 avec seed réel, 0 crash).
- Docs : §7.10 (maths + décisions), §2, §8, §16, §21, CHANGELOG [1.5.0],
README (status + feature).