Closes #
-
feat— new capability -
fix— bug fix -
docs— documentation only -
refactor/perf— no behavior change -
test— tests or fixtures only -
build/ci/chore— tooling, deps, pipeline - Breaking change (
!) — schema, dataset, or public API changes incompatibly
- No raw data committed — nothing from
data/raw/, no real locations, no identifying details in code, fixtures, tests, notebooks, commit messages, or this PR description. - Tests pass (
make test); new statistical or pipeline code ships with a synthetic fixture whose answer is known (planted hotspot, known exposure, or interval-coverage check). - Lint passes (
make lint—ruff). - Types pass (
make type—mypy --strict); no untyped or loosely typed code. - Accessibility gate — for UI changes, every AUTO-GATE passes; risk and significance are
conveyed in text and pattern, not color alone; and everything is reachable via the list/table
equivalent. The REVIEW disposition below is either a completed manual NVDA/VoiceOver pass or a
public-preview-only provisional owner attestation satisfying
ADR 0012. Synthetic evidence is not reported as a manual pass. - Security passes (
make security—pip-audit,gitleaks, CodeQL-equivalent); deps remain pinned and hashed, or changed only via the documented bump path (not a hand edit). - Conventional Commits used and commits are DCO signed off (
git commit -s). - Reproducible — changes are deterministic and seeded;
make reproduceregenerates any affected figures or tables. - Five hard rules honored — rates carry a denominator with a dated source; estimates
carry a confidence interval and an
n; relevant reporting bias is named; nothing is published at identifying precision. - Docs updated where behavior, methods, or assumptions changed (README,
docs/METHODOLOGY.md,docs/DATA-CARD.md,docs/audits/, or an ADR as appropriate).
- Schema is versioned (
schema_versionbumped per semver). - CHANGELOG updated under the new schema version: what changed, why, and whether it breaks.
- A migration plus its test (runs the migration on a fixture and checks the result) is included.
- An ADR is added under
docs/adr/recording the decision.