See CODE_OF_CONDUCT.md (mandatory for all contributions).
- Copy
example.envto.envfor local dev (DO NOT commit.env). - New required env var: document in
example.env+ this file + related ADR if contract affecting. - Secrets: use local overrides only; production secrets via secrets manager (Vault/SOPS placeholder).
- Create branch per
docs/governance/branching-policy.md(e.g. feat/my-feature). - Commits: Conventional Commits.
- Open a draft PR early for visibility (serves as an audit trail since there is a single maintainer).
- CI must be green (build, tests, OpenAPI/Avro diffs, lint, security).
- Review: self-review (single maintainer). For potential breaking changes (API / schema / DB) apply a 24h cooling period before merge (except severe hotfix).
feat(game-service): add playtime aggregation endpointfix(recs): handle empty library edge casechore(deps): bump postgres driver to 42.6.0refactor(ingestion): extract normalization pipelinedocs: update messaging envelope examples
Include BREAKING CHANGE: footer if removing/renaming externally visible field.
- Go:
gofmt,golangci-lint - Java: Spotless + Checkstyle
- Python:
black,ruff - JS/TS: ESLint + Prettier
(Placeholders until implemented)
- OpenAPI spec:
make openapior./scripts/gen-openapi.sh - Avro schema lint:
make schema-lint - SBOM:
make sbom
- All:
make test(aggregator when available) - Go:
go test ./... - Java:
./mvnw test - Python:
pytest - JS/TS:
npm test
- Unit: initial coverage target 50% (raise gradually)
- Contract: OpenAPI / Avro diffs enforced in CI
- Load: scenarios in
docs/operations/testing/load-testing-plan.md
- Secrets must not be committed.
- Dependencies updated via Renovate (to configure).
- Report vulnerabilities per
SECURITY.md(private email, no public issue).
- Follow ADR 0003 (versioning policy) for bumps.
- Message schema/envelope changes must stay backward compatible unless MAJOR planned.
- Add new fields as optional with sensible defaults.
- Do NOT use
latesttags in examples; pin versions. - Multi-arch images: build manifests in a release pipeline (future).
All external-facing changes: update the Unreleased section in CHANGELOG.md.
Categories: Added / Changed / Deprecated / Removed / Fixed / Security / Maintenance.
- Follows branch naming policy
- Conventional Commits used
- Tests added/updated
- Contract (API/schema) backward compatible OR version bump justified
- CHANGELOG updated
- No secrets / credentials added
- Docs updated (ADR / README / envelope / observability if needed)
- (If breaking) 24h cooling period respected.
Open issue with label question.