Trade-offs & Out of Scope¶
Status: ✅ Current as of May 2026 — see Implementation Status for the full readiness matrix.
A good system design is as much about what you choose not to build as what you do. This page is intentionally honest about limitations and scope decisions.
What is NOT done (and why)¶
| What | Why not | Reference |
|---|---|---|
| Grafana dashboards | Prometheus exports 9 metrics; dashboards deprioritised in favour of test coverage completeness for v1.0 demo | Monitoring status |
| Automated model promotion | Staging→Production gate is deliberately manual; automation adds operational risk without sufficient operational context for a portfolio project | Model Registry |
| Batch HTTP endpoint | DVC batch_inference stage produces parquet output; an HTTP endpoint was not in v1.0 scope |
Serving status |
| Feature Store (Feast) | Designed in architecture docs; not yet implemented — offline/online parity maintained by column-level contract | Features |
| Real-time streaming | Match data is not real-time; batch scraping via Airflow is sufficient for the prediction horizon | Architecture choice |
| Multi-model A/B serving | Single champion/challenger registry pattern; A/B routing adds infrastructure complexity outside v1.0 scope | Serving |
Acknowledged technical debt¶
- Integration tests use mocks — no live Celery/MLflow dependency in CI; trade-off for test speed and portability.
POST /predict/async/HTTP route not registered — Celery task, schemas, and polling endpoint exist; HTTP route registration deferred post-v1.0.
What IS done¶
See Implementation Status for the full operational matrix.