Corrigé (audit) :
- cutoffHours : garde hasModel pour ESE (parité Kotlin) — un backup
importé ESE + ester non couvert levait TypeError → écran vide
- min/max en une passe : les spreads Math.min(...allPoints) levaient
RangeError au-delà de ~1e5 arguments (Nuage × zoom max) et allouaient
par frame
- init MCMC non bloquante : data-ready garantit désormais « asset chargé »
Perf (portage v1.8.2 Android, fin de la dérive de miroir) :
- prepareE2Context/e2AtCtx : doses groupées, cutoffs précalculés, Bateman
paresseux ; computeCurve ne recalcule plus cutoffHours par point
- résultat identique (175 tests verts)
E2E : version lue via data-version (anti-bug v1.9.3)
Docs/commentaires : pk-engine (ESE analytique), pk-calibration (JSDoc
arrondi), dialogs (ESE=6), lab-timing (import mort, JSDoc orpheline),
home (COLORS), pk-profile-store (test-only), pk_profiles.json exclu du
zip (export-ignore, −548 Ko)
- lab-timing.js : computeRegimeStartMs — le régime courant = séquence
terminale de doses à (ester effectif, dose, écart inter-doses) constants
(écart comparé EXACTEMENT) : tout changement récent de dose/ester/
posologie réinitialise la stabilisation. L'ancien proxy (1ʳᵉ dose du
traitement) disait « stabilisée depuis février » malgré des changements
récents (remontée v1.8.0). L'encart porte l'ESTER EFFECTIF de la
dernière dose (override compris).
- home.js : encart « Prochaine prise de sang (suggestion) » sur l'ACCUEIL
(demande) — creux daté + créneau associé + mention de stabilisation
seulement si le régime n'était pas déjà stable.
- 3 nouveaux tests miroirs (155 verts) : dose/intervalle/ester → reset
épinglé. WEB_VERSION 1.8.1. CHANGELOG [1.8.1], README.