Problem
"Why not XGBoost?" is the most predictable question users ask when they see a 49-model comparison tool that ships Gradient Boosting and HistGradientBoosting but skips the two industry-standard gradient-boosting libraries.
Proposal
Add XGBoost (`XGBRegressor`, `XGBClassifier`) and LightGBM (`LGBMRegressor`, `LGBMClassifier`) to the model registry. Both have Pyodide-compatible wheels on PyPI.
Implementation notes
- Check current Pyodide-shipped wheels at the pinned version (`PYODIDE_VERSION` in `frontend/js/pyodide-bridge.js`). Add the missing ones to the `loadPackage` / `micropip.install` list.
- Add entries to `AVAILABLE_MODELS` and `AVAILABLE_CLASSIFICATION_MODELS` in `frontend/py/learner.py` — same shape as existing models (key, display name, category, defaults).
- Place under the existing Ensemble category, or introduce a Boosting subcategory.
Risks
- Bundle size: XGBoost + LightGBM together can add ~20-30 MB to cold load.
- Mitigation: lazy-load these wheels only when a user selects one of those models. Requires a minor change to `pyodide-bridge.js` to support post-init `loadPackage`.
Acceptance criteria
Problem
"Why not XGBoost?" is the most predictable question users ask when they see a 49-model comparison tool that ships Gradient Boosting and HistGradientBoosting but skips the two industry-standard gradient-boosting libraries.
Proposal
Add XGBoost (`XGBRegressor`, `XGBClassifier`) and LightGBM (`LGBMRegressor`, `LGBMClassifier`) to the model registry. Both have Pyodide-compatible wheels on PyPI.
Implementation notes
Risks
Acceptance criteria