ADR-001 DuckDB as the primary database engine
ADR-001 DuckDB as the primary database engine
ADR-002 React + DuckDB-Wasm for zero-compute client-side analytics
ADR-002 React + DuckDB-Wasm for zero-compute client-side analytics
ADR-003 CDN Parquet storage over active cloud warehouses
ADR-003 CDN Parquet storage over active cloud warehouses
gs://off-the-pace-cdn) rather than running an active cloud database server.Rationale: Dramatically reduces costs, simplifies infrastructure maintenance, and enables the zero-compute DuckDB-Wasm architecture.Tradeoff: Real-time write/update capabilities are not natively supported handled by compiling static database files via offline/CI batch builds.ADR-004 Local ML pipeline with ONNX client-side runtime
ADR-004 Local ML pipeline with ONNX client-side runtime
.onnx files for direct browser-side evaluation.Rationale: Avoids server-side ML hosting costs, preserves data privacy, and enables instantaneous in-browser stint-life and tyre cliff classification.Tradeoff: Target model complexity is bounded by browser memory XGBoost fits this constraint comfortably.ADR-005 Python replay simulator for eventstream testing
ADR-005 Python replay simulator for eventstream testing
replay_simulator.py to stream historical data to EventHub/Eventstream endpoints.Rationale: Allows 24/7 integration testing and simulation of live race streams outside actual race weekends.Tradeoff: Simulated lap interval (e.g. 90 s) is a flat approximation of real-world timing flow.ADR-006 OLS regression for causal isolation
ADR-006 OLS regression for causal isolation
dim_events.csv.Rationale: Interpretable and sufficient for the 22-race sample size.Tradeoff: Assumes linear degradation across the stint.ADR-007 XGBoost with TimeSeriesSplit
ADR-007 XGBoost with TimeSeriesSplit
TimeSeriesSplit for model validation.Rationale: Guarantees temporal integrity training always precedes validation in seasonal data.Tradeoff: Fewer validation folds than random cross-validation.ADR-008 React + Tailwind CSS for the public dashboard
ADR-008 React + Tailwind CSS for the public dashboard
ADR-009 Accept 2018 Rd1/Rd2 telemetry gap
ADR-009 Accept 2018 Rd1/Rd2 telemetry gap
fct_lap_degradation includes both lap_time_delta and speed_delta where available.ADR-010 CDN publish pipeline with version-stamped cache-busting
ADR-010 CDN publish pipeline with version-stamped cache-busting
scripts/publish_cdn.sh), and cache-bust every parquet URL with the manifest version hash (?v=<version>).Rationale: The app reads all data from the CDN even in local dev, so make app-data alone never reaches the running app a publish step is mandatory. CDN parquet paths are not content-hashed, so a schema/data change reuses the same URL; the GCS public edge cache (Cache-Control: public, max-age=3600) would then serve stale data to all clients for up to an hour. Stamping URLs with the manifest version gives each data revision a unique key that always misses the stale cache.Tradeoff: A redundant ?v= query param on every data request, and a manual publish step. Models are exempt their filenames already carry a _vN version.