Contributing
Branch Strategy
main — Protected. Requires passing CI + one review.
feature/<name> — Code changes (new module, refactor, bug fix). Short-lived.
exp/<name> — Experiment branches. Can be longer-lived.
release/v<N> — Created before each Kaggle submission.
Workflow
- Create a branch:
git checkout -b feature/my-change
- Make changes in
src/
- Add/update tests in
tests/
- Run
uv run pytest -k "not e2e"
- Export a notebook:
uv run python scripts/export_notebook.py
- Open a PR
Adding a New Model
- Create
src/models/my_model.py
- Add to
build/bundle.py MODULE_GROUPS
- Add tests in
tests/test_models.py
- Create an experiment config in
configs/experiments/
Adding a New Experiment
- Create
configs/experiments/my_experiment.yaml with base: configs/base.yaml
- Run:
uv run python scripts/train.py --config configs/experiments/my_experiment.yaml --data-dir data/competition
- Results land in
experiments/runs/