All notable changes to Flavormancer. Format follows Keep a Changelog; versions follow Semantic Versioning.
Flavormancer is pre-1.0. v1.0.0 is the MVP β the point at which both tracks (the Python service and the .NET/React Track B) are running, packaged and documented. Until then, minor versions ship working increments.
0.2.0 β 2026-07-30
The honesty release. Every trained head now publishes how good it actually is, and the packaging exists to install it somewhere other than the machine it was built on.
- Per-head calibrated thresholds with a 50% precision floor. Each of the 195 heads carries a
decision threshold fitted on out-of-fold predictions, plus its measured precision and recall,
published in
/api/headsand shown on every bar. Heads that cannot be right more than half the time are markedindicativerather than confident β kept in full, never dressed up. docs/ACCURACY.mdβ a plain-language explanation of AUROC, precision, thresholds and cross-validation, written to be read without a machine-learning background.training/audit_generalization.pyβ fires every head across the whole corpus and counts discoveries outside its training set, to catch heads that memorise rather than learn.- Mouthfeel modality β 5 trigeminal/chemesthesis heads (cooling, warming, pungent, tingling, astringent), surfaced across reads, cards, chips and the map.
- Docker packaging β
Dockerfile,docker-compose.ymlwith a pgvector-backed Postgres, and a schema for the substitution index. Artifacts mount at runtime rather than baking into the image. FLAVORMANCER_HOMEso the code and the ~1 GB of trained artifacts can live in different places.- Numbers glossary in
HOW-IT-WORKS.mdand in the app's own How-it-works panel.
- Aroma roster 164 β 172 heads; confident-capable heads 94 β 108.
- Chip families (flavor / note / taste / mouthfeel) share one visual language instead of four accidental ones, and each studio section explains what its dimension is.
- Every molecule has a display name: names fall back to molecular formula, with multi-component structures labelled as mixtures. 8,861 of 8,861 named, down from 770 blank.
- Milestones relabelled to say what kind of work they hold (Foundations / Track B / Ship).
predict_aromahad silently lost its@lru_cacheto an orphaned decorator β the fix behind the 40s β 0.01s modal read.- Substitute/neighbor cards overflowed the modal on mobile (
1frwill not shrink below min-content; neededminmax(0,1fr)). - The modal's 14px card gap had never applied, because an inline
display:blockoverrode the flex column and block boxes ignoregap. - A duplicate
pungentkey in the curated supplement that would have deleted six molecules.
sweet,etherealandpungentodour heads sit exactly at the precision floor. They are broad and chemically incoherent, so curation cannot lift them β tracked for the GNN work (#199).- 58 aroma heads remain
indicative(#262). - Track B (.NET API, React workbench) is scaffolded but not running (M2/M3).
0.1.0 β 2026-07-16
First public demo: taste heads, the aroma descriptor model, substitution search, the flavor-space map, formulation studio, and the on-prem workbench UI.