Guidelines for contributing to the Analytics Data Platform.
See the Getting Started guide for setting up your local development environment.
mainis the primary branch. All work is merged intomainvia pull requests.- Create feature branches from
mainwith descriptive names (e.g.add-beam-monitors-ingestion,fix-cycles-model-join).
PR titles must follow Conventional Commits:
type(scope): description
Types: fix, feat, docs, style, refactor, perf, test, chore
Examples:
fix(warehouse/facility_ops): fix join in cycles modelfeat(elt-common): add retry logic for HTTP sourcesdocs(docs-devel): update deployment prerequisiteschore(infra): bump Keycloak version
The repository includes a PR template at .github/PULL_REQUEST_TEMPLATE.md. When creating
a PR, fill in the summary section and link any related issues.
- All PRs require at least one approving review before merge.
- CI checks (static analysis, tests) must pass.
- Keep PRs focused — prefer smaller, incremental changes over large monolithic PRs.
- Python: Formatting and linting are enforced by
prek(pre-commit hooks). Runprek run --all-filesto check locally before pushing. - SQL (dbt): Follow the existing model naming conventions:
- Staging models:
stg_<source>__<table>.sql - Mart models: descriptive names reflecting the business concept (e.g.
cycles.sql).
- Staging models:
- Ansible: Follow the role/playbook structure established in
infra/ansible/.
Significant technology or design decisions are recorded as ADRs in
docs-devel/system-architecture/adrs/. If your change introduces a significant
architectural decision, add a new ADR using adr-tools:
adr new "Use X for Y"See the ADR index for existing decisions.