Release Policy¶
Version Lines¶
libterraform minor versions track Terraform minor versions:
| libterraform line | Terraform line | Branch |
|---|---|---|
0.13.x |
1.13.x |
release/0.13 |
0.12.x |
1.12.x |
release/0.12 |
0.11.x |
1.11.x |
release/0.11 |
The exact version mapping is stored in release-matrix.json. The matrix is the source of truth; README tables and release notes are summaries.
Branch Rules¶
maincarries the next Terraform minor adaptation.release/0.xcarries patch work for libterraform0.x.y.- A release branch must stay inside its Terraform minor line.
- Tags are created from the matching release branch and use
v0.x.y. - Keep all release branches, but actively maintain only the latest two lines by default.
Patch Rules¶
Patch releases may include:
- A Terraform patch update inside the same Terraform minor line, such as
1.9.8to1.9.9. - A libterraform bugfix for the same Terraform minor line.
- A compatibility fix for Python, build tooling, or CI that does not change Terraform minor line.
Patch releases must not include:
- A Terraform minor upgrade.
- A Python API compatibility break.
- A release matrix change that points the branch outside its line.
Backport Rules¶
Make shared fixes on main first. Cherry-pick them into active release branches after tests pass on main.
For a release-branch-only fix, commit directly on that release branch, then cherry-pick to main if it also applies to future lines.
Release Checklist¶
Before tagging a release:
- Update
release-matrix.json. - Update
src/libterraform/__init__.py. - Update
tests/consts.py. - Update README examples and version table.
- Ensure
upstream/terraform/points at the intended Terraform tag. - Ensure
upstream/go-plugin/points at the go-plugin version required byupstream/terraform/go.mod. - Run:
- Create the release branch if it does not exist.
- Tag from the release branch:
- Push the branch and tag. The tag triggers the release workflow.