Releasing and safe updates¶
How to change Operator ETL without breaking trust signals (CI, tests, share PDFs).
Every change (any size)¶
make e2e
This runs OKF validate, 41 pytest, and the FOIA demo on a fresh warehouse. Do not push if it fails.
For OKF-only doc changes:
python3 scripts/okf_validate.py okf --strict
Pull request workflow¶
- Branch from
master - Make changes
- Run
make e2elocally - Open PR — template checklist must be complete
- Wait for CI: e2e, docker, Secret scan
- Merge (prefer squash for clean history)
Solo maintainer: branch protection still helps — forces CI green before merge.
Dependency updates¶
Dependabot opens weekly PRs for pip and GitHub Actions.
Before merging a Dependabot PR:
- [ ] CI all green (including secret scan)
- [ ] Skim changelog for breaking changes
- [ ] If lockfile changes:
uv sync --frozen --extra dev && make e2elocally
Manual bump:
uv lock --upgrade-package <name>
uv sync --frozen --extra dev
make e2e
Commit uv.lock with the version bump.
Version bumps¶
- Update
versioninpyproject.toml - Add section to
CHANGELOG.mdandokf/log.md make e2e- Tag optional:
git tag v0.3.1 && git push origin v0.3.1
External share (PDFs)¶
Before LinkedIn, interviews, or proposals:
make share # runs e2e first, then rebuilds PDFs
Checklist: FINAL-REVIEW.md pre-scale · okf/playbooks/qa-before-share.md
While preparing external posts: link repo + optional PDFs from share/README.md.
When repo is public: link https://github.com/khaosans/operator-etl and invite make e2e.
Infrastructure changes¶
Terraform:
cd infra/terraform
terraform init # commit .terraform.lock.hcl when providers change
terraform plan
Never commit terraform.tfvars — use terraform.tfvars.example.
GCP deploy: follow okf/playbooks/deploy-gcp-staging.md. Do not wire Cloud Build deploy to production without review.
What never ships in git¶
See CONTRIBUTING.md:
.env, vault keys, warehouse DBs- Real FOIA / production PII
.cursor/mcp.json(local paths)- Dated share archives (
docs/share/releases/)
GitHub Pages wiki¶
Docs in docs/ publish via MkDocs (.github/workflows/pages.yml) to https://khaosans.github.io/operator-etl/
Local check:
pip install mkdocs-material
mkdocs build --strict
GitHub Settings → Pages → source GitHub Actions (one-time).
GitHub Wiki tab¶
Do not copy every article into the GitHub Wiki (it drifts). Paste once from the repo:
- Wiki Home ← contents of docs/wiki/Home.md
- Wiki _Sidebar ← contents of docs/wiki/_Sidebar.md
Update those files in git when nav changes; re-paste if the Wiki tab is in use.
Going public¶
Complete every blocker in PUBLIC-READINESS.md before changing visibility.