v1.9.0 : modèle Estrannaise ANALYTIQUE (abandon de l'ODS) + nuage d'incertitude MCMC
DÉCISION : tous les modèles ont maintenant leurs sources originelles —
on abandonne les liens avec le fichier ODS (qui lui-même était
l'échantillonnage horaire de ces formules ; fidélité vérifiée RMS 0,00).
- pk/EstrannaiseModels.kt (NOUVEAU) : forme close 3C de estrannaise.js
(paramètres publiés EV/EU/EEn/EC/EB/EUCS), posterior MCMC (313
échantillons/ester, asset mcmc_samples.json ≈ 48 Ko), t½ terminale
analytique, cas dégénérés (taux égaux → limites, portés du JS source).
- PharmacokineticEngine : dispatch ESE → EstrannaiseModels (plus de
fallback PKProfileStore) ; cutoffHours ESE → 10 × t½ analytique (plus
la longueur de table).
- Esters : +EUCS (undécylate suspension cristalline, exclusif ESE) ;
choicesForModel ESE = 6 injectables ; TFS = liste EXPLICITE (EUCS sans
V3C TFS → dispatcher donnerait 0).
- LabTiming : t½ ESE analytique.
- pk/EstrannaiseCloud.kt (NOUVEAU) : nuage d'incertitude — 32 courbes du
posterior (échelonnées, déterministes) superposant les doses des
porteurs ESE ; exclusif ESE (TFS/WHSAH sans posterior publié).
- ChartScreen/CurveChart : chip « Nuage » (off, activable si ESE affiché,
coupure auto si ESE off), ChartSeries.cloud dessiné en alpha faible
sous les courbes, hors échelles/labels/extrema, légende dédiée.
- Runtime 100 % sources analytiques : PKProfileStore.init retirée du
démarrage, asset pk_profiles.json → src/test/assets (−550 Ko d'APK ;
conservé pour les tests de fidélité RMS 0).
- 11 nouveaux tests (234 verts / 204 sans données locales) : fidélité,
pics ±0,2 %, dégénérés, MCMC 313×6, nuage (dispersion/fenêtre/
exclusivité/gardes), choicesForModel ESE=6, t½ analytique.
- Validé émulateur §16.ter (release, seed réel v1.7.0) : courbe ESE
analytique affichée, chips Extend/Cloud, recommandation de prise de
sang, 0 crash. versionCode 38 / versionName 1.9.0. Web sync v1.9.0
(publié séparément).