- Pick an issue, or open one describing what you want to do. Assign yourself.
- Create a short-lived branch from
main:git checkout -b <subteam>/<short-description>, for exampleanalysis/spatial-block-cvorviz/leaderboard-page. - Commit small, focused changes with clear messages.
- Push and open a pull request. Link the issue with
Closes #12. - At least one reviewer approves, ideally someone from another subteam for anything that changes data or evaluation. Your subteam lead merges.
We don't use long-lived personal or team branches; they drift and become hard to merge.
- Never tune on the test years. Validation (1998-2004) picks settings and thresholds. Test (2004-2016) is scored once, at the end.
- Fit preprocessing on training rows only. Scaling, imputation and hotspot cut-offs use
fit_index. - Every model result goes through
scripts/benchmark_skill.pyso it is compared with the same baselines on the same years. - Report intervals, not single numbers. Use at least three seeds.
- If you change
fishcast/data.py, bumpPREPROCESSING_VERSIONand note the change indocs/.
- Python 3.9+, formatted to a 120-character line length.
ruff check .must pass. - Add or update a test in
tests/for any change to data loading or evaluation. - Don't commit data, model weights, notebooks with large outputs, API keys or credentials.
Record each experiment in analysis/experiments/YYYY-MM-DD-short-name.md with the command you ran, the commit hash, the seeds, and the benchmark table it produced.