Development runs in milestones β each a coherent, shippable slice. Commits and PRs reference their milestone (e.g. "Part of M2"), and progress is tracked in GitHub Milestones and Issues.
| Milestone | Scope | Status |
|---|---|---|
| M0 β Repo & scaffolding | License, CI, CONTRIBUTING, CODEOWNERS, templates, monorepo layout |
β Done |
| M1 β Training pipeline (Python) | Dataset build, taste training, prediction core, ONNX export, demo workbench | β Done |
| M2 β .NET API + ONNX serving | ASP.NET Core skeleton, load taste ONNX, /predict, in-process ONNX Runtime |
π Next |
| M3 β React workbench | React UI against the fixed JSON contract; taste meters with confidence tags | Planned |
| M4 β Aroma model | Commercial: aroma trains on licensed (PMP 2001) / customer data. The full open aroma model moves to the academic edition β deferred here, see docs/AROMA.md | Deferred β academic |
| M5 β Packaging | Dockerfiles, docker-compose, Postgres + pgvector, single-box deploy |
Planned |
| M6 β Pilot-ready | Auth + per-seat, pgvector substitution search, polish, demo script | Planned |
See docs/ARCHITECTURE.md for the full rationale.
- Track A β Python training + demo. Largely complete (M1): the model pipeline plus a lightweight FastAPI/HTML workbench.
- Track B β the .NET/React product. M2βM6: Python trains β exports ONNX β ASP.NET Core serves in-process β React workbench β Postgres/pgvector β Docker Compose on a single box.
Both tracks consume the same trained model artifacts.