Frontend:
- Hero section states the product's purpose on the page itself
(never run out / never overstock, 3-step how-to)
- Chart draws its own reading guide: dashed divider with past vs
our-forecast labels rendered via a custom Chart.js plugin, plus a
plain-language how-to-read caption
- Custom +/- steppers replace mismatched native number spinners
- Flat editorial background (gradients and grain removed), numbered
badges redesigned into the hero steps
- Answer card shows the arithmetic visually: sell + cushion - on-shelf
Backend:
- FIFO memoization for /api/action_list (static data per process)
- Migrated deprecated @app.on_event startup to lifespan context manager
- eval/test_api.py: 18 contract tests covering every route - shapes,
quantile ordering, param validation (422s), 404s, cache consistency,
and cross-endpoint agreement between forecast and recommendation